c-family/
[official-gcc.git] / gcc / configure.ac
blobf629d1561222f9e9b9fb64c1bef247c3c9897ca1
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-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2053                 if test x$gcc_cv_gld_version != x; then
2054                         break
2055                 fi
2056         done
2057         case $gcc_cv_gld_version in
2058           VERSION=[0-9]*) ;;
2059 changequote([,])dnl
2060           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2061 changequote(,)dnl
2062         esac
2063         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2064         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2065 changequote([,])dnl
2066 else
2067         AC_MSG_RESULT($gcc_cv_ld)
2068         in_tree_ld=no
2071 # Figure out what nm we will be using.
2072 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2073 AS_VAR_SET_IF(gcc_cv_nm,, [
2074 if test -f $gcc_cv_binutils_srcdir/configure.in \
2075      && test -f ../binutils/Makefile \
2076      && test x$build = x$host; then
2077         gcc_cv_nm=../binutils/nm-new$build_exeext
2078 elif test -x nm$build_exeext; then
2079         gcc_cv_nm=./nm$build_exeext
2080 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2081         gcc_cv_nm="$NM_FOR_TARGET"
2082 else
2083         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2084 fi])
2086 AC_MSG_CHECKING(what nm to use)
2087 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2088         # Single tree build which includes binutils.
2089         AC_MSG_RESULT(newly built nm)
2090         in_tree_nm=yes
2091 else
2092         AC_MSG_RESULT($gcc_cv_nm)
2093         in_tree_nm=no
2096 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2097 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2098 case "$ORIGINAL_NM_FOR_TARGET" in
2099   ./nm | ./nm$build_exeext) ;;
2100   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2101 esac
2104 # Figure out what objdump we will be using.
2105 AS_VAR_SET_IF(gcc_cv_objdump,, [
2106 if test -f $gcc_cv_binutils_srcdir/configure.in \
2107      && test -f ../binutils/Makefile \
2108      && test x$build = x$host; then
2109         # Single tree build which includes binutils.
2110         gcc_cv_objdump=../binutils/objdump$build_exeext
2111 elif test -x objdump$build_exeext; then
2112         gcc_cv_objdump=./objdump$build_exeext
2113 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2114         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2115 else
2116         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2117 fi])
2119 AC_MSG_CHECKING(what objdump to use)
2120 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2121         # Single tree build which includes binutils.
2122         AC_MSG_RESULT(newly built objdump)
2123 elif test x$gcc_cv_objdump = x; then
2124         AC_MSG_RESULT(not found)
2125 else
2126         AC_MSG_RESULT($gcc_cv_objdump)
2129 # Figure out what readelf we will be using.
2130 AS_VAR_SET_IF(gcc_cv_readelf,, [
2131 if test -f $gcc_cv_binutils_srcdir/configure.in \
2132      && test -f ../binutils/Makefile \
2133      && test x$build = x$host; then
2134         # Single tree build which includes binutils.
2135         gcc_cv_readelf=../binutils/readelf$build_exeext
2136 elif test -x readelf$build_exeext; then
2137         gcc_cv_readelf=./readelf$build_exeext
2138 else
2139         AC_PATH_PROG(gcc_cv_readelf, readelf)
2140 fi])
2142 AC_MSG_CHECKING(what readelf to use)
2143 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2144         # Single tree build which includes binutils.
2145         AC_MSG_RESULT(newly built readelf)
2146 elif test x$gcc_cv_readelf = x; then
2147         AC_MSG_RESULT(not found)
2148 else
2149         AC_MSG_RESULT($gcc_cv_readelf)
2152 # Figure out what assembler alignment features are present.
2153 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2154  [2,6,0],,
2155 [.balign 4
2156 .p2align 2],,
2157 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2158   [Define if your assembler supports .balign and .p2align.])])
2160 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2161  [2,8,0],,
2162  [.p2align 4,,7],,
2163 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2164   [Define if your assembler supports specifying the maximum number
2165    of bytes to skip when using the GAS .p2align command.])])
2167 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2168  [2,8,0],,
2169  [.literal16],,
2170 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2171   [Define if your assembler supports .literal16.])])
2173 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2174  [elf,2,9,0],,
2175  [conftest_label1: .word 0
2176 .subsection -1
2177 conftest_label2: .word 0
2178 .previous],
2179  [if test x$gcc_cv_nm != x; then
2180     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2181     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2182     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2183     then :
2184     else gcc_cv_as_subsection_m1=yes
2185     fi
2186     rm -f conftest.nm1 conftest.nm2
2187   fi],
2188  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2189   [Define if your assembler supports .subsection and .subsection -1 starts
2190    emitting at the beginning of your section.])])
2192 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2193  [2,2,0],,
2194  [      .weak foobar],,
2195 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2197 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2198  [2,17,0],,
2199  [      .weakref foobar, barfnot],,
2200 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2202 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2203  [2,15,91],,
2204  [      .SPACE $TEXT$
2205         .NSUBSPA $CODE$,COMDAT],,
2206 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2208 # .hidden needs to be supported in both the assembler and the linker,
2209 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2210 # This is irritatingly difficult to feature test for; we have to check the
2211 # date string after the version number.  If we've got an in-tree
2212 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2213 # to be safe.
2214 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2215 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2216  [elf,2,13,0],,
2217 [       .hidden foobar
2218 foobar:],[
2219 # Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2220 # STV_HIDDEN, so disable .hidden support if so.
2221 case "${target}" in
2222   i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2223     if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2224       cat > conftest.s <<EOF
2225 .globl hidden
2226         .hidden hidden
2227 hidden:
2228 .globl default
2229         .set    default,hidden
2231       if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2232         && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2233         grep '\.hidden default' > /dev/null; then
2234         gcc_cv_as_hidden=no
2235       else
2236         gcc_cv_as_hidden=yes
2237       fi
2238     else
2239       # Assume bug is present if objdump is missing.
2240       gcc_cv_as_hidden=no
2241     fi
2242     ;;
2243   *)
2244     gcc_cv_as_hidden=yes
2245     ;;
2246 esac])
2247 case "${target}" in
2248   *-*-darwin*)
2249     # Darwin as has some visibility support, though with a different syntax.
2250     gcc_cv_as_hidden=yes
2251     ;;
2252 esac
2254 # gnu_indirect_function type is an extension proposed at
2255 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2256 # selection of function implementation
2257 AC_ARG_ENABLE(gnu-indirect-function,
2258  [AS_HELP_STRING([--enable-gnu-indirect-function],
2259                  [enable the use of the @gnu_indirect_function to glibc systems])],
2260  [case $enable_gnu_indirect_function in
2261     yes | no) ;;
2262     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2263 Valid choices are 'yes' and 'no'.]) ;;
2264   esac],
2265  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2266 if test x$enable_gnu_indirect_function = xyes; then
2267   AC_DEFINE(HAVE_GNU_INDIRECT_FUNCTION, 1,
2268    [Define if your system supports gnu indirect functions.])
2271 changequote(,)dnl
2272 if test $in_tree_ld != yes ; then
2273   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2274   if echo "$ld_ver" | grep GNU > /dev/null; then
2275     if test x"$ld_is_gold" = xyes; then
2276       # GNU gold --version looks like this:
2277       #
2278       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2279       #
2280       # We extract the binutils version which is more familiar and specific
2281       # than the gold version.
2282       ld_vers=`echo $ld_ver | sed -n \
2283           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2284     else
2285       # GNU ld --version looks like this:
2286       #
2287       # GNU ld (GNU Binutils) 2.21.51.20110225
2288       ld_vers=`echo $ld_ver | sed -n \
2289           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2290     fi
2291     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'`
2292     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2293     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2294     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2295   else
2296     case "${target}" in
2297       *-*-solaris2*)
2298         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2299         # format.
2300         #
2301         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2302         # /usr/ccs/bin/ld has been configured.
2303         ld_ver=`$gcc_cv_ld -V 2>&1`
2304         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2305           ld_vers=`echo $ld_ver | sed -n \
2306             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2307           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2308           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2309         fi
2310         ;;
2311     esac
2312   fi
2314 changequote([,])dnl
2316 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2317 [[if test $in_tree_ld = yes ; then
2318   gcc_cv_ld_hidden=no
2319   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 \
2320      && test $in_tree_ld_is_elf = yes; then
2321      gcc_cv_ld_hidden=yes
2322   fi
2323 else
2324   gcc_cv_ld_hidden=yes
2325   if test x"$ld_is_gold" = xyes; then
2326     :
2327   elif echo "$ld_ver" | grep GNU > /dev/null; then
2328     case "${target}" in
2329       mmix-knuth-mmixware)
2330         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2331         gcc_cv_ld_hidden=no
2332         ;;
2333     esac
2334     if test 0"$ld_date" -lt 20020404; then
2335       if test -n "$ld_date"; then
2336         # If there was date string, but was earlier than 2002-04-04, fail
2337         gcc_cv_ld_hidden=no
2338       elif test -z "$ld_vers"; then
2339         # If there was no date string nor ld version number, something is wrong
2340         gcc_cv_ld_hidden=no
2341       else
2342         test -z "$ld_vers_patch" && ld_vers_patch=0
2343         if test "$ld_vers_major" -lt 2; then
2344           gcc_cv_ld_hidden=no
2345         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2346           gcc_cv_ld_hidden="no"
2347         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2348           gcc_cv_ld_hidden=no
2349         fi
2350       fi
2351     fi
2352   else
2353     case "${target}" in
2354       *-*-darwin*)
2355         # Darwin ld has some visibility support.
2356         gcc_cv_ld_hidden=yes
2357         ;;
2358       hppa64*-*-hpux* | ia64*-*-hpux*)
2359         gcc_cv_ld_hidden=yes
2360         ;;
2361       *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2362         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2363         # .symbolic was only added in Solaris 9 12/02.
2364         gcc_cv_ld_hidden=yes
2365         ;;
2366       *)
2367         gcc_cv_ld_hidden=no
2368         ;;
2369     esac
2370   fi
2371 fi]])
2372 libgcc_visibility=no
2373 AC_SUBST(libgcc_visibility)
2374 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2375 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2376   libgcc_visibility=yes
2377   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2378   [Define if your assembler and linker support .hidden.])
2381 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2382 gcc_cv_ld_ro_rw_mix=unknown
2383 if test $in_tree_ld = yes ; then
2384   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 \
2385      && test $in_tree_ld_is_elf = yes; then
2386     gcc_cv_ld_ro_rw_mix=read-write
2387   fi
2388 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2389   echo '.section myfoosect, "a"' > conftest1.s
2390   echo '.section myfoosect, "aw"' > conftest2.s
2391   echo '.byte 1' >> conftest2.s
2392   echo '.section myfoosect, "a"' > conftest3.s
2393   echo '.byte 0' >> conftest3.s
2394   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2395      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2396      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2397      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2398         conftest2.o conftest3.o > /dev/null 2>&1; then
2399     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2400                          | sed -e '/myfoosect/!d' -e N`
2401     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2402       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2403         gcc_cv_ld_ro_rw_mix=read-only
2404       else
2405         gcc_cv_ld_ro_rw_mix=read-write
2406       fi
2407     fi
2408   fi
2409 changequote(,)dnl
2410   rm -f conftest.* conftest[123].*
2411 changequote([,])dnl
2413 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2414         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2415   [Define if your linker links a mix of read-only
2416    and read-write sections into a read-write section.])
2418 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2420 gcc_AC_INITFINI_ARRAY
2422 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2423 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2424   [elf,2,11,0],,
2425 [       .data
2426         .uleb128 L2 - L1
2428         .uleb128 1280
2429         .sleb128 -1010
2430 L2:],
2431 [[# GAS versions before 2.11 do not support uleb128,
2432   # despite appearing to.
2433   # ??? There exists an elf-specific test that will crash
2434   # the assembler.  Perhaps it's better to figure out whether
2435   # arbitrary sections are supported and try the test.
2436   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2437   if echo "$as_ver" | grep GNU > /dev/null; then
2438     as_vers=`echo $as_ver | sed -n \
2439         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2440     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2441     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2442     if test $as_major -eq 2 && test $as_minor -lt 11
2443     then :
2444     else gcc_cv_as_leb128=yes
2445     fi
2446   fi]],
2447   [AC_DEFINE(HAVE_AS_LEB128, 1,
2448     [Define if your assembler supports .sleb128 and .uleb128.])])
2450 # Check if we have assembler support for unwind directives.
2451 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2452   ,,
2453 [       .text
2454         .cfi_startproc
2455         .cfi_offset 0, 0
2456         .cfi_same_value 1
2457         .cfi_def_cfa 1, 2
2458         .cfi_escape 1, 2, 3, 4, 5
2459         .cfi_endproc],
2460 [case "$target" in
2461   *-*-solaris*)
2462     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2463     # read-only and read-write sections, we need to make sure that the
2464     # assembler used emits read-write .eh_frame sections.
2465     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2466       if test "x$gcc_cv_objdump" != x; then
2467         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2468                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2469           gcc_cv_as_cfi_directive=no
2470         else
2471           case "$target" in
2472             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2473               # On Solaris/x86, make sure that GCC and gas agree on using
2474               # read-only .eh_frame sections for 64-bit.
2475               if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2476                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2477                         sed -e /.eh_frame/!d -e N | \
2478                         grep READONLY > /dev/null; then
2479                 gcc_cv_as_cfi_directive=yes
2480               else
2481                 gcc_cv_as_cfi_directive=no
2482               fi
2483               ;;
2484             *)
2485               gcc_cv_as_cfi_directive=yes
2486               ;;
2487           esac 
2488         fi
2489       else
2490         # no objdump, err on the side of caution
2491         gcc_cv_as_cfi_directive=no
2492       fi
2493     else
2494       gcc_cv_as_cfi_directive=yes
2495     fi
2496     ;;
2497   *-*-*)
2498     gcc_cv_as_cfi_directive=yes
2499     ;;
2500 esac])
2501 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2502 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2503   ,,
2504 [       .text
2505         .cfi_startproc
2506         .cfi_adjust_cfa_offset 64
2507         .skip 75040, 0
2508         .cfi_adjust_cfa_offset 128
2509         .cfi_endproc],
2511 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2512     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2513    gcc_cv_as_cfi_advance_working=yes
2516 else
2517   # no objdump, err on the side of caution
2518   gcc_cv_as_cfi_advance_working=no
2520 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2521 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2522   [`if test $gcc_cv_as_cfi_directive = yes \
2523        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2524   [Define 0/1 if your assembler supports CFI directives.])
2526 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2527 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2528   gcc_cv_as_cfi_personality_directive, ,,
2529 [       .text
2530         .cfi_startproc
2531         .cfi_personality 0, symbol
2532         .cfi_endproc])
2533 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2534   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2535     then echo 1; else echo 0; fi`],
2536   [Define 0/1 if your assembler supports .cfi_personality.])
2538 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2539   gcc_cv_as_cfi_sections_directive, ,,
2540 [       .text
2541         .cfi_sections .debug_frame, .eh_frame
2542         .cfi_startproc
2543         .cfi_endproc],
2544 [case $target_os in
2545   win32 | pe | cygwin* | mingw32* | uwin*)
2546     # Need to check that we generated the correct relocation for the
2547     # .debug_frame section.  This was fixed for binutils 2.21.
2548     gcc_cv_as_cfi_sections_directive=no
2549     if test "x$gcc_cv_objdump" != x; then
2550      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2551         grep secrel > /dev/null; then
2552       gcc_cv_as_cfi_sections_directive=yes
2553      fi
2554     fi
2555     ;;
2556   *)
2557     gcc_cv_as_cfi_sections_directive=yes
2558     ;;
2559 esac])
2560 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2561 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2562   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2563     then echo 1; else echo 0; fi`],
2564   [Define 0/1 if your assembler supports .cfi_sections.])
2566 # GAS versions up to and including 2.11.0 may mis-optimize
2567 # .eh_frame data.
2568 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2569   [elf,2,12,0],,
2570 [       .text
2571 .LFB1:
2572         .4byte  0
2573 .L1:
2574         .4byte  0
2575 .LFE1:
2576         .section        .eh_frame,"aw",@progbits
2577 __FRAME_BEGIN__:
2578         .4byte  .LECIE1-.LSCIE1
2579 .LSCIE1:
2580         .4byte  0x0
2581         .byte   0x1
2582         .ascii "z\0"
2583         .byte   0x1
2584         .byte   0x78
2585         .byte   0x1a
2586         .byte   0x0
2587         .byte   0x4
2588         .4byte  1
2589         .p2align 1
2590 .LECIE1:
2591 .LSFDE1:
2592         .4byte  .LEFDE1-.LASFDE1
2593 .LASFDE1:
2594         .4byte  .LASFDE1-__FRAME_BEGIN__
2595         .4byte  .LFB1
2596         .4byte  .LFE1-.LFB1
2597         .byte   0x4
2598         .4byte  .LFE1-.LFB1
2599         .byte   0x4
2600         .4byte  .L1-.LFB1
2601 .LEFDE1:],
2602 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2603 cat > conftest.lit <<EOF
2604  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2605  0010 01000000 12000000 18000000 00000000  ................
2606  0020 08000000 04080000 0044               .........D      @&t@
2608 cat > conftest.big <<EOF
2609  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2610  0010 00000001 00000012 00000018 00000000  ................
2611  0020 00000008 04000000 0844               .........D      @&t@
2613   # If the assembler didn't choke, and we can objdump,
2614   # and we got the correct data, then succeed.
2615   # The text in the here-document typically retains its unix-style line
2616   # endings, while the output of objdump will use host line endings.
2617   # Therefore, use diff -b for the comparisons.
2618   if test x$gcc_cv_objdump != x \
2619   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2620      | tail -3 > conftest.got \
2621   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2622     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2623   then
2624     gcc_cv_as_eh_frame=yes
2625   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2626     gcc_cv_as_eh_frame=buggy
2627   else
2628     # Uh oh, what do we do now?
2629     gcc_cv_as_eh_frame=no
2630   fi])
2632 if test $gcc_cv_as_eh_frame = buggy; then
2633   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2634   [Define if your assembler mis-optimizes .eh_frame data.])
2637 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2638  [elf,2,12,0], [--fatal-warnings],
2639  [.section .rodata.str, "aMS", @progbits, 1])
2640 if test $gcc_cv_as_shf_merge = no; then
2641   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2642     [elf,2,12,0], [--fatal-warnings],
2643     [.section .rodata.str, "aMS", %progbits, 1])
2645 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2646   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2647 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2649 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2650  gcc_cv_as_comdat_group,
2651  [elf,2,16,0], [--fatal-warnings],
2652  [.section .text,"axG",@progbits,.foo,comdat])
2653 if test $gcc_cv_as_comdat_group = yes; then
2654   gcc_cv_as_comdat_group_percent=no
2655   gcc_cv_as_comdat_group_group=no
2656 else
2657  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2658    gcc_cv_as_comdat_group_percent,
2659    [elf,2,16,0], [--fatal-warnings],
2660    [.section .text,"axG",%progbits,.foo,comdat])
2661  if test $gcc_cv_as_comdat_group_percent = yes; then
2662    gcc_cv_as_comdat_group_group=no
2663  else
2664    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2665      gcc_cv_as_comdat_group_group=no
2666    fi
2667    case "${target}" in
2668      # Sun as uses a completely different syntax.
2669      *-*-solaris2*)
2670        case "${target}" in
2671          sparc*-*-solaris2*)
2672            conftest_s='
2673                .group foo,".text%foo",#comdat
2674                .section ".text%foo", #alloc,#execinstr,#progbits
2675                .globl foo
2676              foo:
2677              '
2678            ;;
2679          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2680            conftest_s='
2681                .group foo,.text%foo,#comdat
2682                .section .text%foo, "ax", @progbits
2683                .globl  foo
2684              foo:
2685              '
2686            ;;
2687        esac
2688        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2689          gcc_cv_as_comdat_group_group,
2690          ,, [$conftest_s])
2691        ;;
2692    esac
2693  fi
2695 if test x"$ld_is_gold" = xyes; then
2696   comdat_group=yes
2697 elif test $in_tree_ld = yes ; then
2698   comdat_group=no
2699   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 \
2700      && test $in_tree_ld_is_elf = yes; then
2701      comdat_group=yes
2702   fi
2703 elif echo "$ld_ver" | grep GNU > /dev/null; then
2704   comdat_group=yes
2705   if test 0"$ld_date" -lt 20050308; then
2706     if test -n "$ld_date"; then
2707       # If there was date string, but was earlier than 2005-03-08, fail
2708       comdat_group=no
2709     elif test "$ld_vers_major" -lt 2; then
2710       comdat_group=no
2711     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2712       comdat_group=no
2713     fi
2714   fi
2715 else
2716 changequote(,)dnl
2717   case "${target}" in
2718     *-*-solaris2.1[1-9]*)
2719       comdat_group=no
2720       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2721       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2722       # version 1.688.
2723       #
2724       # If using Sun as for COMDAT group as emitted by GCC, one needs at
2725       # least ld version 1.2267.
2726       if test "$ld_vers_major" -gt 1; then
2727         comdat_group=yes
2728       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2729         comdat_group=yes
2730       elif test "$ld_vers_minor" -ge 2267; then
2731         comdat_group=yes
2732       fi
2733       ;;
2734     *)
2735       # Assume linkers other than GNU ld don't support COMDAT group.
2736       comdat_group=no
2737       ;;
2738   esac
2739 changequote([,])dnl
2741 # Allow overriding the automatic COMDAT group tests above.
2742 AC_ARG_ENABLE(comdat,
2743   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2744   [comdat_group="$enable_comdat"])
2745 if test $comdat_group = no; then
2746   gcc_cv_as_comdat_group=no
2747   gcc_cv_as_comdat_group_percent=no
2748   gcc_cv_as_comdat_group_group=no
2750 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2751   [`if test $gcc_cv_as_comdat_group = yes \
2752     || test $gcc_cv_as_comdat_group_percent = yes \
2753     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2754 [Define 0/1 if your assembler and linker support COMDAT groups.])
2756 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2757  gcc_cv_as_discriminator,
2758  [2,19,51],,
2759 [       .text
2760         .file 1 "conf.c"
2761         .loc 1 1 0 discriminator 1],,
2762 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2763   [Define if your assembler supports the .loc discriminator sub-directive.])])
2765 # Thread-local storage - the check is heavily parameterized.
2766 conftest_s=
2767 tls_first_major=
2768 tls_first_minor=
2769 tls_as_opt=
2770 case "$target" in
2771 changequote(,)dnl
2772   alpha*-*-*)
2773     conftest_s='
2774         .section ".tdata","awT",@progbits
2775 foo:    .long   25
2776         .text
2777         ldq     $27,__tls_get_addr($29)         !literal!1
2778         lda     $16,foo($29)                    !tlsgd!1
2779         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2780         ldq     $27,__tls_get_addr($29)         !literal!2
2781         lda     $16,foo($29)                    !tlsldm!2
2782         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2783         ldq     $1,foo($29)                     !gotdtprel
2784         ldah    $2,foo($29)                     !dtprelhi
2785         lda     $3,foo($2)                      !dtprello
2786         lda     $4,foo($29)                     !dtprel
2787         ldq     $1,foo($29)                     !gottprel
2788         ldah    $2,foo($29)                     !tprelhi
2789         lda     $3,foo($2)                      !tprello
2790         lda     $4,foo($29)                     !tprel'
2791         tls_first_major=2
2792         tls_first_minor=13
2793         tls_as_opt=--fatal-warnings
2794         ;;
2795   cris-*-*|crisv32-*-*)
2796     conftest_s='
2797         .section ".tdata","awT",@progbits
2798 x:      .long   25
2799         .text
2800         move.d x:IE,$r10
2801         nop'
2802         tls_first_major=2
2803         tls_first_minor=20
2804         tls_as_opt=--fatal-warnings
2805         ;;
2806   frv*-*-*)
2807     conftest_s='
2808         .section ".tdata","awT",@progbits
2809 x:      .long   25
2810         .text
2811         call    #gettlsoff(x)'
2812         tls_first_major=2
2813         tls_first_minor=14
2814         ;;
2815   hppa*-*-linux*)
2816     conftest_s='
2817 t1:     .reg    %r20
2818 t2:     .reg    %r21
2819 gp:     .reg    %r19
2820         .section ".tdata","awT",@progbits
2821 foo:    .long   25
2822         .text
2823         .align  4
2824         addil LT%foo-$tls_gdidx$,gp
2825         ldo RT%foo-$tls_gdidx$(%r1),%arg0
2826         b __tls_get_addr
2827         nop             
2828         addil LT%foo-$tls_ldidx$,gp
2829         b __tls_get_addr
2830         ldo RT%foo-$tls_ldidx$(%r1),%arg0
2831         addil LR%foo-$tls_dtpoff$,%ret0
2832         ldo RR%foo-$tls_dtpoff$(%r1),%t1
2833         mfctl %cr27,%t1                 
2834         addil LT%foo-$tls_ieoff$,gp
2835         ldw RT%foo-$tls_ieoff$(%r1),%t2
2836         add %t1,%t2,%t3                 
2837         mfctl %cr27,%t1                 
2838         addil LR%foo-$tls_leoff$,%t1
2839         ldo RR%foo-$tls_leoff$(%r1),%t2'
2840         tls_first_major=2
2841         tls_first_minor=15
2842         tls_as_opt=--fatal-warnings
2843         ;;
2844   arm*-*-*)
2845     conftest_s='
2846         .section ".tdata","awT",%progbits
2847 foo:    .long   25
2848         .text
2849 .word foo(gottpoff)
2850 .word foo(tpoff)
2851 .word foo(tlsgd)
2852 .word foo(tlsldm)
2853 .word foo(tlsldo)'
2854         tls_first_major=2
2855         tls_first_minor=17
2856         ;;
2857   i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
2858     case "$target" in
2859       i[34567]86-*-solaris2.*)
2860         on_solaris=yes
2861         tga_func=___tls_get_addr
2862         ;;
2863       x86_64-*-solaris2.1[0-9]*)
2864         on_solaris=yes
2865         tga_func=__tls_get_addr
2866         ;;
2867       *)
2868         on_solaris=no
2869         ;;
2870     esac
2871     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2872       conftest_s='
2873         .section .tdata,"awt",@progbits'
2874       tls_first_major=0
2875       tls_first_minor=0
2876 changequote([,])dnl
2877       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
2878 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
2879 changequote(,)dnl
2880     else
2881       conftest_s='
2882         .section ".tdata","awT",@progbits'
2883       tls_first_major=2
2884       tls_first_minor=14
2885       tls_as_opt="--fatal-warnings"
2886     fi
2887     conftest_s="$conftest_s
2888 foo:    .long   25
2889         .text
2890         movl    %gs:0, %eax
2891         leal    foo@tlsgd(,%ebx,1), %eax
2892         leal    foo@tlsldm(%ebx), %eax
2893         leal    foo@dtpoff(%eax), %edx
2894         movl    foo@gottpoff(%ebx), %eax
2895         subl    foo@gottpoff(%ebx), %eax
2896         addl    foo@gotntpoff(%ebx), %eax
2897         movl    foo@indntpoff, %eax
2898         movl    \$foo@tpoff, %eax
2899         subl    \$foo@tpoff, %eax
2900         leal    foo@ntpoff(%ecx), %eax"
2901     ;;
2902   x86_64-*-*)
2903     conftest_s='
2904         .section ".tdata","awT",@progbits
2905 foo:    .long   25
2906         .text
2907         movq    %fs:0, %rax
2908         leaq    foo@TLSGD(%rip), %rdi
2909         leaq    foo@TLSLD(%rip), %rdi
2910         leaq    foo@DTPOFF(%rax), %rdx
2911         movq    foo@GOTTPOFF(%rip), %rax
2912         movq    $foo@TPOFF, %rax'
2913         tls_first_major=2
2914         tls_first_minor=14
2915         tls_as_opt=--fatal-warnings
2916         ;;
2917   ia64-*-*)
2918     conftest_s='
2919         .section ".tdata","awT",@progbits
2920 foo:    data8   25
2921         .text
2922         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2923         addl    r17 = @ltoff(@dtprel(foo#)), gp
2924         addl    r18 = @ltoff(@tprel(foo#)), gp
2925         addl    r19 = @dtprel(foo#), gp
2926         adds    r21 = @dtprel(foo#), r13
2927         movl    r23 = @dtprel(foo#)
2928         addl    r20 = @tprel(foo#), gp
2929         adds    r22 = @tprel(foo#), r13
2930         movl    r24 = @tprel(foo#)'
2931         tls_first_major=2
2932         tls_first_minor=13
2933         tls_as_opt=--fatal-warnings
2934         ;;
2935   mips*-*-*)
2936     conftest_s='
2937         .section .tdata,"awT",@progbits
2939         .word 2
2940         .text
2941         addiu $4, $28, %tlsgd(x)
2942         addiu $4, $28, %tlsldm(x)
2943         lui $4, %dtprel_hi(x)
2944         addiu $4, $4, %dtprel_lo(x)
2945         lw $4, %gottprel(x)($28)
2946         lui $4, %tprel_hi(x)
2947         addiu $4, $4, %tprel_lo(x)'
2948         tls_first_major=2
2949         tls_first_minor=16
2950         tls_as_opt='-32 --fatal-warnings'
2951         ;;
2952   m68k-*-*)
2953     conftest_s='
2954         .section .tdata,"awT",@progbits
2956         .word 2
2957         .text
2958 foo:
2959         move.l x@TLSGD(%a5),%a0
2960         move.l x@TLSLDM(%a5),%a0
2961         move.l x@TLSLDO(%a5),%a0
2962         move.l x@TLSIE(%a5),%a0
2963         move.l x@TLSLE(%a5),%a0'
2964         tls_first_major=2
2965         tls_first_minor=19
2966         tls_as_opt='--fatal-warnings'
2967         ;;
2968   aarch64*-*-*)
2969     conftest_s='
2970         .section ".tdata","awT",%progbits
2971 foo:    .long   25
2972         .text
2973         adrp  x0, :tlsgd:x
2974         add   x0, x0, #:tlsgd_lo12:x
2975         bl    __tls_get_addr
2976         nop'
2977         tls_first_major=2
2978         tls_first_minor=20
2979         tls_as_opt='--fatal-warnings'
2980         ;;
2981   powerpc-*-*)
2982     conftest_s='
2983         .section ".tdata","awT",@progbits
2984         .align 2
2985 ld0:    .space 4
2986 ld1:    .space 4
2987 x1:     .space 4
2988 x2:     .space 4
2989 x3:     .space 4
2990         .text
2991         addi 3,31,ld0@got@tlsgd
2992         bl __tls_get_addr
2993         addi 3,31,x1@got@tlsld
2994         bl __tls_get_addr
2995         addi 9,3,x1@dtprel
2996         addis 9,3,x2@dtprel@ha
2997         addi 9,9,x2@dtprel@l
2998         lwz 9,x3@got@tprel(31)
2999         add 9,9,x@tls
3000         addi 9,2,x1@tprel
3001         addis 9,2,x2@tprel@ha
3002         addi 9,9,x2@tprel@l'
3003         tls_first_major=2
3004         tls_first_minor=14
3005         tls_as_opt="-a32 --fatal-warnings"
3006         ;;
3007   powerpc64-*-*)
3008     conftest_s='
3009         .section ".tdata","awT",@progbits
3010         .align 3
3011 ld0:    .space 8
3012 ld1:    .space 8
3013 x1:     .space 8
3014 x2:     .space 8
3015 x3:     .space 8
3016         .text
3017         addi 3,2,ld0@got@tlsgd
3018         bl .__tls_get_addr
3019         nop
3020         addi 3,2,ld1@toc
3021         bl .__tls_get_addr
3022         nop
3023         addi 3,2,x1@got@tlsld
3024         bl .__tls_get_addr
3025         nop
3026         addi 9,3,x1@dtprel
3027         bl .__tls_get_addr
3028         nop
3029         addis 9,3,x2@dtprel@ha
3030         addi 9,9,x2@dtprel@l
3031         bl .__tls_get_addr
3032         nop
3033         ld 9,x3@got@dtprel(2)
3034         add 9,9,3
3035         bl .__tls_get_addr
3036         nop'
3037         tls_first_major=2
3038         tls_first_minor=14
3039         tls_as_opt="-a64 --fatal-warnings"
3040         ;;
3041   s390-*-*)
3042     conftest_s='
3043         .section ".tdata","awT",@progbits
3044 foo:    .long   25
3045         .text
3046         .long   foo@TLSGD
3047         .long   foo@TLSLDM
3048         .long   foo@DTPOFF
3049         .long   foo@NTPOFF
3050         .long   foo@GOTNTPOFF
3051         .long   foo@INDNTPOFF
3052         l       %r1,foo@GOTNTPOFF(%r12)
3053         l       %r1,0(%r1):tls_load:foo
3054         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3055         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3056         tls_first_major=2
3057         tls_first_minor=14
3058         tls_as_opt="-m31 --fatal-warnings"
3059         ;;
3060   s390x-*-*)
3061     conftest_s='
3062         .section ".tdata","awT",@progbits
3063 foo:    .long   25
3064         .text
3065         .quad   foo@TLSGD
3066         .quad   foo@TLSLDM
3067         .quad   foo@DTPOFF
3068         .quad   foo@NTPOFF
3069         .quad   foo@GOTNTPOFF
3070         lg      %r1,foo@GOTNTPOFF(%r12)
3071         larl    %r1,foo@INDNTPOFF
3072         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3073         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3074         tls_first_major=2
3075         tls_first_minor=14
3076         tls_as_opt="-m64 -Aesame --fatal-warnings"
3077         ;;
3078   sh-*-* | sh[34]-*-*)
3079     conftest_s='
3080         .section ".tdata","awT",@progbits
3081 foo:    .long   25
3082         .text
3083         .long   foo@TLSGD
3084         .long   foo@TLSLDM
3085         .long   foo@DTPOFF
3086         .long   foo@GOTTPOFF
3087         .long   foo@TPOFF'
3088         tls_first_major=2
3089         tls_first_minor=13
3090         tls_as_opt=--fatal-warnings
3091         ;;
3092   sparc*-*-*)
3093     case "$target" in
3094       sparc*-sun-solaris2.*)
3095         on_solaris=yes
3096         tga_func=__tls_get_addr
3097         ;;
3098       *)
3099         on_solaris=no
3100         ;;
3101     esac
3102     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3103       conftest_s='
3104         .section ".tdata",#alloc,#write,#tls'
3105         tls_first_major=0
3106         tls_first_minor=0
3107     else
3108       conftest_s='
3109         .section ".tdata","awT",@progbits'
3110         tls_first_major=2
3111         tls_first_minor=14
3112         tls_as_opt="-32 --fatal-warnings"
3113     fi
3114     conftest_s="$conftest_s
3115 foo:    .long   25
3116         .text
3117         sethi   %tgd_hi22(foo), %o0
3118         add     %o0, %tgd_lo10(foo), %o1
3119         add     %l7, %o1, %o0, %tgd_add(foo)
3120         call    __tls_get_addr, %tgd_call(foo)
3121         sethi   %tldm_hi22(foo), %l1
3122         add     %l1, %tldm_lo10(foo), %l2
3123         add     %l7, %l2, %o0, %tldm_add(foo)
3124         call    __tls_get_addr, %tldm_call(foo)
3125         sethi   %tldo_hix22(foo), %l3
3126         xor     %l3, %tldo_lox10(foo), %l4
3127         add     %o0, %l4, %l5, %tldo_add(foo)
3128         sethi   %tie_hi22(foo), %o3
3129         add     %o3, %tie_lo10(foo), %o3
3130         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3131         add     %g7, %o2, %o4, %tie_add(foo)
3132         sethi   %tle_hix22(foo), %l1
3133         xor     %l1, %tle_lox10(foo), %o5
3134         ld      [%g7 + %o5], %o1"
3135         ;;
3136   tilepro*-*-*)
3137       conftest_s='
3138         .section ".tdata","awT",@progbits
3139 foo:    .long   25
3140         .text
3141         addli   r0, zero, tls_gd(foo)
3142         auli    r0, zero, tls_gd_ha16(foo)
3143         addli   r0, r0, tls_gd_lo16(foo)
3144         jal     __tls_get_addr
3145         addli   r0, zero, tls_ie(foo)
3146         auli    r0, r0, tls_ie_ha16(foo)
3147         addli   r0, r0, tls_ie_lo16(foo)'
3148         tls_first_major=2
3149         tls_first_minor=22
3150         tls_as_opt="--fatal-warnings"
3151         ;;
3152   tilegx*-*-*)
3153       conftest_s='
3154         .section ".tdata","awT",@progbits
3155 foo:    .long   25
3156         .text
3157         shl16insli r0, zero, hw0_last_tls_gd(foo)
3158         shl16insli r0, zero, hw1_last_tls_gd(foo)
3159         shl16insli r0, r0,   hw0_tls_gd(foo)
3160         jal        __tls_get_addr
3161         shl16insli r0, zero, hw1_last_tls_ie(foo)
3162         shl16insli r0, r0,   hw0_tls_ie(foo)'
3163         tls_first_major=2
3164         tls_first_minor=22
3165         tls_as_opt="--fatal-warnings"
3166         ;;
3167   xtensa*-*-*)
3168     conftest_s='
3169         .section ".tdata","awT",@progbits
3170 foo:    .long   25
3171         .text
3172         movi    a8, foo@TLSFUNC
3173         movi    a10, foo@TLSARG
3174         callx8.tls a8, foo@TLSCALL'
3175         tls_first_major=2
3176         tls_first_minor=19
3177         ;;
3178 changequote([,])dnl
3179 esac
3180 set_have_as_tls=no
3181 if test "x$enable_tls" = xno ; then
3182   : # TLS explicitly disabled.
3183 elif test "x$enable_tls" = xyes ; then
3184   set_have_as_tls=yes # TLS explicitly enabled.
3185 elif test -z "$tls_first_major"; then
3186   : # If we don't have a check, assume no support.
3187 else
3188   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3189   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3190   [set_have_as_tls=yes])
3192 case "$target" in
3193   # TLS was introduced in the Solaris 9 FCS release.  Support for GNU-style
3194   # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier
3195   # Sun style that Sun ld and GCC don't support any longer.
3196   *-*-solaris2.*)
3197     AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3198     ld_tls_support=no
3199     # Check ld and ld.so.1 TLS support.
3200     if echo "$ld_ver" | grep GNU > /dev/null; then
3201       # Assume all interesting versions of GNU ld have TLS support.
3202       # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3203       ld_tls_support=yes
3204     else
3205       case "$target" in
3206         # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3207         i?86-*-solaris2.9)
3208           min_tls_ld_vers_minor=374
3209           ;;
3210         # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3211         sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3212           min_tls_ld_vers_minor=343
3213           ;;
3214       esac
3215       if test "$ld_vers_major" -gt 1 || \
3216         test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3217         ld_tls_support=yes
3218       else
3219         set_have_as_tls=no
3220       fi
3221     fi
3222     AC_MSG_RESULT($ld_tls_support)
3224     save_LIBS="$LIBS"
3225     save_LDFLAGS="$LDFLAGS"
3226     LIBS=
3227     LDFLAGS=
3229     AC_MSG_CHECKING(library containing $tga_func)
3230     # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3231     # (32-bit x86) only lived in libthread, so check for that.  Keep
3232     # set_have_as_tls if found, disable if not.
3233     AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3234     # Clear LIBS if we cannot support TLS.
3235     if test $set_have_as_tls = no; then
3236       LIBS=
3237     fi
3238     # Always define LIB_TLS_SPEC, even without TLS support.
3239     AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3240         [Define to the library containing __tls_get_addr/___tls_get_addr.])
3241     AC_MSG_RESULT($LIBS)
3243     LIBS="$save_LIBS"
3244     LDFLAGS="$save_LDFLAGS"
3245     ;;
3246 esac
3247 if test $set_have_as_tls = yes ; then
3248   AC_DEFINE(HAVE_AS_TLS, 1,
3249             [Define if your assembler and linker support thread-local storage.])
3252 # Target-specific assembler checks.
3254 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3255 gcc_cv_ld_static_dynamic=no
3256 gcc_cv_ld_static_option='-Bstatic'
3257 gcc_cv_ld_dynamic_option='-Bdynamic'
3258 if test $in_tree_ld = yes ; then
3259   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
3260     gcc_cv_ld_static_dynamic=yes
3261   fi
3262 elif test x$gcc_cv_ld != x; then
3263   # Check if linker supports -Bstatic/-Bdynamic option
3264   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3265      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3266       gcc_cv_ld_static_dynamic=yes
3267   else
3268     case "$target" in
3269       # HP-UX ld uses -a flags to select between shared and archive.
3270       *-*-hpux*)
3271         if test x"$gnu_ld" = xno; then
3272           gcc_cv_ld_static_dynamic=yes
3273           gcc_cv_ld_static_option="-aarchive_shared"
3274           gcc_cv_ld_dynamic_option="-adefault"
3275         fi
3276         ;;
3277       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3278       *-*-solaris2*)
3279         gcc_cv_ld_static_dynamic=yes
3280         ;;
3281     esac
3282   fi
3284 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3285         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3286 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3287         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3288 [Define to the linker option to disable use of shared objects.])
3289         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3290 [Define to the linker option to enable use of shared objects.])
3292 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3294 if test x"$demangler_in_ld" = xyes; then
3295   AC_MSG_CHECKING(linker --demangle support)
3296   gcc_cv_ld_demangle=no
3297   if test $in_tree_ld = yes; then
3298     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 \
3299       gcc_cv_ld_demangle=yes
3300     fi
3301   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3302     # Check if the GNU linker supports --demangle option
3303     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3304       gcc_cv_ld_demangle=yes
3305     fi
3306   fi
3307   if test x"$gcc_cv_ld_demangle" = xyes; then
3308     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3309 [Define if your linker supports --demangle option.])
3310   fi
3311   AC_MSG_RESULT($gcc_cv_ld_demangle)
3314 AC_MSG_CHECKING(linker plugin support)
3315 gcc_cv_lto_plugin=0
3316 if test -f liblto_plugin.la; then
3317   save_ld_ver="$ld_ver"
3318   save_ld_vers_major="$ld_vers_major"
3319   save_ld_vers_minor="$ld_vers_minor"
3320   save_ld_is_gold="$ld_is_gold"
3322   ld_is_gold=no
3324   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3325     ld_ver="GNU ld"
3326     # FIXME: ld_is_gold?
3327     ld_vers_major="$gcc_cv_gld_major_version"
3328     ld_vers_minor="$gcc_cv_gld_minor_version"
3329   else
3330     # Determine plugin linker version.
3331     # FIXME: Partial duplicate from above, generalize.
3332 changequote(,)dnl
3333     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3334     if echo "$ld_ver" | grep GNU > /dev/null; then
3335       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3336         ld_is_gold=yes
3337         ld_vers=`echo $ld_ver | sed -n \
3338             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3339       else
3340         ld_vers=`echo $ld_ver | sed -n \
3341             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3342       fi
3343       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3344       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3345     fi
3346 changequote([,])dnl
3347   fi
3349   # Determine plugin support.
3350   if echo "$ld_ver" | grep GNU > /dev/null; then
3351     # Require GNU ld or gold 2.21+ for plugin support by default.
3352     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3353       gcc_cv_lto_plugin=2
3354     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3355     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3356       gcc_cv_lto_plugin=1
3357     fi
3358   fi
3360   ld_ver="$save_ld_ver"
3361   ld_vers_major="$save_ld_vers_major"
3362   ld_vers_minor="$save_ld_vers_minor"
3363   ld_is_gold="$save_ld_is_gold"
3365 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3366   [Define to the level of your linker's plugin support.])
3367 AC_MSG_RESULT($gcc_cv_lto_plugin)
3369 case "$target" in
3370   # All TARGET_ABI_OSF targets.
3371   alpha*-*-linux* | alpha*-*-*bsd*)
3372     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3373         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3374 [       .set nomacro
3375         .text
3376         extbl   $3, $2, $3      !lituse_bytoff!1
3377         ldq     $2, a($29)      !literal!1
3378         ldq     $4, b($29)      !literal!2
3379         ldq_u   $3, 0($2)       !lituse_base!1
3380         ldq     $27, f($29)     !literal!5
3381         jsr     $26, ($27), f   !lituse_jsr!5
3382         ldah    $29, 0($26)     !gpdisp!3
3383         lda     $0, c($29)      !gprel
3384         ldah    $1, d($29)      !gprelhigh
3385         lda     $1, d($1)       !gprellow
3386         lda     $29, 0($29)     !gpdisp!3],,
3387     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3388   [Define if your assembler supports explicit relocations.])])
3389     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3390         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3391 [       .set nomacro
3392         .text
3393         ldq     $27, a($29)     !literal!1
3394         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3395     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3396   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3397     ;;
3399   cris-*-*)
3400     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3401       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3402       [-no-mul-bug-abort], [.text],,
3403       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3404                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3405     ;;
3407   sparc*-*-*)
3408     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3409       [.register %g2, #scratch],,
3410       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3411                 [Define if your assembler supports .register.])])
3413     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3414       [-relax], [.text],,
3415       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3416                 [Define if your assembler supports -relax option.])])
3418     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3419       gcc_cv_as_sparc_gotdata_op,,
3420       [-K PIC],
3421 [.text
3422 .align 4
3423 foo:
3424         nop
3425 bar:
3426         sethi %gdop_hix22(foo), %g1
3427         xor    %g1, %gdop_lox10(foo), %g1
3428         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3429       [if test x$gcc_cv_ld != x \
3430        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3431          if test x$gcc_cv_objdump != x; then
3432            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3433               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3434                gcc_cv_as_sparc_gotdata_op=no
3435            else
3436                gcc_cv_as_sparc_gotdata_op=yes
3437            fi
3438          fi
3439        fi
3440        rm -f conftest],
3441       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3442                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3444     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3445       gcc_cv_as_sparc_ua_pcrel,,
3446       [-K PIC],
3447 [.text
3448 foo:
3449         nop
3450 .data
3451 .align 4
3452 .byte 0
3453 .uaword %r_disp32(foo)],
3454       [if test x$gcc_cv_ld != x \
3455        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3456          gcc_cv_as_sparc_ua_pcrel=yes
3457        fi
3458        rm -f conftest],
3459       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3460                 [Define if your assembler and linker support unaligned PC relative relocs.])
3462       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3463         gcc_cv_as_sparc_ua_pcrel_hidden,,
3464         [-K PIC],
3465 [.data
3466 .align 4
3467 .byte 0x31
3468 .uaword %r_disp32(foo)
3469 .byte 0x32, 0x33, 0x34
3470 .global foo
3471 .hidden foo
3472 foo:
3473 .skip 4],
3474         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3475          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3476          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3477             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3478             if $gcc_cv_objdump -R conftest 2> /dev/null \
3479                | grep 'DISP32' > /dev/null 2>&1; then
3480                 :
3481             else
3482                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3483             fi
3484          fi
3485          rm -f conftest],
3486          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3487                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3488     ]) # unaligned pcrel relocs
3490     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3491       gcc_cv_as_sparc_offsetable_lo10,,
3492       [-xarch=v9],
3493 [.text
3494         or %g1, %lo(ab) + 12, %g1
3495         or %g1, %lo(ab + 12), %g1],
3496       [if test x$gcc_cv_objdump != x \
3497        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3498           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3499          gcc_cv_as_sparc_offsetable_lo10=yes
3500        fi],
3501        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3502                  [Define if your assembler supports offsetable %lo().])])
3504     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3505       gcc_cv_as_sparc_fmaf,,
3506       [-xarch=v9d],
3507       [.text
3508        .register %g2, #scratch
3509        .register %g3, #scratch
3510        .align 4
3511        fmaddd %f0, %f2, %f4, %f6
3512        addxccc %g1, %g2, %g3
3513        fsrl32 %f2, %f4, %f8
3514        fnaddd %f10, %f12, %f14],,
3515       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3516                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3517     ;;
3519 changequote(,)dnl
3520   i[34567]86-*-* | x86_64-*-*)
3521 changequote([,])dnl
3522     case $target_os in
3523       cygwin*)
3524         # Full C++ conformance when using a shared libstdc++-v3 requires some
3525         # support from the Cygwin DLL, which in more recent versions exports
3526         # wrappers to aid in interposing and redirecting operators new, delete,
3527         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3528         # are configuring for a version of Cygwin that exports the wrappers.
3529         if test x$host = x$target; then
3530           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3531         else
3532           # Can't check presence of libc functions during cross-compile, so
3533           # we just have to assume we're building for an up-to-date target.
3534           gcc_ac_cygwin_dll_wrappers=yes
3535         fi
3536         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3537           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3538           [Define if you want to generate code by default that assumes that the
3539            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3540     esac
3541     case $target_os in
3542       cygwin* | pe | mingw32* | interix*)
3543         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3544         # definition is used unconditionally to initialise the default state of
3545         # the target option variable that governs usage of the feature.
3546         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3547          [2,19,52],,[.comm foo,1,32])
3548         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3549           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3550           [Define if your assembler supports specifying the alignment
3551            of objects allocated using the GAS .comm command.])
3552         # Used for DWARF 2 in PE
3553         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3554           gcc_cv_as_ix86_pe_secrel32,
3555           [2,15,91],,
3556 [.text
3557 foo:    nop
3558 .data
3559         .secrel32 foo],
3560           [if test x$gcc_cv_ld != x \
3561            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3562              gcc_cv_as_ix86_pe_secrel32=yes
3563            fi
3564            rm -f conftest],
3565           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3566             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3567         # Test if the assembler supports the extended form of the .section
3568         # directive that specifies section alignment.  LTO support uses this,
3569         # but normally only after installation, so we warn but don't fail the
3570         # configure if LTO is enabled but the assembler does not support it.
3571         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3572           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3573         if test x$gcc_cv_as_section_has_align != xyes; then
3574           case ",$enable_languages," in
3575             *,lto,*)
3576               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3577               ;;
3578           esac
3579         fi
3580         # Test if the assembler supports the section flag 'e' for specifying
3581         # an excluded section.
3582         gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3583           [2,22,51],,
3584 [.section foo1,"e"
3585 .byte 0,0,0,0])
3586         AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3587           [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3588           [Define if your assembler supports specifying the section flag e.])
3589         ;;
3590     esac
3592     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3593        gcc_cv_as_ix86_filds,,,
3594        [filds mem; fists mem],,
3595        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3596          [Define if your assembler uses filds and fists mnemonics.])])
3598     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3599        gcc_cv_as_ix86_fildq,,,
3600        [fildq mem; fistpq mem],,
3601        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3602          [Define if your assembler uses fildq and fistq mnemonics.])])
3604     gcc_GAS_CHECK_FEATURE([cmov syntax],
3605       gcc_cv_as_ix86_cmov_sun_syntax,,,
3606       [cmovl.l %edx, %eax],,
3607       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3608         [Define if your assembler supports the Sun syntax for cmov.])])
3610     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3611       gcc_cv_as_ix86_ffreep,,,
3612       [ffreep %st(1)],,
3613       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3614         [Define if your assembler supports the ffreep mnemonic.])])
3616     gcc_GAS_CHECK_FEATURE([.quad directive],
3617       gcc_cv_as_ix86_quad,,,
3618       [.quad 0],,
3619       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3620         [Define if your assembler supports the .quad directive.])])
3622     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3623       gcc_cv_as_ix86_sahf,,,
3624       [.code64
3625        sahf],,
3626       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3627         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3629     gcc_GAS_CHECK_FEATURE([hle prefixes],
3630       gcc_cv_as_ix86_hle,,,
3631       [lock xacquire cmpxchg %esi, (%ecx)],,
3632       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3633         [Define if your assembler supports HLE prefixes.])])
3635     gcc_GAS_CHECK_FEATURE([swap suffix],
3636       gcc_cv_as_ix86_swap,,,
3637       [movl.s %esp, %ebp],,
3638       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3639         [Define if your assembler supports the swap suffix.])])
3641     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3642       gcc_cv_as_ix86_diff_sect_delta,,,
3643       [.section .rodata
3644 .L1:
3645         .long .L2-.L1
3646         .long .L3-.L1
3647         .text
3648 .L3:    nop
3649 .L2:    nop],,
3650       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3651         [Define if your assembler supports the subtraction of symbols in different sections.])])
3653     # These two are used unconditionally by i386.[ch]; it is to be defined
3654     # to 1 if the feature is present, 0 otherwise.
3655     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3656         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3657 [       .text
3658 .L0:
3659         nop
3660         .data
3661         .long .L0@GOTOFF])
3662     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3663       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3664       [Define true if the assembler supports '.long foo@GOTOFF'.])
3666     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3667         gcc_cv_as_ix86_rep_lock_prefix,,,
3668         [rep movsl
3669          rep ret
3670          rep nop
3671          rep bsf %ecx, %eax
3672          rep bsr %ecx, %eax
3673          lock addl %edi, (%eax,%esi)
3674          lock orl $0, (%esp)],,
3675         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3676           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3678     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3679         gcc_cv_as_ix86_tlsgdplt,,,
3680         [call    tls_gd@tlsgdplt],
3681         [if test x$gcc_cv_ld != x \
3682          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3683            gcc_cv_as_ix86_tlsgdplt=yes
3684          fi
3685          rm -f conftest],
3686       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3687         [Define if your assembler and linker support @tlsgdplt.])])
3689     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3690         gcc_cv_as_ix86_tlsldmplt,,,
3691         [tls_ld:
3692          call    tls_ld@tlsldmplt],
3693         [if test x$gcc_cv_ld != x \
3694          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3695            gcc_cv_as_ix86_tlsldmplt=yes
3696          fi
3697          rm -f conftest],
3698       [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3699         [Define if your assembler and linker support @tlsldmplt.])])
3701     ;;
3703   ia64*-*-*)
3704     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3705         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3706 [       .text
3707         addl r15 = @ltoffx(x#), gp
3708         ;;
3709         ld8.mov r16 = [[r15]], x#],,
3710     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3711           [Define if your assembler supports ltoffx and ldxmov relocations.])])
3713     ;;
3715   powerpc*-*-*)
3716     case $target in
3717       *-*-aix*) conftest_s='    .machine "pwr5"
3718         .csect .text[[PR]]
3719         mfcr 3,128';;
3720       *-*-darwin*)
3721         gcc_GAS_CHECK_FEATURE([.machine directive support],
3722           gcc_cv_as_machine_directive,,,
3723           [     .machine ppc7400])
3724         if test x$gcc_cv_as_machine_directive != xyes; then
3725           echo "*** This target requires an assembler supporting \".machine\"" >&2
3726           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3727           test x$build = x$target && exit 1
3728         fi
3729         conftest_s='    .text
3730         mfcr r3,128';;
3731       *) conftest_s='   .machine power4
3732         .text
3733         mfcr 3,128';;
3734     esac
3736     gcc_GAS_CHECK_FEATURE([mfcr field support],
3737       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3738       [$conftest_s],,
3739       [AC_DEFINE(HAVE_AS_MFCRF, 1,
3740           [Define if your assembler supports mfcr field.])])
3742     case $target in
3743       *-*-aix*) conftest_s='    .machine "pwr5"
3744         .csect .text[[PR]]
3745         popcntb 3,3';;
3746       *) conftest_s='   .machine power5
3747         .text
3748         popcntb 3,3';;
3749     esac
3751     gcc_GAS_CHECK_FEATURE([popcntb support],
3752       gcc_cv_as_powerpc_popcntb, [2,17,0],,
3753       [$conftest_s],,
3754       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3755           [Define if your assembler supports popcntb field.])])
3757     case $target in
3758       *-*-aix*) conftest_s='    .machine "pwr5x"
3759         .csect .text[[PR]]
3760         frin 1,1';;
3761       *) conftest_s='   .machine power5
3762         .text
3763         frin 1,1';;
3764     esac
3766     gcc_GAS_CHECK_FEATURE([fp round support],
3767       gcc_cv_as_powerpc_fprnd, [2,17,0],,
3768       [$conftest_s],,
3769       [AC_DEFINE(HAVE_AS_FPRND, 1,
3770           [Define if your assembler supports fprnd.])])
3772     case $target in
3773       *-*-aix*) conftest_s='    .machine "pwr6"
3774         .csect .text[[PR]]
3775         mffgpr 1,3';;
3776       *) conftest_s='   .machine power6
3777         .text
3778         mffgpr 1,3';;
3779     esac
3781     gcc_GAS_CHECK_FEATURE([move fp gpr support],
3782       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
3783       [$conftest_s],,
3784       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3785           [Define if your assembler supports mffgpr and mftgpr.])])
3787     case $target in
3788       *-*-aix*) conftest_s='    .csect .text[[PR]]
3789 LCF..0:
3790         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3791       *-*-darwin*)
3792         conftest_s='    .text
3793 LCF0:
3794         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3795       *) conftest_s='   .text
3796 .LCF0:
3797         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3798     esac
3800     gcc_GAS_CHECK_FEATURE([rel16 relocs],
3801       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3802       [$conftest_s],,
3803       [AC_DEFINE(HAVE_AS_REL16, 1,
3804           [Define if your assembler supports R_PPC_REL16 relocs.])])
3806     case $target in
3807       *-*-aix*) conftest_s='    .machine "pwr6"
3808         .csect .text[[PR]]
3809         cmpb 3,4,5';;
3810       *) conftest_s='   .machine power6
3811         .text
3812         cmpb 3,4,5';;
3813     esac
3815     gcc_GAS_CHECK_FEATURE([compare bytes support],
3816       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3817       [$conftest_s],,
3818       [AC_DEFINE(HAVE_AS_CMPB, 1,
3819           [Define if your assembler supports cmpb.])])
3821     case $target in
3822       *-*-aix*) conftest_s='    .machine "pwr6"
3823         .csect .text[[PR]]
3824         dadd 1,2,3';;
3825       *) conftest_s='   .machine power6
3826         .text
3827         dadd 1,2,3';;
3828     esac
3830     gcc_GAS_CHECK_FEATURE([decimal float support],
3831       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
3832       [$conftest_s],,
3833       [AC_DEFINE(HAVE_AS_DFP, 1,
3834           [Define if your assembler supports DFP instructions.])])
3836     case $target in
3837       *-*-aix*) conftest_s='    .machine "pwr7"
3838         .csect .text[[PR]]
3839         lxvd2x 1,2,3';;
3840       *) conftest_s='   .machine power7
3841         .text
3842         lxvd2x 1,2,3';;
3843     esac
3845     gcc_GAS_CHECK_FEATURE([vector-scalar support],
3846       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
3847       [$conftest_s],,
3848       [AC_DEFINE(HAVE_AS_VSX, 1,
3849           [Define if your assembler supports VSX instructions.])])
3851     case $target in
3852       *-*-aix*) conftest_s='    .machine "pwr7"
3853         .csect .text[[PR]]
3854         popcntd 3,3';;
3855       *) conftest_s='   .machine power7
3856         .text
3857         popcntd 3,3';;
3858     esac
3860     gcc_GAS_CHECK_FEATURE([popcntd support],
3861       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3862       [$conftest_s],,
3863       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3864           [Define if your assembler supports POPCNTD instructions.])])
3866     case $target in
3867       *-*-aix*) conftest_s='    .csect .text[[PR]]
3868         lwsync';;
3869       *) conftest_s='   .text
3870         lwsync';;
3871     esac
3873     gcc_GAS_CHECK_FEATURE([lwsync support],
3874       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3875       [$conftest_s],,
3876       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3877           [Define if your assembler supports LWSYNC instructions.])])
3879     case $target in
3880       *-*-aix*) conftest_s='    .machine "476"
3881         .csect .text[[PR]]
3882         dci 0';;
3883       *) conftest_s='   .machine "476"
3884         .text
3885         dci 0';;
3886     esac
3888     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
3889       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
3890       [$conftest_s],,
3891       [AC_DEFINE(HAVE_AS_DCI, 1,
3892           [Define if your assembler supports the DCI/ICI instructions.])])
3894     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3895       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3896       [.gnu_attribute 4,1],,
3897       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3898           [Define if your assembler supports .gnu_attribute.])])
3900     gcc_GAS_CHECK_FEATURE([tls marker support],
3901       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3902       [ bl __tls_get_addr(x@tlsgd)],,
3903       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3904           [Define if your assembler supports arg info for __tls_get_addr.])])
3906     case $target in
3907       *-*-aix*)
3908         gcc_GAS_CHECK_FEATURE([.ref support],
3909           gcc_cv_as_aix_ref, [2,21,0],,
3910           [     .csect stuff[[rw]]
3911              stuff:
3912                 .long 1
3913                 .extern sym
3914                 .ref sym
3915           ],,
3916           [AC_DEFINE(HAVE_AS_REF, 1,
3917             [Define if your assembler supports .ref])])
3918         ;;
3919     esac
3920     ;;
3922   mips*-*-*)
3923     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3924       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3925 [       lw $4,%gp_rel(foo)($4)],,
3926       [if test x$target_cpu_default = x
3927        then target_cpu_default=MASK_EXPLICIT_RELOCS
3928        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3929        fi])
3930     gcc_GAS_CHECK_FEATURE([-mno-shared support],
3931       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3932       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3933                  [Define if the assembler understands -mno-shared.])])
3935     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3936       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3937       [.gnu_attribute 4,1],,
3938       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3939           [Define if your assembler supports .gnu_attribute.])])
3941     gcc_GAS_CHECK_FEATURE([.dtprelword support],
3942       gcc_cv_as_mips_dtprelword, [2,18,0],,
3943       [.section .tdata,"awT",@progbits
3945         .word 2
3946         .text
3947         .dtprelword x+0x8000],,
3948       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3949           [Define if your assembler supports .dtprelword.])])
3951     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
3952       gcc_cv_as_mips_dspr1_mult,,,
3953 [       .set    mips32r2
3954         .set    nodspr2
3955         .set    dsp
3956         madd    $ac3,$4,$5
3957         maddu   $ac3,$4,$5
3958         msub    $ac3,$4,$5
3959         msubu   $ac3,$4,$5
3960         mult    $ac3,$4,$5
3961         multu   $ac3,$4,$5],,
3962       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
3963           [Define if your assembler supports DSPR1 mult.])])
3965     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3966     gcc_cv_as_ld_jalr_reloc=no
3967     if test $gcc_cv_as_mips_explicit_relocs = yes; then
3968       if test $in_tree_ld = yes ; then
3969         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 \
3970            && test $in_tree_ld_is_elf = yes; then
3971           gcc_cv_as_ld_jalr_reloc=yes
3972         fi
3973       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3974         echo '  .ent x' > conftest.s
3975         echo 'x:        ld $2,%got_disp(y)($3)' >> conftest.s
3976         echo '  ld $25,%call16(y)($28)' >> conftest.s
3977         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
3978         echo '1:        jalr $25' >> conftest.s
3979         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
3980         echo '1:        jalr $25' >> conftest.s
3981         echo '  .end x' >> conftest.s
3982         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
3983            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
3984           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
3985              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
3986             gcc_cv_as_ld_jalr_reloc=yes
3987           fi
3988         fi
3989         rm -f conftest.*
3990       fi
3991     fi
3992     if test $gcc_cv_as_ld_jalr_reloc = yes; then
3993       if test x$target_cpu_default = x; then
3994         target_cpu_default=MASK_RELAX_PIC_CALLS
3995       else
3996         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
3997       fi
3998     fi
3999     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4001     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4002       [gcc_cv_ld_mips_personality_relaxation],
4003       [gcc_cv_ld_mips_personality_relaxation=no
4004        if test $in_tree_ld = yes ; then
4005          if test "$gcc_cv_gld_major_version" -eq 2 \
4006                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4007                  -o "$gcc_cv_gld_major_version" -gt 2; then
4008            gcc_cv_ld_mips_personality_relaxation=yes
4009          fi
4010        elif test x$gcc_cv_as != x \
4011                  -a x$gcc_cv_ld != x \
4012                  -a x$gcc_cv_readelf != x ; then
4013          cat > conftest.s <<EOF
4014         .cfi_startproc
4015         .cfi_personality 0x80,indirect_ptr
4016         .ent test
4017 test:
4018         nop
4019         .end test
4020         .cfi_endproc
4022         .section .data,"aw",@progbits
4023 indirect_ptr:
4024         .dc.a personality
4026          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4027             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4028            if $gcc_cv_readelf -d conftest 2>&1 \
4029               | grep TEXTREL > /dev/null 2>&1; then
4030              :
4031            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4032                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4033              :
4034            else
4035              gcc_cv_ld_mips_personality_relaxation=yes
4036            fi
4037          fi
4038        fi
4039        rm -f conftest.s conftest.o conftest])
4040     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4041             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4042       [Define if your linker can relax absolute .eh_frame personality
4043 pointers into PC-relative form.])
4044     fi
4045     ;;
4046 esac
4048 # Mips and HP-UX need the GNU assembler.
4049 # Linux on IA64 might be able to use the Intel assembler.
4051 case "$target" in
4052   mips*-*-* | *-*-hpux* )
4053     if test x$gas_flag = xyes \
4054        || test x"$host" != x"$build" \
4055        || test ! -x "$gcc_cv_as" \
4056        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4057       :
4058     else
4059       echo "*** This configuration requires the GNU assembler" >&2
4060       exit 1
4061     fi
4062     ;;
4063 esac
4065 # ??? Not all targets support dwarf2 debug_line, even within a version
4066 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4067 # info to the output file.  So, as supported targets are added to gas 2.11,
4068 # add some instruction here to (also) show we expect this might work.
4069 # ??? Once 2.11 is released, probably need to add first known working
4070 # version to the per-target configury.
4071 case "$cpu_type" in
4072   alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \
4073   | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa)
4074     insn="nop"
4075     ;;
4076   ia64 | s390)
4077     insn="nop 0"
4078     ;;
4079   mmix)
4080     insn="swym 0"
4081     ;;
4082 esac
4083 if test x"$insn" != x; then
4084  conftest_s="\
4085         .file 1 \"conftest.s\"
4086         .loc 1 3 0
4087         $insn"
4088  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4089   gcc_cv_as_dwarf2_debug_line,
4090   [elf,2,11,0],, [$conftest_s],
4091   [if test x$gcc_cv_objdump != x \
4092    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4093       | grep debug_line > /dev/null 2>&1; then
4094      gcc_cv_as_dwarf2_debug_line=yes
4095    fi])
4097 # The .debug_line file table must be in the exact order that
4098 # we specified the files, since these indices are also used
4099 # by DW_AT_decl_file.  Approximate this test by testing if
4100 # the assembler bitches if the same index is assigned twice.
4101  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4102   gcc_cv_as_dwarf2_file_buggy,,,
4103 [       .file 1 "foo.s"
4104         .file 1 "bar.s"])
4106  if test $gcc_cv_as_dwarf2_debug_line = yes \
4107  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4108         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4109   [Define if your assembler supports dwarf2 .file/.loc directives,
4110    and preserves file table indices exactly as given.])
4111  fi
4113  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4114   gcc_cv_as_gdwarf2_flag,
4115   [elf,2,11,0], [--gdwarf2], [$insn],,
4116   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4117 [Define if your assembler supports the --gdwarf2 option.])])
4119  gcc_GAS_CHECK_FEATURE([--gstabs option],
4120   gcc_cv_as_gstabs_flag,
4121   [elf,2,11,0], [--gstabs], [$insn],
4122   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4123    # and warns about it, but still exits successfully.  So check for
4124    # this.
4125    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4126    then :
4127    else gcc_cv_as_gstabs_flag=yes
4128    fi],
4129   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4130 [Define if your assembler supports the --gstabs option.])])
4132  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4133   gcc_cv_as_debug_prefix_map_flag,
4134   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4135   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4136 [Define if your assembler supports the --debug-prefix-map option.])])
4139 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4140  ,,
4141 [.lcomm bar,4,16],,
4142 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4143   [Define if your assembler supports .lcomm with an alignment field.])])
4145 AC_ARG_ENABLE(gnu-unique-object,
4146  [AS_HELP_STRING([--enable-gnu-unique-object],
4147    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4148  [case $enable_gnu_unique_object in
4149     yes | no) ;;
4150     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4151 Valid choices are 'yes' and 'no'.]) ;;
4152   esac],
4153  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4154    [elf,2,19,52],,
4155    [.type foo, '$target_type_format_char'gnu_unique_object],,
4156 # We need to unquote above to to use the definition from config.gcc.
4157 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4158    [[if test x$host = x$build -a x$host = x$target &&
4159        ldd --version 2>/dev/null &&
4160        glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
4161       glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
4162       glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
4163       glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
4164       if test "$glibcnum" -ge 2011 ; then
4165         enable_gnu_unique_object=yes
4166       fi
4167     fi]])])
4168 if test x$enable_gnu_unique_object = xyes; then
4169   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4170    [Define if your assembler supports @gnu_unique_object.])
4173 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4174  [gcc_cv_as_line_zero],
4175  [gcc_cv_as_line_zero=no
4176   if test $in_tree_gas = yes; then
4177     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4178   elif test "x$gcc_cv_as" != x; then
4179     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4180     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4181        test "x`cat conftest.out`" = x
4182     then
4183       gcc_cv_as_line_zero=yes
4184     else
4185       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4186       cat conftest.s >&AS_MESSAGE_LOG_FD
4187       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4188       cat conftest.out >&AS_MESSAGE_LOG_FD
4189     fi
4190     rm -f conftest.o conftest.s conftest.out
4191   fi])
4192 if test "x$gcc_cv_as_line_zero" = xyes; then
4193   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4194 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4197 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4198 gcc_cv_ld_eh_frame_hdr=no
4199 if test $in_tree_ld = yes ; then
4200   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 \
4201      && test $in_tree_ld_is_elf = yes; then
4202     gcc_cv_ld_eh_frame_hdr=yes
4203   fi
4204 elif test x$gcc_cv_ld != x; then
4205   if echo "$ld_ver" | grep GNU > /dev/null; then
4206     # Check if linker supports --eh-frame-hdr option
4207     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4208       gcc_cv_ld_eh_frame_hdr=yes
4209     fi
4210   else
4211     case "$target" in
4212       *-*-solaris2*)
4213         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4214         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4215           gcc_cv_ld_eh_frame_hdr=yes
4216         fi
4217         ;;
4218     esac
4219   fi
4221 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4222 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4223         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4224 [Define if your linker supports .eh_frame_hdr.])
4226 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4228 AC_MSG_CHECKING(linker position independent executable support)
4229 gcc_cv_ld_pie=no
4230 if test $in_tree_ld = yes ; then
4231   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 \
4232      && test $in_tree_ld_is_elf = yes; then
4233     gcc_cv_ld_pie=yes
4234   fi
4235 elif test x$gcc_cv_ld != x; then
4236         # Check if linker supports -pie option
4237         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4238                 gcc_cv_ld_pie=yes
4239         fi
4241 if test x"$gcc_cv_ld_pie" = xyes; then
4242         AC_DEFINE(HAVE_LD_PIE, 1,
4243 [Define if your linker supports -pie option.])
4245 AC_MSG_RESULT($gcc_cv_ld_pie)
4247 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4248 gcc_cv_ld_eh_gc_sections=no
4249 if test $in_tree_ld = yes ; then
4250   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 \
4251      && test $in_tree_ld_is_elf = yes; then
4252     gcc_cv_ld_eh_gc_sections=yes
4253   fi
4254 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
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        .text.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       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4281       if test x$gcc_cv_as_comdat_group != xyes; then
4282         gcc_cv_ld_eh_gc_sections=no
4283         cat > conftest.s <<EOF
4284         .section        .text
4285 .globl _start
4286         .type _start, @function
4287 _start:
4288         .long foo
4289         .size _start, .-_start
4290         .section        .gnu.linkonce.t.foo,"ax",@progbits
4291         .type foo, @function
4292 foo:
4293         .long 0
4294         .size foo, .-foo
4295         .section        .gcc_except_table.foo,"a",@progbits
4296 .L0:
4297         .long 0
4298         .section        .eh_frame,"a",@progbits
4299         .long .L0
4301         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4302           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4303                | grep "gc-sections option ignored" > /dev/null; then
4304             gcc_cv_ld_eh_gc_sections=no
4305           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4306                | grep gcc_except_table > /dev/null; then
4307             gcc_cv_ld_eh_gc_sections=yes
4308           fi
4309         fi
4310       fi
4311     fi
4312   fi
4313   rm -f conftest.s conftest.o conftest
4315 case "$target" in
4316   hppa*-*-linux*)
4317     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4318     gcc_cv_ld_eh_gc_sections=no
4319     ;;
4320 esac
4321 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4322         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4323   [Define if your linker supports garbage collection of
4324    sections in presence of EH frames.])
4326 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4328 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4329 gcc_cv_ld_eh_gc_sections_bug=no
4330 if test $in_tree_ld = yes ; then
4331   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 \
4332      && test $in_tree_ld_is_elf = yes; then
4333     gcc_cv_ld_eh_gc_sections_bug=yes
4334   fi
4335 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
4336   gcc_cv_ld_eh_gc_sections_bug=yes
4337   cat > conftest.s <<EOF
4338         .section        .text
4339 .globl _start
4340         .type _start, @function
4341 _start:
4342         .long foo
4343         .size _start, .-_start
4344         .section        .text.startup.foo,"ax",@progbits
4345         .type foo, @function
4346 foo:
4347         .long 0
4348         .size foo, .-foo
4349         .section        .gcc_except_table.foo,"a",@progbits
4350 .L0:
4351         .long 0
4352         .section        .eh_frame,"a",@progbits
4353         .long .L0
4355   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4356     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4357          | grep "gc-sections option ignored" > /dev/null; then
4358       :
4359     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4360          | grep gcc_except_table > /dev/null; then
4361       gcc_cv_ld_eh_gc_sections_bug=no
4362     fi
4363   fi
4364   rm -f conftest.s conftest.o conftest
4366 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4367         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4368   [Define if your linker has buggy garbage collection of
4369    sections support when .text.startup.foo like sections are used.])
4371 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4373 # --------
4374 # UNSORTED
4375 # --------
4377 AC_CACHE_CHECK(linker --as-needed support,
4378 gcc_cv_ld_as_needed,
4379 [gcc_cv_ld_as_needed=no
4380 if test $in_tree_ld = yes ; then
4381   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 \
4382      && test $in_tree_ld_is_elf = yes; then
4383     gcc_cv_ld_as_needed=yes
4384   fi
4385 elif test x$gcc_cv_ld != x; then
4386         # Check if linker supports --as-needed and --no-as-needed options
4387         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4388                 gcc_cv_ld_as_needed=yes
4389         fi
4392 if test x"$gcc_cv_ld_as_needed" = xyes; then
4393         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4394 [Define if your linker supports --as-needed and --no-as-needed options.])
4397 case "$target:$tm_file" in
4398   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4399   case "$target" in
4400      *-*-linux*)
4401      emul_name="-melf64ppc"
4402       ;;
4403      *-*-freebsd*)
4404      emul_name="-melf64ppc_fbsd"
4405       ;;
4406   esac
4407     AC_CACHE_CHECK(linker support for omitting dot symbols,
4408     gcc_cv_ld_no_dot_syms,
4409     [gcc_cv_ld_no_dot_syms=no
4410     if test x"$ld_is_gold" = xyes; then
4411       gcc_cv_ld_no_dot_syms=yes
4412     elif test $in_tree_ld = yes ; then
4413       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
4414         gcc_cv_ld_no_dot_syms=yes
4415       fi
4416     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4417       cat > conftest1.s <<EOF
4418         .text
4419         bl .foo
4421       cat > conftest2.s <<EOF
4422         .section ".opd","aw"
4423         .align 3
4424         .globl foo
4425         .type foo,@function
4426 foo:
4427         .quad .LEfoo,.TOC.@tocbase,0
4428         .text
4429 .LEfoo:
4430         blr
4431         .size foo,.-.LEfoo
4433       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4434          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4435          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4436         gcc_cv_ld_no_dot_syms=yes
4437       fi
4438       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4439     fi
4440     ])
4441     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4442       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4443     [Define if your PowerPC64 linker only needs function descriptor syms.])
4444     fi
4446     AC_CACHE_CHECK(linker large toc support,
4447     gcc_cv_ld_large_toc,
4448     [gcc_cv_ld_large_toc=no
4449     if test x"$ld_is_gold" = xyes; then
4450       gcc_cv_ld_large_toc=yes
4451     elif test $in_tree_ld = yes ; then
4452       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
4453         gcc_cv_ld_large_toc=yes
4454       fi
4455     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4456       cat > conftest.s <<EOF
4457         .section ".tbss","awT",@nobits
4458         .align 3
4459 ie0:    .space 8
4460         .global _start
4461         .text
4462 _start:
4463         addis 9,13,ie0@got@tprel@ha
4464         ld 9,ie0@got@tprel@l(9)
4466       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4467          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4468         gcc_cv_ld_large_toc=yes
4469       fi
4470       rm -f conftest conftest.o conftest.s
4471     fi
4472     ])
4473     if test x"$gcc_cv_ld_large_toc" = xyes; then
4474       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4475     [Define if your PowerPC64 linker supports a large TOC.])
4476     fi
4477     ;;
4478 esac
4480 AC_CACHE_CHECK(linker --build-id support,
4481   gcc_cv_ld_buildid,
4482   [gcc_cv_ld_buildid=no
4483   if test $in_tree_ld = yes ; then
4484     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4485        "$gcc_cv_gld_minor_version" -ge 18 -o \
4486        "$gcc_cv_gld_major_version" -gt 2 \
4487        && test $in_tree_ld_is_elf = yes; then
4488       gcc_cv_ld_buildid=yes
4489     fi
4490   elif test x$gcc_cv_ld != x; then
4491     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4492       gcc_cv_ld_buildid=yes
4493     fi
4494   fi])
4495 if test x"$gcc_cv_ld_buildid" = xyes; then
4496   AC_DEFINE(HAVE_LD_BUILDID, 1,
4497   [Define if your linker supports --build-id.])
4500 AC_ARG_ENABLE(linker-build-id,
4501 [AS_HELP_STRING([--enable-linker-build-id],
4502                 [compiler will always pass --build-id to linker])],
4504 enable_linker_build_id=no)
4506 if test x"$enable_linker_build_id" = xyes; then
4507   if test x"$gcc_cv_ld_buildid" = xyes; then
4508     AC_DEFINE(ENABLE_LD_BUILDID, 1,
4509     [Define if gcc should always pass --build-id to linker.])
4510   else
4511     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4512   fi
4515 # In binutils 2.21, GNU ld gained support for new emulations fully
4516 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
4517 AC_CACHE_CHECK(linker *_sol2 emulation support,
4518   gcc_cv_ld_sol2_emulation,
4519   [gcc_cv_ld_sol2_emulation=no
4520   if test $in_tree_ld = yes ; then
4521     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4522        "$gcc_cv_gld_minor_version" -ge 21 -o \
4523        "$gcc_cv_gld_major_version" -gt 2 \
4524        && test $in_tree_ld_is_elf = yes; then
4525       gcc_cv_ld_sol2_emulation=yes
4526     fi
4527   elif test x$gcc_cv_ld != x; then
4528     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4529        grep _sol2 > /dev/null; then
4530       gcc_cv_ld_sol2_emulation=yes
4531     fi
4532   fi])
4533 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4534   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4535   [Define if your linker supports the *_sol2 emulations.])
4538 AC_CACHE_CHECK(linker --sysroot support,
4539   gcc_cv_ld_sysroot,
4540   [gcc_cv_ld_sysroot=no
4541   if test $in_tree_ld = yes ; then
4542       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
4543         gcc_cv_ld_sysroot=yes
4544       fi
4545   elif test x$gcc_cv_ld != x; then 
4546     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4547       gcc_cv_ld_sysroot=yes
4548     fi
4549   fi])
4550 if test x"$gcc_cv_ld_sysroot" = xyes; then
4551   AC_DEFINE(HAVE_LD_SYSROOT, 1,
4552   [Define if your linker supports --sysroot.])
4553 fi        
4555 if test x$with_sysroot = x && test x$host = x$target \
4556    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4557    && test "$prefix" != "NONE"; then
4558   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4559 [Define to PREFIX/include if cpp should also search that directory.])
4562 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4563   if test "x$with_headers" != x; then
4564     target_header_dir=$with_headers
4565   elif test "x$with_sysroot" = x; then
4566     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
4567   elif test "x$with_build_sysroot" != "x"; then
4568     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4569   elif test "x$with_sysroot" = xyes; then
4570     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4571   else
4572     target_header_dir="${with_sysroot}${native_system_header_dir}"
4573   fi
4574 else
4575   target_header_dir=${native_system_header_dir}
4578 # Test for stack protector support in target C library.
4579 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4580       gcc_cv_libc_provides_ssp,
4581       [gcc_cv_libc_provides_ssp=no
4582     case "$target" in
4583        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4584       [# glibc 2.4 and later provides __stack_chk_fail and
4585       # either __stack_chk_guard, or TLS access to stack guard canary.
4586       if test -f $target_header_dir/features.h \
4587          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
4588             $target_header_dir/features.h > /dev/null; then
4589         if $EGREP '^[   ]*#[    ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
4590            $target_header_dir/features.h > /dev/null; then
4591           gcc_cv_libc_provides_ssp=yes
4592         elif $EGREP '^[         ]*#[    ]*define[       ]+__GLIBC__[    ]+2' \
4593              $target_header_dir/features.h > /dev/null \
4594              && $EGREP '^[      ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
4595              $target_header_dir/features.h > /dev/null; then
4596           gcc_cv_libc_provides_ssp=yes
4597         elif $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
4598              $target_header_dir/features.h > /dev/null && \
4599              test -f $target_header_dir/bits/uClibc_config.h && \
4600              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
4601              $target_header_dir/bits/uClibc_config.h > /dev/null; then
4602           gcc_cv_libc_provides_ssp=yes
4603         fi
4604       # all versions of Bionic support stack protector
4605       elif test -f $target_header_dir/sys/cdefs.h \
4606         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
4607            $target_header_dir/sys/cdefs.h > /dev/null; then
4608          gcc_cv_libc_provides_ssp=yes
4609       fi]
4610         ;;
4611        *-*-gnu*)
4612          # Avoid complicated tests (see
4613          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4614          # simply assert that glibc does provide this, which is true for all
4615          # realistically usable GNU/Hurd configurations.
4616          gcc_cv_libc_provides_ssp=yes;;
4617        *-*-darwin* | *-*-freebsd*)
4618          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4619            [echo "no __stack_chk_fail on this target"])
4620         ;;
4621   *) gcc_cv_libc_provides_ssp=no ;;
4622     esac])
4624 if test x$gcc_cv_libc_provides_ssp = xyes; then
4625   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4626             [Define if your target C library provides stack protector support])
4629 # Test for <sys/sdt.h> on the target.
4630 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4631 AC_MSG_CHECKING(sys/sdt.h in the target C library)
4632 have_sys_sdt_h=no
4633 if test -f $target_header_dir/sys/sdt.h; then
4634   have_sys_sdt_h=yes
4635   AC_DEFINE(HAVE_SYS_SDT_H, 1,
4636             [Define if your target C library provides sys/sdt.h])
4638 AC_MSG_RESULT($have_sys_sdt_h)
4640 # Check if TFmode long double should be used by default or not.
4641 # Some glibc targets used DFmode long double, but with glibc 2.4
4642 # and later they can use TFmode.
4643 case "$target" in
4644   powerpc*-*-linux* | \
4645   sparc*-*-linux* | \
4646   s390*-*-linux* | \
4647   alpha*-*-linux*)
4648     AC_ARG_WITH(long-double-128,
4649       [AS_HELP_STRING([--with-long-double-128],
4650                       [use 128-bit long double by default])],
4651       gcc_cv_target_ldbl128="$with_long_double_128",
4652       [[gcc_cv_target_ldbl128=no
4653       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4654         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4655       && gcc_cv_target_ldbl128=yes
4656       ]])
4657     ;;
4658 esac
4659 if test x$gcc_cv_target_ldbl128 = xyes; then
4660   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4661             [Define if TFmode long double should be the default])
4664 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4665 gcc_cv_target_dl_iterate_phdr=unknown
4666 case "$target" in
4667   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
4668   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
4669   # libdl there, both complicating its use and breaking compatibility
4670   # between Solaris 10 updates.
4671   *-*-solaris2.1[[1-9]]*)
4672     # <link.h> needs both a dl_iterate_phdr declaration and support for
4673     # compilation with largefile support.
4674     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4675       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4676       gcc_cv_target_dl_iterate_phdr=yes
4677     else
4678       gcc_cv_target_dl_iterate_phdr=no
4679     fi
4680     ;;
4681 esac
4682 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4683 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4684    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4685 [Define if your target C library provides the `dl_iterate_phdr' function.])
4687 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
4689 # Find out what GC implementation we want, or may, use.
4690 AC_ARG_WITH(gc,
4691 [AS_HELP_STRING([--with-gc={page,zone}],
4692                 [choose the garbage collection mechanism to use
4693                  with the compiler])],
4694 [case "$withval" in
4695   page)
4696     GGC=ggc-$withval
4697     ;;
4698   zone)
4699     GGC=ggc-$withval
4700     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4701     ;;
4702   *)
4703     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4704     ;;
4705 esac],
4706 [GGC=ggc-page])
4707 AC_SUBST(GGC)
4708 echo "Using $GGC for garbage collection."
4710 # Libraries to use on the host.  This will normally be set by the top
4711 # level Makefile.  Here we simply capture the value for our Makefile.
4712 if test -z "${HOST_LIBS+set}"; then
4713   HOST_LIBS=
4715 AC_SUBST(HOST_LIBS)
4717 # Use the system's zlib library.
4718 zlibdir=-L../zlib
4719 zlibinc="-I\$(srcdir)/../zlib"
4720 AC_ARG_WITH(system-zlib,
4721 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
4722 zlibdir=
4723 zlibinc=
4725 AC_SUBST(zlibdir)
4726 AC_SUBST(zlibinc)
4728 dnl Very limited version of automake's enable-maintainer-mode
4730 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4731   dnl maintainer-mode is disabled by default
4732   AC_ARG_ENABLE(maintainer-mode,
4733 [AS_HELP_STRING([--enable-maintainer-mode],
4734                 [enable make rules and dependencies not useful
4735                  (and sometimes confusing) to the casual installer])],
4736       maintainer_mode=$enableval,
4737       maintainer_mode=no)
4739 AC_MSG_RESULT($maintainer_mode)
4741 if test "$maintainer_mode" = "yes"; then
4742   MAINT=''
4743 else
4744   MAINT='#'
4746 AC_SUBST(MAINT)dnl
4748 # --------------
4749 # Language hooks
4750 # --------------
4752 # Make empty files to contain the specs and options for each language.
4753 # Then add #include lines to for a compiler that has specs and/or options.
4755 subdirs=
4756 lang_opt_files=
4757 lang_specs_files=
4758 lang_tree_files=
4759 # These (without "all_") are set in each config-lang.in.
4760 # `language' must be a single word so is spelled singularly.
4761 all_languages=
4762 all_compilers=
4763 all_outputs='Makefile'
4764 # List of language makefile fragments.
4765 all_lang_makefrags=
4766 # Additional files for gengtype
4767 all_gtfiles="$target_gtfiles"
4769 # These are the languages that are set in --enable-languages,
4770 # and are available in the GCC tree.
4771 all_selected_languages=
4773 # Add the language fragments.
4774 # Languages are added via two mechanisms.  Some information must be
4775 # recorded in makefile variables, these are defined in config-lang.in.
4776 # We accumulate them and plug them into the main Makefile.
4777 # The other mechanism is a set of hooks for each of the main targets
4778 # like `clean', `install', etc.
4780 language_hooks="Make-hooks"
4782 for lang in ${srcdir}/*/config-lang.in
4784 changequote(,)dnl
4785         test "$lang" = "${srcdir}/*/config-lang.in" && continue
4787         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
4788         if test "x$lang_alias" = x
4789         then
4790               echo "$lang doesn't set \$language." 1>&2
4791               exit 1
4792         fi
4793         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
4794         subdirs="$subdirs $subdir"
4796         # $gcc_subdir is where the gcc integration files are to be found
4797         # for a language, both for internal compiler purposes (compiler
4798         # sources implementing front-end to GCC tree converters), and for
4799         # build infrastructure purposes (Make-lang.in, etc.)
4800         #
4801         # This will be <subdir> (relative to $srcdir) if a line like 
4802         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
4803         # is found in <langdir>/config-lang.in, and will remain <langdir>
4804         # otherwise.
4805         #
4806         # Except for the language alias (fetched above), the regular
4807         # "config-lang.in" contents are always retrieved from $gcc_subdir,
4808         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
4809         # only this and the language alias.
4811         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
4812         if [ "$gcc_subdir" = "" ]; then
4813            gcc_subdir="$subdir"
4814         fi
4816         case ",$enable_languages," in
4817         *,$lang_alias,*)
4818             all_selected_languages="$all_selected_languages $lang_alias"
4819             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
4820                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
4821             fi
4822             ;;
4823         esac
4824 changequote([,])dnl
4826         language=
4827         boot_language=
4828         compilers=
4829         outputs=
4830         gtfiles=
4831         subdir_requires=
4832         . ${srcdir}/$gcc_subdir/config-lang.in
4833         if test "x$language" = x
4834         then
4835                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
4836                 exit 1
4837         fi
4839         ok=:
4840         case ",$enable_languages," in
4841                 *,$lang_alias,*) ;;
4842                 *)
4843                         for i in $subdir_requires; do
4844                                 test -f "${srcdir}/$i/config-lang.in" && continue
4845                                 ok=false
4846                                 break
4847                         done
4848                 ;;
4849         esac
4850         $ok || continue
4852         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4853         if test -f $srcdir/$gcc_subdir/lang.opt; then
4854             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
4855             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
4856         fi
4857         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4858             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
4859         fi
4860         all_languages="$all_languages $language"
4861         all_compilers="$all_compilers $compilers"
4862         all_outputs="$all_outputs $outputs"
4863         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
4864         case ",$enable_languages," in
4865                 *,lto,*)
4866                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4867                     enable_lto=yes
4868                     AC_SUBST(enable_lto)
4869                     ;;
4870                 *) ;;
4871         esac
4872 done
4874 check_languages=
4875 for language in $all_selected_languages
4877         check_languages="$check_languages check-$language"
4878 done
4880 # We link each language in with a set of hooks, reached indirectly via
4881 # lang.${target}.  Only do so for selected languages.
4883 rm -f Make-hooks
4884 touch Make-hooks
4885 target_list="all.cross start.encap rest.encap tags \
4886         install-common install-man install-info install-pdf install-html dvi \
4887         pdf html uninstall info man srcextra srcman srcinfo \
4888         mostlyclean clean distclean maintainer-clean install-plugin"
4890 for t in $target_list
4892         x=
4893         for lang in $all_selected_languages
4894         do
4895                 x="$x $lang.$t"
4896         done
4897         echo "lang.$t: $x" >> Make-hooks
4898 done
4900 # --------
4901 # Option include files
4902 # --------
4904 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
4905 option_includes="option-includes.mk"
4906 AC_SUBST_FILE(option_includes)
4908 # --------
4909 # UNSORTED
4910 # --------
4912 # Create .gdbinit.
4914 echo "dir ." > .gdbinit
4915 echo "dir ${srcdir}" >> .gdbinit
4916 if test x$gdb_needs_out_file_path = xyes
4917 then
4918         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4920 if test "x$subdirs" != x; then
4921         for s in $subdirs
4922         do
4923                 echo "dir ${srcdir}/$s" >> .gdbinit
4924         done
4926 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
4928 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
4929 AC_SUBST(gcc_tooldir)
4930 AC_SUBST(dollar)
4932 # Find a directory in which to install a shared libgcc.
4934 AC_ARG_ENABLE(version-specific-runtime-libs,
4935 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
4936                 [specify that runtime libraries should be
4937                  installed in a compiler-specific directory])])
4939 # Substitute configuration variables
4940 AC_SUBST(subdirs)
4941 AC_SUBST(srcdir)
4942 AC_SUBST(all_compilers)
4943 AC_SUBST(all_gtfiles)
4944 AC_SUBST(all_lang_makefrags)
4945 AC_SUBST(all_languages)
4946 AC_SUBST(all_selected_languages)
4947 AC_SUBST(build_exeext)
4948 AC_SUBST(build_install_headers_dir)
4949 AC_SUBST(build_xm_file_list)
4950 AC_SUBST(build_xm_include_list)
4951 AC_SUBST(build_xm_defines)
4952 AC_SUBST(build_file_translate)
4953 AC_SUBST(check_languages)
4954 AC_SUBST(cpp_install_dir)
4955 AC_SUBST(xmake_file)
4956 AC_SUBST(tmake_file)
4957 AC_SUBST(TM_ENDIAN_CONFIG)
4958 AC_SUBST(TM_MULTILIB_CONFIG)
4959 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
4960 AC_SUBST(extra_gcc_objs)
4961 AC_SUBST(user_headers_inc_next_pre)
4962 AC_SUBST(user_headers_inc_next_post)
4963 AC_SUBST(extra_headers_list)
4964 AC_SUBST(extra_objs)
4965 AC_SUBST(extra_programs)
4966 AC_SUBST(float_h_file)
4967 AC_SUBST(gcc_config_arguments)
4968 AC_SUBST(gcc_gxx_include_dir)
4969 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
4970 AC_SUBST(host_exeext)
4971 AC_SUBST(host_xm_file_list)
4972 AC_SUBST(host_xm_include_list)
4973 AC_SUBST(host_xm_defines)
4974 AC_SUBST(out_host_hook_obj)
4975 AC_SUBST(install)
4976 AC_SUBST(lang_opt_files)
4977 AC_SUBST(lang_specs_files)
4978 AC_SUBST(lang_tree_files)
4979 AC_SUBST(local_prefix)
4980 AC_SUBST(md_file)
4981 AC_SUBST(objc_boehm_gc)
4982 AC_SUBST(out_file)
4983 AC_SUBST(out_object_file)
4984 AC_SUBST(common_out_file)
4985 AC_SUBST(common_out_object_file)
4986 AC_SUBST(tm_file_list)
4987 AC_SUBST(tm_include_list)
4988 AC_SUBST(tm_defines)
4989 AC_SUBST(tm_p_file_list)
4990 AC_SUBST(tm_p_include_list)
4991 AC_SUBST(xm_file_list)
4992 AC_SUBST(xm_include_list)
4993 AC_SUBST(xm_defines)
4994 AC_SUBST(use_gcc_stdint)
4995 AC_SUBST(c_target_objs)
4996 AC_SUBST(cxx_target_objs)
4997 AC_SUBST(fortran_target_objs)
4998 AC_SUBST(target_cpu_default)
5000 AC_SUBST_FILE(language_hooks)
5002 # Echo link setup.
5003 if test x${build} = x${host} ; then
5004   if test x${host} = x${target} ; then
5005     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5006   else
5007     echo "Links are now set up to build a cross-compiler" 1>&2
5008     echo " from ${host} to ${target}." 1>&2
5009   fi
5010 else
5011   if test x${host} = x${target} ; then
5012     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5013     echo " for ${target}." 1>&2
5014   else
5015     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5016     echo " from ${host} to ${target}." 1>&2
5017   fi
5020 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5021 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5023 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5024 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5026 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5027 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5028 if test "x${CLOOGLIBS}" != "x" ; then 
5029    AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5032 # Check for plugin support
5033 AC_ARG_ENABLE(plugin,
5034 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5035 enable_plugin=$enableval,
5036 enable_plugin=yes; default_plugin=yes)
5038 pluginlibs=
5040 case "${host}" in
5041   *-*-darwin*)
5042     if test x$build = x$host; then
5043       export_sym_check="nm${exeext} -g"
5044     elif test x$host = x$target; then
5045       export_sym_check="$gcc_cv_nm -g"
5046     else
5047       export_sym_check=
5048     fi
5049   ;;
5050   *)
5051     if test x$build = x$host; then
5052       export_sym_check="objdump${exeext} -T"
5053     elif test x$host = x$target; then
5054       export_sym_check="$gcc_cv_objdump -T"
5055     else
5056       export_sym_check=
5057     fi
5058   ;;
5059 esac
5061 if test x"$enable_plugin" = x"yes"; then
5063   AC_MSG_CHECKING([for exported symbols])
5064   if test "x$export_sym_check" != x; then
5065     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5066     ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
5067     if $export_sym_check conftest | grep foobar > /dev/null; then
5068       : # No need to use a flag
5069       AC_MSG_RESULT([yes])
5070     else
5071       AC_MSG_RESULT([yes])
5072       AC_MSG_CHECKING([for -rdynamic])
5073       ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
5074       if $export_sym_check conftest | grep foobar > /dev/null; then
5075         plugin_rdynamic=yes
5076         pluginlibs="-rdynamic"
5077       else
5078         plugin_rdynamic=no
5079         enable_plugin=no
5080       fi
5081       AC_MSG_RESULT([$plugin_rdynamic])
5082     fi
5083   else
5084     AC_MSG_RESULT([unable to check])
5085   fi
5087   # Check -ldl
5088   saved_LIBS="$LIBS"
5089   AC_SEARCH_LIBS([dlopen], [dl])
5090   if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5091     pluginlibs="$pluginlibs -ldl"
5092   fi
5093   LIBS="$saved_LIBS"
5095   # Check that we can build shared objects with -fPIC -shared
5096   saved_LDFLAGS="$LDFLAGS"
5097   saved_CFLAGS="$CFLAGS"
5098   case "${host}" in
5099     *-*-darwin*)
5100       CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5101       CFLAGS="$CFLAGS -fPIC"
5102       LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5103     ;;
5104     *)
5105       CFLAGS="$CFLAGS -fPIC"
5106       LDFLAGS="$LDFLAGS -fPIC -shared"
5107     ;;
5108   esac
5109   AC_MSG_CHECKING([for -fPIC -shared])
5110   AC_TRY_LINK(
5111     [extern int X;],[return X == 0;],
5112     [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5113     [AC_MSG_RESULT([no]); have_pic_shared=no])
5114   if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5115     pluginlibs=
5116     enable_plugin=no
5117   fi
5118   LDFLAGS="$saved_LDFLAGS"
5119   CFLAGS="$saved_CFLAGS"
5121   # If plugin support had been requested but not available, fail.
5122   if test x"$enable_plugin" = x"no" ; then
5123     if test x"$default_plugin" != x"yes"; then
5124       AC_MSG_ERROR([
5125 Building GCC with plugin support requires a host that supports
5126 -fPIC, -shared, -ldl and -rdynamic.])
5127     fi
5128   fi
5131 AC_SUBST(pluginlibs)
5132 AC_SUBST(enable_plugin)
5133 if test x"$enable_plugin" = x"yes"; then
5134   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5138 AC_ARG_ENABLE(libquadmath-support,
5139 [AS_HELP_STRING([--disable-libquadmath-support],
5140   [disable libquadmath support for Fortran])],
5141 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5142 ENABLE_LIBQUADMATH_SUPPORT=yes)
5143 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5144   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5145             [Define to 1 to enable libquadmath support])
5149 # Specify what hash style to use by default.
5150 AC_ARG_WITH([linker-hash-style],
5151 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5152                 [specify the linker hash style])],
5153 [case x"$withval" in
5154    xsysv)
5155      LINKER_HASH_STYLE=sysv
5156      ;;
5157    xgnu)
5158      LINKER_HASH_STYLE=gnu
5159      ;;
5160    xboth)
5161      LINKER_HASH_STYLE=both
5162      ;;
5163    *)
5164      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5165      ;;
5166  esac],
5167 [LINKER_HASH_STYLE=''])
5168 if test x"${LINKER_HASH_STYLE}" != x; then
5169   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5170                                          [The linker hash style])
5173 # Configure the subdirectories
5174 # AC_CONFIG_SUBDIRS($subdirs)
5176 # Create the Makefile
5177 # and configure language subdirectories
5178 AC_CONFIG_FILES($all_outputs)
5180 AC_CONFIG_COMMANDS([default],
5182 case ${CONFIG_HEADERS} in
5183   *auto-host.h:config.in*)
5184   echo > cstamp-h ;;
5185 esac
5186 # Make sure all the subdirs exist.
5187 for d in $subdirs doc build common c-family
5189     test -d $d || mkdir $d
5190 done
5191 ], 
5192 [subdirs='$subdirs'])
5193 AC_OUTPUT