PR tree-optimization/78496
[official-gcc.git] / gcc / configure.ac
blob8b6a2ed3e2028b5eee4f968604d5a690dc899d00
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2017 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 host name, for Ada.
39 ACX_NONCANONICAL_HOST
41 # Determine the noncanonical target name, for directory use.
42 ACX_NONCANONICAL_TARGET
44 # Used for constructing correct paths for offload compilers.
45 real_target_noncanonical=${target_noncanonical}
46 accel_dir_suffix=
48 # Determine the target- and build-specific subdirectories
49 GCC_TOPLEV_SUBDIRS
51 # Set program_transform_name
52 AC_ARG_PROGRAM
54 # Check for bogus environment variables.
55 # Test if LIBRARY_PATH contains the notation for the current directory
56 # since this would lead to problems installing/building glibc.
57 # LIBRARY_PATH contains the current directory if one of the following
58 # is true:
59 # - one of the terminals (":" and ";") is the first or last sign
60 # - two terminals occur directly after each other
61 # - the path contains an element with a dot in it
62 AC_MSG_CHECKING(LIBRARY_PATH variable)
63 changequote(,)dnl
64 case ${LIBRARY_PATH} in
65   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
66     library_path_setting="contains current directory"
67     ;;
68   *)
69     library_path_setting="ok"
70     ;;
71 esac
72 changequote([,])dnl
73 AC_MSG_RESULT($library_path_setting)
74 if test "$library_path_setting" != "ok"; then
75 AC_MSG_ERROR([
76 *** LIBRARY_PATH shouldn't contain the current directory when
77 *** building gcc. Please change the environment variable
78 *** and run configure again.])
81 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
82 # since this would lead to problems installing/building glibc.
83 # GCC_EXEC_PREFIX contains the current directory if one of the following
84 # is true:
85 # - one of the terminals (":" and ";") is the first or last sign
86 # - two terminals occur directly after each other
87 # - the path contains an element with a dot in it
88 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
89 changequote(,)dnl
90 case ${GCC_EXEC_PREFIX} in
91   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
92     gcc_exec_prefix_setting="contains current directory"
93     ;;
94   *)
95     gcc_exec_prefix_setting="ok"
96     ;;
97 esac
98 changequote([,])dnl
99 AC_MSG_RESULT($gcc_exec_prefix_setting)
100 if test "$gcc_exec_prefix_setting" != "ok"; then
101 AC_MSG_ERROR([
102 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
103 *** building gcc. Please change the environment variable
104 *** and run configure again.])
107 # -----------
108 # Directories
109 # -----------
111 # Specify the local prefix
112 local_prefix=
113 AC_ARG_WITH(local-prefix,
114 [AS_HELP_STRING([--with-local-prefix=DIR],
115                 [specifies directory to put local include])],
116 [case "${withval}" in
117 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
118 no)     ;;
119 *)      local_prefix=$with_local_prefix ;;
120 esac])
122 # Default local prefix if it is empty
123 if test x$local_prefix = x; then
124         local_prefix=/usr/local
127 AC_ARG_WITH([native-system-header-dir],
128   [  --with-native-system-header-dir=dir
129                           use dir as the directory to look for standard
130                           system header files in.  Defaults to /usr/include.],
132  case ${with_native_system_header_dir} in
133  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
134  /* | [[A-Za-z]]:[[\\/]]*) ;;
135  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
136  esac
137  configured_native_system_header_dir="${withval}"
138 ], [configured_native_system_header_dir=])
140 AC_ARG_WITH(build-sysroot, 
141   [AS_HELP_STRING([--with-build-sysroot=sysroot],
142                   [use sysroot as the system root during the build])],
143   [if test x"$withval" != x ; then
144      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
145    fi],
146   [SYSROOT_CFLAGS_FOR_TARGET=])
147 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
149 if test "x$prefix" = xNONE; then
150  test_prefix=/usr/local
151 else
152  test_prefix=$prefix
154 if test "x$exec_prefix" = xNONE; then
155  test_exec_prefix=$test_prefix
156 else
157  test_exec_prefix=$exec_prefix
160 AC_ARG_WITH(sysroot,
161 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
162                 [search for usr/lib, usr/include, et al, within DIR])],
164  case ${with_sysroot} in
165  /) ;;
166  */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
167  esac
168  case ${with_sysroot} in
169  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
170  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
171  esac
172    
173  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
174  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
175         
176  case ${TARGET_SYSTEM_ROOT} in
177  "${test_prefix}"|"${test_prefix}/"*|\
178  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
179  '${prefix}'|'${prefix}/'*|\
180  '${exec_prefix}'|'${exec_prefix}/'*)
181    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
182    TARGET_SYSTEM_ROOT_DEFINE="$t"
183    ;;
184  esac
185 ], [
186  TARGET_SYSTEM_ROOT=
187  TARGET_SYSTEM_ROOT_DEFINE=
188  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
190 AC_SUBST(TARGET_SYSTEM_ROOT)
191 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
192 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
194 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
195 # passed in by the toplevel make and thus we'd get different behavior
196 # depending on where we built the sources.
197 gcc_gxx_include_dir=
198 # Specify the g++ header file directory
199 AC_ARG_WITH(gxx-include-dir,
200 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
201                 [specifies directory to put g++ header files])],
202 [case "${withval}" in
203 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
204 no)     ;;
205 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
206 esac])
208 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
209 if test x${gcc_gxx_include_dir} = x; then
210   if test x${enable_version_specific_runtime_libs} = xyes; then
211     gcc_gxx_include_dir='${libsubdir}/include/c++'
212   else
213     libstdcxx_incdir='include/c++/$(version)'
214     if test x$host != x$target; then
215        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
216     fi
217     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
218   fi
221 gcc_gxx_include_dir_add_sysroot=0
222 if test "${with_sysroot+set}" = set; then
223   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
224   if test "${gcc_gxx_without_sysroot}"; then
225     if test x${with_sysroot} != x/; then
226       gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
227     fi
228     gcc_gxx_include_dir_add_sysroot=1
229   fi
232 AC_ARG_WITH(cpp_install_dir,
233 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
234                 [install the user visible C preprocessor in DIR
235                  (relative to PREFIX) as well as PREFIX/bin])],
236 [if test x$withval = xyes; then
237   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
238 elif test x$withval != xno; then
239   cpp_install_dir=$withval
240 fi])
242 # We would like to our source tree to be readonly.  However when releases or
243 # pre-releases are generated, the flex/bison generated files as well as the 
244 # various formats of manuals need to be included along with the rest of the
245 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
246 # just that.
248 AC_MSG_CHECKING([whether to place generated files in the source directory])
249   dnl generated-files-in-srcdir is disabled by default
250   AC_ARG_ENABLE(generated-files-in-srcdir, 
251     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
252                     [put copies of generated files in source dir
253                      intended for creating source tarballs for users
254                      without texinfo bison or flex])],
255       generated_files_in_srcdir=$enableval,
256       generated_files_in_srcdir=no)
258 AC_MSG_RESULT($generated_files_in_srcdir)
260 if test "$generated_files_in_srcdir" = "yes"; then
261   GENINSRC=''
262 else
263   GENINSRC='#'
265 AC_SUBST(GENINSRC)
267 # -------------------
268 # Find default linker
269 # -------------------
271 # With GNU ld
272 AC_ARG_WITH(gnu-ld,
273 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
274 gnu_ld_flag="$with_gnu_ld",
275 gnu_ld_flag=no)
277 case $target in
278     *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
279     *) ld64_flag=no;;
280 esac
282 # With pre-defined ld
283 AC_ARG_WITH(ld,
284 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
285 DEFAULT_LINKER="$with_ld")
286 if test x"${DEFAULT_LINKER+set}" = x"set"; then
287   if test ! -x "$DEFAULT_LINKER"; then
288     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
289   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
290     gnu_ld_flag=yes
291   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
292     ld64_flag=yes
293   fi
294   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
295         [Define to enable the use of a default linker.])
298 AC_MSG_CHECKING([whether a default linker was specified])
299 if test x"${DEFAULT_LINKER+set}" = x"set"; then
300   if test x"$gnu_ld_flag" = x"no"; then
301     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
302   else
303     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
304   fi
305 else
306   AC_MSG_RESULT(no)
309 # With demangler in GNU ld
310 AC_ARG_WITH(demangler-in-ld,
311 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
312 demangler_in_ld="$with_demangler_in_ld",
313 demangler_in_ld=yes)
315 # ----------------------
316 # Find default assembler
317 # ----------------------
319 # With GNU as
320 AC_ARG_WITH(gnu-as,
321 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
322 gas_flag="$with_gnu_as",
323 gas_flag=no)
325 AC_ARG_WITH(as,
326 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
327 DEFAULT_ASSEMBLER="$with_as")
328 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
329   if test ! -x "$DEFAULT_ASSEMBLER"; then
330     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
331   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
332     gas_flag=yes
333   fi
334   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
335         [Define to enable the use of a default assembler.])
338 AC_MSG_CHECKING([whether a default assembler was specified])
339 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
340   if test x"$gas_flag" = x"no"; then
341     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
342   else
343     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
344   fi
345 else
346   AC_MSG_RESULT(no)
349 # ---------------
350 # Find C compiler
351 # ---------------
353 # If a non-executable a.out is present (e.g. created by GNU as above even if
354 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
355 # file, even when creating an executable, so an execution test fails.
356 # Remove possible default executable files to avoid this.
358 # FIXME: This really belongs into AC_PROG_CC and can be removed once
359 # Autoconf includes it.
360 rm -f a.out a.exe b.out
362 # Find the native compiler
363 AC_PROG_CC
364 AC_PROG_CXX
365 ACX_PROG_GNAT([-I"$srcdir"/ada])
367 # Do configure tests with the C++ compiler, since that's what we build with.
368 AC_LANG(C++)
370 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
371 # optimizations to be activated explicitly by the toplevel.
372 case "$CC" in
373   */prev-gcc/xgcc*) ;;
374   *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[       ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" `
375      CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[   ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" ` ;;
376 esac
377 AC_SUBST(CFLAGS)
378 AC_SUBST(CXXFLAGS)
380 # Determine PICFLAG for target gnatlib.
381 GCC_PICFLAG_FOR_TARGET
382 AC_SUBST(PICFLAG_FOR_TARGET)
384 # -------------------------
385 # Check C compiler features
386 # -------------------------
388 AC_USE_SYSTEM_EXTENSIONS
389 AC_PROG_CPP
390 AC_C_INLINE
392 AC_SYS_LARGEFILE
394 # sizeof(char) is 1 by definition.
395 AC_CHECK_SIZEOF(void *)
396 AC_CHECK_SIZEOF(short)
397 AC_CHECK_SIZEOF(int)
398 AC_CHECK_SIZEOF(long)
399 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
400 GCC_STDINT_TYPES
401 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
402   AC_MSG_ERROR([uint64_t or int64_t not found])
405 # check what underlying integer type int64_t uses
406 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
407 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
408 #ifdef HAVE_STDINT_H
409 #include <stdint.h>
410 #endif
411 template <typename T> struct X { };
412 template <>
413 struct X<long> { typedef long t; };
414 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
415 if test "$ac_cv_int64_t_type" = "long"; then
416   AC_DEFINE(INT64_T_IS_LONG, 1,
417   [Define if int64_t uses long as underlying type.])
418 else
419 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
420 #ifdef HAVE_STDINT_H
421 #include <stdint.h>
422 #endif
423 template <typename T> struct X { };
424 template <>
425 struct X<long long> { typedef long long t; };
426 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
429 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
430 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
431 #include <utility>
432 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
433 if test $ac_cv_std_swap_in_utility = yes; then
434   AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
435   [Define if <utility> defines std::swap.])
438 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
439 # If the host compiler is affected by the bug, and we build with optimization
440 # enabled (which happens e.g. when cross-compiling), the pool allocator may
441 # get miscompiled.  Use -fno-strict-aliasing to work around this problem.
442 # Since there is no reliable feature check for the presence of this bug,
443 # we simply use a GCC version number check.  (This should never trigger for
444 # stages 2 or 3 of a native bootstrap.)
445 aliasing_flags=
446 if test "$GCC" = yes; then
447   saved_CXXFLAGS="$CXXFLAGS"
449   # The following test compilation will succeed if and only if $CXX accepts
450   # -fno-strict-aliasing *and* is older than GCC 4.3.
451   CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
452   AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
453   AC_COMPILE_IFELSE([
454 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
455 #error compiler not affected by placement new aliasing bug
456 #endif
458     [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
459     [AC_MSG_RESULT([no])])
461   CXXFLAGS="$saved_CXXFLAGS"
463 AC_SUBST(aliasing_flags)
467 # ---------------------
468 # Warnings and checking
469 # ---------------------
471 # Check $CC warning features (if it's GCC).
472 # We want to use -pedantic, but we don't want warnings about
473 # * 'long long'
474 # * variadic macros
475 # * overlong strings
476 # * C++11 narrowing conversions in { }
477 # So, we only use -pedantic if we can disable those warnings.
479 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
480 AC_ARG_ENABLE(build-format-warnings,
481   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
482   [],[enable_build_format_warnings=yes])
483 AS_IF([test $enable_build_format_warnings = no],
484       [wf_opt=-Wno-format],[wf_opt=])
485 ACX_PROG_CXX_WARNING_OPTS(
486         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
487                        [-Wcast-qual $wf_opt])), [loose_warn])
488 ACX_PROG_CC_WARNING_OPTS(
489         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
490         [c_loose_warn])
491 ACX_PROG_CXX_WARNING_OPTS(
492         m4_quote(m4_do([-Wmissing-format-attribute ],
493                        [-Woverloaded-virtual])), [strict_warn])
494 ACX_PROG_CC_WARNING_OPTS(
495         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
496 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
497         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
498                        [-Wno-overlength-strings])), [strict_warn])
499 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
501 # The above macros do nothing if the compiler is not GCC.  However, the
502 # Makefile has more goo to add other flags, so these variables are used
503 # to enable warnings only for GCC.
504 warn_cflags=
505 warn_cxxflags=
506 if test "x$GCC" = "xyes"; then
507   warn_cflags='$(GCC_WARN_CFLAGS)'
508   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
510 AC_SUBST(warn_cflags)
511 AC_SUBST(warn_cxxflags)
513 # Disable exceptions and RTTI if building with g++
514 ACX_PROG_CC_WARNING_OPTS(
515         m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
516                        [noexception_flags])
517         
518 # Enable expensive internal checks
519 is_release=
520 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
521   is_release=yes
524 AC_ARG_ENABLE(checking,
525 [AS_HELP_STRING([[--enable-checking[=LIST]]],
526                 [enable expensive run-time checks.  With LIST,
527                  enable only specific categories of checks.
528                  Categories are: yes,no,all,none,release.
529                  Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
530                  rtlflag,rtl,runtime,tree,valgrind,types])],
531 [ac_checking_flags="${enableval}"],[
532 # Determine the default checks.
533 if test x$is_release = x ; then
534   ac_checking_flags=yes,extra
535 else
536   ac_checking_flags=release
537 fi])
538 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
539 for check in release $ac_checking_flags
541         case $check in
542         # these set all the flags to specific states
543         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
544                         ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
545                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
546                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
547                         ac_tree_checking=1 ; ac_valgrind_checking= ;
548                         ac_types_checking=1 ;;
549         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
550                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
551                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
552                         ac_rtlflag_checking= ; ac_runtime_checking= ;
553                         ac_tree_checking= ; ac_valgrind_checking= ;
554                         ac_types_checking= ;;
555         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
556                         ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
557                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
558                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
559                         ac_tree_checking=1 ; ac_valgrind_checking= ;
560                         ac_types_checking=1 ;;
561         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
562                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
563                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
564                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
565                         ac_tree_checking= ; ac_valgrind_checking= ;
566                         ac_types_checking= ;;
567         # these enable particular checks
568         assert)         ac_assert_checking=1 ;;
569         df)             ac_df_checking=1 ;;
570         extra)          ac_extra_checking=1 ;;
571         fold)           ac_fold_checking=1 ;;
572         gc)             ac_gc_checking=1 ;;
573         gcac)           ac_gc_always_collect=1 ;;
574         gimple)         ac_gimple_checking=1 ;;
575         misc)           ac_checking=1 ;;
576         rtl)            ac_rtl_checking=1 ;;
577         rtlflag)        ac_rtlflag_checking=1 ;;
578         runtime)        ac_runtime_checking=1 ;;
579         tree)           ac_tree_checking=1 ;;
580         types)          ac_types_checking=1 ;;
581         valgrind)       ac_valgrind_checking=1 ;;
582         *)      AC_MSG_ERROR(unknown check category $check) ;;
583         esac
584 done
585 IFS="$ac_save_IFS"
587 nocommon_flag=""
588 if test x$ac_checking != x ; then
589   AC_DEFINE(CHECKING_P, 1,
590 [Define to 0/1 if you want more run-time sanity checks.  This one gets a grab
591 bag of miscellaneous but relatively cheap checks.])
592   nocommon_flag=-fno-common
593 else
594   AC_DEFINE(CHECKING_P, 0)
596 AC_SUBST(nocommon_flag)
597 if test x$ac_extra_checking != x ; then
598   AC_DEFINE(ENABLE_EXTRA_CHECKING, 1,
599 [Define to 0/1 if you want extra run-time checking that might affect code
600 generation.])
601 else
602   AC_DEFINE(ENABLE_EXTRA_CHECKING, 0)
604 if test x$ac_df_checking != x ; then
605   AC_DEFINE(ENABLE_DF_CHECKING, 1,
606 [Define if you want more run-time sanity checks for dataflow.])
608 if test x$ac_assert_checking != x ; then
609   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
610 [Define if you want assertions enabled.  This is a cheap check.])
612 if test x$ac_gimple_checking != x ; then
613   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
614 [Define if you want operations on GIMPLE (the basic data structure of
615 the high-level optimizers) to be checked for dynamic type safety at
616 runtime.  This is moderately expensive.])
618 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
619 if test x$ac_runtime_checking != x ; then
620   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
621 [Define if you want runtime assertions enabled.  This is a cheap check.])
623 if test x$ac_tree_checking != x ; then
624   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
625 [Define if you want all operations on trees (the basic data
626    structure of the front ends) to be checked for dynamic type safety
627    at runtime.  This is moderately expensive.
628    ])
629   TREECHECKING=yes
631 if test x$ac_types_checking != x ; then
632   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
633 [Define if you want all gimple types to be verified after gimplifiation.
634    This is cheap.
635    ])
637 AC_SUBST(TREECHECKING)
638 if test x$ac_rtl_checking != x ; then
639   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
640 [Define if you want all operations on RTL (the basic data structure
641    of the optimizer and back end) to be checked for dynamic type safety
642    at runtime.  This is quite expensive.])
644 if test x$ac_rtlflag_checking != x ; then
645   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
646 [Define if you want RTL flag accesses to be checked against the RTL
647    codes that are supported for each access macro.  This is relatively
648    cheap.])
650 if test x$ac_gc_checking != x ; then
651   AC_DEFINE(ENABLE_GC_CHECKING, 1,
652 [Define if you want the garbage collector to do object poisoning and
653    other memory allocation checks.  This is quite expensive.])
655 if test x$ac_gc_always_collect != x ; then
656   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
657 [Define if you want the garbage collector to operate in maximally
658    paranoid mode, validating the entire heap and collecting garbage at
659    every opportunity.  This is extremely expensive.])
661 if test x$ac_fold_checking != x ; then
662   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
663 [Define if you want fold checked that it never destructs its argument.
664    This is quite expensive.])
666 valgrind_path_defines=
667 valgrind_command=
669 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
670 dnl # an if statement.  This was the source of very frustrating bugs
671 dnl # in converting to autoconf 2.5x!
672 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
674 # It is certainly possible that there's valgrind but no valgrind.h.
675 # GCC relies on making annotations so we must have both.
676 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
677 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
678   [[#include <valgrind/memcheck.h>
679 #ifndef VALGRIND_DISCARD
680 #error VALGRIND_DISCARD not defined
681 #endif]])],
682   [gcc_cv_header_valgrind_memcheck_h=yes],
683   [gcc_cv_header_valgrind_memcheck_h=no])
684 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
685 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
686 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
687   [[#include <memcheck.h>
688 #ifndef VALGRIND_DISCARD
689 #error VALGRIND_DISCARD not defined
690 #endif]])],
691   [gcc_cv_header_memcheck_h=yes],
692   [gcc_cv_header_memcheck_h=no])
693 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
694 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
695   AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
696         [Define if valgrind's valgrind/memcheck.h header is installed.])
698 if test $gcc_cv_header_memcheck_h = yes; then
699   AC_DEFINE(HAVE_MEMCHECK_H, 1,
700         [Define if valgrind's memcheck.h header is installed.])
703 if test x$ac_valgrind_checking != x ; then
704   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
705         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
706   if test "x$valgrind_path" = "x" \
707     || (test $have_valgrind_h = no \
708         && test $gcc_cv_header_memcheck_h = no \
709         && test $gcc_cv_header_valgrind_memcheck_h = no); then
710         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
711   fi
712   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
713   valgrind_command="$valgrind_path -q"
714   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
715 [Define if you want to run subprograms and generated programs
716    through valgrind (a memory checker).  This is extremely expensive.])
718 AC_SUBST(valgrind_path_defines)
719 AC_SUBST(valgrind_command)
721 # Enable code coverage collection
722 AC_ARG_ENABLE(coverage,
723 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
724                 [enable compiler's code coverage collection.
725                  Use to measure compiler performance and locate
726                  unused parts of the compiler. With LEVEL, specify
727                  optimization. Values are opt, noopt,
728                  default is noopt])],
729 [case "${enableval}" in
730   yes|noopt)
731     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
732     ;;
733   opt)
734     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
735     ;;
736   no)
737     # a.k.a. --disable-coverage
738     coverage_flags=""
739     ;;
740   *)
741     AC_MSG_ERROR(unknown coverage setting $enableval)
742     ;;
743 esac],
744 [coverage_flags=""])
745 AC_SUBST(coverage_flags)
747 AC_ARG_ENABLE(gather-detailed-mem-stats, 
748 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
749                 [enable detailed memory allocation stats gathering])], [],
750 [enable_gather_detailed_mem_stats=no])
751 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
752 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
753 [Define to enable detailed memory allocation stats gathering.])
755 AC_ARG_ENABLE(valgrind-annotations,
756 [AS_HELP_STRING([--enable-valgrind-annotations],
757                 [enable valgrind runtime interaction])], [],
758 [enable_valgrind_annotations=no])
759 if test x$enable_valgrind_annotations != xno \
760     || test x$ac_valgrind_checking != x; then
761   if (test $have_valgrind_h = no \
762       && test $gcc_cv_header_memcheck_h = no \
763       && test $gcc_cv_header_valgrind_memcheck_h = no); then
764     AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h])
765   fi
766   AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
767 [Define to get calls to the valgrind runtime enabled.])
770 # -------------------------------
771 # Miscenalleous configure options
772 # -------------------------------
774 # With stabs
775 AC_ARG_WITH(stabs,
776 [AS_HELP_STRING([--with-stabs],
777                 [arrange to use stabs instead of host debug format])],
778 stabs="$with_stabs",
779 stabs=no)
781 # Determine whether or not multilibs are enabled.
782 AC_ARG_ENABLE(multilib,
783 [AS_HELP_STRING([--enable-multilib],
784                 [enable library support for multiple ABIs])],
785 [], [enable_multilib=yes])
786 AC_SUBST(enable_multilib)
788 # Determine whether or not multiarch is enabled.
789 AC_ARG_ENABLE(multiarch,
790 [AS_HELP_STRING([--enable-multiarch],
791                 [enable support for multiarch paths])],
792 [case "${enableval}" in
793 yes|no|auto) enable_multiarch=$enableval;;
794 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
795 esac], [enable_multiarch=auto])
796 if test x${enable_multiarch} = xauto; then
797   if test x${with_native_system_header_dir} != x; then
798     ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
799     enable_multiarch=no
800   fi
801   if test x$host != x$target && test "x$with_sysroot" = x; then
802     ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
803     enable_multiarch=no
804   fi
806 AC_MSG_CHECKING(for multiarch configuration)
807 AC_SUBST(enable_multiarch)
808 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
810 # needed for setting the multiarch name for soft-float/hard-float ABIs
811 AC_SUBST(with_cpu)
812 AC_SUBST(with_float)
814 # Enable __cxa_atexit for C++.
815 AC_ARG_ENABLE(__cxa_atexit,
816 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
817 [], [])
819 # Enable C extension for decimal float if target supports it.
820 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
822 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
823 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
824 [Define to 1 to enable decimal float extension to C.])
826 # Use default_decimal_float for dependency.
827 enable_decimal_float=$default_decimal_float
829 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
830 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
831 [Define to 1 to specify that we are using the BID decimal floating
832 point format instead of DPD])
834 # Enable C extension for fixed-point arithmetic.
835 AC_ARG_ENABLE(fixed-point,
836 [AS_HELP_STRING([--enable-fixed-point],
837                 [enable fixed-point arithmetic extension to C])],
840   case $target in
841     arm*)
842       enable_fixed_point=yes
843       ;;
845     mips*-*-*)
846       enable_fixed_point=yes
847       ;;
848     *)
849       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
850       enable_fixed_point=no
851       ;;
852   esac
854 AC_SUBST(enable_fixed_point)
856 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
857 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
858 [Define to 1 to enable fixed-point arithmetic extension to C.])
860 # Enable threads
861 # Pass with no value to take the default
862 # Pass with a value to specify a thread package
863 AC_ARG_ENABLE(threads,
864 [AS_HELP_STRING([[--enable-threads[=LIB]]],
865                 [enable thread usage for target GCC,
866                  using LIB thread package])],,
867 [enable_threads=''])
869 AC_ARG_ENABLE(tls,
870 [AS_HELP_STRING([--enable-tls],
871                 [enable or disable generation of tls code
872                  overriding the assembler check for tls support])],
874   case $enable_tls in
875     yes | no) ;;
876     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
877 Valid choices are 'yes' and 'no'.]) ;;
878   esac
879 ], [enable_tls=''])
881 AC_ARG_ENABLE(vtable-verify,
882 [AS_HELP_STRING([--enable-vtable-verify],
883                 [enable vtable verification feature])],,
884 [enable_vtable_verify=no])
885 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
886 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
887 [Define 0/1 if vtable verification feature is enabled.])
889 AC_ARG_ENABLE(objc-gc,
890 [AS_HELP_STRING([--enable-objc-gc],
891                 [enable the use of Boehm's garbage collector with
892                  the GNU Objective-C runtime])],
893 if test x$enable_objc_gc = xno; then
894         objc_boehm_gc=''
895 else
896         objc_boehm_gc=1
898 objc_boehm_gc='')
900 AC_ARG_WITH(dwarf2,
901 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
902 dwarf2="$with_dwarf2",
903 dwarf2=no)
905 AC_ARG_ENABLE(shared,
906 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
908   case $enable_shared in
909   yes | no) ;;
910   *)
911     enable_shared=no
912     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
913     for pkg in $enableval; do
914       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
915         enable_shared=yes
916       fi
917     done
918     IFS="$ac_save_ifs"
919     ;;
920   esac
921 ], [enable_shared=yes])
922 AC_SUBST(enable_shared)
924 AC_ARG_WITH(specs,
925   [AS_HELP_STRING([--with-specs=SPECS],
926                   [add SPECS to driver command-line processing])],
927   [CONFIGURE_SPECS=$withval],
928   [CONFIGURE_SPECS=]
930 AC_SUBST(CONFIGURE_SPECS)
932 ACX_PKGVERSION([GCC])
933 ACX_BUGURL([https://gcc.gnu.org/bugs/])
935 # Sanity check enable_languages in case someone does not run the toplevel
936 # configure # script.
937 AC_ARG_ENABLE(languages,
938 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
939 [case ,${enable_languages}, in
940        ,,|,yes,)
941                 # go safe -- we cannot be much sure without the toplevel
942                 # configure's
943                 # analysis of which target libs are present and usable
944                 enable_languages=c
945                 ;;
946          *,all,*)
947                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
948                 ;;
949         *,c,*)
950                 ;;
951         *)
952                 enable_languages=c,${enable_languages}
953                 ;;
954 esac],
955 [enable_languages=c])
957 if test x"$enable_as_accelerator_for" != x; then
958   AC_DEFINE(ACCEL_COMPILER, 1,
959     [Define if this compiler should be built as the offload target compiler.])
960   enable_as_accelerator=yes
961   case "${target}" in
962     *-intelmicemul-*)
963       # In this case we expect offload compiler to be built as native, so we
964       # need to rename the driver to avoid clashes with host's drivers.
965       program_transform_name="s&^&${target}-&" ;;
966   esac
967   sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
968   program_transform_name=`echo $program_transform_name | sed $sedscript`
969   accel_dir_suffix=/accel/${target_noncanonical}
970   real_target_noncanonical=${enable_as_accelerator_for}
972 AC_SUBST(enable_as_accelerator)
973 AC_SUBST(real_target_noncanonical)
974 AC_SUBST(accel_dir_suffix)
976 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
977   tgt=`echo $tgt | sed 's/=.*//'`
979   if echo "$tgt" | grep "^hsa" > /dev/null ; then
980     enable_hsa=1
981   else
982     enable_offloading=1
983   fi
985   if test x"$offload_targets" = x; then
986     offload_targets=$tgt
987   else
988     offload_targets="$offload_targets,$tgt"
989   fi
990 done
991 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
992   [Define to offload targets, separated by commas.])
993 if test x"$enable_offloading" != x; then
994   AC_DEFINE(ENABLE_OFFLOADING, 1,
995     [Define this to enable support for offloading.])
996 else
997   AC_DEFINE(ENABLE_OFFLOADING, 0,
998     [Define this to enable support for offloading.])
1001 if test x"$enable_hsa" = x1 ; then
1002   AC_DEFINE(ENABLE_HSA, 1,
1003     [Define this to enable support for generating HSAIL.])
1006 AC_ARG_WITH(multilib-list,
1007 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
1009 with_multilib_list=default)
1011 # -------------------------
1012 # Checks for other programs
1013 # -------------------------
1015 AC_PROG_MAKE_SET
1017 # Find some useful tools
1018 AC_PROG_AWK
1019 # We need awk to create options.c and options.h.
1020 # Bail out if it's missing.
1021 case ${AWK} in
1022   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1023 esac
1025 gcc_AC_PROG_LN_S
1026 ACX_PROG_LN($LN_S)
1027 AC_PROG_RANLIB
1028 ranlib_flags=""
1029 AC_SUBST(ranlib_flags)
1030      
1031 gcc_AC_PROG_INSTALL
1033 # See if cmp has --ignore-initial.
1034 gcc_AC_PROG_CMP_IGNORE_INITIAL
1036 # See if we have the mktemp command.
1037 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1039 # See if makeinfo has been installed and is modern enough
1040 # that we can use it.
1041 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1042   [GNU texinfo.* \([0-9][0-9.]*\)],
1043   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1044 if test $gcc_cv_prog_makeinfo_modern = no; then
1045   AC_MSG_WARN([
1046 *** Makeinfo is missing or too old.
1047 *** Info documentation will not be built.])
1048   BUILD_INFO=
1049 else
1050   BUILD_INFO=info
1052 AC_SUBST(BUILD_INFO)
1054 # Is pod2man recent enough to regenerate manpages?
1055 AC_MSG_CHECKING([for recent Pod::Man])
1056 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1057   AC_MSG_RESULT(yes)
1058   GENERATED_MANPAGES=generated-manpages
1059 else
1060   AC_MSG_RESULT(no)
1061   GENERATED_MANPAGES=
1063 AC_SUBST(GENERATED_MANPAGES)
1065 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1067 # How about lex?
1068 dnl Don't use AC_PROG_LEX; we insist on flex.
1069 dnl LEXLIB is not useful in gcc.
1070 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1072 # Bison?
1073 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1075 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1076 # check for build == host before using them.
1078 # NM
1079 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1080   && test -d ../binutils ; then
1081   NM='${objdir}/../binutils/nm-new'
1082 else
1083   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1086 # AR
1087 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1088   && test -d ../binutils ; then
1089   AR='${objdir}/../binutils/ar'
1090 else
1091   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1094 # The jit documentation looks better if built with sphinx, but can be
1095 # built with texinfo if sphinx is not available.
1096 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1097 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1099 # --------------------
1100 # Checks for C headers
1101 # --------------------
1103 # Need to reject headers which give warnings, so that the -Werror bootstrap
1104 # works later. *sigh*  This needs to come before all header checks.
1105 AC_PROG_CPP_WERROR
1107 AC_HEADER_STDC
1108 AC_HEADER_TIME
1109 ACX_HEADER_STRING
1110 AC_HEADER_SYS_WAIT
1111 AC_HEADER_TIOCGWINSZ
1112 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1113                  fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1114                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1115                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1117 # Check for thread headers.
1118 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1119 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1121 # These tests can't be done till we know if we have limits.h.
1122 gcc_AC_C_CHAR_BIT
1123 AC_C_BIGENDIAN
1125 # ----------------------
1126 # Checks for C++ headers
1127 # ----------------------
1129 dnl Autoconf will give an error in the configure script if there is no
1130 dnl C++ preprocessor.  Hack to prevent that.
1131 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1132 AC_PROG_CXXCPP
1133 m4_popdef([AC_MSG_ERROR])[]dnl
1135 AC_CHECK_HEADERS(unordered_map)
1136 AC_CHECK_HEADERS(tr1/unordered_map)
1137 AC_CHECK_HEADERS(ext/hash_map)
1139 # --------
1140 # Dependency checking.
1141 # --------
1143 ZW_CREATE_DEPDIR
1144 AC_CONFIG_COMMANDS([gccdepdir],[
1145   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1146   for lang in $subdirs c-family common
1147   do
1148       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1149   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1151 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1153 # --------
1154 # UNSORTED
1155 # --------
1158 # These libraries may be used by collect2.
1159 # We may need a special search path to get them linked.
1160 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1161 [save_LIBS="$LIBS"
1162 for libs in '' -lld -lmld \
1163                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1164                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1166         LIBS="$libs"
1167         AC_TRY_LINK_FUNC(ldopen,
1168                 [gcc_cv_collect2_libs="$libs"; break])
1169 done
1170 LIBS="$save_LIBS"
1171 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1172 case $gcc_cv_collect2_libs in
1173         "none required")        ;;
1174         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1175 esac
1176 AC_SUBST(COLLECT2_LIBS)
1178 # When building Ada code on Alpha, we need exc_resume which is usually in
1179 # -lexc.  So test for it.
1180 save_LIBS="$LIBS"
1181 LIBS=
1182 AC_SEARCH_LIBS(exc_resume, exc)
1183 GNAT_LIBEXC="$LIBS"
1184 LIBS="$save_LIBS"
1185 AC_SUBST(GNAT_LIBEXC)
1187 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1188 save_LIBS="$LIBS"
1189 LIBS=
1190 AC_SEARCH_LIBS(kstat_open, kstat)
1191 EXTRA_GCC_LIBS="$LIBS"
1192 LIBS="$save_LIBS"
1193 AC_SUBST(EXTRA_GCC_LIBS)
1195 # Some systems put ldexp and frexp in libm instead of libc; assume
1196 # they're both in the same place.  jcf-dump needs them.
1197 save_LIBS="$LIBS"
1198 LIBS=
1199 AC_SEARCH_LIBS(ldexp, m)
1200 LDEXP_LIB="$LIBS"
1201 LIBS="$save_LIBS"
1202 AC_SUBST(LDEXP_LIB)
1204 # Use <inttypes.h> only if it exists,
1205 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1206 # PRId64
1207 AC_MSG_CHECKING(for inttypes.h)
1208 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1209 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1210 [[#define __STDC_FORMAT_MACROS
1211 #include <sys/types.h>
1212 #include <inttypes.h>]],
1213   [[intmax_t i = -1;
1214 #ifndef PRId64
1215 choke me
1216 #endif]])],
1217   [gcc_cv_header_inttypes_h=yes],
1218   [gcc_cv_header_inttypes_h=no])])
1219 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1220 if test $gcc_cv_header_inttypes_h = yes; then
1221   AC_DEFINE(HAVE_INTTYPES_H, 1,
1222         [Define if you have a working <inttypes.h> header file.])
1225 dnl Disabled until we have a complete test for buggy enum bitfields.
1226 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1228 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1229   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1230   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1231   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1232   putchar_unlocked putc_unlocked)
1233 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1234         popen sysconf strsignal getrusage nl_langinfo \
1235         gettimeofday mbstowcs wcswidth mmap setlocale \
1236         gcc_UNLOCKED_FUNCS madvise)
1238 if test x$ac_cv_func_mbstowcs = xyes; then
1239   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1240 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1241 int main()
1243   mbstowcs(0, "", 0);
1244   return 0;
1245 }]])],
1246     [gcc_cv_func_mbstowcs_works=yes],
1247     [gcc_cv_func_mbstowcs_works=no],
1248     [gcc_cv_func_mbstowcs_works=yes])])
1249   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1250     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1251   [Define this macro if mbstowcs does not crash when its
1252    first argument is NULL.])
1253   fi
1256 AC_CHECK_TYPE(ssize_t, int)
1257 AC_CHECK_TYPE(caddr_t, char *)
1259 GCC_AC_FUNC_MMAP_BLACKLIST
1261 case "${host}" in
1262 *-*-*vms*)
1263   # Under VMS, vfork works very differently than on Unix. The standard test 
1264   # won't work, and it isn't easily adaptable. It makes more sense to
1265   # just force it.
1266   ac_cv_func_vfork_works=yes
1267   ;;
1268 esac
1269 AC_FUNC_FORK
1271 AM_ICONV
1273 # Until we have in-tree GNU iconv:
1274 LIBICONV_DEP=
1275 if test -f "$LTLIBICONV"; then
1276   LIBICONV_DEP=$LTLIBICONV
1278 AC_SUBST(LIBICONV_DEP)
1280 AM_LC_MESSAGES
1282 AM_LANGINFO_CODESET
1284 # We will need to find libiberty.h and ansidecl.h
1285 saved_CFLAGS="$CFLAGS"
1286 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1287 saved_CXXFLAGS="$CXXFLAGS"
1288 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1290 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1291 # normal autoconf function for these.  But force definition of
1292 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1293 # basename handling in libiberty.h.
1294 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1295 #undef HAVE_DECL_BASENAME
1296 #define HAVE_DECL_BASENAME 1
1297 #include "ansidecl.h"
1298 #include "system.h"])
1300 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1301         madvise stpcpy strnlen strsignal strverscmp \
1302         strtol strtoul strtoll strtoull setenv unsetenv \
1303         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1304         free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1305 #include "ansidecl.h"
1306 #include "system.h"])
1308 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1309 #include "ansidecl.h"
1310 #include "system.h"
1311 #ifdef HAVE_SYS_RESOURCE_H
1312 #include <sys/resource.h>
1313 #endif
1316 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1317 #include "ansidecl.h"
1318 #include "system.h"
1319 #ifdef HAVE_SYS_RESOURCE_H
1320 #include <sys/resource.h>
1321 #endif
1322 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1323 [Define to `long' if <sys/resource.h> doesn't define.])])
1325 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1326 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1327 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1328 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1329 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1330 #include "ansidecl.h"
1331 #include "system.h"
1332 #ifdef HAVE_LDFCN_H
1333 #undef FREAD
1334 #undef FWRITE
1335 #include <ldfcn.h>
1336 #endif
1339 gcc_AC_CHECK_DECLS(times, , ,[
1340 #include "ansidecl.h"
1341 #include "system.h"
1342 #ifdef HAVE_SYS_TIMES_H
1343 #include <sys/times.h>
1344 #endif
1347 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1348 #include "ansidecl.h"
1349 #include "system.h"
1350 #include <signal.h>
1353 # More time-related stuff.
1354 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1355 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1356 #include "ansidecl.h"
1357 #include "system.h"
1358 #ifdef HAVE_SYS_TIMES_H
1359 #include <sys/times.h>
1360 #endif
1361 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1362 if test $ac_cv_struct_tms = yes; then
1363   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1364   [Define if <sys/times.h> defines struct tms.])
1367 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1368 # revisit after autoconf 2.50.
1369 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1370 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1371 #include "ansidecl.h"
1372 #include "system.h"
1373 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1374 if test $gcc_cv_type_clock_t = yes; then
1375   AC_DEFINE(HAVE_CLOCK_T, 1,
1376   [Define if <time.h> defines clock_t.])
1379 # Check if F_SETLKW is supported by fcntl.
1380 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1381 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1382 #include <fcntl.h>]], [[
1383 struct flock fl;
1384 fl.l_whence = 0;
1385 fl.l_start = 0;
1386 fl.l_len = 0;
1387 fl.l_pid = 0;
1388 return fcntl (1, F_SETLKW, &fl);]])],
1389 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1390 if test $ac_cv_f_setlkw = yes; then
1391   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1392   [Define if F_SETLKW supported by fcntl.])
1395 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1396 CFLAGS="$saved_CFLAGS"
1397 CXXFLAGS="$saved_CXXFLAGS"
1399 # mkdir takes a single argument on some systems. 
1400 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1402 # File extensions
1403 manext='.1'
1404 objext='.o'
1405 AC_SUBST(manext)
1406 AC_SUBST(objext)
1408 # With Setjmp/Longjmp based exception handling.
1409 AC_ARG_ENABLE(sjlj-exceptions,
1410 [AS_HELP_STRING([--enable-sjlj-exceptions],
1411                 [arrange to use setjmp/longjmp exception handling])],
1412 [case $target in
1413   *-*-hpux10*)
1414     if test $enableval != yes; then
1415       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1416       enableval=yes
1417     fi
1418     ;;
1419 esac
1420 force_sjlj_exceptions=yes],
1421 [case $target in
1422   *-*-hpux10*)
1423     force_sjlj_exceptions=yes
1424     enableval=yes
1425     ;;
1426   lm32*-*-*)
1427      force_sjlj_exceptions=yes
1428      enableval=yes
1429      ;;
1430   *)
1431     force_sjlj_exceptions=no
1432     ;;
1433 esac])
1434 if test $force_sjlj_exceptions = yes; then
1435   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1436   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1437     [Define 0/1 to force the choice for exception handling model.])
1440 # --------------------------------------------------------
1441 # Build, host, and target specific configuration fragments
1442 # --------------------------------------------------------
1444 # Collect build-machine-specific information.
1445 . ${srcdir}/config.build
1447 # Collect host-machine-specific information.
1448 . ${srcdir}/config.host
1450 target_gtfiles=
1452 # Collect target-machine-specific information.
1453 . ${srcdir}/config.gcc
1455 extra_objs="${host_extra_objs} ${extra_objs}"
1456 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1458 # Default the target-machine variables that were not explicitly set.
1459 if test x"$tm_file" = x
1460 then tm_file=$cpu_type/$cpu_type.h; fi
1462 if test x"$extra_headers" = x
1463 then extra_headers=; fi
1465 if test x$md_file = x
1466 then md_file=$cpu_type/$cpu_type.md; fi
1468 if test x$out_file = x
1469 then out_file=$cpu_type/$cpu_type.c; fi
1471 if test x"$tmake_file" = x
1472 then tmake_file=$cpu_type/t-$cpu_type
1475 # Support --enable-initfini-array.
1476 if test x$enable_initfini_array != xno; then
1477   tm_file="${tm_file} initfini-array.h"
1480 if test x"$dwarf2" = xyes
1481 then tm_file="$tm_file tm-dwarf2.h"
1484 # Say what files are being used for the output code and MD file.
1485 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1486 echo "Using \`$srcdir/config/$md_file' as machine description file."
1488 # If any of the xm_file variables contain nonexistent files, warn
1489 # about them and drop them.
1492 for x in $build_xm_file; do
1493   if    test -f $srcdir/config/$x
1494   then      bx="$bx $x"
1495   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1496   fi
1497 done
1498 build_xm_file="$bx"
1501 for x in $host_xm_file; do
1502   if    test -f $srcdir/config/$x
1503   then      hx="$hx $x"
1504   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1505   fi
1506 done
1507 host_xm_file="$hx"
1510 for x in $xm_file; do
1511   if    test -f $srcdir/config/$x
1512   then      tx="$tx $x"
1513   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1514   fi
1515 done
1516 xm_file="$tx"
1518 count=a
1519 for f in $tm_file; do
1520         count=${count}x
1521 done
1522 if test $count = ax; then
1523         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1524 else
1525         echo "Using the following target machine macro files:"
1526         for f in $tm_file; do
1527                 echo "  $srcdir/config/$f"
1528         done
1531 if test x$use_long_long_for_widest_fast_int = xyes; then
1532         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1533 [Define to 1 if the 'long long' type is wider than 'long' but still
1534 efficiently supported by the host hardware.])
1537 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1538 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1540 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1541 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1543 count=a
1544 for f in $host_xm_file; do
1545         count=${count}x
1546 done
1547 if test $count = a; then
1548         :
1549 elif test $count = ax; then
1550         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1551 else
1552         echo "Using the following host machine macro files:"
1553         for f in $host_xm_file; do
1554                 echo "  $srcdir/config/$f"
1555         done
1557 echo "Using ${out_host_hook_obj} for host machine hooks."
1559 if test "$host_xm_file" != "$build_xm_file"; then
1560         count=a
1561         for f in $build_xm_file; do
1562                 count=${count}x
1563         done
1564         if test $count = a; then
1565                 :
1566         elif test $count = ax; then
1567                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1568         else
1569                 echo "Using the following build machine macro files:"
1570                 for f in $build_xm_file; do
1571                         echo "  $srcdir/config/$f"
1572                 done
1573         fi
1576 if test -n "$configured_native_system_header_dir"; then
1577   native_system_header_dir=$configured_native_system_header_dir
1579 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1580 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1582 case ${host} in
1583   powerpc*-*-darwin*)
1584     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1585       gcc_cv_mcontext_underscores,
1586       AC_COMPILE_IFELSE([
1587 #include <sys/cdefs.h>
1588 #include <sys/signal.h>
1589 #include <ucontext.h>
1590 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1592         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1593       if test $gcc_cv_mcontext_underscores = yes; then
1594         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1595           [mcontext_t fields start with __])
1596       fi
1597     ;;
1598 esac
1600 # ---------
1601 # Threading
1602 # ---------
1604 # Check if a valid thread package
1605 case ${enable_threads} in
1606   "" | no)
1607     # No threads
1608     target_thread_file='single'
1609     ;;
1610   yes)
1611     # default
1612     target_thread_file='single'
1613     ;;
1614   aix | dce | lynx | mipssde | posix | rtems | \
1615   single | tpf | vxworks | win32)
1616     target_thread_file=${enable_threads}
1617     ;;
1618   *)
1619     echo "${enable_threads} is an unknown thread package" 1>&2
1620     exit 1
1621     ;;
1622 esac
1624 if test x${thread_file} = x; then
1625   # No thread file set by target-specific clauses in config.gcc,
1626   # so use file chosen by default logic above
1627   thread_file=${target_thread_file}
1630 # --------
1631 # UNSORTED
1632 # --------
1634 use_cxa_atexit=no
1635 if test x$enable___cxa_atexit = xyes || \
1636    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1637   if test x$host = x$target; then
1638     case $host in
1639       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1640       # keyed to flag_use_cxa_atexit
1641       *-*-mingw32*)
1642         use_cxa_atexit=yes
1643         ;;
1644       powerpc-ibm-aix*)
1645         use_cxa_atexit=yes
1646         ;;
1647       *)
1648         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1649           [echo "__cxa_atexit can't be enabled on this target"])
1650         ;;
1651     esac
1652   else
1653     # We can't check for __cxa_atexit when building a cross, so assume
1654     # it is available 
1655     use_cxa_atexit=yes
1656   fi
1657   if test x$use_cxa_atexit = xyes; then
1658     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1659       [Define if you want to use __cxa_atexit, rather than atexit, to
1660       register C++ destructors for local statics and global objects.
1661       This is essential for fully standards-compliant handling of
1662       destructors, but requires __cxa_atexit in libc.])
1663   fi
1666 # Look for a file containing extra machine modes.
1667 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1668   extra_modes_file='$(srcdir)'/config/${extra_modes}
1669   AC_SUBST(extra_modes_file)
1670   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1671   [Define to the name of a file containing a list of extra machine modes
1672    for this architecture.])
1675 # Convert extra_options into a form suitable for Makefile use.
1676 extra_opt_files=
1677 all_opt_files=
1678 for f in $extra_options; do
1679   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1680   all_opt_files="$all_opt_files $srcdir/config/$f"
1681 done
1682 AC_SUBST(extra_opt_files)
1684 # auto-host.h is the file containing items generated by autoconf and is
1685 # the first file included by config.h.
1686 # If host=build, it is correct to have bconfig include auto-host.h
1687 # as well.  If host!=build, we are in error and need to do more 
1688 # work to find out the build config parameters.
1689 if test x$host = x$build
1690 then
1691         build_auto=auto-host.h
1692 else
1693         # We create a subdir, then run autoconf in the subdir.
1694         # To prevent recursion we set host and build for the new
1695         # invocation of configure to the build for this invocation
1696         # of configure. 
1697         tempdir=build.$$
1698         rm -rf $tempdir
1699         mkdir $tempdir
1700         cd $tempdir
1701         case ${srcdir} in
1702         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1703         *) realsrcdir=../${srcdir};;
1704         esac
1705         # Clearing GMPINC is necessary to prevent host headers being
1706         # used by the build compiler.  Defining GENERATOR_FILE stops
1707         # system.h from including gmp.h.
1708         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1709         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1710         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1711         GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1712         ${realsrcdir}/configure \
1713                 --enable-languages=${enable_languages-all} \
1714                 --target=$target_alias --host=$build_alias --build=$build_alias
1716         # We just finished tests for the build machine, so rename
1717         # the file auto-build.h in the gcc directory.
1718         mv auto-host.h ../auto-build.h
1719         cd ..
1720         rm -rf $tempdir
1721         build_auto=auto-build.h
1723 AC_SUBST(build_subdir)
1725 tm_file="${tm_file} defaults.h"
1726 tm_p_file="${tm_p_file} tm-preds.h"
1727 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1728 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1729 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1730 # put this back in temporarily.
1731 xm_file="auto-host.h ansidecl.h ${xm_file}"
1733 # --------
1734 # UNSORTED
1735 # --------
1737 changequote(,)dnl
1738 # Compile in configure arguments.
1739 if test -f configargs.h ; then
1740         # Being re-configured.
1741         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1742         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1743 else
1744         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1747 # Double all backslashes and backslash all quotes to turn
1748 # gcc_config_arguments into a C string.
1749 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1750 $gcc_config_arguments
1752 gcc_config_arguments_str=`cat conftest.out`
1753 rm -f conftest.out
1755 cat > configargs.h <<EOF
1756 /* Generated automatically. */
1757 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1758 static const char thread_model[] = "$thread_file";
1760 static const struct {
1761   const char *name, *value;
1762 } configure_default_options[] = $configure_default_options;
1764 changequote([,])dnl
1766 changequote(,)dnl
1767 gcc_BASEVER=`cat $srcdir/BASE-VER`
1768 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1769 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1770 if test -f $srcdir/REVISION ; then
1771         gcc_REVISION=`cat $srcdir/REVISION`
1772 else
1773         gcc_REVISION=""
1775 cat > plugin-version.h <<EOF
1776 #include "configargs.h"
1778 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1779 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1780 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1781 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1783 static char basever[] = "$gcc_BASEVER";
1784 static char datestamp[] = "$gcc_DATESTAMP";
1785 static char devphase[] = "$gcc_DEVPHASE";
1786 static char revision[] = "$gcc_REVISION";
1788 /* FIXME plugins: We should make the version information more precise.
1789    One way to do is to add a checksum. */
1791 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1792                                                 devphase, revision,
1793                                                 configuration_arguments};
1795 changequote([,])dnl
1797 # Determine what GCC version number to use in filesystem paths.
1798 GCC_BASE_VER
1800 # Internationalization
1801 ZW_GNU_GETTEXT_SISTER_DIR
1803 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1804 # -liconv on the link line twice.
1805 case "$LIBINTL" in *$LIBICONV*)
1806         LIBICONV= ;;
1807 esac
1809 AC_ARG_ENABLE(secureplt,
1810 [AS_HELP_STRING([--enable-secureplt],
1811                 [enable -msecure-plt by default for PowerPC])],
1812 [], [])
1814 AC_ARG_ENABLE(leading-mingw64-underscores,
1815   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1816                  [enable leading underscores on 64 bit mingw targets]),
1817   [],[])
1818 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1819   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1820     [Define if we should use leading underscore on 64 bit mingw targets])])
1822 AC_ARG_ENABLE(cld,
1823 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1824 [enable_cld=no])
1826 AC_ARG_ENABLE(frame-pointer,
1827 [AS_HELP_STRING([--enable-frame-pointer],
1828                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1830 case $target_os in
1831 linux* | darwin[[8912]]*)
1832   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1833   # DWARF2.
1834   enable_frame_pointer=no
1835   ;;
1837   enable_frame_pointer=yes
1838   ;;
1839 esac
1842 # Windows32 Registry support for specifying GCC installation paths.
1843 AC_ARG_ENABLE(win32-registry,
1844 [AS_HELP_STRING([--disable-win32-registry],
1845                 [disable lookup of installation paths in the
1846                  Registry on Windows hosts])
1847 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1848 AS_HELP_STRING([--enable-win32-registry=KEY],
1849                [use KEY instead of GCC version as the last portion
1850                 of the registry key])],,)
1852 case $host_os in
1853   win32 | pe | cygwin* | mingw32*)
1854     if test "x$enable_win32_registry" != xno; then
1855       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1856     fi
1858     if test "x$enable_win32_registry" != xno; then
1859       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1860   [Define to 1 if installation paths should be looked up in the Windows
1861    Registry. Ignored on non-Windows hosts.])
1863       if test "x$enable_win32_registry" != xyes \
1864          && test "x$enable_win32_registry" != x; then
1865         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1866   [Define to be the last component of the Windows registry key under which
1867    to look for installation paths.  The full key used will be 
1868    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1869    The default is the GCC version number.])
1870       fi
1871     fi
1872   ;;
1873 esac
1875 # Get an absolute path to the GCC top-level source directory
1876 holddir=`${PWDCMD-pwd}`
1877 cd $srcdir
1878 topdir=`${PWDCMD-pwd}`
1879 cd $holddir
1881 # Conditionalize the makefile for this host machine.
1882 xmake_file=
1883 for f in ${host_xmake_file}
1885         if test -f ${srcdir}/config/$f
1886         then
1887                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1888         fi
1889 done
1891 # Conditionalize the makefile for this target machine.
1892 tmake_file_=
1893 for f in ${tmake_file}
1895         if test -f ${srcdir}/config/$f
1896         then
1897                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1898         fi
1899 done
1900 tmake_file="${tmake_file_}"
1902 out_object_file=`basename $out_file .c`.o
1903 common_out_object_file=`basename $common_out_file .c`.o
1905 tm_file_list="options.h"
1906 tm_include_list="options.h insn-constants.h"
1907 for f in $tm_file; do
1908   case $f in
1909     ./* )
1910        f=`echo $f | sed 's/^..//'`
1911        tm_file_list="${tm_file_list} $f"
1912        tm_include_list="${tm_include_list} $f"
1913        ;;
1914     defaults.h )
1915        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1916        tm_include_list="${tm_include_list} $f"
1917        ;;
1918     * )
1919        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1920        tm_include_list="${tm_include_list} config/$f"
1921        ;;
1922   esac
1923 done
1925 tm_p_file_list=
1926 tm_p_include_list=
1927 for f in $tm_p_file; do
1928   case $f in
1929     tm-preds.h )
1930        tm_p_file_list="${tm_p_file_list} $f"
1931        tm_p_include_list="${tm_p_include_list} $f"
1932        ;;
1933     * )
1934        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1935        tm_p_include_list="${tm_p_include_list} config/$f"
1936   esac
1937 done
1939 xm_file_list=
1940 xm_include_list=
1941 for f in $xm_file; do
1942   case $f in
1943     ansidecl.h )
1944        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1945        xm_include_list="${xm_include_list} $f"
1946        ;;
1947     auto-host.h )
1948        xm_file_list="${xm_file_list} $f"
1949        xm_include_list="${xm_include_list} $f"
1950        ;;
1951     * )
1952        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1953        xm_include_list="${xm_include_list} config/$f"
1954        ;;
1955   esac
1956 done
1958 host_xm_file_list=
1959 host_xm_include_list=
1960 for f in $host_xm_file; do
1961   case $f in
1962     ansidecl.h )
1963        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1964        host_xm_include_list="${host_xm_include_list} $f"
1965        ;;
1966     auto-host.h )
1967        host_xm_file_list="${host_xm_file_list} $f"
1968        host_xm_include_list="${host_xm_include_list} $f"
1969        ;;
1970     * )
1971        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1972        host_xm_include_list="${host_xm_include_list} config/$f"
1973        ;;
1974   esac
1975 done
1977 build_xm_file_list=
1978 for f in $build_xm_file; do
1979   case $f in
1980     ansidecl.h )
1981        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1982        build_xm_include_list="${build_xm_include_list} $f"
1983        ;;
1984     auto-build.h | auto-host.h )
1985        build_xm_file_list="${build_xm_file_list} $f"
1986        build_xm_include_list="${build_xm_include_list} $f"
1987        ;;
1988     * )
1989        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1990        build_xm_include_list="${build_xm_include_list} config/$f"
1991        ;;
1992   esac
1993 done
1995 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1996 # cross-compiler which does not use the native headers and libraries.
1997 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1998 CROSS=                                          AC_SUBST(CROSS)
1999 ALL=all.internal                                AC_SUBST(ALL)
2000 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2001 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR      AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2003 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2004    test x$build != x$host || test "x$with_build_sysroot" != x; then
2005   if test "x$with_build_sysroot" != x; then
2006     BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2007   else
2008     BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2009   fi
2011   if test x$host != x$target
2012   then
2013     CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2014     ALL=all.cross
2015     SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2016   elif test "x$TARGET_SYSTEM_ROOT" != x; then
2017     SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2018   fi
2020   if test "x$with_build_sysroot" != "x"; then
2021     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2022   elif test "x$with_sysroot" = x; then
2023     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2024   elif test "x$with_sysroot" = xyes; then
2025     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2026   else
2027     target_header_dir="${with_sysroot}${native_system_header_dir}"
2028   fi
2029 else
2030   target_header_dir=${native_system_header_dir}
2033 # If this is a cross-compiler that does not
2034 # have its own set of headers then define
2035 # inhibit_libc
2037 # If this is using newlib, without having the headers available now,
2038 # then define inhibit_libc in LIBGCC2_CFLAGS.
2039 # This prevents libgcc2 from containing any code which requires libc
2040 # support.
2041 : ${inhibit_libc=false}
2042 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2043        test x$with_newlib = xyes ; } &&
2044      { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2045        inhibit_libc=true
2047 AC_SUBST(inhibit_libc)
2049 # When building gcc with a cross-compiler, we need to adjust things so
2050 # that the generator programs are still built with the native compiler.
2051 # Also, we cannot run fixincludes.
2053 # These are the normal (build=host) settings:
2054 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2055 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2056 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2057 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2058 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2059 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2061 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
2062 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
2064 # And these apply if build != host, or we are generating coverage data
2065 if test x$build != x$host || test "x$coverage_flags" != x
2066 then
2067     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2068     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2069     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2071     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
2072     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
2073     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
2074     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
2076 AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
2077 AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
2079 # Expand extra_headers to include complete path.
2080 # This substitutes for lots of t-* files.
2081 extra_headers_list=
2082 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2083 for file in ${extra_headers} ; do
2084   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2085 done
2087 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2088 if test x"$use_gcc_tgmath" = xyes
2089 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2092 # Define collect2 in Makefile.
2093 case $host_can_use_collect2 in
2094   no) collect2= ;;
2095   *) collect2='collect2$(exeext)' ;;
2096 esac
2097 AC_SUBST([collect2])
2099 # Add a definition of USE_COLLECT2 if system wants one.
2100 case $use_collect2 in
2101   no) use_collect2= ;;
2102   "") ;;
2103   *) 
2104     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2105     xm_defines="${xm_defines} USE_COLLECT2"
2106     case $host_can_use_collect2 in
2107       no)
2108         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2109         ;;
2110     esac
2111     ;;
2112 esac
2114 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2115 [Define to the name of the LTO plugin DSO that must be
2116   passed to the linker's -plugin=LIB option.])
2118 # ---------------------------
2119 # Assembler & linker features
2120 # ---------------------------
2122 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2123 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2124 # However when ld-new is first executed from the build tree, libtool will
2125 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2126 # to the build tree.  While doing this we need to use the previous-stage
2127 # linker, or we have an infinite loop.  The presence of a shell script as
2128 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2129 # the gcc/collect-ld script.  So we need to know how libtool works, or
2130 # exec-tool will fail.
2132 m4_defun([_LT_CONFIG_COMMANDS], [])
2133 AC_PROG_LIBTOOL
2134 AC_SUBST(objdir)
2135 AC_SUBST(enable_fast_install)
2137 # Identify the assembler which will work hand-in-glove with the newly
2138 # built GCC, so that we can examine its features.  This is the assembler
2139 # which will be driven by the driver program.
2141 # If build != host, and we aren't building gas in-tree, we identify a
2142 # build->target assembler and hope that it will have the same features
2143 # as the host->target assembler we'll be using.
2144 gcc_cv_gas_major_version=
2145 gcc_cv_gas_minor_version=
2146 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2148 m4_pattern_allow([AS_FOR_TARGET])dnl
2149 AS_VAR_SET_IF(gcc_cv_as,, [
2150 if test -x "$DEFAULT_ASSEMBLER"; then
2151         gcc_cv_as="$DEFAULT_ASSEMBLER"
2152 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2153      && test -f ../gas/Makefile \
2154      && test x$build = x$host; then
2155         gcc_cv_as=../gas/as-new$build_exeext
2156 elif test -x as$build_exeext; then
2157         # Build using assembler in the current directory.
2158         gcc_cv_as=./as$build_exeext
2159 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2160         gcc_cv_as="$AS_FOR_TARGET"
2161 else
2162         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2163 fi])
2165 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2166 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2167 case "$ORIGINAL_AS_FOR_TARGET" in
2168   ./as | ./as$build_exeext) ;;
2169   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2170 esac 
2172 AC_MSG_CHECKING(what assembler to use)
2173 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2174   # Single tree build which includes gas.  We want to prefer it
2175   # over whatever linker top-level may have detected, since
2176   # we'll use what we're building after installation anyway.
2177   AC_MSG_RESULT(newly built gas)
2178   in_tree_gas=yes
2179   _gcc_COMPUTE_GAS_VERSION
2180   in_tree_gas_is_elf=no
2181   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2182      || (grep 'obj_format = multi' ../gas/Makefile \
2183          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2184   then
2185     in_tree_gas_is_elf=yes
2186   fi
2187 else
2188   AC_MSG_RESULT($gcc_cv_as)
2189   in_tree_gas=no
2192 default_ld=
2193 AC_ARG_ENABLE(ld,
2194 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2195 [case "${enableval}" in
2196  no)
2197    default_ld=ld.gold
2198    ;;
2199  esac])
2201 install_gold_as_default=no
2202 AC_ARG_ENABLE(gold,
2203 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2204 [case "${enableval}" in
2205  default)
2206    install_gold_as_default=yes
2207    ;;
2208  yes)
2209    if test x${default_ld} != x; then
2210      install_gold_as_default=yes
2211    fi
2212    ;;
2213  no)
2214    ;;
2215  *)
2216    AC_MSG_ERROR([invalid --enable-gold argument])
2217    ;;
2218  esac])
2220 # Identify the linker which will work hand-in-glove with the newly
2221 # built GCC, so that we can examine its features.  This is the linker
2222 # which will be driven by the driver program.
2224 # If build != host, and we aren't building gas in-tree, we identify a
2225 # build->target linker and hope that it will have the same features
2226 # as the host->target linker we'll be using.
2227 gcc_cv_gld_major_version=
2228 gcc_cv_gld_minor_version=
2229 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2230 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2231 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2233 AS_VAR_SET_IF(gcc_cv_ld,, [
2234 if test -x "$DEFAULT_LINKER"; then
2235         gcc_cv_ld="$DEFAULT_LINKER"
2236 elif test $install_gold_as_default = yes \
2237      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2238      && test -f ../gold/Makefile \
2239      && test x$build = x$host; then
2240         gcc_cv_ld=../gold/ld-new$build_exeext
2241 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2242      && test -f ../ld/Makefile \
2243      && test x$build = x$host; then
2244         gcc_cv_ld=../ld/ld-new$build_exeext
2245 elif test -x collect-ld$build_exeext; then
2246         # Build using linker in the current directory.
2247         gcc_cv_ld=./collect-ld$build_exeext
2248 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2249         gcc_cv_ld="$LD_FOR_TARGET"
2250 else
2251         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2252 fi])
2254 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2255 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2256 # if the PLUGIN_LD is set ld-new, just have it as ld
2257 # as that is the installed named.
2258 if test x$PLUGIN_LD_SUFFIX = xld-new \
2259    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2260   PLUGIN_LD_SUFFIX=ld
2262 AC_ARG_WITH(plugin-ld,
2263 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2264 [if test x"$withval" != x; then
2265    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2266    PLUGIN_LD_SUFFIX="$withval"
2267  fi])
2268 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2269 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2271 # Check to see if we are using gold instead of ld
2272 AC_MSG_CHECKING(whether we are using gold)
2273 ld_is_gold=no
2274 if test x$gcc_cv_ld != x; then
2275   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2276      | grep "GNU gold" > /dev/null; then
2277     ld_is_gold=yes
2278   fi
2280 AC_MSG_RESULT($ld_is_gold)
2282 AC_MSG_CHECKING(gold linker with split stack support as non default)
2283 # Check to see if default ld is not gold, but gold is
2284 # available and has support for split stack.  If gcc was configured
2285 # with gold then no checking is done.
2287 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2289 # For platforms other than powerpc64*, enable as appropriate.
2291   gold_non_default=no
2292   ld_gold=`which ${gcc_cv_ld}.gold`
2293 # Make sure this gold has minimal split stack support
2294   if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2295     ld_vers=`$ld_gold --version | sed 1q`
2296     gold_vers=`echo $ld_vers | sed -n \
2297           -e 's,^[[^)]]*[[  ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2298     case $target in
2299 # check that the gold version contains the complete split stack support
2300 # on powerpc64 big and little endian
2301       powerpc64*-*-*)
2302         case "$gold_vers" in
2303           2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2304           ;;
2305           *) gold_non_default=no
2306           ;;
2307         esac
2308         ;;
2309     esac
2310   fi
2311   if test $gold_non_default = yes; then
2312     AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2313             [Define if the gold linker supports split stack and is available as a non-default])
2314   fi
2316 AC_MSG_RESULT($gold_non_default)
2318 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2319 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2320 case "$ORIGINAL_LD_FOR_TARGET" in
2321   ./collect-ld | ./collect-ld$build_exeext) ;;
2322   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2323 esac 
2325 AC_MSG_CHECKING(what linker to use)
2326 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2327    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2328         # Single tree build which includes ld.  We want to prefer it
2329         # over whatever linker top-level may have detected, since
2330         # we'll use what we're building after installation anyway.
2331         AC_MSG_RESULT(newly built ld)
2332         in_tree_ld=yes
2333         in_tree_ld_is_elf=no
2334         if (grep 'EMUL = .*elf' ../ld/Makefile \
2335             || grep 'EMUL = .*linux' ../ld/Makefile \
2336             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2337           in_tree_ld_is_elf=yes
2338         elif test "$ld_is_gold" = yes; then
2339           in_tree_ld_is_elf=yes
2340         fi
2341         for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.ac $gcc_cv_ld_gld_srcdir/Makefile.in
2342         do
2343 changequote(,)dnl
2344                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2345                 if test x$gcc_cv_gld_version != x; then
2346                         break
2347                 fi
2348         done
2349         case $gcc_cv_gld_version in
2350           VERSION=[0-9]*) ;;
2351 changequote([,])dnl
2352           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2353 changequote(,)dnl
2354         esac
2355         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2356         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2357 changequote([,])dnl
2358         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2359         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2360 else
2361         AC_MSG_RESULT($gcc_cv_ld)
2362         in_tree_ld=no
2363         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2364         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2365         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2368 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2369 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2371 # Figure out what nm we will be using.
2372 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2373 AS_VAR_SET_IF(gcc_cv_nm,, [
2374 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2375      && test -f ../binutils/Makefile \
2376      && test x$build = x$host; then
2377         gcc_cv_nm=../binutils/nm-new$build_exeext
2378 elif test -x nm$build_exeext; then
2379         gcc_cv_nm=./nm$build_exeext
2380 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2381         gcc_cv_nm="$NM_FOR_TARGET"
2382 else
2383         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2384 fi])
2386 AC_MSG_CHECKING(what nm to use)
2387 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2388         # Single tree build which includes binutils.
2389         AC_MSG_RESULT(newly built nm)
2390         in_tree_nm=yes
2391 else
2392         AC_MSG_RESULT($gcc_cv_nm)
2393         in_tree_nm=no
2396 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2397 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2398 case "$ORIGINAL_NM_FOR_TARGET" in
2399   ./nm | ./nm$build_exeext) ;;
2400   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2401 esac
2404 # Figure out what objdump we will be using.
2405 AS_VAR_SET_IF(gcc_cv_objdump,, [
2406 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2407      && test -f ../binutils/Makefile \
2408      && test x$build = x$host; then
2409         # Single tree build which includes binutils.
2410         gcc_cv_objdump=../binutils/objdump$build_exeext
2411 elif test -x objdump$build_exeext; then
2412         gcc_cv_objdump=./objdump$build_exeext
2413 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2414         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2415 else
2416         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2417 fi])
2419 AC_MSG_CHECKING(what objdump to use)
2420 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2421         # Single tree build which includes binutils.
2422         AC_MSG_RESULT(newly built objdump)
2423 elif test x$gcc_cv_objdump = x; then
2424         AC_MSG_RESULT(not found)
2425 else
2426         AC_MSG_RESULT($gcc_cv_objdump)
2429 # Figure out what readelf we will be using.
2430 AS_VAR_SET_IF(gcc_cv_readelf,, [
2431 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2432      && test -f ../binutils/Makefile \
2433      && test x$build = x$host; then
2434         # Single tree build which includes binutils.
2435         gcc_cv_readelf=../binutils/readelf$build_exeext
2436 elif test -x readelf$build_exeext; then
2437         gcc_cv_readelf=./readelf$build_exeext
2438 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2439         gcc_cv_readelf="$READELF_FOR_TARGET"
2440 else
2441         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2442 fi])
2444 AC_MSG_CHECKING(what readelf to use)
2445 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2446         # Single tree build which includes binutils.
2447         AC_MSG_RESULT(newly built readelf)
2448 elif test x$gcc_cv_readelf = x; then
2449         AC_MSG_RESULT(not found)
2450 else
2451         AC_MSG_RESULT($gcc_cv_readelf)
2454 # Figure out what assembler alignment features are present.
2455 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2456  [2,6,0],,
2457 [.balign 4
2458 .p2align 2],,
2459 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2460   [Define if your assembler supports .balign and .p2align.])])
2462 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2463  [2,8,0],,
2464  [.p2align 4,,7],,
2465 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2466   [Define if your assembler supports specifying the maximum number
2467    of bytes to skip when using the GAS .p2align command.])])
2469 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2470  [2,8,0],,
2471  [.literal16],,
2472 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2473   [Define if your assembler supports .literal16.])])
2475 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2476  [elf,2,9,0],,
2477  [conftest_label1: .word 0
2478 .subsection -1
2479 conftest_label2: .word 0
2480 .previous],
2481  [if test x$gcc_cv_nm != x; then
2482     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2483     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2484     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2485     then :
2486     else gcc_cv_as_subsection_m1=yes
2487     fi
2488     rm -f conftest.nm1 conftest.nm2
2489   fi],
2490  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2491   [Define if your assembler supports .subsection and .subsection -1 starts
2492    emitting at the beginning of your section.])])
2494 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2495  [2,2,0],,
2496  [      .weak foobar],,
2497 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2499 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2500  [2,17,0],,
2501  [      .weakref foobar, barfnot],,
2502 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2504 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2505  [2,15,91],,
2506  [      .SPACE $TEXT$
2507         .NSUBSPA $CODE$,COMDAT],,
2508 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2510 # .hidden needs to be supported in both the assembler and the linker,
2511 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2512 # This is irritatingly difficult to feature test for; we have to check the
2513 # date string after the version number.  If we've got an in-tree
2514 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2515 # to be safe.
2516 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2517 case "${target}" in
2518   *-*-aix*)
2519     conftest_s='        .globl foobar,hidden'
2520     ;;
2521   *)
2522     conftest_s='        .hidden foobar
2523 foobar:'
2524     ;;
2525 esac
2526 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2527  [elf,2,13,0],, [$conftest_s])
2528 case "${target}" in
2529   *-*-darwin*)
2530     # Darwin as has some visibility support, though with a different syntax.
2531     gcc_cv_as_hidden=yes
2532     ;;
2533 esac
2535 # gnu_indirect_function type is an extension proposed at
2536 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2537 # selection of function implementation
2538 AC_ARG_ENABLE(gnu-indirect-function,
2539  [AS_HELP_STRING([--enable-gnu-indirect-function],
2540                  [enable the use of the @gnu_indirect_function to glibc systems])],
2541  [case $enable_gnu_indirect_function in
2542     yes | no) ;;
2543     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2544 Valid choices are 'yes' and 'no'.]) ;;
2545   esac],
2546  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2548 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2549 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2550 [Define if your system supports gnu indirect functions.])
2553 changequote(,)dnl
2554 if test $in_tree_ld != yes ; then
2555   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2556   if echo "$ld_ver" | grep GNU > /dev/null; then
2557     if test x"$ld_is_gold" = xyes; then
2558       # GNU gold --version looks like this:
2559       #
2560       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2561       #
2562       # We extract the binutils version which is more familiar and specific
2563       # than the gold version.
2564       ld_vers=`echo $ld_ver | sed -n \
2565           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2566     else
2567       # GNU ld --version looks like this:
2568       #
2569       # GNU ld (GNU Binutils) 2.21.51.20110225
2570       ld_vers=`echo $ld_ver | sed -n \
2571           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2572     fi
2573     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'`
2574     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2575     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2576     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2577   else
2578     case "${target}" in
2579       *-*-solaris2*)
2580         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2581         # format.
2582         #
2583         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2584         # /usr/ccs/bin/ld has been configured.
2585         ld_ver=`$gcc_cv_ld -V 2>&1`
2586         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2587           ld_vers=`echo $ld_ver | sed -n \
2588             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2589           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2590           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2591         fi
2592         ;;
2593     esac
2594   fi
2596 changequote([,])dnl
2598 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2599 [[if test $in_tree_ld = yes ; then
2600   gcc_cv_ld_hidden=no
2601   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 \
2602      && test $in_tree_ld_is_elf = yes; then
2603      gcc_cv_ld_hidden=yes
2604   fi
2605 else
2606   gcc_cv_ld_hidden=yes
2607   if test x"$ld_is_gold" = xyes; then
2608     :
2609   elif echo "$ld_ver" | grep GNU > /dev/null; then
2610     case "${target}" in
2611       mmix-knuth-mmixware)
2612         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2613         gcc_cv_ld_hidden=no
2614         ;;
2615     esac
2616     if test 0"$ld_date" -lt 20020404; then
2617       if test -n "$ld_date"; then
2618         # If there was date string, but was earlier than 2002-04-04, fail
2619         gcc_cv_ld_hidden=no
2620       elif test -z "$ld_vers"; then
2621         # If there was no date string nor ld version number, something is wrong
2622         gcc_cv_ld_hidden=no
2623       else
2624         test -z "$ld_vers_patch" && ld_vers_patch=0
2625         if test "$ld_vers_major" -lt 2; then
2626           gcc_cv_ld_hidden=no
2627         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2628           gcc_cv_ld_hidden="no"
2629         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2630           gcc_cv_ld_hidden=no
2631         fi
2632       fi
2633     fi
2634   else
2635     case "${target}" in
2636       *-*-aix[789]*)
2637         gcc_cv_ld_hidden=yes
2638         ;;
2639       *-*-darwin*)
2640         # Darwin ld has some visibility support.
2641         gcc_cv_ld_hidden=yes
2642         ;;
2643       hppa64*-*-hpux* | ia64*-*-hpux*)
2644         gcc_cv_ld_hidden=yes
2645         ;;
2646       *-*-solaris2.1[0-9]*)
2647         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2648         # .symbolic was only added in Solaris 9 12/02.
2649         gcc_cv_ld_hidden=yes
2650         ;;
2651       *)
2652         gcc_cv_ld_hidden=no
2653         ;;
2654     esac
2655   fi
2656 fi]])
2657 libgcc_visibility=no
2658 AC_SUBST(libgcc_visibility)
2659 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2660 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2661   libgcc_visibility=yes
2662   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2663   [Define if your assembler and linker support .hidden.])
2666 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2667 gcc_cv_ld_ro_rw_mix=unknown
2668 if test $in_tree_ld = yes ; then
2669   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 \
2670      && test $in_tree_ld_is_elf = yes; then
2671     gcc_cv_ld_ro_rw_mix=read-write
2672   fi
2673 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2674   echo '.section myfoosect, "a"' > conftest1.s
2675   echo '.section myfoosect, "aw"' > conftest2.s
2676   echo '.byte 1' >> conftest2.s
2677   echo '.section myfoosect, "a"' > conftest3.s
2678   echo '.byte 0' >> conftest3.s
2679   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2680      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2681      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2682      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2683         conftest2.o conftest3.o > /dev/null 2>&1; then
2684     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2685                          | sed -e '/myfoosect/!d' -e N`
2686     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2687       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2688         gcc_cv_ld_ro_rw_mix=read-only
2689       else
2690         gcc_cv_ld_ro_rw_mix=read-write
2691       fi
2692     fi
2693   fi
2694 changequote(,)dnl
2695   rm -f conftest.* conftest[123].*
2696 changequote([,])dnl
2698 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2699         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2700   [Define if your linker links a mix of read-only
2701    and read-write sections into a read-write section.])
2703 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2705 gcc_AC_INITFINI_ARRAY
2707 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2708 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2709   [elf,2,11,0],,
2710 [       .data
2711         .uleb128 L2 - L1
2713         .uleb128 1280
2714         .sleb128 -1010
2715 L2:],
2716 [[# GAS versions before 2.11 do not support uleb128,
2717   # despite appearing to.
2718   # ??? There exists an elf-specific test that will crash
2719   # the assembler.  Perhaps it's better to figure out whether
2720   # arbitrary sections are supported and try the test.
2721   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2722   if echo "$as_ver" | grep GNU > /dev/null; then
2723     as_vers=`echo $as_ver | sed -n \
2724         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2725     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2726     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2727     if test $as_major -eq 2 && test $as_minor -lt 11
2728     then :
2729     else gcc_cv_as_leb128=yes
2730     fi
2731   fi]],
2732   [AC_DEFINE(HAVE_AS_LEB128, 1,
2733     [Define if your assembler supports .sleb128 and .uleb128.])],
2734   [AC_DEFINE(HAVE_AS_LEB128, 0,
2735     [Define if your assembler supports .sleb128 and .uleb128.])])
2737 # Check if we have assembler support for unwind directives.
2738 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2739   ,,
2740 [       .text
2741         .cfi_startproc
2742         .cfi_offset 0, 0
2743         .cfi_same_value 1
2744         .cfi_def_cfa 1, 2
2745         .cfi_escape 1, 2, 3, 4, 5
2746         .cfi_endproc],
2747 [case "$target" in
2748   *-*-solaris*)
2749     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2750     # read-only and read-write sections, we need to make sure that the
2751     # assembler used emits read-write .eh_frame sections.
2752     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2753       if test "x$gcc_cv_objdump" != x; then
2754         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2755                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2756           gcc_cv_as_cfi_directive=no
2757         else
2758           case "$target" in
2759             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2760               # On Solaris/x86, make sure that GCC and assembler agree on using
2761               # read-only .eh_frame sections for 64-bit.
2762               if test x$gas = xyes; then
2763                  as_ix86_64_opt="--64"
2764               else
2765                  as_ix86_64_opt="-xarch=amd64"
2766               fi
2767               if $gcc_cv_as $as_ix86_64_opt -o conftest.o conftest.s > /dev/null 2>&1 && \
2768                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2769                         sed -e /.eh_frame/!d -e N | \
2770                         grep READONLY > /dev/null; then
2771                 gcc_cv_as_cfi_directive=yes
2772               else
2773                 gcc_cv_as_cfi_directive=no
2774               fi
2775               ;;
2776             *)
2777               gcc_cv_as_cfi_directive=yes
2778               ;;
2779           esac 
2780         fi
2781       else
2782         # no objdump, err on the side of caution
2783         gcc_cv_as_cfi_directive=no
2784       fi
2785     else
2786       gcc_cv_as_cfi_directive=yes
2787     fi
2788     ;;
2789   *-*-*)
2790     gcc_cv_as_cfi_directive=yes
2791     ;;
2792 esac])
2793 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2794 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2795   ,,
2796 [       .text
2797         .cfi_startproc
2798         .cfi_adjust_cfa_offset 64
2799         .skip 75040, 0
2800         .cfi_adjust_cfa_offset 128
2801         .cfi_endproc],
2803 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2804     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2805    gcc_cv_as_cfi_advance_working=yes
2808 else
2809   # no objdump, err on the side of caution
2810   gcc_cv_as_cfi_advance_working=no
2812 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2813 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2814   [`if test $gcc_cv_as_cfi_directive = yes \
2815        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2816   [Define 0/1 if your assembler supports CFI directives.])
2818 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2819 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2820   gcc_cv_as_cfi_personality_directive, ,,
2821 [       .text
2822         .cfi_startproc
2823         .cfi_personality 0, symbol
2824         .cfi_endproc])
2825 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2826   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2827     then echo 1; else echo 0; fi`],
2828   [Define 0/1 if your assembler supports .cfi_personality.])
2830 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2831   gcc_cv_as_cfi_sections_directive, ,,
2832 [       .text
2833         .cfi_sections .debug_frame, .eh_frame
2834         .cfi_startproc
2835         .cfi_endproc],
2836 [case $target_os in
2837   win32 | pe | cygwin* | mingw32*)
2838     # Need to check that we generated the correct relocation for the
2839     # .debug_frame section.  This was fixed for binutils 2.21.
2840     gcc_cv_as_cfi_sections_directive=no
2841     if test "x$gcc_cv_objdump" != x; then
2842      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2843         grep secrel > /dev/null; then
2844       gcc_cv_as_cfi_sections_directive=yes
2845      fi
2846     fi
2847     ;;
2848   *)
2849     gcc_cv_as_cfi_sections_directive=yes
2850     ;;
2851 esac])
2852 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2853 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2854   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2855     then echo 1; else echo 0; fi`],
2856   [Define 0/1 if your assembler supports .cfi_sections.])
2858 # GAS versions up to and including 2.11.0 may mis-optimize
2859 # .eh_frame data.
2860 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2861   [elf,2,12,0],,
2862 [       .text
2863 .LFB1:
2864         .4byte  0
2865 .L1:
2866         .4byte  0
2867 .LFE1:
2868         .section        .eh_frame,"aw",@progbits
2869 __FRAME_BEGIN__:
2870         .4byte  .LECIE1-.LSCIE1
2871 .LSCIE1:
2872         .4byte  0x0
2873         .byte   0x1
2874         .ascii "z\0"
2875         .byte   0x1
2876         .byte   0x78
2877         .byte   0x1a
2878         .byte   0x0
2879         .byte   0x4
2880         .4byte  1
2881         .p2align 1
2882 .LECIE1:
2883 .LSFDE1:
2884         .4byte  .LEFDE1-.LASFDE1
2885 .LASFDE1:
2886         .4byte  .LASFDE1-__FRAME_BEGIN__
2887         .4byte  .LFB1
2888         .4byte  .LFE1-.LFB1
2889         .byte   0x4
2890         .4byte  .LFE1-.LFB1
2891         .byte   0x4
2892         .4byte  .L1-.LFB1
2893 .LEFDE1:],
2894 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2895 cat > conftest.lit <<EOF
2896  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2897  0010 01000000 12000000 18000000 00000000  ................
2898  0020 08000000 04080000 0044               .........D      @&t@
2900 cat > conftest.big <<EOF
2901  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2902  0010 00000001 00000012 00000018 00000000  ................
2903  0020 00000008 04000000 0844               .........D      @&t@
2905   # If the assembler didn't choke, and we can objdump,
2906   # and we got the correct data, then succeed.
2907   # The text in the here-document typically retains its unix-style line
2908   # endings, while the output of objdump will use host line endings.
2909   # Therefore, use diff -b for the comparisons.
2910   if test x$gcc_cv_objdump != x \
2911   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2912      | tail -3 > conftest.got \
2913   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2914     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2915   then
2916     gcc_cv_as_eh_frame=yes
2917   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2918     gcc_cv_as_eh_frame=buggy
2919   else
2920     # Uh oh, what do we do now?
2921     gcc_cv_as_eh_frame=no
2922   fi])
2924 if test $gcc_cv_as_eh_frame = buggy; then
2925   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2926   [Define if your assembler mis-optimizes .eh_frame data.])
2929 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2930  [elf,2,12,0], [--fatal-warnings],
2931  [.section .rodata.str, "aMS", @progbits, 1])
2932 if test $gcc_cv_as_shf_merge = no; then
2933   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2934     [elf,2,12,0], [--fatal-warnings],
2935     [.section .rodata.str, "aMS", %progbits, 1])
2937 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2938   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2939 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2941 gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
2942 [.stabs "gcc2_compiled.",60,0,0,0],,
2943 [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
2944   [Define if your assembler supports .stabs.])])
2946 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2947  gcc_cv_as_comdat_group,
2948  [elf,2,16,0], [--fatal-warnings],
2949  [.section .text,"axG",@progbits,.foo,comdat])
2950 if test $gcc_cv_as_comdat_group = yes; then
2951   gcc_cv_as_comdat_group_percent=no
2952   gcc_cv_as_comdat_group_group=no
2953 else
2954  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2955    gcc_cv_as_comdat_group_percent,
2956    [elf,2,16,0], [--fatal-warnings],
2957    [.section .text,"axG",%progbits,.foo,comdat])
2958  if test $gcc_cv_as_comdat_group_percent = yes; then
2959    gcc_cv_as_comdat_group_group=no
2960  else
2961    case "${target}" in
2962      # Sun as uses a completely different syntax.
2963      *-*-solaris2*)
2964        case "${target}" in
2965          sparc*-*-solaris2*)
2966            conftest_s='
2967                .group foo,".text%foo",#comdat
2968                .section ".text%foo", #alloc,#execinstr,#progbits
2969                .globl foo
2970              foo:
2971              '
2972            ;;
2973          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2974            conftest_s='
2975                .group foo,.text%foo,#comdat
2976                .section .text%foo, "ax", @progbits
2977                .globl  foo
2978              foo:
2979              '
2980            ;;
2981        esac
2982        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2983          gcc_cv_as_comdat_group_group,
2984          ,, [$conftest_s])
2985        ;;
2986    esac
2987    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2988      gcc_cv_as_comdat_group_group=no
2989    fi
2990  fi
2992 if test x"$ld_is_gold" = xyes; then
2993   comdat_group=yes
2994 elif test $in_tree_ld = yes ; then
2995   comdat_group=no
2996   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 \
2997      && test $in_tree_ld_is_elf = yes; then
2998      comdat_group=yes
2999   fi
3000 elif echo "$ld_ver" | grep GNU > /dev/null; then
3001   comdat_group=yes
3002   if test 0"$ld_date" -lt 20050308; then
3003     if test -n "$ld_date"; then
3004       # If there was date string, but was earlier than 2005-03-08, fail
3005       comdat_group=no
3006     elif test "$ld_vers_major" -lt 2; then
3007       comdat_group=no
3008     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3009       comdat_group=no
3010     fi
3011   fi
3012 else
3013 changequote(,)dnl
3014   case "${target}" in
3015     *-*-solaris2.1[1-9]*)
3016       comdat_group=no
3017       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3018       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3019       # version 1.688.
3020       #
3021       # If using Sun as for COMDAT group as emitted by GCC, one needs at
3022       # least ld version 1.2267.
3023       if test "$ld_vers_major" -gt 1; then
3024         comdat_group=yes
3025       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3026         comdat_group=yes
3027       elif test "$ld_vers_minor" -ge 2267; then
3028         comdat_group=yes
3029       fi
3030       ;;
3031     *)
3032       # Assume linkers other than GNU ld don't support COMDAT group.
3033       comdat_group=no
3034       ;;
3035   esac
3036 changequote([,])dnl
3038 # Allow overriding the automatic COMDAT group tests above.
3039 AC_ARG_ENABLE(comdat,
3040   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3041   [comdat_group="$enable_comdat"])
3042 if test $comdat_group = no; then
3043   gcc_cv_as_comdat_group=no
3044   gcc_cv_as_comdat_group_percent=no
3045   gcc_cv_as_comdat_group_group=no
3047 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3048   [`if test $gcc_cv_as_comdat_group = yes \
3049     || test $gcc_cv_as_comdat_group_percent = yes \
3050     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3051 [Define 0/1 if your assembler and linker support COMDAT groups.])
3053 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3054  gcc_cv_as_discriminator,
3055  [2,19,51],,
3056 [       .text
3057         .file 1 "conf.c"
3058         .loc 1 1 0 discriminator 1],,
3059 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3060   [Define if your assembler supports the .loc discriminator sub-directive.])])
3062 # Thread-local storage - the check is heavily parameterized.
3063 conftest_s=
3064 tls_first_major=
3065 tls_first_minor=
3066 tls_as_opt=
3067 case "$target" in
3068 changequote(,)dnl
3069   alpha*-*-*)
3070     conftest_s='
3071         .section ".tdata","awT",@progbits
3072 foo:    .long   25
3073         .text
3074         ldq     $27,__tls_get_addr($29)         !literal!1
3075         lda     $16,foo($29)                    !tlsgd!1
3076         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
3077         ldq     $27,__tls_get_addr($29)         !literal!2
3078         lda     $16,foo($29)                    !tlsldm!2
3079         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
3080         ldq     $1,foo($29)                     !gotdtprel
3081         ldah    $2,foo($29)                     !dtprelhi
3082         lda     $3,foo($2)                      !dtprello
3083         lda     $4,foo($29)                     !dtprel
3084         ldq     $1,foo($29)                     !gottprel
3085         ldah    $2,foo($29)                     !tprelhi
3086         lda     $3,foo($2)                      !tprello
3087         lda     $4,foo($29)                     !tprel'
3088         tls_first_major=2
3089         tls_first_minor=13
3090         tls_as_opt=--fatal-warnings
3091         ;;
3092   arc*-*-*)
3093     conftest_s='
3094         add_s r0,r0, @foo@tpoff'
3095         tls_first_major=2
3096         tls_first_minor=23
3097         ;;
3098   cris-*-*|crisv32-*-*)
3099     conftest_s='
3100         .section ".tdata","awT",@progbits
3101 x:      .long   25
3102         .text
3103         move.d x:IE,$r10
3104         nop'
3105         tls_first_major=2
3106         tls_first_minor=20
3107         tls_as_opt=--fatal-warnings
3108         ;;
3109   frv*-*-*)
3110     conftest_s='
3111         .section ".tdata","awT",@progbits
3112 x:      .long   25
3113         .text
3114         call    #gettlsoff(x)'
3115         tls_first_major=2
3116         tls_first_minor=14
3117         ;;
3118   hppa*-*-linux*)
3119     conftest_s='
3120 t1:     .reg    %r20
3121 t2:     .reg    %r21
3122 gp:     .reg    %r19
3123         .section ".tdata","awT",@progbits
3124 foo:    .long   25
3125         .text
3126         .align  4
3127         addil LT%foo-$tls_gdidx$,gp
3128         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3129         b __tls_get_addr
3130         nop             
3131         addil LT%foo-$tls_ldidx$,gp
3132         b __tls_get_addr
3133         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3134         addil LR%foo-$tls_dtpoff$,%ret0
3135         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3136         mfctl %cr27,%t1                 
3137         addil LT%foo-$tls_ieoff$,gp
3138         ldw RT%foo-$tls_ieoff$(%r1),%t2
3139         add %t1,%t2,%t3                 
3140         mfctl %cr27,%t1                 
3141         addil LR%foo-$tls_leoff$,%t1
3142         ldo RR%foo-$tls_leoff$(%r1),%t2'
3143         tls_first_major=2
3144         tls_first_minor=15
3145         tls_as_opt=--fatal-warnings
3146         ;;
3147   arm*-*-*)
3148     conftest_s='
3149         .section ".tdata","awT",%progbits
3150 foo:    .long   25
3151         .text
3152 .word foo(gottpoff)
3153 .word foo(tpoff)
3154 .word foo(tlsgd)
3155 .word foo(tlsldm)
3156 .word foo(tlsldo)'
3157         tls_first_major=2
3158         tls_first_minor=17
3159         ;;
3160   i[34567]86-*-* | x86_64-*-*)
3161     case "$target" in
3162       i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3163         on_solaris=yes
3164         ;;
3165       *)
3166         on_solaris=no
3167         ;;
3168     esac
3169     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3170       conftest_s='
3171         .section .tdata,"awt",@progbits'
3172       tls_first_major=0
3173       tls_first_minor=0
3174       tls_section_flag=t
3175 changequote([,])dnl
3176       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3177 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3178 changequote(,)dnl
3179     else
3180       conftest_s='
3181         .section ".tdata","awT",@progbits'
3182       tls_first_major=2
3183       tls_first_minor=14
3184       tls_section_flag=T
3185       tls_as_opt="--fatal-warnings"
3186     fi
3187     case "$target" in
3188       i[34567]86-*-*)
3189         conftest_s="$conftest_s
3190 foo:    .long   25
3191         .text
3192         movl    %gs:0, %eax
3193         leal    foo@tlsgd(,%ebx,1), %eax
3194         leal    foo@tlsldm(%ebx), %eax
3195         leal    foo@dtpoff(%eax), %edx
3196         movl    foo@gottpoff(%ebx), %eax
3197         subl    foo@gottpoff(%ebx), %eax
3198         addl    foo@gotntpoff(%ebx), %eax
3199         movl    foo@indntpoff, %eax
3200         movl    \$foo@tpoff, %eax
3201         subl    \$foo@tpoff, %eax
3202         leal    foo@ntpoff(%ecx), %eax"
3203         ;;
3204       x86_64-*-*)
3205         if test x$on_solaris = xyes; then
3206           case $gas_flag in
3207             yes) tls_as_opt="$tls_as_opt --64" ;;
3208             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3209           esac    
3210         fi
3211         conftest_s="$conftest_s
3212 foo:    .long   25
3213         .text
3214         movq    %fs:0, %rax
3215         leaq    foo@tlsgd(%rip), %rdi
3216         leaq    foo@tlsld(%rip), %rdi
3217         leaq    foo@dtpoff(%rax), %rdx
3218         movq    foo@gottpoff(%rip), %rax
3219         movq    \$foo@tpoff, %rax"
3220         ;;
3221     esac
3222     ;;
3223   ia64-*-*)
3224     conftest_s='
3225         .section ".tdata","awT",@progbits
3226 foo:    data8   25
3227         .text
3228         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3229         addl    r17 = @ltoff(@dtprel(foo#)), gp
3230         addl    r18 = @ltoff(@tprel(foo#)), gp
3231         addl    r19 = @dtprel(foo#), gp
3232         adds    r21 = @dtprel(foo#), r13
3233         movl    r23 = @dtprel(foo#)
3234         addl    r20 = @tprel(foo#), gp
3235         adds    r22 = @tprel(foo#), r13
3236         movl    r24 = @tprel(foo#)'
3237         tls_first_major=2
3238         tls_first_minor=13
3239         tls_as_opt=--fatal-warnings
3240         ;;
3241   microblaze*-*-*)
3242     conftest_s='
3243         .section .tdata,"awT",@progbits
3245         .word 2
3246         .text
3247         addik r5,r20,x@TLSGD
3248         addik r5,r20,x@TLSLDM'
3249         tls_first_major=2
3250         tls_first_minor=20
3251         tls_as_opt='--fatal-warnings'
3252         ;;
3253   mips*-*-*)
3254     conftest_s='
3255         .section .tdata,"awT",@progbits
3257         .word 2
3258         .text
3259         addiu $4, $28, %tlsgd(x)
3260         addiu $4, $28, %tlsldm(x)
3261         lui $4, %dtprel_hi(x)
3262         addiu $4, $4, %dtprel_lo(x)
3263         lw $4, %gottprel(x)($28)
3264         lui $4, %tprel_hi(x)
3265         addiu $4, $4, %tprel_lo(x)'
3266         tls_first_major=2
3267         tls_first_minor=16
3268         tls_as_opt='-32 --fatal-warnings'
3269         ;;
3270   m68k-*-*)
3271     conftest_s='
3272         .section .tdata,"awT",@progbits
3274         .word 2
3275         .text
3276 foo:
3277         move.l x@TLSGD(%a5),%a0
3278         move.l x@TLSLDM(%a5),%a0
3279         move.l x@TLSLDO(%a5),%a0
3280         move.l x@TLSIE(%a5),%a0
3281         move.l x@TLSLE(%a5),%a0'
3282         tls_first_major=2
3283         tls_first_minor=19
3284         tls_as_opt='--fatal-warnings'
3285         ;;
3286   nios2-*-*)
3287       conftest_s='
3288         .section ".tdata","awT",@progbits'
3289         tls_first_major=2
3290         tls_first_minor=23
3291         tls_as_opt="--fatal-warnings"
3292         ;;
3293   aarch64*-*-*)
3294     conftest_s='
3295         .section ".tdata","awT",%progbits
3296 foo:    .long   25
3297         .text
3298         adrp  x0, :tlsgd:x
3299         add   x0, x0, #:tlsgd_lo12:x
3300         bl    __tls_get_addr
3301         nop'
3302         tls_first_major=2
3303         tls_first_minor=20
3304         tls_as_opt='--fatal-warnings'
3305         ;;
3306   powerpc-ibm-aix*)
3307     conftest_s='
3308         .extern __get_tpointer
3309         .toc
3310 LC..1:
3311         .tc a[TC],a[TL]@le
3312         .csect .text[PR]
3313 .tlstest:
3314         lwz 9,LC..1(2)
3315         bla __get_tpointer
3316         lwzx 3,9,3
3317         .globl a
3318         .csect a[TL],4
3320         .space 4'
3321         tls_first_major=0
3322         tls_first_minor=0
3323         ;;
3324   powerpc64*-*-*)
3325     conftest_s='
3326         .section ".tdata","awT",@progbits
3327         .align 3
3328 ld0:    .space 8
3329 ld1:    .space 8
3330 x1:     .space 8
3331 x2:     .space 8
3332 x3:     .space 8
3333         .text
3334         addi 3,2,ld0@got@tlsgd
3335         bl .__tls_get_addr
3336         nop
3337         addi 3,2,ld1@toc
3338         bl .__tls_get_addr
3339         nop
3340         addi 3,2,x1@got@tlsld
3341         bl .__tls_get_addr
3342         nop
3343         addi 9,3,x1@dtprel
3344         bl .__tls_get_addr
3345         nop
3346         addis 9,3,x2@dtprel@ha
3347         addi 9,9,x2@dtprel@l
3348         bl .__tls_get_addr
3349         nop
3350         ld 9,x3@got@dtprel(2)
3351         add 9,9,3
3352         bl .__tls_get_addr
3353         nop'
3354         tls_first_major=2
3355         tls_first_minor=14
3356         tls_as_opt="-a64 --fatal-warnings"
3357         ;;
3358   powerpc*-*-*)
3359     conftest_s='
3360         .section ".tdata","awT",@progbits
3361         .align 2
3362 ld0:    .space 4
3363 ld1:    .space 4
3364 x1:     .space 4
3365 x2:     .space 4
3366 x3:     .space 4
3367         .text
3368         addi 3,31,ld0@got@tlsgd
3369         bl __tls_get_addr
3370         addi 3,31,x1@got@tlsld
3371         bl __tls_get_addr
3372         addi 9,3,x1@dtprel
3373         addis 9,3,x2@dtprel@ha
3374         addi 9,9,x2@dtprel@l
3375         lwz 9,x3@got@tprel(31)
3376         add 9,9,x@tls
3377         addi 9,2,x1@tprel
3378         addis 9,2,x2@tprel@ha
3379         addi 9,9,x2@tprel@l'
3380         tls_first_major=2
3381         tls_first_minor=14
3382         tls_as_opt="-a32 --fatal-warnings"
3383         ;;
3384   riscv*-*-*)
3385     conftest_s='
3386         .section .tdata,"awT",@progbits
3387 x:      .word 2
3388         .text
3389         la.tls.gd a0,x
3390         call __tls_get_addr'
3391         tls_first_major=2
3392         tls_first_minor=21
3393         tls_as_opt='--fatal-warnings'
3394         ;;
3395   s390-*-*)
3396     conftest_s='
3397         .section ".tdata","awT",@progbits
3398 foo:    .long   25
3399         .text
3400         .long   foo@TLSGD
3401         .long   foo@TLSLDM
3402         .long   foo@DTPOFF
3403         .long   foo@NTPOFF
3404         .long   foo@GOTNTPOFF
3405         .long   foo@INDNTPOFF
3406         l       %r1,foo@GOTNTPOFF(%r12)
3407         l       %r1,0(%r1):tls_load:foo
3408         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3409         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3410         tls_first_major=2
3411         tls_first_minor=14
3412         tls_as_opt="-m31 --fatal-warnings"
3413         ;;
3414   s390x-*-*)
3415     conftest_s='
3416         .section ".tdata","awT",@progbits
3417 foo:    .long   25
3418         .text
3419         .quad   foo@TLSGD
3420         .quad   foo@TLSLDM
3421         .quad   foo@DTPOFF
3422         .quad   foo@NTPOFF
3423         .quad   foo@GOTNTPOFF
3424         lg      %r1,foo@GOTNTPOFF(%r12)
3425         larl    %r1,foo@INDNTPOFF
3426         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3427         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3428         tls_first_major=2
3429         tls_first_minor=14
3430         tls_as_opt="-m64 -Aesame --fatal-warnings"
3431         ;;
3432   sh-*-* | sh[123456789lbe]*-*-*)
3433     conftest_s='
3434         .section ".tdata","awT",@progbits
3435 foo:    .long   25
3436         .text
3437         .long   foo@TLSGD
3438         .long   foo@TLSLDM
3439         .long   foo@DTPOFF
3440         .long   foo@GOTTPOFF
3441         .long   foo@TPOFF'
3442         tls_first_major=2
3443         tls_first_minor=13
3444         tls_as_opt=--fatal-warnings
3445         ;;
3446   sparc*-*-*)
3447     case "$target" in
3448       sparc*-sun-solaris2.*)
3449         on_solaris=yes
3450         ;;
3451       *)
3452         on_solaris=no
3453         ;;
3454     esac
3455     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3456       conftest_s='
3457         .section ".tdata",#alloc,#write,#tls'
3458         tls_first_major=0
3459         tls_first_minor=0
3460     else
3461       conftest_s='
3462         .section ".tdata","awT",@progbits'
3463         tls_first_major=2
3464         tls_first_minor=14
3465         tls_as_opt="-32 --fatal-warnings"
3466     fi
3467     conftest_s="$conftest_s
3468 foo:    .long   25
3469         .text
3470         sethi   %tgd_hi22(foo), %o0
3471         add     %o0, %tgd_lo10(foo), %o1
3472         add     %l7, %o1, %o0, %tgd_add(foo)
3473         call    __tls_get_addr, %tgd_call(foo)
3474         sethi   %tldm_hi22(foo), %l1
3475         add     %l1, %tldm_lo10(foo), %l2
3476         add     %l7, %l2, %o0, %tldm_add(foo)
3477         call    __tls_get_addr, %tldm_call(foo)
3478         sethi   %tldo_hix22(foo), %l3
3479         xor     %l3, %tldo_lox10(foo), %l4
3480         add     %o0, %l4, %l5, %tldo_add(foo)
3481         sethi   %tie_hi22(foo), %o3
3482         add     %o3, %tie_lo10(foo), %o3
3483         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3484         add     %g7, %o2, %o4, %tie_add(foo)
3485         sethi   %tle_hix22(foo), %l1
3486         xor     %l1, %tle_lox10(foo), %o5
3487         ld      [%g7 + %o5], %o1"
3488         ;;
3489   tilepro*-*-*)
3490       conftest_s='
3491         .section ".tdata","awT",@progbits
3492 foo:    .long   25
3493         .text
3494         addli   r0, zero, tls_gd(foo)
3495         auli    r0, zero, tls_gd_ha16(foo)
3496         addli   r0, r0, tls_gd_lo16(foo)
3497         jal     __tls_get_addr
3498         addli   r0, zero, tls_ie(foo)
3499         auli    r0, r0, tls_ie_ha16(foo)
3500         addli   r0, r0, tls_ie_lo16(foo)'
3501         tls_first_major=2
3502         tls_first_minor=22
3503         tls_as_opt="--fatal-warnings"
3504         ;;
3505   tilegx*-*-*)
3506       conftest_s='
3507         .section ".tdata","awT",@progbits
3508 foo:    .long   25
3509         .text
3510         shl16insli r0, zero, hw0_last_tls_gd(foo)
3511         shl16insli r0, zero, hw1_last_tls_gd(foo)
3512         shl16insli r0, r0,   hw0_tls_gd(foo)
3513         jal        __tls_get_addr
3514         shl16insli r0, zero, hw1_last_tls_ie(foo)
3515         shl16insli r0, r0,   hw0_tls_ie(foo)'
3516         tls_first_major=2
3517         tls_first_minor=22
3518         tls_as_opt="--fatal-warnings"
3519         ;;
3520   xtensa*-*-*)
3521     conftest_s='
3522         .section ".tdata","awT",@progbits
3523 foo:    .long   25
3524         .text
3525         movi    a8, foo@TLSFUNC
3526         movi    a10, foo@TLSARG
3527         callx8.tls a8, foo@TLSCALL'
3528         tls_first_major=2
3529         tls_first_minor=19
3530         ;;
3531 changequote([,])dnl
3532 esac
3533 set_have_as_tls=no
3534 if test "x$enable_tls" = xno ; then
3535   : # TLS explicitly disabled.
3536 elif test "x$enable_tls" = xyes ; then
3537   set_have_as_tls=yes # TLS explicitly enabled.
3538 elif test -z "$tls_first_major"; then
3539   : # If we don't have a check, assume no support.
3540 else
3541   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3542   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3543   [set_have_as_tls=yes])
3545 if test $set_have_as_tls = yes ; then
3546   AC_DEFINE(HAVE_AS_TLS, 1,
3547             [Define if your assembler and linker support thread-local storage.])
3550 # Target-specific assembler checks.
3552 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3553 gcc_cv_ld_static_dynamic=no
3554 gcc_cv_ld_static_option='-Bstatic'
3555 gcc_cv_ld_dynamic_option='-Bdynamic'
3556 if test $in_tree_ld = yes ; then
3557   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
3558     gcc_cv_ld_static_dynamic=yes
3559   fi
3560 elif test x$gcc_cv_ld != x; then
3561   # Check if linker supports -Bstatic/-Bdynamic option
3562   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3563      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3564       gcc_cv_ld_static_dynamic=yes
3565   else
3566     case "$target" in
3567       # AIX ld uses -b flags
3568       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3569         gcc_cv_ld_static_dynamic=yes
3570         gcc_cv_ld_static_option="-bstatic"
3571         gcc_cv_ld_dynamic_option="-bdynamic"
3572         ;;
3573       # HP-UX ld uses -a flags to select between shared and archive.
3574       *-*-hpux*)
3575         if test x"$gnu_ld" = xno; then
3576           gcc_cv_ld_static_dynamic=yes
3577           gcc_cv_ld_static_option="-aarchive_shared"
3578           gcc_cv_ld_dynamic_option="-adefault"
3579         fi
3580         ;;
3581       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3582       *-*-solaris2*)
3583         gcc_cv_ld_static_dynamic=yes
3584         ;;
3585     esac
3586   fi
3588 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3589         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3590 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3591         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3592 [Define to the linker option to disable use of shared objects.])
3593         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3594 [Define to the linker option to enable use of shared objects.])
3596 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3598 if test x"$demangler_in_ld" = xyes; then
3599   AC_MSG_CHECKING(linker --demangle support)
3600   gcc_cv_ld_demangle=no
3601   if test $in_tree_ld = yes; then
3602     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 \
3603       gcc_cv_ld_demangle=yes
3604     fi
3605   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3606     # Check if the GNU linker supports --demangle option
3607     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3608       gcc_cv_ld_demangle=yes
3609     fi
3610   fi
3611   if test x"$gcc_cv_ld_demangle" = xyes; then
3612     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3613 [Define if your linker supports --demangle option.])
3614   fi
3615   AC_MSG_RESULT($gcc_cv_ld_demangle)
3618 AC_MSG_CHECKING(linker plugin support)
3619 gcc_cv_lto_plugin=0
3620 if test -f liblto_plugin.la; then
3621   save_ld_ver="$ld_ver"
3622   save_ld_vers_major="$ld_vers_major"
3623   save_ld_vers_minor="$ld_vers_minor"
3624   save_ld_is_gold="$ld_is_gold"
3626   ld_is_gold=no
3628   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3629     ld_ver="GNU ld"
3630     # FIXME: ld_is_gold?
3631     ld_vers_major="$gcc_cv_gld_major_version"
3632     ld_vers_minor="$gcc_cv_gld_minor_version"
3633   else
3634     # Determine plugin linker version.
3635     # FIXME: Partial duplicate from above, generalize.
3636 changequote(,)dnl
3637     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3638     if echo "$ld_ver" | grep GNU > /dev/null; then
3639       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3640         ld_is_gold=yes
3641         ld_vers=`echo $ld_ver | sed -n \
3642             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3643       else
3644         ld_vers=`echo $ld_ver | sed -n \
3645             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3646       fi
3647       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3648       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3649     fi
3650 changequote([,])dnl
3651   fi
3653   # Determine plugin support.
3654   if echo "$ld_ver" | grep GNU > /dev/null; then
3655     # Require GNU ld or gold 2.21+ for plugin support by default.
3656     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3657       gcc_cv_lto_plugin=2
3658     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3659     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3660       gcc_cv_lto_plugin=1
3661     fi
3662   fi
3664   ld_ver="$save_ld_ver"
3665   ld_vers_major="$save_ld_vers_major"
3666   ld_vers_minor="$save_ld_vers_minor"
3667   ld_is_gold="$save_ld_is_gold"
3669 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3670   [Define to the level of your linker's plugin support.])
3671 AC_MSG_RESULT($gcc_cv_lto_plugin)
3673 # Target OS-specific assembler checks.
3675 case "$target_os" in
3676   darwin*)
3677     gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
3678       gcc_cv_as_mmacosx_version_min,,
3679       [-mmacosx-version-min=10.1], [.text],,
3680       [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
3681         [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
3682     ;;
3683 esac
3685 # Target CPU-specific assembler checks.
3687 case "$target" in
3688   aarch64*-*-*)
3689     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3690                           [-mabi=lp64], [.text],,,)
3691     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3692       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3693                 [Define if your assembler supports the -mabi option.])
3694     else
3695       if test x$with_abi = xilp32; then
3696         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3697                      Upgrade the Assembler.])
3698       fi
3699       if test x"$with_multilib_list" = xdefault; then
3700         TM_MULTILIB_CONFIG=lp64
3701       else
3702         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3703         for aarch64_multilib in ${aarch64_multilibs}; do
3704           case ${aarch64_multilib} in
3705             ilp32)
3706               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3707                             Upgrade the Assembler.])
3708               ;;
3709             *)
3710               ;;
3711           esac
3712         done
3713       fi
3714     fi
3715     # Check if we have binutils support for relocations types needed by -fpic
3716     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
3717     [
3718         .text
3719         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
3720     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
3721         [Define if your assembler supports relocs needed by -fpic.])])
3722     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
3723     AC_ARG_ENABLE(fix-cortex-a53-835769,
3724     [
3725 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
3726         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3727 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
3728         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3729     ],
3730       [
3731         case $enableval in
3732           yes)
3733             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
3734             ;;
3735           no)
3736             ;;
3737           *)
3738             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
3739   Valid choices are 'yes' and 'no'.])
3740             ;;
3742         esac
3743       ],
3744     [])
3745     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
3746     AC_ARG_ENABLE(fix-cortex-a53-843419,
3747     [
3748 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
3749         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3750 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
3751         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3752     ],
3753       [
3754         case $enableval in
3755           yes)
3756             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
3757             ;;
3758           no)
3759             ;;
3760           *)
3761             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
3762   Valid choices are 'yes' and 'no'.])
3763             ;;
3765         esac
3766       ],
3767     [])
3768     ;;
3770   # All TARGET_ABI_OSF targets.
3771   alpha*-*-linux* | alpha*-*-*bsd*)
3772     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3773         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3774 [       .set nomacro
3775         .text
3776         extbl   $3, $2, $3      !lituse_bytoff!1
3777         ldq     $2, a($29)      !literal!1
3778         ldq     $4, b($29)      !literal!2
3779         ldq_u   $3, 0($2)       !lituse_base!1
3780         ldq     $27, f($29)     !literal!5
3781         jsr     $26, ($27), f   !lituse_jsr!5
3782         ldah    $29, 0($26)     !gpdisp!3
3783         lda     $0, c($29)      !gprel
3784         ldah    $1, d($29)      !gprelhigh
3785         lda     $1, d($1)       !gprellow
3786         lda     $29, 0($29)     !gpdisp!3],,
3787     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3788   [Define if your assembler supports explicit relocations.])])
3789     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3790         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3791 [       .set nomacro
3792         .text
3793         ldq     $27, a($29)     !literal!1
3794         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3795     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3796   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3797     ;;
3799   avr-*-*)
3800     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
3801       [--mlink-relax], [.text],,
3802       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
3803                 [Define if your avr assembler supports --mlink-relax option.])])
3805     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
3806       [-mrmw], [.text],,
3807       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
3808                 [Define if your avr assembler supports -mrmw option.])])
3809     ;;
3811   cris-*-*)
3812     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3813       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3814       [-no-mul-bug-abort], [.text],,
3815       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3816                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3817     ;;
3819   sparc*-*-*)
3820     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3821       [.register %g2, #scratch],,
3822       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3823                 [Define if your assembler supports .register.])])
3825     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3826       [-relax], [.text],,
3827       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3828                 [Define if your assembler supports -relax option.])])
3830     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3831       gcc_cv_as_sparc_gotdata_op,,
3832       [-K PIC],
3833 [.text
3834 .align 4
3835 foo:
3836         nop
3837 bar:
3838         sethi %gdop_hix22(foo), %g1
3839         xor    %g1, %gdop_lox10(foo), %g1
3840         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3841       [if test x$gcc_cv_ld != x \
3842        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3843          if test x$gcc_cv_objdump != x; then
3844            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3845               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3846                gcc_cv_as_sparc_gotdata_op=no
3847            else
3848                gcc_cv_as_sparc_gotdata_op=yes
3849            fi
3850          fi
3851        fi
3852        rm -f conftest],
3853       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3854                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3856     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3857       gcc_cv_as_sparc_ua_pcrel,,
3858       [-K PIC],
3859 [.text
3860 foo:
3861         nop
3862 .data
3863 .align 4
3864 .byte 0
3865 .uaword %r_disp32(foo)],
3866       [if test x$gcc_cv_ld != x \
3867        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3868          gcc_cv_as_sparc_ua_pcrel=yes
3869        fi
3870        rm -f conftest],
3871       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3872                 [Define if your assembler and linker support unaligned PC relative relocs.])
3874       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3875         gcc_cv_as_sparc_ua_pcrel_hidden,,
3876         [-K PIC],
3877 [.data
3878 .align 4
3879 .byte 0x31
3880 .uaword %r_disp32(foo)
3881 .byte 0x32, 0x33, 0x34
3882 .global foo
3883 .hidden foo
3884 foo:
3885 .skip 4],
3886         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3887          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3888          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3889             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3890             if $gcc_cv_objdump -R conftest 2> /dev/null \
3891                | grep 'DISP32' > /dev/null 2>&1; then
3892                 :
3893             else
3894                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3895             fi
3896          fi
3897          rm -f conftest],
3898          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3899                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3900     ]) # unaligned pcrel relocs
3902     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3903       gcc_cv_as_sparc_offsetable_lo10,,
3904       [-xarch=v9],
3905 [.text
3906         or %g1, %lo(ab) + 12, %g1
3907         or %g1, %lo(ab + 12), %g1],
3908       [if test x$gcc_cv_objdump != x \
3909        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3910           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3911          gcc_cv_as_sparc_offsetable_lo10=yes
3912        fi],
3913        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3914                  [Define if your assembler supports offsetable %lo().])])
3916     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3917       gcc_cv_as_sparc_fmaf,,
3918       [-xarch=v9d],
3919       [.text
3920        .register %g2, #scratch
3921        .register %g3, #scratch
3922        .align 4
3923        fmaddd %f0, %f2, %f4, %f6
3924        addxccc %g1, %g2, %g3
3925        fsrl32 %f2, %f4, %f8
3926        fnaddd %f10, %f12, %f14],,
3927       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3928                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3930     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3931       gcc_cv_as_sparc_sparc4,,
3932       [-xarch=sparc4],
3933       [.text
3934        .register %g2, #scratch
3935        .register %g3, #scratch
3936        .align 4
3937        cxbe %g2, %g3, 1f
3938 1:     cwbneg %g2, %g3, 1f
3939 1:     sha1
3940        md5
3941        aes_kexpand0 %f4, %f6, %f8
3942        des_round %f38, %f40, %f42, %f44
3943        camellia_f %f54, %f56, %f58, %f60
3944        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3945       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3946                 [Define if your assembler supports SPARC4 instructions.])])
3948     gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
3949       gcc_cv_as_sparc_sparc5,,
3950       [-xarch=sparc5],
3951       [.text
3952        .register %g2, #scratch
3953        .register %g3, #scratch
3954        .align 4
3955        subxc %g1, %g2, %g3
3956        fpadd8 %f0, %f2, %f4],,
3957       [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
3958                 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
3960     gcc_GAS_CHECK_FEATURE([LEON instructions],
3961       gcc_cv_as_sparc_leon,,
3962       [-Aleon],
3963       [.text
3964        .register %g2, #scratch
3965        .register %g3, #scratch
3966        .align 4
3967        smac %g2, %g3, %g1
3968        umac %g2, %g3, %g1
3969        casa [[%g2]] 0xb, %g3, %g1],,
3970       [AC_DEFINE(HAVE_AS_LEON, 1,
3971                 [Define if your assembler supports LEON instructions.])])
3972     ;;
3974 changequote(,)dnl
3975   i[34567]86-*-* | x86_64-*-*)
3976 changequote([,])dnl
3977     case $target_os in
3978       cygwin*)
3979         # Full C++ conformance when using a shared libstdc++-v3 requires some
3980         # support from the Cygwin DLL, which in more recent versions exports
3981         # wrappers to aid in interposing and redirecting operators new, delete,
3982         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3983         # are configuring for a version of Cygwin that exports the wrappers.
3984         if test x$host = x$target && test x$host_cpu = xi686; then
3985           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3986         else
3987           # Can't check presence of libc functions during cross-compile, so
3988           # we just have to assume we're building for an up-to-date target.
3989           gcc_ac_cygwin_dll_wrappers=yes
3990         fi
3991         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3992           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3993           [Define if you want to generate code by default that assumes that the
3994            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3995     esac
3996     case $target_os in
3997       cygwin* | pe | mingw32*)
3998         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3999         # definition is used unconditionally to initialise the default state of
4000         # the target option variable that governs usage of the feature.
4001         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
4002          [2,19,52],,[.comm foo,1,32])
4003         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4004           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4005           [Define if your assembler supports specifying the alignment
4006            of objects allocated using the GAS .comm command.])
4007         # Used for DWARF 2 in PE
4008         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4009           gcc_cv_as_ix86_pe_secrel32,
4010           [2,15,91],,
4011 [.text
4012 foo:    nop
4013 .data
4014         .secrel32 foo],
4015           [if test x$gcc_cv_ld != x \
4016            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4017              gcc_cv_as_ix86_pe_secrel32=yes
4018            fi
4019            rm -f conftest],
4020           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4021             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4022         # Test if the assembler supports the extended form of the .section
4023         # directive that specifies section alignment.  LTO support uses this,
4024         # but normally only after installation, so we warn but don't fail the
4025         # configure if LTO is enabled but the assembler does not support it.
4026         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4027           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
4028         if test x$gcc_cv_as_section_has_align != xyes; then
4029           case ",$enable_languages," in
4030             *,lto,*)
4031               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4032               ;;
4033           esac
4034         fi
4035         ;;
4036     esac
4038     # Test if the assembler supports the section flag 'e' for specifying
4039     # an excluded section.
4040     gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
4041       [2,22,51], [--fatal-warnings],
4042 [.section foo1,"e"
4043 .byte 0,0,0,0])
4044     AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
4045       [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
4046       [Define if your assembler supports specifying the section flag e.])
4048     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4049        gcc_cv_as_ix86_filds,,,
4050        [filds (%ebp); fists (%ebp)],,
4051        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4052          [Define if your assembler uses filds and fists mnemonics.])])
4054     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4055        gcc_cv_as_ix86_fildq,,,
4056        [fildq (%ebp); fistpq (%ebp)],,
4057        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4058          [Define if your assembler uses fildq and fistq mnemonics.])])
4060     gcc_GAS_CHECK_FEATURE([cmov syntax],
4061       gcc_cv_as_ix86_cmov_sun_syntax,,,
4062       [cmovl.l %edx, %eax],,
4063       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4064         [Define if your assembler supports the Sun syntax for cmov.])])
4066     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4067       gcc_cv_as_ix86_ffreep,,,
4068       [ffreep %st(1)],,
4069       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4070         [Define if your assembler supports the ffreep mnemonic.])])
4072     gcc_GAS_CHECK_FEATURE([.quad directive],
4073       gcc_cv_as_ix86_quad,,,
4074       [.quad 0],,
4075       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4076         [Define if your assembler supports the .quad directive.])])
4078     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4079       gcc_cv_as_ix86_sahf,,,
4080       [.code64
4081        sahf],,
4082       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4083         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4085     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4086       gcc_cv_as_ix86_interunit_movq,,,
4087       [.code64
4088        movq %mm0, %rax
4089        movq %rax, %xmm0])
4090     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4091       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4092       [Define if your assembler supports interunit movq mnemonic.])
4094     gcc_GAS_CHECK_FEATURE([hle prefixes],
4095       gcc_cv_as_ix86_hle,,,
4096       [lock xacquire cmpxchg %esi, (%ecx)],,
4097       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4098         [Define if your assembler supports HLE prefixes.])])
4100     gcc_GAS_CHECK_FEATURE([swap suffix],
4101       gcc_cv_as_ix86_swap,,,
4102       [movl.s %esp, %ebp],,
4103       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4104         [Define if your assembler supports the swap suffix.])])
4106     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4107       gcc_cv_as_ix86_diff_sect_delta,,,
4108       [.section .rodata
4109 .L1:
4110         .long .L2-.L1
4111         .long .L3-.L1
4112         .text
4113 .L3:    nop
4114 .L2:    nop],,
4115       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4116         [Define if your assembler supports the subtraction of symbols in different sections.])])
4118     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4119         gcc_cv_as_ix86_rep_lock_prefix,,,
4120         [rep movsl
4121          rep ret
4122          rep nop
4123          rep bsf %ecx, %eax
4124          rep bsr %ecx, %eax
4125          lock addl %edi, (%eax,%esi)
4126          lock orl $0, (%esp)],,
4127         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4128           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4130     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4131         gcc_cv_as_ix86_ud2,,,
4132         [ud2],,
4133       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4134         [Define if your assembler supports the 'ud2' mnemonic.])])
4136     # Enforce 32-bit output with gas and gld.
4137     if test x$gas = xyes; then
4138       as_ix86_gas_32_opt="--32"
4139     fi
4140     if echo "$ld_ver" | grep GNU > /dev/null; then
4141       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4142         ld_ix86_gld_32_opt="-melf_i386_sol2"
4143       else
4144         ld_ix86_gld_32_opt="-melf_i386"
4145       fi
4146     fi
4148     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4149         gcc_cv_as_ix86_tlsgdplt,,
4150         [$as_ix86_gas_32_opt],
4151         [call    tls_gd@tlsgdplt],
4152         [if test x$gcc_cv_ld != x \
4153          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4154            gcc_cv_as_ix86_tlsgdplt=yes
4155          fi
4156          rm -f conftest],
4157       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4158         [Define if your assembler and linker support @tlsgdplt.])])
4160     conftest_s='
4161         .section .tdata,"aw'$tls_section_flag'",@progbits
4162 tls_ld:
4163         .section .text,"ax",@progbits
4164          call    tls_ld@tlsldmplt'
4166     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4167         gcc_cv_as_ix86_tlsldmplt,,
4168         [$as_ix86_gas_32_opt],
4169         [$conftest_s],
4170         [if test x$gcc_cv_ld != x \
4171          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4172            gcc_cv_as_ix86_tlsldmplt=yes
4173          fi
4174          rm -f conftest])
4175     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4176       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4177       [Define to 1 if your assembler and linker support @tlsldmplt.])
4179     conftest_s='
4180         .section .text,"ax",@progbits
4181         .globl  _start
4182         .type   _start, @function
4183 _start:      
4184         leal    value@tlsldm(%ebx), %eax
4185         call    ___tls_get_addr@plt
4187         .section .tdata,"aw'$tls_section_flag'",@progbits
4188         .type   value, @object
4189 value:'
4190     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4191         gcc_cv_as_ix86_tlsldm,,
4192         [$as_ix86_gas_32_opt],
4193         [$conftest_s],
4194         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4195             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4196            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4197               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4198              gcc_cv_as_ix86_tlsldm=yes
4199            fi
4200          fi
4201          rm -f conftest])
4202     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4203       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4204       [Define to 1 if your assembler and linker support @tlsldm.])
4206     conftest_s='
4207         .data
4208 bar:
4209         .byte 1
4210         .text
4211         .global _start
4212 _start:
4213          cmpl $0, bar@GOT
4214          jmp *_start@GOT'
4215     gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4216         gcc_cv_as_ix86_got32x,,
4217         [$as_ix86_gas_32_opt],
4218         [$conftest_s],
4219         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4220             && test x$gcc_cv_readelf != x \
4221             && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4222                | grep R_386_GOT32X > /dev/null 2>&1 \
4223             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4224            if $gcc_cv_objdump -dw conftest 2>&1 \
4225               | grep 0xffffff > /dev/null 2>&1; then
4226              gcc_cv_as_ix86_got32x=no
4227            else
4228              gcc_cv_as_ix86_got32x=yes
4229            fi
4230          fi
4231          rm -f conftest])
4232     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4233       [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4234       [Define 0/1 if your assembler and linker support @GOT.])
4236     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4237       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4238       [$as_ix86_gas_32_opt],
4239 [       .text
4240 .L0:
4241         nop
4242         .data
4243         .long .L0@GOTOFF])
4244     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4245       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4246       [Define true if the assembler supports '.long foo@GOTOFF'.])
4248     conftest_s='
4249         .section .text,"ax",@progbits
4250         .globl  _start
4251         .type   _start, @function
4252 _start:
4253         leal    ld@tlsldm(%ecx), %eax
4254         call    *___tls_get_addr@GOT(%ecx)
4255         leal    gd@tlsgd(%ecx), %eax
4256         call    *___tls_get_addr@GOT(%ecx)
4258         .section .tdata,"aw'$tls_section_flag'",@progbits
4259         .type   ld, @object
4261         .byte 0
4262         .globl  gd
4263         .type   gd, @object
4265         .byte 0'
4266     gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4267         gcc_cv_as_ix86_tls_get_addr_via_got,,
4268         [$as_ix86_gas_32_opt],
4269         [$conftest_s],
4270         [if test x$gcc_cv_ld != x \
4271             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4272            gcc_cv_as_ix86_tls_get_addr_via_got=yes
4273          fi
4274          rm -f conftest])
4275     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4276       [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4277       [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4278     ;;
4280   ia64*-*-*)
4281     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4282         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4283 [       .text
4284         addl r15 = @ltoffx(x#), gp
4285         ;;
4286         ld8.mov r16 = [[r15]], x#],,
4287     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4288           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4290     ;;
4292   powerpc*-*-*)
4294     case $target in
4295       *-*-darwin*)
4296         gcc_GAS_CHECK_FEATURE([.machine directive support],
4297           gcc_cv_as_machine_directive,,,
4298           [     .machine ppc7400])
4299         if test x$gcc_cv_as_machine_directive != xyes; then
4300           echo "*** This target requires an assembler supporting \".machine\"" >&2
4301           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4302           test x$build = x$target && exit 1
4303         fi
4304         ;;
4305     esac
4307     case $target in
4308       *-*-aix*) conftest_s='    .machine "pwr5"
4309         .csect .text[[PR]]
4310         mfcr 3,128';;
4311       *-*-darwin*) conftest_s=' .text
4312         mfcr r3,128';;
4313       *) conftest_s='   .machine power4
4314         .text
4315         mfcr 3,128';;
4316     esac
4318     gcc_GAS_CHECK_FEATURE([mfcr field support],
4319       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4320       [$conftest_s],,
4321       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4322           [Define if your assembler supports mfcr field.])])
4324     case $target in
4325       *-*-aix*) conftest_s='    .machine "pwr5"
4326         .csect .text[[PR]]
4327         popcntb 3,3';;
4328       *) conftest_s='   .machine power5
4329         .text
4330         popcntb 3,3';;
4331     esac
4333     gcc_GAS_CHECK_FEATURE([popcntb support],
4334       gcc_cv_as_powerpc_popcntb, [2,17,0],,
4335       [$conftest_s],,
4336       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4337           [Define if your assembler supports popcntb field.])])
4339     case $target in
4340       *-*-aix*) conftest_s='    .machine "pwr5x"
4341         .csect .text[[PR]]
4342         frin 1,1';;
4343       *) conftest_s='   .machine power5
4344         .text
4345         frin 1,1';;
4346     esac
4348     gcc_GAS_CHECK_FEATURE([fp round support],
4349       gcc_cv_as_powerpc_fprnd, [2,17,0],,
4350       [$conftest_s],,
4351       [AC_DEFINE(HAVE_AS_FPRND, 1,
4352           [Define if your assembler supports fprnd.])])
4354     case $target in
4355       *-*-aix*) conftest_s='    .machine "pwr6"
4356         .csect .text[[PR]]
4357         mffgpr 1,3';;
4358       *) conftest_s='   .machine power6
4359         .text
4360         mffgpr 1,3';;
4361     esac
4363     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4364       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4365       [$conftest_s],,
4366       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4367           [Define if your assembler supports mffgpr and mftgpr.])])
4369     case $target in
4370       *-*-aix*) conftest_s='    .csect .text[[PR]]
4371 LCF..0:
4372         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4373       *-*-darwin*)
4374         conftest_s='    .text
4375 LCF0:
4376         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4377       *) conftest_s='   .text
4378 .LCF0:
4379         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4380     esac
4382     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4383       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4384       [$conftest_s],,
4385       [AC_DEFINE(HAVE_AS_REL16, 1,
4386           [Define if your assembler supports R_PPC_REL16 relocs.])])
4388     case $target in
4389       *-*-aix*) conftest_s='    .machine "pwr6"
4390         .csect .text[[PR]]
4391         cmpb 3,4,5';;
4392       *) conftest_s='   .machine power6
4393         .text
4394         cmpb 3,4,5';;
4395     esac
4397     gcc_GAS_CHECK_FEATURE([compare bytes support],
4398       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4399       [$conftest_s],,
4400       [AC_DEFINE(HAVE_AS_CMPB, 1,
4401           [Define if your assembler supports cmpb.])])
4403     case $target in
4404       *-*-aix*) conftest_s='    .machine "pwr6"
4405         .csect .text[[PR]]
4406         dadd 1,2,3';;
4407       *) conftest_s='   .machine power6
4408         .text
4409         dadd 1,2,3';;
4410     esac
4412     gcc_GAS_CHECK_FEATURE([decimal float support],
4413       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4414       [$conftest_s],,
4415       [AC_DEFINE(HAVE_AS_DFP, 1,
4416           [Define if your assembler supports DFP instructions.])])
4418     case $target in
4419       *-*-aix*) conftest_s='    .machine "pwr7"
4420         .csect .text[[PR]]
4421         lxvd2x 1,2,3';;
4422       *) conftest_s='   .machine power7
4423         .text
4424         lxvd2x 1,2,3';;
4425     esac
4427     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4428       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4429       [$conftest_s],,
4430       [AC_DEFINE(HAVE_AS_VSX, 1,
4431           [Define if your assembler supports VSX instructions.])])
4433     case $target in
4434       *-*-aix*) conftest_s='    .machine "pwr7"
4435         .csect .text[[PR]]
4436         popcntd 3,3';;
4437       *) conftest_s='   .machine power7
4438         .text
4439         popcntd 3,3';;
4440     esac
4442     gcc_GAS_CHECK_FEATURE([popcntd support],
4443       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4444       [$conftest_s],,
4445       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4446           [Define if your assembler supports POPCNTD instructions.])])
4448     case $target in
4449       *-*-aix*) conftest_s='    .machine "pwr8"
4450         .csect .text[[PR]]';;
4451       *) conftest_s='   .machine power8
4452         .text';;
4453     esac
4455     gcc_GAS_CHECK_FEATURE([power8 support],
4456       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4457       [$conftest_s],,
4458       [AC_DEFINE(HAVE_AS_POWER8, 1,
4459           [Define if your assembler supports POWER8 instructions.])])
4461     case $target in
4462       *-*-aix*) conftest_s='    .machine "pwr9"
4463         .csect .text[[PR]]';;
4464       *) conftest_s='   .machine power9
4465         .text';;
4466     esac
4468     gcc_GAS_CHECK_FEATURE([power9 support],
4469       gcc_cv_as_powerpc_power9, [2,19,2], -a32,
4470       [$conftest_s],,
4471       [AC_DEFINE(HAVE_AS_POWER9, 1,
4472           [Define if your assembler supports POWER9 instructions.])])
4474     case $target in
4475       *-*-aix*) conftest_s='    .csect .text[[PR]]
4476         lwsync';;
4477       *) conftest_s='   .text
4478         lwsync';;
4479     esac
4481     gcc_GAS_CHECK_FEATURE([lwsync support],
4482       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4483       [$conftest_s],,
4484       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4485           [Define if your assembler supports LWSYNC instructions.])])
4487     case $target in
4488       *-*-aix*) conftest_s='    .machine "476"
4489         .csect .text[[PR]]
4490         dci 0';;
4491       *) conftest_s='   .machine "476"
4492         .text
4493         dci 0';;
4494     esac
4496     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4497       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4498       [$conftest_s],,
4499       [AC_DEFINE(HAVE_AS_DCI, 1,
4500           [Define if your assembler supports the DCI/ICI instructions.])])
4502     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4503       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4504       [.gnu_attribute 4,1],,
4505       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4506           [Define if your assembler supports .gnu_attribute.])])
4508     gcc_GAS_CHECK_FEATURE([tls marker support],
4509       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4510       [ bl __tls_get_addr(x@tlsgd)],,
4511       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4512           [Define if your assembler supports arg info for __tls_get_addr.])])
4514     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4515       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4516       [ .reloc .,R_PPC64_ENTRY; nop],,
4517       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4518           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4520     case $target in
4521       *-*-aix*)
4522         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4523           gcc_cv_as_aix_ref, [2,21,0],,
4524           [     .csect stuff[[rw]]
4525              stuff:
4526                 .long 1
4527                 .extern sym
4528                 .ref sym
4529           ],,
4530           [AC_DEFINE(HAVE_AS_REF, 1,
4531             [Define if your assembler supports .ref])])
4533         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4534           gcc_cv_as_aix_dwloc, [2,21,0],,
4535           [     .dwsect 0xA0000
4536         Lframe..0:
4537                 .vbyte 4,Lframe..0
4538           ],,
4539           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4540             [Define if your assembler supports AIX debug frame section label reference.])])
4541         ;;
4542     esac
4543     ;;
4545   mips*-*-*)
4546     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4547       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4548 [       lw $4,%gp_rel(foo)($4)],,
4549       [if test x$target_cpu_default = x
4550        then target_cpu_default=MASK_EXPLICIT_RELOCS
4551        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4552        fi])
4554     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4555       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4556       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4557                  [Define if the assembler understands -mno-shared.])])
4559     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4560       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4561       [.gnu_attribute 4,1],,
4562       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4563           [Define if your assembler supports .gnu_attribute.])])
4565     gcc_GAS_CHECK_FEATURE([.module support],
4566       gcc_cv_as_mips_dot_module,,[-32],
4567       [.module mips2
4568        .module fp=xx],,
4569       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4570           [Define if your assembler supports .module.])])
4571     if test x$gcc_cv_as_mips_dot_module = xno \
4572        && test x$with_fp_32 != x; then
4573       AC_MSG_ERROR(
4574         [Requesting --with-fp-32= requires assembler support for .module.])
4575     fi
4577     gcc_GAS_CHECK_FEATURE([.micromips support],
4578       gcc_cv_as_micromips_support,,[--fatal-warnings],
4579       [.set micromips],,
4580       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4581           [Define if your assembler supports the .set micromips directive])])
4583     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4584       gcc_cv_as_mips_dtprelword, [2,18,0],,
4585       [.section .tdata,"awT",@progbits
4587         .word 2
4588         .text
4589         .dtprelword x+0x8000],,
4590       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4591           [Define if your assembler supports .dtprelword.])])
4593     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4594       gcc_cv_as_mips_dspr1_mult,,,
4595 [       .set    mips32r2
4596         .set    nodspr2
4597         .set    dsp
4598         madd    $ac3,$4,$5
4599         maddu   $ac3,$4,$5
4600         msub    $ac3,$4,$5
4601         msubu   $ac3,$4,$5
4602         mult    $ac3,$4,$5
4603         multu   $ac3,$4,$5],,
4604       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4605           [Define if your assembler supports DSPR1 mult.])])
4607     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4608     gcc_cv_as_ld_jalr_reloc=no
4609     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4610       if test $in_tree_ld = yes ; then
4611         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 \
4612            && test $in_tree_ld_is_elf = yes; then
4613           gcc_cv_as_ld_jalr_reloc=yes
4614         fi
4615       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4616         echo '  .ent x' > conftest.s
4617         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4618         echo '  lw $25,%call16(y)($28)' >> conftest.s
4619         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4620         echo '1:        jalr $25' >> conftest.s
4621         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4622         echo '1:        jalr $25' >> conftest.s
4623         echo '  .end x' >> conftest.s
4624         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4625            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4626           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4627              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4628             gcc_cv_as_ld_jalr_reloc=yes
4629           fi
4630         fi
4631         rm -f conftest.*
4632       fi
4633     fi
4634     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4635       if test x$target_cpu_default = x; then
4636         target_cpu_default=MASK_RELAX_PIC_CALLS
4637       else
4638         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4639       fi
4640     fi
4641     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4643     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4644       [gcc_cv_ld_mips_personality_relaxation],
4645       [gcc_cv_ld_mips_personality_relaxation=no
4646        if test $in_tree_ld = yes ; then
4647          if test "$gcc_cv_gld_major_version" -eq 2 \
4648                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4649                  -o "$gcc_cv_gld_major_version" -gt 2; then
4650            gcc_cv_ld_mips_personality_relaxation=yes
4651          fi
4652        elif test x$gcc_cv_as != x \
4653                  -a x$gcc_cv_ld != x \
4654                  -a x$gcc_cv_readelf != x ; then
4655          cat > conftest.s <<EOF
4656         .cfi_startproc
4657         .cfi_personality 0x80,indirect_ptr
4658         .ent test
4659 test:
4660         nop
4661         .end test
4662         .cfi_endproc
4664         .section .data,"aw",@progbits
4665 indirect_ptr:
4666         .dc.a personality
4668          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4669             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4670            if $gcc_cv_readelf -d conftest 2>&1 \
4671               | grep TEXTREL > /dev/null 2>&1; then
4672              :
4673            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4674                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4675              :
4676            else
4677              gcc_cv_ld_mips_personality_relaxation=yes
4678            fi
4679          fi
4680        fi
4681        rm -f conftest.s conftest.o conftest])
4682     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4683             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4684       [Define if your linker can relax absolute .eh_frame personality
4685 pointers into PC-relative form.])
4686     fi
4688     gcc_GAS_CHECK_FEATURE([-mnan= support],
4689       gcc_cv_as_mips_nan,,
4690       [-mnan=2008],,,
4691       [AC_DEFINE(HAVE_AS_NAN, 1,
4692                  [Define if the assembler understands -mnan=.])])
4693     if test x$gcc_cv_as_mips_nan = xno \
4694        && test x$with_nan != x; then
4695       AC_MSG_ERROR(
4696         [Requesting --with-nan= requires assembler support for -mnan=])
4697     fi
4698     ;;
4699     s390*-*-*)
4700     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4701       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4702       [.gnu_attribute 8,1],,
4703       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4704           [Define if your assembler supports .gnu_attribute.])])
4705     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
4706       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
4707       [ .machinemode push
4708         .machinemode pop
4709         .machine push
4710         .machine pop],,
4711       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
4712           [Define if your assembler supports .machine and .machinemode.])])
4713     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
4714       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
4715       [ .machine z13+vx ],,
4716       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
4717           [Define if your assembler supports architecture modifiers.])])
4718     ;;
4719 esac
4721 # Mips and HP-UX need the GNU assembler.
4722 # Linux on IA64 might be able to use the Intel assembler.
4724 case "$target" in
4725   mips*-*-* | *-*-hpux* )
4726     if test x$gas_flag = xyes \
4727        || test x"$host" != x"$build" \
4728        || test ! -x "$gcc_cv_as" \
4729        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4730       :
4731     else
4732       echo "*** This configuration requires the GNU assembler" >&2
4733       exit 1
4734     fi
4735     ;;
4736 esac
4738 # ??? Not all targets support dwarf2 debug_line, even within a version
4739 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4740 # info to the output file.  So, as supported targets are added to gas 2.11,
4741 # add some instruction here to (also) show we expect this might work.
4742 # ??? Once 2.11 is released, probably need to add first known working
4743 # version to the per-target configury.
4744 case "$cpu_type" in
4745   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4746   | mips | nios2 | pa | riscv | rs6000 | score | sparc | spu | tilegx \
4747   | tilepro | visium | xstormy16 | xtensa)
4748     insn="nop"
4749     ;;
4750   ia64 | s390)
4751     insn="nop 0"
4752     ;;
4753   mmix)
4754     insn="swym 0"
4755     ;;
4756 esac
4757 if test x"$insn" != x; then
4758  conftest_s="\
4759         .file 1 \"conftest.s\"
4760         .loc 1 3 0
4761         $insn"
4762  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4763   gcc_cv_as_dwarf2_debug_line,
4764   [elf,2,11,0],, [$conftest_s],
4765   [if test x$gcc_cv_objdump != x \
4766    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4767       | grep debug_line > /dev/null 2>&1; then
4768      gcc_cv_as_dwarf2_debug_line=yes
4769    fi])
4771 # The .debug_line file table must be in the exact order that
4772 # we specified the files, since these indices are also used
4773 # by DW_AT_decl_file.  Approximate this test by testing if
4774 # the assembler bitches if the same index is assigned twice.
4775  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4776   gcc_cv_as_dwarf2_file_buggy,,,
4777 [       .file 1 "foo.s"
4778         .file 1 "bar.s"])
4780  if test $gcc_cv_as_dwarf2_debug_line = yes \
4781  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4782         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4783   [Define if your assembler supports dwarf2 .file/.loc directives,
4784    and preserves file table indices exactly as given.])
4785  fi
4787  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4788   gcc_cv_as_gdwarf2_flag,
4789   [elf,2,11,0], [--gdwarf2], [$insn],,
4790   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4791 [Define if your assembler supports the --gdwarf2 option.])])
4793  gcc_GAS_CHECK_FEATURE([--gstabs option],
4794   gcc_cv_as_gstabs_flag,
4795   [elf,2,11,0], [--gstabs], [$insn],,
4796   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4797 [Define if your assembler supports the --gstabs option.])])
4799  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4800   gcc_cv_as_debug_prefix_map_flag,
4801   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4802   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4803 [Define if your assembler supports the --debug-prefix-map option.])])
4806 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4807   gcc_cv_as_compress_debug,,,,
4808   [# gas compiled without zlib cannot compress debug sections and warns
4809    # about it, but still exits successfully.  So check for this, too.
4810    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4811    then
4812      gcc_cv_as_compress_debug=0
4813    # Since binutils 2.26, gas supports --compress-debug-sections=type,
4814    # defaulting to the ELF gABI format.
4815    elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
4816    then
4817      gcc_cv_as_compress_debug=2
4818      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4819      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4820    # Before binutils 2.26, gas only supported --compress-debug-options and
4821    # emitted the traditional GNU format.
4822    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4823    then
4824      gcc_cv_as_compress_debug=1
4825      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4826      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4827    else
4828      gcc_cv_as_compress_debug=0
4829    fi])
4830 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4831 [Define to the level of your assembler's compressed debug section support.])
4832 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4833 [Define to the assembler option to enable compressed debug sections.])
4834 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4835 [Define to the assembler option to disable compressed debug sections.])
4837 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4838  ,,
4839 [.lcomm bar,4,16],,
4840 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4841   [Define if your assembler supports .lcomm with an alignment field.])])
4843 if test x$with_sysroot = x && test x$host = x$target \
4844    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4845    && test "$prefix" != "NONE"; then
4846   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4847 [Define to PREFIX/include if cpp should also search that directory.])
4850 # Determine the version of glibc, if any, used on the target.
4851 AC_MSG_CHECKING([for target glibc version])
4852 AC_ARG_WITH([glibc-version],
4853   [AS_HELP_STRING([--with-glibc-version=M.N],
4854     [assume GCC used with glibc version M.N or later])], [
4855 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4856   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4857   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4858 else
4859   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4860 fi], [
4861 glibc_version_major=0
4862 glibc_version_minor=0
4863 [if test -f $target_header_dir/features.h \
4864   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4865   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4866   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4867   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4868 fi]])
4869 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4870 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
4871 [GNU C Library major version number used on the target, or 0.])
4872 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
4873 [GNU C Library minor version number used on the target, or 0.])
4875 AC_ARG_ENABLE(gnu-unique-object,
4876  [AS_HELP_STRING([--enable-gnu-unique-object],
4877    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4878  [case $enable_gnu_unique_object in
4879     yes | no) ;;
4880     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4881 Valid choices are 'yes' and 'no'.]) ;;
4882   esac],
4883  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4884    [elf,2,19,52],,
4885    [.type foo, '$target_type_format_char'gnu_unique_object],,
4886 # We need to unquote above to to use the definition from config.gcc.
4887 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4888    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4889    )])
4890 if test x$enable_gnu_unique_object = xyes; then
4891   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4892    [Define if your assembler supports @gnu_unique_object.])
4895 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4896  [gcc_cv_as_line_zero],
4897  [gcc_cv_as_line_zero=no
4898   if test $in_tree_gas = yes; then
4899     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4900   elif test "x$gcc_cv_as" != x; then
4901     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4902     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4903        test "x`cat conftest.out`" = x
4904     then
4905       gcc_cv_as_line_zero=yes
4906     else
4907       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4908       cat conftest.s >&AS_MESSAGE_LOG_FD
4909       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4910       cat conftest.out >&AS_MESSAGE_LOG_FD
4911     fi
4912     rm -f conftest.o conftest.s conftest.out
4913   fi])
4914 if test "x$gcc_cv_as_line_zero" = xyes; then
4915   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4916 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4919 AC_MSG_CHECKING(support for thin archives)
4920 thin_archive_support=no
4921 echo 'int main (void) { return 0; }' > conftest.c
4922 if ($AR --version | sed 1q | grep "GNU ar" \
4923     && $CC $CFLAGS -c conftest.c \
4924     && $AR rcT conftest.a conftest.o \
4925     && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
4926   thin_archive_support=yes
4928 rm -f conftest.c conftest.o conftest.a conftest
4929 AC_MSG_RESULT($thin_archive_support)
4930 AC_SUBST(thin_archive_support)
4932 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4933 gcc_cv_ld_eh_frame_hdr=no
4934 if test $in_tree_ld = yes ; then
4935   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 \
4936      && test $in_tree_ld_is_elf = yes; then
4937     gcc_cv_ld_eh_frame_hdr=yes
4938   fi
4939 elif test x$gcc_cv_ld != x; then
4940   if echo "$ld_ver" | grep GNU > /dev/null; then
4941     # Check if linker supports --eh-frame-hdr option
4942     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4943       gcc_cv_ld_eh_frame_hdr=yes
4944     fi
4945   else
4946     case "$target" in
4947       *-*-solaris2*)
4948         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4949         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4950           gcc_cv_ld_eh_frame_hdr=yes
4951         fi
4952         ;;
4953     esac
4954   fi
4956 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4957 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4958         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4959 [Define if your linker supports .eh_frame_hdr.])
4961 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4963 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4964 gcc_cv_ld_eh_frame_ciev3=no
4965 if test $in_tree_ld = yes ; then
4966   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 \
4967      && test $in_tree_ld_is_elf = yes; then
4968     gcc_cv_ld_eh_frame_ciev3=yes
4969   fi
4970 elif test x$gcc_cv_ld != x; then
4971   if echo "$ld_ver" | grep GNU > /dev/null; then
4972     gcc_cv_ld_eh_frame_ciev3=yes
4973     if test 0"$ld_date" -lt 20040513; then
4974       if test -n "$ld_date"; then
4975         # If there was date string, but was earlier than 2004-05-13, fail
4976         gcc_cv_ld_eh_frame_ciev3=no
4977       elif test "$ld_vers_major" -lt 2; then
4978         gcc_cv_ld_eh_frame_ciev3=no
4979       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4980         gcc_cv_ld_eh_frame_ciev3=no
4981       fi
4982     fi
4983   else
4984     case "$target" in
4985       *-*-solaris2*)
4986         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4987         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4988           gcc_cv_ld_eh_frame_ciev3=yes
4989         fi
4990         ;;
4991     esac
4992   fi
4994 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4995   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4996   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4997 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4999 AC_MSG_CHECKING(linker position independent executable support)
5000 gcc_cv_ld_pie=no
5001 if test $in_tree_ld = yes ; then
5002   case "$target" in
5003     # Full PIE support on Solaris was only introduced in gld 2.26.
5004     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
5005     *)              gcc_gld_pie_min_version=15 ;;
5006   esac
5007   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
5008      && test $in_tree_ld_is_elf = yes; then
5009     gcc_cv_ld_pie=yes
5010   fi
5011 elif test x$gcc_cv_ld != x; then
5012   # Check if linker supports -pie option
5013   if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
5014     gcc_cv_ld_pie=yes
5015     case "$target" in
5016       *-*-solaris2*)
5017         if echo "$ld_ver" | grep GNU > /dev/null \
5018           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5019           gcc_cv_ld_pie=no
5020         fi
5021         ;;
5022     esac
5023   else
5024     case "$target" in
5025       *-*-solaris2.1[[1-9]]*)
5026         # Solaris 11.x and Solaris 12 added PIE support.
5027         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
5028           gcc_cv_ld_pie=yes
5029         fi
5030         ;;
5031     esac
5032   fi
5034 if test x"$gcc_cv_ld_pie" = xyes; then
5035         AC_DEFINE(HAVE_LD_PIE, 1,
5036 [Define if your linker supports PIE option.])
5038 AC_MSG_RESULT($gcc_cv_ld_pie)
5040 AC_MSG_CHECKING(linker PIE support with copy reloc)
5041 gcc_cv_ld_pie_copyreloc=no
5042 if test $gcc_cv_ld_pie = yes ; then
5043   if test $in_tree_ld = yes ; then
5044     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
5045       gcc_cv_ld_pie_copyreloc=yes
5046     fi
5047   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5048     # Check if linker supports -pie option with copy reloc
5049     case "$target" in
5050     i?86-*-linux* | x86_64-*-linux*)
5051       cat > conftest1.s <<EOF
5052         .globl  a_glob
5053         .data
5054         .type   a_glob, @object
5055         .size   a_glob, 4
5056 a_glob:
5057         .long   2
5059       cat > conftest2.s <<EOF
5060         .text
5061         .globl  main
5062         .type   main, @function
5063 main:
5064         movl    %eax, a_glob(%rip)
5065         .size   main, .-main
5066         .globl  ptr
5067         .section        .data.rel,"aw",@progbits
5068         .type   ptr, @object
5069 ptr:
5070         .quad   a_glob
5072       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5073          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
5074          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5075          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
5076         gcc_cv_ld_pie_copyreloc=yes
5077       fi
5078       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
5079       ;;
5080     esac
5081   fi
5083 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
5084   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
5085   [Define 0/1 if your linker supports -pie option with copy reloc.])
5086 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
5088 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
5089 gcc_cv_ld_eh_gc_sections=no
5090 if test $in_tree_ld = yes ; then
5091   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 \
5092      && test $in_tree_ld_is_elf = yes; then
5093     gcc_cv_ld_eh_gc_sections=yes
5094   fi
5095 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
5096   cat > conftest.s <<EOF
5097         .section        .text
5098 .globl _start
5099         .type _start, @function
5100 _start:
5101         .long foo
5102         .size _start, .-_start
5103         .section        .text.foo,"ax",@progbits
5104         .type foo, @function
5105 foo:
5106         .long 0
5107         .size foo, .-foo
5108         .section        .gcc_except_table.foo,"a",@progbits
5109 .L0:
5110         .long 0
5111         .section        .eh_frame,"a",@progbits
5112         .long .L0
5114   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5115     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5116          | grep "gc-sections option ignored" > /dev/null; then
5117       gcc_cv_ld_eh_gc_sections=no
5118     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5119          | grep gcc_except_table > /dev/null; then
5120       gcc_cv_ld_eh_gc_sections=yes
5121       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5122       if test x$gcc_cv_as_comdat_group != xyes; then
5123         gcc_cv_ld_eh_gc_sections=no
5124         cat > conftest.s <<EOF
5125         .section        .text
5126 .globl _start
5127         .type _start, @function
5128 _start:
5129         .long foo
5130         .size _start, .-_start
5131         .section        .gnu.linkonce.t.foo,"ax",@progbits
5132         .type foo, @function
5133 foo:
5134         .long 0
5135         .size foo, .-foo
5136         .section        .gcc_except_table.foo,"a",@progbits
5137 .L0:
5138         .long 0
5139         .section        .eh_frame,"a",@progbits
5140         .long .L0
5142         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5143           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5144                | grep "gc-sections option ignored" > /dev/null; then
5145             gcc_cv_ld_eh_gc_sections=no
5146           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5147                | grep gcc_except_table > /dev/null; then
5148             gcc_cv_ld_eh_gc_sections=yes
5149           fi
5150         fi
5151       fi
5152     fi
5153   fi
5154   rm -f conftest.s conftest.o conftest
5156 case "$target" in
5157   hppa*-*-linux*)
5158     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5159     gcc_cv_ld_eh_gc_sections=no
5160     ;;
5161 esac
5162 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5163         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5164   [Define if your linker supports garbage collection of
5165    sections in presence of EH frames.])
5167 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5169 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5170 gcc_cv_ld_eh_gc_sections_bug=no
5171 if test $in_tree_ld = yes ; then
5172   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 \
5173      && test $in_tree_ld_is_elf = yes; then
5174     gcc_cv_ld_eh_gc_sections_bug=yes
5175   fi
5176 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
5177   gcc_cv_ld_eh_gc_sections_bug=yes
5178   cat > conftest.s <<EOF
5179         .section        .text
5180 .globl _start
5181         .type _start, @function
5182 _start:
5183         .long foo
5184         .size _start, .-_start
5185         .section        .text.startup.foo,"ax",@progbits
5186         .type foo, @function
5187 foo:
5188         .long 0
5189         .size foo, .-foo
5190         .section        .gcc_except_table.foo,"a",@progbits
5191 .L0:
5192         .long 0
5193         .section        .eh_frame,"a",@progbits
5194         .long .L0
5196   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5197     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5198          | grep "gc-sections option ignored" > /dev/null; then
5199       :
5200     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5201          | grep gcc_except_table > /dev/null; then
5202       gcc_cv_ld_eh_gc_sections_bug=no
5203     fi
5204   fi
5205   rm -f conftest.s conftest.o conftest
5207 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5208         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5209   [Define if your linker has buggy garbage collection of
5210    sections support when .text.startup.foo like sections are used.])
5212 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5214 AC_MSG_CHECKING(linker for compressed debug sections)
5215 # gold/gld support compressed debug sections since binutils 2.19/2.21
5216 # In binutils 2.26, gld gained support for the ELF gABI format.
5217 if test $in_tree_ld = yes ; then
5218   gcc_cv_ld_compress_debug=0
5219   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \
5220      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5221     gcc_cv_ld_compress_debug=2
5222     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5223   elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 26 -o "$gcc_cv_gld_major_version" -gt 2 \
5224      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
5225     gcc_cv_ld_compress_debug=3
5226     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5227   elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \
5228      && test $in_tree_ld_is_elf = yes; then
5229     gcc_cv_ld_compress_debug=1
5230   fi
5231 elif echo "$ld_ver" | grep GNU > /dev/null; then
5232   if test "$ld_vers_major" -lt 2 \
5233      || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5234     gcc_cv_ld_compress_debug=0
5235   elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5236     gcc_cv_ld_compress_debug=1
5237   else
5238     gcc_cv_ld_compress_debug=3
5239     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5240   fi
5241   if test $ld_is_gold = yes; then
5242     gcc_cv_ld_compress_debug=2
5243     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5244   fi
5245 else
5246 changequote(,)dnl
5247   case "${target}" in
5248     *-*-solaris2*)
5249       # Introduced in Solaris 11.2.
5250       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5251         gcc_cv_ld_compress_debug=3
5252         gcc_cv_ld_compress_debug_option="-z compress-sections"
5253       else
5254         gcc_cv_ld_compress_debug=0
5255       fi
5256       ;;
5257     *)
5258       # Assume linkers other than GNU ld don't support compessed debug
5259       # sections.
5260       gcc_cv_ld_compress_debug=0
5261       ;;
5262   esac
5263 changequote([,])dnl
5265 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5266 [Define to the level of your linker's compressed debug section support.])
5267 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5268 [Define to the linker option to enable compressed debug sections.])
5269 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5271 if test x"$ld64_flag" = x"yes"; then
5273   # Set defaults for possibly untestable items.
5274   gcc_cv_ld64_export_dynamic=0
5276   if test "$build" = "$host"; then
5277     darwin_try_test=1
5278   else
5279     darwin_try_test=0
5280   fi
5282   # On Darwin, because of FAT library support, it is often possible to execute
5283   # exes from compatible archs even when the host differs from the build system.
5284   case "$build","$host" in
5285     x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
5286         darwin_try_test=1;;
5287     *) ;;
5288   esac
5290   # If the configurer specified a minimum ld64 version to be supported, then use
5291   # that to determine feature support.
5292   if test x"${gcc_cv_ld64_version}" != x; then
5293     AC_MSG_CHECKING(ld64 specified version)
5294     gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
5295     AC_MSG_RESULT($gcc_cv_ld64_major)
5296    if test "$gcc_cv_ld64_major" -ge 236; then
5297       gcc_cv_ld64_export_dynamic=1
5298     fi
5299   elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
5300     # If the version was not specified, try to find it.
5301     AC_MSG_CHECKING(linker version)
5302     if test x"${gcc_cv_ld64_version}" = x; then
5303       gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
5304     fi
5305     AC_MSG_RESULT($gcc_cv_ld64_version)
5307     AC_MSG_CHECKING(linker for -export_dynamic support)
5308     gcc_cv_ld64_export_dynamic=1
5309     if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
5310       gcc_cv_ld64_export_dynamic=0
5311     fi
5312     AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
5313   fi
5315   if test x"${gcc_cv_ld64_version}" != x; then
5316     AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
5317       [Define to ld64 version.])
5318   fi
5320   AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
5321   [Define to 1 if ld64 supports '-export_dynamic'.])
5324 # --------
5325 # UNSORTED
5326 # --------
5328 AC_CACHE_CHECK(linker --as-needed support,
5329 gcc_cv_ld_as_needed,
5330 [gcc_cv_ld_as_needed=no
5331 gcc_cv_ld_as_needed_option='--as-needed'
5332 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5333 if test $in_tree_ld = yes ; then
5334   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 \
5335      && test $in_tree_ld_is_elf = yes; then
5336     gcc_cv_ld_as_needed=yes
5337   fi
5338 elif test x$gcc_cv_ld != x; then
5339         # Check if linker supports --as-needed and --no-as-needed options
5340         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
5341                 gcc_cv_ld_as_needed=yes
5342         else
5343           case "$target" in
5344             # Solaris 2 ld always supports -z ignore/-z record.
5345             *-*-solaris2*)
5346               gcc_cv_ld_as_needed=yes
5347               gcc_cv_ld_as_needed_option="-z ignore"
5348               gcc_cv_ld_no_as_needed_option="-z record"
5349               ;;
5350           esac
5351         fi
5353 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5354 # dl_iterate_phdr, i.e. since Solaris 11.
5355 case "$target" in
5356   *-*-solaris2.1[[1-9]]*)
5357     case "$target" in
5358     i?86-*-* | x86_64-*-*)
5359       if echo "$ld_ver" | grep GNU > /dev/null; then
5360         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5361         gcc_cv_ld_as_needed=no
5362       fi
5363       ;;
5364     esac
5365     ;;
5366   *-*-solaris2*)
5367     gcc_cv_ld_as_needed=no
5368     ;;
5369 esac
5371 if test x"$gcc_cv_ld_as_needed" = xyes; then
5372         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5373 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5374         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5375 [Define to the linker option to ignore unused dependencies.])
5376         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5377 [Define to the linker option to keep unused dependencies.])
5380 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5381 saved_LDFLAGS="$LDFLAGS"
5382 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5383   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5384   AC_LINK_IFELSE([int main(void) {return 0;}],
5385     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5386 done
5387 LDFLAGS="$saved_LDFLAGS"
5388 if test "x$gcc_cv_ld_clearcap" = xyes; then
5389   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5390 [Define if the linker supports clearing hardware capabilities via mapfile.])
5391   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5393 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5395 case "$target" in
5396   powerpc*-*-*)
5397     case "$target" in
5398       *le-*-linux*)
5399         emul_name="-melf32lppc"
5400         ;;
5401       *)
5402         emul_name="-melf32ppc"
5403         ;;
5404     esac
5405     AC_CACHE_CHECK(linker .gnu.attributes long double support,
5406     gcc_cv_ld_ppc_attr,
5407     [gcc_cv_ld_ppc_attr=no
5408     if test x"$ld_is_gold" = xyes; then
5409       gcc_cv_ld_ppc_attr=yes
5410     elif test $in_tree_ld = yes ; then
5411       if test "$gcc_cv_gld_major_version" -eq 2 \
5412                 -a "$gcc_cv_gld_minor_version" -ge 28 \
5413                 -o "$gcc_cv_gld_major_version" -gt 2; then
5414         gcc_cv_ld_ppc_attr=yes
5415       fi
5416     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5417       # check that merging the long double .gnu_attribute doesn't warn
5418       cat > conftest1.s <<EOF
5419         .gnu_attribute 4,1
5421       cat > conftest2.s <<EOF
5422         .gnu_attribute 4,9
5424       if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5425          && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5426          && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
5427          && test ! -s conftest.err; then
5428         gcc_cv_ld_ppc_attr=yes
5429       fi
5430       rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
5431     fi
5432     ])
5433     if test x$gcc_cv_ld_ppc_attr = xyes; then
5434       AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
5435     [Define if your PowerPC linker has .gnu.attributes long double support.])
5436     fi
5437     ;;
5438 esac
5440 case "$target:$tm_file" in
5441   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5442   case "$target" in
5443      *le-*-linux*)
5444      emul_name="-melf64lppc"
5445       ;;
5446      *-*-linux*)
5447      emul_name="-melf64ppc"
5448       ;;
5449      *-*-freebsd*)
5450      emul_name="-melf64ppc_fbsd"
5451       ;;
5452   esac
5453     AC_CACHE_CHECK(linker support for omitting dot symbols,
5454     gcc_cv_ld_no_dot_syms,
5455     [gcc_cv_ld_no_dot_syms=no
5456     if test x"$ld_is_gold" = xyes; then
5457       gcc_cv_ld_no_dot_syms=yes
5458     elif test $in_tree_ld = yes ; then
5459       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
5460         gcc_cv_ld_no_dot_syms=yes
5461       fi
5462     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5463       cat > conftest1.s <<EOF
5464         .text
5465         bl .foo
5467       cat > conftest2.s <<EOF
5468         .section ".opd","aw"
5469         .align 3
5470         .globl foo
5471         .type foo,@function
5472 foo:
5473         .quad .LEfoo,.TOC.@tocbase,0
5474         .text
5475 .LEfoo:
5476         blr
5477         .size foo,.-.LEfoo
5479       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5480          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5481          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5482         gcc_cv_ld_no_dot_syms=yes
5483       fi
5484       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5485     fi
5486     ])
5487     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5488       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5489     [Define if your PowerPC64 linker only needs function descriptor syms.])
5490     fi
5492     AC_CACHE_CHECK(linker large toc support,
5493     gcc_cv_ld_large_toc,
5494     [gcc_cv_ld_large_toc=no
5495     if test x"$ld_is_gold" = xyes; then
5496       gcc_cv_ld_large_toc=yes
5497     elif test $in_tree_ld = yes ; then
5498       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
5499         gcc_cv_ld_large_toc=yes
5500       fi
5501     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5502       cat > conftest.s <<EOF
5503         .section ".tbss","awT",@nobits
5504         .align 3
5505 ie0:    .space 8
5506         .global _start
5507         .text
5508 _start:
5509         addis 9,13,ie0@got@tprel@ha
5510         ld 9,ie0@got@tprel@l(9)
5512       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5513          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5514         gcc_cv_ld_large_toc=yes
5515       fi
5516       rm -f conftest conftest.o conftest.s
5517     fi
5518     ])
5519     if test x"$gcc_cv_ld_large_toc" = xyes; then
5520       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5521     [Define if your PowerPC64 linker supports a large TOC.])
5522     fi
5524     AC_CACHE_CHECK(linker toc pointer alignment,
5525     gcc_cv_ld_toc_align,
5526     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5527       cat > conftest.s <<EOF
5528         .global _start
5529         .text
5530 _start:
5531         addis 9,2,x@got@ha
5532         .section .data.rel.ro,"aw",@progbits
5533         .p2align 16
5534         .space 32768
5535 x:      .quad .TOC.
5537       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5538          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5539         gcc_cv_ld_toc_align=`$gcc_cv_nm conftest | ${AWK} '/\.TOC\./ { match ($0, "0[[[:xdigit:]]]*", a); print strtonum ("0x" substr(a[[0]], length(a[[0]])-3)) }'`
5540       fi
5541       rm -f conftest conftest.o conftest.s
5542     fi
5543     ])
5544     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5545       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5546     [Define to .TOC. alignment forced by your linker.])
5547     fi
5548     ;;
5549 esac
5551 case "$target" in
5552   *-*-aix*)
5553     AC_CACHE_CHECK(linker large toc support,
5554     gcc_cv_ld_large_toc,
5555     [gcc_cv_ld_large_toc=no
5556     if test x$gcc_cv_as != x ; then
5557       cat > conftest.s <<EOF
5558         .toc
5559 LC..1:
5560         .tc a[[TC]],a[[RW]]
5561         .extern a[[RW]]
5562         .csect .text[[PR]]
5563 .largetoctest:
5564         addis 9,LC..1@u(2)
5565         ld 3,LC..1@l(9)
5567       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5568         gcc_cv_ld_large_toc=yes
5569       fi
5570       rm -f conftest conftest.o conftest.s
5571     fi
5572     ])
5573     if test x"$gcc_cv_ld_large_toc" = xyes; then
5574       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5575     [Define if your PowerPC64 linker supports a large TOC.])
5576     fi
5577     ;;
5578 esac
5580 AC_CACHE_CHECK(linker --build-id support,
5581   gcc_cv_ld_buildid,
5582   [gcc_cv_ld_buildid=no
5583   if test $in_tree_ld = yes ; then
5584     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5585        "$gcc_cv_gld_minor_version" -ge 18 -o \
5586        "$gcc_cv_gld_major_version" -gt 2 \
5587        && test $in_tree_ld_is_elf = yes; then
5588       gcc_cv_ld_buildid=yes
5589     fi
5590   elif test x$gcc_cv_ld != x; then
5591     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
5592       gcc_cv_ld_buildid=yes
5593     fi
5594   fi])
5595 if test x"$gcc_cv_ld_buildid" = xyes; then
5596   AC_DEFINE(HAVE_LD_BUILDID, 1,
5597   [Define if your linker supports --build-id.])
5600 AC_ARG_ENABLE(linker-build-id,
5601 [AS_HELP_STRING([--enable-linker-build-id],
5602                 [compiler will always pass --build-id to linker])],
5604 enable_linker_build_id=no)
5606 if test x"$enable_linker_build_id" = xyes; then
5607   if test x"$gcc_cv_ld_buildid" = xyes; then
5608     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5609     [Define if gcc should always pass --build-id to linker.])
5610   else
5611     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5612   fi
5615 # In binutils 2.21, GNU ld gained support for new emulations fully
5616 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5617 AC_CACHE_CHECK(linker *_sol2 emulation support,
5618   gcc_cv_ld_sol2_emulation,
5619   [gcc_cv_ld_sol2_emulation=no
5620   if test $in_tree_ld = yes ; then
5621     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5622        "$gcc_cv_gld_minor_version" -ge 21 -o \
5623        "$gcc_cv_gld_major_version" -gt 2 \
5624        && test $in_tree_ld_is_elf = yes; then
5625       gcc_cv_ld_sol2_emulation=yes
5626     fi
5627   elif test x$gcc_cv_ld != x; then
5628     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5629        grep _sol2 > /dev/null; then
5630       gcc_cv_ld_sol2_emulation=yes
5631     fi
5632   fi])
5633 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5634   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5635   [Define if your linker supports the *_sol2 emulations.])
5638 AC_CACHE_CHECK(linker --sysroot support,
5639   gcc_cv_ld_sysroot,
5640   [gcc_cv_ld_sysroot=no
5641   if test $in_tree_ld = yes ; then
5642       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
5643         gcc_cv_ld_sysroot=yes
5644       fi
5645   elif test x$gcc_cv_ld != x; then 
5646     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5647       gcc_cv_ld_sysroot=yes
5648     fi
5649   fi])
5650 if test x"$gcc_cv_ld_sysroot" = xyes; then
5651   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5652   [Define if your linker supports --sysroot.])
5653 fi        
5655 case $target in
5656 *-*-solaris2*)
5657   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
5658   AC_CACHE_CHECK([system-provided CRTs on Solaris],
5659     gcc_cv_solaris_crts,
5660     [gcc_cv_solaris_crts=no
5661      if test x$host != x$target; then
5662        if test "x$with_sysroot" = xyes; then
5663          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
5664        else
5665          target_sysroot="${with_sysroot}"
5666        fi
5667      fi
5668      target_libdir="$target_sysroot/usr/lib"
5669      # At the time they were added, gcrt1.o became a symlink for backwards
5670      # compatibility on x86, while crt1.o was added on sparc, so check for that.
5671      case $target in
5672        i?86-*-solaris2* | x86_64-*-solaris2*)
5673          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
5674          ;;
5675        sparc*-*-solaris2*)
5676          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
5677          ;;
5678      esac])
5679   ;;
5680 esac
5681 if test x$gcc_cv_solaris_crts = xyes; then
5682   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
5683             [Define if the system-provided CRTs are present on Solaris.])
5686 # Test for stack protector support in target C library.
5687 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5688       gcc_cv_libc_provides_ssp,
5689       [gcc_cv_libc_provides_ssp=no
5690     case "$target" in
5691        *-*-musl*)
5692          # All versions of musl provide stack protector
5693          gcc_cv_libc_provides_ssp=yes;;
5694        *-*-linux* | *-*-kfreebsd*-gnu)
5695       # glibc 2.4 and later provides __stack_chk_fail and
5696       # either __stack_chk_guard, or TLS access to stack guard canary.
5697       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5698       [if test -f $target_header_dir/features.h \
5699          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5700             $target_header_dir/features.h > /dev/null; then
5701         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5702              $target_header_dir/features.h > /dev/null && \
5703              test -f $target_header_dir/bits/uClibc_config.h && \
5704              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5705              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5706           gcc_cv_libc_provides_ssp=yes
5707         fi
5708       # all versions of Bionic support stack protector
5709       elif test -f $target_header_dir/sys/cdefs.h \
5710         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5711            $target_header_dir/sys/cdefs.h > /dev/null; then
5712          gcc_cv_libc_provides_ssp=yes
5713       fi]])
5714         ;;
5715        *-*-gnu*)
5716          # Avoid complicated tests (see
5717          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5718          # simply assert that glibc does provide this, which is true for all
5719          # realistically usable GNU/Hurd configurations.
5720          # All supported versions of musl provide it as well
5721          gcc_cv_libc_provides_ssp=yes;;
5722        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
5723          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5724            [echo "no __stack_chk_fail on this target"])
5725         ;;
5726   *) gcc_cv_libc_provides_ssp=no ;;
5727     esac])
5729 if test x$gcc_cv_libc_provides_ssp = xyes; then
5730   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5731             [Define if your target C library provides stack protector support])
5734 # Check whether --enable-default-ssp was given.
5735 AC_ARG_ENABLE(default-ssp,
5736 [AS_HELP_STRING([--enable-default-ssp],
5737   [enable Stack Smashing Protection as default])],[
5738 if test x$gcc_cv_libc_provides_ssp = xyes; then
5739   case "$target" in
5740     ia64*-*-*) enable_default_ssp=no ;;
5741     *) enable_default_ssp=$enableval ;;
5742   esac
5743 else
5744   enable_default_ssp=no
5745 fi],
5746 enable_default_ssp=no)
5747 if test x$enable_default_ssp = xyes ; then
5748   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5749       [Define if your target supports default stack protector and it is enabled.])
5751 AC_SUBST([enable_default_ssp])
5753 # Test for <sys/sdt.h> on the target.
5754 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5755 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5756 have_sys_sdt_h=no
5757 if test -f $target_header_dir/sys/sdt.h; then
5758   have_sys_sdt_h=yes
5759   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5760             [Define if your target C library provides sys/sdt.h])
5762 AC_MSG_RESULT($have_sys_sdt_h)
5764 # Check if TFmode long double should be used by default or not.
5765 # Some glibc targets used DFmode long double, but with glibc 2.4
5766 # and later they can use TFmode.
5767 case "$target" in
5768   powerpc*-*-linux* | \
5769   sparc*-*-linux* | \
5770   s390*-*-linux* | \
5771   alpha*-*-linux*)
5772     AC_ARG_WITH(long-double-128,
5773       [AS_HELP_STRING([--with-long-double-128],
5774                       [use 128-bit long double by default])],
5775       gcc_cv_target_ldbl128="$with_long_double_128",
5776       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5777       [gcc_cv_target_ldbl128=no
5778       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5779         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5780       && gcc_cv_target_ldbl128=yes
5781       ]])])
5782     ;;
5783 esac
5784 if test x$gcc_cv_target_ldbl128 = xyes; then
5785   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5786             [Define if TFmode long double should be the default])
5789 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
5790 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
5791 gcc_cv_libc_provides_hwcap_in_tcb=no
5792 case "$target" in
5793   powerpc*-*-linux*)
5794     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
5795     ;;
5796 esac
5797 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
5798   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
5799             [Define if your target C Library provides the AT_HWCAP value in the TCB])
5802 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5803 gcc_cv_target_dl_iterate_phdr=unknown
5804 case "$target" in
5805   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5806   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5807   # libdl there, both complicating its use and breaking compatibility
5808   # between Solaris 10 updates.
5809   *-*-solaris2.1[[1-9]]*)
5810     # <link.h> needs both a dl_iterate_phdr declaration and support for
5811     # compilation with largefile support.
5812     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5813       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5814       gcc_cv_target_dl_iterate_phdr=yes
5815     else
5816       gcc_cv_target_dl_iterate_phdr=no
5817     fi
5818     ;;
5819   *-*-dragonfly* | *-*-freebsd*)
5820     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
5821       gcc_cv_target_dl_iterate_phdr=yes
5822     else
5823       gcc_cv_target_dl_iterate_phdr=no
5824     fi
5825     ;;
5826   *-linux-musl*)
5827     gcc_cv_target_dl_iterate_phdr=yes
5828     ;;
5829 esac
5830 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5831 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5832    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5833 [Define if your target C library provides the `dl_iterate_phdr' function.])
5835 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5837 # We no longer support different GC mechanisms.  Emit an error if
5838 # the user configures with --with-gc.
5839 AC_ARG_WITH(gc,
5840 [AS_HELP_STRING([--with-gc={page,zone}],
5841                 [this option is not supported anymore.  It used to choose
5842                  the garbage collection mechanism to use with the compiler])],
5843 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5846 # Libraries to use on the host.  This will normally be set by the top
5847 # level Makefile.  Here we simply capture the value for our Makefile.
5848 if test -z "${HOST_LIBS+set}"; then
5849   HOST_LIBS=
5851 AC_SUBST(HOST_LIBS)
5853 # Use the system's zlib library.
5854 AM_ZLIB
5856 dnl Very limited version of automake's enable-maintainer-mode
5858 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5859   dnl maintainer-mode is disabled by default
5860   AC_ARG_ENABLE(maintainer-mode,
5861 [AS_HELP_STRING([--enable-maintainer-mode],
5862                 [enable make rules and dependencies not useful
5863                  (and sometimes confusing) to the casual installer])],
5864       maintainer_mode=$enableval,
5865       maintainer_mode=no)
5867 AC_MSG_RESULT($maintainer_mode)
5869 if test "$maintainer_mode" = "yes"; then
5870   MAINT=''
5871 else
5872   MAINT='#'
5874 AC_SUBST(MAINT)dnl
5876 dnl Whether to prevent multiple front-ends from linking at the same time
5878 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5879   AC_ARG_ENABLE(link-mutex,
5880 [AS_HELP_STRING([--enable-link-mutex],
5881                 [avoid linking multiple front-ends at once to avoid thrashing
5882                  on the build machine])],
5883       do_link_mutex=$enableval,
5884       do_link_mutex=no)
5885 AC_MSG_RESULT($do_link_mutex)
5887 if test "$do_link_mutex" = "yes"; then
5888    DO_LINK_MUTEX=true
5889 else
5890    DO_LINK_MUTEX=false
5892 AC_SUBST(DO_LINK_MUTEX)
5894 # --------------
5895 # Language hooks
5896 # --------------
5898 # Make empty files to contain the specs and options for each language.
5899 # Then add #include lines to for a compiler that has specs and/or options.
5901 subdirs=
5902 lang_opt_files=
5903 lang_specs_files=
5904 lang_tree_files=
5905 # These (without "all_") are set in each config-lang.in.
5906 # `language' must be a single word so is spelled singularly.
5907 all_languages=
5908 all_compilers=
5909 all_outputs='Makefile'
5910 # List of language makefile fragments.
5911 all_lang_makefrags=
5912 # Additional files for gengtype
5913 all_gtfiles="$target_gtfiles"
5915 # These are the languages that are set in --enable-languages,
5916 # and are available in the GCC tree.
5917 all_selected_languages=
5919 # Add the language fragments.
5920 # Languages are added via two mechanisms.  Some information must be
5921 # recorded in makefile variables, these are defined in config-lang.in.
5922 # We accumulate them and plug them into the main Makefile.
5923 # The other mechanism is a set of hooks for each of the main targets
5924 # like `clean', `install', etc.
5926 language_hooks="Make-hooks"
5928 for lang in ${srcdir}/*/config-lang.in
5930 changequote(,)dnl
5931         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5933         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5934         if test "x$lang_alias" = x
5935         then
5936               echo "$lang doesn't set \$language." 1>&2
5937               exit 1
5938         fi
5939         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5940         subdirs="$subdirs $subdir"
5942         # $gcc_subdir is where the gcc integration files are to be found
5943         # for a language, both for internal compiler purposes (compiler
5944         # sources implementing front-end to GCC tree converters), and for
5945         # build infrastructure purposes (Make-lang.in, etc.)
5946         #
5947         # This will be <subdir> (relative to $srcdir) if a line like 
5948         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5949         # is found in <langdir>/config-lang.in, and will remain <langdir>
5950         # otherwise.
5951         #
5952         # Except for the language alias (fetched above), the regular
5953         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5954         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5955         # only this and the language alias.
5957         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5958         if [ "$gcc_subdir" = "" ]; then
5959            gcc_subdir="$subdir"
5960         fi
5962         case ",$enable_languages," in
5963         *,$lang_alias,*)
5964             all_selected_languages="$all_selected_languages $lang_alias"
5965             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5966                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5967             fi
5968             ;;
5969         esac
5970 changequote([,])dnl
5972         language=
5973         boot_language=
5974         compilers=
5975         outputs=
5976         gtfiles=
5977         subdir_requires=
5978         . ${srcdir}/$gcc_subdir/config-lang.in
5979         if test "x$language" = x
5980         then
5981                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5982                 exit 1
5983         fi
5985         ok=:
5986         case ",$enable_languages," in
5987                 *,$lang_alias,*) ;;
5988                 *)
5989                         for i in $subdir_requires; do
5990                                 test -f "${srcdir}/$i/config-lang.in" && continue
5991                                 ok=false
5992                                 break
5993                         done
5994                 ;;
5995         esac
5996         $ok || continue
5998         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5999         if test -f $srcdir/$gcc_subdir/lang.opt; then
6000             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
6001             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
6002         fi
6003         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
6004             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
6005         fi
6006         all_languages="$all_languages $language"
6007         all_compilers="$all_compilers $compilers"
6008         all_outputs="$all_outputs $outputs"
6009         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
6010         case ",$enable_languages," in
6011                 *,lto,*)
6012                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
6013                     enable_lto=yes
6014                     AC_SUBST(enable_lto)
6015                     ;;
6016                 *) ;;
6017         esac
6018 done
6020 check_languages=
6021 for language in $all_selected_languages
6023         check_languages="$check_languages check-$language"
6024 done
6026 # We link each language in with a set of hooks, reached indirectly via
6027 # lang.${target}.  Only do so for selected languages.
6029 rm -f Make-hooks
6030 touch Make-hooks
6031 target_list="all.cross start.encap rest.encap tags \
6032         install-common install-man install-info install-pdf install-html dvi \
6033         pdf html uninstall info man srcextra srcman srcinfo \
6034         mostlyclean clean distclean maintainer-clean install-plugin"
6036 for t in $target_list
6038         x=
6039         for lang in $all_selected_languages
6040         do
6041                 x="$x $lang.$t"
6042         done
6043         echo "lang.$t: $x" >> Make-hooks
6044 done
6046 # --------
6047 # Option include files
6048 # --------
6050 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
6051 option_includes="option-includes.mk"
6052 AC_SUBST_FILE(option_includes)
6054 # --------
6055 # UNSORTED
6056 # --------
6058 # Create .gdbinit.
6060 echo "dir ." > .gdbinit
6061 echo "dir ${srcdir}" >> .gdbinit
6062 if test x$gdb_needs_out_file_path = xyes
6063 then
6064         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
6066 if test "x$subdirs" != x; then
6067         for s in $subdirs
6068         do
6069                 echo "dir ${srcdir}/$s" >> .gdbinit
6070         done
6072 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
6073 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
6075 # Put a breakpoint on __asan_report_error to help with debugging buffer
6076 # overflow.
6077 case "$CFLAGS" in
6078 *-fsanitize=address*)
6079   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
6080   ;;
6081 esac
6083 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
6084 AC_SUBST(gcc_tooldir)
6085 AC_SUBST(dollar)
6087 # Find a directory in which to install a shared libgcc.
6089 AC_ARG_ENABLE(version-specific-runtime-libs,
6090 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
6091                 [specify that runtime libraries should be
6092                  installed in a compiler-specific directory])])
6094 # Substitute configuration variables
6095 AC_SUBST(subdirs)
6096 AC_SUBST(srcdir)
6097 AC_SUBST(all_compilers)
6098 AC_SUBST(all_gtfiles)
6099 AC_SUBST(all_lang_makefrags)
6100 AC_SUBST(all_languages)
6101 AC_SUBST(all_selected_languages)
6102 AC_SUBST(build_exeext)
6103 AC_SUBST(build_install_headers_dir)
6104 AC_SUBST(build_xm_file_list)
6105 AC_SUBST(build_xm_include_list)
6106 AC_SUBST(build_xm_defines)
6107 AC_SUBST(build_file_translate)
6108 AC_SUBST(check_languages)
6109 AC_SUBST(cpp_install_dir)
6110 AC_SUBST(xmake_file)
6111 AC_SUBST(tmake_file)
6112 AC_SUBST(TM_ENDIAN_CONFIG)
6113 AC_SUBST(TM_MULTILIB_CONFIG)
6114 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
6115 AC_SUBST(extra_gcc_objs)
6116 AC_SUBST(user_headers_inc_next_pre)
6117 AC_SUBST(user_headers_inc_next_post)
6118 AC_SUBST(extra_headers_list)
6119 AC_SUBST(extra_objs)
6120 AC_SUBST(extra_programs)
6121 AC_SUBST(float_h_file)
6122 AC_SUBST(gcc_config_arguments)
6123 AC_SUBST(gcc_gxx_include_dir)
6124 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
6125 AC_SUBST(host_exeext)
6126 AC_SUBST(host_xm_file_list)
6127 AC_SUBST(host_xm_include_list)
6128 AC_SUBST(host_xm_defines)
6129 AC_SUBST(out_host_hook_obj)
6130 AC_SUBST(install)
6131 AC_SUBST(lang_opt_files)
6132 AC_SUBST(lang_specs_files)
6133 AC_SUBST(lang_tree_files)
6134 AC_SUBST(local_prefix)
6135 AC_SUBST(md_file)
6136 AC_SUBST(objc_boehm_gc)
6137 AC_SUBST(out_file)
6138 AC_SUBST(out_object_file)
6139 AC_SUBST(common_out_file)
6140 AC_SUBST(common_out_object_file)
6141 AC_SUBST(tm_file_list)
6142 AC_SUBST(tm_include_list)
6143 AC_SUBST(tm_defines)
6144 AC_SUBST(tm_p_file_list)
6145 AC_SUBST(tm_p_include_list)
6146 AC_SUBST(xm_file_list)
6147 AC_SUBST(xm_include_list)
6148 AC_SUBST(xm_defines)
6149 AC_SUBST(use_gcc_stdint)
6150 AC_SUBST(c_target_objs)
6151 AC_SUBST(cxx_target_objs)
6152 AC_SUBST(fortran_target_objs)
6153 AC_SUBST(target_cpu_default)
6155 AC_SUBST_FILE(language_hooks)
6157 # Echo link setup.
6158 if test x${build} = x${host} ; then
6159   if test x${host} = x${target} ; then
6160     echo "Links are now set up to build a native compiler for ${target}." 1>&2
6161   else
6162     echo "Links are now set up to build a cross-compiler" 1>&2
6163     echo " from ${host} to ${target}." 1>&2
6164   fi
6165 else
6166   if test x${host} = x${target} ; then
6167     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
6168     echo " for ${target}." 1>&2
6169   else
6170     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
6171     echo " from ${host} to ${target}." 1>&2
6172   fi
6175 AC_ARG_VAR(GMPLIBS,[How to link GMP])
6176 AC_ARG_VAR(GMPINC,[How to find GMP include files])
6178 AC_ARG_VAR(ISLLIBS,[How to link isl])
6179 AC_ARG_VAR(ISLINC,[How to find isl include files])
6180 if test "x${ISLLIBS}" != "x" ; then 
6181    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
6184 GCC_ENABLE_PLUGINS
6185 AC_SUBST(pluginlibs)
6186 AC_SUBST(enable_plugin)
6187 if test x"$enable_plugin" = x"yes"; then
6188   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
6192 # Enable --enable-host-shared
6193 AC_ARG_ENABLE(host-shared,
6194 [AS_HELP_STRING([--enable-host-shared],
6195                 [build host code as shared libraries])],
6196 [PICFLAG=-fPIC], [PICFLAG=])
6197 AC_SUBST(enable_host_shared)
6198 AC_SUBST(PICFLAG)
6201 AC_ARG_ENABLE(libquadmath-support,
6202 [AS_HELP_STRING([--disable-libquadmath-support],
6203   [disable libquadmath support for Fortran])],
6204 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6205 ENABLE_LIBQUADMATH_SUPPORT=yes)
6206 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6207   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6208             [Define to 1 to enable libquadmath support])
6212 # Specify what hash style to use by default.
6213 AC_ARG_WITH([linker-hash-style],
6214 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6215                 [specify the linker hash style])],
6216 [case x"$withval" in
6217    xsysv)
6218      LINKER_HASH_STYLE=sysv
6219      ;;
6220    xgnu)
6221      LINKER_HASH_STYLE=gnu
6222      ;;
6223    xboth)
6224      LINKER_HASH_STYLE=both
6225      ;;
6226    *)
6227      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6228      ;;
6229  esac],
6230 [LINKER_HASH_STYLE=''])
6231 if test x"${LINKER_HASH_STYLE}" != x; then
6232   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6233                                          [The linker hash style])
6236 # Specify what should be the default of -fdiagnostics-color option.
6237 AC_ARG_WITH([diagnostics-color],
6238 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6239                 [specify the default of -fdiagnostics-color option
6240                  auto-if-env stands for -fdiagnostics-color=auto if
6241                  GCC_COLOR environment variable is present and
6242                  -fdiagnostics-color=never otherwise])],
6243 [case x"$withval" in
6244    xnever)
6245      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6246      ;;
6247    xauto)
6248      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6249      ;;
6250    xauto-if-env)
6251      DIAGNOSTICS_COLOR_DEFAULT=-1
6252      ;;
6253    xalways)
6254      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6255      ;;
6256    *)
6257      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6258      ;;
6259  esac],
6260 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6261 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6262                    [The default for -fdiagnostics-color option])
6264 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6265 # of jit/jit-playback.c.
6266 cat > gcc-driver-name.h <<EOF
6267 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
6270 # Check whether --enable-default-pie was given.
6271 AC_ARG_ENABLE(default-pie,
6272 [AS_HELP_STRING([--enable-default-pie],
6273   [enable Position Independent Executable as default])],
6274 enable_default_pie=$enableval,
6275 enable_default_pie=no)
6276 if test x$enable_default_pie = xyes ; then
6277   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6278       [Define if your target supports default PIE and it is enabled.])
6280 AC_SUBST([enable_default_pie])
6282 # Check if -fno-PIE works.
6283 AC_CACHE_CHECK([for -fno-PIE option],
6284   [gcc_cv_c_no_fpie],
6285   [saved_CXXFLAGS="$CXXFLAGS"
6286    CXXFLAGS="$CXXFLAGS -fno-PIE"
6287    AC_COMPILE_IFELSE([int main(void) {return 0;}],
6288      [gcc_cv_c_no_fpie=yes],
6289      [gcc_cv_c_no_fpie=no])
6290    CXXFLAGS="$saved_CXXFLAGS"])
6291 if test "$gcc_cv_c_no_fpie" = "yes"; then
6292   NO_PIE_CFLAGS="-fno-PIE"
6294 AC_SUBST([NO_PIE_CFLAGS])
6296 # Check if -no-pie works.
6297 AC_CACHE_CHECK([for -no-pie option],
6298   [gcc_cv_no_pie],
6299   [saved_LDFLAGS="$LDFLAGS"
6300    LDFLAGS="$LDFLAGS -no-pie"
6301    AC_LINK_IFELSE([int main(void) {return 0;}],
6302      [gcc_cv_no_pie=yes],
6303      [gcc_cv_no_pie=no])
6304    LDFLAGS="$saved_LDFLAGS"])
6305 if test "$gcc_cv_no_pie" = "yes"; then
6306   NO_PIE_FLAG="-no-pie"
6308 AC_SUBST([NO_PIE_FLAG])
6310 # Check linker supports '-z bndplt'
6311 ld_bndplt_support=no
6312 AC_MSG_CHECKING(linker -z bndplt option)
6313 if test x"$ld_is_gold" = xno; then
6314   if test $in_tree_ld = yes ; then
6315     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6316       ld_bndplt_support=yes
6317     fi
6318   elif test x$gcc_cv_ld != x; then
6319     # Check if linker supports -a bndplt option
6320     if $gcc_cv_ld --help 2>/dev/null | grep -- '-z bndplt' > /dev/null; then
6321       ld_bndplt_support=yes
6322     fi
6323   fi
6325 if test x"$ld_bndplt_support" = xyes; then
6326   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6327         [Define if your linker supports -z bndplt])
6329 AC_MSG_RESULT($ld_bndplt_support)
6331 # Check linker supports '--push-state'/'--pop-state'
6332 ld_pushpopstate_support=no
6333 AC_MSG_CHECKING(linker --push-state/--pop-state options)
6334 if test x"$ld_is_gold" = xno; then
6335   if test $in_tree_ld = yes ; then
6336     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6337       ld_pushpopstate_support=yes
6338     fi
6339   elif test x$gcc_cv_ld != x; then
6340     # Check if linker supports --push-state/--pop-state options
6341     if $gcc_cv_ld --help 2>/dev/null | grep -- '--push-state' > /dev/null; then
6342       ld_pushpopstate_support=yes
6343     fi
6344   fi
6346 if test x"$ld_pushpopstate_support" = xyes; then
6347   AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
6348         [Define if your linker supports --push-state/--pop-state])
6350 AC_MSG_RESULT($ld_pushpopstate_support)
6352 # Configure the subdirectories
6353 # AC_CONFIG_SUBDIRS($subdirs)
6355 # Create the Makefile
6356 # and configure language subdirectories
6357 AC_CONFIG_FILES($all_outputs)
6359 AC_CONFIG_COMMANDS([default],
6361 case ${CONFIG_HEADERS} in
6362   *auto-host.h:config.in*)
6363   echo > cstamp-h ;;
6364 esac
6365 # Make sure all the subdirs exist.
6366 for d in $subdirs doc build common c-family
6368     test -d $d || mkdir $d
6369 done
6370 ], 
6371 [subdirs='$subdirs'])
6372 AC_OUTPUT