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