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