Merge trunk version 209848 into gupc branch.
[official-gcc.git] / gcc / configure.ac
bloba3320ef1b8e461b1ef2122dfc0fc9116358d4db1
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
6 #This file is part of GCC.
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 3, or (at your option) any later
11 #version.
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 #for more details.
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3.  If not see
20 #<http://www.gnu.org/licenses/>.
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
26 AC_PREREQ(2.64)
27 AC_INIT
28 AC_CONFIG_SRCDIR(tree.c)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
31 gcc_version=`cat $srcdir/BASE-VER`
33 # Determine the host, build, and target systems
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
38 # Determine the noncanonical target name, for directory use.
39 ACX_NONCANONICAL_TARGET
41 # Determine the target- and build-specific subdirectories
42 GCC_TOPLEV_SUBDIRS
44 # Set program_transform_name
45 AC_ARG_PROGRAM
47 # Check for bogus environment variables.
48 # Test if LIBRARY_PATH contains the notation for the current directory
49 # since this would lead to problems installing/building glibc.
50 # LIBRARY_PATH contains the current directory if one of the following
51 # is true:
52 # - one of the terminals (":" and ";") is the first or last sign
53 # - two terminals occur directly after each other
54 # - the path contains an element with a dot in it
55 AC_MSG_CHECKING(LIBRARY_PATH variable)
56 changequote(,)dnl
57 case ${LIBRARY_PATH} in
58   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
59     library_path_setting="contains current directory"
60     ;;
61   *)
62     library_path_setting="ok"
63     ;;
64 esac
65 changequote([,])dnl
66 AC_MSG_RESULT($library_path_setting)
67 if test "$library_path_setting" != "ok"; then
68 AC_MSG_ERROR([
69 *** LIBRARY_PATH shouldn't contain the current directory when
70 *** building gcc. Please change the environment variable
71 *** and run configure again.])
74 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
75 # since this would lead to problems installing/building glibc.
76 # GCC_EXEC_PREFIX contains the current directory if one of the following
77 # is true:
78 # - one of the terminals (":" and ";") is the first or last sign
79 # - two terminals occur directly after each other
80 # - the path contains an element with a dot in it
81 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
82 changequote(,)dnl
83 case ${GCC_EXEC_PREFIX} in
84   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
85     gcc_exec_prefix_setting="contains current directory"
86     ;;
87   *)
88     gcc_exec_prefix_setting="ok"
89     ;;
90 esac
91 changequote([,])dnl
92 AC_MSG_RESULT($gcc_exec_prefix_setting)
93 if test "$gcc_exec_prefix_setting" != "ok"; then
94 AC_MSG_ERROR([
95 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
96 *** building gcc. Please change the environment variable
97 *** and run configure again.])
100 # -----------
101 # Directories
102 # -----------
104 # Specify the local prefix
105 local_prefix=
106 AC_ARG_WITH(local-prefix,
107 [AS_HELP_STRING([--with-local-prefix=DIR],
108                 [specifies directory to put local include])],
109 [case "${withval}" in
110 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
111 no)     ;;
112 *)      local_prefix=$with_local_prefix ;;
113 esac])
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117         local_prefix=/usr/local
120 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
121 # passed in by the toplevel make and thus we'd get different behavior
122 # depending on where we built the sources.
123 gcc_gxx_include_dir=
124 # Specify the g++ header file directory
125 AC_ARG_WITH(gxx-include-dir,
126 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
127                 [specifies directory to put g++ header files])],
128 [case "${withval}" in
129 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
130 no)     ;;
131 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
132 esac])
134 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
135 if test x${gcc_gxx_include_dir} = x; then
136   if test x${enable_version_specific_runtime_libs} = xyes; then
137     gcc_gxx_include_dir='${libsubdir}/include/c++'
138   else
139     libstdcxx_incdir='include/c++/$(version)'
140     if test x$host != x$target; then
141        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
142     fi
143     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
144   fi
147 gcc_gxx_include_dir_add_sysroot=0
148 if test "${with_sysroot+set}" = set; then
149   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
150   if test "${gcc_gxx_without_sysroot}"; then
151     gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
152     gcc_gxx_include_dir_add_sysroot=1
153   fi
156 AC_ARG_WITH(cpp_install_dir,
157 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
158                 [install the user visible C preprocessor in DIR
159                  (relative to PREFIX) as well as PREFIX/bin])],
160 [if test x$withval = xyes; then
161   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
162 elif test x$withval != xno; then
163   cpp_install_dir=$withval
164 fi])
166 # We would like to our source tree to be readonly.  However when releases or
167 # pre-releases are generated, the flex/bison generated files as well as the 
168 # various formats of manuals need to be included along with the rest of the
169 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
170 # just that.
172 AC_MSG_CHECKING([whether to place generated files in the source directory])
173   dnl generated-files-in-srcdir is disabled by default
174   AC_ARG_ENABLE(generated-files-in-srcdir, 
175     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
176                     [put copies of generated files in source dir
177                      intended for creating source tarballs for users
178                      without texinfo bison or flex])],
179       generated_files_in_srcdir=$enableval,
180       generated_files_in_srcdir=no)
182 AC_MSG_RESULT($generated_files_in_srcdir)
184 if test "$generated_files_in_srcdir" = "yes"; then
185   GENINSRC=''
186 else
187   GENINSRC='#'
189 AC_SUBST(GENINSRC)
191 # -------------------
192 # Find default linker
193 # -------------------
195 # With GNU ld
196 AC_ARG_WITH(gnu-ld,
197 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
198 gnu_ld_flag="$with_gnu_ld",
199 gnu_ld_flag=no)
201 # With pre-defined ld
202 AC_ARG_WITH(ld,
203 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
204 DEFAULT_LINKER="$with_ld")
205 if test x"${DEFAULT_LINKER+set}" = x"set"; then
206   if test ! -x "$DEFAULT_LINKER"; then
207     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
208   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
209     gnu_ld_flag=yes
210   fi
211   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
212         [Define to enable the use of a default linker.])
215 AC_MSG_CHECKING([whether a default linker was specified])
216 if test x"${DEFAULT_LINKER+set}" = x"set"; then
217   if test x"$gnu_ld_flag" = x"no"; then
218     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
219   else
220     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
221   fi
222 else
223   AC_MSG_RESULT(no)
226 # With demangler in GNU ld
227 AC_ARG_WITH(demangler-in-ld,
228 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
229 demangler_in_ld="$with_demangler_in_ld",
230 demangler_in_ld=yes)
232 # ----------------------
233 # Find default assembler
234 # ----------------------
236 # With GNU as
237 AC_ARG_WITH(gnu-as,
238 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
239 gas_flag="$with_gnu_as",
240 gas_flag=no)
242 AC_ARG_WITH(as,
243 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
244 DEFAULT_ASSEMBLER="$with_as")
245 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
246   if test ! -x "$DEFAULT_ASSEMBLER"; then
247     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
248   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
249     gas_flag=yes
250   fi
251   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
252         [Define to enable the use of a default assembler.])
255 AC_MSG_CHECKING([whether a default assembler was specified])
256 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
257   if test x"$gas_flag" = x"no"; then
258     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
259   else
260     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
261   fi
262 else
263   AC_MSG_RESULT(no)
266 # ---------------
267 # Find C compiler
268 # ---------------
270 # If a non-executable a.out is present (e.g. created by GNU as above even if
271 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
272 # file, even when creating an executable, so an execution test fails.
273 # Remove possible default executable files to avoid this.
275 # FIXME: This really belongs into AC_PROG_CC and can be removed once
276 # Autoconf includes it.
277 rm -f a.out a.exe b.out
279 # Find the native compiler
280 AC_PROG_CC
281 AC_PROG_CXX
282 ACX_PROG_GNAT([-I"$srcdir"/ada])
284 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
285 # optimizations to be activated explicitly by the toplevel.
286 case "$CC" in
287   */prev-gcc/xgcc*) ;;
288   *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[       ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" `
289      CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[   ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" ` ;;
290 esac
291 AC_SUBST(CFLAGS)
292 AC_SUBST(CXXFLAGS)
294 # Determine PICFLAG for target gnatlib.
295 GCC_PICFLAG_FOR_TARGET
296 AC_SUBST(PICFLAG_FOR_TARGET)
298 # -------------------------
299 # Check C compiler features
300 # -------------------------
302 AC_USE_SYSTEM_EXTENSIONS
303 AC_PROG_CPP
304 AC_C_INLINE
306 AC_SYS_LARGEFILE
308 # sizeof(char) is 1 by definition.
309 AC_CHECK_SIZEOF(void *)
310 AC_CHECK_SIZEOF(short)
311 AC_CHECK_SIZEOF(int)
312 AC_CHECK_SIZEOF(long)
313 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
314 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
315 GCC_STDINT_TYPES
317 # ---------------------
318 # Warnings and checking
319 # ---------------------
321 # Check $CC warning features (if it's GCC).
322 # We want to use -pedantic, but we don't want warnings about
323 # * 'long long'
324 # * variadic macros
325 # * overlong strings
326 # * C++11 narrowing conversions in { }
327 # So, we only use -pedantic if we can disable those warnings.
329 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
330 AC_ARG_ENABLE(build-format-warnings,
331   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
332   [],[enable_build_format_warnings=yes])
333 AS_IF([test $enable_build_format_warnings = no],
334       [wf_opt=-Wno-format],[wf_opt=])
335 ACX_PROG_CC_WARNING_OPTS(
336         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual $wf_opt])), [loose_warn])
337 ACX_PROG_CC_WARNING_OPTS(
338         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
339         [c_loose_warn])
340 ACX_PROG_CC_WARNING_OPTS(
341         m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
342 ACX_PROG_CC_WARNING_OPTS(
343         m4_quote(m4_do([-Woverloaded-virtual])), [strict_warn])
344 ACX_PROG_CC_WARNING_OPTS(
345         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
346 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
347         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
348                        [-Wno-overlength-strings])), [strict_warn])
349 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
351 # The above macros do nothing if the compiler is not GCC.  However, the
352 # Makefile has more goo to add other flags, so these variables are used
353 # to enable warnings only for GCC.
354 warn_cflags=
355 warn_cxxflags=
356 if test "x$GCC" = "xyes"; then
357   warn_cflags='$(GCC_WARN_CFLAGS)'
358   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
360 AC_SUBST(warn_cflags)
361 AC_SUBST(warn_cxxflags)
363 # Disable exceptions and RTTI if building with g++
364 ACX_PROG_CC_WARNING_OPTS(
365         m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
366                        [noexception_flags])
367         
368 # Enable expensive internal checks
369 is_release=
370 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
371   is_release=yes
374 AC_ARG_ENABLE(checking,
375 [AS_HELP_STRING([[--enable-checking[=LIST]]],
376                 [enable expensive run-time checks.  With LIST,
377                  enable only specific categories of checks.
378                  Categories are: yes,no,all,none,release.
379                  Flags are: assert,df,fold,gc,gcac,gimple,misc,
380                  rtlflag,rtl,runtime,tree,valgrind,types])],
381 [ac_checking_flags="${enableval}"],[
382 # Determine the default checks.
383 if test x$is_release = x ; then
384   ac_checking_flags=yes
385 else
386   ac_checking_flags=release
387 fi])
388 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
389 for check in release $ac_checking_flags
391         case $check in
392         # these set all the flags to specific states
393         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
394                         ac_fold_checking= ; ac_gc_checking=1 ;
395                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
396                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
397                         ac_tree_checking=1 ; ac_valgrind_checking= ;
398                         ac_types_checking=1 ;;
399         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
400                         ac_fold_checking= ; ac_gc_checking= ;
401                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
402                         ac_rtlflag_checking= ; ac_runtime_checking= ;
403                         ac_tree_checking= ; ac_valgrind_checking= ;
404                         ac_types_checking= ;;
405         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
406                         ac_fold_checking=1 ; ac_gc_checking=1 ;
407                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
408                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
409                         ac_tree_checking=1 ; ac_valgrind_checking= ;
410                         ac_types_checking=1 ;;
411         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
412                         ac_fold_checking= ; ac_gc_checking= ;
413                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
414                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
415                         ac_tree_checking= ; ac_valgrind_checking= ;
416                         ac_types_checking= ;;
417         # these enable particular checks
418         assert)         ac_assert_checking=1 ;;
419         df)             ac_df_checking=1 ;;
420         fold)           ac_fold_checking=1 ;;
421         gc)             ac_gc_checking=1 ;;
422         gcac)           ac_gc_always_collect=1 ;;
423         gimple)         ac_gimple_checking=1 ;;
424         misc)           ac_checking=1 ;;
425         rtl)            ac_rtl_checking=1 ;;
426         rtlflag)        ac_rtlflag_checking=1 ;;
427         runtime)        ac_runtime_checking=1 ;;
428         tree)           ac_tree_checking=1 ;;
429         types)          ac_types_checking=1 ;;
430         valgrind)       ac_valgrind_checking=1 ;;
431         *)      AC_MSG_ERROR(unknown check category $check) ;;
432         esac
433 done
434 IFS="$ac_save_IFS"
436 nocommon_flag=""
437 if test x$ac_checking != x ; then
438   AC_DEFINE(ENABLE_CHECKING, 1,
439 [Define if you want more run-time sanity checks.  This one gets a grab
440    bag of miscellaneous but relatively cheap checks.])
441   nocommon_flag=-fno-common
443 AC_SUBST(nocommon_flag)
444 if test x$ac_df_checking != x ; then
445   AC_DEFINE(ENABLE_DF_CHECKING, 1,
446 [Define if you want more run-time sanity checks for dataflow.])
448 if test x$ac_assert_checking != x ; then
449   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
450 [Define if you want assertions enabled.  This is a cheap check.])
452 if test x$ac_gimple_checking != x ; then
453   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
454 [Define if you want operations on GIMPLE (the basic data structure of
455 the high-level optimizers) to be checked for dynamic type safety at
456 runtime.  This is moderately expensive.])
458 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
459 if test x$ac_runtime_checking != x ; then
460   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
461 [Define if you want runtime assertions enabled.  This is a cheap check.])
463 if test x$ac_tree_checking != x ; then
464   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
465 [Define if you want all operations on trees (the basic data
466    structure of the front ends) to be checked for dynamic type safety
467    at runtime.  This is moderately expensive.  The tree browser debugging
468    routines will also be enabled by this option.
469    ])
470   TREEBROWSER=tree-browser.o
471   TREECHECKING=yes
473 if test x$ac_types_checking != x ; then
474   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
475 [Define if you want all gimple types to be verified after gimplifiation.
476    This is cheap.
477    ])
479 AC_SUBST(TREEBROWSER)
480 AC_SUBST(TREECHECKING)
481 if test x$ac_rtl_checking != x ; then
482   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
483 [Define if you want all operations on RTL (the basic data structure
484    of the optimizer and back end) to be checked for dynamic type safety
485    at runtime.  This is quite expensive.])
487 if test x$ac_rtlflag_checking != x ; then
488   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
489 [Define if you want RTL flag accesses to be checked against the RTL
490    codes that are supported for each access macro.  This is relatively
491    cheap.])
493 if test x$ac_gc_checking != x ; then
494   AC_DEFINE(ENABLE_GC_CHECKING, 1,
495 [Define if you want the garbage collector to do object poisoning and
496    other memory allocation checks.  This is quite expensive.])
498 if test x$ac_gc_always_collect != x ; then
499   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
500 [Define if you want the garbage collector to operate in maximally
501    paranoid mode, validating the entire heap and collecting garbage at
502    every opportunity.  This is extremely expensive.])
504 if test x$ac_fold_checking != x ; then
505   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
506 [Define if you want fold checked that it never destructs its argument.
507    This is quite expensive.])
509 valgrind_path_defines=
510 valgrind_command=
512 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
513 dnl # an if statement.  This was the source of very frustrating bugs
514 dnl # in converting to autoconf 2.5x!
515 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
517 if test x$ac_valgrind_checking != x ; then
518   # It is certainly possible that there's valgrind but no valgrind.h.
519   # GCC relies on making annotations so we must have both.
520   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
521   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
522     [[#include <valgrind/memcheck.h>
523 #ifndef VALGRIND_DISCARD
524 #error VALGRIND_DISCARD not defined
525 #endif]])],
526   [gcc_cv_header_valgrind_memcheck_h=yes],
527   [gcc_cv_header_valgrind_memcheck_h=no])
528   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
529   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
530   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
531     [[#include <memcheck.h>
532 #ifndef VALGRIND_DISCARD
533 #error VALGRIND_DISCARD not defined
534 #endif]])],
535   [gcc_cv_header_memcheck_h=yes],
536   [gcc_cv_header_memcheck_h=no])
537   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
538   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
539         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
540   if test "x$valgrind_path" = "x" \
541     || (test $have_valgrind_h = no \
542         && test $gcc_cv_header_memcheck_h = no \
543         && test $gcc_cv_header_valgrind_memcheck_h = no); then
544         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
545   fi
546   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
547   valgrind_command="$valgrind_path -q"
548   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
549 [Define if you want to run subprograms and generated programs
550    through valgrind (a memory checker).  This is extremely expensive.])
551   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
552     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
553         [Define if valgrind's valgrind/memcheck.h header is installed.])
554   fi
555   if test $gcc_cv_header_memcheck_h = yes; then
556     AC_DEFINE(HAVE_MEMCHECK_H, 1,
557         [Define if valgrind's memcheck.h header is installed.])
558   fi
560 AC_SUBST(valgrind_path_defines)
561 AC_SUBST(valgrind_command)
563 # Enable code coverage collection
564 AC_ARG_ENABLE(coverage,
565 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
566                 [enable compiler's code coverage collection.
567                  Use to measure compiler performance and locate
568                  unused parts of the compiler. With LEVEL, specify
569                  optimization. Values are opt, noopt,
570                  default is noopt])],
571 [case "${enableval}" in
572   yes|noopt)
573     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
574     ;;
575   opt)
576     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
577     ;;
578   no)
579     # a.k.a. --disable-coverage
580     coverage_flags=""
581     ;;
582   *)
583     AC_MSG_ERROR(unknown coverage setting $enableval)
584     ;;
585 esac],
586 [coverage_flags=""])
587 AC_SUBST(coverage_flags)
589 AC_ARG_ENABLE(gather-detailed-mem-stats, 
590 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
591                 [enable detailed memory allocation stats gathering])], [],
592 [enable_gather_detailed_mem_stats=no])
593 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
594 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
595 [Define to enable detailed memory allocation stats gathering.])
597 # -------------------------------
598 # Miscenalleous configure options
599 # -------------------------------
601 # With stabs
602 AC_ARG_WITH(stabs,
603 [AS_HELP_STRING([--with-stabs],
604                 [arrange to use stabs instead of host debug format])],
605 stabs="$with_stabs",
606 stabs=no)
608 # Determine whether or not multilibs are enabled.
609 AC_ARG_ENABLE(multilib,
610 [AS_HELP_STRING([--enable-multilib],
611                 [enable library support for multiple ABIs])],
612 [], [enable_multilib=yes])
613 AC_SUBST(enable_multilib)
615 # Determine whether or not multiarch is enabled.
616 AC_ARG_ENABLE(multiarch,
617 [AS_HELP_STRING([--enable-multiarch],
618                 [enable support for multiarch paths])],
619 [case "${enableval}" in
620 yes|no|auto) enable_multiarch=$enableval;;
621 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
622 esac], [enable_multiarch=auto])
623 if test x${enable_multiarch} = xauto; then
624   if test x${with_native_system_header_dir} != x; then
625     ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
626     enable_multiarch=no
627   fi
628   if test x$host != x$target && test "x$with_sysroot" = x; then
629     ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
630     enable_multiarch=no
631   fi
633 AC_MSG_CHECKING(for multiarch configuration)
634 AC_SUBST(enable_multiarch)
635 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
637 # needed for setting the multiarch name for soft-float/hard-float ABIs
638 AC_SUBST(with_cpu)
639 AC_SUBST(with_float)
641 # Enable __cxa_atexit for C++.
642 AC_ARG_ENABLE(__cxa_atexit,
643 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
644 [], [])
646 # Enable C extension for decimal float if target supports it.
647 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
649 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
650 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
651 [Define to 1 to enable decimal float extension to C.])
653 # Use default_decimal_float for dependency.
654 enable_decimal_float=$default_decimal_float
656 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
657 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
658 [Define to 1 to specify that we are using the BID decimal floating
659 point format instead of DPD])
661 # Enable C extension for fixed-point arithmetic.
662 AC_ARG_ENABLE(fixed-point,
663 [AS_HELP_STRING([--enable-fixed-point],
664                 [enable fixed-point arithmetic extension to C])],
667   case $target in
668     arm*)
669       enable_fixed_point=yes
670       ;;
672     mips*-*-*)
673       enable_fixed_point=yes
674       ;;
675     *)
676       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
677       enable_fixed_point=no
678       ;;
679   esac
681 AC_SUBST(enable_fixed_point)
683 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
684 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
685 [Define to 1 to enable fixed-point arithmetic extension to C.])
687 # Enable threads
688 # Pass with no value to take the default
689 # Pass with a value to specify a thread package
690 AC_ARG_ENABLE(threads,
691 [AS_HELP_STRING([[--enable-threads[=LIB]]],
692                 [enable thread usage for target GCC,
693                  using LIB thread package])],,
694 [enable_threads=''])
696 AC_ARG_ENABLE(tls,
697 [AS_HELP_STRING([--enable-tls],
698                 [enable or disable generation of tls code
699                  overriding the assembler check for tls support])],
701   case $enable_tls in
702     yes | no) ;;
703     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
704 Valid choices are 'yes' and 'no'.]) ;;
705   esac
706 ], [enable_tls=''])
708 AC_ARG_ENABLE(objc-gc,
709 [AS_HELP_STRING([--enable-objc-gc],
710                 [enable the use of Boehm's garbage collector with
711                  the GNU Objective-C runtime])],
712 if test x$enable_objc_gc = xno; then
713         objc_boehm_gc=''
714 else
715         objc_boehm_gc=1
717 objc_boehm_gc='')
719 AC_ARG_WITH([upc-pts],
720 AS_HELP_STRING(
721   [--with-upc-pts={struct,packed}],
722   [choose the representation of a UPC pointer-to-shared]),
724   case "$withval" in
725     packed|struct) upc_pts_rep="$withval" ;;
726     *) AC_MSG_ERROR([$withval is an invalid option to --with-upc-pts])
727       ;;
728   esac
730 [upc_pts_rep="packed"])
733 # Perl is required for checking pts representation
734 AC_CHECK_PROG(PERL, perl, perl)
736 AC_ARG_WITH([upc-pts-vaddr-order],
737 AS_HELP_STRING(
738 [--with-upc-pts-vaddr-order={last,first}],
739 [choose position of the address field in UPC pointer-to-shared representation]),
741   upc_vaddr_order="$withval"
742   case "$upc_vaddr_order" in
743     first|last) ;;
744     *) AC_MSG_ERROR(
745          [$withval is an invalid option to --with-upc-pts-vaddr-order]) ;;
746   esac
748 [upc_vaddr_order="first"])
750 AC_ARG_WITH([upc-pts-packed-bits],
751 AS_HELP_STRING(
752 [--with-upc-pts-packed-bits=phase,thread,vaddr],
753 [choose bit distribution in packed UPC pointer-to-shared representation]),
755   if test x"$upc_pts_rep" = x"packed"; then
756     UPC_PTS_PHASE_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
757                                                   print $1 if ($1+$2+$3 == 64) && $1>=1;'`
758     UPC_PTS_THREAD_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
759                                                   print $2 if ($1+$2+$3 == 64) && $2>=1;'`
760     UPC_PTS_VADDR_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
761                                                   print $3 if ($1+$2+$3 == 64) && $3>=20;'`
762     if test -z "$UPC_PTS_PHASE_SIZE" \
763        || test -z "$UPC_PTS_THREAD_SIZE" \
764        || test -z "$UPC_PTS_VADDR_SIZE" ; then
765       AC_MSG_ERROR([--with-upc-pts-packed-bits=phase,thread,vaddr requires
766   phase+thread+vaddr=64 and phase >= 1 and thread >= 1 and vaddr >= 20])
767     fi
768   else
769     AC_MSG_ERROR([--with-upc-pts-packed-bits is only supported for
770 the packed UPC pointer-to-shared representation])
771   fi
774   # GNU UPC packed pointer representation defaults.
775   case "$target" in
776     i[356]86* )
777       UPC_PTS_PHASE_SIZE=20
778       UPC_PTS_THREAD_SIZE=12
779       UPC_PTS_VADDR_SIZE=32
780       ;;
781     * )
782       UPC_PTS_PHASE_SIZE=20
783       UPC_PTS_THREAD_SIZE=10
784       UPC_PTS_VADDR_SIZE=34
785   esac
788 AC_ARG_ENABLE(upc-link-script,
789 AS_HELP_STRING(
790   [--enable-upc-link-script],
791   [enable UPC's use of a custom linker script;
792   this will define the UPC shared section as a no load section on
793   targets where this feature is supported (requires GNU LD)]),
795   case $enableval in
796   yes | no) ;;
797   *)
798     AC_MSG_ERROR([--enable-upc-link-script accepts only yes or no.])
799   esac
801 [enable_upc_link_script=no])
804 # Process UPC-specific configuration options.
806 AC_MSG_CHECKING([for UPC pointer-to-shared representation])
807 AC_MSG_RESULT([$upc_pts_rep])
808 case "$upc_pts_rep" in
809   packed)
810     AC_DEFINE(HAVE_UPC_PTS_PACKED_REP,[1],
811       [Define to 1 if UPC pointer-to-shared representation
812        is a packed 64 bit word.])
813     ;;
814   struct)
815     AC_DEFINE(HAVE_UPC_PTS_STRUCT_REP,[1],
816       [Define to 1 if UPC pointer-to-shared representation
817        is a structure.])
818     ;;
819 esac
820 AC_MSG_CHECKING([for UPC pointer-to-shared address field position])
821 AC_MSG_RESULT([$upc_vaddr_order])
822 if test x"$upc_vaddr_order" = x"first"; then
823   AC_DEFINE(HAVE_UPC_PTS_VADDR_FIRST,[1],
824     [Define to 1 if the 'vaddr' field is the first field
825 in the UPC pointer-to-shared representation.])
827 if test x"$upc_pts_rep" = x"packed"; then
828   AC_DEFINE_UNQUOTED(UPC_PTS_PHASE_SIZE,$UPC_PTS_PHASE_SIZE,
829     [For packed UPC pointers-to-shared,
830      the size of the phase field (in bits).])
831   AC_DEFINE_UNQUOTED(UPC_PTS_THREAD_SIZE,$UPC_PTS_THREAD_SIZE,
832     [For packed UPC pointers-to-shared,
833      the size of the thread field (in bits).])
834   AC_DEFINE_UNQUOTED(UPC_PTS_VADDR_SIZE,$UPC_PTS_VADDR_SIZE,
835     [For packed UPC pointers-to-shared,
836      the size of the address field (in bits).])
837   AC_MSG_CHECKING([for packed UPC pointer-to-shared layout])
838   AC_MSG_RESULT(
839     ["phase=${UPC_PTS_PHASE_SIZE},thread=${UPC_PTS_THREAD_SIZE},
840 vaddr=${UPC_PTS_VADDR_SIZE}"])
842 AC_MSG_CHECKING([for UPC link script support])
843 AC_MSG_RESULT($enable_upc_link_script)
844 if test "$enable_upc_link_script" = yes; then
845   AC_DEFINE(HAVE_UPC_LINK_SCRIPT, 1, [Define to 1 if UPC link script is supported.])
848 AC_ARG_WITH(dwarf2,
849 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
850 dwarf2="$with_dwarf2",
851 dwarf2=no)
853 AC_ARG_ENABLE(shared,
854 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
856   case $enable_shared in
857   yes | no) ;;
858   *)
859     enable_shared=no
860     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
861     for pkg in $enableval; do
862       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
863         enable_shared=yes
864       fi
865     done
866     IFS="$ac_save_ifs"
867     ;;
868   esac
869 ], [enable_shared=yes])
870 AC_SUBST(enable_shared)
872 AC_ARG_WITH([native-system-header-dir],
873   [  --with-native-system-header-dir=dir
874                           use dir as the directory to look for standard
875                           system header files in.  Defaults to /usr/include.],
877  case ${with_native_system_header_dir} in
878  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
879  /* | [[A-Za-z]]:[[\\/]]*) ;;
880  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
881  esac
882  configured_native_system_header_dir="${withval}"
883 ], [configured_native_system_header_dir=])
885 AC_ARG_WITH(build-sysroot, 
886   [AS_HELP_STRING([--with-build-sysroot=sysroot],
887                   [use sysroot as the system root during the build])],
888   [if test x"$withval" != x ; then
889      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
890    fi],
891   [SYSROOT_CFLAGS_FOR_TARGET=])
892 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
894 if test "x$prefix" = xNONE; then
895  test_prefix=/usr/local
896 else
897  test_prefix=$prefix
899 if test "x$exec_prefix" = xNONE; then
900  test_exec_prefix=$test_prefix
901 else
902  test_exec_prefix=$exec_prefix
905 AC_ARG_WITH(sysroot,
906 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
907                 [search for usr/lib, usr/include, et al, within DIR])],
909  case ${with_sysroot} in
910  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
911  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
912  esac
913    
914  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
915  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
916         
917  case ${TARGET_SYSTEM_ROOT} in
918  "${test_prefix}"|"${test_prefix}/"*|\
919  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
920  '${prefix}'|'${prefix}/'*|\
921  '${exec_prefix}'|'${exec_prefix}/'*)
922    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
923    TARGET_SYSTEM_ROOT_DEFINE="$t"
924    ;;
925  esac
926 ], [
927  TARGET_SYSTEM_ROOT=
928  TARGET_SYSTEM_ROOT_DEFINE=
929  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
931 AC_SUBST(TARGET_SYSTEM_ROOT)
932 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
933 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
935 AC_ARG_WITH(specs,
936   [AS_HELP_STRING([--with-specs=SPECS],
937                   [add SPECS to driver command-line processing])],
938   [CONFIGURE_SPECS=$withval],
939   [CONFIGURE_SPECS=]
941 AC_SUBST(CONFIGURE_SPECS)
943 ACX_PKGVERSION([GCC])
944 ACX_BUGURL([http://gccupc.org/bugs])
946 # Sanity check enable_languages in case someone does not run the toplevel
947 # configure # script.
948 AC_ARG_ENABLE(languages,
949 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
950 [case ,${enable_languages}, in
951        ,,|,yes,)
952                 # go safe -- we cannot be much sure without the toplevel
953                 # configure's
954                 # analysis of which target libs are present and usable
955                 enable_languages=c
956                 ;;
957          *,all,*)
958                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
959                 ;;
960         *,c,*)
961                 ;;
962         *)
963                 enable_languages=c,${enable_languages}
964                 ;;
965 esac],
966 [enable_languages=c])
968 AC_ARG_WITH(multilib-list,
969 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
971 with_multilib_list=default)
973 # -------------------------
974 # Checks for other programs
975 # -------------------------
977 AC_PROG_MAKE_SET
979 # Find some useful tools
980 AC_PROG_AWK
981 # We need awk to create options.c and options.h.
982 # Bail out if it's missing.
983 case ${AWK} in
984   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
985 esac
987 gcc_AC_PROG_LN_S
988 ACX_PROG_LN($LN_S)
989 AC_PROG_RANLIB
990 ranlib_flags=""
991 AC_SUBST(ranlib_flags)
992      
993 gcc_AC_PROG_INSTALL
995 # See if cmp has --ignore-initial.
996 gcc_AC_PROG_CMP_IGNORE_INITIAL
998 # See if we have the mktemp command.
999 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1001 # See if makeinfo has been installed and is modern enough
1002 # that we can use it.
1003 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1004   [GNU texinfo.* \([0-9][0-9.]*\)],
1005   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1006 if test $gcc_cv_prog_makeinfo_modern = no; then
1007   AC_MSG_WARN([
1008 *** Makeinfo is missing or too old.
1009 *** Info documentation will not be built.])
1010   BUILD_INFO=
1011 else
1012   BUILD_INFO=info
1014 AC_SUBST(BUILD_INFO)
1016 # Is pod2man recent enough to regenerate manpages?
1017 AC_MSG_CHECKING([for recent Pod::Man])
1018 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1019   AC_MSG_RESULT(yes)
1020   GENERATED_MANPAGES=generated-manpages
1021 else
1022   AC_MSG_RESULT(no)
1023   GENERATED_MANPAGES=
1025 AC_SUBST(GENERATED_MANPAGES)
1027 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1029 # How about lex?
1030 dnl Don't use AC_PROG_LEX; we insist on flex.
1031 dnl LEXLIB is not useful in gcc.
1032 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1034 # Bison?
1035 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1037 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1038 # check for build == host before using them.
1040 # NM
1041 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1042   && test -d ../binutils ; then
1043   NM='${objdir}/../binutils/nm-new'
1044 else
1045   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1048 # AR
1049 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1050   && test -d ../binutils ; then
1051   AR='${objdir}/../binutils/ar'
1052 else
1053   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1057 # --------------------
1058 # Checks for C headers
1059 # --------------------
1061 # Need to reject headers which give warnings, so that the -Werror bootstrap
1062 # works later. *sigh*  This needs to come before all header checks.
1063 AC_PROG_CPP_WERROR
1065 AC_HEADER_STDC
1066 AC_HEADER_TIME
1067 ACX_HEADER_STRING
1068 AC_HEADER_SYS_WAIT
1069 AC_HEADER_TIOCGWINSZ
1070 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1071                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
1072                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1073                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1075 # Check for thread headers.
1076 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1077 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1079 # These tests can't be done till we know if we have limits.h.
1080 gcc_AC_C_CHAR_BIT
1081 AC_C_BIGENDIAN
1083 # ----------------------
1084 # Checks for C++ headers
1085 # ----------------------
1087 dnl Autoconf will give an error in the configure script if there is no
1088 dnl C++ preprocessor.  Hack to prevent that.
1089 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1090 AC_PROG_CXXCPP
1091 m4_popdef([AC_MSG_ERROR])[]dnl
1093 AC_LANG_PUSH(C++)
1095 AC_CHECK_HEADERS(unordered_map)
1096 AC_CHECK_HEADERS(tr1/unordered_map)
1097 AC_CHECK_HEADERS(ext/hash_map)
1099 AC_LANG_POP(C++)
1101 # --------
1102 # Dependency checking.
1103 # --------
1105 AC_LANG_PUSH(C++)
1106 ZW_CREATE_DEPDIR
1107 AC_CONFIG_COMMANDS([gccdepdir],[
1108   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1109   for lang in $subdirs c-family common
1110   do
1111       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1112   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1114 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1115 AC_LANG_POP(C++)
1117 # --------
1118 # UNSORTED
1119 # --------
1122 # These libraries may be used by collect2.
1123 # We may need a special search path to get them linked.
1124 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1125 [save_LIBS="$LIBS"
1126 for libs in '' -lld -lmld \
1127                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1128                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1130         LIBS="$libs"
1131         AC_TRY_LINK_FUNC(ldopen,
1132                 [gcc_cv_collect2_libs="$libs"; break])
1133 done
1134 LIBS="$save_LIBS"
1135 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1136 case $gcc_cv_collect2_libs in
1137         "none required")        ;;
1138         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1139 esac
1140 AC_SUBST(COLLECT2_LIBS)
1142 # When building Ada code on Alpha, we need exc_resume which is usually in
1143 # -lexc.  So test for it.
1144 save_LIBS="$LIBS"
1145 LIBS=
1146 AC_SEARCH_LIBS(exc_resume, exc)
1147 GNAT_LIBEXC="$LIBS"
1148 LIBS="$save_LIBS"
1149 AC_SUBST(GNAT_LIBEXC)
1151 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1152 save_LIBS="$LIBS"
1153 LIBS=
1154 AC_SEARCH_LIBS(kstat_open, kstat)
1155 EXTRA_GCC_LIBS="$LIBS"
1156 LIBS="$save_LIBS"
1157 AC_SUBST(EXTRA_GCC_LIBS)
1159 # Some systems put ldexp and frexp in libm instead of libc; assume
1160 # they're both in the same place.  jcf-dump needs them.
1161 save_LIBS="$LIBS"
1162 LIBS=
1163 AC_SEARCH_LIBS(ldexp, m)
1164 LDEXP_LIB="$LIBS"
1165 LIBS="$save_LIBS"
1166 AC_SUBST(LDEXP_LIB)
1168 # Use <inttypes.h> only if it exists,
1169 # doesn't clash with <sys/types.h>, and declares intmax_t.
1170 AC_MSG_CHECKING(for inttypes.h)
1171 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1172 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1173 [[#include <sys/types.h>
1174 #include <inttypes.h>]],
1175   [[intmax_t i = -1;]])],
1176   [gcc_cv_header_inttypes_h=yes],
1177   [gcc_cv_header_inttypes_h=no])])
1178 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1179 if test $gcc_cv_header_inttypes_h = yes; then
1180   AC_DEFINE(HAVE_INTTYPES_H, 1,
1181         [Define if you have a working <inttypes.h> header file.])
1184 dnl Disabled until we have a complete test for buggy enum bitfields.
1185 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1187 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1188   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1189   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1190   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1191   putchar_unlocked putc_unlocked)
1192 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1193         sysconf strsignal getrusage nl_langinfo \
1194         gettimeofday mbstowcs wcswidth mmap setlocale \
1195         gcc_UNLOCKED_FUNCS madvise)
1197 if test x$ac_cv_func_mbstowcs = xyes; then
1198   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1199 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1200 int main()
1202   mbstowcs(0, "", 0);
1203   return 0;
1204 }]])],
1205     [gcc_cv_func_mbstowcs_works=yes],
1206     [gcc_cv_func_mbstowcs_works=no],
1207     [gcc_cv_func_mbstowcs_works=yes])])
1208   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1209     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1210   [Define this macro if mbstowcs does not crash when its
1211    first argument is NULL.])
1212   fi
1215 AC_CHECK_TYPE(ssize_t, int)
1216 AC_CHECK_TYPE(caddr_t, char *)
1218 GCC_AC_FUNC_MMAP_BLACKLIST
1220 case "${host}" in
1221 *-*-*vms*)
1222   # Under VMS, vfork works very differently than on Unix. The standard test 
1223   # won't work, and it isn't easily adaptable. It makes more sense to
1224   # just force it.
1225   ac_cv_func_vfork_works=yes
1226   ;;
1227 esac
1228 AC_FUNC_FORK
1230 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1231 # iconv() prototype.
1232 AC_LANG_PUSH([C++])
1233 AM_ICONV
1234 AC_LANG_POP([C++])
1236 # Until we have in-tree GNU iconv:
1237 LIBICONV_DEP=
1238 AC_SUBST(LIBICONV_DEP)
1240 AM_LC_MESSAGES
1242 AM_LANGINFO_CODESET
1244 # We will need to find libiberty.h and ansidecl.h
1245 saved_CFLAGS="$CFLAGS"
1246 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1247 saved_CXXFLAGS="$CXXFLAGS"
1248 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1249 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1250         strsignal strstr stpcpy strverscmp \
1251         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1252         free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1253 #include "ansidecl.h"
1254 #include "system.h"])
1256 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1257 #include "ansidecl.h"
1258 #include "system.h"
1259 #ifdef HAVE_SYS_RESOURCE_H
1260 #include <sys/resource.h>
1261 #endif
1264 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1265 #include "ansidecl.h"
1266 #include "system.h"
1267 #ifdef HAVE_SYS_RESOURCE_H
1268 #include <sys/resource.h>
1269 #endif
1270 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1271 [Define to `long' if <sys/resource.h> doesn't define.])])
1273 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1274 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1275 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1276 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1277 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1278 #include "ansidecl.h"
1279 #include "system.h"
1280 #ifdef HAVE_LDFCN_H
1281 #undef FREAD
1282 #undef FWRITE
1283 #include <ldfcn.h>
1284 #endif
1287 gcc_AC_CHECK_DECLS(times, , ,[
1288 #include "ansidecl.h"
1289 #include "system.h"
1290 #ifdef HAVE_SYS_TIMES_H
1291 #include <sys/times.h>
1292 #endif
1295 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1296 #include "ansidecl.h"
1297 #include "system.h"
1298 #include <signal.h>
1301 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1302 # prototype.
1303 AC_LANG_PUSH([C++])
1304 gcc_AC_CHECK_DECLS(madvise, , ,[
1305   #include "ansidecl.h"
1306   #include "system.h"
1308 AC_LANG_POP([C++])
1310 # More time-related stuff.
1311 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1312 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1313 #include "ansidecl.h"
1314 #include "system.h"
1315 #ifdef HAVE_SYS_TIMES_H
1316 #include <sys/times.h>
1317 #endif
1318 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1319 if test $ac_cv_struct_tms = yes; then
1320   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1321   [Define if <sys/times.h> defines struct tms.])
1324 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1325 # revisit after autoconf 2.50.
1326 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1327 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1328 #include "ansidecl.h"
1329 #include "system.h"
1330 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1331 if test $gcc_cv_type_clock_t = yes; then
1332   AC_DEFINE(HAVE_CLOCK_T, 1,
1333   [Define if <time.h> defines clock_t.])
1336 # Check if F_SETLKW is supported by fcntl.
1337 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1338 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1339 #include <fcntl.h>]], [[
1340 struct flock fl;
1341 fl.l_whence = 0;
1342 fl.l_start = 0;
1343 fl.l_len = 0;
1344 fl.l_pid = 0;
1345 return fcntl (1, F_SETLKW, &fl);]])],
1346 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1347 if test $ac_cv_f_setlkw = yes; then
1348   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1349   [Define if F_SETLKW supported by fcntl.])
1352 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1353 CFLAGS="$saved_CFLAGS"
1354 CXXFLAGS="$saved_CXXFLAGS"
1356 # mkdir takes a single argument on some systems. 
1357 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1359 # File extensions
1360 manext='.1'
1361 objext='.o'
1362 AC_SUBST(manext)
1363 AC_SUBST(objext)
1365 # With Setjmp/Longjmp based exception handling.
1366 AC_ARG_ENABLE(sjlj-exceptions,
1367 [AS_HELP_STRING([--enable-sjlj-exceptions],
1368                 [arrange to use setjmp/longjmp exception handling])],
1369 [case $target in
1370   *-*-hpux10*)
1371     if test $enableval != yes; then
1372       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1373       enableval=yes
1374     fi
1375     ;;
1376 esac
1377 force_sjlj_exceptions=yes],
1378 [case $target in
1379   *-*-hpux10*)
1380     force_sjlj_exceptions=yes
1381     enableval=yes
1382     ;;
1383   lm32*-*-*)
1384      force_sjlj_exceptions=yes
1385      enableval=yes
1386      ;;
1387   *)
1388     force_sjlj_exceptions=no
1389     ;;
1390 esac])
1391 if test $force_sjlj_exceptions = yes; then
1392   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1393   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1394     [Define 0/1 to force the choice for exception handling model.])
1397 # --------------------------------------------------------
1398 # Build, host, and target specific configuration fragments
1399 # --------------------------------------------------------
1401 # Collect build-machine-specific information.
1402 . ${srcdir}/config.build
1404 # Collect host-machine-specific information.
1405 . ${srcdir}/config.host
1407 target_gtfiles=
1409 # Collect target-machine-specific information.
1410 . ${srcdir}/config.gcc
1412 extra_objs="${host_extra_objs} ${extra_objs}"
1413 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1415 # Default the target-machine variables that were not explicitly set.
1416 if test x"$tm_file" = x
1417 then tm_file=$cpu_type/$cpu_type.h; fi
1419 if test x"$extra_headers" = x
1420 then extra_headers=; fi
1422 if test x$md_file = x
1423 then md_file=$cpu_type/$cpu_type.md; fi
1425 if test x$out_file = x
1426 then out_file=$cpu_type/$cpu_type.c; fi
1428 if test x"$tmake_file" = x
1429 then tmake_file=$cpu_type/t-$cpu_type
1432 # Support --enable-initfini-array.
1433 if test x$enable_initfini_array != xno; then
1434   tm_file="${tm_file} initfini-array.h"
1437 if test x"$dwarf2" = xyes
1438 then tm_file="$tm_file tm-dwarf2.h"
1441 # Say what files are being used for the output code and MD file.
1442 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1443 echo "Using \`$srcdir/config/$md_file' as machine description file."
1445 # If any of the xm_file variables contain nonexistent files, warn
1446 # about them and drop them.
1449 for x in $build_xm_file; do
1450   if    test -f $srcdir/config/$x
1451   then      bx="$bx $x"
1452   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1453   fi
1454 done
1455 build_xm_file="$bx"
1458 for x in $host_xm_file; do
1459   if    test -f $srcdir/config/$x
1460   then      hx="$hx $x"
1461   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1462   fi
1463 done
1464 host_xm_file="$hx"
1467 for x in $xm_file; do
1468   if    test -f $srcdir/config/$x
1469   then      tx="$tx $x"
1470   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1471   fi
1472 done
1473 xm_file="$tx"
1475 count=a
1476 for f in $tm_file; do
1477         count=${count}x
1478 done
1479 if test $count = ax; then
1480         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1481 else
1482         echo "Using the following target machine macro files:"
1483         for f in $tm_file; do
1484                 echo "  $srcdir/config/$f"
1485         done
1488 if test x$need_64bit_hwint = xyes; then
1489         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1490 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1493 if test x$use_long_long_for_widest_fast_int = xyes; then
1494         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1495 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1496 efficiently supported by the host hardware.])
1499 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1500 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1502 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1503 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1505 count=a
1506 for f in $host_xm_file; do
1507         count=${count}x
1508 done
1509 if test $count = a; then
1510         :
1511 elif test $count = ax; then
1512         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1513 else
1514         echo "Using the following host machine macro files:"
1515         for f in $host_xm_file; do
1516                 echo "  $srcdir/config/$f"
1517         done
1519 echo "Using ${out_host_hook_obj} for host machine hooks."
1521 if test "$host_xm_file" != "$build_xm_file"; then
1522         count=a
1523         for f in $build_xm_file; do
1524                 count=${count}x
1525         done
1526         if test $count = a; then
1527                 :
1528         elif test $count = ax; then
1529                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1530         else
1531                 echo "Using the following build machine macro files:"
1532                 for f in $build_xm_file; do
1533                         echo "  $srcdir/config/$f"
1534                 done
1535         fi
1538 if test -n "$configured_native_system_header_dir"; then
1539   native_system_header_dir=$configured_native_system_header_dir
1541 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1542 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1544 case ${host} in
1545   powerpc*-*-darwin*)
1546     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1547       gcc_cv_mcontext_underscores,
1548       AC_COMPILE_IFELSE([
1549 #include <sys/cdefs.h>
1550 #include <sys/signal.h>
1551 #include <ucontext.h>
1552 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1554         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1555       if test $gcc_cv_mcontext_underscores = yes; then
1556         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1557           [mcontext_t fields start with __])
1558       fi
1559     ;;
1560 esac
1562 # ---------
1563 # Threading
1564 # ---------
1566 # Check if a valid thread package
1567 case ${enable_threads} in
1568   "" | no)
1569     # No threads
1570     target_thread_file='single'
1571     ;;
1572   yes)
1573     # default
1574     target_thread_file='single'
1575     ;;
1576   aix | dce | lynx | mipssde | posix | rtems | \
1577   single | tpf | vxworks | win32)
1578     target_thread_file=${enable_threads}
1579     ;;
1580   *)
1581     echo "${enable_threads} is an unknown thread package" 1>&2
1582     exit 1
1583     ;;
1584 esac
1586 if test x${thread_file} = x; then
1587   # No thread file set by target-specific clauses in config.gcc,
1588   # so use file chosen by default logic above
1589   thread_file=${target_thread_file}
1592 # --------
1593 # UNSORTED
1594 # --------
1596 use_cxa_atexit=no
1597 if test x$enable___cxa_atexit = xyes || \
1598    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1599   if test x$host = x$target; then
1600     case $host in
1601       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1602       # keyed to flag_use_cxa_atexit
1603       *-*-mingw32*)
1604         use_cxa_atexit=yes
1605         ;;
1606       powerpc-ibm-aix*)
1607         use_cxa_atexit=yes
1608         ;;
1609       *)
1610         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1611           [echo "__cxa_atexit can't be enabled on this target"])
1612         ;;
1613     esac
1614   else
1615     # We can't check for __cxa_atexit when building a cross, so assume
1616     # it is available 
1617     use_cxa_atexit=yes
1618   fi
1619   if test x$use_cxa_atexit = xyes; then
1620     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1621       [Define if you want to use __cxa_atexit, rather than atexit, to
1622       register C++ destructors for local statics and global objects.
1623       This is essential for fully standards-compliant handling of
1624       destructors, but requires __cxa_atexit in libc.])
1625   fi
1628 # Look for a file containing extra machine modes.
1629 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1630   extra_modes_file='$(srcdir)'/config/${extra_modes}
1631   AC_SUBST(extra_modes_file)
1632   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1633   [Define to the name of a file containing a list of extra machine modes
1634    for this architecture.])
1637 # Convert extra_options into a form suitable for Makefile use.
1638 extra_opt_files=
1639 all_opt_files=
1640 for f in $extra_options; do
1641   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1642   all_opt_files="$all_opt_files $srcdir/config/$f"
1643 done
1644 AC_SUBST(extra_opt_files)
1646 # auto-host.h is the file containing items generated by autoconf and is
1647 # the first file included by config.h.
1648 # If host=build, it is correct to have bconfig include auto-host.h
1649 # as well.  If host!=build, we are in error and need to do more 
1650 # work to find out the build config parameters.
1651 if test x$host = x$build
1652 then
1653         build_auto=auto-host.h
1654 else
1655         # We create a subdir, then run autoconf in the subdir.
1656         # To prevent recursion we set host and build for the new
1657         # invocation of configure to the build for this invocation
1658         # of configure. 
1659         tempdir=build.$$
1660         rm -rf $tempdir
1661         mkdir $tempdir
1662         cd $tempdir
1663         case ${srcdir} in
1664         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1665         *) realsrcdir=../${srcdir};;
1666         esac
1667         # Clearing GMPINC is necessary to prevent host headers being
1668         # used by the build compiler.  Defining GENERATOR_FILE stops
1669         # system.h from including gmp.h.
1670         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1671         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1672         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1673         GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1674         ${realsrcdir}/configure \
1675                 --enable-languages=${enable_languages-all} \
1676                 --target=$target_alias --host=$build_alias --build=$build_alias
1678         # We just finished tests for the build machine, so rename
1679         # the file auto-build.h in the gcc directory.
1680         mv auto-host.h ../auto-build.h
1681         cd ..
1682         rm -rf $tempdir
1683         build_auto=auto-build.h
1685 AC_SUBST(build_subdir)
1687 tm_file="${tm_file} defaults.h"
1688 tm_p_file="${tm_p_file} tm-preds.h"
1689 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1690 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1691 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1692 # put this back in temporarily.
1693 xm_file="auto-host.h ansidecl.h ${xm_file}"
1695 # --------
1696 # UNSORTED
1697 # --------
1699 changequote(,)dnl
1700 # Compile in configure arguments.
1701 if test -f configargs.h ; then
1702         # Being re-configured.
1703         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1704         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1705 else
1706         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1709 # Double all backslashes and backslash all quotes to turn
1710 # gcc_config_arguments into a C string.
1711 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1712 $gcc_config_arguments
1714 gcc_config_arguments_str=`cat conftest.out`
1715 rm -f conftest.out
1717 cat > configargs.h <<EOF
1718 /* Generated automatically. */
1719 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1720 static const char thread_model[] = "$thread_file";
1722 static const struct {
1723   const char *name, *value;
1724 } configure_default_options[] = $configure_default_options;
1726 changequote([,])dnl
1728 changequote(,)dnl
1729 gcc_BASEVER=`cat $srcdir/BASE-VER`
1730 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1731 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1732 if test -f $srcdir/REVISION ; then
1733         gcc_REVISION=`cat $srcdir/REVISION`
1734 else
1735         gcc_REVISION=""
1737 cat > plugin-version.h <<EOF
1738 #include "configargs.h"
1740 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1741 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1742 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1743 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1745 static char basever[] = "$gcc_BASEVER";
1746 static char datestamp[] = "$gcc_DATESTAMP";
1747 static char devphase[] = "$gcc_DEVPHASE";
1748 static char revision[] = "$gcc_REVISION";
1750 /* FIXME plugins: We should make the version information more precise.
1751    One way to do is to add a checksum. */
1753 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1754                                                 devphase, revision,
1755                                                 configuration_arguments};
1757 changequote([,])dnl
1759 # Internationalization
1760 ZW_GNU_GETTEXT_SISTER_DIR
1762 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1763 # -liconv on the link line twice.
1764 case "$LIBINTL" in *$LIBICONV*)
1765         LIBICONV= ;;
1766 esac
1768 AC_ARG_ENABLE(secureplt,
1769 [AS_HELP_STRING([--enable-secureplt],
1770                 [enable -msecure-plt by default for PowerPC])],
1771 [], [])
1773 AC_ARG_ENABLE(leading-mingw64-underscores,
1774   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1775                  [enable leading underscores on 64 bit mingw targets]),
1776   [],[])
1777 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1778   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1779     [Define if we should use leading underscore on 64 bit mingw targets])])
1781 AC_ARG_ENABLE(cld,
1782 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1783 [enable_cld=no])
1785 AC_ARG_ENABLE(frame-pointer,
1786 [AS_HELP_STRING([--enable-frame-pointer],
1787                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1789 case $target_os in
1790 linux* | darwin[[8912]]*)
1791   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1792   # DWARF2.
1793   enable_frame_pointer=no
1794   ;;
1796   enable_frame_pointer=yes
1797   ;;
1798 esac
1801 # Windows32 Registry support for specifying GCC installation paths.
1802 AC_ARG_ENABLE(win32-registry,
1803 [AS_HELP_STRING([--disable-win32-registry],
1804                 [disable lookup of installation paths in the
1805                  Registry on Windows hosts])
1806 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1807 AS_HELP_STRING([--enable-win32-registry=KEY],
1808                [use KEY instead of GCC version as the last portion
1809                 of the registry key])],,)
1811 case $host_os in
1812   win32 | pe | cygwin* | mingw32* | uwin*)
1813     if test "x$enable_win32_registry" != xno; then
1814       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1815     fi
1817     if test "x$enable_win32_registry" != xno; then
1818       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1819   [Define to 1 if installation paths should be looked up in the Windows
1820    Registry. Ignored on non-Windows hosts.])
1822       if test "x$enable_win32_registry" != xyes \
1823          && test "x$enable_win32_registry" != x; then
1824         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1825   [Define to be the last component of the Windows registry key under which
1826    to look for installation paths.  The full key used will be 
1827    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1828    The default is the GCC version number.])
1829       fi
1830     fi
1831   ;;
1832 esac
1834 # Get an absolute path to the GCC top-level source directory
1835 holddir=`${PWDCMD-pwd}`
1836 cd $srcdir
1837 topdir=`${PWDCMD-pwd}`
1838 cd $holddir
1840 # Conditionalize the makefile for this host machine.
1841 xmake_file=
1842 for f in ${host_xmake_file}
1844         if test -f ${srcdir}/config/$f
1845         then
1846                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1847         fi
1848 done
1850 # Conditionalize the makefile for this target machine.
1851 tmake_file_=
1852 for f in ${tmake_file}
1854         if test -f ${srcdir}/config/$f
1855         then
1856                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1857         fi
1858 done
1859 tmake_file="${tmake_file_}"
1861 out_object_file=`basename $out_file .c`.o
1862 common_out_object_file=`basename $common_out_file .c`.o
1864 tm_file_list="options.h"
1865 tm_include_list="options.h insn-constants.h"
1866 for f in $tm_file; do
1867   case $f in
1868     ./* )
1869        f=`echo $f | sed 's/^..//'`
1870        tm_file_list="${tm_file_list} $f"
1871        tm_include_list="${tm_include_list} $f"
1872        ;;
1873     defaults.h )
1874        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1875        tm_include_list="${tm_include_list} $f"
1876        ;;
1877     * )
1878        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1879        tm_include_list="${tm_include_list} config/$f"
1880        ;;
1881   esac
1882 done
1884 tm_p_file_list=
1885 tm_p_include_list=
1886 for f in $tm_p_file; do
1887   case $f in
1888     tm-preds.h )
1889        tm_p_file_list="${tm_p_file_list} $f"
1890        tm_p_include_list="${tm_p_include_list} $f"
1891        ;;
1892     * )
1893        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1894        tm_p_include_list="${tm_p_include_list} config/$f"
1895   esac
1896 done
1898 xm_file_list=
1899 xm_include_list=
1900 for f in $xm_file; do
1901   case $f in
1902     ansidecl.h )
1903        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1904        xm_include_list="${xm_include_list} $f"
1905        ;;
1906     auto-host.h )
1907        xm_file_list="${xm_file_list} $f"
1908        xm_include_list="${xm_include_list} $f"
1909        ;;
1910     * )
1911        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1912        xm_include_list="${xm_include_list} config/$f"
1913        ;;
1914   esac
1915 done
1917 host_xm_file_list=
1918 host_xm_include_list=
1919 for f in $host_xm_file; do
1920   case $f in
1921     ansidecl.h )
1922        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1923        host_xm_include_list="${host_xm_include_list} $f"
1924        ;;
1925     auto-host.h )
1926        host_xm_file_list="${host_xm_file_list} $f"
1927        host_xm_include_list="${host_xm_include_list} $f"
1928        ;;
1929     * )
1930        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1931        host_xm_include_list="${host_xm_include_list} config/$f"
1932        ;;
1933   esac
1934 done
1936 build_xm_file_list=
1937 for f in $build_xm_file; do
1938   case $f in
1939     ansidecl.h )
1940        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1941        build_xm_include_list="${build_xm_include_list} $f"
1942        ;;
1943     auto-build.h | auto-host.h )
1944        build_xm_file_list="${build_xm_file_list} $f"
1945        build_xm_include_list="${build_xm_include_list} $f"
1946        ;;
1947     * )
1948        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1949        build_xm_include_list="${build_xm_include_list} config/$f"
1950        ;;
1951   esac
1952 done
1954 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1955 # cross-compiler which does not use the native headers and libraries.
1956 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1957 CROSS=                                          AC_SUBST(CROSS)
1958 ALL=all.internal                                AC_SUBST(ALL)
1959 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1961 if test "x$with_build_sysroot" != x; then
1962   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1963 else
1964   # This value is used, even on a native system, because 
1965   # CROSS_SYSTEM_HEADER_DIR is just 
1966   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1967   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1970 if test x$host != x$target
1971 then
1972         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1973         ALL=all.cross
1974         SYSTEM_HEADER_DIR=$build_system_header_dir
1975         case "$host","$target" in
1976         # Darwin crosses can use the host system's libraries and headers,
1977         # because of the fat library support.  Of course, it must be the
1978         # same version of Darwin on both sides.  Allow the user to
1979         # just say --target=foo-darwin without a version number to mean
1980         # "the version on this system".
1981             *-*-darwin*,*-*-darwin*)
1982                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1983                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1984                 if test $hostos = $targetos -o $targetos = darwin ; then
1985                     CROSS=
1986                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1987                     with_headers=yes
1988                 fi
1989                 ;;
1991             i?86-*-*,x86_64-*-* \
1992             | powerpc*-*-*,powerpc64*-*-*)
1993                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1994         esac
1996         case $target in
1997                 *-*-mingw*)
1998                         if test "x$with_headers" = x; then
1999                                 with_headers=yes
2000                         fi
2001                         ;;
2002                 *)
2003                         ;;
2004         esac
2005 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2006         SYSTEM_HEADER_DIR=$build_system_header_dir 
2009 # If this is a cross-compiler that does not
2010 # have its own set of headers then define
2011 # inhibit_libc
2013 # If this is using newlib, without having the headers available now,
2014 # then define inhibit_libc in LIBGCC2_CFLAGS.
2015 # This prevents libgcc2 from containing any code which requires libc
2016 # support.
2017 : ${inhibit_libc=false}
2018 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2019        test x$with_newlib = xyes ; } &&
2020      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
2021        inhibit_libc=true
2023 AC_SUBST(inhibit_libc)
2025 # When building gcc with a cross-compiler, we need to adjust things so
2026 # that the generator programs are still built with the native compiler.
2027 # Also, we cannot run fixincludes.
2029 # These are the normal (build=host) settings:
2030 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2031 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2032 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2033 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2034 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2035 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2037 # And these apply if build != host, or we are generating coverage data
2038 if test x$build != x$host || test "x$coverage_flags" != x
2039 then
2040     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2041     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2042     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2045 # Expand extra_headers to include complete path.
2046 # This substitutes for lots of t-* files.
2047 extra_headers_list=
2048 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2049 for file in ${extra_headers} ; do
2050   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2051 done
2053 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2054 if test x"$use_gcc_tgmath" = xyes
2055 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2058 # Define collect2 in Makefile.
2059 case $host_can_use_collect2 in
2060   no) collect2= ;;
2061   *) collect2='collect2$(exeext)' ;;
2062 esac
2063 AC_SUBST([collect2])
2065 # Add a definition of USE_COLLECT2 if system wants one.
2066 case $use_collect2 in
2067   no) use_collect2= ;;
2068   "") ;;
2069   *) 
2070     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2071     xm_defines="${xm_defines} USE_COLLECT2"
2072     case $host_can_use_collect2 in
2073       no)
2074         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2075         ;;
2076     esac
2077     ;;
2078 esac
2080 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2081 [Define to the name of the LTO plugin DSO that must be
2082   passed to the linker's -plugin=LIB option.])
2084 # ---------------------------
2085 # Assembler & linker features
2086 # ---------------------------
2088 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2089 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2090 # However when ld-new is first executed from the build tree, libtool will
2091 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2092 # to the build tree.  While doing this we need to use the previous-stage
2093 # linker, or we have an infinite loop.  The presence of a shell script as
2094 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2095 # the gcc/collect-ld script.  So we need to know how libtool works, or
2096 # exec-tool will fail.
2098 m4_defun([_LT_CONFIG_COMMANDS], [])
2099 AC_PROG_LIBTOOL
2100 AC_SUBST(objdir)
2101 AC_SUBST(enable_fast_install)
2103 # Identify the assembler which will work hand-in-glove with the newly
2104 # built GCC, so that we can examine its features.  This is the assembler
2105 # which will be driven by the driver program.
2107 # If build != host, and we aren't building gas in-tree, we identify a
2108 # build->target assembler and hope that it will have the same features
2109 # as the host->target assembler we'll be using.
2110 gcc_cv_gas_major_version=
2111 gcc_cv_gas_minor_version=
2112 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2114 m4_pattern_allow([AS_FOR_TARGET])dnl
2115 AS_VAR_SET_IF(gcc_cv_as,, [
2116 if test -x "$DEFAULT_ASSEMBLER"; then
2117         gcc_cv_as="$DEFAULT_ASSEMBLER"
2118 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
2119      && test -f ../gas/Makefile \
2120      && test x$build = x$host; then
2121         gcc_cv_as=../gas/as-new$build_exeext
2122 elif test -x as$build_exeext; then
2123         # Build using assembler in the current directory.
2124         gcc_cv_as=./as$build_exeext
2125 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2126         gcc_cv_as="$AS_FOR_TARGET"
2127 else
2128         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2129 fi])
2131 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2132 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2133 case "$ORIGINAL_AS_FOR_TARGET" in
2134   ./as | ./as$build_exeext) ;;
2135   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2136 esac 
2138 AC_MSG_CHECKING(what assembler to use)
2139 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2140   # Single tree build which includes gas.  We want to prefer it
2141   # over whatever linker top-level may have detected, since
2142   # we'll use what we're building after installation anyway.
2143   AC_MSG_RESULT(newly built gas)
2144   in_tree_gas=yes
2145   _gcc_COMPUTE_GAS_VERSION
2146   in_tree_gas_is_elf=no
2147   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2148      || (grep 'obj_format = multi' ../gas/Makefile \
2149          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2150   then
2151     in_tree_gas_is_elf=yes
2152   fi
2153 else
2154   AC_MSG_RESULT($gcc_cv_as)
2155   in_tree_gas=no
2158 default_ld=
2159 AC_ARG_ENABLE(ld,
2160 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2161 [case "${enableval}" in
2162  no)
2163    default_ld=ld.gold
2164    ;;
2165  esac])
2167 AC_ARG_ENABLE(gold,
2168 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2169 [case "${enableval}" in
2170  default)
2171    install_gold_as_default=yes
2172    ;;
2173  yes)
2174    if test x${default_ld} != x; then
2175      install_gold_as_default=yes
2176    fi
2177    ;;
2178  no)
2179    ;;
2180  *)
2181    AC_MSG_ERROR([invalid --enable-gold argument])
2182    ;;
2183  esac],
2184 [install_gold_as_default=no])
2186 # Identify the linker which will work hand-in-glove with the newly
2187 # built GCC, so that we can examine its features.  This is the linker
2188 # which will be driven by the driver program.
2190 # If build != host, and we aren't building gas in-tree, we identify a
2191 # build->target linker and hope that it will have the same features
2192 # as the host->target linker we'll be using.
2193 gcc_cv_gld_major_version=
2194 gcc_cv_gld_minor_version=
2195 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2196 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2197 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2199 AS_VAR_SET_IF(gcc_cv_ld,, [
2200 if test -x "$DEFAULT_LINKER"; then
2201         gcc_cv_ld="$DEFAULT_LINKER"
2202 elif test $install_gold_as_default = yes \
2203      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2204      && test -f ../gold/Makefile \
2205      && test x$build = x$host; then
2206         gcc_cv_ld=../gold/ld-new$build_exeext
2207 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
2208      && test -f ../ld/Makefile \
2209      && test x$build = x$host; then
2210         gcc_cv_ld=../ld/ld-new$build_exeext
2211 elif test -x collect-ld$build_exeext; then
2212         # Build using linker in the current directory.
2213         gcc_cv_ld=./collect-ld$build_exeext
2214 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2215         gcc_cv_ld="$LD_FOR_TARGET"
2216 else
2217         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2218 fi])
2220 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2221 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2222 # if the PLUGIN_LD is set ld-new, just have it as ld
2223 # as that is the installed named.
2224 if test x$PLUGIN_LD_SUFFIX = xld-new \
2225    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2226   PLUGIN_LD_SUFFIX=ld
2228 AC_ARG_WITH(plugin-ld,
2229 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2230 [if test x"$withval" != x; then
2231    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2232    PLUGIN_LD_SUFFIX=`echo $withval | sed -e "s,$target_alias-,,"`
2233  fi])
2234 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2235 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2237 # Check to see if we are using gold instead of ld
2238 AC_MSG_CHECKING(whether we are using gold)
2239 ld_is_gold=no
2240 if test x$gcc_cv_ld != x; then
2241   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2242      | grep "GNU gold" > /dev/null; then
2243     ld_is_gold=yes
2244   fi
2246 AC_MSG_RESULT($ld_is_gold)
2248 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2249 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2250 case "$ORIGINAL_LD_FOR_TARGET" in
2251   ./collect-ld | ./collect-ld$build_exeext) ;;
2252   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2253 esac 
2255 AC_MSG_CHECKING(what linker to use)
2256 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2257    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2258         # Single tree build which includes ld.  We want to prefer it
2259         # over whatever linker top-level may have detected, since
2260         # we'll use what we're building after installation anyway.
2261         AC_MSG_RESULT(newly built ld)
2262         in_tree_ld=yes
2263         in_tree_ld_is_elf=no
2264         if (grep 'EMUL = .*elf' ../ld/Makefile \
2265             || grep 'EMUL = .*linux' ../ld/Makefile \
2266             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2267           in_tree_ld_is_elf=yes
2268         elif test "$ld_is_gold" = yes; then
2269           in_tree_ld_is_elf=yes
2270         fi
2271         for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.in $gcc_cv_ld_gld_srcdir/Makefile.in
2272         do
2273 changequote(,)dnl
2274                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2275                 if test x$gcc_cv_gld_version != x; then
2276                         break
2277                 fi
2278         done
2279         case $gcc_cv_gld_version in
2280           VERSION=[0-9]*) ;;
2281 changequote([,])dnl
2282           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2283 changequote(,)dnl
2284         esac
2285         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2286         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2287 changequote([,])dnl
2288         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2289         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2290 else
2291         AC_MSG_RESULT($gcc_cv_ld)
2292         in_tree_ld=no
2293         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2294         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2295         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2298 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2299 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2301 # Figure out what nm we will be using.
2302 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2303 AS_VAR_SET_IF(gcc_cv_nm,, [
2304 if test -f $gcc_cv_binutils_srcdir/configure.in \
2305      && test -f ../binutils/Makefile \
2306      && test x$build = x$host; then
2307         gcc_cv_nm=../binutils/nm-new$build_exeext
2308 elif test -x nm$build_exeext; then
2309         gcc_cv_nm=./nm$build_exeext
2310 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2311         gcc_cv_nm="$NM_FOR_TARGET"
2312 else
2313         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2314 fi])
2316 AC_MSG_CHECKING(what nm to use)
2317 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2318         # Single tree build which includes binutils.
2319         AC_MSG_RESULT(newly built nm)
2320         in_tree_nm=yes
2321 else
2322         AC_MSG_RESULT($gcc_cv_nm)
2323         in_tree_nm=no
2326 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2327 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2328 case "$ORIGINAL_NM_FOR_TARGET" in
2329   ./nm | ./nm$build_exeext) ;;
2330   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2331 esac
2334 # Figure out what objdump we will be using.
2335 AS_VAR_SET_IF(gcc_cv_objdump,, [
2336 if test -f $gcc_cv_binutils_srcdir/configure.in \
2337      && test -f ../binutils/Makefile \
2338      && test x$build = x$host; then
2339         # Single tree build which includes binutils.
2340         gcc_cv_objdump=../binutils/objdump$build_exeext
2341 elif test -x objdump$build_exeext; then
2342         gcc_cv_objdump=./objdump$build_exeext
2343 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2344         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2345 else
2346         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2347 fi])
2349 AC_MSG_CHECKING(what objdump to use)
2350 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2351         # Single tree build which includes binutils.
2352         AC_MSG_RESULT(newly built objdump)
2353 elif test x$gcc_cv_objdump = x; then
2354         AC_MSG_RESULT(not found)
2355 else
2356         AC_MSG_RESULT($gcc_cv_objdump)
2359 # Figure out what readelf we will be using.
2360 AS_VAR_SET_IF(gcc_cv_readelf,, [
2361 if test -f $gcc_cv_binutils_srcdir/configure.in \
2362      && test -f ../binutils/Makefile \
2363      && test x$build = x$host; then
2364         # Single tree build which includes binutils.
2365         gcc_cv_readelf=../binutils/readelf$build_exeext
2366 elif test -x readelf$build_exeext; then
2367         gcc_cv_readelf=./readelf$build_exeext
2368 else
2369         AC_PATH_PROG(gcc_cv_readelf, readelf)
2370 fi])
2372 AC_MSG_CHECKING(what readelf to use)
2373 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2374         # Single tree build which includes binutils.
2375         AC_MSG_RESULT(newly built readelf)
2376 elif test x$gcc_cv_readelf = x; then
2377         AC_MSG_RESULT(not found)
2378 else
2379         AC_MSG_RESULT($gcc_cv_readelf)
2382 # Figure out what assembler alignment features are present.
2383 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2384  [2,6,0],,
2385 [.balign 4
2386 .p2align 2],,
2387 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2388   [Define if your assembler supports .balign and .p2align.])])
2390 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2391  [2,8,0],,
2392  [.p2align 4,,7],,
2393 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2394   [Define if your assembler supports specifying the maximum number
2395    of bytes to skip when using the GAS .p2align command.])])
2397 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2398  [2,8,0],,
2399  [.literal16],,
2400 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2401   [Define if your assembler supports .literal16.])])
2403 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2404  [elf,2,9,0],,
2405  [conftest_label1: .word 0
2406 .subsection -1
2407 conftest_label2: .word 0
2408 .previous],
2409  [if test x$gcc_cv_nm != x; then
2410     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2411     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2412     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2413     then :
2414     else gcc_cv_as_subsection_m1=yes
2415     fi
2416     rm -f conftest.nm1 conftest.nm2
2417   fi],
2418  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2419   [Define if your assembler supports .subsection and .subsection -1 starts
2420    emitting at the beginning of your section.])])
2422 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2423  [2,2,0],,
2424  [      .weak foobar],,
2425 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2427 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2428  [2,17,0],,
2429  [      .weakref foobar, barfnot],,
2430 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2432 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2433  [2,15,91],,
2434  [      .SPACE $TEXT$
2435         .NSUBSPA $CODE$,COMDAT],,
2436 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2438 # .hidden needs to be supported in both the assembler and the linker,
2439 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2440 # This is irritatingly difficult to feature test for; we have to check the
2441 # date string after the version number.  If we've got an in-tree
2442 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2443 # to be safe.
2444 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2445 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2446  [elf,2,13,0],,
2447 [       .hidden foobar
2448 foobar:])
2449 case "${target}" in
2450   *-*-darwin*)
2451     # Darwin as has some visibility support, though with a different syntax.
2452     gcc_cv_as_hidden=yes
2453     ;;
2454 esac
2456 # gnu_indirect_function type is an extension proposed at
2457 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2458 # selection of function implementation
2459 AC_ARG_ENABLE(gnu-indirect-function,
2460  [AS_HELP_STRING([--enable-gnu-indirect-function],
2461                  [enable the use of the @gnu_indirect_function to glibc systems])],
2462  [case $enable_gnu_indirect_function in
2463     yes | no) ;;
2464     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2465 Valid choices are 'yes' and 'no'.]) ;;
2466   esac],
2467  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2469 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2470 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2471 [Define if your system supports gnu indirect functions.])
2474 changequote(,)dnl
2475 if test $in_tree_ld != yes ; then
2476   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2477   if echo "$ld_ver" | grep GNU > /dev/null; then
2478     if test x"$ld_is_gold" = xyes; then
2479       # GNU gold --version looks like this:
2480       #
2481       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2482       #
2483       # We extract the binutils version which is more familiar and specific
2484       # than the gold version.
2485       ld_vers=`echo $ld_ver | sed -n \
2486           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2487     else
2488       # GNU ld --version looks like this:
2489       #
2490       # GNU ld (GNU Binutils) 2.21.51.20110225
2491       ld_vers=`echo $ld_ver | sed -n \
2492           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2493     fi
2494     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
2495     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2496     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2497     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2498   else
2499     case "${target}" in
2500       *-*-solaris2*)
2501         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2502         # format.
2503         #
2504         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2505         # /usr/ccs/bin/ld has been configured.
2506         ld_ver=`$gcc_cv_ld -V 2>&1`
2507         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2508           ld_vers=`echo $ld_ver | sed -n \
2509             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2510           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2511           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2512         fi
2513         ;;
2514     esac
2515   fi
2517 changequote([,])dnl
2519 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2520 [[if test $in_tree_ld = yes ; then
2521   gcc_cv_ld_hidden=no
2522   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \
2523      && test $in_tree_ld_is_elf = yes; then
2524      gcc_cv_ld_hidden=yes
2525   fi
2526 else
2527   gcc_cv_ld_hidden=yes
2528   if test x"$ld_is_gold" = xyes; then
2529     :
2530   elif echo "$ld_ver" | grep GNU > /dev/null; then
2531     case "${target}" in
2532       mmix-knuth-mmixware)
2533         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2534         gcc_cv_ld_hidden=no
2535         ;;
2536     esac
2537     if test 0"$ld_date" -lt 20020404; then
2538       if test -n "$ld_date"; then
2539         # If there was date string, but was earlier than 2002-04-04, fail
2540         gcc_cv_ld_hidden=no
2541       elif test -z "$ld_vers"; then
2542         # If there was no date string nor ld version number, something is wrong
2543         gcc_cv_ld_hidden=no
2544       else
2545         test -z "$ld_vers_patch" && ld_vers_patch=0
2546         if test "$ld_vers_major" -lt 2; then
2547           gcc_cv_ld_hidden=no
2548         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2549           gcc_cv_ld_hidden="no"
2550         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2551           gcc_cv_ld_hidden=no
2552         fi
2553       fi
2554     fi
2555   else
2556     case "${target}" in
2557       *-*-darwin*)
2558         # Darwin ld has some visibility support.
2559         gcc_cv_ld_hidden=yes
2560         ;;
2561       hppa64*-*-hpux* | ia64*-*-hpux*)
2562         gcc_cv_ld_hidden=yes
2563         ;;
2564       *-*-solaris2.1[0-9]*)
2565         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2566         # .symbolic was only added in Solaris 9 12/02.
2567         gcc_cv_ld_hidden=yes
2568         ;;
2569       *)
2570         gcc_cv_ld_hidden=no
2571         ;;
2572     esac
2573   fi
2574 fi]])
2575 libgcc_visibility=no
2576 AC_SUBST(libgcc_visibility)
2577 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2578 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2579   libgcc_visibility=yes
2580   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2581   [Define if your assembler and linker support .hidden.])
2584 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2585 gcc_cv_ld_ro_rw_mix=unknown
2586 if test $in_tree_ld = yes ; then
2587   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \
2588      && test $in_tree_ld_is_elf = yes; then
2589     gcc_cv_ld_ro_rw_mix=read-write
2590   fi
2591 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2592   echo '.section myfoosect, "a"' > conftest1.s
2593   echo '.section myfoosect, "aw"' > conftest2.s
2594   echo '.byte 1' >> conftest2.s
2595   echo '.section myfoosect, "a"' > conftest3.s
2596   echo '.byte 0' >> conftest3.s
2597   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2598      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2599      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2600      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2601         conftest2.o conftest3.o > /dev/null 2>&1; then
2602     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2603                          | sed -e '/myfoosect/!d' -e N`
2604     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2605       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2606         gcc_cv_ld_ro_rw_mix=read-only
2607       else
2608         gcc_cv_ld_ro_rw_mix=read-write
2609       fi
2610     fi
2611   fi
2612 changequote(,)dnl
2613   rm -f conftest.* conftest[123].*
2614 changequote([,])dnl
2616 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2617         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2618   [Define if your linker links a mix of read-only
2619    and read-write sections into a read-write section.])
2621 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2623 gcc_AC_INITFINI_ARRAY
2625 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2626 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2627   [elf,2,11,0],,
2628 [       .data
2629         .uleb128 L2 - L1
2631         .uleb128 1280
2632         .sleb128 -1010
2633 L2:],
2634 [[# GAS versions before 2.11 do not support uleb128,
2635   # despite appearing to.
2636   # ??? There exists an elf-specific test that will crash
2637   # the assembler.  Perhaps it's better to figure out whether
2638   # arbitrary sections are supported and try the test.
2639   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2640   if echo "$as_ver" | grep GNU > /dev/null; then
2641     as_vers=`echo $as_ver | sed -n \
2642         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2643     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2644     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2645     if test $as_major -eq 2 && test $as_minor -lt 11
2646     then :
2647     else gcc_cv_as_leb128=yes
2648     fi
2649   fi]],
2650   [AC_DEFINE(HAVE_AS_LEB128, 1,
2651     [Define if your assembler supports .sleb128 and .uleb128.])])
2653 # Check if we have assembler support for unwind directives.
2654 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2655   ,,
2656 [       .text
2657         .cfi_startproc
2658         .cfi_offset 0, 0
2659         .cfi_same_value 1
2660         .cfi_def_cfa 1, 2
2661         .cfi_escape 1, 2, 3, 4, 5
2662         .cfi_endproc],
2663 [case "$target" in
2664   *-*-solaris*)
2665     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2666     # read-only and read-write sections, we need to make sure that the
2667     # assembler used emits read-write .eh_frame sections.
2668     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2669       if test "x$gcc_cv_objdump" != x; then
2670         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2671                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2672           gcc_cv_as_cfi_directive=no
2673         else
2674           case "$target" in
2675             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2676               # On Solaris/x86, make sure that GCC and assembler agree on using
2677               # read-only .eh_frame sections for 64-bit.
2678               if test x$gas = xyes; then
2679                  as_ix86_64_opt="--64"
2680               else
2681                  as_ix86_64_opt="-xarch=amd64"
2682               fi
2683               if $gcc_cv_as $as_ix86_64_opt -o conftest.o conftest.s > /dev/null 2>&1 && \
2684                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2685                         sed -e /.eh_frame/!d -e N | \
2686                         grep READONLY > /dev/null; then
2687                 gcc_cv_as_cfi_directive=yes
2688               else
2689                 gcc_cv_as_cfi_directive=no
2690               fi
2691               ;;
2692             *)
2693               gcc_cv_as_cfi_directive=yes
2694               ;;
2695           esac 
2696         fi
2697       else
2698         # no objdump, err on the side of caution
2699         gcc_cv_as_cfi_directive=no
2700       fi
2701     else
2702       gcc_cv_as_cfi_directive=yes
2703     fi
2704     ;;
2705   *-*-*)
2706     gcc_cv_as_cfi_directive=yes
2707     ;;
2708 esac])
2709 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2710 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2711   ,,
2712 [       .text
2713         .cfi_startproc
2714         .cfi_adjust_cfa_offset 64
2715         .skip 75040, 0
2716         .cfi_adjust_cfa_offset 128
2717         .cfi_endproc],
2719 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2720     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2721    gcc_cv_as_cfi_advance_working=yes
2724 else
2725   # no objdump, err on the side of caution
2726   gcc_cv_as_cfi_advance_working=no
2728 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2729 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2730   [`if test $gcc_cv_as_cfi_directive = yes \
2731        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2732   [Define 0/1 if your assembler supports CFI directives.])
2734 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2735 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2736   gcc_cv_as_cfi_personality_directive, ,,
2737 [       .text
2738         .cfi_startproc
2739         .cfi_personality 0, symbol
2740         .cfi_endproc])
2741 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2742   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2743     then echo 1; else echo 0; fi`],
2744   [Define 0/1 if your assembler supports .cfi_personality.])
2746 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2747   gcc_cv_as_cfi_sections_directive, ,,
2748 [       .text
2749         .cfi_sections .debug_frame, .eh_frame
2750         .cfi_startproc
2751         .cfi_endproc],
2752 [case $target_os in
2753   win32 | pe | cygwin* | mingw32* | uwin*)
2754     # Need to check that we generated the correct relocation for the
2755     # .debug_frame section.  This was fixed for binutils 2.21.
2756     gcc_cv_as_cfi_sections_directive=no
2757     if test "x$gcc_cv_objdump" != x; then
2758      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2759         grep secrel > /dev/null; then
2760       gcc_cv_as_cfi_sections_directive=yes
2761      fi
2762     fi
2763     ;;
2764   *)
2765     gcc_cv_as_cfi_sections_directive=yes
2766     ;;
2767 esac])
2768 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2769 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2770   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2771     then echo 1; else echo 0; fi`],
2772   [Define 0/1 if your assembler supports .cfi_sections.])
2774 # GAS versions up to and including 2.11.0 may mis-optimize
2775 # .eh_frame data.
2776 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2777   [elf,2,12,0],,
2778 [       .text
2779 .LFB1:
2780         .4byte  0
2781 .L1:
2782         .4byte  0
2783 .LFE1:
2784         .section        .eh_frame,"aw",@progbits
2785 __FRAME_BEGIN__:
2786         .4byte  .LECIE1-.LSCIE1
2787 .LSCIE1:
2788         .4byte  0x0
2789         .byte   0x1
2790         .ascii "z\0"
2791         .byte   0x1
2792         .byte   0x78
2793         .byte   0x1a
2794         .byte   0x0
2795         .byte   0x4
2796         .4byte  1
2797         .p2align 1
2798 .LECIE1:
2799 .LSFDE1:
2800         .4byte  .LEFDE1-.LASFDE1
2801 .LASFDE1:
2802         .4byte  .LASFDE1-__FRAME_BEGIN__
2803         .4byte  .LFB1
2804         .4byte  .LFE1-.LFB1
2805         .byte   0x4
2806         .4byte  .LFE1-.LFB1
2807         .byte   0x4
2808         .4byte  .L1-.LFB1
2809 .LEFDE1:],
2810 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2811 cat > conftest.lit <<EOF
2812  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2813  0010 01000000 12000000 18000000 00000000  ................
2814  0020 08000000 04080000 0044               .........D      @&t@
2816 cat > conftest.big <<EOF
2817  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2818  0010 00000001 00000012 00000018 00000000  ................
2819  0020 00000008 04000000 0844               .........D      @&t@
2821   # If the assembler didn't choke, and we can objdump,
2822   # and we got the correct data, then succeed.
2823   # The text in the here-document typically retains its unix-style line
2824   # endings, while the output of objdump will use host line endings.
2825   # Therefore, use diff -b for the comparisons.
2826   if test x$gcc_cv_objdump != x \
2827   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2828      | tail -3 > conftest.got \
2829   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2830     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2831   then
2832     gcc_cv_as_eh_frame=yes
2833   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2834     gcc_cv_as_eh_frame=buggy
2835   else
2836     # Uh oh, what do we do now?
2837     gcc_cv_as_eh_frame=no
2838   fi])
2840 if test $gcc_cv_as_eh_frame = buggy; then
2841   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2842   [Define if your assembler mis-optimizes .eh_frame data.])
2845 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2846  [elf,2,12,0], [--fatal-warnings],
2847  [.section .rodata.str, "aMS", @progbits, 1])
2848 if test $gcc_cv_as_shf_merge = no; then
2849   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2850     [elf,2,12,0], [--fatal-warnings],
2851     [.section .rodata.str, "aMS", %progbits, 1])
2853 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2854   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2855 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2857 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2858  gcc_cv_as_comdat_group,
2859  [elf,2,16,0], [--fatal-warnings],
2860  [.section .text,"axG",@progbits,.foo,comdat])
2861 if test $gcc_cv_as_comdat_group = yes; then
2862   gcc_cv_as_comdat_group_percent=no
2863   gcc_cv_as_comdat_group_group=no
2864 else
2865  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2866    gcc_cv_as_comdat_group_percent,
2867    [elf,2,16,0], [--fatal-warnings],
2868    [.section .text,"axG",%progbits,.foo,comdat])
2869  if test $gcc_cv_as_comdat_group_percent = yes; then
2870    gcc_cv_as_comdat_group_group=no
2871  else
2872    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2873      gcc_cv_as_comdat_group_group=no
2874    fi
2875    case "${target}" in
2876      # Sun as uses a completely different syntax.
2877      *-*-solaris2*)
2878        case "${target}" in
2879          sparc*-*-solaris2*)
2880            conftest_s='
2881                .group foo,".text%foo",#comdat
2882                .section ".text%foo", #alloc,#execinstr,#progbits
2883                .globl foo
2884              foo:
2885              '
2886            ;;
2887          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2888            conftest_s='
2889                .group foo,.text%foo,#comdat
2890                .section .text%foo, "ax", @progbits
2891                .globl  foo
2892              foo:
2893              '
2894            ;;
2895        esac
2896        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2897          gcc_cv_as_comdat_group_group,
2898          ,, [$conftest_s])
2899        ;;
2900    esac
2901  fi
2903 if test x"$ld_is_gold" = xyes; then
2904   comdat_group=yes
2905 elif test $in_tree_ld = yes ; then
2906   comdat_group=no
2907   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
2908      && test $in_tree_ld_is_elf = yes; then
2909      comdat_group=yes
2910   fi
2911 elif echo "$ld_ver" | grep GNU > /dev/null; then
2912   comdat_group=yes
2913   if test 0"$ld_date" -lt 20050308; then
2914     if test -n "$ld_date"; then
2915       # If there was date string, but was earlier than 2005-03-08, fail
2916       comdat_group=no
2917     elif test "$ld_vers_major" -lt 2; then
2918       comdat_group=no
2919     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2920       comdat_group=no
2921     fi
2922   fi
2923 else
2924 changequote(,)dnl
2925   case "${target}" in
2926     *-*-solaris2.1[1-9]*)
2927       comdat_group=no
2928       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2929       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2930       # version 1.688.
2931       #
2932       # If using Sun as for COMDAT group as emitted by GCC, one needs at
2933       # least ld version 1.2267.
2934       if test "$ld_vers_major" -gt 1; then
2935         comdat_group=yes
2936       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2937         comdat_group=yes
2938       elif test "$ld_vers_minor" -ge 2267; then
2939         comdat_group=yes
2940       fi
2941       ;;
2942     *)
2943       # Assume linkers other than GNU ld don't support COMDAT group.
2944       comdat_group=no
2945       ;;
2946   esac
2947 changequote([,])dnl
2949 # Allow overriding the automatic COMDAT group tests above.
2950 AC_ARG_ENABLE(comdat,
2951   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2952   [comdat_group="$enable_comdat"])
2953 if test $comdat_group = no; then
2954   gcc_cv_as_comdat_group=no
2955   gcc_cv_as_comdat_group_percent=no
2956   gcc_cv_as_comdat_group_group=no
2958 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2959   [`if test $gcc_cv_as_comdat_group = yes \
2960     || test $gcc_cv_as_comdat_group_percent = yes \
2961     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2962 [Define 0/1 if your assembler and linker support COMDAT groups.])
2964 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2965  gcc_cv_as_discriminator,
2966  [2,19,51],,
2967 [       .text
2968         .file 1 "conf.c"
2969         .loc 1 1 0 discriminator 1],,
2970 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2971   [Define if your assembler supports the .loc discriminator sub-directive.])])
2973 # Thread-local storage - the check is heavily parameterized.
2974 conftest_s=
2975 tls_first_major=
2976 tls_first_minor=
2977 tls_as_opt=
2978 case "$target" in
2979 changequote(,)dnl
2980   alpha*-*-*)
2981     conftest_s='
2982         .section ".tdata","awT",@progbits
2983 foo:    .long   25
2984         .text
2985         ldq     $27,__tls_get_addr($29)         !literal!1
2986         lda     $16,foo($29)                    !tlsgd!1
2987         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2988         ldq     $27,__tls_get_addr($29)         !literal!2
2989         lda     $16,foo($29)                    !tlsldm!2
2990         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2991         ldq     $1,foo($29)                     !gotdtprel
2992         ldah    $2,foo($29)                     !dtprelhi
2993         lda     $3,foo($2)                      !dtprello
2994         lda     $4,foo($29)                     !dtprel
2995         ldq     $1,foo($29)                     !gottprel
2996         ldah    $2,foo($29)                     !tprelhi
2997         lda     $3,foo($2)                      !tprello
2998         lda     $4,foo($29)                     !tprel'
2999         tls_first_major=2
3000         tls_first_minor=13
3001         tls_as_opt=--fatal-warnings
3002         ;;
3003   cris-*-*|crisv32-*-*)
3004     conftest_s='
3005         .section ".tdata","awT",@progbits
3006 x:      .long   25
3007         .text
3008         move.d x:IE,$r10
3009         nop'
3010         tls_first_major=2
3011         tls_first_minor=20
3012         tls_as_opt=--fatal-warnings
3013         ;;
3014   frv*-*-*)
3015     conftest_s='
3016         .section ".tdata","awT",@progbits
3017 x:      .long   25
3018         .text
3019         call    #gettlsoff(x)'
3020         tls_first_major=2
3021         tls_first_minor=14
3022         ;;
3023   hppa*-*-linux*)
3024     conftest_s='
3025 t1:     .reg    %r20
3026 t2:     .reg    %r21
3027 gp:     .reg    %r19
3028         .section ".tdata","awT",@progbits
3029 foo:    .long   25
3030         .text
3031         .align  4
3032         addil LT%foo-$tls_gdidx$,gp
3033         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3034         b __tls_get_addr
3035         nop             
3036         addil LT%foo-$tls_ldidx$,gp
3037         b __tls_get_addr
3038         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3039         addil LR%foo-$tls_dtpoff$,%ret0
3040         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3041         mfctl %cr27,%t1                 
3042         addil LT%foo-$tls_ieoff$,gp
3043         ldw RT%foo-$tls_ieoff$(%r1),%t2
3044         add %t1,%t2,%t3                 
3045         mfctl %cr27,%t1                 
3046         addil LR%foo-$tls_leoff$,%t1
3047         ldo RR%foo-$tls_leoff$(%r1),%t2'
3048         tls_first_major=2
3049         tls_first_minor=15
3050         tls_as_opt=--fatal-warnings
3051         ;;
3052   arm*-*-*)
3053     conftest_s='
3054         .section ".tdata","awT",%progbits
3055 foo:    .long   25
3056         .text
3057 .word foo(gottpoff)
3058 .word foo(tpoff)
3059 .word foo(tlsgd)
3060 .word foo(tlsldm)
3061 .word foo(tlsldo)'
3062         tls_first_major=2
3063         tls_first_minor=17
3064         ;;
3065   i[34567]86-*-* | x86_64-*-*)
3066     case "$target" in
3067       i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3068         on_solaris=yes
3069         ;;
3070       *)
3071         on_solaris=no
3072         ;;
3073     esac
3074     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3075       conftest_s='
3076         .section .tdata,"awt",@progbits'
3077       tls_first_major=0
3078       tls_first_minor=0
3079       tls_section_flag=t
3080 changequote([,])dnl
3081       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3082 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3083 changequote(,)dnl
3084     else
3085       conftest_s='
3086         .section ".tdata","awT",@progbits'
3087       tls_first_major=2
3088       tls_first_minor=14
3089       tls_section_flag=T
3090       tls_as_opt="--fatal-warnings"
3091     fi
3092     case "$target" in
3093       i[34567]86-*-*)
3094         conftest_s="$conftest_s
3095 foo:    .long   25
3096         .text
3097         movl    %gs:0, %eax
3098         leal    foo@tlsgd(,%ebx,1), %eax
3099         leal    foo@tlsldm(%ebx), %eax
3100         leal    foo@dtpoff(%eax), %edx
3101         movl    foo@gottpoff(%ebx), %eax
3102         subl    foo@gottpoff(%ebx), %eax
3103         addl    foo@gotntpoff(%ebx), %eax
3104         movl    foo@indntpoff, %eax
3105         movl    \$foo@tpoff, %eax
3106         subl    \$foo@tpoff, %eax
3107         leal    foo@ntpoff(%ecx), %eax"
3108         ;;
3109       x86_64-*-*)
3110         if test x$on_solaris = xyes; then
3111           case $gas_flag in
3112             yes) tls_as_opt="$tls_as_opt --64" ;;
3113             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3114           esac    
3115         fi
3116         conftest_s="$conftest_s
3117 foo:    .long   25
3118         .text
3119         movq    %fs:0, %rax
3120         leaq    foo@tlsgd(%rip), %rdi
3121         leaq    foo@tlsld(%rip), %rdi
3122         leaq    foo@dtpoff(%rax), %rdx
3123         movq    foo@gottpoff(%rip), %rax
3124         movq    \$foo@tpoff, %rax"
3125         ;;
3126     esac
3127     ;;
3128   ia64-*-*)
3129     conftest_s='
3130         .section ".tdata","awT",@progbits
3131 foo:    data8   25
3132         .text
3133         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3134         addl    r17 = @ltoff(@dtprel(foo#)), gp
3135         addl    r18 = @ltoff(@tprel(foo#)), gp
3136         addl    r19 = @dtprel(foo#), gp
3137         adds    r21 = @dtprel(foo#), r13
3138         movl    r23 = @dtprel(foo#)
3139         addl    r20 = @tprel(foo#), gp
3140         adds    r22 = @tprel(foo#), r13
3141         movl    r24 = @tprel(foo#)'
3142         tls_first_major=2
3143         tls_first_minor=13
3144         tls_as_opt=--fatal-warnings
3145         ;;
3146   microblaze*-*-*)
3147     conftest_s='
3148         .section .tdata,"awT",@progbits
3150         .word 2
3151         .text
3152         addik r5,r20,x@TLSGD
3153         addik r5,r20,x@TLSLDM'
3154         tls_first_major=2
3155         tls_first_minor=20
3156         tls_as_opt='--fatal-warnings'
3157         ;;
3158   mips*-*-*)
3159     conftest_s='
3160         .section .tdata,"awT",@progbits
3162         .word 2
3163         .text
3164         addiu $4, $28, %tlsgd(x)
3165         addiu $4, $28, %tlsldm(x)
3166         lui $4, %dtprel_hi(x)
3167         addiu $4, $4, %dtprel_lo(x)
3168         lw $4, %gottprel(x)($28)
3169         lui $4, %tprel_hi(x)
3170         addiu $4, $4, %tprel_lo(x)'
3171         tls_first_major=2
3172         tls_first_minor=16
3173         tls_as_opt='-32 --fatal-warnings'
3174         ;;
3175   m68k-*-*)
3176     conftest_s='
3177         .section .tdata,"awT",@progbits
3179         .word 2
3180         .text
3181 foo:
3182         move.l x@TLSGD(%a5),%a0
3183         move.l x@TLSLDM(%a5),%a0
3184         move.l x@TLSLDO(%a5),%a0
3185         move.l x@TLSIE(%a5),%a0
3186         move.l x@TLSLE(%a5),%a0'
3187         tls_first_major=2
3188         tls_first_minor=19
3189         tls_as_opt='--fatal-warnings'
3190         ;;
3191   nios2-*-*)
3192       conftest_s='
3193         .section ".tdata","awT",@progbits'
3194         tls_first_major=2
3195         tls_first_minor=23
3196         tls_as_opt="--fatal-warnings"
3197         ;;
3198   aarch64*-*-*)
3199     conftest_s='
3200         .section ".tdata","awT",%progbits
3201 foo:    .long   25
3202         .text
3203         adrp  x0, :tlsgd:x
3204         add   x0, x0, #:tlsgd_lo12:x
3205         bl    __tls_get_addr
3206         nop'
3207         tls_first_major=2
3208         tls_first_minor=20
3209         tls_as_opt='--fatal-warnings'
3210         ;;
3211   powerpc-ibm-aix*)
3212     conftest_s='
3213         .extern __get_tpointer
3214         .toc
3215 LC..1:
3216         .tc a[TC],a[TL]@le
3217         .csect .text[PR]
3218 .tlstest:
3219         lwz 9,LC..1(2)
3220         bla __get_tpointer
3221         lwzx 3,9,3
3222         .globl a
3223         .csect a[TL],4
3225         .space 4'
3226         tls_first_major=0
3227         tls_first_minor=0
3228         ;;
3229   powerpc64*-*-*)
3230     conftest_s='
3231         .section ".tdata","awT",@progbits
3232         .align 3
3233 ld0:    .space 8
3234 ld1:    .space 8
3235 x1:     .space 8
3236 x2:     .space 8
3237 x3:     .space 8
3238         .text
3239         addi 3,2,ld0@got@tlsgd
3240         bl .__tls_get_addr
3241         nop
3242         addi 3,2,ld1@toc
3243         bl .__tls_get_addr
3244         nop
3245         addi 3,2,x1@got@tlsld
3246         bl .__tls_get_addr
3247         nop
3248         addi 9,3,x1@dtprel
3249         bl .__tls_get_addr
3250         nop
3251         addis 9,3,x2@dtprel@ha
3252         addi 9,9,x2@dtprel@l
3253         bl .__tls_get_addr
3254         nop
3255         ld 9,x3@got@dtprel(2)
3256         add 9,9,3
3257         bl .__tls_get_addr
3258         nop'
3259         tls_first_major=2
3260         tls_first_minor=14
3261         tls_as_opt="-a64 --fatal-warnings"
3262         ;;
3263   powerpc*-*-*)
3264     conftest_s='
3265         .section ".tdata","awT",@progbits
3266         .align 2
3267 ld0:    .space 4
3268 ld1:    .space 4
3269 x1:     .space 4
3270 x2:     .space 4
3271 x3:     .space 4
3272         .text
3273         addi 3,31,ld0@got@tlsgd
3274         bl __tls_get_addr
3275         addi 3,31,x1@got@tlsld
3276         bl __tls_get_addr
3277         addi 9,3,x1@dtprel
3278         addis 9,3,x2@dtprel@ha
3279         addi 9,9,x2@dtprel@l
3280         lwz 9,x3@got@tprel(31)
3281         add 9,9,x@tls
3282         addi 9,2,x1@tprel
3283         addis 9,2,x2@tprel@ha
3284         addi 9,9,x2@tprel@l'
3285         tls_first_major=2
3286         tls_first_minor=14
3287         tls_as_opt="-a32 --fatal-warnings"
3288         ;;
3289   s390-*-*)
3290     conftest_s='
3291         .section ".tdata","awT",@progbits
3292 foo:    .long   25
3293         .text
3294         .long   foo@TLSGD
3295         .long   foo@TLSLDM
3296         .long   foo@DTPOFF
3297         .long   foo@NTPOFF
3298         .long   foo@GOTNTPOFF
3299         .long   foo@INDNTPOFF
3300         l       %r1,foo@GOTNTPOFF(%r12)
3301         l       %r1,0(%r1):tls_load:foo
3302         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3303         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3304         tls_first_major=2
3305         tls_first_minor=14
3306         tls_as_opt="-m31 --fatal-warnings"
3307         ;;
3308   s390x-*-*)
3309     conftest_s='
3310         .section ".tdata","awT",@progbits
3311 foo:    .long   25
3312         .text
3313         .quad   foo@TLSGD
3314         .quad   foo@TLSLDM
3315         .quad   foo@DTPOFF
3316         .quad   foo@NTPOFF
3317         .quad   foo@GOTNTPOFF
3318         lg      %r1,foo@GOTNTPOFF(%r12)
3319         larl    %r1,foo@INDNTPOFF
3320         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3321         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3322         tls_first_major=2
3323         tls_first_minor=14
3324         tls_as_opt="-m64 -Aesame --fatal-warnings"
3325         ;;
3326   sh-*-* | sh[34]-*-*)
3327     conftest_s='
3328         .section ".tdata","awT",@progbits
3329 foo:    .long   25
3330         .text
3331         .long   foo@TLSGD
3332         .long   foo@TLSLDM
3333         .long   foo@DTPOFF
3334         .long   foo@GOTTPOFF
3335         .long   foo@TPOFF'
3336         tls_first_major=2
3337         tls_first_minor=13
3338         tls_as_opt=--fatal-warnings
3339         ;;
3340   sparc*-*-*)
3341     case "$target" in
3342       sparc*-sun-solaris2.*)
3343         on_solaris=yes
3344         ;;
3345       *)
3346         on_solaris=no
3347         ;;
3348     esac
3349     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3350       conftest_s='
3351         .section ".tdata",#alloc,#write,#tls'
3352         tls_first_major=0
3353         tls_first_minor=0
3354     else
3355       conftest_s='
3356         .section ".tdata","awT",@progbits'
3357         tls_first_major=2
3358         tls_first_minor=14
3359         tls_as_opt="-32 --fatal-warnings"
3360     fi
3361     conftest_s="$conftest_s
3362 foo:    .long   25
3363         .text
3364         sethi   %tgd_hi22(foo), %o0
3365         add     %o0, %tgd_lo10(foo), %o1
3366         add     %l7, %o1, %o0, %tgd_add(foo)
3367         call    __tls_get_addr, %tgd_call(foo)
3368         sethi   %tldm_hi22(foo), %l1
3369         add     %l1, %tldm_lo10(foo), %l2
3370         add     %l7, %l2, %o0, %tldm_add(foo)
3371         call    __tls_get_addr, %tldm_call(foo)
3372         sethi   %tldo_hix22(foo), %l3
3373         xor     %l3, %tldo_lox10(foo), %l4
3374         add     %o0, %l4, %l5, %tldo_add(foo)
3375         sethi   %tie_hi22(foo), %o3
3376         add     %o3, %tie_lo10(foo), %o3
3377         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3378         add     %g7, %o2, %o4, %tie_add(foo)
3379         sethi   %tle_hix22(foo), %l1
3380         xor     %l1, %tle_lox10(foo), %o5
3381         ld      [%g7 + %o5], %o1"
3382         ;;
3383   tilepro*-*-*)
3384       conftest_s='
3385         .section ".tdata","awT",@progbits
3386 foo:    .long   25
3387         .text
3388         addli   r0, zero, tls_gd(foo)
3389         auli    r0, zero, tls_gd_ha16(foo)
3390         addli   r0, r0, tls_gd_lo16(foo)
3391         jal     __tls_get_addr
3392         addli   r0, zero, tls_ie(foo)
3393         auli    r0, r0, tls_ie_ha16(foo)
3394         addli   r0, r0, tls_ie_lo16(foo)'
3395         tls_first_major=2
3396         tls_first_minor=22
3397         tls_as_opt="--fatal-warnings"
3398         ;;
3399   tilegx*-*-*)
3400       conftest_s='
3401         .section ".tdata","awT",@progbits
3402 foo:    .long   25
3403         .text
3404         shl16insli r0, zero, hw0_last_tls_gd(foo)
3405         shl16insli r0, zero, hw1_last_tls_gd(foo)
3406         shl16insli r0, r0,   hw0_tls_gd(foo)
3407         jal        __tls_get_addr
3408         shl16insli r0, zero, hw1_last_tls_ie(foo)
3409         shl16insli r0, r0,   hw0_tls_ie(foo)'
3410         tls_first_major=2
3411         tls_first_minor=22
3412         tls_as_opt="--fatal-warnings"
3413         ;;
3414   xtensa*-*-*)
3415     conftest_s='
3416         .section ".tdata","awT",@progbits
3417 foo:    .long   25
3418         .text
3419         movi    a8, foo@TLSFUNC
3420         movi    a10, foo@TLSARG
3421         callx8.tls a8, foo@TLSCALL'
3422         tls_first_major=2
3423         tls_first_minor=19
3424         ;;
3425 changequote([,])dnl
3426 esac
3427 set_have_as_tls=no
3428 if test "x$enable_tls" = xno ; then
3429   : # TLS explicitly disabled.
3430 elif test "x$enable_tls" = xyes ; then
3431   set_have_as_tls=yes # TLS explicitly enabled.
3432 elif test -z "$tls_first_major"; then
3433   : # If we don't have a check, assume no support.
3434 else
3435   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3436   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3437   [set_have_as_tls=yes])
3439 if test $set_have_as_tls = yes ; then
3440   AC_DEFINE(HAVE_AS_TLS, 1,
3441             [Define if your assembler and linker support thread-local storage.])
3444 # Target-specific assembler checks.
3446 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3447 gcc_cv_ld_static_dynamic=no
3448 gcc_cv_ld_static_option='-Bstatic'
3449 gcc_cv_ld_dynamic_option='-Bdynamic'
3450 if test $in_tree_ld = yes ; then
3451   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2; then
3452     gcc_cv_ld_static_dynamic=yes
3453   fi
3454 elif test x$gcc_cv_ld != x; then
3455   # Check if linker supports -Bstatic/-Bdynamic option
3456   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3457      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3458       gcc_cv_ld_static_dynamic=yes
3459   else
3460     case "$target" in
3461       # AIX ld uses -b flags
3462       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3463         gcc_cv_ld_static_dynamic=yes
3464         gcc_cv_ld_static_option="-bstatic"
3465         gcc_cv_ld_dynamic_option="-bdynamic"
3466         ;;
3467       # HP-UX ld uses -a flags to select between shared and archive.
3468       *-*-hpux*)
3469         if test x"$gnu_ld" = xno; then
3470           gcc_cv_ld_static_dynamic=yes
3471           gcc_cv_ld_static_option="-aarchive_shared"
3472           gcc_cv_ld_dynamic_option="-adefault"
3473         fi
3474         ;;
3475       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3476       *-*-solaris2*)
3477         gcc_cv_ld_static_dynamic=yes
3478         ;;
3479     esac
3480   fi
3482 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3483         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3484 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3485         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3486 [Define to the linker option to disable use of shared objects.])
3487         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3488 [Define to the linker option to enable use of shared objects.])
3490 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3492 if test x"$demangler_in_ld" = xyes; then
3493   AC_MSG_CHECKING(linker --demangle support)
3494   gcc_cv_ld_demangle=no
3495   if test $in_tree_ld = yes; then
3496     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
3497       gcc_cv_ld_demangle=yes
3498     fi
3499   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3500     # Check if the GNU linker supports --demangle option
3501     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3502       gcc_cv_ld_demangle=yes
3503     fi
3504   fi
3505   if test x"$gcc_cv_ld_demangle" = xyes; then
3506     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3507 [Define if your linker supports --demangle option.])
3508   fi
3509   AC_MSG_RESULT($gcc_cv_ld_demangle)
3512 AC_MSG_CHECKING(linker plugin support)
3513 gcc_cv_lto_plugin=0
3514 if test -f liblto_plugin.la; then
3515   save_ld_ver="$ld_ver"
3516   save_ld_vers_major="$ld_vers_major"
3517   save_ld_vers_minor="$ld_vers_minor"
3518   save_ld_is_gold="$ld_is_gold"
3520   ld_is_gold=no
3522   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3523     ld_ver="GNU ld"
3524     # FIXME: ld_is_gold?
3525     ld_vers_major="$gcc_cv_gld_major_version"
3526     ld_vers_minor="$gcc_cv_gld_minor_version"
3527   else
3528     # Determine plugin linker version.
3529     # FIXME: Partial duplicate from above, generalize.
3530 changequote(,)dnl
3531     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3532     if echo "$ld_ver" | grep GNU > /dev/null; then
3533       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3534         ld_is_gold=yes
3535         ld_vers=`echo $ld_ver | sed -n \
3536             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3537       else
3538         ld_vers=`echo $ld_ver | sed -n \
3539             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3540       fi
3541       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3542       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3543     fi
3544 changequote([,])dnl
3545   fi
3547   # Determine plugin support.
3548   if echo "$ld_ver" | grep GNU > /dev/null; then
3549     # Require GNU ld or gold 2.21+ for plugin support by default.
3550     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3551       gcc_cv_lto_plugin=2
3552     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3553     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3554       gcc_cv_lto_plugin=1
3555     fi
3556   fi
3558   ld_ver="$save_ld_ver"
3559   ld_vers_major="$save_ld_vers_major"
3560   ld_vers_minor="$save_ld_vers_minor"
3561   ld_is_gold="$save_ld_is_gold"
3563 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3564   [Define to the level of your linker's plugin support.])
3565 AC_MSG_RESULT($gcc_cv_lto_plugin)
3567 case "$target" in
3568   aarch64*-*-*)
3569     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3570                           [-mabi=lp64], [.text],,,)
3571     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3572       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3573                 [Define if your assembler supports the -mabi option.])
3574     else
3575       if test x$with_abi = xilp32; then
3576         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3577                      Upgrade the Assembler.])
3578       fi
3579       if test x"$with_multilib_list" = xdefault; then
3580         TM_MULTILIB_CONFIG=lp64
3581       else
3582         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3583         for aarch64_multilib in ${aarch64_multilibs}; do
3584           case ${aarch64_multilib} in
3585             ilp32)
3586               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3587                             Upgrade the Assembler.])
3588               ;;
3589             *)
3590               ;;
3591           esac
3592         done
3593       fi
3594     fi
3595     ;;
3597   # All TARGET_ABI_OSF targets.
3598   alpha*-*-linux* | alpha*-*-*bsd*)
3599     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3600         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3601 [       .set nomacro
3602         .text
3603         extbl   $3, $2, $3      !lituse_bytoff!1
3604         ldq     $2, a($29)      !literal!1
3605         ldq     $4, b($29)      !literal!2
3606         ldq_u   $3, 0($2)       !lituse_base!1
3607         ldq     $27, f($29)     !literal!5
3608         jsr     $26, ($27), f   !lituse_jsr!5
3609         ldah    $29, 0($26)     !gpdisp!3
3610         lda     $0, c($29)      !gprel
3611         ldah    $1, d($29)      !gprelhigh
3612         lda     $1, d($1)       !gprellow
3613         lda     $29, 0($29)     !gpdisp!3],,
3614     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3615   [Define if your assembler supports explicit relocations.])])
3616     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3617         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3618 [       .set nomacro
3619         .text
3620         ldq     $27, a($29)     !literal!1
3621         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3622     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3623   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3624     ;;
3626   cris-*-*)
3627     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3628       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3629       [-no-mul-bug-abort], [.text],,
3630       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3631                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3632     ;;
3634   sparc*-*-*)
3635     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3636       [.register %g2, #scratch],,
3637       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3638                 [Define if your assembler supports .register.])])
3640     gcc_GAS_CHECK_FEATURE([@%:@nobits], gcc_cv_as_sparc_nobits,,,
3641       [.section "nobits",#alloc,#write,#nobits
3642        .section "progbits",#alloc,#write,#progbits])
3643     AC_DEFINE_UNQUOTED(HAVE_AS_SPARC_NOBITS,
3644       [`if test $gcc_cv_as_sparc_nobits = yes; then echo 1; else echo 0; fi`],
3645       [Define to 1 if your assembler supports #nobits, 0 otherwise.])
3647     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3648       [-relax], [.text],,
3649       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3650                 [Define if your assembler supports -relax option.])])
3652     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3653       gcc_cv_as_sparc_gotdata_op,,
3654       [-K PIC],
3655 [.text
3656 .align 4
3657 foo:
3658         nop
3659 bar:
3660         sethi %gdop_hix22(foo), %g1
3661         xor    %g1, %gdop_lox10(foo), %g1
3662         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3663       [if test x$gcc_cv_ld != x \
3664        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3665          if test x$gcc_cv_objdump != x; then
3666            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3667               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3668                gcc_cv_as_sparc_gotdata_op=no
3669            else
3670                gcc_cv_as_sparc_gotdata_op=yes
3671            fi
3672          fi
3673        fi
3674        rm -f conftest],
3675       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3676                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3678     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3679       gcc_cv_as_sparc_ua_pcrel,,
3680       [-K PIC],
3681 [.text
3682 foo:
3683         nop
3684 .data
3685 .align 4
3686 .byte 0
3687 .uaword %r_disp32(foo)],
3688       [if test x$gcc_cv_ld != x \
3689        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3690          gcc_cv_as_sparc_ua_pcrel=yes
3691        fi
3692        rm -f conftest],
3693       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3694                 [Define if your assembler and linker support unaligned PC relative relocs.])
3696       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3697         gcc_cv_as_sparc_ua_pcrel_hidden,,
3698         [-K PIC],
3699 [.data
3700 .align 4
3701 .byte 0x31
3702 .uaword %r_disp32(foo)
3703 .byte 0x32, 0x33, 0x34
3704 .global foo
3705 .hidden foo
3706 foo:
3707 .skip 4],
3708         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3709          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3710          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3711             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3712             if $gcc_cv_objdump -R conftest 2> /dev/null \
3713                | grep 'DISP32' > /dev/null 2>&1; then
3714                 :
3715             else
3716                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3717             fi
3718          fi
3719          rm -f conftest],
3720          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3721                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3722     ]) # unaligned pcrel relocs
3724     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3725       gcc_cv_as_sparc_offsetable_lo10,,
3726       [-xarch=v9],
3727 [.text
3728         or %g1, %lo(ab) + 12, %g1
3729         or %g1, %lo(ab + 12), %g1],
3730       [if test x$gcc_cv_objdump != x \
3731        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3732           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3733          gcc_cv_as_sparc_offsetable_lo10=yes
3734        fi],
3735        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3736                  [Define if your assembler supports offsetable %lo().])])
3738     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3739       gcc_cv_as_sparc_fmaf,,
3740       [-xarch=v9d],
3741       [.text
3742        .register %g2, #scratch
3743        .register %g3, #scratch
3744        .align 4
3745        fmaddd %f0, %f2, %f4, %f6
3746        addxccc %g1, %g2, %g3
3747        fsrl32 %f2, %f4, %f8
3748        fnaddd %f10, %f12, %f14],,
3749       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3750                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3752     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3753       gcc_cv_as_sparc_sparc4,,
3754       [-xarch=sparc4],
3755       [.text
3756        .register %g2, #scratch
3757        .register %g3, #scratch
3758        .align 4
3759        cxbe %g2, %g3, 1f
3760 1:     cwbneg %g2, %g3, 1f
3761 1:     sha1
3762        md5
3763        aes_kexpand0 %f4, %f6, %f8
3764        des_round %f38, %f40, %f42, %f44
3765        camellia_f %f54, %f56, %f58, %f60
3766        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3767       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3768                 [Define if your assembler supports SPARC4 instructions.])])
3770     gcc_GAS_CHECK_FEATURE([LEON instructions],
3771       gcc_cv_as_sparc_leon,,
3772       [-Aleon],
3773       [.text
3774        .register %g2, #scratch
3775        .register %g3, #scratch
3776        .align 4
3777        smac %g2, %g3, %g1
3778        umac %g2, %g3, %g1
3779        cas [[%g2]], %g3, %g1],,
3780       [AC_DEFINE(HAVE_AS_LEON, 1,
3781                 [Define if your assembler supports LEON instructions.])])
3782     ;;
3784 changequote(,)dnl
3785   i[34567]86-*-* | x86_64-*-*)
3786 changequote([,])dnl
3787     case $target_os in
3788       cygwin*)
3789         # Full C++ conformance when using a shared libstdc++-v3 requires some
3790         # support from the Cygwin DLL, which in more recent versions exports
3791         # wrappers to aid in interposing and redirecting operators new, delete,
3792         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3793         # are configuring for a version of Cygwin that exports the wrappers.
3794         if test x$host = x$target && test x$host_cpu = xi686; then
3795           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3796         else
3797           # Can't check presence of libc functions during cross-compile, so
3798           # we just have to assume we're building for an up-to-date target.
3799           gcc_ac_cygwin_dll_wrappers=yes
3800         fi
3801         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3802           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3803           [Define if you want to generate code by default that assumes that the
3804            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3805     esac
3806     case $target_os in
3807       cygwin* | pe | mingw32* | interix*)
3808         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3809         # definition is used unconditionally to initialise the default state of
3810         # the target option variable that governs usage of the feature.
3811         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3812          [2,19,52],,[.comm foo,1,32])
3813         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3814           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3815           [Define if your assembler supports specifying the alignment
3816            of objects allocated using the GAS .comm command.])
3817         # Used for DWARF 2 in PE
3818         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3819           gcc_cv_as_ix86_pe_secrel32,
3820           [2,15,91],,
3821 [.text
3822 foo:    nop
3823 .data
3824         .secrel32 foo],
3825           [if test x$gcc_cv_ld != x \
3826            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3827              gcc_cv_as_ix86_pe_secrel32=yes
3828            fi
3829            rm -f conftest],
3830           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3831             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3832         # Test if the assembler supports the extended form of the .section
3833         # directive that specifies section alignment.  LTO support uses this,
3834         # but normally only after installation, so we warn but don't fail the
3835         # configure if LTO is enabled but the assembler does not support it.
3836         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3837           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3838         if test x$gcc_cv_as_section_has_align != xyes; then
3839           case ",$enable_languages," in
3840             *,lto,*)
3841               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3842               ;;
3843           esac
3844         fi
3845         # Test if the assembler supports the section flag 'e' for specifying
3846         # an excluded section.
3847         gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3848           [2,22,51],,
3849 [.section foo1,"e"
3850 .byte 0,0,0,0])
3851         AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3852           [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3853           [Define if your assembler supports specifying the section flag e.])
3854         ;;
3855     esac
3857     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3858        gcc_cv_as_ix86_filds,,,
3859        [filds mem; fists mem],,
3860        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3861          [Define if your assembler uses filds and fists mnemonics.])])
3863     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3864        gcc_cv_as_ix86_fildq,,,
3865        [fildq mem; fistpq mem],,
3866        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3867          [Define if your assembler uses fildq and fistq mnemonics.])])
3869     gcc_GAS_CHECK_FEATURE([cmov syntax],
3870       gcc_cv_as_ix86_cmov_sun_syntax,,,
3871       [cmovl.l %edx, %eax],,
3872       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3873         [Define if your assembler supports the Sun syntax for cmov.])])
3875     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3876       gcc_cv_as_ix86_ffreep,,,
3877       [ffreep %st(1)],,
3878       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3879         [Define if your assembler supports the ffreep mnemonic.])])
3881     gcc_GAS_CHECK_FEATURE([.quad directive],
3882       gcc_cv_as_ix86_quad,,,
3883       [.quad 0],,
3884       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3885         [Define if your assembler supports the .quad directive.])])
3887     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3888       gcc_cv_as_ix86_sahf,,,
3889       [.code64
3890        sahf],,
3891       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3892         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3894     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
3895       gcc_cv_as_ix86_interunit_movq,,,
3896       [.code64
3897        movq %mm0, %rax
3898        movq %rax, %xmm0])
3899     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
3900       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
3901       [Define if your assembler supports interunit movq mnemonic.])
3903     gcc_GAS_CHECK_FEATURE([hle prefixes],
3904       gcc_cv_as_ix86_hle,,,
3905       [lock xacquire cmpxchg %esi, (%ecx)],,
3906       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3907         [Define if your assembler supports HLE prefixes.])])
3909     gcc_GAS_CHECK_FEATURE([swap suffix],
3910       gcc_cv_as_ix86_swap,,,
3911       [movl.s %esp, %ebp],,
3912       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3913         [Define if your assembler supports the swap suffix.])])
3915     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3916       gcc_cv_as_ix86_diff_sect_delta,,,
3917       [.section .rodata
3918 .L1:
3919         .long .L2-.L1
3920         .long .L3-.L1
3921         .text
3922 .L3:    nop
3923 .L2:    nop],,
3924       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3925         [Define if your assembler supports the subtraction of symbols in different sections.])])
3927     # These two are used unconditionally by i386.[ch]; it is to be defined
3928     # to 1 if the feature is present, 0 otherwise.
3929     as_ix86_gotoff_in_data_opt=
3930     if test x$gas = xyes; then
3931       as_ix86_gotoff_in_data_opt="--32"
3932     fi
3933     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3934       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
3935       [$as_ix86_gotoff_in_data_opt],
3936 [       .text
3937 .L0:
3938         nop
3939         .data
3940         .long .L0@GOTOFF])
3941     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3942       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3943       [Define true if the assembler supports '.long foo@GOTOFF'.])
3945     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3946         gcc_cv_as_ix86_rep_lock_prefix,,,
3947         [rep movsl
3948          rep ret
3949          rep nop
3950          rep bsf %ecx, %eax
3951          rep bsr %ecx, %eax
3952          lock addl %edi, (%eax,%esi)
3953          lock orl $0, (%esp)],,
3954         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3955           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3957     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
3958         gcc_cv_as_ix86_ud2,,,
3959         [ud2],,
3960       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
3961         [Define if your assembler supports the 'ud2' mnemonic.])])
3963     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3964         gcc_cv_as_ix86_tlsgdplt,,,
3965         [call    tls_gd@tlsgdplt],
3966         [if test x$gcc_cv_ld != x \
3967          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3968            gcc_cv_as_ix86_tlsgdplt=yes
3969          fi
3970          rm -f conftest],
3971       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3972         [Define if your assembler and linker support @tlsgdplt.])])
3974     conftest_s='
3975         .section .tdata,"aw'$tls_section_flag'",@progbits
3976 tls_ld:
3977         .section .text,"ax",@progbits
3978          call    tls_ld@tlsldmplt'
3979     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3980         gcc_cv_as_ix86_tlsldmplt,,,
3981         [$conftest_s],
3982         [if test x$gcc_cv_ld != x \
3983          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3984            gcc_cv_as_ix86_tlsldmplt=yes
3985          fi
3986          rm -f conftest])
3987     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
3988       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
3989       [Define to 1 if your assembler and linker support @tlsldmplt.])
3991     # Enforce 32-bit output with gas and gld.
3992     if test x$gas = xyes; then
3993       as_ix86_tls_ldm_opt="--32"
3994     fi
3995     if echo "$ld_ver" | grep GNU > /dev/null; then
3996       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
3997         ld_ix86_tls_ldm_opt="-melf_i386_sol2"
3998       else
3999         ld_ix86_tls_ldm_opt="-melf_i386"
4000       fi
4001     fi
4002     conftest_s='
4003         .section .text,"ax",@progbits
4004         .globl  _start
4005         .type   _start, @function
4006 _start:      
4007         leal    value@tlsldm(%ebx), %eax
4008         call    ___tls_get_addr@plt
4010         .section .tdata,"aw'$tls_section_flag'",@progbits
4011         .type   value, @object
4012 value:'
4013     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4014         gcc_cv_as_ix86_tlsldm,,
4015         [$as_ix86_tls_ldm_opt],
4016         [$conftest_s],
4017         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4018             && $gcc_cv_ld $ld_ix86_tls_ldm_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4019            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4020               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4021              gcc_cv_as_ix86_tlsldm=yes
4022            fi
4023          fi
4024          rm -f conftest])
4025     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4026       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4027       [Define to 1 if your assembler and linker support @tlsldm.])
4029     ;;
4031   ia64*-*-*)
4032     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4033         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4034 [       .text
4035         addl r15 = @ltoffx(x#), gp
4036         ;;
4037         ld8.mov r16 = [[r15]], x#],,
4038     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4039           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4041     ;;
4043   powerpc*-*-*)
4044     case $target in
4045       *-*-aix*) conftest_s='    .machine "pwr5"
4046         .csect .text[[PR]]
4047         mfcr 3,128';;
4048       *-*-darwin*)
4049         gcc_GAS_CHECK_FEATURE([.machine directive support],
4050           gcc_cv_as_machine_directive,,,
4051           [     .machine ppc7400])
4052         if test x$gcc_cv_as_machine_directive != xyes; then
4053           echo "*** This target requires an assembler supporting \".machine\"" >&2
4054           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4055           test x$build = x$target && exit 1
4056         fi
4057         conftest_s='    .text
4058         mfcr r3,128';;
4059       *) conftest_s='   .machine power4
4060         .text
4061         mfcr 3,128';;
4062     esac
4064     gcc_GAS_CHECK_FEATURE([mfcr field support],
4065       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4066       [$conftest_s],,
4067       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4068           [Define if your assembler supports mfcr field.])])
4070     case $target in
4071       *-*-aix*) conftest_s='    .machine "pwr5"
4072         .csect .text[[PR]]
4073         popcntb 3,3';;
4074       *) conftest_s='   .machine power5
4075         .text
4076         popcntb 3,3';;
4077     esac
4079     gcc_GAS_CHECK_FEATURE([popcntb support],
4080       gcc_cv_as_powerpc_popcntb, [2,17,0],,
4081       [$conftest_s],,
4082       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4083           [Define if your assembler supports popcntb field.])])
4085     case $target in
4086       *-*-aix*) conftest_s='    .machine "pwr5x"
4087         .csect .text[[PR]]
4088         frin 1,1';;
4089       *) conftest_s='   .machine power5
4090         .text
4091         frin 1,1';;
4092     esac
4094     gcc_GAS_CHECK_FEATURE([fp round support],
4095       gcc_cv_as_powerpc_fprnd, [2,17,0],,
4096       [$conftest_s],,
4097       [AC_DEFINE(HAVE_AS_FPRND, 1,
4098           [Define if your assembler supports fprnd.])])
4100     case $target in
4101       *-*-aix*) conftest_s='    .machine "pwr6"
4102         .csect .text[[PR]]
4103         mffgpr 1,3';;
4104       *) conftest_s='   .machine power6
4105         .text
4106         mffgpr 1,3';;
4107     esac
4109     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4110       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4111       [$conftest_s],,
4112       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4113           [Define if your assembler supports mffgpr and mftgpr.])])
4115     case $target in
4116       *-*-aix*) conftest_s='    .csect .text[[PR]]
4117 LCF..0:
4118         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4119       *-*-darwin*)
4120         conftest_s='    .text
4121 LCF0:
4122         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4123       *) conftest_s='   .text
4124 .LCF0:
4125         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4126     esac
4128     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4129       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4130       [$conftest_s],,
4131       [AC_DEFINE(HAVE_AS_REL16, 1,
4132           [Define if your assembler supports R_PPC_REL16 relocs.])])
4134     case $target in
4135       *-*-aix*) conftest_s='    .machine "pwr6"
4136         .csect .text[[PR]]
4137         cmpb 3,4,5';;
4138       *) conftest_s='   .machine power6
4139         .text
4140         cmpb 3,4,5';;
4141     esac
4143     gcc_GAS_CHECK_FEATURE([compare bytes support],
4144       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4145       [$conftest_s],,
4146       [AC_DEFINE(HAVE_AS_CMPB, 1,
4147           [Define if your assembler supports cmpb.])])
4149     case $target in
4150       *-*-aix*) conftest_s='    .machine "pwr6"
4151         .csect .text[[PR]]
4152         dadd 1,2,3';;
4153       *) conftest_s='   .machine power6
4154         .text
4155         dadd 1,2,3';;
4156     esac
4158     gcc_GAS_CHECK_FEATURE([decimal float support],
4159       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4160       [$conftest_s],,
4161       [AC_DEFINE(HAVE_AS_DFP, 1,
4162           [Define if your assembler supports DFP instructions.])])
4164     case $target in
4165       *-*-aix*) conftest_s='    .machine "pwr7"
4166         .csect .text[[PR]]
4167         lxvd2x 1,2,3';;
4168       *) conftest_s='   .machine power7
4169         .text
4170         lxvd2x 1,2,3';;
4171     esac
4173     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4174       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4175       [$conftest_s],,
4176       [AC_DEFINE(HAVE_AS_VSX, 1,
4177           [Define if your assembler supports VSX instructions.])])
4179     case $target in
4180       *-*-aix*) conftest_s='    .machine "pwr7"
4181         .csect .text[[PR]]
4182         popcntd 3,3';;
4183       *) conftest_s='   .machine power7
4184         .text
4185         popcntd 3,3';;
4186     esac
4188     gcc_GAS_CHECK_FEATURE([popcntd support],
4189       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4190       [$conftest_s],,
4191       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4192           [Define if your assembler supports POPCNTD instructions.])])
4194     case $target in
4195       *-*-aix*) conftest_s='    .machine "pwr8"
4196         .csect .text[[PR]]';;
4197       *) conftest_s='   .machine power8
4198         .text';;
4199     esac
4201     gcc_GAS_CHECK_FEATURE([power8 support],
4202       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4203       [$conftest_s],,
4204       [AC_DEFINE(HAVE_AS_POWER8, 1,
4205           [Define if your assembler supports POWER8 instructions.])])
4207     case $target in
4208       *-*-aix*) conftest_s='    .csect .text[[PR]]
4209         lwsync';;
4210       *) conftest_s='   .text
4211         lwsync';;
4212     esac
4214     gcc_GAS_CHECK_FEATURE([lwsync support],
4215       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4216       [$conftest_s],,
4217       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4218           [Define if your assembler supports LWSYNC instructions.])])
4220     case $target in
4221       *-*-aix*) conftest_s='    .machine "476"
4222         .csect .text[[PR]]
4223         dci 0';;
4224       *) conftest_s='   .machine "476"
4225         .text
4226         dci 0';;
4227     esac
4229     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4230       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4231       [$conftest_s],,
4232       [AC_DEFINE(HAVE_AS_DCI, 1,
4233           [Define if your assembler supports the DCI/ICI instructions.])])
4235     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4236       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4237       [.gnu_attribute 4,1],,
4238       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4239           [Define if your assembler supports .gnu_attribute.])])
4241     gcc_GAS_CHECK_FEATURE([tls marker support],
4242       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4243       [ bl __tls_get_addr(x@tlsgd)],,
4244       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4245           [Define if your assembler supports arg info for __tls_get_addr.])])
4247     case $target in
4248       *-*-aix*)
4249         gcc_GAS_CHECK_FEATURE([.ref support],
4250           gcc_cv_as_aix_ref, [2,21,0],,
4251           [     .csect stuff[[rw]]
4252              stuff:
4253                 .long 1
4254                 .extern sym
4255                 .ref sym
4256           ],,
4257           [AC_DEFINE(HAVE_AS_REF, 1,
4258             [Define if your assembler supports .ref])])
4259         ;;
4260     esac
4261     ;;
4263   mips*-*-*)
4264     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4265       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4266 [       lw $4,%gp_rel(foo)($4)],,
4267       [if test x$target_cpu_default = x
4268        then target_cpu_default=MASK_EXPLICIT_RELOCS
4269        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4270        fi])
4271     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4272       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4273       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4274                  [Define if the assembler understands -mno-shared.])])
4276     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4277       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4278       [.gnu_attribute 4,1],,
4279       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4280           [Define if your assembler supports .gnu_attribute.])])
4282     gcc_GAS_CHECK_FEATURE([.micromips support],
4283       gcc_cv_as_micromips_support,,[--fatal-warnings],
4284       [.set micromips],,
4285       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4286           [Define if your assembler supports the .set micromips directive])])
4288     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4289       gcc_cv_as_mips_dtprelword, [2,18,0],,
4290       [.section .tdata,"awT",@progbits
4292         .word 2
4293         .text
4294         .dtprelword x+0x8000],,
4295       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4296           [Define if your assembler supports .dtprelword.])])
4298     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4299       gcc_cv_as_mips_dspr1_mult,,,
4300 [       .set    mips32r2
4301         .set    nodspr2
4302         .set    dsp
4303         madd    $ac3,$4,$5
4304         maddu   $ac3,$4,$5
4305         msub    $ac3,$4,$5
4306         msubu   $ac3,$4,$5
4307         mult    $ac3,$4,$5
4308         multu   $ac3,$4,$5],,
4309       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4310           [Define if your assembler supports DSPR1 mult.])])
4312     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4313     gcc_cv_as_ld_jalr_reloc=no
4314     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4315       if test $in_tree_ld = yes ; then
4316         if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
4317            && test $in_tree_ld_is_elf = yes; then
4318           gcc_cv_as_ld_jalr_reloc=yes
4319         fi
4320       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4321         echo '  .ent x' > conftest.s
4322         echo 'x:        ld $2,%got_disp(y)($3)' >> conftest.s
4323         echo '  ld $25,%call16(y)($28)' >> conftest.s
4324         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4325         echo '1:        jalr $25' >> conftest.s
4326         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4327         echo '1:        jalr $25' >> conftest.s
4328         echo '  .end x' >> conftest.s
4329         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4330            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4331           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4332              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4333             gcc_cv_as_ld_jalr_reloc=yes
4334           fi
4335         fi
4336         rm -f conftest.*
4337       fi
4338     fi
4339     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4340       if test x$target_cpu_default = x; then
4341         target_cpu_default=MASK_RELAX_PIC_CALLS
4342       else
4343         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4344       fi
4345     fi
4346     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4348     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4349       [gcc_cv_ld_mips_personality_relaxation],
4350       [gcc_cv_ld_mips_personality_relaxation=no
4351        if test $in_tree_ld = yes ; then
4352          if test "$gcc_cv_gld_major_version" -eq 2 \
4353                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4354                  -o "$gcc_cv_gld_major_version" -gt 2; then
4355            gcc_cv_ld_mips_personality_relaxation=yes
4356          fi
4357        elif test x$gcc_cv_as != x \
4358                  -a x$gcc_cv_ld != x \
4359                  -a x$gcc_cv_readelf != x ; then
4360          cat > conftest.s <<EOF
4361         .cfi_startproc
4362         .cfi_personality 0x80,indirect_ptr
4363         .ent test
4364 test:
4365         nop
4366         .end test
4367         .cfi_endproc
4369         .section .data,"aw",@progbits
4370 indirect_ptr:
4371         .dc.a personality
4373          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4374             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4375            if $gcc_cv_readelf -d conftest 2>&1 \
4376               | grep TEXTREL > /dev/null 2>&1; then
4377              :
4378            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4379                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4380              :
4381            else
4382              gcc_cv_ld_mips_personality_relaxation=yes
4383            fi
4384          fi
4385        fi
4386        rm -f conftest.s conftest.o conftest])
4387     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4388             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4389       [Define if your linker can relax absolute .eh_frame personality
4390 pointers into PC-relative form.])
4391     fi
4393     gcc_GAS_CHECK_FEATURE([-mnan= support],
4394       gcc_cv_as_mips_nan,,
4395       [-mnan=2008],,,
4396       [AC_DEFINE(HAVE_AS_NAN, 1,
4397                  [Define if the assembler understands -mnan=.])])
4398     if test x$gcc_cv_as_mips_nan = xno \
4399        && test x$with_nan != x; then
4400       AC_MSG_ERROR(
4401         [Requesting --with-nan= requires assembler support for -mnan=])
4402     fi
4403     ;;
4404 esac
4406 # Mips and HP-UX need the GNU assembler.
4407 # Linux on IA64 might be able to use the Intel assembler.
4409 case "$target" in
4410   mips*-*-* | *-*-hpux* )
4411     if test x$gas_flag = xyes \
4412        || test x"$host" != x"$build" \
4413        || test ! -x "$gcc_cv_as" \
4414        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4415       :
4416     else
4417       echo "*** This configuration requires the GNU assembler" >&2
4418       exit 1
4419     fi
4420     ;;
4421 esac
4423 # ??? Not all targets support dwarf2 debug_line, even within a version
4424 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4425 # info to the output file.  So, as supported targets are added to gas 2.11,
4426 # add some instruction here to (also) show we expect this might work.
4427 # ??? Once 2.11 is released, probably need to add first known working
4428 # version to the per-target configury.
4429 case "$cpu_type" in
4430   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4431   | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4432   | xstormy16 | xtensa)
4433     insn="nop"
4434     ;;
4435   ia64 | s390)
4436     insn="nop 0"
4437     ;;
4438   mmix)
4439     insn="swym 0"
4440     ;;
4441 esac
4442 if test x"$insn" != x; then
4443  conftest_s="\
4444         .file 1 \"conftest.s\"
4445         .loc 1 3 0
4446         $insn"
4447  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4448   gcc_cv_as_dwarf2_debug_line,
4449   [elf,2,11,0],, [$conftest_s],
4450   [if test x$gcc_cv_objdump != x \
4451    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4452       | grep debug_line > /dev/null 2>&1; then
4453      gcc_cv_as_dwarf2_debug_line=yes
4454    fi])
4456 # The .debug_line file table must be in the exact order that
4457 # we specified the files, since these indices are also used
4458 # by DW_AT_decl_file.  Approximate this test by testing if
4459 # the assembler bitches if the same index is assigned twice.
4460  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4461   gcc_cv_as_dwarf2_file_buggy,,,
4462 [       .file 1 "foo.s"
4463         .file 1 "bar.s"])
4465  if test $gcc_cv_as_dwarf2_debug_line = yes \
4466  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4467         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4468   [Define if your assembler supports dwarf2 .file/.loc directives,
4469    and preserves file table indices exactly as given.])
4470  fi
4472  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4473   gcc_cv_as_gdwarf2_flag,
4474   [elf,2,11,0], [--gdwarf2], [$insn],,
4475   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4476 [Define if your assembler supports the --gdwarf2 option.])])
4478  gcc_GAS_CHECK_FEATURE([--gstabs option],
4479   gcc_cv_as_gstabs_flag,
4480   [elf,2,11,0], [--gstabs], [$insn],,
4481   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4482 [Define if your assembler supports the --gstabs option.])])
4484  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4485   gcc_cv_as_debug_prefix_map_flag,
4486   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4487   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4488 [Define if your assembler supports the --debug-prefix-map option.])])
4491 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4492  ,,
4493 [.lcomm bar,4,16],,
4494 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4495   [Define if your assembler supports .lcomm with an alignment field.])])
4497 if test x$with_sysroot = x && test x$host = x$target \
4498    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4499    && test "$prefix" != "NONE"; then
4500   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4501 [Define to PREFIX/include if cpp should also search that directory.])
4504 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4505   if test "x$with_headers" != x; then
4506     target_header_dir=$with_headers
4507   elif test "x$with_sysroot" = x; then
4508     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
4509   elif test "x$with_build_sysroot" != "x"; then
4510     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4511   elif test "x$with_sysroot" = xyes; then
4512     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4513   else
4514     target_header_dir="${with_sysroot}${native_system_header_dir}"
4515   fi
4516 else
4517   target_header_dir=${native_system_header_dir}
4520 # Determine the version of glibc, if any, used on the target.
4521 AC_MSG_CHECKING([for target glibc version])
4522 AC_ARG_WITH([glibc-version],
4523   [AS_HELP_STRING([--with-glibc-version=M.N],
4524     [assume GCC used with glibc version M.N or later])], [
4525 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4526   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4527   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4528 else
4529   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4530 fi], [
4531 glibc_version_major=0
4532 glibc_version_minor=0
4533 [if test -f $target_header_dir/features.h \
4534   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4535   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4536   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4537   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4538 fi]])
4539 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4541 AC_ARG_ENABLE(gnu-unique-object,
4542  [AS_HELP_STRING([--enable-gnu-unique-object],
4543    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4544  [case $enable_gnu_unique_object in
4545     yes | no) ;;
4546     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4547 Valid choices are 'yes' and 'no'.]) ;;
4548   esac],
4549  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4550    [elf,2,19,52],,
4551    [.type foo, '$target_type_format_char'gnu_unique_object],,
4552 # We need to unquote above to to use the definition from config.gcc.
4553 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4554    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4555    )])
4556 if test x$enable_gnu_unique_object = xyes; then
4557   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4558    [Define if your assembler supports @gnu_unique_object.])
4561 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4562  [gcc_cv_as_line_zero],
4563  [gcc_cv_as_line_zero=no
4564   if test $in_tree_gas = yes; then
4565     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4566   elif test "x$gcc_cv_as" != x; then
4567     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4568     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4569        test "x`cat conftest.out`" = x
4570     then
4571       gcc_cv_as_line_zero=yes
4572     else
4573       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4574       cat conftest.s >&AS_MESSAGE_LOG_FD
4575       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4576       cat conftest.out >&AS_MESSAGE_LOG_FD
4577     fi
4578     rm -f conftest.o conftest.s conftest.out
4579   fi])
4580 if test "x$gcc_cv_as_line_zero" = xyes; then
4581   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4582 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4585 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4586 gcc_cv_ld_eh_frame_hdr=no
4587 if test $in_tree_ld = yes ; then
4588   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \
4589      && test $in_tree_ld_is_elf = yes; then
4590     gcc_cv_ld_eh_frame_hdr=yes
4591   fi
4592 elif test x$gcc_cv_ld != x; then
4593   if echo "$ld_ver" | grep GNU > /dev/null; then
4594     # Check if linker supports --eh-frame-hdr option
4595     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4596       gcc_cv_ld_eh_frame_hdr=yes
4597     fi
4598   else
4599     case "$target" in
4600       *-*-solaris2*)
4601         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4602         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4603           gcc_cv_ld_eh_frame_hdr=yes
4604         fi
4605         ;;
4606     esac
4607   fi
4609 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4610 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4611         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4612 [Define if your linker supports .eh_frame_hdr.])
4614 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4616 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4617 gcc_cv_ld_eh_frame_ciev3=no
4618 if test $in_tree_ld = yes ; then
4619   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
4620      && test $in_tree_ld_is_elf = yes; then
4621     gcc_cv_ld_eh_frame_ciev3=yes
4622   fi
4623 elif test x$gcc_cv_ld != x; then
4624   if echo "$ld_ver" | grep GNU > /dev/null; then
4625     gcc_cv_ld_eh_frame_ciev3=yes
4626     if test 0"$ld_date" -lt 20040513; then
4627       if test -n "$ld_date"; then
4628         # If there was date string, but was earlier than 2004-05-13, fail
4629         gcc_cv_ld_eh_frame_ciev3=no
4630       elif test "$ld_vers_major" -lt 2; then
4631         gcc_cv_ld_eh_frame_ciev3=no
4632       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4633         gcc_cv_ld_eh_frame_ciev3=no
4634       fi
4635     fi
4636   else
4637     case "$target" in
4638       *-*-solaris2*)
4639         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4640         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4641           gcc_cv_ld_eh_frame_ciev3=yes
4642         fi
4643         ;;
4644     esac
4645   fi
4647 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4648   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4649   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4650 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4652 AC_MSG_CHECKING(linker position independent executable support)
4653 gcc_cv_ld_pie=no
4654 if test $in_tree_ld = yes ; then
4655   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 \
4656      && test $in_tree_ld_is_elf = yes; then
4657     gcc_cv_ld_pie=yes
4658   fi
4659 elif test x$gcc_cv_ld != x; then
4660         # Check if linker supports -pie option
4661         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4662                 gcc_cv_ld_pie=yes
4663         fi
4665 if test x"$gcc_cv_ld_pie" = xyes; then
4666         AC_DEFINE(HAVE_LD_PIE, 1,
4667 [Define if your linker supports -pie option.])
4669 AC_MSG_RESULT($gcc_cv_ld_pie)
4671 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4672 gcc_cv_ld_eh_gc_sections=no
4673 if test $in_tree_ld = yes ; then
4674   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
4675      && test $in_tree_ld_is_elf = yes; then
4676     gcc_cv_ld_eh_gc_sections=yes
4677   fi
4678 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4679   cat > conftest.s <<EOF
4680         .section        .text
4681 .globl _start
4682         .type _start, @function
4683 _start:
4684         .long foo
4685         .size _start, .-_start
4686         .section        .text.foo,"ax",@progbits
4687         .type foo, @function
4688 foo:
4689         .long 0
4690         .size foo, .-foo
4691         .section        .gcc_except_table.foo,"a",@progbits
4692 .L0:
4693         .long 0
4694         .section        .eh_frame,"a",@progbits
4695         .long .L0
4697   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4698     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4699          | grep "gc-sections option ignored" > /dev/null; then
4700       gcc_cv_ld_eh_gc_sections=no
4701     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4702          | grep gcc_except_table > /dev/null; then
4703       gcc_cv_ld_eh_gc_sections=yes
4704       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4705       if test x$gcc_cv_as_comdat_group != xyes; then
4706         gcc_cv_ld_eh_gc_sections=no
4707         cat > conftest.s <<EOF
4708         .section        .text
4709 .globl _start
4710         .type _start, @function
4711 _start:
4712         .long foo
4713         .size _start, .-_start
4714         .section        .gnu.linkonce.t.foo,"ax",@progbits
4715         .type foo, @function
4716 foo:
4717         .long 0
4718         .size foo, .-foo
4719         .section        .gcc_except_table.foo,"a",@progbits
4720 .L0:
4721         .long 0
4722         .section        .eh_frame,"a",@progbits
4723         .long .L0
4725         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4726           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4727                | grep "gc-sections option ignored" > /dev/null; then
4728             gcc_cv_ld_eh_gc_sections=no
4729           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4730                | grep gcc_except_table > /dev/null; then
4731             gcc_cv_ld_eh_gc_sections=yes
4732           fi
4733         fi
4734       fi
4735     fi
4736   fi
4737   rm -f conftest.s conftest.o conftest
4739 case "$target" in
4740   hppa*-*-linux*)
4741     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4742     gcc_cv_ld_eh_gc_sections=no
4743     ;;
4744 esac
4745 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4746         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4747   [Define if your linker supports garbage collection of
4748    sections in presence of EH frames.])
4750 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4752 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4753 gcc_cv_ld_eh_gc_sections_bug=no
4754 if test $in_tree_ld = yes ; then
4755   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
4756      && test $in_tree_ld_is_elf = yes; then
4757     gcc_cv_ld_eh_gc_sections_bug=yes
4758   fi
4759 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
4760   gcc_cv_ld_eh_gc_sections_bug=yes
4761   cat > conftest.s <<EOF
4762         .section        .text
4763 .globl _start
4764         .type _start, @function
4765 _start:
4766         .long foo
4767         .size _start, .-_start
4768         .section        .text.startup.foo,"ax",@progbits
4769         .type foo, @function
4770 foo:
4771         .long 0
4772         .size foo, .-foo
4773         .section        .gcc_except_table.foo,"a",@progbits
4774 .L0:
4775         .long 0
4776         .section        .eh_frame,"a",@progbits
4777         .long .L0
4779   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4780     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4781          | grep "gc-sections option ignored" > /dev/null; then
4782       :
4783     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4784          | grep gcc_except_table > /dev/null; then
4785       gcc_cv_ld_eh_gc_sections_bug=no
4786     fi
4787   fi
4788   rm -f conftest.s conftest.o conftest
4790 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4791         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4792   [Define if your linker has buggy garbage collection of
4793    sections support when .text.startup.foo like sections are used.])
4795 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4797 # --------
4798 # UNSORTED
4799 # --------
4801 AC_CACHE_CHECK(linker --as-needed support,
4802 gcc_cv_ld_as_needed,
4803 [gcc_cv_ld_as_needed=no
4804 gcc_cv_ld_as_needed_option='--as-needed'
4805 gcc_cv_ld_no_as_needed_option='--no-as-needed'
4806 if test $in_tree_ld = yes ; then
4807   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
4808      && test $in_tree_ld_is_elf = yes; then
4809     gcc_cv_ld_as_needed=yes
4810   fi
4811 elif test x$gcc_cv_ld != x; then
4812         # Check if linker supports --as-needed and --no-as-needed options
4813         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4814                 gcc_cv_ld_as_needed=yes
4815         else
4816           case "$target" in
4817             # Solaris 2 ld always supports -z ignore/-z record.
4818             *-*-solaris2*)
4819               gcc_cv_ld_as_needed=yes
4820               gcc_cv_ld_as_needed_option="-z ignore"
4821               gcc_cv_ld_no_as_needed_option="-z record"
4822               ;;
4823           esac
4824         fi
4826 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
4827 # dl_iterate_phdr, i.e. since Solaris 11.
4828 case "$target" in
4829   *-*-solaris2.1[[1-9]]*)
4830     case "$target" in
4831     i?86-*-* | x86_64-*-*)
4832       if echo "$ld_ver" | grep GNU > /dev/null; then
4833         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
4834         gcc_cv_ld_as_needed=no
4835       fi
4836       ;;
4837     esac
4838     ;;
4839   *-*-solaris2*)
4840     gcc_cv_ld_as_needed=no
4841     ;;
4842 esac
4844 if test x"$gcc_cv_ld_as_needed" = xyes; then
4845         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4846 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
4847         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
4848 [Define to the linker option to ignore unused dependencies.])
4849         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
4850 [Define to the linker option to keep unused dependencies.])
4853 case "$target:$tm_file" in
4854   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4855   case "$target" in
4856      *le-*-linux*)
4857      emul_name="-melf64lppc"
4858       ;;
4859      *-*-linux*)
4860      emul_name="-melf64ppc"
4861       ;;
4862      *-*-freebsd*)
4863      emul_name="-melf64ppc_fbsd"
4864       ;;
4865   esac
4866     AC_CACHE_CHECK(linker support for omitting dot symbols,
4867     gcc_cv_ld_no_dot_syms,
4868     [gcc_cv_ld_no_dot_syms=no
4869     if test x"$ld_is_gold" = xyes; then
4870       gcc_cv_ld_no_dot_syms=yes
4871     elif test $in_tree_ld = yes ; then
4872       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
4873         gcc_cv_ld_no_dot_syms=yes
4874       fi
4875     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4876       cat > conftest1.s <<EOF
4877         .text
4878         bl .foo
4880       cat > conftest2.s <<EOF
4881         .section ".opd","aw"
4882         .align 3
4883         .globl foo
4884         .type foo,@function
4885 foo:
4886         .quad .LEfoo,.TOC.@tocbase,0
4887         .text
4888 .LEfoo:
4889         blr
4890         .size foo,.-.LEfoo
4892       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4893          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4894          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4895         gcc_cv_ld_no_dot_syms=yes
4896       fi
4897       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4898     fi
4899     ])
4900     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4901       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4902     [Define if your PowerPC64 linker only needs function descriptor syms.])
4903     fi
4905     AC_CACHE_CHECK(linker large toc support,
4906     gcc_cv_ld_large_toc,
4907     [gcc_cv_ld_large_toc=no
4908     if test x"$ld_is_gold" = xyes; then
4909       gcc_cv_ld_large_toc=yes
4910     elif test $in_tree_ld = yes ; then
4911       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
4912         gcc_cv_ld_large_toc=yes
4913       fi
4914     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4915       cat > conftest.s <<EOF
4916         .section ".tbss","awT",@nobits
4917         .align 3
4918 ie0:    .space 8
4919         .global _start
4920         .text
4921 _start:
4922         addis 9,13,ie0@got@tprel@ha
4923         ld 9,ie0@got@tprel@l(9)
4925       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4926          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4927         gcc_cv_ld_large_toc=yes
4928       fi
4929       rm -f conftest conftest.o conftest.s
4930     fi
4931     ])
4932     if test x"$gcc_cv_ld_large_toc" = xyes; then
4933       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4934     [Define if your PowerPC64 linker supports a large TOC.])
4935     fi
4936     ;;
4937 esac
4939 case "$target" in
4940   *-*-aix*)
4941     AC_CACHE_CHECK(linker large toc support,
4942     gcc_cv_ld_large_toc,
4943     [gcc_cv_ld_large_toc=no
4944     if test x$gcc_cv_as != x ; then
4945       cat > conftest.s <<EOF
4946         .toc
4947 LC..1:
4948         .tc a[[TC]],a[[RW]]
4949         .extern a[[RW]]
4950         .csect .text[[PR]]
4951 .largetoctest:
4952         addis 9,LC..1@u(2)
4953         ld 3,LC..1@l(9)
4955       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
4956         gcc_cv_ld_large_toc=yes
4957       fi
4958       rm -f conftest conftest.o conftest.s
4959     fi
4960     ])
4961     if test x"$gcc_cv_ld_large_toc" = xyes; then
4962       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4963     [Define if your PowerPC64 linker supports a large TOC.])
4964     fi
4965     ;;
4966 esac
4968 AC_CACHE_CHECK(linker --build-id support,
4969   gcc_cv_ld_buildid,
4970   [gcc_cv_ld_buildid=no
4971   if test $in_tree_ld = yes ; then
4972     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4973        "$gcc_cv_gld_minor_version" -ge 18 -o \
4974        "$gcc_cv_gld_major_version" -gt 2 \
4975        && test $in_tree_ld_is_elf = yes; then
4976       gcc_cv_ld_buildid=yes
4977     fi
4978   elif test x$gcc_cv_ld != x; then
4979     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4980       gcc_cv_ld_buildid=yes
4981     fi
4982   fi])
4983 if test x"$gcc_cv_ld_buildid" = xyes; then
4984   AC_DEFINE(HAVE_LD_BUILDID, 1,
4985   [Define if your linker supports --build-id.])
4988 AC_ARG_ENABLE(linker-build-id,
4989 [AS_HELP_STRING([--enable-linker-build-id],
4990                 [compiler will always pass --build-id to linker])],
4992 enable_linker_build_id=no)
4994 if test x"$enable_linker_build_id" = xyes; then
4995   if test x"$gcc_cv_ld_buildid" = xyes; then
4996     AC_DEFINE(ENABLE_LD_BUILDID, 1,
4997     [Define if gcc should always pass --build-id to linker.])
4998   else
4999     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5000   fi
5003 # In binutils 2.21, GNU ld gained support for new emulations fully
5004 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5005 AC_CACHE_CHECK(linker *_sol2 emulation support,
5006   gcc_cv_ld_sol2_emulation,
5007   [gcc_cv_ld_sol2_emulation=no
5008   if test $in_tree_ld = yes ; then
5009     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5010        "$gcc_cv_gld_minor_version" -ge 21 -o \
5011        "$gcc_cv_gld_major_version" -gt 2 \
5012        && test $in_tree_ld_is_elf = yes; then
5013       gcc_cv_ld_sol2_emulation=yes
5014     fi
5015   elif test x$gcc_cv_ld != x; then
5016     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5017        grep _sol2 > /dev/null; then
5018       gcc_cv_ld_sol2_emulation=yes
5019     fi
5020   fi])
5021 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5022   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5023   [Define if your linker supports the *_sol2 emulations.])
5026 AC_CACHE_CHECK(linker --sysroot support,
5027   gcc_cv_ld_sysroot,
5028   [gcc_cv_ld_sysroot=no
5029   if test $in_tree_ld = yes ; then
5030       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 ; then
5031         gcc_cv_ld_sysroot=yes
5032       fi
5033   elif test x$gcc_cv_ld != x; then 
5034     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5035       gcc_cv_ld_sysroot=yes
5036     fi
5037   fi])
5038 if test x"$gcc_cv_ld_sysroot" = xyes; then
5039   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5040   [Define if your linker supports --sysroot.])
5041 fi        
5043 # Test for stack protector support in target C library.
5044 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5045       gcc_cv_libc_provides_ssp,
5046       [gcc_cv_libc_provides_ssp=no
5047     case "$target" in
5048        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5049       # glibc 2.4 and later provides __stack_chk_fail and
5050       # either __stack_chk_guard, or TLS access to stack guard canary.
5051       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5052       [if test -f $target_header_dir/features.h \
5053          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5054             $target_header_dir/features.h > /dev/null; then
5055         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5056              $target_header_dir/features.h > /dev/null && \
5057              test -f $target_header_dir/bits/uClibc_config.h && \
5058              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5059              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5060           gcc_cv_libc_provides_ssp=yes
5061         fi
5062       # all versions of Bionic support stack protector
5063       elif test -f $target_header_dir/sys/cdefs.h \
5064         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5065            $target_header_dir/sys/cdefs.h > /dev/null; then
5066          gcc_cv_libc_provides_ssp=yes
5067       fi]])
5068         ;;
5069        *-*-gnu*)
5070          # Avoid complicated tests (see
5071          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5072          # simply assert that glibc does provide this, which is true for all
5073          # realistically usable GNU/Hurd configurations.
5074          gcc_cv_libc_provides_ssp=yes;;
5075        *-*-darwin* | *-*-freebsd*)
5076          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5077            [echo "no __stack_chk_fail on this target"])
5078         ;;
5079   *) gcc_cv_libc_provides_ssp=no ;;
5080     esac])
5082 if test x$gcc_cv_libc_provides_ssp = xyes; then
5083   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5084             [Define if your target C library provides stack protector support])
5087 # Test for <sys/sdt.h> on the target.
5088 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5089 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5090 have_sys_sdt_h=no
5091 if test -f $target_header_dir/sys/sdt.h; then
5092   have_sys_sdt_h=yes
5093   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5094             [Define if your target C library provides sys/sdt.h])
5096 AC_MSG_RESULT($have_sys_sdt_h)
5098 # Check if TFmode long double should be used by default or not.
5099 # Some glibc targets used DFmode long double, but with glibc 2.4
5100 # and later they can use TFmode.
5101 case "$target" in
5102   powerpc*-*-linux* | \
5103   sparc*-*-linux* | \
5104   s390*-*-linux* | \
5105   alpha*-*-linux*)
5106     AC_ARG_WITH(long-double-128,
5107       [AS_HELP_STRING([--with-long-double-128],
5108                       [use 128-bit long double by default])],
5109       gcc_cv_target_ldbl128="$with_long_double_128",
5110       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5111       [gcc_cv_target_ldbl128=no
5112       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5113         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5114       && gcc_cv_target_ldbl128=yes
5115       ]])])
5116     ;;
5117 esac
5118 if test x$gcc_cv_target_ldbl128 = xyes; then
5119   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5120             [Define if TFmode long double should be the default])
5123 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5124 gcc_cv_target_dl_iterate_phdr=unknown
5125 case "$target" in
5126   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5127   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5128   # libdl there, both complicating its use and breaking compatibility
5129   # between Solaris 10 updates.
5130   *-*-solaris2.1[[1-9]]*)
5131     # <link.h> needs both a dl_iterate_phdr declaration and support for
5132     # compilation with largefile support.
5133     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5134       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5135       gcc_cv_target_dl_iterate_phdr=yes
5136     else
5137       gcc_cv_target_dl_iterate_phdr=no
5138     fi
5139     ;;
5140 esac
5141 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5142 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5143    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5144 [Define if your target C library provides the `dl_iterate_phdr' function.])
5146 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5148 # We no longer support different GC mechanisms.  Emit an error if
5149 # the user configures with --with-gc.
5150 AC_ARG_WITH(gc,
5151 [AS_HELP_STRING([--with-gc={page,zone}],
5152                 [this option is not supported anymore.  It used to choose
5153                  the garbage collection mechanism to use with the compiler])],
5154 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5157 # Libraries to use on the host.  This will normally be set by the top
5158 # level Makefile.  Here we simply capture the value for our Makefile.
5159 if test -z "${HOST_LIBS+set}"; then
5160   HOST_LIBS=
5162 AC_SUBST(HOST_LIBS)
5164 # Use the system's zlib library.
5165 zlibdir=-L../zlib
5166 zlibinc="-I\$(srcdir)/../zlib"
5167 AC_ARG_WITH(system-zlib,
5168 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
5169 zlibdir=
5170 zlibinc=
5172 AC_SUBST(zlibdir)
5173 AC_SUBST(zlibinc)
5175 dnl Very limited version of automake's enable-maintainer-mode
5177 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5178   dnl maintainer-mode is disabled by default
5179   AC_ARG_ENABLE(maintainer-mode,
5180 [AS_HELP_STRING([--enable-maintainer-mode],
5181                 [enable make rules and dependencies not useful
5182                  (and sometimes confusing) to the casual installer])],
5183       maintainer_mode=$enableval,
5184       maintainer_mode=no)
5186 AC_MSG_RESULT($maintainer_mode)
5188 if test "$maintainer_mode" = "yes"; then
5189   MAINT=''
5190 else
5191   MAINT='#'
5193 AC_SUBST(MAINT)dnl
5195 dnl Whether to prevent multiple front-ends from linking at the same time
5197 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5198   AC_ARG_ENABLE(link-mutex,
5199 [AS_HELP_STRING([--enable-link-mutex],
5200                 [avoid linking multiple front-ends at once to avoid thrashing
5201                  on the build machine])],
5202       do_link_mutex=$enableval,
5203       do_link_mutex=no)
5204 AC_MSG_RESULT($do_link_mutex)
5206 if test "$do_link_mutex" = "yes"; then
5207    DO_LINK_MUTEX=true
5208 else
5209    DO_LINK_MUTEX=false
5211 AC_SUBST(DO_LINK_MUTEX)
5213 # --------------
5214 # Language hooks
5215 # --------------
5217 # Make empty files to contain the specs and options for each language.
5218 # Then add #include lines to for a compiler that has specs and/or options.
5220 subdirs=
5221 lang_opt_files=
5222 lang_specs_files=
5223 lang_tree_files=
5224 # These (without "all_") are set in each config-lang.in.
5225 # `language' must be a single word so is spelled singularly.
5226 all_languages=
5227 all_compilers=
5228 all_outputs='Makefile'
5229 # List of language makefile fragments.
5230 all_lang_makefrags=
5231 # Additional files for gengtype
5232 all_gtfiles="$target_gtfiles"
5234 # These are the languages that are set in --enable-languages,
5235 # and are available in the GCC tree.
5236 all_selected_languages=
5238 # Add the language fragments.
5239 # Languages are added via two mechanisms.  Some information must be
5240 # recorded in makefile variables, these are defined in config-lang.in.
5241 # We accumulate them and plug them into the main Makefile.
5242 # The other mechanism is a set of hooks for each of the main targets
5243 # like `clean', `install', etc.
5245 language_hooks="Make-hooks"
5247 for lang in ${srcdir}/*/config-lang.in
5249 changequote(,)dnl
5250         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5252         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5253         if test "x$lang_alias" = x
5254         then
5255               echo "$lang doesn't set \$language." 1>&2
5256               exit 1
5257         fi
5258         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5259         subdirs="$subdirs $subdir"
5261         # $gcc_subdir is where the gcc integration files are to be found
5262         # for a language, both for internal compiler purposes (compiler
5263         # sources implementing front-end to GCC tree converters), and for
5264         # build infrastructure purposes (Make-lang.in, etc.)
5265         #
5266         # This will be <subdir> (relative to $srcdir) if a line like 
5267         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5268         # is found in <langdir>/config-lang.in, and will remain <langdir>
5269         # otherwise.
5270         #
5271         # Except for the language alias (fetched above), the regular
5272         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5273         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5274         # only this and the language alias.
5276         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5277         if [ "$gcc_subdir" = "" ]; then
5278            gcc_subdir="$subdir"
5279         fi
5281         case ",$enable_languages," in
5282         *,$lang_alias,*)
5283             all_selected_languages="$all_selected_languages $lang_alias"
5284             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5285                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5286             fi
5287             ;;
5288         esac
5289 changequote([,])dnl
5291         language=
5292         boot_language=
5293         compilers=
5294         outputs=
5295         gtfiles=
5296         subdir_requires=
5297         . ${srcdir}/$gcc_subdir/config-lang.in
5298         if test "x$language" = x
5299         then
5300                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5301                 exit 1
5302         fi
5304         ok=:
5305         case ",$enable_languages," in
5306                 *,$lang_alias,*) ;;
5307                 *)
5308                         for i in $subdir_requires; do
5309                                 test -f "${srcdir}/$i/config-lang.in" && continue
5310                                 ok=false
5311                                 break
5312                         done
5313                 ;;
5314         esac
5315         $ok || continue
5317         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5318         if test -f $srcdir/$gcc_subdir/lang.opt; then
5319             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5320             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5321         fi
5322         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5323             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5324         fi
5325         all_languages="$all_languages $language"
5326         all_compilers="$all_compilers $compilers"
5327         all_outputs="$all_outputs $outputs"
5328         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5329         case ",$enable_languages," in
5330                 *,lto,*)
5331                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5332                     enable_lto=yes
5333                     AC_SUBST(enable_lto)
5334                     ;;
5335                 *) ;;
5336         esac
5337 done
5339 check_languages=
5340 for language in $all_selected_languages
5342         check_languages="$check_languages check-$language"
5343 done
5345 # We link each language in with a set of hooks, reached indirectly via
5346 # lang.${target}.  Only do so for selected languages.
5348 rm -f Make-hooks
5349 touch Make-hooks
5350 target_list="all.cross start.encap rest.encap tags \
5351         install-common install-man install-info install-pdf install-html dvi \
5352         pdf html uninstall info man srcextra srcman srcinfo \
5353         mostlyclean clean distclean maintainer-clean install-plugin"
5355 for t in $target_list
5357         x=
5358         for lang in $all_selected_languages
5359         do
5360                 x="$x $lang.$t"
5361         done
5362         echo "lang.$t: $x" >> Make-hooks
5363 done
5365 # --------
5366 # Option include files
5367 # --------
5369 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5370 option_includes="option-includes.mk"
5371 AC_SUBST_FILE(option_includes)
5373 # --------
5374 # UNSORTED
5375 # --------
5377 # Create .gdbinit.
5379 echo "dir ." > .gdbinit
5380 echo "dir ${srcdir}" >> .gdbinit
5381 if test x$gdb_needs_out_file_path = xyes
5382 then
5383         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5385 if test "x$subdirs" != x; then
5386         for s in $subdirs
5387         do
5388                 echo "dir ${srcdir}/$s" >> .gdbinit
5389         done
5391 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5392 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5394 # Put a breakpoint on __asan_report_error to help with debugging buffer
5395 # overflow.
5396 case "$CFLAGS" in
5397 *-fsanitize=address*)
5398   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5399   ;;
5400 esac
5402 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5403 AC_SUBST(gcc_tooldir)
5404 AC_SUBST(dollar)
5406 # Find a directory in which to install a shared libgcc.
5408 AC_ARG_ENABLE(version-specific-runtime-libs,
5409 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5410                 [specify that runtime libraries should be
5411                  installed in a compiler-specific directory])])
5413 # Substitute configuration variables
5414 AC_SUBST(subdirs)
5415 AC_SUBST(srcdir)
5416 AC_SUBST(all_compilers)
5417 AC_SUBST(all_gtfiles)
5418 AC_SUBST(all_lang_makefrags)
5419 AC_SUBST(all_languages)
5420 AC_SUBST(all_selected_languages)
5421 AC_SUBST(build_exeext)
5422 AC_SUBST(build_install_headers_dir)
5423 AC_SUBST(build_xm_file_list)
5424 AC_SUBST(build_xm_include_list)
5425 AC_SUBST(build_xm_defines)
5426 AC_SUBST(build_file_translate)
5427 AC_SUBST(check_languages)
5428 AC_SUBST(cpp_install_dir)
5429 AC_SUBST(xmake_file)
5430 AC_SUBST(tmake_file)
5431 AC_SUBST(TM_ENDIAN_CONFIG)
5432 AC_SUBST(TM_MULTILIB_CONFIG)
5433 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5434 AC_SUBST(extra_gcc_objs)
5435 AC_SUBST(user_headers_inc_next_pre)
5436 AC_SUBST(user_headers_inc_next_post)
5437 AC_SUBST(extra_headers_list)
5438 AC_SUBST(extra_objs)
5439 AC_SUBST(extra_programs)
5440 AC_SUBST(float_h_file)
5441 AC_SUBST(gcc_config_arguments)
5442 AC_SUBST(gcc_gxx_include_dir)
5443 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5444 AC_SUBST(host_exeext)
5445 AC_SUBST(host_xm_file_list)
5446 AC_SUBST(host_xm_include_list)
5447 AC_SUBST(host_xm_defines)
5448 AC_SUBST(out_host_hook_obj)
5449 AC_SUBST(install)
5450 AC_SUBST(lang_opt_files)
5451 AC_SUBST(lang_specs_files)
5452 AC_SUBST(lang_tree_files)
5453 AC_SUBST(local_prefix)
5454 AC_SUBST(md_file)
5455 AC_SUBST(objc_boehm_gc)
5456 AC_SUBST(out_file)
5457 AC_SUBST(out_object_file)
5458 AC_SUBST(common_out_file)
5459 AC_SUBST(common_out_object_file)
5460 AC_SUBST(tm_file_list)
5461 AC_SUBST(tm_include_list)
5462 AC_SUBST(tm_defines)
5463 AC_SUBST(tm_p_file_list)
5464 AC_SUBST(tm_p_include_list)
5465 AC_SUBST(xm_file_list)
5466 AC_SUBST(xm_include_list)
5467 AC_SUBST(xm_defines)
5468 AC_SUBST(use_gcc_stdint)
5469 AC_SUBST(c_target_objs)
5470 AC_SUBST(cxx_target_objs)
5471 AC_SUBST(fortran_target_objs)
5472 AC_SUBST(target_cpu_default)
5474 AC_SUBST_FILE(language_hooks)
5476 # Echo link setup.
5477 if test x${build} = x${host} ; then
5478   if test x${host} = x${target} ; then
5479     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5480   else
5481     echo "Links are now set up to build a cross-compiler" 1>&2
5482     echo " from ${host} to ${target}." 1>&2
5483   fi
5484 else
5485   if test x${host} = x${target} ; then
5486     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5487     echo " for ${target}." 1>&2
5488   else
5489     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5490     echo " from ${host} to ${target}." 1>&2
5491   fi
5494 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5495 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5497 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5498 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5500 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5501 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5502 if test "x${CLOOGLIBS}" != "x" ; then 
5503    AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5506 # Check for plugin support
5507 AC_ARG_ENABLE(plugin,
5508 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5509 enable_plugin=$enableval,
5510 enable_plugin=yes; default_plugin=yes)
5512 pluginlibs=
5514 case "${host}" in
5515   *-*-darwin*)
5516     if test x$build = x$host; then
5517       export_sym_check="nm${exeext} -g"
5518     elif test x$host = x$target; then
5519       export_sym_check="$gcc_cv_nm -g"
5520     else
5521       export_sym_check=
5522     fi
5523   ;;
5524   *)
5525     if test x$build = x$host; then
5526       export_sym_check="objdump${exeext} -T"
5527     elif test x$host = x$target; then
5528       export_sym_check="$gcc_cv_objdump -T"
5529     else
5530       export_sym_check=
5531     fi
5532   ;;
5533 esac
5535 if test x"$enable_plugin" = x"yes"; then
5537   AC_MSG_CHECKING([for exported symbols])
5538   if test "x$export_sym_check" != x; then
5539     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5540     ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5541     if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5542       : # No need to use a flag
5543       AC_MSG_RESULT([yes])
5544     else
5545       AC_MSG_RESULT([yes])
5546       AC_MSG_CHECKING([for -rdynamic])
5547       ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5548       if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5549         plugin_rdynamic=yes
5550         pluginlibs="-rdynamic"
5551       else
5552         plugin_rdynamic=no
5553         enable_plugin=no
5554       fi
5555       AC_MSG_RESULT([$plugin_rdynamic])
5556     fi
5557   else
5558     AC_MSG_RESULT([unable to check])
5559   fi
5561   # Check -ldl
5562   saved_LIBS="$LIBS"
5563   AC_SEARCH_LIBS([dlopen], [dl])
5564   if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5565     pluginlibs="$pluginlibs -ldl"
5566   fi
5567   LIBS="$saved_LIBS"
5569   # Check that we can build shared objects with -fPIC -shared
5570   saved_LDFLAGS="$LDFLAGS"
5571   saved_CFLAGS="$CFLAGS"
5572   case "${host}" in
5573     *-*-darwin*)
5574       CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5575       CFLAGS="$CFLAGS -fPIC"
5576       LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5577     ;;
5578     *)
5579       CFLAGS="$CFLAGS -fPIC"
5580       LDFLAGS="$LDFLAGS -fPIC -shared"
5581     ;;
5582   esac
5583   AC_MSG_CHECKING([for -fPIC -shared])
5584   AC_TRY_LINK(
5585     [extern int X;],[return X == 0;],
5586     [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5587     [AC_MSG_RESULT([no]); have_pic_shared=no])
5588   if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5589     pluginlibs=
5590     enable_plugin=no
5591   fi
5592   LDFLAGS="$saved_LDFLAGS"
5593   CFLAGS="$saved_CFLAGS"
5595   # If plugin support had been requested but not available, fail.
5596   if test x"$enable_plugin" = x"no" ; then
5597     if test x"$default_plugin" != x"yes"; then
5598       AC_MSG_ERROR([
5599 Building GCC with plugin support requires a host that supports
5600 -fPIC, -shared, -ldl and -rdynamic.])
5601     fi
5602   fi
5605 AC_SUBST(pluginlibs)
5606 AC_SUBST(enable_plugin)
5607 if test x"$enable_plugin" = x"yes"; then
5608   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5612 # Enable --enable-host-shared
5613 AC_ARG_ENABLE(host-shared,
5614 [AS_HELP_STRING([--enable-host-shared],
5615                 [build host code as shared libraries])],
5616 [PICFLAG=-fPIC], [PICFLAG=])
5617 AC_SUBST(enable_host_shared)
5618 AC_SUBST(PICFLAG)
5621 AC_ARG_ENABLE(libquadmath-support,
5622 [AS_HELP_STRING([--disable-libquadmath-support],
5623   [disable libquadmath support for Fortran])],
5624 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5625 ENABLE_LIBQUADMATH_SUPPORT=yes)
5626 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5627   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5628             [Define to 1 to enable libquadmath support])
5632 # Specify what hash style to use by default.
5633 AC_ARG_WITH([linker-hash-style],
5634 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5635                 [specify the linker hash style])],
5636 [case x"$withval" in
5637    xsysv)
5638      LINKER_HASH_STYLE=sysv
5639      ;;
5640    xgnu)
5641      LINKER_HASH_STYLE=gnu
5642      ;;
5643    xboth)
5644      LINKER_HASH_STYLE=both
5645      ;;
5646    *)
5647      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5648      ;;
5649  esac],
5650 [LINKER_HASH_STYLE=''])
5651 if test x"${LINKER_HASH_STYLE}" != x; then
5652   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5653                                          [The linker hash style])
5656 # Configure the subdirectories
5657 # AC_CONFIG_SUBDIRS($subdirs)
5659 # Create the Makefile
5660 # and configure language subdirectories
5661 AC_CONFIG_FILES($all_outputs)
5663 AC_CONFIG_COMMANDS([default],
5665 case ${CONFIG_HEADERS} in
5666   *auto-host.h:config.in*)
5667   echo > cstamp-h ;;
5668 esac
5669 # Make sure all the subdirs exist.
5670 for d in $subdirs doc build common c-family
5672     test -d $d || mkdir $d
5673 done
5674 ], 
5675 [subdirs='$subdirs'])
5676 AC_OUTPUT