Merge trunk version 193807 into gupc branch.
[official-gcc.git] / gcc / configure.ac
blob45584181aad003d0dfb635f933ff71914bc4d0ef
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 # Determine whether or not multiarch is enabled.
617 AC_ARG_ENABLE(multiarch,
618 [AS_HELP_STRING([--enable-multiarch],
619                 [enable support for multiarch paths])],
620 [case "${enableval}" in
621 yes|no|auto) enable_multiarch=$enableval;;
622 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
623 esac], [enable_multiarch=auto])
624 if test x${enable_multiarch} = xauto; then
625   if test x${with_native_system_header_dir} != x; then
626     ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
627     enable_multiarch=no
628   fi
629   if test x$host != x$target && test "x$with_sysroot" = x; then
630     ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
631     enable_multiarch=no
632   fi
634 AC_MSG_CHECKING(for multiarch configuration)
635 AC_SUBST(enable_multiarch)
636 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
638 # needed for setting the multiarch name for soft-float/hard-float ABIs
639 AC_SUBST(with_cpu)
640 AC_SUBST(with_float)
642 # Enable __cxa_atexit for C++.
643 AC_ARG_ENABLE(__cxa_atexit,
644 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
645 [], [])
647 # Enable C extension for decimal float if target supports it.
648 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
650 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
651 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
652 [Define to 1 to enable decimal float extension to C.])
654 # Use default_decimal_float for dependency.
655 enable_decimal_float=$default_decimal_float
657 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
658 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
659 [Define to 1 to specify that we are using the BID decimal floating
660 point format instead of DPD])
662 # Enable C extension for fixed-point arithmetic.
663 AC_ARG_ENABLE(fixed-point,
664 [AS_HELP_STRING([--enable-fixed-point],
665                 [enable fixed-point arithmetic extension to C])],
668   case $target in
669     arm*)
670       enable_fixed_point=yes
671       ;;
673     mips*-*-*)
674       enable_fixed_point=yes
675       ;;
676     *)
677       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
678       enable_fixed_point=no
679       ;;
680   esac
682 AC_SUBST(enable_fixed_point)
684 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
685 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
686 [Define to 1 to enable fixed-point arithmetic extension to C.])
688 # Enable threads
689 # Pass with no value to take the default
690 # Pass with a value to specify a thread package
691 AC_ARG_ENABLE(threads,
692 [AS_HELP_STRING([[--enable-threads[=LIB]]],
693                 [enable thread usage for target GCC,
694                  using LIB thread package])],,
695 [enable_threads=''])
697 AC_ARG_ENABLE(tls,
698 [AS_HELP_STRING([--enable-tls],
699                 [enable or disable generation of tls code
700                  overriding the assembler check for tls support])],
702   case $enable_tls in
703     yes | no) ;;
704     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
705 Valid choices are 'yes' and 'no'.]) ;;
706   esac
707 ], [enable_tls=''])
709 AC_ARG_ENABLE(objc-gc,
710 [AS_HELP_STRING([--enable-objc-gc],
711                 [enable the use of Boehm's garbage collector with
712                  the GNU Objective-C runtime])],
713 if test x$enable_objc_gc = xno; then
714         objc_boehm_gc=''
715 else
716         objc_boehm_gc=1
718 objc_boehm_gc='')
720 case ,${enable_languages}, in
721    *,upc,) lang_upc_enabled="yes" ;;
722    *) ;;
723 esac
725 AC_ARG_WITH([upc-pts],
726 AS_HELP_STRING(
727   [--with-upc-pts={struct,packed}],
728   [choose the representation of a UPC pointer-to-shared]),
730 if test x"$lang_upc_enabled" = x"yes" ; then
731   case "$withval" in
732     packed|struct) upc_pts_rep="$withval" ;;
733     *) AC_MSG_ERROR([$withval is an invalid option to --with-upc-pts])
734       ;;
735   esac
736 else
737   AC_MSG_WARN([--with-upc-pts is allowed only when UPC
738 support has been enabled])
742 if test x"$lang_upc_enabled" = x"yes" ; then
743   upc_pts_rep="packed"
748 # Perl is required for checking pts representation
749 AC_CHECK_PROG(PERL, perl, perl)
751 AC_ARG_WITH([upc-pts-vaddr-order],
752 AS_HELP_STRING(
753 [--with-upc-pts-vaddr-order={last,first}],
754 [choose position of the address field in UPC pointer-to-shared representation]),
756 if test x"$lang_upc_enabled" = x"yes" ; then
757   upc_vaddr_order="$withval"
758   case "$upc_vaddr_order" in
759     first|last) ;;
760     *) AC_MSG_ERROR(
761          [$withval is an invalid option to --with-upc-pts-vaddr-order]) ;;
762   esac
763 else
764   AC_MSG_WARN([--upc-pts-vaddr-order is allowed only when UPC
765 support has been enabled])
769 if test x"$lang_upc_enabled" = x"yes" ; then
770   # Default UPC PTS vaddr order to "first"
771   upc_vaddr_order="first"
775 AC_ARG_WITH([upc-packed-bits],,
777   AC_MSG_WARN([--with-upc-packed-bits is deprecated. 
778 Use --with-upc-pts-packed-bits instead.])
779   with_upc_pts_packed_bits="$withval";
783 AC_ARG_WITH([upc-pts-packed-bits],
784 AS_HELP_STRING(
785 [--with-upc-pts-packed-bits=phase,thread,vaddr],
786 [choose bit distribution in packed UPC pointer-to-shared representation]),
788 if test x"$lang_upc_enabled" = x"yes" ; then
789   if test x"$upc_pts_rep" = x"packed"; then
790     UPC_PTS_PHASE_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
791                                                   print $1 if ($1+$2+$3 == 64) && $1>=1;'`
792     UPC_PTS_THREAD_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
793                                                   print $2 if ($1+$2+$3 == 64) && $2>=1;'`
794     UPC_PTS_VADDR_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
795                                                   print $3 if ($1+$2+$3 == 64) && $3>=20;'`
796     if test -z "$UPC_PTS_PHASE_SIZE" \
797        || test -z "$UPC_PTS_THREAD_SIZE" \
798        || test -z "$UPC_PTS_VADDR_SIZE" ; then
799       AC_MSG_ERROR([--with-upc-pts-packed-bits=phase,thread,vaddr requires
800   phase+thread+vaddr=64 and phase >= 1 and thread >= 1 and vaddr >= 20])
801     fi
802   else
803     AC_MSG_ERROR([--with-upc-pts-packed-bits is only supported for
804 the packed UPC pointer-to-shared representation])
805   fi
806 else
807   AC_MSG_WARN([--with-upc-pts-packed-bits is allowed only when UPC
808 support has been enabled])
812 if test x"$lang_upc_enabled" = x"yes" ; then
813   # GNU UPC packed pointer representation defaults.
814   case "$target" in
815     i[356]86* )
816       UPC_PTS_PHASE_SIZE=20
817       UPC_PTS_THREAD_SIZE=12
818       UPC_PTS_VADDR_SIZE=32
819       ;;
820     * )
821       UPC_PTS_PHASE_SIZE=20
822       UPC_PTS_THREAD_SIZE=10
823       UPC_PTS_VADDR_SIZE=34
824   esac
828 AC_ARG_ENABLE(upc-link-script,
829 AS_HELP_STRING(
830   [--enable-upc-link-script],
831   [enable UPC's use of a custom linker script;
832   this will define the UPC shared section as a no load section on
833   targets where this feature is supported (requires GNU LD)]),
835 if test x"$lang_upc_enabled" = x"yes" ; then
836   case $enableval in
837   yes | no) ;;
838   *)
839     AC_MSG_ERROR([--enable-upc-link-script accepts only yes or no.])
840   esac
841 else
842   AC_MSG_WARN([--enable-upc-link-script is allowed only when UPC
843 support has been enabled])
847 if test x"$lang_upc_enabled" = x"yes" ; then
848   enable_upc_link_script=no
852 if test x"$lang_upc_enabled" = x"yes" ; then
853   AC_MSG_CHECKING([for UPC pointer-to-shared representation])
854   AC_MSG_RESULT([$upc_pts_rep])
855   case "$upc_pts_rep" in
856     packed)
857       AC_DEFINE(HAVE_UPC_PTS_PACKED_REP,[1],
858         [Define to 1 if UPC pointer-to-shared representation
859          is a packed 64 bit word.])
860       ;;
861     struct)
862       AC_DEFINE(HAVE_UPC_PTS_STRUCT_REP,[1],
863         [Define to 1 if UPC pointer-to-shared representation
864          is a structure.])
865       ;;
866   esac
867   AC_MSG_CHECKING([for UPC pointer-to-shared address field position])
868   AC_MSG_RESULT([$upc_vaddr_order])
869   if test x"$upc_vaddr_order" = x"first"; then
870     AC_DEFINE(HAVE_UPC_PTS_VADDR_FIRST,[1],
871       [Define to 1 if the 'vaddr' field is the first field
872 in the UPC pointer-to-shared representation.])
873   fi
874   if test x"$upc_pts_rep" = x"packed"; then
875     AC_DEFINE_UNQUOTED(UPC_PTS_PHASE_SIZE,$UPC_PTS_PHASE_SIZE,
876       [For packed UPC pointers-to-shared,
877        the size of the phase field (in bits).])
878     AC_DEFINE_UNQUOTED(UPC_PTS_THREAD_SIZE,$UPC_PTS_THREAD_SIZE,
879       [For packed UPC pointers-to-shared,
880        the size of the thread field (in bits).])
881     AC_DEFINE_UNQUOTED(UPC_PTS_VADDR_SIZE,$UPC_PTS_VADDR_SIZE,
882       [For packed UPC pointers-to-shared,
883        the size of the address field (in bits).])
884     AC_MSG_CHECKING([for packed UPC pointer-to-shared layout])
885     AC_MSG_RESULT(
886       ["phase=${UPC_PTS_PHASE_SIZE},thread=${UPC_PTS_THREAD_SIZE},
887 vaddr=${UPC_PTS_VADDR_SIZE}"])
888   fi
889   AC_MSG_CHECKING([for UPC link script support])
890   AC_MSG_RESULT($enable_upc_link_script)
891   if test "$enable_upc_link_script" = yes; then
892     AC_DEFINE(HAVE_UPC_LINK_SCRIPT, 1, [Define to 1 if UPC link script is supported.])
893   fi
896 AC_ARG_WITH(dwarf2,
897 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
898 dwarf2="$with_dwarf2",
899 dwarf2=no)
901 AC_ARG_ENABLE(shared,
902 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
904   case $enable_shared in
905   yes | no) ;;
906   *)
907     enable_shared=no
908     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
909     for pkg in $enableval; do
910       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
911         enable_shared=yes
912       fi
913     done
914     IFS="$ac_save_ifs"
915     ;;
916   esac
917 ], [enable_shared=yes])
918 AC_SUBST(enable_shared)
920 AC_ARG_WITH([native-system-header-dir],
921   [  --with-native-system-header-dir=dir
922                           use dir as the directory to look for standard
923                           system header files in.  Defaults to /usr/include.],
925  case ${with_native_system_header_dir} in
926  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
927  /* | [[A-Za-z]]:[[\\/]]*) ;;
928  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
929  esac
930  configured_native_system_header_dir="${withval}"
931 ], [configured_native_system_header_dir=])
933 AC_ARG_WITH(build-sysroot, 
934   [AS_HELP_STRING([--with-build-sysroot=sysroot],
935                   [use sysroot as the system root during the build])],
936   [if test x"$withval" != x ; then
937      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
938    fi],
939   [SYSROOT_CFLAGS_FOR_TARGET=])
940 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
942 if test "x$prefix" = xNONE; then
943  test_prefix=/usr/local
944 else
945  test_prefix=$prefix
947 if test "x$exec_prefix" = xNONE; then
948  test_exec_prefix=$test_prefix
949 else
950  test_exec_prefix=$exec_prefix
953 AC_ARG_WITH(sysroot,
954 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
955                 [search for usr/lib, usr/include, et al, within DIR])],
957  case ${with_sysroot} in
958  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
959  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
960  esac
961    
962  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
963  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
964         
965  case ${TARGET_SYSTEM_ROOT} in
966  "${test_prefix}"|"${test_prefix}/"*|\
967  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
968  '${prefix}'|'${prefix}/'*|\
969  '${exec_prefix}'|'${exec_prefix}/'*)
970    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
971    TARGET_SYSTEM_ROOT_DEFINE="$t"
972    ;;
973  esac
974 ], [
975  TARGET_SYSTEM_ROOT=
976  TARGET_SYSTEM_ROOT_DEFINE=
977  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
979 AC_SUBST(TARGET_SYSTEM_ROOT)
980 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
981 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
983 AC_ARG_WITH(specs,
984   [AS_HELP_STRING([--with-specs=SPECS],
985                   [add SPECS to driver command-line processing])],
986   [CONFIGURE_SPECS=$withval],
987   [CONFIGURE_SPECS=]
989 AC_SUBST(CONFIGURE_SPECS)
991 ACX_PKGVERSION([GCC])
992 ACX_BUGURL([http://gccupc.org/bugs])
994 # Sanity check enable_languages in case someone does not run the toplevel
995 # configure # script.
996 AC_ARG_ENABLE(languages,
997 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
998 [case ,${enable_languages}, in
999        ,,|,yes,)
1000                 # go safe -- we cannot be much sure without the toplevel
1001                 # configure's
1002                 # analysis of which target libs are present and usable
1003                 enable_languages=c
1004                 ;;
1005          *,all,*)
1006                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
1007                 ;;
1008         *,c,*)
1009                 ;;
1010         *)
1011                 enable_languages=c,${enable_languages}
1012                 ;;
1013 esac],
1014 [enable_languages=c])
1016 AC_ARG_WITH(multilib-list,
1017 [AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and x86-64 only)])],
1019 with_multilib_list=default)
1021 # -------------------------
1022 # Checks for other programs
1023 # -------------------------
1025 AC_PROG_MAKE_SET
1027 # Find some useful tools
1028 AC_PROG_AWK
1029 # We need awk to create options.c and options.h.
1030 # Bail out if it's missing.
1031 case ${AWK} in
1032   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1033 esac
1035 gcc_AC_PROG_LN_S
1036 ACX_PROG_LN($LN_S)
1037 AC_PROG_RANLIB
1038 ranlib_flags=""
1039 AC_SUBST(ranlib_flags)
1040      
1041 gcc_AC_PROG_INSTALL
1043 # See if cmp has --ignore-initial.
1044 gcc_AC_PROG_CMP_IGNORE_INITIAL
1046 # See if we have the mktemp command.
1047 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1049 # See if makeinfo has been installed and is modern enough
1050 # that we can use it.
1051 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1052   [GNU texinfo.* \([0-9][0-9.]*\)],
1053   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1054 if test $gcc_cv_prog_makeinfo_modern = no; then
1055   AC_MSG_WARN([
1056 *** Makeinfo is missing or too old.
1057 *** Info documentation will not be built.])
1058   BUILD_INFO=
1059 else
1060   BUILD_INFO=info
1062 AC_SUBST(BUILD_INFO)
1064 # Is pod2man recent enough to regenerate manpages?
1065 AC_MSG_CHECKING([for recent Pod::Man])
1066 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1067   AC_MSG_RESULT(yes)
1068   GENERATED_MANPAGES=generated-manpages
1069 else
1070   AC_MSG_RESULT(no)
1071   GENERATED_MANPAGES=
1073 AC_SUBST(GENERATED_MANPAGES)
1075 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1077 # How about lex?
1078 dnl Don't use AC_PROG_LEX; we insist on flex.
1079 dnl LEXLIB is not useful in gcc.
1080 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1082 # Bison?
1083 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1085 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1086 # check for build == host before using them.
1088 # NM
1089 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1090   && test -d ../binutils ; then
1091   NM='${objdir}/../binutils/nm-new'
1092 else
1093   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1096 # AR
1097 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1098   && test -d ../binutils ; then
1099   AR='${objdir}/../binutils/ar'
1100 else
1101   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1105 # --------------------
1106 # Checks for C headers
1107 # --------------------
1109 # Need to reject headers which give warnings, so that the -Werror bootstrap
1110 # works later. *sigh*  This needs to come before all header checks.
1111 AC_PROG_CPP_WERROR
1113 AC_HEADER_STDC
1114 AC_HEADER_TIME
1115 ACX_HEADER_STRING
1116 AC_HEADER_SYS_WAIT
1117 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1118                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
1119                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1120                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h libintl.h)
1122 # Check for thread headers.
1123 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1124 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1126 # These tests can't be done till we know if we have limits.h.
1127 gcc_AC_C_CHAR_BIT
1128 AC_C_BIGENDIAN
1130 # ----------------------
1131 # Checks for C++ headers
1132 # ----------------------
1134 dnl Autoconf will give an error in the configure script if there is no
1135 dnl C++ preprocessor.  Hack to prevent that.
1136 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1137 AC_PROG_CXXCPP
1138 m4_popdef([AC_MSG_ERROR])[]dnl
1140 AC_LANG_PUSH(C++)
1142 AC_CHECK_HEADERS(unordered_map)
1143 AC_CHECK_HEADERS(tr1/unordered_map)
1144 AC_CHECK_HEADERS(ext/hash_map)
1146 AC_LANG_POP(C++)
1148 # --------
1149 # UNSORTED
1150 # --------
1153 # These libraries may be used by collect2.
1154 # We may need a special search path to get them linked.
1155 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1156 [save_LIBS="$LIBS"
1157 for libs in '' -lld -lmld \
1158                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1159                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1161         LIBS="$libs"
1162         AC_TRY_LINK_FUNC(ldopen,
1163                 [gcc_cv_collect2_libs="$libs"; break])
1164 done
1165 LIBS="$save_LIBS"
1166 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1167 case $gcc_cv_collect2_libs in
1168         "none required")        ;;
1169         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1170 esac
1171 AC_SUBST(COLLECT2_LIBS)
1173 # When building Ada code on Alpha, we need exc_resume which is usually in
1174 # -lexc.  So test for it.
1175 save_LIBS="$LIBS"
1176 LIBS=
1177 AC_SEARCH_LIBS(exc_resume, exc)
1178 GNAT_LIBEXC="$LIBS"
1179 LIBS="$save_LIBS"
1180 AC_SUBST(GNAT_LIBEXC)
1182 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1183 save_LIBS="$LIBS"
1184 LIBS=
1185 AC_SEARCH_LIBS(kstat_open, kstat)
1186 EXTRA_GCC_LIBS="$LIBS"
1187 LIBS="$save_LIBS"
1188 AC_SUBST(EXTRA_GCC_LIBS)
1190 # Some systems put ldexp and frexp in libm instead of libc; assume
1191 # they're both in the same place.  jcf-dump needs them.
1192 save_LIBS="$LIBS"
1193 LIBS=
1194 AC_SEARCH_LIBS(ldexp, m)
1195 LDEXP_LIB="$LIBS"
1196 LIBS="$save_LIBS"
1197 AC_SUBST(LDEXP_LIB)
1199 # Use <inttypes.h> only if it exists,
1200 # doesn't clash with <sys/types.h>, and declares intmax_t.
1201 AC_MSG_CHECKING(for inttypes.h)
1202 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1203 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1204 [[#include <sys/types.h>
1205 #include <inttypes.h>]],
1206   [[intmax_t i = -1;]])],
1207   [gcc_cv_header_inttypes_h=yes],
1208   [gcc_cv_header_inttypes_h=no])])
1209 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1210 if test $gcc_cv_header_inttypes_h = yes; then
1211   AC_DEFINE(HAVE_INTTYPES_H, 1,
1212         [Define if you have a working <inttypes.h> header file.])
1215 dnl Disabled until we have a complete test for buggy enum bitfields.
1216 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1218 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1219   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1220   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1221   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1222   putchar_unlocked putc_unlocked)
1223 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1224         sysconf strsignal getrusage nl_langinfo \
1225         gettimeofday mbstowcs wcswidth mmap setlocale \
1226         gcc_UNLOCKED_FUNCS madvise)
1228 if test x$ac_cv_func_mbstowcs = xyes; then
1229   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1230 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1231 int main()
1233   mbstowcs(0, "", 0);
1234   return 0;
1235 }]])],
1236     [gcc_cv_func_mbstowcs_works=yes],
1237     [gcc_cv_func_mbstowcs_works=no],
1238     [gcc_cv_func_mbstowcs_works=yes])])
1239   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1240     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1241   [Define this macro if mbstowcs does not crash when its
1242    first argument is NULL.])
1243   fi
1246 AC_CHECK_TYPE(ssize_t, int)
1247 AC_CHECK_TYPE(caddr_t, char *)
1249 GCC_AC_FUNC_MMAP_BLACKLIST
1251 case "${host}" in
1252 *-*-*vms*)
1253   # Under VMS, vfork works very differently than on Unix. The standard test 
1254   # won't work, and it isn't easily adaptable. It makes more sense to
1255   # just force it.
1256   ac_cv_func_vfork_works=yes
1257   ;;
1258 esac
1259 AC_FUNC_FORK
1261 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1262 # iconv() prototype.
1263 AC_LANG_PUSH([C++])
1264 AM_ICONV
1265 AC_LANG_POP([C++])
1267 # Until we have in-tree GNU iconv:
1268 LIBICONV_DEP=
1269 AC_SUBST(LIBICONV_DEP)
1271 AM_LC_MESSAGES
1273 AM_LANGINFO_CODESET
1275 # We will need to find libiberty.h and ansidecl.h
1276 saved_CFLAGS="$CFLAGS"
1277 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1278 saved_CXXFLAGS="$CXXFLAGS"
1279 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
1280 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1281         strsignal strstr stpcpy strverscmp \
1282         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1283         free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1284 #include "ansidecl.h"
1285 #include "system.h"])
1287 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1288 #include "ansidecl.h"
1289 #include "system.h"
1290 #ifdef HAVE_SYS_RESOURCE_H
1291 #include <sys/resource.h>
1292 #endif
1295 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1296 #include "ansidecl.h"
1297 #include "system.h"
1298 #ifdef HAVE_SYS_RESOURCE_H
1299 #include <sys/resource.h>
1300 #endif
1301 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1302 [Define to `long' if <sys/resource.h> doesn't define.])])
1304 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1305 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1306 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1307 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1308 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1309 #include "ansidecl.h"
1310 #include "system.h"
1311 #ifdef HAVE_LDFCN_H
1312 #undef FREAD
1313 #undef FWRITE
1314 #include <ldfcn.h>
1315 #endif
1318 gcc_AC_CHECK_DECLS(times, , ,[
1319 #include "ansidecl.h"
1320 #include "system.h"
1321 #ifdef HAVE_SYS_TIMES_H
1322 #include <sys/times.h>
1323 #endif
1326 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1327 #include "ansidecl.h"
1328 #include "system.h"
1329 #include <signal.h>
1332 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1333 # prototype.
1334 AC_LANG_PUSH([C++])
1335 gcc_AC_CHECK_DECLS(madvise, , ,[
1336   #include "ansidecl.h"
1337   #include "system.h"
1339 AC_LANG_POP([C++])
1341 # More time-related stuff.
1342 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1343 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1344 #include "ansidecl.h"
1345 #include "system.h"
1346 #ifdef HAVE_SYS_TIMES_H
1347 #include <sys/times.h>
1348 #endif
1349 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1350 if test $ac_cv_struct_tms = yes; then
1351   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1352   [Define if <sys/times.h> defines struct tms.])
1355 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1356 # revisit after autoconf 2.50.
1357 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1358 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1359 #include "ansidecl.h"
1360 #include "system.h"
1361 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1362 if test $gcc_cv_type_clock_t = yes; then
1363   AC_DEFINE(HAVE_CLOCK_T, 1,
1364   [Define if <time.h> defines clock_t.])
1367 # Check if F_SETLKW is supported by fcntl.
1368 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1369 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1370 #include <fcntl.h>]], [[
1371 struct flock fl;
1372 fl.l_whence = 0;
1373 fl.l_start = 0;
1374 fl.l_len = 0;
1375 fl.l_pid = 0;
1376 return fcntl (1, F_SETLKW, &fl);]])],
1377 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1378 if test $ac_cv_f_setlkw = yes; then
1379   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1380   [Define if F_SETLKW supported by fcntl.])
1383 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1384 CFLAGS="$saved_CFLAGS"
1385 CXXFLAGS="$saved_CXXFLAGS"
1387 # mkdir takes a single argument on some systems. 
1388 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1390 # File extensions
1391 manext='.1'
1392 objext='.o'
1393 AC_SUBST(manext)
1394 AC_SUBST(objext)
1396 # With Setjmp/Longjmp based exception handling.
1397 AC_ARG_ENABLE(sjlj-exceptions,
1398 [AS_HELP_STRING([--enable-sjlj-exceptions],
1399                 [arrange to use setjmp/longjmp exception handling])],
1400 [case $target in
1401   *-*-hpux10*)
1402     if test $enableval != yes; then
1403       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1404       enableval=yes
1405     fi
1406     ;;
1407 esac
1408 force_sjlj_exceptions=yes],
1409 [case $target in
1410   *-*-hpux10*)
1411     force_sjlj_exceptions=yes
1412     enableval=yes
1413     ;;
1414   *)
1415     force_sjlj_exceptions=no
1416     ;;
1417 esac])
1418 if test $force_sjlj_exceptions = yes; then
1419   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1420   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1421     [Define 0/1 to force the choice for exception handling model.])
1424 # --------------------------------------------------------
1425 # Build, host, and target specific configuration fragments
1426 # --------------------------------------------------------
1428 # Collect build-machine-specific information.
1429 . ${srcdir}/config.build
1431 # Collect host-machine-specific information.
1432 . ${srcdir}/config.host
1434 target_gtfiles=
1436 # Collect target-machine-specific information.
1437 . ${srcdir}/config.gcc
1439 extra_objs="${host_extra_objs} ${extra_objs}"
1440 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1442 # Default the target-machine variables that were not explicitly set.
1443 if test x"$tm_file" = x
1444 then tm_file=$cpu_type/$cpu_type.h; fi
1446 if test x"$extra_headers" = x
1447 then extra_headers=; fi
1449 if test x$md_file = x
1450 then md_file=$cpu_type/$cpu_type.md; fi
1452 if test x$out_file = x
1453 then out_file=$cpu_type/$cpu_type.c; fi
1455 if test x"$tmake_file" = x
1456 then tmake_file=$cpu_type/t-$cpu_type
1459 # Support --enable-initfini-array.
1460 if test x$enable_initfini_array != xno; then
1461   tm_file="${tm_file} initfini-array.h"
1464 if test x"$dwarf2" = xyes
1465 then tm_file="$tm_file tm-dwarf2.h"
1468 # Say what files are being used for the output code and MD file.
1469 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1470 echo "Using \`$srcdir/config/$md_file' as machine description file."
1472 # If any of the xm_file variables contain nonexistent files, warn
1473 # about them and drop them.
1476 for x in $build_xm_file; do
1477   if    test -f $srcdir/config/$x
1478   then      bx="$bx $x"
1479   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1480   fi
1481 done
1482 build_xm_file="$bx"
1485 for x in $host_xm_file; do
1486   if    test -f $srcdir/config/$x
1487   then      hx="$hx $x"
1488   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1489   fi
1490 done
1491 host_xm_file="$hx"
1494 for x in $xm_file; do
1495   if    test -f $srcdir/config/$x
1496   then      tx="$tx $x"
1497   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1498   fi
1499 done
1500 xm_file="$tx"
1502 count=a
1503 for f in $tm_file; do
1504         count=${count}x
1505 done
1506 if test $count = ax; then
1507         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1508 else
1509         echo "Using the following target machine macro files:"
1510         for f in $tm_file; do
1511                 echo "  $srcdir/config/$f"
1512         done
1515 if test x$need_64bit_hwint = xyes; then
1516         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1517 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1520 if test x$use_long_long_for_widest_fast_int = xyes; then
1521         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1522 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1523 efficiently supported by the host hardware.])
1526 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1527 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1529 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1530 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1532 count=a
1533 for f in $host_xm_file; do
1534         count=${count}x
1535 done
1536 if test $count = a; then
1537         :
1538 elif test $count = ax; then
1539         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1540 else
1541         echo "Using the following host machine macro files:"
1542         for f in $host_xm_file; do
1543                 echo "  $srcdir/config/$f"
1544         done
1546 echo "Using ${out_host_hook_obj} for host machine hooks."
1548 if test "$host_xm_file" != "$build_xm_file"; then
1549         count=a
1550         for f in $build_xm_file; do
1551                 count=${count}x
1552         done
1553         if test $count = a; then
1554                 :
1555         elif test $count = ax; then
1556                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1557         else
1558                 echo "Using the following build machine macro files:"
1559                 for f in $build_xm_file; do
1560                         echo "  $srcdir/config/$f"
1561                 done
1562         fi
1565 if test -n "$configured_native_system_header_dir"; then
1566   native_system_header_dir=$configured_native_system_header_dir
1568 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1569 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1571 case ${host} in
1572   powerpc*-*-darwin*)
1573     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1574       gcc_cv_mcontext_underscores,
1575       AC_COMPILE_IFELSE([
1576 #include <sys/cdefs.h>
1577 #include <sys/signal.h>
1578 #include <ucontext.h>
1579 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1581         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1582       if test $gcc_cv_mcontext_underscores = yes; then
1583         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1584           [mcontext_t fields start with __])
1585       fi
1586     ;;
1587 esac
1589 # ---------
1590 # Threading
1591 # ---------
1593 # Check if a valid thread package
1594 case ${enable_threads} in
1595   "" | no)
1596     # No threads
1597     target_thread_file='single'
1598     ;;
1599   yes)
1600     # default
1601     target_thread_file='single'
1602     ;;
1603   aix | dce | lynx | mipssde | posix | rtems | \
1604   single | tpf | vxworks | win32)
1605     target_thread_file=${enable_threads}
1606     ;;
1607   *)
1608     echo "${enable_threads} is an unknown thread package" 1>&2
1609     exit 1
1610     ;;
1611 esac
1613 if test x${thread_file} = x; then
1614   # No thread file set by target-specific clauses in config.gcc,
1615   # so use file chosen by default logic above
1616   thread_file=${target_thread_file}
1619 # --------
1620 # UNSORTED
1621 # --------
1623 use_cxa_atexit=no
1624 if test x$enable___cxa_atexit = xyes || \
1625    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1626   if test x$host = x$target; then
1627     case $host in
1628       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1629       # keyed to flag_use_cxa_atexit
1630       *-*-mingw32*)
1631         use_cxa_atexit=yes
1632         ;;
1633       *)
1634         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1635           [echo "__cxa_atexit can't be enabled on this target"])
1636         ;;
1637     esac
1638   else
1639     # We can't check for __cxa_atexit when building a cross, so assume
1640     # it is available 
1641     use_cxa_atexit=yes
1642   fi
1643   if test x$use_cxa_atexit = xyes; then
1644     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1645       [Define if you want to use __cxa_atexit, rather than atexit, to
1646       register C++ destructors for local statics and global objects.
1647       This is essential for fully standards-compliant handling of
1648       destructors, but requires __cxa_atexit in libc.])
1649   fi
1652 # Look for a file containing extra machine modes.
1653 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1654   extra_modes_file='$(srcdir)'/config/${extra_modes}
1655   AC_SUBST(extra_modes_file)
1656   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1657   [Define to the name of a file containing a list of extra machine modes
1658    for this architecture.])
1661 # Convert extra_options into a form suitable for Makefile use.
1662 extra_opt_files=
1663 all_opt_files=
1664 for f in $extra_options; do
1665   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1666   all_opt_files="$all_opt_files $srcdir/config/$f"
1667 done
1668 AC_SUBST(extra_opt_files)
1670 # auto-host.h is the file containing items generated by autoconf and is
1671 # the first file included by config.h.
1672 # If host=build, it is correct to have bconfig include auto-host.h
1673 # as well.  If host!=build, we are in error and need to do more 
1674 # work to find out the build config parameters.
1675 if test x$host = x$build
1676 then
1677         build_auto=auto-host.h
1678 else
1679         # We create a subdir, then run autoconf in the subdir.
1680         # To prevent recursion we set host and build for the new
1681         # invocation of configure to the build for this invocation
1682         # of configure. 
1683         tempdir=build.$$
1684         rm -rf $tempdir
1685         mkdir $tempdir
1686         cd $tempdir
1687         case ${srcdir} in
1688         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1689         *) realsrcdir=../${srcdir};;
1690         esac
1691         saved_CFLAGS="${CFLAGS}"
1692         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1693         LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1694         ${realsrcdir}/configure \
1695                 --enable-languages=${enable_languages-all} \
1696                 --target=$target_alias --host=$build_alias --build=$build_alias
1697         CFLAGS="${saved_CFLAGS}"
1699         # We just finished tests for the build machine, so rename
1700         # the file auto-build.h in the gcc directory.
1701         mv auto-host.h ../auto-build.h
1702         cd ..
1703         rm -rf $tempdir
1704         build_auto=auto-build.h
1706 AC_SUBST(build_subdir)
1708 tm_file="${tm_file} defaults.h"
1709 tm_p_file="${tm_p_file} tm-preds.h"
1710 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1711 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1712 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1713 # put this back in temporarily.
1714 xm_file="auto-host.h ansidecl.h ${xm_file}"
1716 # --------
1717 # UNSORTED
1718 # --------
1720 changequote(,)dnl
1721 # Compile in configure arguments.
1722 if test -f configargs.h ; then
1723         # Being re-configured.
1724         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1725         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1726 else
1727         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1730 # Double all backslashes and backslash all quotes to turn
1731 # gcc_config_arguments into a C string.
1732 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1733 $gcc_config_arguments
1735 gcc_config_arguments_str=`cat conftest.out`
1736 rm -f conftest.out
1738 cat > configargs.h <<EOF
1739 /* Generated automatically. */
1740 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1741 static const char thread_model[] = "$thread_file";
1743 static const struct {
1744   const char *name, *value;
1745 } configure_default_options[] = $configure_default_options;
1747 changequote([,])dnl
1749 changequote(,)dnl
1750 gcc_BASEVER=`cat $srcdir/BASE-VER`
1751 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1752 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1753 if test -f $srcdir/REVISION ; then
1754         gcc_REVISION=`cat $srcdir/REVISION`
1755 else
1756         gcc_REVISION=""
1758 cat > plugin-version.h <<EOF
1759 #include "configargs.h"
1761 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1762 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1763 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1764 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1766 static char basever[] = "$gcc_BASEVER";
1767 static char datestamp[] = "$gcc_DATESTAMP";
1768 static char devphase[] = "$gcc_DEVPHASE";
1769 static char revision[] = "$gcc_REVISION";
1771 /* FIXME plugins: We should make the version information more precise.
1772    One way to do is to add a checksum. */
1774 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1775                                                 devphase, revision,
1776                                                 configuration_arguments};
1778 changequote([,])dnl
1780 # Internationalization
1781 ZW_GNU_GETTEXT_SISTER_DIR
1783 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1784 # -liconv on the link line twice.
1785 case "$LIBINTL" in *$LIBICONV*)
1786         LIBICONV= ;;
1787 esac
1789 AC_ARG_ENABLE(secureplt,
1790 [AS_HELP_STRING([--enable-secureplt],
1791                 [enable -msecure-plt by default for PowerPC])],
1792 [], [])
1794 AC_ARG_ENABLE(leading-mingw64-underscores,
1795   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1796                  [enable leading underscores on 64 bit mingw targets]),
1797   [],[])
1798 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1799   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1800     [Define if we should use leading underscore on 64 bit mingw targets])])
1802 AC_ARG_ENABLE(cld,
1803 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1804 [enable_cld=no])
1806 AC_ARG_ENABLE(frame-pointer,
1807 [AS_HELP_STRING([--enable-frame-pointer],
1808                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1810 case $target_os in
1811 linux* | darwin[[8912]]*)
1812   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1813   # DWARF2.
1814   enable_frame_pointer=no
1815   ;;
1817   enable_frame_pointer=yes
1818   ;;
1819 esac
1822 # Windows32 Registry support for specifying GCC installation paths.
1823 AC_ARG_ENABLE(win32-registry,
1824 [AS_HELP_STRING([--disable-win32-registry],
1825                 [disable lookup of installation paths in the
1826                  Registry on Windows hosts])
1827 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1828 AS_HELP_STRING([--enable-win32-registry=KEY],
1829                [use KEY instead of GCC version as the last portion
1830                 of the registry key])],,)
1832 case $host_os in
1833   win32 | pe | cygwin* | mingw32* | uwin*)
1834     if test "x$enable_win32_registry" != xno; then
1835       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1836     fi
1838     if test "x$enable_win32_registry" != xno; then
1839       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1840   [Define to 1 if installation paths should be looked up in the Windows
1841    Registry. Ignored on non-Windows hosts.])
1843       if test "x$enable_win32_registry" != xyes \
1844          && test "x$enable_win32_registry" != x; then
1845         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1846   [Define to be the last component of the Windows registry key under which
1847    to look for installation paths.  The full key used will be 
1848    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1849    The default is the GCC version number.])
1850       fi
1851     fi
1852   ;;
1853 esac
1855 # Get an absolute path to the GCC top-level source directory
1856 holddir=`${PWDCMD-pwd}`
1857 cd $srcdir
1858 topdir=`${PWDCMD-pwd}`
1859 cd $holddir
1861 # Conditionalize the makefile for this host machine.
1862 xmake_file=
1863 for f in ${host_xmake_file}
1865         if test -f ${srcdir}/config/$f
1866         then
1867                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1868         fi
1869 done
1871 # Conditionalize the makefile for this target machine.
1872 tmake_file_=
1873 for f in ${tmake_file}
1875         if test -f ${srcdir}/config/$f
1876         then
1877                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1878         fi
1879 done
1880 tmake_file="${tmake_file_}"
1882 out_object_file=`basename $out_file .c`.o
1883 common_out_object_file=`basename $common_out_file .c`.o
1885 tm_file_list="options.h"
1886 tm_include_list="options.h insn-constants.h"
1887 for f in $tm_file; do
1888   case $f in
1889     ./* )
1890        f=`echo $f | sed 's/^..//'`
1891        tm_file_list="${tm_file_list} $f"
1892        tm_include_list="${tm_include_list} $f"
1893        ;;
1894     defaults.h )
1895        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1896        tm_include_list="${tm_include_list} $f"
1897        ;;
1898     * )
1899        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1900        tm_include_list="${tm_include_list} config/$f"
1901        ;;
1902   esac
1903 done
1905 tm_p_file_list=
1906 tm_p_include_list=
1907 for f in $tm_p_file; do
1908   case $f in
1909     tm-preds.h )
1910        tm_p_file_list="${tm_p_file_list} $f"
1911        tm_p_include_list="${tm_p_include_list} $f"
1912        ;;
1913     * )
1914        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1915        tm_p_include_list="${tm_p_include_list} config/$f"
1916   esac
1917 done
1919 xm_file_list=
1920 xm_include_list=
1921 for f in $xm_file; do
1922   case $f in
1923     ansidecl.h )
1924        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1925        xm_include_list="${xm_include_list} $f"
1926        ;;
1927     auto-host.h )
1928        xm_file_list="${xm_file_list} $f"
1929        xm_include_list="${xm_include_list} $f"
1930        ;;
1931     * )
1932        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1933        xm_include_list="${xm_include_list} config/$f"
1934        ;;
1935   esac
1936 done
1938 host_xm_file_list=
1939 host_xm_include_list=
1940 for f in $host_xm_file; do
1941   case $f in
1942     ansidecl.h )
1943        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1944        host_xm_include_list="${host_xm_include_list} $f"
1945        ;;
1946     auto-host.h )
1947        host_xm_file_list="${host_xm_file_list} $f"
1948        host_xm_include_list="${host_xm_include_list} $f"
1949        ;;
1950     * )
1951        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1952        host_xm_include_list="${host_xm_include_list} config/$f"
1953        ;;
1954   esac
1955 done
1957 build_xm_file_list=
1958 for f in $build_xm_file; do
1959   case $f in
1960     ansidecl.h )
1961        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1962        build_xm_include_list="${build_xm_include_list} $f"
1963        ;;
1964     auto-build.h | auto-host.h )
1965        build_xm_file_list="${build_xm_file_list} $f"
1966        build_xm_include_list="${build_xm_include_list} $f"
1967        ;;
1968     * )
1969        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1970        build_xm_include_list="${build_xm_include_list} config/$f"
1971        ;;
1972   esac
1973 done
1975 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1976 # cross-compiler which does not use the native headers and libraries.
1977 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1978 CROSS=                                          AC_SUBST(CROSS)
1979 ALL=all.internal                                AC_SUBST(ALL)
1980 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1982 if test "x$with_build_sysroot" != x; then
1983   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1984 else
1985   # This value is used, even on a native system, because 
1986   # CROSS_SYSTEM_HEADER_DIR is just 
1987   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1988   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1991 if test x$host != x$target
1992 then
1993         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1994         ALL=all.cross
1995         SYSTEM_HEADER_DIR=$build_system_header_dir
1996         case "$host","$target" in
1997         # Darwin crosses can use the host system's libraries and headers,
1998         # because of the fat library support.  Of course, it must be the
1999         # same version of Darwin on both sides.  Allow the user to
2000         # just say --target=foo-darwin without a version number to mean
2001         # "the version on this system".
2002             *-*-darwin*,*-*-darwin*)
2003                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
2004                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
2005                 if test $hostos = $targetos -o $targetos = darwin ; then
2006                     CROSS=
2007                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
2008                     with_headers=yes
2009                 fi
2010                 ;;
2012             i?86-*-*,x86_64-*-* \
2013             | powerpc*-*-*,powerpc64*-*-*)
2014                 CROSS="$CROSS -DNATIVE_CROSS" ;;
2015         esac
2017         case $target in
2018                 *-*-mingw*)
2019                         if test "x$with_headers" = x; then
2020                                 with_headers=yes
2021                         fi
2022                         ;;
2023                 *)
2024                         ;;
2025         esac
2026 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2027         SYSTEM_HEADER_DIR=$build_system_header_dir 
2030 # If this is a cross-compiler that does not
2031 # have its own set of headers then define
2032 # inhibit_libc
2034 # If this is using newlib, without having the headers available now,
2035 # then define inhibit_libc in LIBGCC2_CFLAGS.
2036 # This prevents libgcc2 from containing any code which requires libc
2037 # support.
2038 : ${inhibit_libc=false}
2039 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2040        test x$with_newlib = xyes ; } &&
2041      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
2042        inhibit_libc=true
2044 AC_SUBST(inhibit_libc)
2046 # When building gcc with a cross-compiler, we need to adjust things so
2047 # that the generator programs are still built with the native compiler.
2048 # Also, we cannot run fixincludes.
2050 # These are the normal (build=host) settings:
2051 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2052 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2053 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2054 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2055 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2056 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2058 # And these apply if build != host, or we are generating coverage data
2059 if test x$build != x$host || test "x$coverage_flags" != x
2060 then
2061     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2062     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2065 # Expand extra_headers to include complete path.
2066 # This substitutes for lots of t-* files.
2067 extra_headers_list=
2068 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2069 for file in ${extra_headers} ; do
2070   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2071 done
2073 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2074 if test x"$use_gcc_tgmath" = xyes
2075 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2078 # Define collect2 in Makefile.
2079 case $host_can_use_collect2 in
2080   no) collect2= ;;
2081   *) collect2='collect2$(exeext)' ;;
2082 esac
2083 AC_SUBST([collect2])
2085 # Add a definition of USE_COLLECT2 if system wants one.
2086 case $use_collect2 in
2087   no) use_collect2= ;;
2088   "") ;;
2089   *) 
2090     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2091     xm_defines="${xm_defines} USE_COLLECT2"
2092     case $host_can_use_collect2 in
2093       no)
2094         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2095         ;;
2096     esac
2097     ;;
2098 esac
2100 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2101 [Define to the name of the LTO plugin DSO that must be
2102   passed to the linker's -plugin=LIB option.])
2104 # ---------------------------
2105 # Assembler & linker features
2106 # ---------------------------
2108 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2109 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2110 # However when ld-new is first executed from the build tree, libtool will
2111 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2112 # to the build tree.  While doing this we need to use the previous-stage
2113 # linker, or we have an infinite loop.  The presence of a shell script as
2114 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2115 # the gcc/collect-ld script.  So we need to know how libtool works, or
2116 # exec-tool will fail.
2118 m4_defun([_LT_CONFIG_COMMANDS], [])
2119 AC_PROG_LIBTOOL
2120 AC_SUBST(objdir)
2121 AC_SUBST(enable_fast_install)
2123 # Identify the assembler which will work hand-in-glove with the newly
2124 # built GCC, so that we can examine its features.  This is the assembler
2125 # which will be driven by the driver program.
2127 # If build != host, and we aren't building gas in-tree, we identify a
2128 # build->target assembler and hope that it will have the same features
2129 # as the host->target assembler we'll be using.
2130 gcc_cv_gas_major_version=
2131 gcc_cv_gas_minor_version=
2132 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2134 m4_pattern_allow([AS_FOR_TARGET])dnl
2135 AS_VAR_SET_IF(gcc_cv_as,, [
2136 if test -x "$DEFAULT_ASSEMBLER"; then
2137         gcc_cv_as="$DEFAULT_ASSEMBLER"
2138 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
2139      && test -f ../gas/Makefile \
2140      && test x$build = x$host; then
2141         gcc_cv_as=../gas/as-new$build_exeext
2142 elif test -x as$build_exeext; then
2143         # Build using assembler in the current directory.
2144         gcc_cv_as=./as$build_exeext
2145 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2146         gcc_cv_as="$AS_FOR_TARGET"
2147 else
2148         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2149 fi])
2151 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2152 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2153 case "$ORIGINAL_AS_FOR_TARGET" in
2154   ./as | ./as$build_exeext) ;;
2155   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2156 esac 
2158 AC_MSG_CHECKING(what assembler to use)
2159 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2160   # Single tree build which includes gas.  We want to prefer it
2161   # over whatever linker top-level may have detected, since
2162   # we'll use what we're building after installation anyway.
2163   AC_MSG_RESULT(newly built gas)
2164   in_tree_gas=yes
2165   _gcc_COMPUTE_GAS_VERSION
2166   in_tree_gas_is_elf=no
2167   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2168      || (grep 'obj_format = multi' ../gas/Makefile \
2169          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2170   then
2171     in_tree_gas_is_elf=yes
2172   fi
2173 else
2174   AC_MSG_RESULT($gcc_cv_as)
2175   in_tree_gas=no
2178 # Identify the linker which will work hand-in-glove with the newly
2179 # built GCC, so that we can examine its features.  This is the linker
2180 # which will be driven by the driver program.
2182 # If build != host, and we aren't building gas in-tree, we identify a
2183 # build->target linker and hope that it will have the same features
2184 # as the host->target linker we'll be using.
2185 gcc_cv_gld_major_version=
2186 gcc_cv_gld_minor_version=
2187 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2188 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2190 AS_VAR_SET_IF(gcc_cv_ld,, [
2191 if test -x "$DEFAULT_LINKER"; then
2192         gcc_cv_ld="$DEFAULT_LINKER"
2193 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
2194      && test -f ../ld/Makefile \
2195      && test x$build = x$host; then
2196         gcc_cv_ld=../ld/ld-new$build_exeext
2197 elif test -x collect-ld$build_exeext; then
2198         # Build using linker in the current directory.
2199         gcc_cv_ld=./collect-ld$build_exeext
2200 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2201         gcc_cv_ld="$LD_FOR_TARGET"
2202 else
2203         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2204 fi])
2206 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2207 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2208 # if the PLUGIN_LD is set ld-new, just have it as ld
2209 # as that is the installed named.
2210 if test x$PLUGIN_LD_SUFFIX == xld-new \
2211    || test x$PLUGIN_LD_SUFFIX == xcollect-ld ; then
2212   PLUGIN_LD_SUFFIX=ld
2214 AC_ARG_WITH(plugin-ld,
2215 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2216 [if test x"$withval" != x; then
2217    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2218    PLUGIN_LD_SUFFIX=`echo $withval | sed -e "s,$target_alias-,,"`
2219  fi])
2220 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2221 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2223 # Check to see if we are using gold instead of ld
2224 AC_MSG_CHECKING(whether we are using gold)
2225 ld_is_gold=no
2226 if test x$gcc_cv_ld != x; then
2227   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2228      | grep "GNU gold" > /dev/null; then
2229     ld_is_gold=yes
2230   fi
2232 AC_MSG_RESULT($ld_is_gold)
2234 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2235 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2236 case "$ORIGINAL_LD_FOR_TARGET" in
2237   ./collect-ld | ./collect-ld$build_exeext) ;;
2238   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2239 esac 
2241 AC_MSG_CHECKING(what linker to use)
2242 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2243    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2244         # Single tree build which includes ld.  We want to prefer it
2245         # over whatever linker top-level may have detected, since
2246         # we'll use what we're building after installation anyway.
2247         AC_MSG_RESULT(newly built ld)
2248         in_tree_ld=yes
2249         in_tree_ld_is_elf=no
2250         if (grep 'EMUL = .*elf' ../ld/Makefile \
2251             || grep 'EMUL = .*linux' ../ld/Makefile \
2252             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2253           in_tree_ld_is_elf=yes
2254         elif test "$ld_is_gold" = yes; then
2255           in_tree_ld_is_elf=yes
2256         fi
2257         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
2258         do
2259 changequote(,)dnl
2260                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2261                 if test x$gcc_cv_gld_version != x; then
2262                         break
2263                 fi
2264         done
2265         case $gcc_cv_gld_version in
2266           VERSION=[0-9]*) ;;
2267 changequote([,])dnl
2268           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2269 changequote(,)dnl
2270         esac
2271         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2272         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2273 changequote([,])dnl
2274 else
2275         AC_MSG_RESULT($gcc_cv_ld)
2276         in_tree_ld=no
2279 # Figure out what nm we will be using.
2280 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2281 AS_VAR_SET_IF(gcc_cv_nm,, [
2282 if test -f $gcc_cv_binutils_srcdir/configure.in \
2283      && test -f ../binutils/Makefile \
2284      && test x$build = x$host; then
2285         gcc_cv_nm=../binutils/nm-new$build_exeext
2286 elif test -x nm$build_exeext; then
2287         gcc_cv_nm=./nm$build_exeext
2288 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2289         gcc_cv_nm="$NM_FOR_TARGET"
2290 else
2291         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2292 fi])
2294 AC_MSG_CHECKING(what nm to use)
2295 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2296         # Single tree build which includes binutils.
2297         AC_MSG_RESULT(newly built nm)
2298         in_tree_nm=yes
2299 else
2300         AC_MSG_RESULT($gcc_cv_nm)
2301         in_tree_nm=no
2304 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2305 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2306 case "$ORIGINAL_NM_FOR_TARGET" in
2307   ./nm | ./nm$build_exeext) ;;
2308   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2309 esac
2312 # Figure out what objdump we will be using.
2313 AS_VAR_SET_IF(gcc_cv_objdump,, [
2314 if test -f $gcc_cv_binutils_srcdir/configure.in \
2315      && test -f ../binutils/Makefile \
2316      && test x$build = x$host; then
2317         # Single tree build which includes binutils.
2318         gcc_cv_objdump=../binutils/objdump$build_exeext
2319 elif test -x objdump$build_exeext; then
2320         gcc_cv_objdump=./objdump$build_exeext
2321 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2322         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2323 else
2324         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2325 fi])
2327 AC_MSG_CHECKING(what objdump to use)
2328 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2329         # Single tree build which includes binutils.
2330         AC_MSG_RESULT(newly built objdump)
2331 elif test x$gcc_cv_objdump = x; then
2332         AC_MSG_RESULT(not found)
2333 else
2334         AC_MSG_RESULT($gcc_cv_objdump)
2337 # Figure out what readelf we will be using.
2338 AS_VAR_SET_IF(gcc_cv_readelf,, [
2339 if test -f $gcc_cv_binutils_srcdir/configure.in \
2340      && test -f ../binutils/Makefile \
2341      && test x$build = x$host; then
2342         # Single tree build which includes binutils.
2343         gcc_cv_readelf=../binutils/readelf$build_exeext
2344 elif test -x readelf$build_exeext; then
2345         gcc_cv_readelf=./readelf$build_exeext
2346 else
2347         AC_PATH_PROG(gcc_cv_readelf, readelf)
2348 fi])
2350 AC_MSG_CHECKING(what readelf to use)
2351 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2352         # Single tree build which includes binutils.
2353         AC_MSG_RESULT(newly built readelf)
2354 elif test x$gcc_cv_readelf = x; then
2355         AC_MSG_RESULT(not found)
2356 else
2357         AC_MSG_RESULT($gcc_cv_readelf)
2360 # Figure out what assembler alignment features are present.
2361 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2362  [2,6,0],,
2363 [.balign 4
2364 .p2align 2],,
2365 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2366   [Define if your assembler supports .balign and .p2align.])])
2368 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2369  [2,8,0],,
2370  [.p2align 4,,7],,
2371 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2372   [Define if your assembler supports specifying the maximum number
2373    of bytes to skip when using the GAS .p2align command.])])
2375 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2376  [2,8,0],,
2377  [.literal16],,
2378 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2379   [Define if your assembler supports .literal16.])])
2381 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2382  [elf,2,9,0],,
2383  [conftest_label1: .word 0
2384 .subsection -1
2385 conftest_label2: .word 0
2386 .previous],
2387  [if test x$gcc_cv_nm != x; then
2388     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2389     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2390     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2391     then :
2392     else gcc_cv_as_subsection_m1=yes
2393     fi
2394     rm -f conftest.nm1 conftest.nm2
2395   fi],
2396  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2397   [Define if your assembler supports .subsection and .subsection -1 starts
2398    emitting at the beginning of your section.])])
2400 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2401  [2,2,0],,
2402  [      .weak foobar],,
2403 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2405 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2406  [2,17,0],,
2407  [      .weakref foobar, barfnot],,
2408 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2410 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2411  [2,15,91],,
2412  [      .SPACE $TEXT$
2413         .NSUBSPA $CODE$,COMDAT],,
2414 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2416 # .hidden needs to be supported in both the assembler and the linker,
2417 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2418 # This is irritatingly difficult to feature test for; we have to check the
2419 # date string after the version number.  If we've got an in-tree
2420 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2421 # to be safe.
2422 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2423 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2424  [elf,2,13,0],,
2425 [       .hidden foobar
2426 foobar:],[
2427 # Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2428 # STV_HIDDEN, so disable .hidden support if so.
2429 case "${target}" in
2430   i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2431     if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2432       cat > conftest.s <<EOF
2433 .globl hidden
2434         .hidden hidden
2435 hidden:
2436 .globl default
2437         .set    default,hidden
2439       if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2440         && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2441         grep '\.hidden default' > /dev/null; then
2442         gcc_cv_as_hidden=no
2443       else
2444         gcc_cv_as_hidden=yes
2445       fi
2446     else
2447       # Assume bug is present if objdump is missing.
2448       gcc_cv_as_hidden=no
2449     fi
2450     ;;
2451   *)
2452     gcc_cv_as_hidden=yes
2453     ;;
2454 esac])
2455 case "${target}" in
2456   *-*-darwin*)
2457     # Darwin as has some visibility support, though with a different syntax.
2458     gcc_cv_as_hidden=yes
2459     ;;
2460 esac
2462 # gnu_indirect_function type is an extension proposed at
2463 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2464 # selection of function implementation
2465 AC_ARG_ENABLE(gnu-indirect-function,
2466  [AS_HELP_STRING([--enable-gnu-indirect-function],
2467                  [enable the use of the @gnu_indirect_function to glibc systems])],
2468  [case $enable_gnu_indirect_function in
2469     yes | no) ;;
2470     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2471 Valid choices are 'yes' and 'no'.]) ;;
2472   esac],
2473  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2474 if test x$enable_gnu_indirect_function = xyes; then
2475   AC_DEFINE(HAVE_GNU_INDIRECT_FUNCTION, 1,
2476    [Define if your system supports gnu indirect functions.])
2479 changequote(,)dnl
2480 if test $in_tree_ld != yes ; then
2481   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2482   if echo "$ld_ver" | grep GNU > /dev/null; then
2483     if test x"$ld_is_gold" = xyes; then
2484       # GNU gold --version looks like this:
2485       #
2486       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2487       #
2488       # We extract the binutils version which is more familiar and specific
2489       # than the gold version.
2490       ld_vers=`echo $ld_ver | sed -n \
2491           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2492     else
2493       # GNU ld --version looks like this:
2494       #
2495       # GNU ld (GNU Binutils) 2.21.51.20110225
2496       ld_vers=`echo $ld_ver | sed -n \
2497           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2498     fi
2499     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'`
2500     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2501     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2502     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2503   else
2504     case "${target}" in
2505       *-*-solaris2*)
2506         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2507         # format.
2508         #
2509         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2510         # /usr/ccs/bin/ld has been configured.
2511         ld_ver=`$gcc_cv_ld -V 2>&1`
2512         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2513           ld_vers=`echo $ld_ver | sed -n \
2514             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2515           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2516           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2517         fi
2518         ;;
2519     esac
2520   fi
2522 changequote([,])dnl
2524 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2525 [[if test $in_tree_ld = yes ; then
2526   gcc_cv_ld_hidden=no
2527   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 \
2528      && test $in_tree_ld_is_elf = yes; then
2529      gcc_cv_ld_hidden=yes
2530   fi
2531 else
2532   gcc_cv_ld_hidden=yes
2533   if test x"$ld_is_gold" = xyes; then
2534     :
2535   elif echo "$ld_ver" | grep GNU > /dev/null; then
2536     case "${target}" in
2537       mmix-knuth-mmixware)
2538         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2539         gcc_cv_ld_hidden=no
2540         ;;
2541     esac
2542     if test 0"$ld_date" -lt 20020404; then
2543       if test -n "$ld_date"; then
2544         # If there was date string, but was earlier than 2002-04-04, fail
2545         gcc_cv_ld_hidden=no
2546       elif test -z "$ld_vers"; then
2547         # If there was no date string nor ld version number, something is wrong
2548         gcc_cv_ld_hidden=no
2549       else
2550         test -z "$ld_vers_patch" && ld_vers_patch=0
2551         if test "$ld_vers_major" -lt 2; then
2552           gcc_cv_ld_hidden=no
2553         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2554           gcc_cv_ld_hidden="no"
2555         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2556           gcc_cv_ld_hidden=no
2557         fi
2558       fi
2559     fi
2560   else
2561     case "${target}" in
2562       *-*-darwin*)
2563         # Darwin ld has some visibility support.
2564         gcc_cv_ld_hidden=yes
2565         ;;
2566       hppa64*-*-hpux* | ia64*-*-hpux*)
2567         gcc_cv_ld_hidden=yes
2568         ;;
2569       *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2570         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2571         # .symbolic was only added in Solaris 9 12/02.
2572         gcc_cv_ld_hidden=yes
2573         ;;
2574       *)
2575         gcc_cv_ld_hidden=no
2576         ;;
2577     esac
2578   fi
2579 fi]])
2580 libgcc_visibility=no
2581 AC_SUBST(libgcc_visibility)
2582 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2583 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2584   libgcc_visibility=yes
2585   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2586   [Define if your assembler and linker support .hidden.])
2589 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2590 gcc_cv_ld_ro_rw_mix=unknown
2591 if test $in_tree_ld = yes ; then
2592   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 \
2593      && test $in_tree_ld_is_elf = yes; then
2594     gcc_cv_ld_ro_rw_mix=read-write
2595   fi
2596 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2597   echo '.section myfoosect, "a"' > conftest1.s
2598   echo '.section myfoosect, "aw"' > conftest2.s
2599   echo '.byte 1' >> conftest2.s
2600   echo '.section myfoosect, "a"' > conftest3.s
2601   echo '.byte 0' >> conftest3.s
2602   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2603      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2604      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2605      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2606         conftest2.o conftest3.o > /dev/null 2>&1; then
2607     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2608                          | sed -e '/myfoosect/!d' -e N`
2609     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2610       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2611         gcc_cv_ld_ro_rw_mix=read-only
2612       else
2613         gcc_cv_ld_ro_rw_mix=read-write
2614       fi
2615     fi
2616   fi
2617 changequote(,)dnl
2618   rm -f conftest.* conftest[123].*
2619 changequote([,])dnl
2621 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2622         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2623   [Define if your linker links a mix of read-only
2624    and read-write sections into a read-write section.])
2626 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2628 gcc_AC_INITFINI_ARRAY
2630 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2631 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2632   [elf,2,11,0],,
2633 [       .data
2634         .uleb128 L2 - L1
2636         .uleb128 1280
2637         .sleb128 -1010
2638 L2:],
2639 [[# GAS versions before 2.11 do not support uleb128,
2640   # despite appearing to.
2641   # ??? There exists an elf-specific test that will crash
2642   # the assembler.  Perhaps it's better to figure out whether
2643   # arbitrary sections are supported and try the test.
2644   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2645   if echo "$as_ver" | grep GNU > /dev/null; then
2646     as_vers=`echo $as_ver | sed -n \
2647         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2648     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2649     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2650     if test $as_major -eq 2 && test $as_minor -lt 11
2651     then :
2652     else gcc_cv_as_leb128=yes
2653     fi
2654   fi]],
2655   [AC_DEFINE(HAVE_AS_LEB128, 1,
2656     [Define if your assembler supports .sleb128 and .uleb128.])])
2658 # Check if we have assembler support for unwind directives.
2659 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2660   ,,
2661 [       .text
2662         .cfi_startproc
2663         .cfi_offset 0, 0
2664         .cfi_same_value 1
2665         .cfi_def_cfa 1, 2
2666         .cfi_escape 1, 2, 3, 4, 5
2667         .cfi_endproc],
2668 [case "$target" in
2669   *-*-solaris*)
2670     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2671     # read-only and read-write sections, we need to make sure that the
2672     # assembler used emits read-write .eh_frame sections.
2673     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2674       if test "x$gcc_cv_objdump" != x; then
2675         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2676                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2677           gcc_cv_as_cfi_directive=no
2678         else
2679           case "$target" in
2680             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2681               # On Solaris/x86, make sure that GCC and gas agree on using
2682               # read-only .eh_frame sections for 64-bit.
2683               if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2684                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2685                         sed -e /.eh_frame/!d -e N | \
2686                         grep READONLY > /dev/null; then
2687                 gcc_cv_as_cfi_directive=yes
2688               else
2689                 gcc_cv_as_cfi_directive=no
2690               fi
2691               ;;
2692             *)
2693               gcc_cv_as_cfi_directive=yes
2694               ;;
2695           esac 
2696         fi
2697       else
2698         # no objdump, err on the side of caution
2699         gcc_cv_as_cfi_directive=no
2700       fi
2701     else
2702       gcc_cv_as_cfi_directive=yes
2703     fi
2704     ;;
2705   *-*-*)
2706     gcc_cv_as_cfi_directive=yes
2707     ;;
2708 esac])
2709 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2710 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2711   ,,
2712 [       .text
2713         .cfi_startproc
2714         .cfi_adjust_cfa_offset 64
2715         .skip 75040, 0
2716         .cfi_adjust_cfa_offset 128
2717         .cfi_endproc],
2719 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2720     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2721    gcc_cv_as_cfi_advance_working=yes
2724 else
2725   # no objdump, err on the side of caution
2726   gcc_cv_as_cfi_advance_working=no
2728 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2729 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2730   [`if test $gcc_cv_as_cfi_directive = yes \
2731        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2732   [Define 0/1 if your assembler supports CFI directives.])
2734 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2735 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2736   gcc_cv_as_cfi_personality_directive, ,,
2737 [       .text
2738         .cfi_startproc
2739         .cfi_personality 0, symbol
2740         .cfi_endproc])
2741 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2742   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2743     then echo 1; else echo 0; fi`],
2744   [Define 0/1 if your assembler supports .cfi_personality.])
2746 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2747   gcc_cv_as_cfi_sections_directive, ,,
2748 [       .text
2749         .cfi_sections .debug_frame, .eh_frame
2750         .cfi_startproc
2751         .cfi_endproc],
2752 [case $target_os in
2753   win32 | pe | cygwin* | mingw32* | uwin*)
2754     # Need to check that we generated the correct relocation for the
2755     # .debug_frame section.  This was fixed for binutils 2.21.
2756     gcc_cv_as_cfi_sections_directive=no
2757     if test "x$gcc_cv_objdump" != x; then
2758      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2759         grep secrel > /dev/null; then
2760       gcc_cv_as_cfi_sections_directive=yes
2761      fi
2762     fi
2763     ;;
2764   *)
2765     gcc_cv_as_cfi_sections_directive=yes
2766     ;;
2767 esac])
2768 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2769 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2770   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2771     then echo 1; else echo 0; fi`],
2772   [Define 0/1 if your assembler supports .cfi_sections.])
2774 # GAS versions up to and including 2.11.0 may mis-optimize
2775 # .eh_frame data.
2776 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2777   [elf,2,12,0],,
2778 [       .text
2779 .LFB1:
2780         .4byte  0
2781 .L1:
2782         .4byte  0
2783 .LFE1:
2784         .section        .eh_frame,"aw",@progbits
2785 __FRAME_BEGIN__:
2786         .4byte  .LECIE1-.LSCIE1
2787 .LSCIE1:
2788         .4byte  0x0
2789         .byte   0x1
2790         .ascii "z\0"
2791         .byte   0x1
2792         .byte   0x78
2793         .byte   0x1a
2794         .byte   0x0
2795         .byte   0x4
2796         .4byte  1
2797         .p2align 1
2798 .LECIE1:
2799 .LSFDE1:
2800         .4byte  .LEFDE1-.LASFDE1
2801 .LASFDE1:
2802         .4byte  .LASFDE1-__FRAME_BEGIN__
2803         .4byte  .LFB1
2804         .4byte  .LFE1-.LFB1
2805         .byte   0x4
2806         .4byte  .LFE1-.LFB1
2807         .byte   0x4
2808         .4byte  .L1-.LFB1
2809 .LEFDE1:],
2810 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2811 cat > conftest.lit <<EOF
2812  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2813  0010 01000000 12000000 18000000 00000000  ................
2814  0020 08000000 04080000 0044               .........D      @&t@
2816 cat > conftest.big <<EOF
2817  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2818  0010 00000001 00000012 00000018 00000000  ................
2819  0020 00000008 04000000 0844               .........D      @&t@
2821   # If the assembler didn't choke, and we can objdump,
2822   # and we got the correct data, then succeed.
2823   # The text in the here-document typically retains its unix-style line
2824   # endings, while the output of objdump will use host line endings.
2825   # Therefore, use diff -b for the comparisons.
2826   if test x$gcc_cv_objdump != x \
2827   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2828      | tail -3 > conftest.got \
2829   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2830     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2831   then
2832     gcc_cv_as_eh_frame=yes
2833   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2834     gcc_cv_as_eh_frame=buggy
2835   else
2836     # Uh oh, what do we do now?
2837     gcc_cv_as_eh_frame=no
2838   fi])
2840 if test $gcc_cv_as_eh_frame = buggy; then
2841   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2842   [Define if your assembler mis-optimizes .eh_frame data.])
2845 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2846  [elf,2,12,0], [--fatal-warnings],
2847  [.section .rodata.str, "aMS", @progbits, 1])
2848 if test $gcc_cv_as_shf_merge = no; then
2849   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2850     [elf,2,12,0], [--fatal-warnings],
2851     [.section .rodata.str, "aMS", %progbits, 1])
2853 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2854   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2855 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2857 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2858  gcc_cv_as_comdat_group,
2859  [elf,2,16,0], [--fatal-warnings],
2860  [.section .text,"axG",@progbits,.foo,comdat])
2861 if test $gcc_cv_as_comdat_group = yes; then
2862   gcc_cv_as_comdat_group_percent=no
2863   gcc_cv_as_comdat_group_group=no
2864 else
2865  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2866    gcc_cv_as_comdat_group_percent,
2867    [elf,2,16,0], [--fatal-warnings],
2868    [.section .text,"axG",%progbits,.foo,comdat])
2869  if test $gcc_cv_as_comdat_group_percent = yes; then
2870    gcc_cv_as_comdat_group_group=no
2871  else
2872    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2873      gcc_cv_as_comdat_group_group=no
2874    fi
2875    case "${target}" in
2876      # Sun as uses a completely different syntax.
2877      *-*-solaris2*)
2878        case "${target}" in
2879          sparc*-*-solaris2*)
2880            conftest_s='
2881                .group foo,".text%foo",#comdat
2882                .section ".text%foo", #alloc,#execinstr,#progbits
2883                .globl foo
2884              foo:
2885              '
2886            ;;
2887          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2888            conftest_s='
2889                .group foo,.text%foo,#comdat
2890                .section .text%foo, "ax", @progbits
2891                .globl  foo
2892              foo:
2893              '
2894            ;;
2895        esac
2896        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2897          gcc_cv_as_comdat_group_group,
2898          ,, [$conftest_s])
2899        ;;
2900    esac
2901  fi
2903 if test x"$ld_is_gold" = xyes; then
2904   comdat_group=yes
2905 elif test $in_tree_ld = yes ; then
2906   comdat_group=no
2907   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
2908      && test $in_tree_ld_is_elf = yes; then
2909      comdat_group=yes
2910   fi
2911 elif echo "$ld_ver" | grep GNU > /dev/null; then
2912   comdat_group=yes
2913   if test 0"$ld_date" -lt 20050308; then
2914     if test -n "$ld_date"; then
2915       # If there was date string, but was earlier than 2005-03-08, fail
2916       comdat_group=no
2917     elif test "$ld_vers_major" -lt 2; then
2918       comdat_group=no
2919     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2920       comdat_group=no
2921     fi
2922   fi
2923 else
2924 changequote(,)dnl
2925   case "${target}" in
2926     *-*-solaris2.1[1-9]*)
2927       comdat_group=no
2928       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2929       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2930       # version 1.688.
2931       #
2932       # If using Sun as for COMDAT group as emitted by GCC, one needs at
2933       # least ld version 1.2267.
2934       if test "$ld_vers_major" -gt 1; then
2935         comdat_group=yes
2936       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2937         comdat_group=yes
2938       elif test "$ld_vers_minor" -ge 2267; then
2939         comdat_group=yes
2940       fi
2941       ;;
2942     *)
2943       # Assume linkers other than GNU ld don't support COMDAT group.
2944       comdat_group=no
2945       ;;
2946   esac
2947 changequote([,])dnl
2949 # Allow overriding the automatic COMDAT group tests above.
2950 AC_ARG_ENABLE(comdat,
2951   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2952   [comdat_group="$enable_comdat"])
2953 if test $comdat_group = no; then
2954   gcc_cv_as_comdat_group=no
2955   gcc_cv_as_comdat_group_percent=no
2956   gcc_cv_as_comdat_group_group=no
2958 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2959   [`if test $gcc_cv_as_comdat_group = yes \
2960     || test $gcc_cv_as_comdat_group_percent = yes \
2961     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2962 [Define 0/1 if your assembler and linker support COMDAT groups.])
2964 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2965  gcc_cv_as_discriminator,
2966  [2,19,51],,
2967 [       .text
2968         .file 1 "conf.c"
2969         .loc 1 1 0 discriminator 1],,
2970 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2971   [Define if your assembler supports the .loc discriminator sub-directive.])])
2973 # Thread-local storage - the check is heavily parameterized.
2974 conftest_s=
2975 tls_first_major=
2976 tls_first_minor=
2977 tls_as_opt=
2978 case "$target" in
2979 changequote(,)dnl
2980   alpha*-*-*)
2981     conftest_s='
2982         .section ".tdata","awT",@progbits
2983 foo:    .long   25
2984         .text
2985         ldq     $27,__tls_get_addr($29)         !literal!1
2986         lda     $16,foo($29)                    !tlsgd!1
2987         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2988         ldq     $27,__tls_get_addr($29)         !literal!2
2989         lda     $16,foo($29)                    !tlsldm!2
2990         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2991         ldq     $1,foo($29)                     !gotdtprel
2992         ldah    $2,foo($29)                     !dtprelhi
2993         lda     $3,foo($2)                      !dtprello
2994         lda     $4,foo($29)                     !dtprel
2995         ldq     $1,foo($29)                     !gottprel
2996         ldah    $2,foo($29)                     !tprelhi
2997         lda     $3,foo($2)                      !tprello
2998         lda     $4,foo($29)                     !tprel'
2999         tls_first_major=2
3000         tls_first_minor=13
3001         tls_as_opt=--fatal-warnings
3002         ;;
3003   cris-*-*|crisv32-*-*)
3004     conftest_s='
3005         .section ".tdata","awT",@progbits
3006 x:      .long   25
3007         .text
3008         move.d x:IE,$r10
3009         nop'
3010         tls_first_major=2
3011         tls_first_minor=20
3012         tls_as_opt=--fatal-warnings
3013         ;;
3014   frv*-*-*)
3015     conftest_s='
3016         .section ".tdata","awT",@progbits
3017 x:      .long   25
3018         .text
3019         call    #gettlsoff(x)'
3020         tls_first_major=2
3021         tls_first_minor=14
3022         ;;
3023   hppa*-*-linux*)
3024     conftest_s='
3025 t1:     .reg    %r20
3026 t2:     .reg    %r21
3027 gp:     .reg    %r19
3028         .section ".tdata","awT",@progbits
3029 foo:    .long   25
3030         .text
3031         .align  4
3032         addil LT%foo-$tls_gdidx$,gp
3033         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3034         b __tls_get_addr
3035         nop             
3036         addil LT%foo-$tls_ldidx$,gp
3037         b __tls_get_addr
3038         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3039         addil LR%foo-$tls_dtpoff$,%ret0
3040         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3041         mfctl %cr27,%t1                 
3042         addil LT%foo-$tls_ieoff$,gp
3043         ldw RT%foo-$tls_ieoff$(%r1),%t2
3044         add %t1,%t2,%t3                 
3045         mfctl %cr27,%t1                 
3046         addil LR%foo-$tls_leoff$,%t1
3047         ldo RR%foo-$tls_leoff$(%r1),%t2'
3048         tls_first_major=2
3049         tls_first_minor=15
3050         tls_as_opt=--fatal-warnings
3051         ;;
3052   arm*-*-*)
3053     conftest_s='
3054         .section ".tdata","awT",%progbits
3055 foo:    .long   25
3056         .text
3057 .word foo(gottpoff)
3058 .word foo(tpoff)
3059 .word foo(tlsgd)
3060 .word foo(tlsldm)
3061 .word foo(tlsldo)'
3062         tls_first_major=2
3063         tls_first_minor=17
3064         ;;
3065   i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
3066     case "$target" in
3067       i[34567]86-*-solaris2.*)
3068         on_solaris=yes
3069         tga_func=___tls_get_addr
3070         ;;
3071       x86_64-*-solaris2.1[0-9]*)
3072         on_solaris=yes
3073         tga_func=__tls_get_addr
3074         ;;
3075       *)
3076         on_solaris=no
3077         ;;
3078     esac
3079     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3080       conftest_s='
3081         .section .tdata,"awt",@progbits'
3082       tls_first_major=0
3083       tls_first_minor=0
3084 changequote([,])dnl
3085       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3086 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3087 changequote(,)dnl
3088     else
3089       conftest_s='
3090         .section ".tdata","awT",@progbits'
3091       tls_first_major=2
3092       tls_first_minor=14
3093       tls_as_opt="--fatal-warnings"
3094     fi
3095     conftest_s="$conftest_s
3096 foo:    .long   25
3097         .text
3098         movl    %gs:0, %eax
3099         leal    foo@tlsgd(,%ebx,1), %eax
3100         leal    foo@tlsldm(%ebx), %eax
3101         leal    foo@dtpoff(%eax), %edx
3102         movl    foo@gottpoff(%ebx), %eax
3103         subl    foo@gottpoff(%ebx), %eax
3104         addl    foo@gotntpoff(%ebx), %eax
3105         movl    foo@indntpoff, %eax
3106         movl    \$foo@tpoff, %eax
3107         subl    \$foo@tpoff, %eax
3108         leal    foo@ntpoff(%ecx), %eax"
3109     ;;
3110   x86_64-*-*)
3111     conftest_s='
3112         .section ".tdata","awT",@progbits
3113 foo:    .long   25
3114         .text
3115         movq    %fs:0, %rax
3116         leaq    foo@TLSGD(%rip), %rdi
3117         leaq    foo@TLSLD(%rip), %rdi
3118         leaq    foo@DTPOFF(%rax), %rdx
3119         movq    foo@GOTTPOFF(%rip), %rax
3120         movq    $foo@TPOFF, %rax'
3121         tls_first_major=2
3122         tls_first_minor=14
3123         tls_as_opt=--fatal-warnings
3124         ;;
3125   ia64-*-*)
3126     conftest_s='
3127         .section ".tdata","awT",@progbits
3128 foo:    data8   25
3129         .text
3130         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3131         addl    r17 = @ltoff(@dtprel(foo#)), gp
3132         addl    r18 = @ltoff(@tprel(foo#)), gp
3133         addl    r19 = @dtprel(foo#), gp
3134         adds    r21 = @dtprel(foo#), r13
3135         movl    r23 = @dtprel(foo#)
3136         addl    r20 = @tprel(foo#), gp
3137         adds    r22 = @tprel(foo#), r13
3138         movl    r24 = @tprel(foo#)'
3139         tls_first_major=2
3140         tls_first_minor=13
3141         tls_as_opt=--fatal-warnings
3142         ;;
3143   mips*-*-*)
3144     conftest_s='
3145         .section .tdata,"awT",@progbits
3147         .word 2
3148         .text
3149         addiu $4, $28, %tlsgd(x)
3150         addiu $4, $28, %tlsldm(x)
3151         lui $4, %dtprel_hi(x)
3152         addiu $4, $4, %dtprel_lo(x)
3153         lw $4, %gottprel(x)($28)
3154         lui $4, %tprel_hi(x)
3155         addiu $4, $4, %tprel_lo(x)'
3156         tls_first_major=2
3157         tls_first_minor=16
3158         tls_as_opt='-32 --fatal-warnings'
3159         ;;
3160   m68k-*-*)
3161     conftest_s='
3162         .section .tdata,"awT",@progbits
3164         .word 2
3165         .text
3166 foo:
3167         move.l x@TLSGD(%a5),%a0
3168         move.l x@TLSLDM(%a5),%a0
3169         move.l x@TLSLDO(%a5),%a0
3170         move.l x@TLSIE(%a5),%a0
3171         move.l x@TLSLE(%a5),%a0'
3172         tls_first_major=2
3173         tls_first_minor=19
3174         tls_as_opt='--fatal-warnings'
3175         ;;
3176   aarch64*-*-*)
3177     conftest_s='
3178         .section ".tdata","awT",%progbits
3179 foo:    .long   25
3180         .text
3181         adrp  x0, :tlsgd:x
3182         add   x0, x0, #:tlsgd_lo12:x
3183         bl    __tls_get_addr
3184         nop'
3185         tls_first_major=2
3186         tls_first_minor=20
3187         tls_as_opt='--fatal-warnings'
3188         ;;
3189   powerpc-*-*)
3190     conftest_s='
3191         .section ".tdata","awT",@progbits
3192         .align 2
3193 ld0:    .space 4
3194 ld1:    .space 4
3195 x1:     .space 4
3196 x2:     .space 4
3197 x3:     .space 4
3198         .text
3199         addi 3,31,ld0@got@tlsgd
3200         bl __tls_get_addr
3201         addi 3,31,x1@got@tlsld
3202         bl __tls_get_addr
3203         addi 9,3,x1@dtprel
3204         addis 9,3,x2@dtprel@ha
3205         addi 9,9,x2@dtprel@l
3206         lwz 9,x3@got@tprel(31)
3207         add 9,9,x@tls
3208         addi 9,2,x1@tprel
3209         addis 9,2,x2@tprel@ha
3210         addi 9,9,x2@tprel@l'
3211         tls_first_major=2
3212         tls_first_minor=14
3213         tls_as_opt="-a32 --fatal-warnings"
3214         ;;
3215   powerpc64-*-*)
3216     conftest_s='
3217         .section ".tdata","awT",@progbits
3218         .align 3
3219 ld0:    .space 8
3220 ld1:    .space 8
3221 x1:     .space 8
3222 x2:     .space 8
3223 x3:     .space 8
3224         .text
3225         addi 3,2,ld0@got@tlsgd
3226         bl .__tls_get_addr
3227         nop
3228         addi 3,2,ld1@toc
3229         bl .__tls_get_addr
3230         nop
3231         addi 3,2,x1@got@tlsld
3232         bl .__tls_get_addr
3233         nop
3234         addi 9,3,x1@dtprel
3235         bl .__tls_get_addr
3236         nop
3237         addis 9,3,x2@dtprel@ha
3238         addi 9,9,x2@dtprel@l
3239         bl .__tls_get_addr
3240         nop
3241         ld 9,x3@got@dtprel(2)
3242         add 9,9,3
3243         bl .__tls_get_addr
3244         nop'
3245         tls_first_major=2
3246         tls_first_minor=14
3247         tls_as_opt="-a64 --fatal-warnings"
3248         ;;
3249   s390-*-*)
3250     conftest_s='
3251         .section ".tdata","awT",@progbits
3252 foo:    .long   25
3253         .text
3254         .long   foo@TLSGD
3255         .long   foo@TLSLDM
3256         .long   foo@DTPOFF
3257         .long   foo@NTPOFF
3258         .long   foo@GOTNTPOFF
3259         .long   foo@INDNTPOFF
3260         l       %r1,foo@GOTNTPOFF(%r12)
3261         l       %r1,0(%r1):tls_load:foo
3262         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3263         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3264         tls_first_major=2
3265         tls_first_minor=14
3266         tls_as_opt="-m31 --fatal-warnings"
3267         ;;
3268   s390x-*-*)
3269     conftest_s='
3270         .section ".tdata","awT",@progbits
3271 foo:    .long   25
3272         .text
3273         .quad   foo@TLSGD
3274         .quad   foo@TLSLDM
3275         .quad   foo@DTPOFF
3276         .quad   foo@NTPOFF
3277         .quad   foo@GOTNTPOFF
3278         lg      %r1,foo@GOTNTPOFF(%r12)
3279         larl    %r1,foo@INDNTPOFF
3280         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3281         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3282         tls_first_major=2
3283         tls_first_minor=14
3284         tls_as_opt="-m64 -Aesame --fatal-warnings"
3285         ;;
3286   sh-*-* | sh[34]-*-*)
3287     conftest_s='
3288         .section ".tdata","awT",@progbits
3289 foo:    .long   25
3290         .text
3291         .long   foo@TLSGD
3292         .long   foo@TLSLDM
3293         .long   foo@DTPOFF
3294         .long   foo@GOTTPOFF
3295         .long   foo@TPOFF'
3296         tls_first_major=2
3297         tls_first_minor=13
3298         tls_as_opt=--fatal-warnings
3299         ;;
3300   sparc*-*-*)
3301     case "$target" in
3302       sparc*-sun-solaris2.*)
3303         on_solaris=yes
3304         tga_func=__tls_get_addr
3305         ;;
3306       *)
3307         on_solaris=no
3308         ;;
3309     esac
3310     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3311       conftest_s='
3312         .section ".tdata",#alloc,#write,#tls'
3313         tls_first_major=0
3314         tls_first_minor=0
3315     else
3316       conftest_s='
3317         .section ".tdata","awT",@progbits'
3318         tls_first_major=2
3319         tls_first_minor=14
3320         tls_as_opt="-32 --fatal-warnings"
3321     fi
3322     conftest_s="$conftest_s
3323 foo:    .long   25
3324         .text
3325         sethi   %tgd_hi22(foo), %o0
3326         add     %o0, %tgd_lo10(foo), %o1
3327         add     %l7, %o1, %o0, %tgd_add(foo)
3328         call    __tls_get_addr, %tgd_call(foo)
3329         sethi   %tldm_hi22(foo), %l1
3330         add     %l1, %tldm_lo10(foo), %l2
3331         add     %l7, %l2, %o0, %tldm_add(foo)
3332         call    __tls_get_addr, %tldm_call(foo)
3333         sethi   %tldo_hix22(foo), %l3
3334         xor     %l3, %tldo_lox10(foo), %l4
3335         add     %o0, %l4, %l5, %tldo_add(foo)
3336         sethi   %tie_hi22(foo), %o3
3337         add     %o3, %tie_lo10(foo), %o3
3338         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3339         add     %g7, %o2, %o4, %tie_add(foo)
3340         sethi   %tle_hix22(foo), %l1
3341         xor     %l1, %tle_lox10(foo), %o5
3342         ld      [%g7 + %o5], %o1"
3343         ;;
3344   tilepro*-*-*)
3345       conftest_s='
3346         .section ".tdata","awT",@progbits
3347 foo:    .long   25
3348         .text
3349         addli   r0, zero, tls_gd(foo)
3350         auli    r0, zero, tls_gd_ha16(foo)
3351         addli   r0, r0, tls_gd_lo16(foo)
3352         jal     __tls_get_addr
3353         addli   r0, zero, tls_ie(foo)
3354         auli    r0, r0, tls_ie_ha16(foo)
3355         addli   r0, r0, tls_ie_lo16(foo)'
3356         tls_first_major=2
3357         tls_first_minor=22
3358         tls_as_opt="--fatal-warnings"
3359         ;;
3360   tilegx*-*-*)
3361       conftest_s='
3362         .section ".tdata","awT",@progbits
3363 foo:    .long   25
3364         .text
3365         shl16insli r0, zero, hw0_last_tls_gd(foo)
3366         shl16insli r0, zero, hw1_last_tls_gd(foo)
3367         shl16insli r0, r0,   hw0_tls_gd(foo)
3368         jal        __tls_get_addr
3369         shl16insli r0, zero, hw1_last_tls_ie(foo)
3370         shl16insli r0, r0,   hw0_tls_ie(foo)'
3371         tls_first_major=2
3372         tls_first_minor=22
3373         tls_as_opt="--fatal-warnings"
3374         ;;
3375   xtensa*-*-*)
3376     conftest_s='
3377         .section ".tdata","awT",@progbits
3378 foo:    .long   25
3379         .text
3380         movi    a8, foo@TLSFUNC
3381         movi    a10, foo@TLSARG
3382         callx8.tls a8, foo@TLSCALL'
3383         tls_first_major=2
3384         tls_first_minor=19
3385         ;;
3386 changequote([,])dnl
3387 esac
3388 set_have_as_tls=no
3389 if test "x$enable_tls" = xno ; then
3390   : # TLS explicitly disabled.
3391 elif test "x$enable_tls" = xyes ; then
3392   set_have_as_tls=yes # TLS explicitly enabled.
3393 elif test -z "$tls_first_major"; then
3394   : # If we don't have a check, assume no support.
3395 else
3396   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3397   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3398   [set_have_as_tls=yes])
3400 case "$target" in
3401   # TLS was introduced in the Solaris 9 FCS release.  Support for GNU-style
3402   # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier
3403   # Sun style that Sun ld and GCC don't support any longer.
3404   *-*-solaris2.*)
3405     AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3406     ld_tls_support=no
3407     # Check ld and ld.so.1 TLS support.
3408     if echo "$ld_ver" | grep GNU > /dev/null; then
3409       # Assume all interesting versions of GNU ld have TLS support.
3410       # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3411       ld_tls_support=yes
3412     else
3413       case "$target" in
3414         # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3415         i?86-*-solaris2.9)
3416           min_tls_ld_vers_minor=374
3417           ;;
3418         # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3419         sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3420           min_tls_ld_vers_minor=343
3421           ;;
3422       esac
3423       if test "$ld_vers_major" -gt 1 || \
3424         test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3425         ld_tls_support=yes
3426       else
3427         set_have_as_tls=no
3428       fi
3429     fi
3430     AC_MSG_RESULT($ld_tls_support)
3432     save_LIBS="$LIBS"
3433     save_LDFLAGS="$LDFLAGS"
3434     LIBS=
3435     LDFLAGS=
3437     AC_MSG_CHECKING(library containing $tga_func)
3438     # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3439     # (32-bit x86) only lived in libthread, so check for that.  Keep
3440     # set_have_as_tls if found, disable if not.
3441     AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3442     # Clear LIBS if we cannot support TLS.
3443     if test $set_have_as_tls = no; then
3444       LIBS=
3445     fi
3446     # Always define LIB_TLS_SPEC, even without TLS support.
3447     AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3448         [Define to the library containing __tls_get_addr/___tls_get_addr.])
3449     AC_MSG_RESULT($LIBS)
3451     LIBS="$save_LIBS"
3452     LDFLAGS="$save_LDFLAGS"
3453     ;;
3454 esac
3455 if test $set_have_as_tls = yes ; then
3456   AC_DEFINE(HAVE_AS_TLS, 1,
3457             [Define if your assembler and linker support thread-local storage.])
3460 # Target-specific assembler checks.
3462 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3463 gcc_cv_ld_static_dynamic=no
3464 gcc_cv_ld_static_option='-Bstatic'
3465 gcc_cv_ld_dynamic_option='-Bdynamic'
3466 if test $in_tree_ld = yes ; then
3467   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
3468     gcc_cv_ld_static_dynamic=yes
3469   fi
3470 elif test x$gcc_cv_ld != x; then
3471   # Check if linker supports -Bstatic/-Bdynamic option
3472   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3473      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3474       gcc_cv_ld_static_dynamic=yes
3475   else
3476     case "$target" in
3477       # HP-UX ld uses -a flags to select between shared and archive.
3478       *-*-hpux*)
3479         if test x"$gnu_ld" = xno; then
3480           gcc_cv_ld_static_dynamic=yes
3481           gcc_cv_ld_static_option="-aarchive_shared"
3482           gcc_cv_ld_dynamic_option="-adefault"
3483         fi
3484         ;;
3485       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3486       *-*-solaris2*)
3487         gcc_cv_ld_static_dynamic=yes
3488         ;;
3489     esac
3490   fi
3492 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3493         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3494 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3495         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3496 [Define to the linker option to disable use of shared objects.])
3497         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3498 [Define to the linker option to enable use of shared objects.])
3500 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3502 if test x"$demangler_in_ld" = xyes; then
3503   AC_MSG_CHECKING(linker --demangle support)
3504   gcc_cv_ld_demangle=no
3505   if test $in_tree_ld = yes; then
3506     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 \
3507       gcc_cv_ld_demangle=yes
3508     fi
3509   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3510     # Check if the GNU linker supports --demangle option
3511     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3512       gcc_cv_ld_demangle=yes
3513     fi
3514   fi
3515   if test x"$gcc_cv_ld_demangle" = xyes; then
3516     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3517 [Define if your linker supports --demangle option.])
3518   fi
3519   AC_MSG_RESULT($gcc_cv_ld_demangle)
3522 AC_MSG_CHECKING(linker plugin support)
3523 gcc_cv_lto_plugin=0
3524 if test -f liblto_plugin.la; then
3525   save_ld_ver="$ld_ver"
3526   save_ld_vers_major="$ld_vers_major"
3527   save_ld_vers_minor="$ld_vers_minor"
3528   save_ld_is_gold="$ld_is_gold"
3530   ld_is_gold=no
3532   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3533     ld_ver="GNU ld"
3534     # FIXME: ld_is_gold?
3535     ld_vers_major="$gcc_cv_gld_major_version"
3536     ld_vers_minor="$gcc_cv_gld_minor_version"
3537   else
3538     # Determine plugin linker version.
3539     # FIXME: Partial duplicate from above, generalize.
3540 changequote(,)dnl
3541     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3542     if echo "$ld_ver" | grep GNU > /dev/null; then
3543       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3544         ld_is_gold=yes
3545         ld_vers=`echo $ld_ver | sed -n \
3546             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3547       else
3548         ld_vers=`echo $ld_ver | sed -n \
3549             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3550       fi
3551       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3552       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3553     fi
3554 changequote([,])dnl
3555   fi
3557   # Determine plugin support.
3558   if echo "$ld_ver" | grep GNU > /dev/null; then
3559     # Require GNU ld or gold 2.21+ for plugin support by default.
3560     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3561       gcc_cv_lto_plugin=2
3562     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3563     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3564       gcc_cv_lto_plugin=1
3565     fi
3566   fi
3568   ld_ver="$save_ld_ver"
3569   ld_vers_major="$save_ld_vers_major"
3570   ld_vers_minor="$save_ld_vers_minor"
3571   ld_is_gold="$save_ld_is_gold"
3573 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3574   [Define to the level of your linker's plugin support.])
3575 AC_MSG_RESULT($gcc_cv_lto_plugin)
3577 case "$target" in
3578   # All TARGET_ABI_OSF targets.
3579   alpha*-*-linux* | alpha*-*-*bsd*)
3580     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3581         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3582 [       .set nomacro
3583         .text
3584         extbl   $3, $2, $3      !lituse_bytoff!1
3585         ldq     $2, a($29)      !literal!1
3586         ldq     $4, b($29)      !literal!2
3587         ldq_u   $3, 0($2)       !lituse_base!1
3588         ldq     $27, f($29)     !literal!5
3589         jsr     $26, ($27), f   !lituse_jsr!5
3590         ldah    $29, 0($26)     !gpdisp!3
3591         lda     $0, c($29)      !gprel
3592         ldah    $1, d($29)      !gprelhigh
3593         lda     $1, d($1)       !gprellow
3594         lda     $29, 0($29)     !gpdisp!3],,
3595     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3596   [Define if your assembler supports explicit relocations.])])
3597     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3598         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3599 [       .set nomacro
3600         .text
3601         ldq     $27, a($29)     !literal!1
3602         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3603     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3604   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3605     ;;
3607   cris-*-*)
3608     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3609       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3610       [-no-mul-bug-abort], [.text],,
3611       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3612                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3613     ;;
3615   sparc*-*-*)
3616     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3617       [.register %g2, #scratch],,
3618       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3619                 [Define if your assembler supports .register.])])
3621     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3622       [-relax], [.text],,
3623       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3624                 [Define if your assembler supports -relax option.])])
3626     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3627       gcc_cv_as_sparc_gotdata_op,,
3628       [-K PIC],
3629 [.text
3630 .align 4
3631 foo:
3632         nop
3633 bar:
3634         sethi %gdop_hix22(foo), %g1
3635         xor    %g1, %gdop_lox10(foo), %g1
3636         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3637       [if test x$gcc_cv_ld != x \
3638        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3639          if test x$gcc_cv_objdump != x; then
3640            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3641               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3642                gcc_cv_as_sparc_gotdata_op=no
3643            else
3644                gcc_cv_as_sparc_gotdata_op=yes
3645            fi
3646          fi
3647        fi
3648        rm -f conftest],
3649       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3650                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3652     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3653       gcc_cv_as_sparc_ua_pcrel,,
3654       [-K PIC],
3655 [.text
3656 foo:
3657         nop
3658 .data
3659 .align 4
3660 .byte 0
3661 .uaword %r_disp32(foo)],
3662       [if test x$gcc_cv_ld != x \
3663        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3664          gcc_cv_as_sparc_ua_pcrel=yes
3665        fi
3666        rm -f conftest],
3667       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3668                 [Define if your assembler and linker support unaligned PC relative relocs.])
3670       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3671         gcc_cv_as_sparc_ua_pcrel_hidden,,
3672         [-K PIC],
3673 [.data
3674 .align 4
3675 .byte 0x31
3676 .uaword %r_disp32(foo)
3677 .byte 0x32, 0x33, 0x34
3678 .global foo
3679 .hidden foo
3680 foo:
3681 .skip 4],
3682         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3683          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3684          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3685             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3686             if $gcc_cv_objdump -R conftest 2> /dev/null \
3687                | grep 'DISP32' > /dev/null 2>&1; then
3688                 :
3689             else
3690                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3691             fi
3692          fi
3693          rm -f conftest],
3694          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3695                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3696     ]) # unaligned pcrel relocs
3698     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3699       gcc_cv_as_sparc_offsetable_lo10,,
3700       [-xarch=v9],
3701 [.text
3702         or %g1, %lo(ab) + 12, %g1
3703         or %g1, %lo(ab + 12), %g1],
3704       [if test x$gcc_cv_objdump != x \
3705        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3706           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3707          gcc_cv_as_sparc_offsetable_lo10=yes
3708        fi],
3709        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3710                  [Define if your assembler supports offsetable %lo().])])
3712     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3713       gcc_cv_as_sparc_fmaf,,
3714       [-xarch=v9d],
3715       [.text
3716        .register %g2, #scratch
3717        .register %g3, #scratch
3718        .align 4
3719        fmaddd %f0, %f2, %f4, %f6
3720        addxccc %g1, %g2, %g3
3721        fsrl32 %f2, %f4, %f8
3722        fnaddd %f10, %f12, %f14],,
3723       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3724                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3726     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3727       gcc_cv_as_sparc_sparc4,,
3728       [-xarch=sparc4],
3729       [.text
3730        .register %g2, #scratch
3731        .register %g3, #scratch
3732        .align 4
3733        cxbe %g2, %g3, 1f
3734 1:     cwbneg %g2, %g3, 1f
3735 1:     sha1
3736        md5
3737        aes_kexpand0 %f4, %f6, %f8
3738        des_round %f38, %f40, %f42, %f44
3739        camellia_f %f54, %f56, %f58, %f60
3740        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3741       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3742                 [Define if your assembler supports SPARC4 instructions.])])
3743     ;;
3745 changequote(,)dnl
3746   i[34567]86-*-* | x86_64-*-*)
3747 changequote([,])dnl
3748     case $target_os in
3749       cygwin*)
3750         # Full C++ conformance when using a shared libstdc++-v3 requires some
3751         # support from the Cygwin DLL, which in more recent versions exports
3752         # wrappers to aid in interposing and redirecting operators new, delete,
3753         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3754         # are configuring for a version of Cygwin that exports the wrappers.
3755         if test x$host = x$target; then
3756           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3757         else
3758           # Can't check presence of libc functions during cross-compile, so
3759           # we just have to assume we're building for an up-to-date target.
3760           gcc_ac_cygwin_dll_wrappers=yes
3761         fi
3762         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3763           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3764           [Define if you want to generate code by default that assumes that the
3765            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3766     esac
3767     case $target_os in
3768       cygwin* | pe | mingw32* | interix*)
3769         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3770         # definition is used unconditionally to initialise the default state of
3771         # the target option variable that governs usage of the feature.
3772         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3773          [2,19,52],,[.comm foo,1,32])
3774         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3775           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3776           [Define if your assembler supports specifying the alignment
3777            of objects allocated using the GAS .comm command.])
3778         # Used for DWARF 2 in PE
3779         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3780           gcc_cv_as_ix86_pe_secrel32,
3781           [2,15,91],,
3782 [.text
3783 foo:    nop
3784 .data
3785         .secrel32 foo],
3786           [if test x$gcc_cv_ld != x \
3787            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3788              gcc_cv_as_ix86_pe_secrel32=yes
3789            fi
3790            rm -f conftest],
3791           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3792             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3793         # Test if the assembler supports the extended form of the .section
3794         # directive that specifies section alignment.  LTO support uses this,
3795         # but normally only after installation, so we warn but don't fail the
3796         # configure if LTO is enabled but the assembler does not support it.
3797         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3798           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3799         if test x$gcc_cv_as_section_has_align != xyes; then
3800           case ",$enable_languages," in
3801             *,lto,*)
3802               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3803               ;;
3804           esac
3805         fi
3806         # Test if the assembler supports the section flag 'e' for specifying
3807         # an excluded section.
3808         gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3809           [2,22,51],,
3810 [.section foo1,"e"
3811 .byte 0,0,0,0])
3812         AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3813           [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3814           [Define if your assembler supports specifying the section flag e.])
3815         ;;
3816     esac
3818     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3819        gcc_cv_as_ix86_filds,,,
3820        [filds mem; fists mem],,
3821        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3822          [Define if your assembler uses filds and fists mnemonics.])])
3824     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3825        gcc_cv_as_ix86_fildq,,,
3826        [fildq mem; fistpq mem],,
3827        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3828          [Define if your assembler uses fildq and fistq mnemonics.])])
3830     gcc_GAS_CHECK_FEATURE([cmov syntax],
3831       gcc_cv_as_ix86_cmov_sun_syntax,,,
3832       [cmovl.l %edx, %eax],,
3833       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3834         [Define if your assembler supports the Sun syntax for cmov.])])
3836     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3837       gcc_cv_as_ix86_ffreep,,,
3838       [ffreep %st(1)],,
3839       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3840         [Define if your assembler supports the ffreep mnemonic.])])
3842     gcc_GAS_CHECK_FEATURE([.quad directive],
3843       gcc_cv_as_ix86_quad,,,
3844       [.quad 0],,
3845       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3846         [Define if your assembler supports the .quad directive.])])
3848     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3849       gcc_cv_as_ix86_sahf,,,
3850       [.code64
3851        sahf],,
3852       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3853         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3855     gcc_GAS_CHECK_FEATURE([hle prefixes],
3856       gcc_cv_as_ix86_hle,,,
3857       [lock xacquire cmpxchg %esi, (%ecx)],,
3858       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3859         [Define if your assembler supports HLE prefixes.])])
3861     gcc_GAS_CHECK_FEATURE([swap suffix],
3862       gcc_cv_as_ix86_swap,,,
3863       [movl.s %esp, %ebp],,
3864       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3865         [Define if your assembler supports the swap suffix.])])
3867     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3868       gcc_cv_as_ix86_diff_sect_delta,,,
3869       [.section .rodata
3870 .L1:
3871         .long .L2-.L1
3872         .long .L3-.L1
3873         .text
3874 .L3:    nop
3875 .L2:    nop],,
3876       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3877         [Define if your assembler supports the subtraction of symbols in different sections.])])
3879     # These two are used unconditionally by i386.[ch]; it is to be defined
3880     # to 1 if the feature is present, 0 otherwise.
3881     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3882         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3883 [       .text
3884 .L0:
3885         nop
3886         .data
3887         .long .L0@GOTOFF])
3888     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3889       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3890       [Define true if the assembler supports '.long foo@GOTOFF'.])
3892     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3893         gcc_cv_as_ix86_rep_lock_prefix,,,
3894         [rep movsl
3895          rep ret
3896          rep nop
3897          rep bsf %ecx, %eax
3898          rep bsr %ecx, %eax
3899          lock addl %edi, (%eax,%esi)
3900          lock orl $0, (%esp)],,
3901         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3902           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3904     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3905         gcc_cv_as_ix86_tlsgdplt,,,
3906         [call    tls_gd@tlsgdplt],
3907         [if test x$gcc_cv_ld != x \
3908          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3909            gcc_cv_as_ix86_tlsgdplt=yes
3910          fi
3911          rm -f conftest],
3912       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3913         [Define if your assembler and linker support @tlsgdplt.])])
3915     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3916         gcc_cv_as_ix86_tlsldmplt,,,
3917         [tls_ld:
3918          call    tls_ld@tlsldmplt],
3919         [if test x$gcc_cv_ld != x \
3920          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3921            gcc_cv_as_ix86_tlsldmplt=yes
3922          fi
3923          rm -f conftest],
3924       [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3925         [Define if your assembler and linker support @tlsldmplt.])])
3927     ;;
3929   ia64*-*-*)
3930     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3931         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3932 [       .text
3933         addl r15 = @ltoffx(x#), gp
3934         ;;
3935         ld8.mov r16 = [[r15]], x#],,
3936     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3937           [Define if your assembler supports ltoffx and ldxmov relocations.])])
3939     ;;
3941   powerpc*-*-*)
3942     case $target in
3943       *-*-aix*) conftest_s='    .machine "pwr5"
3944         .csect .text[[PR]]
3945         mfcr 3,128';;
3946       *-*-darwin*)
3947         gcc_GAS_CHECK_FEATURE([.machine directive support],
3948           gcc_cv_as_machine_directive,,,
3949           [     .machine ppc7400])
3950         if test x$gcc_cv_as_machine_directive != xyes; then
3951           echo "*** This target requires an assembler supporting \".machine\"" >&2
3952           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3953           test x$build = x$target && exit 1
3954         fi
3955         conftest_s='    .text
3956         mfcr r3,128';;
3957       *) conftest_s='   .machine power4
3958         .text
3959         mfcr 3,128';;
3960     esac
3962     gcc_GAS_CHECK_FEATURE([mfcr field support],
3963       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3964       [$conftest_s],,
3965       [AC_DEFINE(HAVE_AS_MFCRF, 1,
3966           [Define if your assembler supports mfcr field.])])
3968     case $target in
3969       *-*-aix*) conftest_s='    .machine "pwr5"
3970         .csect .text[[PR]]
3971         popcntb 3,3';;
3972       *) conftest_s='   .machine power5
3973         .text
3974         popcntb 3,3';;
3975     esac
3977     gcc_GAS_CHECK_FEATURE([popcntb support],
3978       gcc_cv_as_powerpc_popcntb, [2,17,0],,
3979       [$conftest_s],,
3980       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3981           [Define if your assembler supports popcntb field.])])
3983     case $target in
3984       *-*-aix*) conftest_s='    .machine "pwr5x"
3985         .csect .text[[PR]]
3986         frin 1,1';;
3987       *) conftest_s='   .machine power5
3988         .text
3989         frin 1,1';;
3990     esac
3992     gcc_GAS_CHECK_FEATURE([fp round support],
3993       gcc_cv_as_powerpc_fprnd, [2,17,0],,
3994       [$conftest_s],,
3995       [AC_DEFINE(HAVE_AS_FPRND, 1,
3996           [Define if your assembler supports fprnd.])])
3998     case $target in
3999       *-*-aix*) conftest_s='    .machine "pwr6"
4000         .csect .text[[PR]]
4001         mffgpr 1,3';;
4002       *) conftest_s='   .machine power6
4003         .text
4004         mffgpr 1,3';;
4005     esac
4007     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4008       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4009       [$conftest_s],,
4010       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4011           [Define if your assembler supports mffgpr and mftgpr.])])
4013     case $target in
4014       *-*-aix*) conftest_s='    .csect .text[[PR]]
4015 LCF..0:
4016         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4017       *-*-darwin*)
4018         conftest_s='    .text
4019 LCF0:
4020         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4021       *) conftest_s='   .text
4022 .LCF0:
4023         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4024     esac
4026     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4027       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4028       [$conftest_s],,
4029       [AC_DEFINE(HAVE_AS_REL16, 1,
4030           [Define if your assembler supports R_PPC_REL16 relocs.])])
4032     case $target in
4033       *-*-aix*) conftest_s='    .machine "pwr6"
4034         .csect .text[[PR]]
4035         cmpb 3,4,5';;
4036       *) conftest_s='   .machine power6
4037         .text
4038         cmpb 3,4,5';;
4039     esac
4041     gcc_GAS_CHECK_FEATURE([compare bytes support],
4042       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4043       [$conftest_s],,
4044       [AC_DEFINE(HAVE_AS_CMPB, 1,
4045           [Define if your assembler supports cmpb.])])
4047     case $target in
4048       *-*-aix*) conftest_s='    .machine "pwr6"
4049         .csect .text[[PR]]
4050         dadd 1,2,3';;
4051       *) conftest_s='   .machine power6
4052         .text
4053         dadd 1,2,3';;
4054     esac
4056     gcc_GAS_CHECK_FEATURE([decimal float support],
4057       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4058       [$conftest_s],,
4059       [AC_DEFINE(HAVE_AS_DFP, 1,
4060           [Define if your assembler supports DFP instructions.])])
4062     case $target in
4063       *-*-aix*) conftest_s='    .machine "pwr7"
4064         .csect .text[[PR]]
4065         lxvd2x 1,2,3';;
4066       *) conftest_s='   .machine power7
4067         .text
4068         lxvd2x 1,2,3';;
4069     esac
4071     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4072       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4073       [$conftest_s],,
4074       [AC_DEFINE(HAVE_AS_VSX, 1,
4075           [Define if your assembler supports VSX instructions.])])
4077     case $target in
4078       *-*-aix*) conftest_s='    .machine "pwr7"
4079         .csect .text[[PR]]
4080         popcntd 3,3';;
4081       *) conftest_s='   .machine power7
4082         .text
4083         popcntd 3,3';;
4084     esac
4086     gcc_GAS_CHECK_FEATURE([popcntd support],
4087       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4088       [$conftest_s],,
4089       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4090           [Define if your assembler supports POPCNTD instructions.])])
4092     case $target in
4093       *-*-aix*) conftest_s='    .machine "pwr8"
4094         .csect .text[[PR]]';;
4095       *) conftest_s='   .machine power8
4096         .text';;
4097     esac
4099     gcc_GAS_CHECK_FEATURE([power8 support],
4100       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4101       [$conftest_s],,
4102       [AC_DEFINE(HAVE_AS_POWER8, 1,
4103           [Define if your assembler supports POWER8 instructions.])])
4105     case $target in
4106       *-*-aix*) conftest_s='    .csect .text[[PR]]
4107         lwsync';;
4108       *) conftest_s='   .text
4109         lwsync';;
4110     esac
4112     gcc_GAS_CHECK_FEATURE([lwsync support],
4113       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4114       [$conftest_s],,
4115       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4116           [Define if your assembler supports LWSYNC instructions.])])
4118     case $target in
4119       *-*-aix*) conftest_s='    .machine "476"
4120         .csect .text[[PR]]
4121         dci 0';;
4122       *) conftest_s='   .machine "476"
4123         .text
4124         dci 0';;
4125     esac
4127     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4128       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4129       [$conftest_s],,
4130       [AC_DEFINE(HAVE_AS_DCI, 1,
4131           [Define if your assembler supports the DCI/ICI instructions.])])
4133     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4134       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4135       [.gnu_attribute 4,1],,
4136       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4137           [Define if your assembler supports .gnu_attribute.])])
4139     gcc_GAS_CHECK_FEATURE([tls marker support],
4140       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4141       [ bl __tls_get_addr(x@tlsgd)],,
4142       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4143           [Define if your assembler supports arg info for __tls_get_addr.])])
4145     case $target in
4146       *-*-aix*)
4147         gcc_GAS_CHECK_FEATURE([.ref support],
4148           gcc_cv_as_aix_ref, [2,21,0],,
4149           [     .csect stuff[[rw]]
4150              stuff:
4151                 .long 1
4152                 .extern sym
4153                 .ref sym
4154           ],,
4155           [AC_DEFINE(HAVE_AS_REF, 1,
4156             [Define if your assembler supports .ref])])
4157         ;;
4158     esac
4159     ;;
4161   mips*-*-*)
4162     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4163       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4164 [       lw $4,%gp_rel(foo)($4)],,
4165       [if test x$target_cpu_default = x
4166        then target_cpu_default=MASK_EXPLICIT_RELOCS
4167        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4168        fi])
4169     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4170       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4171       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4172                  [Define if the assembler understands -mno-shared.])])
4174     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4175       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4176       [.gnu_attribute 4,1],,
4177       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4178           [Define if your assembler supports .gnu_attribute.])])
4180     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4181       gcc_cv_as_mips_dtprelword, [2,18,0],,
4182       [.section .tdata,"awT",@progbits
4184         .word 2
4185         .text
4186         .dtprelword x+0x8000],,
4187       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4188           [Define if your assembler supports .dtprelword.])])
4190     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4191       gcc_cv_as_mips_dspr1_mult,,,
4192 [       .set    mips32r2
4193         .set    nodspr2
4194         .set    dsp
4195         madd    $ac3,$4,$5
4196         maddu   $ac3,$4,$5
4197         msub    $ac3,$4,$5
4198         msubu   $ac3,$4,$5
4199         mult    $ac3,$4,$5
4200         multu   $ac3,$4,$5],,
4201       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4202           [Define if your assembler supports DSPR1 mult.])])
4204     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4205     gcc_cv_as_ld_jalr_reloc=no
4206     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4207       if test $in_tree_ld = yes ; then
4208         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 \
4209            && test $in_tree_ld_is_elf = yes; then
4210           gcc_cv_as_ld_jalr_reloc=yes
4211         fi
4212       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4213         echo '  .ent x' > conftest.s
4214         echo 'x:        ld $2,%got_disp(y)($3)' >> conftest.s
4215         echo '  ld $25,%call16(y)($28)' >> conftest.s
4216         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4217         echo '1:        jalr $25' >> conftest.s
4218         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4219         echo '1:        jalr $25' >> conftest.s
4220         echo '  .end x' >> conftest.s
4221         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4222            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4223           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4224              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4225             gcc_cv_as_ld_jalr_reloc=yes
4226           fi
4227         fi
4228         rm -f conftest.*
4229       fi
4230     fi
4231     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4232       if test x$target_cpu_default = x; then
4233         target_cpu_default=MASK_RELAX_PIC_CALLS
4234       else
4235         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4236       fi
4237     fi
4238     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4240     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4241       [gcc_cv_ld_mips_personality_relaxation],
4242       [gcc_cv_ld_mips_personality_relaxation=no
4243        if test $in_tree_ld = yes ; then
4244          if test "$gcc_cv_gld_major_version" -eq 2 \
4245                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4246                  -o "$gcc_cv_gld_major_version" -gt 2; then
4247            gcc_cv_ld_mips_personality_relaxation=yes
4248          fi
4249        elif test x$gcc_cv_as != x \
4250                  -a x$gcc_cv_ld != x \
4251                  -a x$gcc_cv_readelf != x ; then
4252          cat > conftest.s <<EOF
4253         .cfi_startproc
4254         .cfi_personality 0x80,indirect_ptr
4255         .ent test
4256 test:
4257         nop
4258         .end test
4259         .cfi_endproc
4261         .section .data,"aw",@progbits
4262 indirect_ptr:
4263         .dc.a personality
4265          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4266             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4267            if $gcc_cv_readelf -d conftest 2>&1 \
4268               | grep TEXTREL > /dev/null 2>&1; then
4269              :
4270            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4271                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4272              :
4273            else
4274              gcc_cv_ld_mips_personality_relaxation=yes
4275            fi
4276          fi
4277        fi
4278        rm -f conftest.s conftest.o conftest])
4279     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4280             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4281       [Define if your linker can relax absolute .eh_frame personality
4282 pointers into PC-relative form.])
4283     fi
4284     ;;
4285 esac
4287 # Mips and HP-UX need the GNU assembler.
4288 # Linux on IA64 might be able to use the Intel assembler.
4290 case "$target" in
4291   mips*-*-* | *-*-hpux* )
4292     if test x$gas_flag = xyes \
4293        || test x"$host" != x"$build" \
4294        || test ! -x "$gcc_cv_as" \
4295        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4296       :
4297     else
4298       echo "*** This configuration requires the GNU assembler" >&2
4299       exit 1
4300     fi
4301     ;;
4302 esac
4304 # ??? Not all targets support dwarf2 debug_line, even within a version
4305 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4306 # info to the output file.  So, as supported targets are added to gas 2.11,
4307 # add some instruction here to (also) show we expect this might work.
4308 # ??? Once 2.11 is released, probably need to add first known working
4309 # version to the per-target configury.
4310 case "$cpu_type" in
4311   alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \
4312   | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa)
4313     insn="nop"
4314     ;;
4315   ia64 | s390)
4316     insn="nop 0"
4317     ;;
4318   mmix)
4319     insn="swym 0"
4320     ;;
4321 esac
4322 if test x"$insn" != x; then
4323  conftest_s="\
4324         .file 1 \"conftest.s\"
4325         .loc 1 3 0
4326         $insn"
4327  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4328   gcc_cv_as_dwarf2_debug_line,
4329   [elf,2,11,0],, [$conftest_s],
4330   [if test x$gcc_cv_objdump != x \
4331    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4332       | grep debug_line > /dev/null 2>&1; then
4333      gcc_cv_as_dwarf2_debug_line=yes
4334    fi])
4336 # The .debug_line file table must be in the exact order that
4337 # we specified the files, since these indices are also used
4338 # by DW_AT_decl_file.  Approximate this test by testing if
4339 # the assembler bitches if the same index is assigned twice.
4340  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4341   gcc_cv_as_dwarf2_file_buggy,,,
4342 [       .file 1 "foo.s"
4343         .file 1 "bar.s"])
4345  if test $gcc_cv_as_dwarf2_debug_line = yes \
4346  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4347         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4348   [Define if your assembler supports dwarf2 .file/.loc directives,
4349    and preserves file table indices exactly as given.])
4350  fi
4352  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4353   gcc_cv_as_gdwarf2_flag,
4354   [elf,2,11,0], [--gdwarf2], [$insn],,
4355   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4356 [Define if your assembler supports the --gdwarf2 option.])])
4358  gcc_GAS_CHECK_FEATURE([--gstabs option],
4359   gcc_cv_as_gstabs_flag,
4360   [elf,2,11,0], [--gstabs], [$insn],
4361   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4362    # and warns about it, but still exits successfully.  So check for
4363    # this.
4364    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4365    then :
4366    else gcc_cv_as_gstabs_flag=yes
4367    fi],
4368   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4369 [Define if your assembler supports the --gstabs option.])])
4371  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4372   gcc_cv_as_debug_prefix_map_flag,
4373   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4374   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4375 [Define if your assembler supports the --debug-prefix-map option.])])
4378 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4379  ,,
4380 [.lcomm bar,4,16],,
4381 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4382   [Define if your assembler supports .lcomm with an alignment field.])])
4384 AC_ARG_ENABLE(gnu-unique-object,
4385  [AS_HELP_STRING([--enable-gnu-unique-object],
4386    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4387  [case $enable_gnu_unique_object in
4388     yes | no) ;;
4389     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4390 Valid choices are 'yes' and 'no'.]) ;;
4391   esac],
4392  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4393    [elf,2,19,52],,
4394    [.type foo, '$target_type_format_char'gnu_unique_object],,
4395 # We need to unquote above to to use the definition from config.gcc.
4396 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4397    [[if test x$host = x$build -a x$host = x$target &&
4398        ldd --version 2>/dev/null &&
4399        glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
4400       glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
4401       glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
4402       glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
4403       if test "$glibcnum" -ge 2011 ; then
4404         enable_gnu_unique_object=yes
4405       fi
4406     fi]])])
4407 if test x$enable_gnu_unique_object = xyes; then
4408   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4409    [Define if your assembler supports @gnu_unique_object.])
4412 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4413  [gcc_cv_as_line_zero],
4414  [gcc_cv_as_line_zero=no
4415   if test $in_tree_gas = yes; then
4416     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4417   elif test "x$gcc_cv_as" != x; then
4418     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4419     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4420        test "x`cat conftest.out`" = x
4421     then
4422       gcc_cv_as_line_zero=yes
4423     else
4424       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4425       cat conftest.s >&AS_MESSAGE_LOG_FD
4426       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4427       cat conftest.out >&AS_MESSAGE_LOG_FD
4428     fi
4429     rm -f conftest.o conftest.s conftest.out
4430   fi])
4431 if test "x$gcc_cv_as_line_zero" = xyes; then
4432   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4433 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4436 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4437 gcc_cv_ld_eh_frame_hdr=no
4438 if test $in_tree_ld = yes ; then
4439   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 \
4440      && test $in_tree_ld_is_elf = yes; then
4441     gcc_cv_ld_eh_frame_hdr=yes
4442   fi
4443 elif test x$gcc_cv_ld != x; then
4444   if echo "$ld_ver" | grep GNU > /dev/null; then
4445     # Check if linker supports --eh-frame-hdr option
4446     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4447       gcc_cv_ld_eh_frame_hdr=yes
4448     fi
4449   else
4450     case "$target" in
4451       *-*-solaris2*)
4452         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4453         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4454           gcc_cv_ld_eh_frame_hdr=yes
4455         fi
4456         ;;
4457     esac
4458   fi
4460 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4461 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4462         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4463 [Define if your linker supports .eh_frame_hdr.])
4465 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4467 AC_MSG_CHECKING(linker position independent executable support)
4468 gcc_cv_ld_pie=no
4469 if test $in_tree_ld = yes ; then
4470   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 \
4471      && test $in_tree_ld_is_elf = yes; then
4472     gcc_cv_ld_pie=yes
4473   fi
4474 elif test x$gcc_cv_ld != x; then
4475         # Check if linker supports -pie option
4476         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4477                 gcc_cv_ld_pie=yes
4478         fi
4480 if test x"$gcc_cv_ld_pie" = xyes; then
4481         AC_DEFINE(HAVE_LD_PIE, 1,
4482 [Define if your linker supports -pie option.])
4484 AC_MSG_RESULT($gcc_cv_ld_pie)
4486 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4487 gcc_cv_ld_eh_gc_sections=no
4488 if test $in_tree_ld = yes ; then
4489   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 \
4490      && test $in_tree_ld_is_elf = yes; then
4491     gcc_cv_ld_eh_gc_sections=yes
4492   fi
4493 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4494   cat > conftest.s <<EOF
4495         .section        .text
4496 .globl _start
4497         .type _start, @function
4498 _start:
4499         .long foo
4500         .size _start, .-_start
4501         .section        .text.foo,"ax",@progbits
4502         .type foo, @function
4503 foo:
4504         .long 0
4505         .size foo, .-foo
4506         .section        .gcc_except_table.foo,"a",@progbits
4507 .L0:
4508         .long 0
4509         .section        .eh_frame,"a",@progbits
4510         .long .L0
4512   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4513     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4514          | grep "gc-sections option ignored" > /dev/null; then
4515       gcc_cv_ld_eh_gc_sections=no
4516     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4517          | grep gcc_except_table > /dev/null; then
4518       gcc_cv_ld_eh_gc_sections=yes
4519       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4520       if test x$gcc_cv_as_comdat_group != xyes; then
4521         gcc_cv_ld_eh_gc_sections=no
4522         cat > conftest.s <<EOF
4523         .section        .text
4524 .globl _start
4525         .type _start, @function
4526 _start:
4527         .long foo
4528         .size _start, .-_start
4529         .section        .gnu.linkonce.t.foo,"ax",@progbits
4530         .type foo, @function
4531 foo:
4532         .long 0
4533         .size foo, .-foo
4534         .section        .gcc_except_table.foo,"a",@progbits
4535 .L0:
4536         .long 0
4537         .section        .eh_frame,"a",@progbits
4538         .long .L0
4540         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4541           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4542                | grep "gc-sections option ignored" > /dev/null; then
4543             gcc_cv_ld_eh_gc_sections=no
4544           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4545                | grep gcc_except_table > /dev/null; then
4546             gcc_cv_ld_eh_gc_sections=yes
4547           fi
4548         fi
4549       fi
4550     fi
4551   fi
4552   rm -f conftest.s conftest.o conftest
4554 case "$target" in
4555   hppa*-*-linux*)
4556     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4557     gcc_cv_ld_eh_gc_sections=no
4558     ;;
4559 esac
4560 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4561         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4562   [Define if your linker supports garbage collection of
4563    sections in presence of EH frames.])
4565 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4567 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4568 gcc_cv_ld_eh_gc_sections_bug=no
4569 if test $in_tree_ld = yes ; then
4570   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 \
4571      && test $in_tree_ld_is_elf = yes; then
4572     gcc_cv_ld_eh_gc_sections_bug=yes
4573   fi
4574 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
4575   gcc_cv_ld_eh_gc_sections_bug=yes
4576   cat > conftest.s <<EOF
4577         .section        .text
4578 .globl _start
4579         .type _start, @function
4580 _start:
4581         .long foo
4582         .size _start, .-_start
4583         .section        .text.startup.foo,"ax",@progbits
4584         .type foo, @function
4585 foo:
4586         .long 0
4587         .size foo, .-foo
4588         .section        .gcc_except_table.foo,"a",@progbits
4589 .L0:
4590         .long 0
4591         .section        .eh_frame,"a",@progbits
4592         .long .L0
4594   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4595     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4596          | grep "gc-sections option ignored" > /dev/null; then
4597       :
4598     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4599          | grep gcc_except_table > /dev/null; then
4600       gcc_cv_ld_eh_gc_sections_bug=no
4601     fi
4602   fi
4603   rm -f conftest.s conftest.o conftest
4605 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4606         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4607   [Define if your linker has buggy garbage collection of
4608    sections support when .text.startup.foo like sections are used.])
4610 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4612 # --------
4613 # UNSORTED
4614 # --------
4616 AC_CACHE_CHECK(linker --as-needed support,
4617 gcc_cv_ld_as_needed,
4618 [gcc_cv_ld_as_needed=no
4619 if test $in_tree_ld = yes ; then
4620   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 \
4621      && test $in_tree_ld_is_elf = yes; then
4622     gcc_cv_ld_as_needed=yes
4623   fi
4624 elif test x$gcc_cv_ld != x; then
4625         # Check if linker supports --as-needed and --no-as-needed options
4626         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4627                 gcc_cv_ld_as_needed=yes
4628         fi
4631 if test x"$gcc_cv_ld_as_needed" = xyes; then
4632         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4633 [Define if your linker supports --as-needed and --no-as-needed options.])
4636 case "$target:$tm_file" in
4637   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4638   case "$target" in
4639      *-*-linux*)
4640      emul_name="-melf64ppc"
4641       ;;
4642      *-*-freebsd*)
4643      emul_name="-melf64ppc_fbsd"
4644       ;;
4645   esac
4646     AC_CACHE_CHECK(linker support for omitting dot symbols,
4647     gcc_cv_ld_no_dot_syms,
4648     [gcc_cv_ld_no_dot_syms=no
4649     if test x"$ld_is_gold" = xyes; then
4650       gcc_cv_ld_no_dot_syms=yes
4651     elif test $in_tree_ld = yes ; then
4652       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
4653         gcc_cv_ld_no_dot_syms=yes
4654       fi
4655     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4656       cat > conftest1.s <<EOF
4657         .text
4658         bl .foo
4660       cat > conftest2.s <<EOF
4661         .section ".opd","aw"
4662         .align 3
4663         .globl foo
4664         .type foo,@function
4665 foo:
4666         .quad .LEfoo,.TOC.@tocbase,0
4667         .text
4668 .LEfoo:
4669         blr
4670         .size foo,.-.LEfoo
4672       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4673          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4674          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4675         gcc_cv_ld_no_dot_syms=yes
4676       fi
4677       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4678     fi
4679     ])
4680     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4681       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4682     [Define if your PowerPC64 linker only needs function descriptor syms.])
4683     fi
4685     AC_CACHE_CHECK(linker large toc support,
4686     gcc_cv_ld_large_toc,
4687     [gcc_cv_ld_large_toc=no
4688     if test x"$ld_is_gold" = xyes; then
4689       gcc_cv_ld_large_toc=yes
4690     elif test $in_tree_ld = yes ; then
4691       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
4692         gcc_cv_ld_large_toc=yes
4693       fi
4694     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4695       cat > conftest.s <<EOF
4696         .section ".tbss","awT",@nobits
4697         .align 3
4698 ie0:    .space 8
4699         .global _start
4700         .text
4701 _start:
4702         addis 9,13,ie0@got@tprel@ha
4703         ld 9,ie0@got@tprel@l(9)
4705       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4706          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4707         gcc_cv_ld_large_toc=yes
4708       fi
4709       rm -f conftest conftest.o conftest.s
4710     fi
4711     ])
4712     if test x"$gcc_cv_ld_large_toc" = xyes; then
4713       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4714     [Define if your PowerPC64 linker supports a large TOC.])
4715     fi
4716     ;;
4717 esac
4719 case "$target" in
4720   *-*-aix*)
4721     AC_CACHE_CHECK(linker large toc support,
4722     gcc_cv_ld_large_toc,
4723     [gcc_cv_ld_large_toc=no
4724     if test x$gcc_cv_as != x ; then
4725       cat > conftest.s <<EOF
4726         .toc
4727 LC..1:
4728         .tc a[[TC]],a[[RW]]
4729         .extern a[[RW]]
4730         .csect .text[[PR]]
4731 .largetoctest:
4732         addis 9,LC..1@u(2)
4733         ld 3,LC..1@l(9)
4735       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
4736         gcc_cv_ld_large_toc=yes
4737       fi
4738       rm -f conftest conftest.o conftest.s
4739     fi
4740     ])
4741     if test x"$gcc_cv_ld_large_toc" = xyes; then
4742       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4743     [Define if your AIX linker supports a large TOC.])
4744     fi
4745     ;;
4746 esac
4748 AC_CACHE_CHECK(linker --build-id support,
4749   gcc_cv_ld_buildid,
4750   [gcc_cv_ld_buildid=no
4751   if test $in_tree_ld = yes ; then
4752     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4753        "$gcc_cv_gld_minor_version" -ge 18 -o \
4754        "$gcc_cv_gld_major_version" -gt 2 \
4755        && test $in_tree_ld_is_elf = yes; then
4756       gcc_cv_ld_buildid=yes
4757     fi
4758   elif test x$gcc_cv_ld != x; then
4759     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4760       gcc_cv_ld_buildid=yes
4761     fi
4762   fi])
4763 if test x"$gcc_cv_ld_buildid" = xyes; then
4764   AC_DEFINE(HAVE_LD_BUILDID, 1,
4765   [Define if your linker supports --build-id.])
4768 AC_ARG_ENABLE(linker-build-id,
4769 [AS_HELP_STRING([--enable-linker-build-id],
4770                 [compiler will always pass --build-id to linker])],
4772 enable_linker_build_id=no)
4774 if test x"$enable_linker_build_id" = xyes; then
4775   if test x"$gcc_cv_ld_buildid" = xyes; then
4776     AC_DEFINE(ENABLE_LD_BUILDID, 1,
4777     [Define if gcc should always pass --build-id to linker.])
4778   else
4779     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4780   fi
4783 # In binutils 2.21, GNU ld gained support for new emulations fully
4784 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
4785 AC_CACHE_CHECK(linker *_sol2 emulation support,
4786   gcc_cv_ld_sol2_emulation,
4787   [gcc_cv_ld_sol2_emulation=no
4788   if test $in_tree_ld = yes ; then
4789     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4790        "$gcc_cv_gld_minor_version" -ge 21 -o \
4791        "$gcc_cv_gld_major_version" -gt 2 \
4792        && test $in_tree_ld_is_elf = yes; then
4793       gcc_cv_ld_sol2_emulation=yes
4794     fi
4795   elif test x$gcc_cv_ld != x; then
4796     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4797        grep _sol2 > /dev/null; then
4798       gcc_cv_ld_sol2_emulation=yes
4799     fi
4800   fi])
4801 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4802   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4803   [Define if your linker supports the *_sol2 emulations.])
4806 AC_CACHE_CHECK(linker --sysroot support,
4807   gcc_cv_ld_sysroot,
4808   [gcc_cv_ld_sysroot=no
4809   if test $in_tree_ld = yes ; then
4810       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
4811         gcc_cv_ld_sysroot=yes
4812       fi
4813   elif test x$gcc_cv_ld != x; then 
4814     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4815       gcc_cv_ld_sysroot=yes
4816     fi
4817   fi])
4818 if test x"$gcc_cv_ld_sysroot" = xyes; then
4819   AC_DEFINE(HAVE_LD_SYSROOT, 1,
4820   [Define if your linker supports --sysroot.])
4821 fi        
4823 if test x$with_sysroot = x && test x$host = x$target \
4824    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4825    && test "$prefix" != "NONE"; then
4826   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4827 [Define to PREFIX/include if cpp should also search that directory.])
4830 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4831   if test "x$with_headers" != x; then
4832     target_header_dir=$with_headers
4833   elif test "x$with_sysroot" = x; then
4834     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
4835   elif test "x$with_build_sysroot" != "x"; then
4836     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4837   elif test "x$with_sysroot" = xyes; then
4838     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4839   else
4840     target_header_dir="${with_sysroot}${native_system_header_dir}"
4841   fi
4842 else
4843   target_header_dir=${native_system_header_dir}
4846 # Test for stack protector support in target C library.
4847 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4848       gcc_cv_libc_provides_ssp,
4849       [gcc_cv_libc_provides_ssp=no
4850     case "$target" in
4851        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4852       [# glibc 2.4 and later provides __stack_chk_fail and
4853       # either __stack_chk_guard, or TLS access to stack guard canary.
4854       if test -f $target_header_dir/features.h \
4855          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
4856             $target_header_dir/features.h > /dev/null; then
4857         if $EGREP '^[   ]*#[    ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
4858            $target_header_dir/features.h > /dev/null; then
4859           gcc_cv_libc_provides_ssp=yes
4860         elif $EGREP '^[         ]*#[    ]*define[       ]+__GLIBC__[    ]+2' \
4861              $target_header_dir/features.h > /dev/null \
4862              && $EGREP '^[      ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
4863              $target_header_dir/features.h > /dev/null; then
4864           gcc_cv_libc_provides_ssp=yes
4865         elif $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
4866              $target_header_dir/features.h > /dev/null && \
4867              test -f $target_header_dir/bits/uClibc_config.h && \
4868              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
4869              $target_header_dir/bits/uClibc_config.h > /dev/null; then
4870           gcc_cv_libc_provides_ssp=yes
4871         fi
4872       # all versions of Bionic support stack protector
4873       elif test -f $target_header_dir/sys/cdefs.h \
4874         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
4875            $target_header_dir/sys/cdefs.h > /dev/null; then
4876          gcc_cv_libc_provides_ssp=yes
4877       fi]
4878         ;;
4879        *-*-gnu*)
4880          # Avoid complicated tests (see
4881          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4882          # simply assert that glibc does provide this, which is true for all
4883          # realistically usable GNU/Hurd configurations.
4884          gcc_cv_libc_provides_ssp=yes;;
4885        *-*-darwin* | *-*-freebsd*)
4886          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4887            [echo "no __stack_chk_fail on this target"])
4888         ;;
4889   *) gcc_cv_libc_provides_ssp=no ;;
4890     esac])
4892 if test x$gcc_cv_libc_provides_ssp = xyes; then
4893   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4894             [Define if your target C library provides stack protector support])
4897 # Test for <sys/sdt.h> on the target.
4898 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4899 AC_MSG_CHECKING(sys/sdt.h in the target C library)
4900 have_sys_sdt_h=no
4901 if test -f $target_header_dir/sys/sdt.h; then
4902   have_sys_sdt_h=yes
4903   AC_DEFINE(HAVE_SYS_SDT_H, 1,
4904             [Define if your target C library provides sys/sdt.h])
4906 AC_MSG_RESULT($have_sys_sdt_h)
4908 # Check if TFmode long double should be used by default or not.
4909 # Some glibc targets used DFmode long double, but with glibc 2.4
4910 # and later they can use TFmode.
4911 case "$target" in
4912   powerpc*-*-linux* | \
4913   sparc*-*-linux* | \
4914   s390*-*-linux* | \
4915   alpha*-*-linux*)
4916     AC_ARG_WITH(long-double-128,
4917       [AS_HELP_STRING([--with-long-double-128],
4918                       [use 128-bit long double by default])],
4919       gcc_cv_target_ldbl128="$with_long_double_128",
4920       [[gcc_cv_target_ldbl128=no
4921       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4922         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4923       && gcc_cv_target_ldbl128=yes
4924       ]])
4925     ;;
4926 esac
4927 if test x$gcc_cv_target_ldbl128 = xyes; then
4928   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4929             [Define if TFmode long double should be the default])
4932 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4933 gcc_cv_target_dl_iterate_phdr=unknown
4934 case "$target" in
4935   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
4936   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
4937   # libdl there, both complicating its use and breaking compatibility
4938   # between Solaris 10 updates.
4939   *-*-solaris2.1[[1-9]]*)
4940     # <link.h> needs both a dl_iterate_phdr declaration and support for
4941     # compilation with largefile support.
4942     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4943       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4944       gcc_cv_target_dl_iterate_phdr=yes
4945     else
4946       gcc_cv_target_dl_iterate_phdr=no
4947     fi
4948     ;;
4949 esac
4950 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4951 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4952    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4953 [Define if your target C library provides the `dl_iterate_phdr' function.])
4955 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
4957 # Find out what GC implementation we want, or may, use.
4958 AC_ARG_WITH(gc,
4959 [AS_HELP_STRING([--with-gc={page,zone}],
4960                 [choose the garbage collection mechanism to use
4961                  with the compiler])],
4962 [case "$withval" in
4963   page)
4964     GGC=ggc-$withval
4965     ;;
4966   zone)
4967     GGC=ggc-$withval
4968     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4969     ;;
4970   *)
4971     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4972     ;;
4973 esac],
4974 [GGC=ggc-page])
4975 AC_SUBST(GGC)
4976 echo "Using $GGC for garbage collection."
4978 # Libraries to use on the host.  This will normally be set by the top
4979 # level Makefile.  Here we simply capture the value for our Makefile.
4980 if test -z "${HOST_LIBS+set}"; then
4981   HOST_LIBS=
4983 AC_SUBST(HOST_LIBS)
4985 # Use the system's zlib library.
4986 zlibdir=-L../zlib
4987 zlibinc="-I\$(srcdir)/../zlib"
4988 AC_ARG_WITH(system-zlib,
4989 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
4990 zlibdir=
4991 zlibinc=
4993 AC_SUBST(zlibdir)
4994 AC_SUBST(zlibinc)
4996 dnl Very limited version of automake's enable-maintainer-mode
4998 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4999   dnl maintainer-mode is disabled by default
5000   AC_ARG_ENABLE(maintainer-mode,
5001 [AS_HELP_STRING([--enable-maintainer-mode],
5002                 [enable make rules and dependencies not useful
5003                  (and sometimes confusing) to the casual installer])],
5004       maintainer_mode=$enableval,
5005       maintainer_mode=no)
5007 AC_MSG_RESULT($maintainer_mode)
5009 if test "$maintainer_mode" = "yes"; then
5010   MAINT=''
5011 else
5012   MAINT='#'
5014 AC_SUBST(MAINT)dnl
5016 # --------------
5017 # Language hooks
5018 # --------------
5020 # Make empty files to contain the specs and options for each language.
5021 # Then add #include lines to for a compiler that has specs and/or options.
5023 subdirs=
5024 lang_opt_files=
5025 lang_specs_files=
5026 lang_tree_files=
5027 # These (without "all_") are set in each config-lang.in.
5028 # `language' must be a single word so is spelled singularly.
5029 all_languages=
5030 all_compilers=
5031 all_outputs='Makefile'
5032 # List of language makefile fragments.
5033 all_lang_makefrags=
5034 # Additional files for gengtype
5035 all_gtfiles="$target_gtfiles"
5037 # These are the languages that are set in --enable-languages,
5038 # and are available in the GCC tree.
5039 all_selected_languages=
5041 # Add the language fragments.
5042 # Languages are added via two mechanisms.  Some information must be
5043 # recorded in makefile variables, these are defined in config-lang.in.
5044 # We accumulate them and plug them into the main Makefile.
5045 # The other mechanism is a set of hooks for each of the main targets
5046 # like `clean', `install', etc.
5048 language_hooks="Make-hooks"
5050 for lang in ${srcdir}/*/config-lang.in
5052 changequote(,)dnl
5053         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5055         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5056         if test "x$lang_alias" = x
5057         then
5058               echo "$lang doesn't set \$language." 1>&2
5059               exit 1
5060         fi
5061         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5062         subdirs="$subdirs $subdir"
5064         # $gcc_subdir is where the gcc integration files are to be found
5065         # for a language, both for internal compiler purposes (compiler
5066         # sources implementing front-end to GCC tree converters), and for
5067         # build infrastructure purposes (Make-lang.in, etc.)
5068         #
5069         # This will be <subdir> (relative to $srcdir) if a line like 
5070         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5071         # is found in <langdir>/config-lang.in, and will remain <langdir>
5072         # otherwise.
5073         #
5074         # Except for the language alias (fetched above), the regular
5075         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5076         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5077         # only this and the language alias.
5079         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5080         if [ "$gcc_subdir" = "" ]; then
5081            gcc_subdir="$subdir"
5082         fi
5084         case ",$enable_languages," in
5085         *,$lang_alias,*)
5086             all_selected_languages="$all_selected_languages $lang_alias"
5087             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5088                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5089             fi
5090             ;;
5091         esac
5092 changequote([,])dnl
5094         language=
5095         boot_language=
5096         compilers=
5097         outputs=
5098         gtfiles=
5099         subdir_requires=
5100         . ${srcdir}/$gcc_subdir/config-lang.in
5101         if test "x$language" = x
5102         then
5103                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5104                 exit 1
5105         fi
5107         ok=:
5108         case ",$enable_languages," in
5109                 *,$lang_alias,*) ;;
5110                 *)
5111                         for i in $subdir_requires; do
5112                                 test -f "${srcdir}/$i/config-lang.in" && continue
5113                                 ok=false
5114                                 break
5115                         done
5116                 ;;
5117         esac
5118         $ok || continue
5120         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5121         if test -f $srcdir/$gcc_subdir/lang.opt; then
5122             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5123             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5124         fi
5125         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5126             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5127         fi
5128         all_languages="$all_languages $language"
5129         all_compilers="$all_compilers $compilers"
5130         all_outputs="$all_outputs $outputs"
5131         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5132         case ",$enable_languages," in
5133                 *,lto,*)
5134                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5135                     enable_lto=yes
5136                     AC_SUBST(enable_lto)
5137                     ;;
5138                 *) ;;
5139         esac
5140 done
5142 check_languages=
5143 for language in $all_selected_languages
5145         check_languages="$check_languages check-$language"
5146 done
5148 # We link each language in with a set of hooks, reached indirectly via
5149 # lang.${target}.  Only do so for selected languages.
5151 rm -f Make-hooks
5152 touch Make-hooks
5153 target_list="all.cross start.encap rest.encap tags \
5154         install-common install-man install-info install-pdf install-html dvi \
5155         pdf html uninstall info man srcextra srcman srcinfo \
5156         mostlyclean clean distclean maintainer-clean install-plugin"
5158 for t in $target_list
5160         x=
5161         for lang in $all_selected_languages
5162         do
5163                 x="$x $lang.$t"
5164         done
5165         echo "lang.$t: $x" >> Make-hooks
5166 done
5168 # --------
5169 # Option include files
5170 # --------
5172 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5173 option_includes="option-includes.mk"
5174 AC_SUBST_FILE(option_includes)
5176 # --------
5177 # UNSORTED
5178 # --------
5180 # Create .gdbinit.
5182 echo "dir ." > .gdbinit
5183 echo "dir ${srcdir}" >> .gdbinit
5184 if test x$gdb_needs_out_file_path = xyes
5185 then
5186         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5188 if test "x$subdirs" != x; then
5189         for s in $subdirs
5190         do
5191                 echo "dir ${srcdir}/$s" >> .gdbinit
5192         done
5194 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5196 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5197 AC_SUBST(gcc_tooldir)
5198 AC_SUBST(dollar)
5200 # Find a directory in which to install a shared libgcc.
5202 AC_ARG_ENABLE(version-specific-runtime-libs,
5203 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5204                 [specify that runtime libraries should be
5205                  installed in a compiler-specific directory])])
5207 # Substitute configuration variables
5208 AC_SUBST(subdirs)
5209 AC_SUBST(srcdir)
5210 AC_SUBST(all_compilers)
5211 AC_SUBST(all_gtfiles)
5212 AC_SUBST(all_lang_makefrags)
5213 AC_SUBST(all_languages)
5214 AC_SUBST(all_selected_languages)
5215 AC_SUBST(build_exeext)
5216 AC_SUBST(build_install_headers_dir)
5217 AC_SUBST(build_xm_file_list)
5218 AC_SUBST(build_xm_include_list)
5219 AC_SUBST(build_xm_defines)
5220 AC_SUBST(build_file_translate)
5221 AC_SUBST(check_languages)
5222 AC_SUBST(cpp_install_dir)
5223 AC_SUBST(xmake_file)
5224 AC_SUBST(tmake_file)
5225 AC_SUBST(TM_ENDIAN_CONFIG)
5226 AC_SUBST(TM_MULTILIB_CONFIG)
5227 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5228 AC_SUBST(extra_gcc_objs)
5229 AC_SUBST(user_headers_inc_next_pre)
5230 AC_SUBST(user_headers_inc_next_post)
5231 AC_SUBST(extra_headers_list)
5232 AC_SUBST(extra_objs)
5233 AC_SUBST(extra_programs)
5234 AC_SUBST(float_h_file)
5235 AC_SUBST(gcc_config_arguments)
5236 AC_SUBST(gcc_gxx_include_dir)
5237 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5238 AC_SUBST(host_exeext)
5239 AC_SUBST(host_xm_file_list)
5240 AC_SUBST(host_xm_include_list)
5241 AC_SUBST(host_xm_defines)
5242 AC_SUBST(out_host_hook_obj)
5243 AC_SUBST(install)
5244 AC_SUBST(lang_opt_files)
5245 AC_SUBST(lang_specs_files)
5246 AC_SUBST(lang_tree_files)
5247 AC_SUBST(local_prefix)
5248 AC_SUBST(md_file)
5249 AC_SUBST(objc_boehm_gc)
5250 AC_SUBST(out_file)
5251 AC_SUBST(out_object_file)
5252 AC_SUBST(common_out_file)
5253 AC_SUBST(common_out_object_file)
5254 AC_SUBST(tm_file_list)
5255 AC_SUBST(tm_include_list)
5256 AC_SUBST(tm_defines)
5257 AC_SUBST(tm_p_file_list)
5258 AC_SUBST(tm_p_include_list)
5259 AC_SUBST(xm_file_list)
5260 AC_SUBST(xm_include_list)
5261 AC_SUBST(xm_defines)
5262 AC_SUBST(use_gcc_stdint)
5263 AC_SUBST(c_target_objs)
5264 AC_SUBST(cxx_target_objs)
5265 AC_SUBST(fortran_target_objs)
5266 AC_SUBST(target_cpu_default)
5268 AC_SUBST_FILE(language_hooks)
5270 # Echo link setup.
5271 if test x${build} = x${host} ; then
5272   if test x${host} = x${target} ; then
5273     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5274   else
5275     echo "Links are now set up to build a cross-compiler" 1>&2
5276     echo " from ${host} to ${target}." 1>&2
5277   fi
5278 else
5279   if test x${host} = x${target} ; then
5280     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5281     echo " for ${target}." 1>&2
5282   else
5283     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5284     echo " from ${host} to ${target}." 1>&2
5285   fi
5288 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5289 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5291 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5292 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5294 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5295 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5296 if test "x${CLOOGLIBS}" != "x" ; then 
5297    AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5300 # Check for plugin support
5301 AC_ARG_ENABLE(plugin,
5302 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5303 enable_plugin=$enableval,
5304 enable_plugin=yes; default_plugin=yes)
5306 pluginlibs=
5308 case "${host}" in
5309   *-*-darwin*)
5310     if test x$build = x$host; then
5311       export_sym_check="nm${exeext} -g"
5312     elif test x$host = x$target; then
5313       export_sym_check="$gcc_cv_nm -g"
5314     else
5315       export_sym_check=
5316     fi
5317   ;;
5318   *)
5319     if test x$build = x$host; then
5320       export_sym_check="objdump${exeext} -T"
5321     elif test x$host = x$target; then
5322       export_sym_check="$gcc_cv_objdump -T"
5323     else
5324       export_sym_check=
5325     fi
5326   ;;
5327 esac
5329 if test x"$enable_plugin" = x"yes"; then
5331   AC_MSG_CHECKING([for exported symbols])
5332   if test "x$export_sym_check" != x; then
5333     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5334     ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
5335     if $export_sym_check conftest | grep foobar > /dev/null; then
5336       : # No need to use a flag
5337       AC_MSG_RESULT([yes])
5338     else
5339       AC_MSG_RESULT([yes])
5340       AC_MSG_CHECKING([for -rdynamic])
5341       ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
5342       if $export_sym_check conftest | grep foobar > /dev/null; then
5343         plugin_rdynamic=yes
5344         pluginlibs="-rdynamic"
5345       else
5346         plugin_rdynamic=no
5347         enable_plugin=no
5348       fi
5349       AC_MSG_RESULT([$plugin_rdynamic])
5350     fi
5351   else
5352     AC_MSG_RESULT([unable to check])
5353   fi
5355   # Check -ldl
5356   saved_LIBS="$LIBS"
5357   AC_SEARCH_LIBS([dlopen], [dl])
5358   if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5359     pluginlibs="$pluginlibs -ldl"
5360   fi
5361   LIBS="$saved_LIBS"
5363   # Check that we can build shared objects with -fPIC -shared
5364   saved_LDFLAGS="$LDFLAGS"
5365   saved_CFLAGS="$CFLAGS"
5366   case "${host}" in
5367     *-*-darwin*)
5368       CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5369       CFLAGS="$CFLAGS -fPIC"
5370       LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5371     ;;
5372     *)
5373       CFLAGS="$CFLAGS -fPIC"
5374       LDFLAGS="$LDFLAGS -fPIC -shared"
5375     ;;
5376   esac
5377   AC_MSG_CHECKING([for -fPIC -shared])
5378   AC_TRY_LINK(
5379     [extern int X;],[return X == 0;],
5380     [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5381     [AC_MSG_RESULT([no]); have_pic_shared=no])
5382   if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5383     pluginlibs=
5384     enable_plugin=no
5385   fi
5386   LDFLAGS="$saved_LDFLAGS"
5387   CFLAGS="$saved_CFLAGS"
5389   # If plugin support had been requested but not available, fail.
5390   if test x"$enable_plugin" = x"no" ; then
5391     if test x"$default_plugin" != x"yes"; then
5392       AC_MSG_ERROR([
5393 Building GCC with plugin support requires a host that supports
5394 -fPIC, -shared, -ldl and -rdynamic.])
5395     fi
5396   fi
5399 AC_SUBST(pluginlibs)
5400 AC_SUBST(enable_plugin)
5401 if test x"$enable_plugin" = x"yes"; then
5402   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5406 AC_ARG_ENABLE(libquadmath-support,
5407 [AS_HELP_STRING([--disable-libquadmath-support],
5408   [disable libquadmath support for Fortran])],
5409 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5410 ENABLE_LIBQUADMATH_SUPPORT=yes)
5411 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5412   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5413             [Define to 1 to enable libquadmath support])
5417 # Specify what hash style to use by default.
5418 AC_ARG_WITH([linker-hash-style],
5419 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5420                 [specify the linker hash style])],
5421 [case x"$withval" in
5422    xsysv)
5423      LINKER_HASH_STYLE=sysv
5424      ;;
5425    xgnu)
5426      LINKER_HASH_STYLE=gnu
5427      ;;
5428    xboth)
5429      LINKER_HASH_STYLE=both
5430      ;;
5431    *)
5432      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5433      ;;
5434  esac],
5435 [LINKER_HASH_STYLE=''])
5436 if test x"${LINKER_HASH_STYLE}" != x; then
5437   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5438                                          [The linker hash style])
5441 # Configure the subdirectories
5442 # AC_CONFIG_SUBDIRS($subdirs)
5444 # Create the Makefile
5445 # and configure language subdirectories
5446 AC_CONFIG_FILES($all_outputs)
5448 AC_CONFIG_COMMANDS([default],
5450 case ${CONFIG_HEADERS} in
5451   *auto-host.h:config.in*)
5452   echo > cstamp-h ;;
5453 esac
5454 # Make sure all the subdirs exist.
5455 for d in $subdirs doc build common c-family
5457     test -d $d || mkdir $d
5458 done
5459 ], 
5460 [subdirs='$subdirs'])
5461 AC_OUTPUT