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