31370.cc: Skip this test on powerpc64-*-freebsd*.
[official-gcc.git] / gcc / configure.ac
blob30a73866538bd9016b8b1b1498ba114faad9cb6f
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
5 # 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
7 #This file is part of GCC.
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
12 #version.
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 #for more details.
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3.  If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
27 AC_PREREQ(2.64)
28 AC_INIT
29 AC_CONFIG_SRCDIR(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
32 gcc_version=`cat $srcdir/BASE-VER`
34 # Determine the host, build, and target systems
35 AC_CANONICAL_BUILD
36 AC_CANONICAL_HOST
37 AC_CANONICAL_TARGET
39 # Determine the noncanonical target name, for directory use.
40 ACX_NONCANONICAL_TARGET
42 # Determine the target- and build-specific subdirectories
43 GCC_TOPLEV_SUBDIRS
45 # Set program_transform_name
46 AC_ARG_PROGRAM
48 # Check for bogus environment variables.
49 # Test if LIBRARY_PATH contains the notation for the current directory
50 # since this would lead to problems installing/building glibc.
51 # LIBRARY_PATH contains the current directory if one of the following
52 # is true:
53 # - one of the terminals (":" and ";") is the first or last sign
54 # - two terminals occur directly after each other
55 # - the path contains an element with a dot in it
56 AC_MSG_CHECKING(LIBRARY_PATH variable)
57 changequote(,)dnl
58 case ${LIBRARY_PATH} in
59   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
60     library_path_setting="contains current directory"
61     ;;
62   *)
63     library_path_setting="ok"
64     ;;
65 esac
66 changequote([,])dnl
67 AC_MSG_RESULT($library_path_setting)
68 if test "$library_path_setting" != "ok"; then
69 AC_MSG_ERROR([
70 *** LIBRARY_PATH shouldn't contain the current directory when
71 *** building gcc. Please change the environment variable
72 *** and run configure again.])
75 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
76 # since this would lead to problems installing/building glibc.
77 # GCC_EXEC_PREFIX contains the current directory if one of the following
78 # is true:
79 # - one of the terminals (":" and ";") is the first or last sign
80 # - two terminals occur directly after each other
81 # - the path contains an element with a dot in it
82 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
83 changequote(,)dnl
84 case ${GCC_EXEC_PREFIX} in
85   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
86     gcc_exec_prefix_setting="contains current directory"
87     ;;
88   *)
89     gcc_exec_prefix_setting="ok"
90     ;;
91 esac
92 changequote([,])dnl
93 AC_MSG_RESULT($gcc_exec_prefix_setting)
94 if test "$gcc_exec_prefix_setting" != "ok"; then
95 AC_MSG_ERROR([
96 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
97 *** building gcc. Please change the environment variable
98 *** and run configure again.])
101 # -----------
102 # Directories
103 # -----------
105 # Specify the local prefix
106 local_prefix=
107 AC_ARG_WITH(local-prefix,
108 [AS_HELP_STRING([--with-local-prefix=DIR],
109                 [specifies directory to put local include])],
110 [case "${withval}" in
111 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112 no)     ;;
113 *)      local_prefix=$with_local_prefix ;;
114 esac])
116 # Default local prefix if it is empty
117 if test x$local_prefix = x; then
118         local_prefix=/usr/local
121 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
122 # passed in by the toplevel make and thus we'd get different behavior
123 # depending on where we built the sources.
124 gcc_gxx_include_dir=
125 # Specify the g++ header file directory
126 AC_ARG_WITH(gxx-include-dir,
127 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
128                 [specifies directory to put g++ header files])],
129 [case "${withval}" in
130 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131 no)     ;;
132 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
133 esac])
135 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
136 if test x${gcc_gxx_include_dir} = x; then
137   if test x${enable_version_specific_runtime_libs} = xyes; then
138     gcc_gxx_include_dir='${libsubdir}/include/c++'
139   else
140     libstdcxx_incdir='include/c++/$(version)'
141     if test x$host != x$target; then
142        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143     fi
144     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
145   fi
148 gcc_gxx_include_dir_add_sysroot=0
149 if test "${with_sysroot+set}" = set; then
150   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
151   if test "${gcc_gxx_without_sysroot}"; then
152     gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
153     gcc_gxx_include_dir_add_sysroot=1
154   fi
157 AC_ARG_WITH(cpp_install_dir,
158 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
159                 [install the user visible C preprocessor in DIR
160                  (relative to PREFIX) as well as PREFIX/bin])],
161 [if test x$withval = xyes; then
162   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
163 elif test x$withval != xno; then
164   cpp_install_dir=$withval
165 fi])
167 # We would like to our source tree to be readonly.  However when releases or
168 # pre-releases are generated, the flex/bison generated files as well as the 
169 # various formats of manuals need to be included along with the rest of the
170 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
171 # just that.
173 AC_MSG_CHECKING([whether to place generated files in the source directory])
174   dnl generated-files-in-srcdir is disabled by default
175   AC_ARG_ENABLE(generated-files-in-srcdir, 
176     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
177                     [put copies of generated files in source dir
178                      intended for creating source tarballs for users
179                      without texinfo bison or flex])],
180       generated_files_in_srcdir=$enableval,
181       generated_files_in_srcdir=no)
183 AC_MSG_RESULT($generated_files_in_srcdir)
185 if test "$generated_files_in_srcdir" = "yes"; then
186   GENINSRC=''
187 else
188   GENINSRC='#'
190 AC_SUBST(GENINSRC)
192 # -------------------
193 # Find default linker
194 # -------------------
196 # With GNU ld
197 AC_ARG_WITH(gnu-ld,
198 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
199 gnu_ld_flag="$with_gnu_ld",
200 gnu_ld_flag=no)
202 # With pre-defined ld
203 AC_ARG_WITH(ld,
204 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
205 DEFAULT_LINKER="$with_ld")
206 if test x"${DEFAULT_LINKER+set}" = x"set"; then
207   if test ! -x "$DEFAULT_LINKER"; then
208     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
209   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
210     gnu_ld_flag=yes
211   fi
212   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
213         [Define to enable the use of a default linker.])
216 gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
217 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
219 AC_MSG_CHECKING([whether a default linker was specified])
220 if test x"${DEFAULT_LINKER+set}" = x"set"; then
221   if test x"$gnu_ld_flag" = x"no"; then
222     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
223   else
224     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
225   fi
226 else
227   AC_MSG_RESULT(no)
230 # With demangler in GNU ld
231 AC_ARG_WITH(demangler-in-ld,
232 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
233 demangler_in_ld="$with_demangler_in_ld",
234 demangler_in_ld=yes)
236 # ----------------------
237 # Find default assembler
238 # ----------------------
240 # With GNU as
241 AC_ARG_WITH(gnu-as,
242 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
243 gas_flag="$with_gnu_as",
244 gas_flag=no)
246 AC_ARG_WITH(as,
247 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
248 DEFAULT_ASSEMBLER="$with_as")
249 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
250   if test ! -x "$DEFAULT_ASSEMBLER"; then
251     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
252   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
253     gas_flag=yes
254   fi
255   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
256         [Define to enable the use of a default assembler.])
259 gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi`
260 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.])
262 AC_MSG_CHECKING([whether a default assembler was specified])
263 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
264   if test x"$gas_flag" = x"no"; then
265     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
266   else
267     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
268   fi
269 else
270   AC_MSG_RESULT(no)
273 # ---------------
274 # Find C compiler
275 # ---------------
277 # If a non-executable a.out is present (e.g. created by GNU as above even if
278 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
279 # file, even when creating an executable, so an execution test fails.
280 # Remove possible default executable files to avoid this.
282 # FIXME: This really belongs into AC_PROG_CC and can be removed once
283 # Autoconf includes it.
284 rm -f a.out a.exe b.out
286 # Find the native compiler
287 AC_PROG_CC
288 AM_PROG_CC_C_O
289 AC_PROG_CXX
290 ACX_PROG_GNAT([-I"$srcdir"/ada])
292 # autoconf is lame and doesn't give us any substitution variable for this.
293 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
294   NO_MINUS_C_MINUS_O=yes
295 else
296   OUTPUT_OPTION='-o $@'
298 AC_SUBST(NO_MINUS_C_MINUS_O)
299 AC_SUBST(OUTPUT_OPTION)
301 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
302 # optimizations to be activated explicitly by the toplevel.
303 case "$CC" in
304   */prev-gcc/xgcc*) ;;
305   *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
306 esac
307 AC_SUBST(CFLAGS)
309 # Determine PICFLAG for target gnatlib.
310 GCC_PICFLAG_FOR_TARGET
311 AC_SUBST(PICFLAG_FOR_TARGET)
313 # -------------------------
314 # Check C compiler features
315 # -------------------------
317 AC_USE_SYSTEM_EXTENSIONS
318 AC_PROG_CPP
319 AC_C_INLINE
321 AC_SYS_LARGEFILE
323 # sizeof(char) is 1 by definition.
324 AC_CHECK_SIZEOF(void *)
325 AC_CHECK_SIZEOF(short)
326 AC_CHECK_SIZEOF(int)
327 AC_CHECK_SIZEOF(long)
328 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
329 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
330 GCC_STDINT_TYPES
332 # ---------------------
333 # Warnings and checking
334 # ---------------------
336 # Check $CC warning features (if it's GCC).
337 # We want to use -pedantic, but we don't want warnings about
338 # * 'long long'
339 # * variadic macros
340 # * overlong strings
341 # * C++11 narrowing conversions in { }
342 # So, we only use -pedantic if we can disable those warnings.
344 ACX_PROG_CC_WARNING_OPTS(
345         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual])), [loose_warn])
346 ACX_PROG_CC_WARNING_OPTS(
347         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
348         [c_loose_warn])
349 ACX_PROG_CC_WARNING_OPTS(
350         m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
351 ACX_PROG_CC_WARNING_OPTS(
352         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
353 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
354         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
355                        [-Wno-overlength-strings])), [strict_warn])
356 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
358 # The above macros do nothing if the compiler is not GCC.  However, the
359 # Makefile has more goo to add other flags, so these variables are used
360 # to enable warnings only for GCC.
361 warn_cflags=
362 warn_cxxflags=
363 if test "x$GCC" = "xyes"; then
364   warn_cflags='$(GCC_WARN_CFLAGS)'
365   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
367 AC_SUBST(warn_cflags)
368 AC_SUBST(warn_cxxflags)
370 # Disable exceptions and RTTI if building with g++
371 ACX_PROG_CC_WARNING_OPTS(
372         m4_quote(m4_do([-fno-exceptions -fno-rtti])), [noexception_flags])
373         
374 # Enable expensive internal checks
375 is_release=
376 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
377   is_release=yes
380 AC_ARG_ENABLE(checking,
381 [AS_HELP_STRING([[--enable-checking[=LIST]]],
382                 [enable expensive run-time checks.  With LIST,
383                  enable only specific categories of checks.
384                  Categories are: yes,no,all,none,release.
385                  Flags are: assert,df,fold,gc,gcac,gimple,misc,
386                  rtlflag,rtl,runtime,tree,valgrind,types])],
387 [ac_checking_flags="${enableval}"],[
388 # Determine the default checks.
389 if test x$is_release = x ; then
390   ac_checking_flags=yes
391 else
392   ac_checking_flags=release
393 fi])
394 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
395 for check in release $ac_checking_flags
397         case $check in
398         # these set all the flags to specific states
399         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
400                         ac_fold_checking= ; ac_gc_checking=1 ;
401                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
402                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
403                         ac_tree_checking=1 ; ac_valgrind_checking= ;
404                         ac_types_checking=1 ;;
405         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
406                         ac_fold_checking= ; ac_gc_checking= ;
407                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
408                         ac_rtlflag_checking= ; ac_runtime_checking= ;
409                         ac_tree_checking= ; ac_valgrind_checking= ;
410                         ac_types_checking= ;;
411         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
412                         ac_fold_checking=1 ; ac_gc_checking=1 ;
413                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
414                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
415                         ac_tree_checking=1 ; ac_valgrind_checking= ;
416                         ac_types_checking=1 ;;
417         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
418                         ac_fold_checking= ; ac_gc_checking= ;
419                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
420                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
421                         ac_tree_checking= ; ac_valgrind_checking= ;
422                         ac_types_checking= ;;
423         # these enable particular checks
424         assert)         ac_assert_checking=1 ;;
425         df)             ac_df_checking=1 ;;
426         fold)           ac_fold_checking=1 ;;
427         gc)             ac_gc_checking=1 ;;
428         gcac)           ac_gc_always_collect=1 ;;
429         gimple)         ac_gimple_checking=1 ;;
430         misc)           ac_checking=1 ;;
431         rtl)            ac_rtl_checking=1 ;;
432         rtlflag)        ac_rtlflag_checking=1 ;;
433         runtime)        ac_runtime_checking=1 ;;
434         tree)           ac_tree_checking=1 ;;
435         types)          ac_types_checking=1 ;;
436         valgrind)       ac_valgrind_checking=1 ;;
437         *)      AC_MSG_ERROR(unknown check category $check) ;;
438         esac
439 done
440 IFS="$ac_save_IFS"
442 nocommon_flag=""
443 if test x$ac_checking != x ; then
444   AC_DEFINE(ENABLE_CHECKING, 1,
445 [Define if you want more run-time sanity checks.  This one gets a grab
446    bag of miscellaneous but relatively cheap checks.])
447   nocommon_flag=-fno-common
449 AC_SUBST(nocommon_flag)
450 if test x$ac_df_checking != x ; then
451   AC_DEFINE(ENABLE_DF_CHECKING, 1,
452 [Define if you want more run-time sanity checks for dataflow.])
454 if test x$ac_assert_checking != x ; then
455   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
456 [Define if you want assertions enabled.  This is a cheap check.])
458 if test x$ac_gimple_checking != x ; then
459   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
460 [Define if you want operations on GIMPLE (the basic data structure of
461 the high-level optimizers) to be checked for dynamic type safety at
462 runtime.  This is moderately expensive.])
464 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
465 if test x$ac_runtime_checking != x ; then
466   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
467 [Define if you want runtime assertions enabled.  This is a cheap check.])
469 if test x$ac_tree_checking != x ; then
470   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
471 [Define if you want all operations on trees (the basic data
472    structure of the front ends) to be checked for dynamic type safety
473    at runtime.  This is moderately expensive.  The tree browser debugging
474    routines will also be enabled by this option.
475    ])
476   TREEBROWSER=tree-browser.o
478 if test x$ac_types_checking != x ; then
479   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
480 [Define if you want all gimple types to be verified after gimplifiation.
481    This is cheap.
482    ])
484 AC_SUBST(TREEBROWSER)
485 if test x$ac_rtl_checking != x ; then
486   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
487 [Define if you want all operations on RTL (the basic data structure
488    of the optimizer and back end) to be checked for dynamic type safety
489    at runtime.  This is quite expensive.])
491 if test x$ac_rtlflag_checking != x ; then
492   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
493 [Define if you want RTL flag accesses to be checked against the RTL
494    codes that are supported for each access macro.  This is relatively
495    cheap.])
497 if test x$ac_gc_checking != x ; then
498   AC_DEFINE(ENABLE_GC_CHECKING, 1,
499 [Define if you want the garbage collector to do object poisoning and
500    other memory allocation checks.  This is quite expensive.])
502 if test x$ac_gc_always_collect != x ; then
503   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
504 [Define if you want the garbage collector to operate in maximally
505    paranoid mode, validating the entire heap and collecting garbage at
506    every opportunity.  This is extremely expensive.])
508 if test x$ac_fold_checking != x ; then
509   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
510 [Define if you want fold checked that it never destructs its argument.
511    This is quite expensive.])
513 valgrind_path_defines=
514 valgrind_command=
516 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
517 dnl # an if statement.  This was the source of very frustrating bugs
518 dnl # in converting to autoconf 2.5x!
519 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
521 if test x$ac_valgrind_checking != x ; then
522   # It is certainly possible that there's valgrind but no valgrind.h.
523   # GCC relies on making annotations so we must have both.
524   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
525   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
526     [[#include <valgrind/memcheck.h>
527 #ifndef VALGRIND_DISCARD
528 #error VALGRIND_DISCARD not defined
529 #endif]])],
530   [gcc_cv_header_valgrind_memcheck_h=yes],
531   [gcc_cv_header_valgrind_memcheck_h=no])
532   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
533   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
534   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
535     [[#include <memcheck.h>
536 #ifndef VALGRIND_DISCARD
537 #error VALGRIND_DISCARD not defined
538 #endif]])],
539   [gcc_cv_header_memcheck_h=yes],
540   [gcc_cv_header_memcheck_h=no])
541   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
542   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
543         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
544   if test "x$valgrind_path" = "x" \
545     || (test $have_valgrind_h = no \
546         && test $gcc_cv_header_memcheck_h = no \
547         && test $gcc_cv_header_valgrind_memcheck_h = no); then
548         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
549   fi
550   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
551   valgrind_command="$valgrind_path -q"
552   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
553 [Define if you want to run subprograms and generated programs
554    through valgrind (a memory checker).  This is extremely expensive.])
555   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
556     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
557         [Define if valgrind's valgrind/memcheck.h header is installed.])
558   fi
559   if test $gcc_cv_header_memcheck_h = yes; then
560     AC_DEFINE(HAVE_MEMCHECK_H, 1,
561         [Define if valgrind's memcheck.h header is installed.])
562   fi
564 AC_SUBST(valgrind_path_defines)
565 AC_SUBST(valgrind_command)
567 # Enable code coverage collection
568 AC_ARG_ENABLE(coverage,
569 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
570                 [enable compiler's code coverage collection.
571                  Use to measure compiler performance and locate
572                  unused parts of the compiler. With LEVEL, specify
573                  optimization. Values are opt, noopt,
574                  default is noopt])],
575 [case "${enableval}" in
576   yes|noopt)
577     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
578     ;;
579   opt)
580     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
581     ;;
582   no)
583     # a.k.a. --disable-coverage
584     coverage_flags=""
585     ;;
586   *)
587     AC_MSG_ERROR(unknown coverage setting $enableval)
588     ;;
589 esac],
590 [coverage_flags=""])
591 AC_SUBST(coverage_flags)
593 AC_ARG_ENABLE(gather-detailed-mem-stats, 
594 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
595                 [enable detailed memory allocation stats gathering])], [],
596 [enable_gather_detailed_mem_stats=no])
597 if test x$enable_gather_detailed_mem_stats = xyes ; then
598   AC_DEFINE(GATHER_STATISTICS, 1,
599         [Define to enable detailed memory allocation stats gathering.])
602 # -------------------------------
603 # Miscenalleous configure options
604 # -------------------------------
606 # See if we are building gcc with C++.
607 AC_ARG_ENABLE(build-with-cxx,
608 [AS_HELP_STRING([--enable-build-with-cxx],
609                 [build with C++ compiler instead of C compiler])],
610 ENABLE_BUILD_WITH_CXX=$enableval,
611 ENABLE_BUILD_WITH_CXX=no)
612 AC_SUBST(ENABLE_BUILD_WITH_CXX)
613 if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
614   AC_DEFINE(ENABLE_BUILD_WITH_CXX, 1,
615             [Define if building with C++.])
618 # With stabs
619 AC_ARG_WITH(stabs,
620 [AS_HELP_STRING([--with-stabs],
621                 [arrange to use stabs instead of host debug format])],
622 stabs="$with_stabs",
623 stabs=no)
625 # Determine whether or not multilibs are enabled.
626 AC_ARG_ENABLE(multilib,
627 [AS_HELP_STRING([--enable-multilib],
628                 [enable library support for multiple ABIs])],
629 [], [enable_multilib=yes])
630 AC_SUBST(enable_multilib)
632 # Enable __cxa_atexit for C++.
633 AC_ARG_ENABLE(__cxa_atexit,
634 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
635 [], [])
637 # Enable C extension for decimal float if target supports it.
638 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
640 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
641 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
642 [Define to 1 to enable decimal float extension to C.])
644 # Use default_decimal_float for dependency.
645 enable_decimal_float=$default_decimal_float
647 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
648 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
649 [Define to 1 to specify that we are using the BID decimal floating
650 point format instead of DPD])
652 # Enable C extension for fixed-point arithmetic.
653 AC_ARG_ENABLE(fixed-point,
654 [AS_HELP_STRING([--enable-fixed-point],
655                 [enable fixed-point arithmetic extension to C])],
658   case $target in
659     arm*)
660       enable_fixed_point=yes
661       ;;
663     mips*-*-*)
664       enable_fixed_point=yes
665       ;;
666     *)
667       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
668       enable_fixed_point=no
669       ;;
670   esac
672 AC_SUBST(enable_fixed_point)
674 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
675 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
676 [Define to 1 to enable fixed-point arithmetic extension to C.])
678 # Enable threads
679 # Pass with no value to take the default
680 # Pass with a value to specify a thread package
681 AC_ARG_ENABLE(threads,
682 [AS_HELP_STRING([[--enable-threads[=LIB]]],
683                 [enable thread usage for target GCC,
684                  using LIB thread package])],,
685 [enable_threads=''])
687 AC_ARG_ENABLE(tls,
688 [AS_HELP_STRING([--enable-tls],
689                 [enable or disable generation of tls code
690                  overriding the assembler check for tls support])],
692   case $enable_tls in
693     yes | no) ;;
694     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
695 Valid choices are 'yes' and 'no'.]) ;;
696   esac
697 ], [enable_tls=''])
699 AC_ARG_ENABLE(objc-gc,
700 [AS_HELP_STRING([--enable-objc-gc],
701                 [enable the use of Boehm's garbage collector with
702                  the GNU Objective-C runtime])],
703 if test x$enable_objc_gc = xno; then
704         objc_boehm_gc=''
705 else
706         objc_boehm_gc=1
708 objc_boehm_gc='')
710 AC_ARG_WITH(dwarf2,
711 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
712 dwarf2="$with_dwarf2",
713 dwarf2=no)
715 AC_ARG_ENABLE(shared,
716 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
718   case $enable_shared in
719   yes | no) ;;
720   *)
721     enable_shared=no
722     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
723     for pkg in $enableval; do
724       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
725         enable_shared=yes
726       fi
727     done
728     IFS="$ac_save_ifs"
729     ;;
730   esac
731 ], [enable_shared=yes])
732 AC_SUBST(enable_shared)
734 AC_ARG_WITH([native-system-header-dir],
735   [  --with-native-system-header-dir=dir
736                           use dir as the directory to look for standard
737                           system header files in.  Defaults to /usr/include.],
739  case ${with_native_system_header_dir} in
740  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
741  /* | [[A-Za-z]]:[[\\/]]*) ;;
742  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
743  esac
744  configured_native_system_header_dir="${withval}"
745 ], [configured_native_system_header_dir=])
747 AC_ARG_WITH(build-sysroot, 
748   [AS_HELP_STRING([--with-build-sysroot=sysroot],
749                   [use sysroot as the system root during the build])],
750   [if test x"$withval" != x ; then
751      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
752    fi],
753   [SYSROOT_CFLAGS_FOR_TARGET=])
754 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
756 AC_ARG_WITH(sysroot,
757 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
758                 [search for usr/lib, usr/include, et al, within DIR])],
760  case ${with_sysroot} in
761  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
762  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
763  esac
764    
765  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
766  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
767         
768  if test "x$prefix" = xNONE; then
769   test_prefix=/usr/local
770  else
771   test_prefix=$prefix
772  fi
773  if test "x$exec_prefix" = xNONE; then
774   test_exec_prefix=$test_prefix
775  else
776   test_exec_prefix=$exec_prefix
777  fi
778  case ${TARGET_SYSTEM_ROOT} in
779  "${test_prefix}"|"${test_prefix}/"*|\
780  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
781  '${prefix}'|'${prefix}/'*|\
782  '${exec_prefix}'|'${exec_prefix}/'*)
783    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
784    TARGET_SYSTEM_ROOT_DEFINE="$t"
785    ;;
786  esac
787 ], [
788  TARGET_SYSTEM_ROOT=
789  TARGET_SYSTEM_ROOT_DEFINE=
790  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
792 AC_SUBST(TARGET_SYSTEM_ROOT)
793 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
794 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
796 AC_ARG_WITH(specs,
797   [AS_HELP_STRING([--with-specs=SPECS],
798                   [add SPECS to driver command-line processing])],
799   [CONFIGURE_SPECS=$withval],
800   [CONFIGURE_SPECS=]
802 AC_SUBST(CONFIGURE_SPECS)
804 ACX_PKGVERSION([GCC])
805 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
807 # Sanity check enable_languages in case someone does not run the toplevel
808 # configure # script.
809 AC_ARG_ENABLE(languages,
810 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
811 [case ,${enable_languages}, in
812        ,,|,yes,)
813                 # go safe -- we cannot be much sure without the toplevel
814                 # configure's
815                 # analysis of which target libs are present and usable
816                 enable_languages=c
817                 ;;
818          *,all,*)
819                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
820                 ;;
821         *,c,*)
822                 ;;
823         *)
824                 enable_languages=c,${enable_languages}
825                 ;;
826 esac],
827 [enable_languages=c])
829 AC_ARG_WITH(multilib-list,
830 [AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and x86-64 only)])],
832 with_multilib_list=default)
834 # -------------------------
835 # Checks for other programs
836 # -------------------------
838 AC_PROG_MAKE_SET
840 # Find some useful tools
841 AC_PROG_AWK
842 # We need awk to create options.c and options.h.
843 # Bail out if it's missing.
844 case ${AWK} in
845   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
846 esac
848 gcc_AC_PROG_LN_S
849 ACX_PROG_LN($LN_S)
850 AC_PROG_RANLIB
851 ranlib_flags=""
852 AC_SUBST(ranlib_flags)
853      
854 gcc_AC_PROG_INSTALL
856 # See if cmp has --ignore-initial.
857 gcc_AC_PROG_CMP_IGNORE_INITIAL
859 # See if we have the mktemp command.
860 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
862 # See if makeinfo has been installed and is modern enough
863 # that we can use it.
864 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
865   [GNU texinfo.* \([0-9][0-9.]*\)],
866   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
867 if test $gcc_cv_prog_makeinfo_modern = no; then
868   AC_MSG_WARN([
869 *** Makeinfo is missing or too old.
870 *** Info documentation will not be built.])
871   BUILD_INFO=
872 else
873   BUILD_INFO=info
875 AC_SUBST(BUILD_INFO)
877 # Is pod2man recent enough to regenerate manpages?
878 AC_MSG_CHECKING([for recent Pod::Man])
879 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
880   AC_MSG_RESULT(yes)
881   GENERATED_MANPAGES=generated-manpages
882 else
883   AC_MSG_RESULT(no)
884   GENERATED_MANPAGES=
886 AC_SUBST(GENERATED_MANPAGES)
888 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
890 # How about lex?
891 dnl Don't use AC_PROG_LEX; we insist on flex.
892 dnl LEXLIB is not useful in gcc.
893 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
895 # Bison?
896 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
898 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
899 # check for build == host before using them.
901 # NM
902 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
903   && test -d ../binutils ; then
904   NM='${objdir}/../binutils/nm-new'
905 else
906   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
909 # AR
910 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
911   && test -d ../binutils ; then
912   AR='${objdir}/../binutils/ar'
913 else
914   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
918 # --------------------
919 # Checks for C headers
920 # --------------------
922 # Need to reject headers which give warnings, so that the -Werror bootstrap
923 # works later. *sigh*  This needs to come before all header checks.
924 AC_PROG_CPP_WERROR
926 AC_HEADER_STDC
927 AC_HEADER_TIME
928 ACX_HEADER_STRING
929 AC_HEADER_SYS_WAIT
930 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
931                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
932                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
933                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
935 # Check for thread headers.
936 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
937 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
939 # These tests can't be done till we know if we have limits.h.
940 gcc_AC_C_CHAR_BIT
941 AC_C_BIGENDIAN
943 # ----------------------
944 # Checks for C++ headers
945 # ----------------------
947 dnl Autoconf will give an error in the configure script if there is no
948 dnl C++ preprocessor.  Hack to prevent that.
949 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
950 AC_PROG_CXXCPP
951 m4_popdef([AC_MSG_ERROR])[]dnl
953 AC_LANG_PUSH(C++)
955 AC_CHECK_HEADERS(unordered_map)
956 AC_CHECK_HEADERS(tr1/unordered_map)
957 AC_CHECK_HEADERS(ext/hash_map)
959 AC_LANG_POP(C++)
961 # --------
962 # UNSORTED
963 # --------
966 # These libraries may be used by collect2.
967 # We may need a special search path to get them linked.
968 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
969 [save_LIBS="$LIBS"
970 for libs in '' -lld -lmld \
971                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
972                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
974         LIBS="$libs"
975         AC_TRY_LINK_FUNC(ldopen,
976                 [gcc_cv_collect2_libs="$libs"; break])
977 done
978 LIBS="$save_LIBS"
979 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
980 case $gcc_cv_collect2_libs in
981         "none required")        ;;
982         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
983 esac
984 AC_SUBST(COLLECT2_LIBS)
986 # When building Ada code on Alpha, we need exc_resume which is usually in
987 # -lexc.  So test for it.
988 save_LIBS="$LIBS"
989 LIBS=
990 AC_SEARCH_LIBS(exc_resume, exc)
991 GNAT_LIBEXC="$LIBS"
992 LIBS="$save_LIBS"
993 AC_SUBST(GNAT_LIBEXC)
995 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
996 save_LIBS="$LIBS"
997 LIBS=
998 AC_SEARCH_LIBS(kstat_open, kstat)
999 EXTRA_GCC_LIBS="$LIBS"
1000 LIBS="$save_LIBS"
1001 AC_SUBST(EXTRA_GCC_LIBS)
1003 # Some systems put ldexp and frexp in libm instead of libc; assume
1004 # they're both in the same place.  jcf-dump needs them.
1005 save_LIBS="$LIBS"
1006 LIBS=
1007 AC_SEARCH_LIBS(ldexp, m)
1008 LDEXP_LIB="$LIBS"
1009 LIBS="$save_LIBS"
1010 AC_SUBST(LDEXP_LIB)
1012 # Use <inttypes.h> only if it exists,
1013 # doesn't clash with <sys/types.h>, and declares intmax_t.
1014 AC_MSG_CHECKING(for inttypes.h)
1015 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1016 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1017 [[#include <sys/types.h>
1018 #include <inttypes.h>]],
1019   [[intmax_t i = -1;]])],
1020   [gcc_cv_header_inttypes_h=yes],
1021   [gcc_cv_header_inttypes_h=no])])
1022 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1023 if test $gcc_cv_header_inttypes_h = yes; then
1024   AC_DEFINE(HAVE_INTTYPES_H, 1,
1025         [Define if you have a working <inttypes.h> header file.])
1028 dnl Disabled until we have a complete test for buggy enum bitfields.
1029 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1031 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1032   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1033   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1034   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1035   putchar_unlocked putc_unlocked)
1036 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1037         sysconf strsignal getrusage nl_langinfo \
1038         gettimeofday mbstowcs wcswidth mmap setlocale \
1039         gcc_UNLOCKED_FUNCS madvise)
1041 if test x$ac_cv_func_mbstowcs = xyes; then
1042   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1043 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1044 int main()
1046   mbstowcs(0, "", 0);
1047   return 0;
1048 }]])],
1049     [gcc_cv_func_mbstowcs_works=yes],
1050     [gcc_cv_func_mbstowcs_works=no],
1051     [gcc_cv_func_mbstowcs_works=yes])])
1052   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1053     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1054   [Define this macro if mbstowcs does not crash when its
1055    first argument is NULL.])
1056   fi
1059 AC_CHECK_TYPE(ssize_t, int)
1060 AC_CHECK_TYPE(caddr_t, char *)
1062 gcc_AC_FUNC_MMAP_BLACKLIST
1064 case "${host}" in
1065 *-*-*vms*)
1066   # Under VMS, vfork works very differently than on Unix. The standard test 
1067   # won't work, and it isn't easily adaptable. It makes more sense to
1068   # just force it.
1069   ac_cv_func_vfork_works=yes
1070   ;;
1071 esac
1072 AC_FUNC_FORK
1074 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1075 # iconv() prototype.
1076 AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1077   [AC_LANG_PUSH([C++])
1078    AM_ICONV
1079    AC_LANG_POP([C++])],
1080   [AM_ICONV])
1082 # Until we have in-tree GNU iconv:
1083 LIBICONV_DEP=
1084 AC_SUBST(LIBICONV_DEP)
1086 AM_LC_MESSAGES
1088 AM_LANGINFO_CODESET
1090 # We will need to find libiberty.h and ansidecl.h
1091 saved_CFLAGS="$CFLAGS"
1092 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1093 saved_CXXFLAGS="$CXXFLAGS"
1094 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
1095 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1096         strsignal strstr stpcpy strverscmp \
1097         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1098         free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1099 #include "ansidecl.h"
1100 #include "system.h"])
1102 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1103 #include "ansidecl.h"
1104 #include "system.h"
1105 #ifdef HAVE_SYS_RESOURCE_H
1106 #include <sys/resource.h>
1107 #endif
1110 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1111 #include "ansidecl.h"
1112 #include "system.h"
1113 #ifdef HAVE_SYS_RESOURCE_H
1114 #include <sys/resource.h>
1115 #endif
1116 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1117 [Define to `long' if <sys/resource.h> doesn't define.])])
1119 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1120 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1121 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1122 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1123 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1124 #include "ansidecl.h"
1125 #include "system.h"
1126 #ifdef HAVE_LDFCN_H
1127 #undef FREAD
1128 #undef FWRITE
1129 #include <ldfcn.h>
1130 #endif
1133 gcc_AC_CHECK_DECLS(times, , ,[
1134 #include "ansidecl.h"
1135 #include "system.h"
1136 #ifdef HAVE_SYS_TIMES_H
1137 #include <sys/times.h>
1138 #endif
1141 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1142 #include "ansidecl.h"
1143 #include "system.h"
1144 #include <signal.h>
1147 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1148 # prototype.
1149 AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1150   [AC_LANG_PUSH([C++])
1151    gcc_AC_CHECK_DECLS(madvise, , ,[
1152      #include "ansidecl.h"
1153      #include "system.h"
1154    ])
1155    AC_LANG_POP([C++])],
1156   [gcc_AC_CHECK_DECLS(madvise, , ,[
1157      #include "ansidecl.h"
1158      #include "system.h"
1159    ])
1162 # More time-related stuff.
1163 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1164 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1165 #include "ansidecl.h"
1166 #include "system.h"
1167 #ifdef HAVE_SYS_TIMES_H
1168 #include <sys/times.h>
1169 #endif
1170 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1171 if test $ac_cv_struct_tms = yes; then
1172   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1173   [Define if <sys/times.h> defines struct tms.])
1176 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1177 # revisit after autoconf 2.50.
1178 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1179 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1180 #include "ansidecl.h"
1181 #include "system.h"
1182 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1183 if test $gcc_cv_type_clock_t = yes; then
1184   AC_DEFINE(HAVE_CLOCK_T, 1,
1185   [Define if <time.h> defines clock_t.])
1188 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1189 CFLAGS="$saved_CFLAGS"
1190 CXXFLAGS="$saved_CXXFLAGS"
1192 # mkdir takes a single argument on some systems. 
1193 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1195 # File extensions
1196 manext='.1'
1197 objext='.o'
1198 AC_SUBST(manext)
1199 AC_SUBST(objext)
1201 # With Setjmp/Longjmp based exception handling.
1202 AC_ARG_ENABLE(sjlj-exceptions,
1203 [AS_HELP_STRING([--enable-sjlj-exceptions],
1204                 [arrange to use setjmp/longjmp exception handling])],
1205 [case $target in
1206   *-*-hpux10*)
1207     if test $enableval != yes; then
1208       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1209       enableval=yes
1210     fi
1211     ;;
1212 esac
1213 force_sjlj_exceptions=yes],
1214 [case $target in
1215   *-*-hpux10*)
1216     force_sjlj_exceptions=yes
1217     enableval=yes
1218     ;;
1219   *)
1220     force_sjlj_exceptions=no
1221     ;;
1222 esac])
1223 if test $force_sjlj_exceptions = yes; then
1224   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1225   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1226     [Define 0/1 to force the choice for exception handling model.])
1229 # --------------------------------------------------------
1230 # Build, host, and target specific configuration fragments
1231 # --------------------------------------------------------
1233 # Collect build-machine-specific information.
1234 . ${srcdir}/config.build
1236 # Collect host-machine-specific information.
1237 . ${srcdir}/config.host
1239 target_gtfiles=
1241 # Collect target-machine-specific information.
1242 . ${srcdir}/config.gcc
1244 extra_objs="${host_extra_objs} ${extra_objs}"
1245 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1247 # Default the target-machine variables that were not explicitly set.
1248 if test x"$tm_file" = x
1249 then tm_file=$cpu_type/$cpu_type.h; fi
1251 if test x"$extra_headers" = x
1252 then extra_headers=; fi
1254 if test x$md_file = x
1255 then md_file=$cpu_type/$cpu_type.md; fi
1257 if test x$out_file = x
1258 then out_file=$cpu_type/$cpu_type.c; fi
1260 if test x"$tmake_file" = x
1261 then tmake_file=$cpu_type/t-$cpu_type
1264 # Support --enable-initfini-array.
1265 if test x$enable_initfini_array != xno; then
1266   tm_file="${tm_file} initfini-array.h"
1269 if test x"$dwarf2" = xyes
1270 then tm_file="$tm_file tm-dwarf2.h"
1273 # Say what files are being used for the output code and MD file.
1274 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1275 echo "Using \`$srcdir/config/$md_file' as machine description file."
1277 # If any of the xm_file variables contain nonexistent files, warn
1278 # about them and drop them.
1281 for x in $build_xm_file; do
1282   if    test -f $srcdir/config/$x
1283   then      bx="$bx $x"
1284   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1285   fi
1286 done
1287 build_xm_file="$bx"
1290 for x in $host_xm_file; do
1291   if    test -f $srcdir/config/$x
1292   then      hx="$hx $x"
1293   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1294   fi
1295 done
1296 host_xm_file="$hx"
1299 for x in $xm_file; do
1300   if    test -f $srcdir/config/$x
1301   then      tx="$tx $x"
1302   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1303   fi
1304 done
1305 xm_file="$tx"
1307 count=a
1308 for f in $tm_file; do
1309         count=${count}x
1310 done
1311 if test $count = ax; then
1312         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1313 else
1314         echo "Using the following target machine macro files:"
1315         for f in $tm_file; do
1316                 echo "  $srcdir/config/$f"
1317         done
1320 if test x$need_64bit_hwint = xyes; then
1321         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1322 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1325 if test x$use_long_long_for_widest_fast_int = xyes; then
1326         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1327 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1328 efficiently supported by the host hardware.])
1331 count=a
1332 for f in $host_xm_file; do
1333         count=${count}x
1334 done
1335 if test $count = a; then
1336         :
1337 elif test $count = ax; then
1338         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1339 else
1340         echo "Using the following host machine macro files:"
1341         for f in $host_xm_file; do
1342                 echo "  $srcdir/config/$f"
1343         done
1345 echo "Using ${out_host_hook_obj} for host machine hooks."
1347 if test "$host_xm_file" != "$build_xm_file"; then
1348         count=a
1349         for f in $build_xm_file; do
1350                 count=${count}x
1351         done
1352         if test $count = a; then
1353                 :
1354         elif test $count = ax; then
1355                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1356         else
1357                 echo "Using the following build machine macro files:"
1358                 for f in $build_xm_file; do
1359                         echo "  $srcdir/config/$f"
1360                 done
1361         fi
1364 if test -n "$configured_native_system_header_dir"; then
1365   native_system_header_dir=$configured_native_system_header_dir
1367 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1368 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1370 case ${host} in
1371   powerpc*-*-darwin*)
1372     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1373       gcc_cv_mcontext_underscores,
1374       AC_COMPILE_IFELSE([
1375 #include <sys/cdefs.h>
1376 #include <sys/signal.h>
1377 #include <ucontext.h>
1378 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1380         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1381       if test $gcc_cv_mcontext_underscores = yes; then
1382         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1383           [mcontext_t fields start with __])
1384       fi
1385     ;;
1386 esac
1388 # ---------
1389 # Threading
1390 # ---------
1392 # Check if a valid thread package
1393 case ${enable_threads} in
1394   "" | no)
1395     # No threads
1396     target_thread_file='single'
1397     ;;
1398   yes)
1399     # default
1400     target_thread_file='single'
1401     ;;
1402   aix | dce | lynx | mipssde | posix | rtems | \
1403   single | tpf | vxworks | win32)
1404     target_thread_file=${enable_threads}
1405     ;;
1406   *)
1407     echo "${enable_threads} is an unknown thread package" 1>&2
1408     exit 1
1409     ;;
1410 esac
1412 if test x${thread_file} = x; then
1413   # No thread file set by target-specific clauses in config.gcc,
1414   # so use file chosen by default logic above
1415   thread_file=${target_thread_file}
1418 # --------
1419 # UNSORTED
1420 # --------
1422 use_cxa_atexit=no
1423 if test x$enable___cxa_atexit = xyes || \
1424    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1425   if test x$host = x$target; then
1426     case $host in
1427       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1428       # keyed to flag_use_cxa_atexit
1429       *-*-mingw32*)
1430         use_cxa_atexit=yes
1431         ;;
1432       *)
1433         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1434           [echo "__cxa_atexit can't be enabled on this target"])
1435         ;;
1436     esac
1437   else
1438     # We can't check for __cxa_atexit when building a cross, so assume
1439     # it is available 
1440     use_cxa_atexit=yes
1441   fi
1442   if test x$use_cxa_atexit = xyes; then
1443     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1444       [Define if you want to use __cxa_atexit, rather than atexit, to
1445       register C++ destructors for local statics and global objects.
1446       This is essential for fully standards-compliant handling of
1447       destructors, but requires __cxa_atexit in libc.])
1448   fi
1451 # Look for a file containing extra machine modes.
1452 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1453   extra_modes_file='$(srcdir)'/config/${extra_modes}
1454   AC_SUBST(extra_modes_file)
1455   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1456   [Define to the name of a file containing a list of extra machine modes
1457    for this architecture.])
1460 # Convert extra_options into a form suitable for Makefile use.
1461 extra_opt_files=
1462 all_opt_files=
1463 for f in $extra_options; do
1464   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1465   all_opt_files="$all_opt_files $srcdir/config/$f"
1466 done
1467 AC_SUBST(extra_opt_files)
1469 # auto-host.h is the file containing items generated by autoconf and is
1470 # the first file included by config.h.
1471 # If host=build, it is correct to have bconfig include auto-host.h
1472 # as well.  If host!=build, we are in error and need to do more 
1473 # work to find out the build config parameters.
1474 if test x$host = x$build
1475 then
1476         build_auto=auto-host.h
1477 else
1478         # We create a subdir, then run autoconf in the subdir.
1479         # To prevent recursion we set host and build for the new
1480         # invocation of configure to the build for this invocation
1481         # of configure. 
1482         tempdir=build.$$
1483         rm -rf $tempdir
1484         mkdir $tempdir
1485         cd $tempdir
1486         case ${srcdir} in
1487         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1488         *) realsrcdir=../${srcdir};;
1489         esac
1490         saved_CFLAGS="${CFLAGS}"
1491         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1492         LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1493         ${realsrcdir}/configure \
1494                 --enable-languages=${enable_languages-all} \
1495                 --target=$target_alias --host=$build_alias --build=$build_alias
1496         CFLAGS="${saved_CFLAGS}"
1498         # We just finished tests for the build machine, so rename
1499         # the file auto-build.h in the gcc directory.
1500         mv auto-host.h ../auto-build.h
1501         cd ..
1502         rm -rf $tempdir
1503         build_auto=auto-build.h
1505 AC_SUBST(build_subdir)
1507 tm_file="${tm_file} defaults.h"
1508 tm_p_file="${tm_p_file} tm-preds.h"
1509 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1510 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1511 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1512 # put this back in temporarily.
1513 xm_file="auto-host.h ansidecl.h ${xm_file}"
1515 # --------
1516 # UNSORTED
1517 # --------
1519 changequote(,)dnl
1520 # Compile in configure arguments.
1521 if test -f configargs.h ; then
1522         # Being re-configured.
1523         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1524         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1525 else
1526         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1529 # Double all backslashes and backslash all quotes to turn
1530 # gcc_config_arguments into a C string.
1531 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1532 $gcc_config_arguments
1534 gcc_config_arguments_str=`cat conftest.out`
1535 rm -f conftest.out
1537 cat > configargs.h <<EOF
1538 /* Generated automatically. */
1539 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1540 static const char thread_model[] = "$thread_file";
1542 static const struct {
1543   const char *name, *value;
1544 } configure_default_options[] = $configure_default_options;
1546 changequote([,])dnl
1548 changequote(,)dnl
1549 gcc_BASEVER=`cat $srcdir/BASE-VER`
1550 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1551 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1552 if test -f $srcdir/REVISION ; then
1553         gcc_REVISION=`cat $srcdir/REVISION`
1554 else
1555         gcc_REVISION=""
1557 cat > plugin-version.h <<EOF
1558 #include "configargs.h"
1560 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1561 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1562 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1563 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1565 static char basever[] = "$gcc_BASEVER";
1566 static char datestamp[] = "$gcc_DATESTAMP";
1567 static char devphase[] = "$gcc_DEVPHASE";
1568 static char revision[] = "$gcc_REVISION";
1570 /* FIXME plugins: We should make the version information more precise.
1571    One way to do is to add a checksum. */
1573 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1574                                                 devphase, revision,
1575                                                 configuration_arguments};
1577 changequote([,])dnl
1579 # Internationalization
1580 ZW_GNU_GETTEXT_SISTER_DIR
1582 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1583 # -liconv on the link line twice.
1584 case "$LIBINTL" in *$LIBICONV*)
1585         LIBICONV= ;;
1586 esac
1588 AC_ARG_ENABLE(secureplt,
1589 [AS_HELP_STRING([--enable-secureplt],
1590                 [enable -msecure-plt by default for PowerPC])],
1591 [], [])
1593 AC_ARG_ENABLE(leading-mingw64-underscores,
1594   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1595                  [enable leading underscores on 64 bit mingw targets]),
1596   [],[])
1597 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1598   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1599     [Define if we should use leading underscore on 64 bit mingw targets])])
1601 AC_ARG_ENABLE(cld,
1602 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1603 [enable_cld=no])
1605 AC_ARG_ENABLE(frame-pointer,
1606 [AS_HELP_STRING([--enable-frame-pointer],
1607                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1609 case $target_os in
1610 linux* | darwin[[8912]]*)
1611   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1612   # DWARF2.
1613   enable_frame_pointer=no
1614   ;;
1616   enable_frame_pointer=yes
1617   ;;
1618 esac
1621 # Windows32 Registry support for specifying GCC installation paths.
1622 AC_ARG_ENABLE(win32-registry,
1623 [AS_HELP_STRING([--disable-win32-registry],
1624                 [disable lookup of installation paths in the
1625                  Registry on Windows hosts])
1626 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1627 AS_HELP_STRING([--enable-win32-registry=KEY],
1628                [use KEY instead of GCC version as the last portion
1629                 of the registry key])],,)
1631 case $host_os in
1632   win32 | pe | cygwin* | mingw32* | uwin*)
1633     if test "x$enable_win32_registry" != xno; then
1634       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1635     fi
1637     if test "x$enable_win32_registry" != xno; then
1638       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1639   [Define to 1 if installation paths should be looked up in the Windows
1640    Registry. Ignored on non-Windows hosts.])
1642       if test "x$enable_win32_registry" != xyes \
1643          && test "x$enable_win32_registry" != x; then
1644         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1645   [Define to be the last component of the Windows registry key under which
1646    to look for installation paths.  The full key used will be 
1647    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1648    The default is the GCC version number.])
1649       fi
1650     fi
1651   ;;
1652 esac
1654 # Get an absolute path to the GCC top-level source directory
1655 holddir=`${PWDCMD-pwd}`
1656 cd $srcdir
1657 topdir=`${PWDCMD-pwd}`
1658 cd $holddir
1660 # Conditionalize the makefile for this host machine.
1661 xmake_file=
1662 for f in ${host_xmake_file}
1664         if test -f ${srcdir}/config/$f
1665         then
1666                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1667         fi
1668 done
1670 # Conditionalize the makefile for this target machine.
1671 tmake_file_=
1672 for f in ${tmake_file}
1674         if test -f ${srcdir}/config/$f
1675         then
1676                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1677         fi
1678 done
1679 tmake_file="${tmake_file_}"
1681 out_object_file=`basename $out_file .c`.o
1682 common_out_object_file=`basename $common_out_file .c`.o
1684 tm_file_list="options.h"
1685 tm_include_list="options.h insn-constants.h"
1686 for f in $tm_file; do
1687   case $f in
1688     ./* )
1689        f=`echo $f | sed 's/^..//'`
1690        tm_file_list="${tm_file_list} $f"
1691        tm_include_list="${tm_include_list} $f"
1692        ;;
1693     defaults.h )
1694        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1695        tm_include_list="${tm_include_list} $f"
1696        ;;
1697     * )
1698        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1699        tm_include_list="${tm_include_list} config/$f"
1700        ;;
1701   esac
1702 done
1704 tm_p_file_list=
1705 tm_p_include_list=
1706 for f in $tm_p_file; do
1707   case $f in
1708     tm-preds.h )
1709        tm_p_file_list="${tm_p_file_list} $f"
1710        tm_p_include_list="${tm_p_include_list} $f"
1711        ;;
1712     * )
1713        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1714        tm_p_include_list="${tm_p_include_list} config/$f"
1715   esac
1716 done
1718 xm_file_list=
1719 xm_include_list=
1720 for f in $xm_file; do
1721   case $f in
1722     ansidecl.h )
1723        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1724        xm_include_list="${xm_include_list} $f"
1725        ;;
1726     auto-host.h )
1727        xm_file_list="${xm_file_list} $f"
1728        xm_include_list="${xm_include_list} $f"
1729        ;;
1730     * )
1731        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1732        xm_include_list="${xm_include_list} config/$f"
1733        ;;
1734   esac
1735 done
1737 host_xm_file_list=
1738 host_xm_include_list=
1739 for f in $host_xm_file; do
1740   case $f in
1741     ansidecl.h )
1742        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1743        host_xm_include_list="${host_xm_include_list} $f"
1744        ;;
1745     auto-host.h )
1746        host_xm_file_list="${host_xm_file_list} $f"
1747        host_xm_include_list="${host_xm_include_list} $f"
1748        ;;
1749     * )
1750        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1751        host_xm_include_list="${host_xm_include_list} config/$f"
1752        ;;
1753   esac
1754 done
1756 build_xm_file_list=
1757 for f in $build_xm_file; do
1758   case $f in
1759     ansidecl.h )
1760        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1761        build_xm_include_list="${build_xm_include_list} $f"
1762        ;;
1763     auto-build.h | auto-host.h )
1764        build_xm_file_list="${build_xm_file_list} $f"
1765        build_xm_include_list="${build_xm_include_list} $f"
1766        ;;
1767     * )
1768        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1769        build_xm_include_list="${build_xm_include_list} config/$f"
1770        ;;
1771   esac
1772 done
1774 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1775 # cross-compiler which does not use the native headers and libraries.
1776 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1777 CROSS=                                          AC_SUBST(CROSS)
1778 ALL=all.internal                                AC_SUBST(ALL)
1779 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1781 if test "x$with_build_sysroot" != x; then
1782   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1783 else
1784   # This value is used, even on a native system, because 
1785   # CROSS_SYSTEM_HEADER_DIR is just 
1786   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1787   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1790 if test x$host != x$target
1791 then
1792         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1793         ALL=all.cross
1794         SYSTEM_HEADER_DIR=$build_system_header_dir
1795         case "$host","$target" in
1796         # Darwin crosses can use the host system's libraries and headers,
1797         # because of the fat library support.  Of course, it must be the
1798         # same version of Darwin on both sides.  Allow the user to
1799         # just say --target=foo-darwin without a version number to mean
1800         # "the version on this system".
1801             *-*-darwin*,*-*-darwin*)
1802                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1803                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1804                 if test $hostos = $targetos -o $targetos = darwin ; then
1805                     CROSS=
1806                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1807                     with_headers=yes
1808                 fi
1809                 ;;
1811             i?86-*-*,x86_64-*-* \
1812             | powerpc*-*-*,powerpc64*-*-*)
1813                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1814         esac
1816         case $target in
1817                 *-*-mingw*)
1818                         if test "x$with_headers" = x; then
1819                                 with_headers=yes
1820                         fi
1821                         ;;
1822                 *)
1823                         ;;
1824         esac
1825 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1826         SYSTEM_HEADER_DIR=$build_system_header_dir 
1829 # If this is a cross-compiler that does not
1830 # have its own set of headers then define
1831 # inhibit_libc
1833 # If this is using newlib, without having the headers available now,
1834 # then define inhibit_libc in LIBGCC2_CFLAGS.
1835 # This prevents libgcc2 from containing any code which requires libc
1836 # support.
1837 : ${inhibit_libc=false}
1838 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1839        test x$with_newlib = xyes ; } &&
1840      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1841        inhibit_libc=true
1843 AC_SUBST(inhibit_libc)
1845 # When building gcc with a cross-compiler, we need to adjust things so
1846 # that the generator programs are still built with the native compiler.
1847 # Also, we cannot run fixincludes.
1849 # These are the normal (build=host) settings:
1850 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
1851 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1852 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
1853 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1855 # And these apply if build != host, or we are generating coverage data
1856 if test x$build != x$host || test "x$coverage_flags" != x
1857 then
1858     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1859     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
1862 # Expand extra_headers to include complete path.
1863 # This substitutes for lots of t-* files.
1864 extra_headers_list=
1865 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1866 for file in ${extra_headers} ; do
1867   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1868 done
1870 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1871 if test x"$use_gcc_tgmath" = xyes
1872 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1875 # Define collect2 in Makefile.
1876 case $host_can_use_collect2 in
1877   no) collect2= ;;
1878   *) collect2='collect2$(exeext)' ;;
1879 esac
1880 AC_SUBST([collect2])
1882 # Add a definition of USE_COLLECT2 if system wants one.
1883 case $use_collect2 in
1884   no) use_collect2= ;;
1885   "") ;;
1886   *) 
1887     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1888     xm_defines="${xm_defines} USE_COLLECT2"
1889     case $host_can_use_collect2 in
1890       no)
1891         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1892         ;;
1893     esac
1894     ;;
1895 esac
1897 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
1898 [Define to the name of the LTO plugin DSO that must be
1899   passed to the linker's -plugin=LIB option.])
1901 # ---------------------------
1902 # Assembler & linker features
1903 # ---------------------------
1905 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
1906 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1907 # However when ld-new is first executed from the build tree, libtool will
1908 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1909 # to the build tree.  While doing this we need to use the previous-stage
1910 # linker, or we have an infinite loop.  The presence of a shell script as
1911 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1912 # the gcc/collect-ld script.  So we need to know how libtool works, or
1913 # exec-tool will fail.
1915 m4_defun([_LT_CONFIG_COMMANDS], [])
1916 AC_PROG_LIBTOOL
1917 AC_SUBST(objdir)
1918 AC_SUBST(enable_fast_install)
1920 # Identify the assembler which will work hand-in-glove with the newly
1921 # built GCC, so that we can examine its features.  This is the assembler
1922 # which will be driven by the driver program.
1924 # If build != host, and we aren't building gas in-tree, we identify a
1925 # build->target assembler and hope that it will have the same features
1926 # as the host->target assembler we'll be using.
1927 gcc_cv_gas_major_version=
1928 gcc_cv_gas_minor_version=
1929 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1931 m4_pattern_allow([AS_FOR_TARGET])dnl
1932 AS_VAR_SET_IF(gcc_cv_as,, [
1933 if test -x "$DEFAULT_ASSEMBLER"; then
1934         gcc_cv_as="$DEFAULT_ASSEMBLER"
1935 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1936      && test -f ../gas/Makefile \
1937      && test x$build = x$host; then
1938         gcc_cv_as=../gas/as-new$build_exeext
1939 elif test -x as$build_exeext; then
1940         # Build using assembler in the current directory.
1941         gcc_cv_as=./as$build_exeext
1942 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
1943         gcc_cv_as="$AS_FOR_TARGET"
1944 else
1945         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1946 fi])
1948 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1949 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1950 case "$ORIGINAL_AS_FOR_TARGET" in
1951   ./as | ./as$build_exeext) ;;
1952   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1953 esac 
1955 AC_MSG_CHECKING(what assembler to use)
1956 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1957   # Single tree build which includes gas.  We want to prefer it
1958   # over whatever linker top-level may have detected, since
1959   # we'll use what we're building after installation anyway.
1960   AC_MSG_RESULT(newly built gas)
1961   in_tree_gas=yes
1962   _gcc_COMPUTE_GAS_VERSION
1963   in_tree_gas_is_elf=no
1964   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1965      || (grep 'obj_format = multi' ../gas/Makefile \
1966          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1967   then
1968     in_tree_gas_is_elf=yes
1969   fi
1970 else
1971   AC_MSG_RESULT($gcc_cv_as)
1972   in_tree_gas=no
1975 # Identify the linker which will work hand-in-glove with the newly
1976 # built GCC, so that we can examine its features.  This is the linker
1977 # which will be driven by the driver program.
1979 # If build != host, and we aren't building gas in-tree, we identify a
1980 # build->target linker and hope that it will have the same features
1981 # as the host->target linker we'll be using.
1982 gcc_cv_gld_major_version=
1983 gcc_cv_gld_minor_version=
1984 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1985 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1987 AS_VAR_SET_IF(gcc_cv_ld,, [
1988 if test -x "$DEFAULT_LINKER"; then
1989         gcc_cv_ld="$DEFAULT_LINKER"
1990 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1991      && test -f ../ld/Makefile \
1992      && test x$build = x$host; then
1993         gcc_cv_ld=../ld/ld-new$build_exeext
1994 elif test -x collect-ld$build_exeext; then
1995         # Build using linker in the current directory.
1996         gcc_cv_ld=./collect-ld$build_exeext
1997 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
1998         gcc_cv_ld="$LD_FOR_TARGET"
1999 else
2000         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2001 fi])
2003 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2004 PLUGIN_LD=`basename $gcc_cv_ld`
2005 AC_ARG_WITH(plugin-ld,
2006 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2007 [if test x"$withval" != x; then
2008    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2009    PLUGIN_LD="$withval"
2010  fi])
2011 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2012 AC_DEFINE_UNQUOTED(PLUGIN_LD, "$PLUGIN_LD", [Specify plugin linker])
2014 # Check to see if we are using gold instead of ld
2015 AC_MSG_CHECKING(whether we are using gold)
2016 ld_is_gold=no
2017 if test x$gcc_cv_ld != x; then
2018   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2019      | grep "GNU gold" > /dev/null; then
2020     ld_is_gold=yes
2021   fi
2023 AC_MSG_RESULT($ld_is_gold)
2025 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2026 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2027 case "$ORIGINAL_LD_FOR_TARGET" in
2028   ./collect-ld | ./collect-ld$build_exeext) ;;
2029   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2030 esac 
2032 AC_MSG_CHECKING(what linker to use)
2033 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2034    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2035         # Single tree build which includes ld.  We want to prefer it
2036         # over whatever linker top-level may have detected, since
2037         # we'll use what we're building after installation anyway.
2038         AC_MSG_RESULT(newly built ld)
2039         in_tree_ld=yes
2040         in_tree_ld_is_elf=no
2041         if (grep 'EMUL = .*elf' ../ld/Makefile \
2042             || grep 'EMUL = .*linux' ../ld/Makefile \
2043             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2044           in_tree_ld_is_elf=yes
2045         elif test "$ld_is_gold" = yes; then
2046           in_tree_ld_is_elf=yes
2047         fi
2048         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
2049         do
2050 changequote(,)dnl
2051                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
2052                 if test x$gcc_cv_gld_version != x; then
2053                         break
2054                 fi
2055         done
2056         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2057         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2058 changequote([,])dnl
2059 else
2060         AC_MSG_RESULT($gcc_cv_ld)
2061         in_tree_ld=no
2064 # Figure out what nm we will be using.
2065 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2066 AS_VAR_SET_IF(gcc_cv_nm,, [
2067 if test -f $gcc_cv_binutils_srcdir/configure.in \
2068      && test -f ../binutils/Makefile \
2069      && test x$build = x$host; then
2070         gcc_cv_nm=../binutils/nm-new$build_exeext
2071 elif test -x nm$build_exeext; then
2072         gcc_cv_nm=./nm$build_exeext
2073 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2074         gcc_cv_nm="$NM_FOR_TARGET"
2075 else
2076         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2077 fi])
2079 AC_MSG_CHECKING(what nm to use)
2080 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2081         # Single tree build which includes binutils.
2082         AC_MSG_RESULT(newly built nm)
2083         in_tree_nm=yes
2084 else
2085         AC_MSG_RESULT($gcc_cv_nm)
2086         in_tree_nm=no
2089 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2090 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2091 case "$ORIGINAL_NM_FOR_TARGET" in
2092   ./nm | ./nm$build_exeext) ;;
2093   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2094 esac
2097 # Figure out what objdump we will be using.
2098 AS_VAR_SET_IF(gcc_cv_objdump,, [
2099 if test -f $gcc_cv_binutils_srcdir/configure.in \
2100      && test -f ../binutils/Makefile \
2101      && test x$build = x$host; then
2102         # Single tree build which includes binutils.
2103         gcc_cv_objdump=../binutils/objdump$build_exeext
2104 elif test -x objdump$build_exeext; then
2105         gcc_cv_objdump=./objdump$build_exeext
2106 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2107         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2108 else
2109         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2110 fi])
2112 AC_MSG_CHECKING(what objdump to use)
2113 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2114         # Single tree build which includes binutils.
2115         AC_MSG_RESULT(newly built objdump)
2116 elif test x$gcc_cv_objdump = x; then
2117         AC_MSG_RESULT(not found)
2118 else
2119         AC_MSG_RESULT($gcc_cv_objdump)
2122 # Figure out what readelf we will be using.
2123 AS_VAR_SET_IF(gcc_cv_readelf,, [
2124 if test -f $gcc_cv_binutils_srcdir/configure.in \
2125      && test -f ../binutils/Makefile \
2126      && test x$build = x$host; then
2127         # Single tree build which includes binutils.
2128         gcc_cv_readelf=../binutils/readelf$build_exeext
2129 elif test -x readelf$build_exeext; then
2130         gcc_cv_readelf=./readelf$build_exeext
2131 else
2132         AC_PATH_PROG(gcc_cv_readelf, readelf)
2133 fi])
2135 AC_MSG_CHECKING(what readelf to use)
2136 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2137         # Single tree build which includes binutils.
2138         AC_MSG_RESULT(newly built readelf)
2139 elif test x$gcc_cv_readelf = x; then
2140         AC_MSG_RESULT(not found)
2141 else
2142         AC_MSG_RESULT($gcc_cv_readelf)
2145 # Figure out what assembler alignment features are present.
2146 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2147  [2,6,0],,
2148 [.balign 4
2149 .p2align 2],,
2150 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2151   [Define if your assembler supports .balign and .p2align.])])
2153 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2154  [2,8,0],,
2155  [.p2align 4,,7],,
2156 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2157   [Define if your assembler supports specifying the maximum number
2158    of bytes to skip when using the GAS .p2align command.])])
2160 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2161  [2,8,0],,
2162  [.literal16],,
2163 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2164   [Define if your assembler supports .literal16.])])
2166 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2167  [elf,2,9,0],,
2168  [conftest_label1: .word 0
2169 .subsection -1
2170 conftest_label2: .word 0
2171 .previous],
2172  [if test x$gcc_cv_nm != x; then
2173     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2174     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2175     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2176     then :
2177     else gcc_cv_as_subsection_m1=yes
2178     fi
2179     rm -f conftest.nm1 conftest.nm2
2180   fi],
2181  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2182   [Define if your assembler supports .subsection and .subsection -1 starts
2183    emitting at the beginning of your section.])])
2185 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2186  [2,2,0],,
2187  [      .weak foobar],,
2188 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2190 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2191  [2,17,0],,
2192  [      .weakref foobar, barfnot],,
2193 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2195 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2196  [2,15,91],,
2197  [      .SPACE $TEXT$
2198         .NSUBSPA $CODE$,COMDAT],,
2199 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2201 # .hidden needs to be supported in both the assembler and the linker,
2202 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2203 # This is irritatingly difficult to feature test for; we have to check the
2204 # date string after the version number.  If we've got an in-tree
2205 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2206 # to be safe.
2207 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2208 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2209  [elf,2,13,0],,
2210 [       .hidden foobar
2211 foobar:],[
2212 # Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2213 # STV_HIDDEN, so disable .hidden support if so.
2214 case "${target}" in
2215   i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2216     if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2217       cat > conftest.s <<EOF
2218 .globl hidden
2219         .hidden hidden
2220 hidden:
2221 .globl default
2222         .set    default,hidden
2224       if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2225         && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2226         grep '\.hidden default' > /dev/null; then
2227         gcc_cv_as_hidden=no
2228       else
2229         gcc_cv_as_hidden=yes
2230       fi
2231     else
2232       # Assume bug is present if objdump is missing.
2233       gcc_cv_as_hidden=no
2234     fi
2235     ;;
2236   *)
2237     gcc_cv_as_hidden=yes
2238     ;;
2239 esac])
2240 case "${target}" in
2241   *-*-darwin*)
2242     # Darwin as has some visibility support, though with a different syntax.
2243     gcc_cv_as_hidden=yes
2244     ;;
2245 esac
2247 # gnu_indirect_function type is an extension proposed at
2248 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2249 # selection of function implementation
2250 AC_ARG_ENABLE(gnu-indirect-function,
2251  [AS_HELP_STRING([--enable-gnu-indirect-function],
2252                  [enable the use of the @gnu_indirect_function to glibc systems])],
2253  [case $enable_gnu_indirect_function in
2254     yes | no) ;;
2255     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2256 Valid choices are 'yes' and 'no'.]) ;;
2257   esac],
2258  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2259 if test x$enable_gnu_indirect_function = xyes; then
2260   AC_DEFINE(HAVE_GNU_INDIRECT_FUNCTION, 1,
2261    [Define if your system supports gnu indirect functions.])
2264 changequote(,)dnl
2265 if test $in_tree_ld != yes ; then
2266   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2267   if echo "$ld_ver" | grep GNU > /dev/null; then
2268     if test x"$ld_is_gold" = xyes; then
2269       # GNU gold --version looks like this:
2270       #
2271       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2272       #
2273       # We extract the binutils version which is more familiar and specific
2274       # than the gold version.
2275       ld_vers=`echo $ld_ver | sed -n \
2276           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2277     else
2278       # GNU ld --version looks like this:
2279       #
2280       # GNU ld (GNU Binutils) 2.21.51.20110225
2281       ld_vers=`echo $ld_ver | sed -n \
2282           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2283     fi
2284     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'`
2285     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2286     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2287     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2288   else
2289     case "${target}" in
2290       *-*-solaris2*)
2291         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2292         # format.
2293         #
2294         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2295         # /usr/ccs/bin/ld has been configured.
2296         ld_ver=`$gcc_cv_ld -V 2>&1`
2297         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2298           ld_vers=`echo $ld_ver | sed -n \
2299             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2300           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2301           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2302         fi
2303         ;;
2304     esac
2305   fi
2307 changequote([,])dnl
2309 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2310 [[if test $in_tree_ld = yes ; then
2311   gcc_cv_ld_hidden=no
2312   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 \
2313      && test $in_tree_ld_is_elf = yes; then
2314      gcc_cv_ld_hidden=yes
2315   fi
2316 else
2317   gcc_cv_ld_hidden=yes
2318   if test x"$ld_is_gold" = xyes; then
2319     :
2320   elif echo "$ld_ver" | grep GNU > /dev/null; then
2321     if test 0"$ld_date" -lt 20020404; then
2322       if test -n "$ld_date"; then
2323         # If there was date string, but was earlier than 2002-04-04, fail
2324         gcc_cv_ld_hidden=no
2325       elif test -z "$ld_vers"; then
2326         # If there was no date string nor ld version number, something is wrong
2327         gcc_cv_ld_hidden=no
2328       else
2329         test -z "$ld_vers_patch" && ld_vers_patch=0
2330         if test "$ld_vers_major" -lt 2; then
2331           gcc_cv_ld_hidden=no
2332         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2333           gcc_cv_ld_hidden="no"
2334         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2335           gcc_cv_ld_hidden=no
2336         fi
2337       fi
2338     fi
2339   else
2340     case "${target}" in
2341       *-*-darwin*)
2342         # Darwin ld has some visibility support.
2343         gcc_cv_ld_hidden=yes
2344         ;;
2345       hppa64*-*-hpux* | ia64*-*-hpux*)
2346         gcc_cv_ld_hidden=yes
2347         ;;
2348       *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2349         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2350         # .symbolic was only added in Solaris 9 12/02.
2351         gcc_cv_ld_hidden=yes
2352         ;;
2353       *)
2354         gcc_cv_ld_hidden=no
2355         ;;
2356     esac
2357   fi
2358 fi]])
2359 libgcc_visibility=no
2360 AC_SUBST(libgcc_visibility)
2361 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2362 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2363   libgcc_visibility=yes
2364   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2365   [Define if your assembler and linker support .hidden.])
2368 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2369 gcc_cv_ld_ro_rw_mix=unknown
2370 if test $in_tree_ld = yes ; then
2371   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 \
2372      && test $in_tree_ld_is_elf = yes; then
2373     gcc_cv_ld_ro_rw_mix=read-write
2374   fi
2375 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2376   echo '.section myfoosect, "a"' > conftest1.s
2377   echo '.section myfoosect, "aw"' > conftest2.s
2378   echo '.byte 1' >> conftest2.s
2379   echo '.section myfoosect, "a"' > conftest3.s
2380   echo '.byte 0' >> conftest3.s
2381   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2382      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2383      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2384      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2385         conftest2.o conftest3.o > /dev/null 2>&1; then
2386     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2387                          | sed -e '/myfoosect/!d' -e N`
2388     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2389       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2390         gcc_cv_ld_ro_rw_mix=read-only
2391       else
2392         gcc_cv_ld_ro_rw_mix=read-write
2393       fi
2394     fi
2395   fi
2396 changequote(,)dnl
2397   rm -f conftest.* conftest[123].*
2398 changequote([,])dnl
2400 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2401         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2402   [Define if your linker links a mix of read-only
2403    and read-write sections into a read-write section.])
2405 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2407 gcc_AC_INITFINI_ARRAY
2409 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2410 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2411   [elf,2,11,0],,
2412 [       .data
2413         .uleb128 L2 - L1
2415         .uleb128 1280
2416         .sleb128 -1010
2417 L2:],
2418 [[# GAS versions before 2.11 do not support uleb128,
2419   # despite appearing to.
2420   # ??? There exists an elf-specific test that will crash
2421   # the assembler.  Perhaps it's better to figure out whether
2422   # arbitrary sections are supported and try the test.
2423   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2424   if echo "$as_ver" | grep GNU > /dev/null; then
2425     as_vers=`echo $as_ver | sed -n \
2426         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2427     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2428     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2429     if test $as_major -eq 2 && test $as_minor -lt 11
2430     then :
2431     else gcc_cv_as_leb128=yes
2432     fi
2433   fi]],
2434   [AC_DEFINE(HAVE_AS_LEB128, 1,
2435     [Define if your assembler supports .sleb128 and .uleb128.])])
2437 # Check if we have assembler support for unwind directives.
2438 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2439   ,,
2440 [       .text
2441         .cfi_startproc
2442         .cfi_offset 0, 0
2443         .cfi_same_value 1
2444         .cfi_def_cfa 1, 2
2445         .cfi_escape 1, 2, 3, 4, 5
2446         .cfi_endproc],
2447 [case "$target" in
2448   *-*-solaris*)
2449     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2450     # read-only and read-write sections, we need to make sure that the
2451     # assembler used emits read-write .eh_frame sections.
2452     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2453       if test "x$gcc_cv_objdump" != x; then
2454         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2455                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2456           gcc_cv_as_cfi_directive=no
2457         else
2458           case "$target" in
2459             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2460               # On Solaris/x86, make sure that GCC and gas agree on using
2461               # read-only .eh_frame sections for 64-bit.
2462               if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2463                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2464                         sed -e /.eh_frame/!d -e N | \
2465                         grep READONLY > /dev/null; then
2466                 gcc_cv_as_cfi_directive=yes
2467               else
2468                 gcc_cv_as_cfi_directive=no
2469               fi
2470               ;;
2471             *)
2472               gcc_cv_as_cfi_directive=yes
2473               ;;
2474           esac 
2475         fi
2476       else
2477         # no objdump, err on the side of caution
2478         gcc_cv_as_cfi_directive=no
2479       fi
2480     else
2481       gcc_cv_as_cfi_directive=yes
2482     fi
2483     ;;
2484   *-*-*)
2485     gcc_cv_as_cfi_directive=yes
2486     ;;
2487 esac])
2488 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2489 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2490   ,,
2491 [       .text
2492         .cfi_startproc
2493         .cfi_adjust_cfa_offset 64
2494         .skip 75040, 0
2495         .cfi_adjust_cfa_offset 128
2496         .cfi_endproc],
2498 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2499     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2500    gcc_cv_as_cfi_advance_working=yes
2503 else
2504   # no objdump, err on the side of caution
2505   gcc_cv_as_cfi_advance_working=no
2507 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2508 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2509   [`if test $gcc_cv_as_cfi_directive = yes \
2510        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2511   [Define 0/1 if your assembler supports CFI directives.])
2513 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2514 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2515   gcc_cv_as_cfi_personality_directive, ,,
2516 [       .text
2517         .cfi_startproc
2518         .cfi_personality 0, symbol
2519         .cfi_endproc])
2520 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2521   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2522     then echo 1; else echo 0; fi`],
2523   [Define 0/1 if your assembler supports .cfi_personality.])
2525 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2526   gcc_cv_as_cfi_sections_directive, ,,
2527 [       .text
2528         .cfi_sections .debug_frame, .eh_frame
2529         .cfi_startproc
2530         .cfi_endproc],
2531 [case $target_os in
2532   win32 | pe | cygwin* | mingw32* | uwin*)
2533     # Need to check that we generated the correct relocation for the
2534     # .debug_frame section.  This was fixed for binutils 2.21.
2535     gcc_cv_as_cfi_sections_directive=no
2536     if test "x$gcc_cv_objdump" != x; then
2537      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2538         grep secrel > /dev/null; then
2539       gcc_cv_as_cfi_sections_directive=yes
2540      fi
2541     fi
2542     ;;
2543   *)
2544     gcc_cv_as_cfi_sections_directive=yes
2545     ;;
2546 esac])
2547 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2548 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2549   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2550     then echo 1; else echo 0; fi`],
2551   [Define 0/1 if your assembler supports .cfi_sections.])
2553 # GAS versions up to and including 2.11.0 may mis-optimize
2554 # .eh_frame data.
2555 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2556   [elf,2,12,0],,
2557 [       .text
2558 .LFB1:
2559         .4byte  0
2560 .L1:
2561         .4byte  0
2562 .LFE1:
2563         .section        .eh_frame,"aw",@progbits
2564 __FRAME_BEGIN__:
2565         .4byte  .LECIE1-.LSCIE1
2566 .LSCIE1:
2567         .4byte  0x0
2568         .byte   0x1
2569         .ascii "z\0"
2570         .byte   0x1
2571         .byte   0x78
2572         .byte   0x1a
2573         .byte   0x0
2574         .byte   0x4
2575         .4byte  1
2576         .p2align 1
2577 .LECIE1:
2578 .LSFDE1:
2579         .4byte  .LEFDE1-.LASFDE1
2580 .LASFDE1:
2581         .4byte  .LASFDE1-__FRAME_BEGIN__
2582         .4byte  .LFB1
2583         .4byte  .LFE1-.LFB1
2584         .byte   0x4
2585         .4byte  .LFE1-.LFB1
2586         .byte   0x4
2587         .4byte  .L1-.LFB1
2588 .LEFDE1:],
2589 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2590 cat > conftest.lit <<EOF
2591  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2592  0010 01000000 12000000 18000000 00000000  ................
2593  0020 08000000 04080000 0044               .........D      @&t@
2595 cat > conftest.big <<EOF
2596  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2597  0010 00000001 00000012 00000018 00000000  ................
2598  0020 00000008 04000000 0844               .........D      @&t@
2600   # If the assembler didn't choke, and we can objdump,
2601   # and we got the correct data, then succeed.
2602   # The text in the here-document typically retains its unix-style line
2603   # endings, while the output of objdump will use host line endings.
2604   # Therefore, use diff -b for the comparisons.
2605   if test x$gcc_cv_objdump != x \
2606   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2607      | tail -3 > conftest.got \
2608   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2609     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2610   then
2611     gcc_cv_as_eh_frame=yes
2612   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2613     gcc_cv_as_eh_frame=buggy
2614   else
2615     # Uh oh, what do we do now?
2616     gcc_cv_as_eh_frame=no
2617   fi])
2619 if test $gcc_cv_as_eh_frame = buggy; then
2620   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2621   [Define if your assembler mis-optimizes .eh_frame data.])
2624 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2625  [elf,2,12,0], [--fatal-warnings],
2626  [.section .rodata.str, "aMS", @progbits, 1])
2627 if test $gcc_cv_as_shf_merge = no; then
2628   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2629     [elf,2,12,0], [--fatal-warnings],
2630     [.section .rodata.str, "aMS", %progbits, 1])
2632 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2633   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2634 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2636 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2637  gcc_cv_as_comdat_group,
2638  [elf,2,16,0], [--fatal-warnings],
2639  [.section .text,"axG",@progbits,.foo,comdat])
2640 if test $gcc_cv_as_comdat_group = yes; then
2641   gcc_cv_as_comdat_group_percent=no
2642   gcc_cv_as_comdat_group_group=no
2643 else
2644  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2645    gcc_cv_as_comdat_group_percent,
2646    [elf,2,16,0], [--fatal-warnings],
2647    [.section .text,"axG",%progbits,.foo,comdat])
2648  if test $gcc_cv_as_comdat_group_percent = yes; then
2649    gcc_cv_as_comdat_group_group=no
2650  else
2651    case "${target}" in
2652      # Sun as uses a completely different syntax.
2653      *-*-solaris2*)
2654        case "${target}" in
2655          sparc*-*-solaris2*)
2656            conftest_s='
2657                .group foo,".text%foo",#comdat
2658                .section ".text%foo", #alloc,#execinstr,#progbits
2659                .globl foo
2660              foo:
2661              '
2662            ;;
2663          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2664            conftest_s='
2665                .group foo,.text%foo,#comdat
2666                .section .text%foo, "ax", @progbits
2667                .globl  foo
2668              foo:
2669              '
2670            ;;
2671        esac
2672        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2673          gcc_cv_as_comdat_group_group,
2674          ,, [$conftest_s])
2675        ;;
2676    esac
2677  fi
2679 if test x"$ld_is_gold" = xyes; then
2680   comdat_group=yes
2681 elif test $in_tree_ld = yes ; then
2682   comdat_group=no
2683   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 \
2684      && test $in_tree_ld_is_elf = yes; then
2685      comdat_group=yes
2686   fi
2687 elif echo "$ld_ver" | grep GNU > /dev/null; then
2688   comdat_group=yes
2689   if test 0"$ld_date" -lt 20050308; then
2690     if test -n "$ld_date"; then
2691       # If there was date string, but was earlier than 2005-03-08, fail
2692       comdat_group=no
2693     elif test "$ld_vers_major" -lt 2; then
2694       comdat_group=no
2695     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2696       comdat_group=no
2697     fi
2698   fi
2699 else
2700 changequote(,)dnl
2701   case "${target}" in
2702     *-*-solaris2.1[1-9]*)
2703       comdat_group=no
2704       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2705       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2706       # version 1.688.
2707       #
2708       # If using Sun as for COMDAT group as emitted by GCC, one needs at
2709       # least ld version 1.2267.
2710       if test "$ld_vers_major" -gt 1; then
2711         comdat_group=yes
2712       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2713         comdat_group=yes
2714       elif test "$ld_vers_minor" -ge 2267; then
2715         comdat_group=yes
2716       fi
2717       ;;
2718     *)
2719       # Assume linkers other than GNU ld don't support COMDAT group.
2720       comdat_group=no
2721       ;;
2722   esac
2723 changequote([,])dnl
2725 # Allow overriding the automatic COMDAT group tests above.
2726 AC_ARG_ENABLE(comdat,
2727   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2728   [comdat_group="$enable_comdat"])
2729 if test $comdat_group = no; then
2730   gcc_cv_as_comdat_group=no
2731   gcc_cv_as_comdat_group_percent=no
2732   gcc_cv_as_comdat_group_group=no
2734 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2735   [`if test $gcc_cv_as_comdat_group = yes \
2736     || test $gcc_cv_as_comdat_group_percent = yes \
2737     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2738 [Define 0/1 if your assembler and linker support COMDAT groups.])
2740 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2741  gcc_cv_as_discriminator,
2742  [2,19,51],,
2743 [       .text
2744         .file 1 "conf.c"
2745         .loc 1 1 0 discriminator 1],,
2746 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2747   [Define if your assembler supports the .loc discriminator sub-directive.])])
2749 # Thread-local storage - the check is heavily parameterized.
2750 conftest_s=
2751 tls_first_major=
2752 tls_first_minor=
2753 tls_as_opt=
2754 case "$target" in
2755 changequote(,)dnl
2756   alpha*-*-*)
2757     conftest_s='
2758         .section ".tdata","awT",@progbits
2759 foo:    .long   25
2760         .text
2761         ldq     $27,__tls_get_addr($29)         !literal!1
2762         lda     $16,foo($29)                    !tlsgd!1
2763         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2764         ldq     $27,__tls_get_addr($29)         !literal!2
2765         lda     $16,foo($29)                    !tlsldm!2
2766         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2767         ldq     $1,foo($29)                     !gotdtprel
2768         ldah    $2,foo($29)                     !dtprelhi
2769         lda     $3,foo($2)                      !dtprello
2770         lda     $4,foo($29)                     !dtprel
2771         ldq     $1,foo($29)                     !gottprel
2772         ldah    $2,foo($29)                     !tprelhi
2773         lda     $3,foo($2)                      !tprello
2774         lda     $4,foo($29)                     !tprel'
2775         tls_first_major=2
2776         tls_first_minor=13
2777         tls_as_opt=--fatal-warnings
2778         ;;
2779   cris-*-*|crisv32-*-*)
2780     conftest_s='
2781         .section ".tdata","awT",@progbits
2782 x:      .long   25
2783         .text
2784         move.d x:IE,$r10
2785         nop'
2786         tls_first_major=2
2787         tls_first_minor=20
2788         tls_as_opt=--fatal-warnings
2789         ;;
2790   frv*-*-*)
2791     conftest_s='
2792         .section ".tdata","awT",@progbits
2793 x:      .long   25
2794         .text
2795         call    #gettlsoff(x)'
2796         tls_first_major=2
2797         tls_first_minor=14
2798         ;;
2799   hppa*-*-linux*)
2800     conftest_s='
2801 t1:     .reg    %r20
2802 t2:     .reg    %r21
2803 gp:     .reg    %r19
2804         .section ".tdata","awT",@progbits
2805 foo:    .long   25
2806         .text
2807         .align  4
2808         addil LT%foo-$tls_gdidx$,gp
2809         ldo RT%foo-$tls_gdidx$(%r1),%arg0
2810         b __tls_get_addr
2811         nop             
2812         addil LT%foo-$tls_ldidx$,gp
2813         b __tls_get_addr
2814         ldo RT%foo-$tls_ldidx$(%r1),%arg0
2815         addil LR%foo-$tls_dtpoff$,%ret0
2816         ldo RR%foo-$tls_dtpoff$(%r1),%t1
2817         mfctl %cr27,%t1                 
2818         addil LT%foo-$tls_ieoff$,gp
2819         ldw RT%foo-$tls_ieoff$(%r1),%t2
2820         add %t1,%t2,%t3                 
2821         mfctl %cr27,%t1                 
2822         addil LR%foo-$tls_leoff$,%t1
2823         ldo RR%foo-$tls_leoff$(%r1),%t2'
2824         tls_first_major=2
2825         tls_first_minor=15
2826         tls_as_opt=--fatal-warnings
2827         ;;
2828   arm*-*-*)
2829     conftest_s='
2830         .section ".tdata","awT",%progbits
2831 foo:    .long   25
2832         .text
2833 .word foo(gottpoff)
2834 .word foo(tpoff)
2835 .word foo(tlsgd)
2836 .word foo(tlsldm)
2837 .word foo(tlsldo)'
2838         tls_first_major=2
2839         tls_first_minor=17
2840         ;;
2841   i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
2842     case "$target" in
2843       i[34567]86-*-solaris2.*)
2844         on_solaris=yes
2845         tga_func=___tls_get_addr
2846         ;;
2847       x86_64-*-solaris2.1[0-9]*)
2848         on_solaris=yes
2849         tga_func=__tls_get_addr
2850         ;;
2851       *)
2852         on_solaris=no
2853         ;;
2854     esac
2855     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2856       conftest_s='
2857         .section .tdata,"awt",@progbits'
2858       tls_first_major=0
2859       tls_first_minor=0
2860 changequote([,])dnl
2861       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
2862 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
2863 changequote(,)dnl
2864     else
2865       conftest_s='
2866         .section ".tdata","awT",@progbits'
2867       tls_first_major=2
2868       tls_first_minor=14
2869       tls_as_opt="--fatal-warnings"
2870     fi
2871     conftest_s="$conftest_s
2872 foo:    .long   25
2873         .text
2874         movl    %gs:0, %eax
2875         leal    foo@tlsgd(,%ebx,1), %eax
2876         leal    foo@tlsldm(%ebx), %eax
2877         leal    foo@dtpoff(%eax), %edx
2878         movl    foo@gottpoff(%ebx), %eax
2879         subl    foo@gottpoff(%ebx), %eax
2880         addl    foo@gotntpoff(%ebx), %eax
2881         movl    foo@indntpoff, %eax
2882         movl    \$foo@tpoff, %eax
2883         subl    \$foo@tpoff, %eax
2884         leal    foo@ntpoff(%ecx), %eax"
2885     ;;
2886   x86_64-*-*)
2887     conftest_s='
2888         .section ".tdata","awT",@progbits
2889 foo:    .long   25
2890         .text
2891         movq    %fs:0, %rax
2892         leaq    foo@TLSGD(%rip), %rdi
2893         leaq    foo@TLSLD(%rip), %rdi
2894         leaq    foo@DTPOFF(%rax), %rdx
2895         movq    foo@GOTTPOFF(%rip), %rax
2896         movq    $foo@TPOFF, %rax'
2897         tls_first_major=2
2898         tls_first_minor=14
2899         tls_as_opt=--fatal-warnings
2900         ;;
2901   ia64-*-*)
2902     conftest_s='
2903         .section ".tdata","awT",@progbits
2904 foo:    data8   25
2905         .text
2906         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2907         addl    r17 = @ltoff(@dtprel(foo#)), gp
2908         addl    r18 = @ltoff(@tprel(foo#)), gp
2909         addl    r19 = @dtprel(foo#), gp
2910         adds    r21 = @dtprel(foo#), r13
2911         movl    r23 = @dtprel(foo#)
2912         addl    r20 = @tprel(foo#), gp
2913         adds    r22 = @tprel(foo#), r13
2914         movl    r24 = @tprel(foo#)'
2915         tls_first_major=2
2916         tls_first_minor=13
2917         tls_as_opt=--fatal-warnings
2918         ;;
2919   mips*-*-*)
2920     conftest_s='
2921         .section .tdata,"awT",@progbits
2923         .word 2
2924         .text
2925         addiu $4, $28, %tlsgd(x)
2926         addiu $4, $28, %tlsldm(x)
2927         lui $4, %dtprel_hi(x)
2928         addiu $4, $4, %dtprel_lo(x)
2929         lw $4, %gottprel(x)($28)
2930         lui $4, %tprel_hi(x)
2931         addiu $4, $4, %tprel_lo(x)'
2932         tls_first_major=2
2933         tls_first_minor=16
2934         tls_as_opt='-32 --fatal-warnings'
2935         ;;
2936   m68k-*-*)
2937     conftest_s='
2938         .section .tdata,"awT",@progbits
2940         .word 2
2941         .text
2942 foo:
2943         move.l x@TLSGD(%a5),%a0
2944         move.l x@TLSLDM(%a5),%a0
2945         move.l x@TLSLDO(%a5),%a0
2946         move.l x@TLSIE(%a5),%a0
2947         move.l x@TLSLE(%a5),%a0'
2948         tls_first_major=2
2949         tls_first_minor=19
2950         tls_as_opt='--fatal-warnings'
2951         ;;
2952   powerpc-*-*)
2953     conftest_s='
2954         .section ".tdata","awT",@progbits
2955         .align 2
2956 ld0:    .space 4
2957 ld1:    .space 4
2958 x1:     .space 4
2959 x2:     .space 4
2960 x3:     .space 4
2961         .text
2962         addi 3,31,ld0@got@tlsgd
2963         bl __tls_get_addr
2964         addi 3,31,x1@got@tlsld
2965         bl __tls_get_addr
2966         addi 9,3,x1@dtprel
2967         addis 9,3,x2@dtprel@ha
2968         addi 9,9,x2@dtprel@l
2969         lwz 9,x3@got@tprel(31)
2970         add 9,9,x@tls
2971         addi 9,2,x1@tprel
2972         addis 9,2,x2@tprel@ha
2973         addi 9,9,x2@tprel@l'
2974         tls_first_major=2
2975         tls_first_minor=14
2976         tls_as_opt="-a32 --fatal-warnings"
2977         ;;
2978   powerpc64-*-*)
2979     conftest_s='
2980         .section ".tdata","awT",@progbits
2981         .align 3
2982 ld0:    .space 8
2983 ld1:    .space 8
2984 x1:     .space 8
2985 x2:     .space 8
2986 x3:     .space 8
2987         .text
2988         addi 3,2,ld0@got@tlsgd
2989         bl .__tls_get_addr
2990         nop
2991         addi 3,2,ld1@toc
2992         bl .__tls_get_addr
2993         nop
2994         addi 3,2,x1@got@tlsld
2995         bl .__tls_get_addr
2996         nop
2997         addi 9,3,x1@dtprel
2998         bl .__tls_get_addr
2999         nop
3000         addis 9,3,x2@dtprel@ha
3001         addi 9,9,x2@dtprel@l
3002         bl .__tls_get_addr
3003         nop
3004         ld 9,x3@got@dtprel(2)
3005         add 9,9,3
3006         bl .__tls_get_addr
3007         nop'
3008         tls_first_major=2
3009         tls_first_minor=14
3010         tls_as_opt="-a64 --fatal-warnings"
3011         ;;
3012   s390-*-*)
3013     conftest_s='
3014         .section ".tdata","awT",@progbits
3015 foo:    .long   25
3016         .text
3017         .long   foo@TLSGD
3018         .long   foo@TLSLDM
3019         .long   foo@DTPOFF
3020         .long   foo@NTPOFF
3021         .long   foo@GOTNTPOFF
3022         .long   foo@INDNTPOFF
3023         l       %r1,foo@GOTNTPOFF(%r12)
3024         l       %r1,0(%r1):tls_load:foo
3025         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3026         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3027         tls_first_major=2
3028         tls_first_minor=14
3029         tls_as_opt="-m31 --fatal-warnings"
3030         ;;
3031   s390x-*-*)
3032     conftest_s='
3033         .section ".tdata","awT",@progbits
3034 foo:    .long   25
3035         .text
3036         .quad   foo@TLSGD
3037         .quad   foo@TLSLDM
3038         .quad   foo@DTPOFF
3039         .quad   foo@NTPOFF
3040         .quad   foo@GOTNTPOFF
3041         lg      %r1,foo@GOTNTPOFF(%r12)
3042         larl    %r1,foo@INDNTPOFF
3043         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3044         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3045         tls_first_major=2
3046         tls_first_minor=14
3047         tls_as_opt="-m64 -Aesame --fatal-warnings"
3048         ;;
3049   sh-*-* | sh[34]-*-*)
3050     conftest_s='
3051         .section ".tdata","awT",@progbits
3052 foo:    .long   25
3053         .text
3054         .long   foo@TLSGD
3055         .long   foo@TLSLDM
3056         .long   foo@DTPOFF
3057         .long   foo@GOTTPOFF
3058         .long   foo@TPOFF'
3059         tls_first_major=2
3060         tls_first_minor=13
3061         tls_as_opt=--fatal-warnings
3062         ;;
3063   sparc*-*-*)
3064     case "$target" in
3065       sparc*-sun-solaris2.*)
3066         on_solaris=yes
3067         tga_func=__tls_get_addr
3068         ;;
3069       *)
3070         on_solaris=no
3071         ;;
3072     esac
3073     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3074       conftest_s='
3075         .section ".tdata",#alloc,#write,#tls'
3076         tls_first_major=0
3077         tls_first_minor=0
3078     else
3079       conftest_s='
3080         .section ".tdata","awT",@progbits'
3081         tls_first_major=2
3082         tls_first_minor=14
3083         tls_as_opt="-32 --fatal-warnings"
3084     fi
3085     conftest_s="$conftest_s
3086 foo:    .long   25
3087         .text
3088         sethi   %tgd_hi22(foo), %o0
3089         add     %o0, %tgd_lo10(foo), %o1
3090         add     %l7, %o1, %o0, %tgd_add(foo)
3091         call    __tls_get_addr, %tgd_call(foo)
3092         sethi   %tldm_hi22(foo), %l1
3093         add     %l1, %tldm_lo10(foo), %l2
3094         add     %l7, %l2, %o0, %tldm_add(foo)
3095         call    __tls_get_addr, %tldm_call(foo)
3096         sethi   %tldo_hix22(foo), %l3
3097         xor     %l3, %tldo_lox10(foo), %l4
3098         add     %o0, %l4, %l5, %tldo_add(foo)
3099         sethi   %tie_hi22(foo), %o3
3100         add     %o3, %tie_lo10(foo), %o3
3101         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3102         add     %g7, %o2, %o4, %tie_add(foo)
3103         sethi   %tle_hix22(foo), %l1
3104         xor     %l1, %tle_lox10(foo), %o5
3105         ld      [%g7 + %o5], %o1"
3106         ;;
3107   tilepro*-*-*)
3108       conftest_s='
3109         .section ".tdata","awT",@progbits
3110 foo:    .long   25
3111         .text
3112         addli   r0, zero, tls_gd(foo)
3113         auli    r0, zero, tls_gd_ha16(foo)
3114         addli   r0, r0, tls_gd_lo16(foo)
3115         jal     __tls_get_addr
3116         addli   r0, zero, tls_ie(foo)
3117         auli    r0, r0, tls_ie_ha16(foo)
3118         addli   r0, r0, tls_ie_lo16(foo)'
3119         tls_first_major=2
3120         tls_first_minor=22
3121         tls_as_opt="--fatal-warnings"
3122         ;;
3123   tilegx*-*-*)
3124       conftest_s='
3125         .section ".tdata","awT",@progbits
3126 foo:    .long   25
3127         .text
3128         shl16insli r0, zero, hw0_last_tls_gd(foo)
3129         shl16insli r0, zero, hw1_last_tls_gd(foo)
3130         shl16insli r0, r0,   hw0_tls_gd(foo)
3131         jal        __tls_get_addr
3132         shl16insli r0, zero, hw1_last_tls_ie(foo)
3133         shl16insli r0, r0,   hw0_tls_ie(foo)'
3134         tls_first_major=2
3135         tls_first_minor=22
3136         tls_as_opt="--fatal-warnings"
3137         ;;
3138   xtensa*-*-*)
3139     conftest_s='
3140         .section ".tdata","awT",@progbits
3141 foo:    .long   25
3142         .text
3143         movi    a8, foo@TLSFUNC
3144         movi    a10, foo@TLSARG
3145         callx8.tls a8, foo@TLSCALL'
3146         tls_first_major=2
3147         tls_first_minor=19
3148         ;;
3149 changequote([,])dnl
3150 esac
3151 set_have_as_tls=no
3152 if test "x$enable_tls" = xno ; then
3153   : # TLS explicitly disabled.
3154 elif test "x$enable_tls" = xyes ; then
3155   set_have_as_tls=yes # TLS explicitly enabled.
3156 elif test -z "$tls_first_major"; then
3157   : # If we don't have a check, assume no support.
3158 else
3159   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3160   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3161   [set_have_as_tls=yes])
3163 case "$target" in
3164   # TLS was introduced in the Solaris 9 FCS release.  Support for GNU-style
3165   # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier
3166   # Sun style that Sun ld and GCC don't support any longer.
3167   *-*-solaris2.*)
3168     AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3169     ld_tls_support=no
3170     # Check ld and ld.so.1 TLS support.
3171     if echo "$ld_ver" | grep GNU > /dev/null; then
3172       # Assume all interesting versions of GNU ld have TLS support.
3173       # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3174       ld_tls_support=yes
3175     else
3176       case "$target" in
3177         # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3178         i?86-*-solaris2.9)
3179           min_tls_ld_vers_minor=374
3180           ;;
3181         # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3182         sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3183           min_tls_ld_vers_minor=343
3184           ;;
3185       esac
3186       if test "$ld_vers_major" -gt 1 || \
3187         test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3188         ld_tls_support=yes
3189       else
3190         set_have_as_tls=no
3191       fi
3192     fi
3193     AC_MSG_RESULT($ld_tls_support)
3195     save_LIBS="$LIBS"
3196     save_LDFLAGS="$LDFLAGS"
3197     LIBS=
3198     LDFLAGS=
3200     AC_MSG_CHECKING(library containing $tga_func)
3201     # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3202     # (32-bit x86) only lived in libthread, so check for that.  Keep
3203     # set_have_as_tls if found, disable if not.
3204     AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3205     # Clear LIBS if we cannot support TLS.
3206     if test $set_have_as_tls = no; then
3207       LIBS=
3208     fi
3209     # Always define LIB_TLS_SPEC, even without TLS support.
3210     AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3211         [Define to the library containing __tls_get_addr/___tls_get_addr.])
3212     AC_MSG_RESULT($LIBS)
3214     LIBS="$save_LIBS"
3215     LDFLAGS="$save_LDFLAGS"
3216     ;;
3217 esac
3218 if test $set_have_as_tls = yes ; then
3219   AC_DEFINE(HAVE_AS_TLS, 1,
3220             [Define if your assembler and linker support thread-local storage.])
3223 # Target-specific assembler checks.
3225 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3226 gcc_cv_ld_static_dynamic=no
3227 gcc_cv_ld_static_option='-Bstatic'
3228 gcc_cv_ld_dynamic_option='-Bdynamic'
3229 if test $in_tree_ld = yes ; then
3230   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
3231     gcc_cv_ld_static_dynamic=yes
3232   fi
3233 elif test x$gcc_cv_ld != x; then
3234   # Check if linker supports -Bstatic/-Bdynamic option
3235   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3236      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3237       gcc_cv_ld_static_dynamic=yes
3238   else
3239     case "$target" in
3240       # HP-UX ld uses -a flags to select between shared and archive.
3241       *-*-hpux*)
3242         if test x"$gnu_ld" = xno; then
3243           gcc_cv_ld_static_dynamic=yes
3244           gcc_cv_ld_static_option="-aarchive_shared"
3245           gcc_cv_ld_dynamic_option="-adefault"
3246         fi
3247         ;;
3248       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3249       *-*-solaris2*)
3250         gcc_cv_ld_static_dynamic=yes
3251         ;;
3252     esac
3253   fi
3255 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3256         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3257 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3258         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3259 [Define to the linker option to disable use of shared objects.])
3260         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3261 [Define to the linker option to enable use of shared objects.])
3263 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3265 if test x"$demangler_in_ld" = xyes; then
3266   AC_MSG_CHECKING(linker --demangle support)
3267   gcc_cv_ld_demangle=no
3268   if test $in_tree_ld = yes; then
3269     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 \
3270       gcc_cv_ld_demangle=yes
3271     fi
3272   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3273     # Check if the GNU linker supports --demangle option
3274     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3275       gcc_cv_ld_demangle=yes
3276     fi
3277   fi
3278   if test x"$gcc_cv_ld_demangle" = xyes; then
3279     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3280 [Define if your linker supports --demangle option.])
3281   fi
3282   AC_MSG_RESULT($gcc_cv_ld_demangle)
3285 AC_MSG_CHECKING(linker plugin support)
3286 gcc_cv_lto_plugin=0
3287 if test -f liblto_plugin.la; then
3288   save_ld_ver="$ld_ver"
3289   save_ld_vers_major="$ld_vers_major"
3290   save_ld_vers_minor="$ld_vers_minor"
3291   save_ld_is_gold="$ld_is_gold"
3293   ld_is_gold=no
3295   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3296     ld_ver="GNU ld"
3297     # FIXME: ld_is_gold?
3298     ld_vers_major="$gcc_cv_gld_major_version"
3299     ld_vers_minor="$gcc_cv_gld_minor_version"
3300   else
3301     # Determine plugin linker version.
3302     # FIXME: Partial duplicate from above, generalize.
3303 changequote(,)dnl
3304     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3305     if echo "$ld_ver" | grep GNU > /dev/null; then
3306       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3307         ld_is_gold=yes
3308         ld_vers=`echo $ld_ver | sed -n \
3309             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3310       else
3311         ld_vers=`echo $ld_ver | sed -n \
3312             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3313       fi
3314       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3315       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3316     fi
3317 changequote([,])dnl
3318   fi
3320   # Determine plugin support.
3321   if echo "$ld_ver" | grep GNU > /dev/null; then
3322     # Require GNU ld or gold 2.21+ for plugin support by default.
3323     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3324       gcc_cv_lto_plugin=2
3325     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3326     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3327       gcc_cv_lto_plugin=1
3328     fi
3329   fi
3331   ld_ver="$save_ld_ver"
3332   ld_vers_major="$save_ld_vers_major"
3333   ld_vers_minor="$save_ld_vers_minor"
3334   ld_is_gold="$save_ld_is_gold"
3336 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3337   [Define to the level of your linker's plugin support.])
3338 AC_MSG_RESULT($gcc_cv_lto_plugin)
3340 case "$target" in
3341   # All TARGET_ABI_OSF targets.
3342   alpha*-*-linux* | alpha*-*-*bsd*)
3343     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3344         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3345 [       .set nomacro
3346         .text
3347         extbl   $3, $2, $3      !lituse_bytoff!1
3348         ldq     $2, a($29)      !literal!1
3349         ldq     $4, b($29)      !literal!2
3350         ldq_u   $3, 0($2)       !lituse_base!1
3351         ldq     $27, f($29)     !literal!5
3352         jsr     $26, ($27), f   !lituse_jsr!5
3353         ldah    $29, 0($26)     !gpdisp!3
3354         lda     $0, c($29)      !gprel
3355         ldah    $1, d($29)      !gprelhigh
3356         lda     $1, d($1)       !gprellow
3357         lda     $29, 0($29)     !gpdisp!3],,
3358     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3359   [Define if your assembler supports explicit relocations.])])
3360     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3361         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3362 [       .set nomacro
3363         .text
3364         ldq     $27, a($29)     !literal!1
3365         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3366     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3367   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3368     ;;
3370   cris-*-*)
3371     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3372       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3373       [-no-mul-bug-abort], [.text],,
3374       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3375                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3376     ;;
3378   sparc*-*-*)
3379     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3380       [.register %g2, #scratch],,
3381       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3382                 [Define if your assembler supports .register.])])
3384     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3385       [-relax], [.text],,
3386       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3387                 [Define if your assembler supports -relax option.])])
3389     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3390       gcc_cv_as_sparc_gotdata_op,,
3391       [-K PIC],
3392 [.text
3393 .align 4
3394 foo:
3395         nop
3396 bar:
3397         sethi %gdop_hix22(foo), %g1
3398         xor    %g1, %gdop_lox10(foo), %g1
3399         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3400       [if test x$gcc_cv_ld != x \
3401        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3402          if test x$gcc_cv_objdump != x; then
3403            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3404               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3405                gcc_cv_as_sparc_gotdata_op=no
3406            else
3407                gcc_cv_as_sparc_gotdata_op=yes
3408            fi
3409          fi
3410        fi
3411        rm -f conftest],
3412       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3413                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3415     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3416       gcc_cv_as_sparc_ua_pcrel,,
3417       [-K PIC],
3418 [.text
3419 foo:
3420         nop
3421 .data
3422 .align 4
3423 .byte 0
3424 .uaword %r_disp32(foo)],
3425       [if test x$gcc_cv_ld != x \
3426        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3427          gcc_cv_as_sparc_ua_pcrel=yes
3428        fi
3429        rm -f conftest],
3430       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3431                 [Define if your assembler and linker support unaligned PC relative relocs.])
3433       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3434         gcc_cv_as_sparc_ua_pcrel_hidden,,
3435         [-K PIC],
3436 [.data
3437 .align 4
3438 .byte 0x31
3439 .uaword %r_disp32(foo)
3440 .byte 0x32, 0x33, 0x34
3441 .global foo
3442 .hidden foo
3443 foo:
3444 .skip 4],
3445         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3446          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3447          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3448             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3449             if $gcc_cv_objdump -R conftest 2> /dev/null \
3450                | grep 'DISP32' > /dev/null 2>&1; then
3451                 :
3452             else
3453                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3454             fi
3455          fi
3456          rm -f conftest],
3457          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3458                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3459     ]) # unaligned pcrel relocs
3461     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3462       gcc_cv_as_sparc_offsetable_lo10,,
3463       [-xarch=v9],
3464 [.text
3465         or %g1, %lo(ab) + 12, %g1
3466         or %g1, %lo(ab + 12), %g1],
3467       [if test x$gcc_cv_objdump != x \
3468        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3469           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3470          gcc_cv_as_sparc_offsetable_lo10=yes
3471        fi],
3472        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3473                  [Define if your assembler supports offsetable %lo().])])
3475     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3476       gcc_cv_as_sparc_fmaf,,
3477       [-xarch=v9d],
3478       [.text
3479        .register %g2, #scratch
3480        .register %g3, #scratch
3481        .align 4
3482        fmaddd %f0, %f2, %f4, %f6
3483        addxccc %g1, %g2, %g3
3484        fsrl32 %f2, %f4, %f8
3485        fnaddd %f10, %f12, %f14],,
3486       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3487                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3488     ;;
3490 changequote(,)dnl
3491   i[34567]86-*-* | x86_64-*-*)
3492 changequote([,])dnl
3493     case $target_os in
3494       cygwin*)
3495         # Full C++ conformance when using a shared libstdc++-v3 requires some
3496         # support from the Cygwin DLL, which in more recent versions exports
3497         # wrappers to aid in interposing and redirecting operators new, delete,
3498         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3499         # are configuring for a version of Cygwin that exports the wrappers.
3500         if test x$host = x$target; then
3501           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3502         else
3503           # Can't check presence of libc functions during cross-compile, so
3504           # we just have to assume we're building for an up-to-date target.
3505           gcc_ac_cygwin_dll_wrappers=yes
3506         fi
3507         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3508           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3509           [Define if you want to generate code by default that assumes that the
3510            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3511     esac
3512     case $target_os in
3513       cygwin* | pe | mingw32* | interix*)
3514         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3515         # definition is used unconditionally to initialise the default state of
3516         # the target option variable that governs usage of the feature.
3517         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3518          [2,19,52],,[.comm foo,1,32])
3519         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3520           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3521           [Define if your assembler supports specifying the alignment
3522            of objects allocated using the GAS .comm command.])
3523         # Used for DWARF 2 in PE
3524         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3525           gcc_cv_as_ix86_pe_secrel32,
3526           [2,15,91],,
3527 [.text
3528 foo:    nop
3529 .data
3530         .secrel32 foo],
3531           [if test x$gcc_cv_ld != x \
3532            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3533              gcc_cv_as_ix86_pe_secrel32=yes
3534            fi
3535            rm -f conftest],
3536           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3537             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3538         # Test if the assembler supports the extended form of the .section
3539         # directive that specifies section alignment.  LTO support uses this,
3540         # but normally only after installation, so we warn but don't fail the
3541         # configure if LTO is enabled but the assembler does not support it.
3542         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3543           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3544         if test x$gcc_cv_as_section_has_align != xyes; then
3545           case ",$enable_languages," in
3546             *,lto,*)
3547               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3548               ;;
3549           esac
3550         fi
3551         # Test if the assembler supports the section flag 'e' for specifying
3552         # an excluded section.
3553         gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3554           [2,22,51],,
3555 [.section foo1,"e"
3556 .byte 0,0,0,0])
3557         AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3558           [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3559           [Define if your assembler supports specifying the section flag e.])
3560         ;;
3561     esac
3563     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3564        gcc_cv_as_ix86_filds,,,
3565        [filds mem; fists mem],,
3566        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3567          [Define if your assembler uses filds and fists mnemonics.])])
3569     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3570        gcc_cv_as_ix86_fildq,,,
3571        [fildq mem; fistpq mem],,
3572        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3573          [Define if your assembler uses fildq and fistq mnemonics.])])
3575     gcc_GAS_CHECK_FEATURE([cmov syntax],
3576       gcc_cv_as_ix86_cmov_sun_syntax,,,
3577       [cmovl.l %edx, %eax],,
3578       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3579         [Define if your assembler supports the Sun syntax for cmov.])])
3581     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3582       gcc_cv_as_ix86_ffreep,,,
3583       [ffreep %st(1)],,
3584       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3585         [Define if your assembler supports the ffreep mnemonic.])])
3587     gcc_GAS_CHECK_FEATURE([.quad directive],
3588       gcc_cv_as_ix86_quad,,,
3589       [.quad 0],,
3590       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3591         [Define if your assembler supports the .quad directive.])])
3593     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3594       gcc_cv_as_ix86_sahf,,,
3595       [.code64
3596        sahf],,
3597       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3598         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3600     gcc_GAS_CHECK_FEATURE([swap suffix],
3601       gcc_cv_as_ix86_swap,,,
3602       [movl.s %esp, %ebp],,
3603       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3604         [Define if your assembler supports the swap suffix.])])
3606     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3607       gcc_cv_as_ix86_diff_sect_delta,,,
3608       [.section .rodata
3609 .L1:
3610         .long .L2-.L1
3611         .long .L3-.L1
3612         .text
3613 .L3:    nop
3614 .L2:    nop],,
3615       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3616         [Define if your assembler supports the subtraction of symbols in different sections.])])
3618     # These two are used unconditionally by i386.[ch]; it is to be defined
3619     # to 1 if the feature is present, 0 otherwise.
3620     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3621         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3622 [       .text
3623 .L0:
3624         nop
3625         .data
3626         .long .L0@GOTOFF])
3627     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3628       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3629       [Define true if the assembler supports '.long foo@GOTOFF'.])
3631     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3632         gcc_cv_as_ix86_rep_lock_prefix,,,
3633         [rep movsl
3634          lock addl %edi, (%eax,%esi)
3635          lock orl $0, (%esp)],,
3636         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3637           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3639     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3640         gcc_cv_as_ix86_tlsgdplt,,,
3641         [call    tls_gd@tlsgdplt],
3642         [if test x$gcc_cv_ld != x \
3643          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3644            gcc_cv_as_ix86_tlsgdplt=yes
3645          fi
3646          rm -f conftest],
3647       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3648         [Define if your assembler and linker support @tlsgdplt.])])
3650     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3651         gcc_cv_as_ix86_tlsldmplt,,,
3652         [tls_ld:
3653          call    tls_ld@tlsldmplt],
3654         [if test x$gcc_cv_ld != x \
3655          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3656            gcc_cv_as_ix86_tlsldmplt=yes
3657          fi
3658          rm -f conftest],
3659       [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3660         [Define if your assembler and linker support @tlsldmplt.])])
3662     ;;
3664   ia64*-*-*)
3665     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3666         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3667 [       .text
3668         addl r15 = @ltoffx(x#), gp
3669         ;;
3670         ld8.mov r16 = [[r15]], x#],,
3671     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3672           [Define if your assembler supports ltoffx and ldxmov relocations.])])
3674     ;;
3676   powerpc*-*-*)
3677     case $target in
3678       *-*-aix*) conftest_s='    .machine "pwr5"
3679         .csect .text[[PR]]
3680         mfcr 3,128';;
3681       *-*-darwin*)
3682         gcc_GAS_CHECK_FEATURE([.machine directive support],
3683           gcc_cv_as_machine_directive,,,
3684           [     .machine ppc7400])
3685         if test x$gcc_cv_as_machine_directive != xyes; then
3686           echo "*** This target requires an assembler supporting \".machine\"" >&2
3687           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3688           test x$build = x$target && exit 1
3689         fi
3690         conftest_s='    .text
3691         mfcr r3,128';;
3692       *) conftest_s='   .machine power4
3693         .text
3694         mfcr 3,128';;
3695     esac
3697     gcc_GAS_CHECK_FEATURE([mfcr field support],
3698       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3699       [$conftest_s],,
3700       [AC_DEFINE(HAVE_AS_MFCRF, 1,
3701           [Define if your assembler supports mfcr field.])])
3703     case $target in
3704       *-*-aix*) conftest_s='    .machine "pwr5"
3705         .csect .text[[PR]]
3706         popcntb 3,3';;
3707       *) conftest_s='   .machine power5
3708         .text
3709         popcntb 3,3';;
3710     esac
3712     gcc_GAS_CHECK_FEATURE([popcntb support],
3713       gcc_cv_as_powerpc_popcntb, [2,17,0],,
3714       [$conftest_s],,
3715       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3716           [Define if your assembler supports popcntb field.])])
3718     case $target in
3719       *-*-aix*) conftest_s='    .machine "pwr5x"
3720         .csect .text[[PR]]
3721         frin 1,1';;
3722       *) conftest_s='   .machine power5
3723         .text
3724         frin 1,1';;
3725     esac
3727     gcc_GAS_CHECK_FEATURE([fp round support],
3728       gcc_cv_as_powerpc_fprnd, [2,17,0],,
3729       [$conftest_s],,
3730       [AC_DEFINE(HAVE_AS_FPRND, 1,
3731           [Define if your assembler supports fprnd.])])
3733     case $target in
3734       *-*-aix*) conftest_s='    .machine "pwr6"
3735         .csect .text[[PR]]
3736         mffgpr 1,3';;
3737       *) conftest_s='   .machine power6
3738         .text
3739         mffgpr 1,3';;
3740     esac
3742     gcc_GAS_CHECK_FEATURE([move fp gpr support],
3743       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
3744       [$conftest_s],,
3745       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3746           [Define if your assembler supports mffgpr and mftgpr.])])
3748     case $target in
3749       *-*-aix*) conftest_s='    .csect .text[[PR]]
3750 LCF..0:
3751         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3752       *-*-darwin*)
3753         conftest_s='    .text
3754 LCF0:
3755         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3756       *) conftest_s='   .text
3757 .LCF0:
3758         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3759     esac
3761     gcc_GAS_CHECK_FEATURE([rel16 relocs],
3762       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3763       [$conftest_s],,
3764       [AC_DEFINE(HAVE_AS_REL16, 1,
3765           [Define if your assembler supports R_PPC_REL16 relocs.])])
3767     case $target in
3768       *-*-aix*) conftest_s='    .machine "pwr6"
3769         .csect .text[[PR]]
3770         cmpb 3,4,5';;
3771       *) conftest_s='   .machine power6
3772         .text
3773         cmpb 3,4,5';;
3774     esac
3776     gcc_GAS_CHECK_FEATURE([compare bytes support],
3777       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3778       [$conftest_s],,
3779       [AC_DEFINE(HAVE_AS_CMPB, 1,
3780           [Define if your assembler supports cmpb.])])
3782     case $target in
3783       *-*-aix*) conftest_s='    .machine "pwr6"
3784         .csect .text[[PR]]
3785         dadd 1,2,3';;
3786       *) conftest_s='   .machine power6
3787         .text
3788         dadd 1,2,3';;
3789     esac
3791     gcc_GAS_CHECK_FEATURE([decimal float support],
3792       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
3793       [$conftest_s],,
3794       [AC_DEFINE(HAVE_AS_DFP, 1,
3795           [Define if your assembler supports DFP instructions.])])
3797     case $target in
3798       *-*-aix*) conftest_s='    .machine "pwr7"
3799         .csect .text[[PR]]
3800         lxvd2x 1,2,3';;
3801       *) conftest_s='   .machine power7
3802         .text
3803         lxvd2x 1,2,3';;
3804     esac
3806     gcc_GAS_CHECK_FEATURE([vector-scalar support],
3807       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
3808       [$conftest_s],,
3809       [AC_DEFINE(HAVE_AS_VSX, 1,
3810           [Define if your assembler supports VSX instructions.])])
3812     case $target in
3813       *-*-aix*) conftest_s='    .machine "pwr7"
3814         .csect .text[[PR]]
3815         popcntd 3,3';;
3816       *) conftest_s='   .machine power7
3817         .text
3818         popcntd 3,3';;
3819     esac
3821     gcc_GAS_CHECK_FEATURE([popcntd support],
3822       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3823       [$conftest_s],,
3824       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3825           [Define if your assembler supports POPCNTD instructions.])])
3827     case $target in
3828       *-*-aix*) conftest_s='    .csect .text[[PR]]
3829         lwsync';;
3830       *) conftest_s='   .text
3831         lwsync';;
3832     esac
3834     gcc_GAS_CHECK_FEATURE([lwsync support],
3835       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3836       [$conftest_s],,
3837       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3838           [Define if your assembler supports LWSYNC instructions.])])
3840     case $target in
3841       *-*-aix*) conftest_s='    .machine "476"
3842         .csect .text[[PR]]
3843         dci 0';;
3844       *) conftest_s='   .machine "476"
3845         .text
3846         dci 0';;
3847     esac
3849     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
3850       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
3851       [$conftest_s],,
3852       [AC_DEFINE(HAVE_AS_DCI, 1,
3853           [Define if your assembler supports the DCI/ICI instructions.])])
3855     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3856       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3857       [.gnu_attribute 4,1],,
3858       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3859           [Define if your assembler supports .gnu_attribute.])])
3861     gcc_GAS_CHECK_FEATURE([tls marker support],
3862       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3863       [ bl __tls_get_addr(x@tlsgd)],,
3864       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3865           [Define if your assembler supports arg info for __tls_get_addr.])])
3867     case $target in
3868       *-*-aix*)
3869         gcc_GAS_CHECK_FEATURE([.ref support],
3870           gcc_cv_as_aix_ref, [2.21.0],,
3871           [     .csect stuff[[rw]]
3872              stuff:
3873                 .long 1
3874                 .extern sym
3875                 .ref sym
3876           ],,
3877           [AC_DEFINE(HAVE_AS_REF, 1,
3878             [Define if your assembler supports .ref])])
3879         ;;
3880     esac
3881     ;;
3883   mips*-*-*)
3884     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3885       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3886 [       lw $4,%gp_rel(foo)($4)],,
3887       [if test x$target_cpu_default = x
3888        then target_cpu_default=MASK_EXPLICIT_RELOCS
3889        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3890        fi])
3891     gcc_GAS_CHECK_FEATURE([-mno-shared support],
3892       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3893       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3894                  [Define if the assembler understands -mno-shared.])])
3896     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3897       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3898       [.gnu_attribute 4,1],,
3899       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3900           [Define if your assembler supports .gnu_attribute.])])
3902     gcc_GAS_CHECK_FEATURE([.dtprelword support],
3903       gcc_cv_as_mips_dtprelword, [2,18,0],,
3904       [.section .tdata,"awT",@progbits
3906         .word 2
3907         .text
3908         .dtprelword x+0x8000],,
3909       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3910           [Define if your assembler supports .dtprelword.])])
3912     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
3913       gcc_cv_as_mips_dspr1_mult,,,
3914 [       .set    mips32r2
3915         .set    nodspr2
3916         .set    dsp
3917         madd    $ac3,$4,$5
3918         maddu   $ac3,$4,$5
3919         msub    $ac3,$4,$5
3920         msubu   $ac3,$4,$5
3921         mult    $ac3,$4,$5
3922         multu   $ac3,$4,$5],,
3923       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
3924           [Define if your assembler supports DSPR1 mult.])])
3926     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3927     gcc_cv_as_ld_jalr_reloc=no
3928     if test $gcc_cv_as_mips_explicit_relocs = yes; then
3929       if test $in_tree_ld = yes ; then
3930         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 \
3931            && test $in_tree_ld_is_elf = yes; then
3932           gcc_cv_as_ld_jalr_reloc=yes
3933         fi
3934       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3935         echo '  .ent x' > conftest.s
3936         echo 'x:        ld $2,%got_disp(y)($3)' >> conftest.s
3937         echo '  ld $25,%call16(y)($28)' >> conftest.s
3938         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
3939         echo '1:        jalr $25' >> conftest.s
3940         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
3941         echo '1:        jalr $25' >> conftest.s
3942         echo '  .end x' >> conftest.s
3943         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
3944            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
3945           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
3946              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
3947             gcc_cv_as_ld_jalr_reloc=yes
3948           fi
3949         fi
3950         rm -f conftest.*
3951       fi
3952     fi
3953     if test $gcc_cv_as_ld_jalr_reloc = yes; then
3954       if test x$target_cpu_default = x; then
3955         target_cpu_default=MASK_RELAX_PIC_CALLS
3956       else
3957         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
3958       fi
3959     fi
3960     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
3962     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
3963       [gcc_cv_ld_mips_personality_relaxation],
3964       [gcc_cv_ld_mips_personality_relaxation=no
3965        if test $in_tree_ld = yes ; then
3966          if test "$gcc_cv_gld_major_version" -eq 2 \
3967                  -a "$gcc_cv_gld_minor_version" -ge 21 \
3968                  -o "$gcc_cv_gld_major_version" -gt 2; then
3969            gcc_cv_ld_mips_personality_relaxation=yes
3970          fi
3971        elif test x$gcc_cv_as != x \
3972                  -a x$gcc_cv_ld != x \
3973                  -a x$gcc_cv_readelf != x ; then
3974          cat > conftest.s <<EOF
3975         .cfi_startproc
3976         .cfi_personality 0x80,indirect_ptr
3977         .ent test
3978 test:
3979         nop
3980         .end test
3981         .cfi_endproc
3983         .section .data,"aw",@progbits
3984 indirect_ptr:
3985         .dc.a personality
3987          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
3988             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
3989            if $gcc_cv_readelf -d conftest 2>&1 \
3990               | grep TEXTREL > /dev/null 2>&1; then
3991              :
3992            elif $gcc_cv_readelf --relocs conftest 2>&1 \
3993                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
3994              :
3995            else
3996              gcc_cv_ld_mips_personality_relaxation=yes
3997            fi
3998          fi
3999        fi
4000        rm -f conftest.s conftest.o conftest])
4001     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4002             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4003       [Define if your linker can relax absolute .eh_frame personality
4004 pointers into PC-relative form.])
4005     fi
4006     ;;
4007 esac
4009 # Mips and HP-UX need the GNU assembler.
4010 # Linux on IA64 might be able to use the Intel assembler.
4012 case "$target" in
4013   mips*-*-* | *-*-hpux* )
4014     if test x$gas_flag = xyes \
4015        || test x"$host" != x"$build" \
4016        || test ! -x "$gcc_cv_as" \
4017        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4018       :
4019     else
4020       echo "*** This configuration requires the GNU assembler" >&2
4021       exit 1
4022     fi
4023     ;;
4024 esac
4026 # ??? Not all targets support dwarf2 debug_line, even within a version
4027 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4028 # info to the output file.  So, as supported targets are added to gas 2.11,
4029 # add some instruction here to (also) show we expect this might work.
4030 # ??? Once 2.11 is released, probably need to add first known working
4031 # version to the per-target configury.
4032 case "$cpu_type" in
4033   alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \
4034   | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa)
4035     insn="nop"
4036     ;;
4037   ia64 | s390)
4038     insn="nop 0"
4039     ;;
4040   mmix)
4041     insn="swym 0"
4042     ;;
4043 esac
4044 if test x"$insn" != x; then
4045  conftest_s="\
4046         .file 1 \"conftest.s\"
4047         .loc 1 3 0
4048         $insn"
4049  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4050   gcc_cv_as_dwarf2_debug_line,
4051   [elf,2,11,0],, [$conftest_s],
4052   [if test x$gcc_cv_objdump != x \
4053    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4054       | grep debug_line > /dev/null 2>&1; then
4055      gcc_cv_as_dwarf2_debug_line=yes
4056    fi])
4058 # The .debug_line file table must be in the exact order that
4059 # we specified the files, since these indices are also used
4060 # by DW_AT_decl_file.  Approximate this test by testing if
4061 # the assembler bitches if the same index is assigned twice.
4062  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4063   gcc_cv_as_dwarf2_file_buggy,,,
4064 [       .file 1 "foo.s"
4065         .file 1 "bar.s"])
4067  if test $gcc_cv_as_dwarf2_debug_line = yes \
4068  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4069         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4070   [Define if your assembler supports dwarf2 .file/.loc directives,
4071    and preserves file table indices exactly as given.])
4072  fi
4074  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4075   gcc_cv_as_gdwarf2_flag,
4076   [elf,2,11,0], [--gdwarf2], [$insn],,
4077   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4078 [Define if your assembler supports the --gdwarf2 option.])])
4080  gcc_GAS_CHECK_FEATURE([--gstabs option],
4081   gcc_cv_as_gstabs_flag,
4082   [elf,2,11,0], [--gstabs], [$insn],
4083   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4084    # and warns about it, but still exits successfully.  So check for
4085    # this.
4086    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4087    then :
4088    else gcc_cv_as_gstabs_flag=yes
4089    fi],
4090   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4091 [Define if your assembler supports the --gstabs option.])])
4093  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4094   gcc_cv_as_debug_prefix_map_flag,
4095   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4096   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4097 [Define if your assembler supports the --debug-prefix-map option.])])
4100 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4101  ,,
4102 [.lcomm bar,4,16],,
4103 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4104   [Define if your assembler supports .lcomm with an alignment field.])])
4106 AC_ARG_ENABLE(gnu-unique-object,
4107  [AS_HELP_STRING([--enable-gnu-unique-object],
4108    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4109  [case $enable_gnu_unique_object in
4110     yes | no) ;;
4111     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4112 Valid choices are 'yes' and 'no'.]) ;;
4113   esac],
4114  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4115    [elf,2,19,52],,
4116    [.type foo, '$target_type_format_char'gnu_unique_object],,
4117 # We need to unquote above to to use the definition from config.gcc.
4118 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4119    [[if test x$host = x$build -a x$host = x$target &&
4120        ldd --version 2>/dev/null &&
4121        glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
4122       glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
4123       glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
4124       glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
4125       if test "$glibcnum" -ge 2011 ; then
4126         enable_gnu_unique_object=yes
4127       fi
4128     fi]])])
4129 if test x$enable_gnu_unique_object = xyes; then
4130   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4131    [Define if your assembler supports @gnu_unique_object.])
4134 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4135  [gcc_cv_as_line_zero],
4136  [gcc_cv_as_line_zero=no
4137   if test $in_tree_gas = yes; then
4138     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4139   elif test "x$gcc_cv_as" != x; then
4140     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4141     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4142        test "x`cat conftest.out`" = x
4143     then
4144       gcc_cv_as_line_zero=yes
4145     else
4146       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4147       cat conftest.s >&AS_MESSAGE_LOG_FD
4148       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4149       cat conftest.out >&AS_MESSAGE_LOG_FD
4150     fi
4151     rm -f conftest.o conftest.s conftest.out
4152   fi])
4153 if test "x$gcc_cv_as_line_zero" = xyes; then
4154   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4155 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4158 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4159 gcc_cv_ld_eh_frame_hdr=no
4160 if test $in_tree_ld = yes ; then
4161   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 \
4162      && test $in_tree_ld_is_elf = yes; then
4163     gcc_cv_ld_eh_frame_hdr=yes
4164   fi
4165 elif test x$gcc_cv_ld != x; then
4166   if echo "$ld_ver" | grep GNU > /dev/null; then
4167     # Check if linker supports --eh-frame-hdr option
4168     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4169       gcc_cv_ld_eh_frame_hdr=yes
4170     fi
4171   else
4172     case "$target" in
4173       *-*-solaris2*)
4174         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4175         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4176           gcc_cv_ld_eh_frame_hdr=yes
4177         fi
4178         ;;
4179     esac
4180   fi
4182 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4183 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4184         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4185 [Define if your linker supports .eh_frame_hdr.])
4187 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4189 AC_MSG_CHECKING(linker position independent executable support)
4190 gcc_cv_ld_pie=no
4191 if test $in_tree_ld = yes ; then
4192   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 \
4193      && test $in_tree_ld_is_elf = yes; then
4194     gcc_cv_ld_pie=yes
4195   fi
4196 elif test x$gcc_cv_ld != x; then
4197         # Check if linker supports -pie option
4198         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4199                 gcc_cv_ld_pie=yes
4200         fi
4202 if test x"$gcc_cv_ld_pie" = xyes; then
4203         AC_DEFINE(HAVE_LD_PIE, 1,
4204 [Define if your linker supports -pie option.])
4206 AC_MSG_RESULT($gcc_cv_ld_pie)
4208 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4209 gcc_cv_ld_eh_gc_sections=no
4210 if test $in_tree_ld = yes ; then
4211   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 \
4212      && test $in_tree_ld_is_elf = yes; then
4213     gcc_cv_ld_eh_gc_sections=yes
4214   fi
4215 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4216   cat > conftest.s <<EOF
4217         .section        .text
4218 .globl _start
4219         .type _start, @function
4220 _start:
4221         .long foo
4222         .size _start, .-_start
4223         .section        .text.foo,"ax",@progbits
4224         .type foo, @function
4225 foo:
4226         .long 0
4227         .size foo, .-foo
4228         .section        .gcc_except_table.foo,"a",@progbits
4229 .L0:
4230         .long 0
4231         .section        .eh_frame,"a",@progbits
4232         .long .L0
4234   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4235     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4236          | grep "gc-sections option ignored" > /dev/null; then
4237       gcc_cv_ld_eh_gc_sections=no
4238     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4239          | grep gcc_except_table > /dev/null; then
4240       gcc_cv_ld_eh_gc_sections=yes
4241       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4242       if test x$gcc_cv_as_comdat_group != xyes; then
4243         gcc_cv_ld_eh_gc_sections=no
4244         cat > conftest.s <<EOF
4245         .section        .text
4246 .globl _start
4247         .type _start, @function
4248 _start:
4249         .long foo
4250         .size _start, .-_start
4251         .section        .gnu.linkonce.t.foo,"ax",@progbits
4252         .type foo, @function
4253 foo:
4254         .long 0
4255         .size foo, .-foo
4256         .section        .gcc_except_table.foo,"a",@progbits
4257 .L0:
4258         .long 0
4259         .section        .eh_frame,"a",@progbits
4260         .long .L0
4262         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4263           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4264                | grep "gc-sections option ignored" > /dev/null; then
4265             gcc_cv_ld_eh_gc_sections=no
4266           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4267                | grep gcc_except_table > /dev/null; then
4268             gcc_cv_ld_eh_gc_sections=yes
4269           fi
4270         fi
4271       fi
4272     fi
4273   fi
4274   rm -f conftest.s conftest.o conftest
4276 case "$target" in
4277   hppa*-*-linux*)
4278     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4279     gcc_cv_ld_eh_gc_sections=no
4280     ;;
4281 esac
4282 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4283         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4284   [Define if your linker supports garbage collection of
4285    sections in presence of EH frames.])
4287 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4289 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4290 gcc_cv_ld_eh_gc_sections_bug=no
4291 if test $in_tree_ld = yes ; then
4292   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 \
4293      && test $in_tree_ld_is_elf = yes; then
4294     gcc_cv_ld_eh_gc_sections_bug=yes
4295   fi
4296 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
4297   gcc_cv_ld_eh_gc_sections_bug=yes
4298   cat > conftest.s <<EOF
4299         .section        .text
4300 .globl _start
4301         .type _start, @function
4302 _start:
4303         .long foo
4304         .size _start, .-_start
4305         .section        .text.startup.foo,"ax",@progbits
4306         .type foo, @function
4307 foo:
4308         .long 0
4309         .size foo, .-foo
4310         .section        .gcc_except_table.foo,"a",@progbits
4311 .L0:
4312         .long 0
4313         .section        .eh_frame,"a",@progbits
4314         .long .L0
4316   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4317     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4318          | grep "gc-sections option ignored" > /dev/null; then
4319       :
4320     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4321          | grep gcc_except_table > /dev/null; then
4322       gcc_cv_ld_eh_gc_sections_bug=no
4323     fi
4324   fi
4325   rm -f conftest.s conftest.o conftest
4327 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4328         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4329   [Define if your linker has buggy garbage collection of
4330    sections support when .text.startup.foo like sections are used.])
4332 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4334 # --------
4335 # UNSORTED
4336 # --------
4338 AC_CACHE_CHECK(linker --as-needed support,
4339 gcc_cv_ld_as_needed,
4340 [gcc_cv_ld_as_needed=no
4341 if test $in_tree_ld = yes ; then
4342   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 \
4343      && test $in_tree_ld_is_elf = yes; then
4344     gcc_cv_ld_as_needed=yes
4345   fi
4346 elif test x$gcc_cv_ld != x; then
4347         # Check if linker supports --as-needed and --no-as-needed options
4348         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4349                 gcc_cv_ld_as_needed=yes
4350         fi
4353 if test x"$gcc_cv_ld_as_needed" = xyes; then
4354         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4355 [Define if your linker supports --as-needed and --no-as-needed options.])
4358 case "$target:$tm_file" in
4359   powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4360     AC_CACHE_CHECK(linker support for omitting dot symbols,
4361     gcc_cv_ld_no_dot_syms,
4362     [gcc_cv_ld_no_dot_syms=no
4363     if test $in_tree_ld = yes ; then
4364       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
4365         gcc_cv_ld_no_dot_syms=yes
4366       fi
4367     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4368       cat > conftest1.s <<EOF
4369         .text
4370         bl .foo
4372       cat > conftest2.s <<EOF
4373         .section ".opd","aw"
4374         .align 3
4375         .globl foo
4376         .type foo,@function
4377 foo:
4378         .quad .LEfoo,.TOC.@tocbase,0
4379         .text
4380 .LEfoo:
4381         blr
4382         .size foo,.-.LEfoo
4384       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4385          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4386          && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4387         gcc_cv_ld_no_dot_syms=yes
4388       fi
4389       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4390     fi
4391     ])
4392     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4393       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4394     [Define if your PowerPC64 linker only needs function descriptor syms.])
4395     fi
4397     AC_CACHE_CHECK(linker large toc support,
4398     gcc_cv_ld_large_toc,
4399     [gcc_cv_ld_large_toc=no
4400     if test $in_tree_ld = yes ; then
4401       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
4402         gcc_cv_ld_large_toc=yes
4403       fi
4404     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4405       cat > conftest.s <<EOF
4406         .section ".tbss","awT",@nobits
4407         .align 3
4408 ie0:    .space 8
4409         .global _start
4410         .text
4411 _start:
4412         addis 9,13,ie0@got@tprel@ha
4413         ld 9,ie0@got@tprel@l(9)
4415       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4416          && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4417         gcc_cv_ld_large_toc=yes
4418       fi
4419       rm -f conftest conftest.o conftest.s
4420     fi
4421     ])
4422     if test x"$gcc_cv_ld_large_toc" = xyes; then
4423       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4424     [Define if your PowerPC64 linker supports a large TOC.])
4425     fi
4426     ;;
4427 esac
4429 AC_CACHE_CHECK(linker --build-id support,
4430   gcc_cv_ld_buildid,
4431   [gcc_cv_ld_buildid=no
4432   if test $in_tree_ld = yes ; then
4433     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4434        "$gcc_cv_gld_minor_version" -ge 18 -o \
4435        "$gcc_cv_gld_major_version" -gt 2 \
4436        && test $in_tree_ld_is_elf = yes; then
4437       gcc_cv_ld_buildid=yes
4438     fi
4439   elif test x$gcc_cv_ld != x; then
4440     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4441       gcc_cv_ld_buildid=yes
4442     fi
4443   fi])
4444 if test x"$gcc_cv_ld_buildid" = xyes; then
4445   AC_DEFINE(HAVE_LD_BUILDID, 1,
4446   [Define if your linker supports --build-id.])
4449 AC_ARG_ENABLE(linker-build-id,
4450 [AS_HELP_STRING([--enable-linker-build-id],
4451                 [compiler will always pass --build-id to linker])],
4453 enable_linker_build_id=no)
4455 if test x"$enable_linker_build_id" = xyes; then
4456   if test x"$gcc_cv_ld_buildid" = xyes; then
4457     AC_DEFINE(ENABLE_LD_BUILDID, 1,
4458     [Define if gcc should always pass --build-id to linker.])
4459   else
4460     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4461   fi
4464 # In binutils 2.21, GNU ld gained support for new emulations fully
4465 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
4466 AC_CACHE_CHECK(linker *_sol2 emulation support,
4467   gcc_cv_ld_sol2_emulation,
4468   [gcc_cv_ld_sol2_emulation=no
4469   if test $in_tree_ld = yes ; then
4470     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4471        "$gcc_cv_gld_minor_version" -ge 21 -o \
4472        "$gcc_cv_gld_major_version" -gt 2 \
4473        && test $in_tree_ld_is_elf = yes; then
4474       gcc_cv_ld_sol2_emulation=yes
4475     fi
4476   elif test x$gcc_cv_ld != x; then
4477     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4478        grep _sol2 > /dev/null; then
4479       gcc_cv_ld_sol2_emulation=yes
4480     fi
4481   fi])
4482 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4483   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4484   [Define if your linker supports the *_sol2 emulations.])
4487 AC_CACHE_CHECK(linker --sysroot support,
4488   gcc_cv_ld_sysroot,
4489   [gcc_cv_ld_sysroot=no
4490   if test $in_tree_ld = yes ; then
4491       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
4492         gcc_cv_ld_sysroot=yes
4493       fi
4494   elif test x$gcc_cv_ld != x; then 
4495     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4496       gcc_cv_ld_sysroot=yes
4497     fi
4498   fi])
4499 if test x"$gcc_cv_ld_sysroot" = xyes; then
4500   AC_DEFINE(HAVE_LD_SYSROOT, 1,
4501   [Define if your linker supports --sysroot.])
4502 fi        
4504 if test x$with_sysroot = x && test x$host = x$target \
4505    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4506    && test "$prefix" != "NONE"; then
4507   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4508 [Define to PREFIX/include if cpp should also search that directory.])
4511 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4512   if test "x$with_headers" != x; then
4513     target_header_dir=$with_headers
4514   elif test "x$with_sysroot" = x; then
4515     target_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
4516   elif test "x$with_build_sysroot" != "x"; then
4517     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4518   elif test "x$with_sysroot" = xyes; then
4519     target_header_dir="${exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4520   else
4521     target_header_dir="${with_sysroot}${native_system_header_dir}"
4522   fi
4523 else
4524   target_header_dir=${native_system_header_dir}
4527 # Test for stack protector support in target C library.
4528 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4529       gcc_cv_libc_provides_ssp,
4530       [gcc_cv_libc_provides_ssp=no
4531     case "$target" in
4532        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4533       [# glibc 2.4 and later provides __stack_chk_fail and
4534       # either __stack_chk_guard, or TLS access to stack guard canary.
4535       if test -f $target_header_dir/features.h \
4536          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
4537             $target_header_dir/features.h > /dev/null; then
4538         if $EGREP '^[   ]*#[    ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
4539            $target_header_dir/features.h > /dev/null; then
4540           gcc_cv_libc_provides_ssp=yes
4541         elif $EGREP '^[         ]*#[    ]*define[       ]+__GLIBC__[    ]+2' \
4542              $target_header_dir/features.h > /dev/null \
4543              && $EGREP '^[      ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
4544              $target_header_dir/features.h > /dev/null; then
4545           gcc_cv_libc_provides_ssp=yes
4546         elif $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
4547              $target_header_dir/features.h > /dev/null && \
4548              test -f $target_header_dir/bits/uClibc_config.h && \
4549              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
4550              $target_header_dir/bits/uClibc_config.h > /dev/null; then
4551           gcc_cv_libc_provides_ssp=yes
4552         fi
4553       fi]
4554         ;;
4555        *-*-gnu*)
4556          # Avoid complicated tests (see
4557          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4558          # simply assert that glibc does provide this, which is true for all
4559          # realistically usable GNU/Hurd configurations.
4560          gcc_cv_libc_provides_ssp=yes;;
4561        *-*-darwin* | *-*-freebsd*)
4562          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4563            [echo "no __stack_chk_fail on this target"])
4564         ;;
4565   *) gcc_cv_libc_provides_ssp=no ;;
4566     esac])
4568 if test x$gcc_cv_libc_provides_ssp = xyes; then
4569   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4570             [Define if your target C library provides stack protector support])
4573 # Test for <sys/sdt.h> on the target.
4574 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4575 AC_MSG_CHECKING(sys/sdt.h in the target C library)
4576 have_sys_sdt_h=no
4577 if test -f $target_header_dir/sys/sdt.h; then
4578   have_sys_sdt_h=yes
4579   AC_DEFINE(HAVE_SYS_SDT_H, 1,
4580             [Define if your target C library provides sys/sdt.h])
4582 AC_MSG_RESULT($have_sys_sdt_h)
4584 # Check if TFmode long double should be used by default or not.
4585 # Some glibc targets used DFmode long double, but with glibc 2.4
4586 # and later they can use TFmode.
4587 case "$target" in
4588   powerpc*-*-linux* | \
4589   sparc*-*-linux* | \
4590   s390*-*-linux* | \
4591   alpha*-*-linux*)
4592     AC_ARG_WITH(long-double-128,
4593       [AS_HELP_STRING([--with-long-double-128],
4594                       [use 128-bit long double by default])],
4595       gcc_cv_target_ldbl128="$with_long_double_128",
4596       [[gcc_cv_target_ldbl128=no
4597       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4598         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4599       && gcc_cv_target_ldbl128=yes
4600       ]])
4601     ;;
4602 esac
4603 if test x$gcc_cv_target_ldbl128 = xyes; then
4604   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4605             [Define if TFmode long double should be the default])
4608 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4609 gcc_cv_target_dl_iterate_phdr=unknown
4610 case "$target" in
4611   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
4612   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
4613   # libdl there, both complicating its use and breaking compatibility
4614   # between Solaris 10 updates.
4615   *-*-solaris2.1[[1-9]]*)
4616     # <link.h> needs both a dl_iterate_phdr declaration and support for
4617     # compilation with largefile support.
4618     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4619       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4620       gcc_cv_target_dl_iterate_phdr=yes
4621     else
4622       gcc_cv_target_dl_iterate_phdr=no
4623     fi
4624     ;;
4625 esac
4626 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4627 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4628    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4629 [Define if your target C library provides the `dl_iterate_phdr' function.])
4631 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
4633 # Find out what GC implementation we want, or may, use.
4634 AC_ARG_WITH(gc,
4635 [AS_HELP_STRING([--with-gc={page,zone}],
4636                 [choose the garbage collection mechanism to use
4637                  with the compiler])],
4638 [case "$withval" in
4639   page)
4640     GGC=ggc-$withval
4641     ;;
4642   zone)
4643     GGC=ggc-$withval
4644     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4645     ;;
4646   *)
4647     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4648     ;;
4649 esac],
4650 [GGC=ggc-page])
4651 AC_SUBST(GGC)
4652 echo "Using $GGC for garbage collection."
4654 # Libraries to use on the host.  This will normally be set by the top
4655 # level Makefile.  Here we simply capture the value for our Makefile.
4656 if test -z "${HOST_LIBS+set}"; then
4657   HOST_LIBS=
4659 AC_SUBST(HOST_LIBS)
4661 # Use the system's zlib library.
4662 zlibdir=-L../zlib
4663 zlibinc="-I\$(srcdir)/../zlib"
4664 AC_ARG_WITH(system-zlib,
4665 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
4666 zlibdir=
4667 zlibinc=
4669 AC_SUBST(zlibdir)
4670 AC_SUBST(zlibinc)
4672 dnl Very limited version of automake's enable-maintainer-mode
4674 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4675   dnl maintainer-mode is disabled by default
4676   AC_ARG_ENABLE(maintainer-mode,
4677 [AS_HELP_STRING([--enable-maintainer-mode],
4678                 [enable make rules and dependencies not useful
4679                  (and sometimes confusing) to the casual installer])],
4680       maintainer_mode=$enableval,
4681       maintainer_mode=no)
4683 AC_MSG_RESULT($maintainer_mode)
4685 if test "$maintainer_mode" = "yes"; then
4686   MAINT=''
4687 else
4688   MAINT='#'
4690 AC_SUBST(MAINT)dnl
4692 # --------------
4693 # Language hooks
4694 # --------------
4696 # Make empty files to contain the specs and options for each language.
4697 # Then add #include lines to for a compiler that has specs and/or options.
4699 subdirs=
4700 lang_opt_files=
4701 lang_specs_files=
4702 lang_tree_files=
4703 # These (without "all_") are set in each config-lang.in.
4704 # `language' must be a single word so is spelled singularly.
4705 all_languages=
4706 all_compilers=
4707 all_outputs='Makefile'
4708 # List of language makefile fragments.
4709 all_lang_makefrags=
4710 # Additional files for gengtype
4711 all_gtfiles="$target_gtfiles"
4713 # These are the languages that are set in --enable-languages,
4714 # and are available in the GCC tree.
4715 all_selected_languages=
4717 # Add the language fragments.
4718 # Languages are added via two mechanisms.  Some information must be
4719 # recorded in makefile variables, these are defined in config-lang.in.
4720 # We accumulate them and plug them into the main Makefile.
4721 # The other mechanism is a set of hooks for each of the main targets
4722 # like `clean', `install', etc.
4724 language_hooks="Make-hooks"
4726 for lang in ${srcdir}/*/config-lang.in
4728 changequote(,)dnl
4729         test "$lang" = "${srcdir}/*/config-lang.in" && continue
4731         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
4732         if test "x$lang_alias" = x
4733         then
4734               echo "$lang doesn't set \$language." 1>&2
4735               exit 1
4736         fi
4737         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
4738         subdirs="$subdirs $subdir"
4740         # $gcc_subdir is where the gcc integration files are to be found
4741         # for a language, both for internal compiler purposes (compiler
4742         # sources implementing front-end to GCC tree converters), and for
4743         # build infrastructure purposes (Make-lang.in, etc.)
4744         #
4745         # This will be <subdir> (relative to $srcdir) if a line like 
4746         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
4747         # is found in <langdir>/config-lang.in, and will remain <langdir>
4748         # otherwise.
4749         #
4750         # Except for the language alias (fetched above), the regular
4751         # "config-lang.in" contents are always retrieved from $gcc_subdir,
4752         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
4753         # only this and the language alias.
4755         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
4756         if [ "$gcc_subdir" = "" ]; then
4757            gcc_subdir="$subdir"
4758         fi
4760         case ",$enable_languages," in
4761         *,$lang_alias,*)
4762             all_selected_languages="$all_selected_languages $lang_alias"
4763             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
4764                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
4765             fi
4766             ;;
4767         esac
4768 changequote([,])dnl
4770         language=
4771         boot_language=
4772         compilers=
4773         outputs=
4774         gtfiles=
4775         subdir_requires=
4776         . ${srcdir}/$gcc_subdir/config-lang.in
4777         if test "x$language" = x
4778         then
4779                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
4780                 exit 1
4781         fi
4783         ok=:
4784         case ",$enable_languages," in
4785                 *,$lang_alias,*) ;;
4786                 *)
4787                         for i in $subdir_requires; do
4788                                 test -f "${srcdir}/$i/config-lang.in" && continue
4789                                 ok=false
4790                                 break
4791                         done
4792                 ;;
4793         esac
4794         $ok || continue
4796         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4797         if test -f $srcdir/$gcc_subdir/lang.opt; then
4798             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
4799             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
4800         fi
4801         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4802             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
4803         fi
4804         all_languages="$all_languages $language"
4805         all_compilers="$all_compilers $compilers"
4806         all_outputs="$all_outputs $outputs"
4807         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
4808         case ",$enable_languages," in
4809                 *,lto,*)
4810                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4811                     enable_lto=yes
4812                     AC_SUBST(enable_lto)
4813                     ;;
4814                 *) ;;
4815         esac
4816 done
4818 # Pick up gtfiles for c
4819 gtfiles=
4820 . ${srcdir}/c-config-lang.in
4821 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
4823 check_languages=
4824 for language in $all_selected_languages
4826         check_languages="$check_languages check-$language"
4827 done
4829 # We link each language in with a set of hooks, reached indirectly via
4830 # lang.${target}.  Only do so for selected languages.
4832 rm -f Make-hooks
4833 touch Make-hooks
4834 target_list="all.cross start.encap rest.encap tags \
4835         install-common install-man install-info install-pdf install-html dvi \
4836         pdf html uninstall info man srcextra srcman srcinfo \
4837         mostlyclean clean distclean maintainer-clean install-plugin"
4839 for t in $target_list
4841         x=
4842         for lang in $all_selected_languages
4843         do
4844                 x="$x $lang.$t"
4845         done
4846         echo "lang.$t: $x" >> Make-hooks
4847 done
4849 # --------
4850 # Option include files
4851 # --------
4853 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
4854 option_includes="option-includes.mk"
4855 AC_SUBST_FILE(option_includes)
4857 # --------
4858 # UNSORTED
4859 # --------
4861 # Create .gdbinit.
4863 echo "dir ." > .gdbinit
4864 echo "dir ${srcdir}" >> .gdbinit
4865 if test x$gdb_needs_out_file_path = xyes
4866 then
4867         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4869 if test "x$subdirs" != x; then
4870         for s in $subdirs
4871         do
4872                 echo "dir ${srcdir}/$s" >> .gdbinit
4873         done
4875 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
4877 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
4878 AC_SUBST(gcc_tooldir)
4879 AC_SUBST(dollar)
4881 # Find a directory in which to install a shared libgcc.
4883 AC_ARG_ENABLE(version-specific-runtime-libs,
4884 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
4885                 [specify that runtime libraries should be
4886                  installed in a compiler-specific directory])])
4888 # Substitute configuration variables
4889 AC_SUBST(subdirs)
4890 AC_SUBST(srcdir)
4891 AC_SUBST(all_compilers)
4892 AC_SUBST(all_gtfiles)
4893 AC_SUBST(all_lang_makefrags)
4894 AC_SUBST(all_languages)
4895 AC_SUBST(all_selected_languages)
4896 AC_SUBST(build_exeext)
4897 AC_SUBST(build_install_headers_dir)
4898 AC_SUBST(build_xm_file_list)
4899 AC_SUBST(build_xm_include_list)
4900 AC_SUBST(build_xm_defines)
4901 AC_SUBST(build_file_translate)
4902 AC_SUBST(check_languages)
4903 AC_SUBST(cpp_install_dir)
4904 AC_SUBST(xmake_file)
4905 AC_SUBST(tmake_file)
4906 AC_SUBST(TM_ENDIAN_CONFIG)
4907 AC_SUBST(TM_MULTILIB_CONFIG)
4908 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
4909 AC_SUBST(extra_gcc_objs)
4910 AC_SUBST(user_headers_inc_next_pre)
4911 AC_SUBST(user_headers_inc_next_post)
4912 AC_SUBST(extra_headers_list)
4913 AC_SUBST(extra_objs)
4914 AC_SUBST(extra_programs)
4915 AC_SUBST(float_h_file)
4916 AC_SUBST(gcc_config_arguments)
4917 AC_SUBST(gcc_gxx_include_dir)
4918 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
4919 AC_SUBST(host_exeext)
4920 AC_SUBST(host_xm_file_list)
4921 AC_SUBST(host_xm_include_list)
4922 AC_SUBST(host_xm_defines)
4923 AC_SUBST(out_host_hook_obj)
4924 AC_SUBST(install)
4925 AC_SUBST(lang_opt_files)
4926 AC_SUBST(lang_specs_files)
4927 AC_SUBST(lang_tree_files)
4928 AC_SUBST(local_prefix)
4929 AC_SUBST(md_file)
4930 AC_SUBST(objc_boehm_gc)
4931 AC_SUBST(out_file)
4932 AC_SUBST(out_object_file)
4933 AC_SUBST(common_out_file)
4934 AC_SUBST(common_out_object_file)
4935 AC_SUBST(tm_file_list)
4936 AC_SUBST(tm_include_list)
4937 AC_SUBST(tm_defines)
4938 AC_SUBST(tm_p_file_list)
4939 AC_SUBST(tm_p_include_list)
4940 AC_SUBST(xm_file_list)
4941 AC_SUBST(xm_include_list)
4942 AC_SUBST(xm_defines)
4943 AC_SUBST(use_gcc_stdint)
4944 AC_SUBST(c_target_objs)
4945 AC_SUBST(cxx_target_objs)
4946 AC_SUBST(fortran_target_objs)
4947 AC_SUBST(target_cpu_default)
4949 AC_SUBST_FILE(language_hooks)
4951 # Echo link setup.
4952 if test x${build} = x${host} ; then
4953   if test x${host} = x${target} ; then
4954     echo "Links are now set up to build a native compiler for ${target}." 1>&2
4955   else
4956     echo "Links are now set up to build a cross-compiler" 1>&2
4957     echo " from ${host} to ${target}." 1>&2
4958   fi
4959 else
4960   if test x${host} = x${target} ; then
4961     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
4962     echo " for ${target}." 1>&2
4963   else
4964     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
4965     echo " from ${host} to ${target}." 1>&2
4966   fi
4969 AC_ARG_VAR(GMPLIBS,[How to link GMP])
4970 AC_ARG_VAR(GMPINC,[How to find GMP include files])
4972 AC_ARG_VAR(PPLLIBS,[How to link PPL])
4973 AC_ARG_VAR(PPLINC,[How to find PPL include files])
4975 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
4976 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
4977 if test "x${CLOOGLIBS}" != "x" ; then 
4978    AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
4981 # Check for plugin support
4982 AC_ARG_ENABLE(plugin,
4983 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
4984 enable_plugin=$enableval,
4985 enable_plugin=yes; default_plugin=yes)
4987 pluginlibs=
4989 case "${host}" in
4990   *-*-darwin*)
4991     if test x$build = x$host; then
4992       export_sym_check="nm${exeext} -g"
4993     elif test x$host = x$target; then
4994       export_sym_check="$gcc_cv_nm -g"
4995     else
4996       export_sym_check=
4997     fi
4998   ;;
4999   *)
5000     if test x$build = x$host; then
5001       export_sym_check="objdump${exeext} -T"
5002     elif test x$host = x$target; then
5003       export_sym_check="$gcc_cv_objdump -T"
5004     else
5005       export_sym_check=
5006     fi
5007   ;;
5008 esac
5010 if test x"$enable_plugin" = x"yes"; then
5012   AC_MSG_CHECKING([for exported symbols])
5013   if test "x$export_sym_check" != x; then
5014     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5015     ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
5016     if $export_sym_check conftest | grep foobar > /dev/null; then
5017       : # No need to use a flag
5018       AC_MSG_RESULT([yes])
5019     else
5020       AC_MSG_RESULT([yes])
5021       AC_MSG_CHECKING([for -rdynamic])
5022       ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
5023       if $export_sym_check conftest | grep foobar > /dev/null; then
5024         plugin_rdynamic=yes
5025         pluginlibs="-rdynamic"
5026       else
5027         plugin_rdynamic=no
5028         enable_plugin=no
5029       fi
5030       AC_MSG_RESULT([$plugin_rdynamic])
5031     fi
5032   else
5033     AC_MSG_RESULT([unable to check])
5034   fi
5036   # Check -ldl
5037   saved_LIBS="$LIBS"
5038   AC_SEARCH_LIBS([dlopen], [dl])
5039   if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5040     pluginlibs="$pluginlibs -ldl"
5041   fi
5042   LIBS="$saved_LIBS"
5044   # Check that we can build shared objects with -fPIC -shared
5045   saved_LDFLAGS="$LDFLAGS"
5046   saved_CFLAGS="$CFLAGS"
5047   case "${host}" in
5048     *-*-darwin*)
5049       CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5050       CFLAGS="$CFLAGS -fPIC"
5051       LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5052     ;;
5053     *)
5054       CFLAGS="$CFLAGS -fPIC"
5055       LDFLAGS="$LDFLAGS -fPIC -shared"
5056     ;;
5057   esac
5058   AC_MSG_CHECKING([for -fPIC -shared])
5059   AC_TRY_LINK(
5060     [extern int X;],[return X == 0;],
5061     [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5062     [AC_MSG_RESULT([no]); have_pic_shared=no])
5063   if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5064     pluginlibs=
5065     enable_plugin=no
5066   fi
5067   LDFLAGS="$saved_LDFLAGS"
5068   CFLAGS="$saved_CFLAGS"
5070   # If plugin support had been requested but not available, fail.
5071   if test x"$enable_plugin" = x"no" ; then
5072     if test x"$default_plugin" != x"yes"; then
5073       AC_MSG_ERROR([
5074 Building GCC with plugin support requires a host that supports
5075 -fPIC, -shared, -ldl and -rdynamic.])
5076     fi
5077   fi
5080 AC_SUBST(pluginlibs)
5081 AC_SUBST(enable_plugin)
5082 if test x"$enable_plugin" = x"yes"; then
5083   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5087 AC_ARG_ENABLE(libquadmath-support,
5088 [AS_HELP_STRING([--disable-libquadmath-support],
5089   [disable libquadmath support for Fortran])],
5090 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5091 ENABLE_LIBQUADMATH_SUPPORT=yes)
5092 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5093   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5094             [Define to 1 to enable libquadmath support])
5098 # Specify what hash style to use by default.
5099 AC_ARG_WITH([linker-hash-style],
5100 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5101                 [specify the linker hash style])],
5102 [case x"$withval" in
5103    xsysv)
5104      LINKER_HASH_STYLE=sysv
5105      ;;
5106    xgnu)
5107      LINKER_HASH_STYLE=gnu
5108      ;;
5109    xboth)
5110      LINKER_HASH_STYLE=both
5111      ;;
5112    *)
5113      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5114      ;;
5115  esac],
5116 [LINKER_HASH_STYLE=''])
5117 if test x"${LINKER_HASH_STYLE}" != x; then
5118   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5119                                          [The linker hash style])
5122 # Configure the subdirectories
5123 # AC_CONFIG_SUBDIRS($subdirs)
5125 # Create the Makefile
5126 # and configure language subdirectories
5127 AC_CONFIG_FILES($all_outputs)
5129 AC_CONFIG_COMMANDS([default],
5131 case ${CONFIG_HEADERS} in
5132   *auto-host.h:config.in*)
5133   echo > cstamp-h ;;
5134 esac
5135 # Make sure all the subdirs exist.
5136 for d in $subdirs doc build common c-family
5138     test -d $d || mkdir $d
5139 done
5140 ], 
5141 [subdirs='$subdirs'])
5142 AC_OUTPUT