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