pass --enable-obsolete down to gcc/configure for auto-build.h
[official-gcc.git] / gcc / configure.ac
blob1a0d68208e4b51b3360c293a1565ce4afa228c5d
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2019 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_INIT
27 AC_CONFIG_SRCDIR(tree.c)
28 AC_CONFIG_HEADER(auto-host.h:config.in)
30 gcc_version=`cat $srcdir/BASE-VER`
32 # Determine the host, build, and target systems
33 AC_CANONICAL_BUILD
34 AC_CANONICAL_HOST
35 AC_CANONICAL_TARGET
37 # Determine the noncanonical host name, for Ada.
38 ACX_NONCANONICAL_HOST
40 # Determine the noncanonical target name, for directory use.
41 ACX_NONCANONICAL_TARGET
43 # Used for constructing correct paths for offload compilers.
44 real_target_noncanonical=${target_noncanonical}
45 accel_dir_suffix=
47 # Determine the target- and build-specific subdirectories
48 GCC_TOPLEV_SUBDIRS
50 # Set program_transform_name
51 AC_ARG_PROGRAM
53 # Check for bogus environment variables.
54 # Test if LIBRARY_PATH contains the notation for the current directory
55 # since this would lead to problems installing/building glibc.
56 # LIBRARY_PATH contains the current directory if one of the following
57 # is true:
58 # - one of the terminals (":" and ";") is the first or last sign
59 # - two terminals occur directly after each other
60 # - the path contains an element with a dot in it
61 AC_MSG_CHECKING(LIBRARY_PATH variable)
62 changequote(,)dnl
63 case ${LIBRARY_PATH} in
64   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
65     library_path_setting="contains current directory"
66     ;;
67   *)
68     library_path_setting="ok"
69     ;;
70 esac
71 changequote([,])dnl
72 AC_MSG_RESULT($library_path_setting)
73 if test "$library_path_setting" != "ok"; then
74 AC_MSG_ERROR([
75 *** LIBRARY_PATH shouldn't contain the current directory when
76 *** building gcc. Please change the environment variable
77 *** and run configure again.])
80 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
81 # since this would lead to problems installing/building glibc.
82 # GCC_EXEC_PREFIX contains the current directory if one of the following
83 # is true:
84 # - one of the terminals (":" and ";") is the first or last sign
85 # - two terminals occur directly after each other
86 # - the path contains an element with a dot in it
87 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
88 changequote(,)dnl
89 case ${GCC_EXEC_PREFIX} in
90   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
91     gcc_exec_prefix_setting="contains current directory"
92     ;;
93   *)
94     gcc_exec_prefix_setting="ok"
95     ;;
96 esac
97 changequote([,])dnl
98 AC_MSG_RESULT($gcc_exec_prefix_setting)
99 if test "$gcc_exec_prefix_setting" != "ok"; then
100 AC_MSG_ERROR([
101 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
102 *** building gcc. Please change the environment variable
103 *** and run configure again.])
106 # -----------
107 # Directories
108 # -----------
110 # Specify the local prefix
111 local_prefix=
112 AC_ARG_WITH(local-prefix,
113 [AS_HELP_STRING([--with-local-prefix=DIR],
114                 [specifies directory to put local include])],
115 [case "${withval}" in
116 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
117 no)     ;;
118 *)      local_prefix=$with_local_prefix ;;
119 esac])
121 # Default local prefix if it is empty
122 if test x$local_prefix = x; then
123         local_prefix=/usr/local
126 AC_ARG_WITH([native-system-header-dir],
127   [  --with-native-system-header-dir=dir
128                           use dir as the directory to look for standard
129                           system header files in.  Defaults to /usr/include.],
131  case ${with_native_system_header_dir} in
132  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
133  /* | [[A-Za-z]]:[[\\/]]*) ;;
134  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
135  esac
136  configured_native_system_header_dir="${withval}"
137 ], [configured_native_system_header_dir=])
139 AC_ARG_WITH(build-sysroot, 
140   [AS_HELP_STRING([--with-build-sysroot=sysroot],
141                   [use sysroot as the system root during the build])],
142   [if test x"$withval" != x ; then
143      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
144    fi],
145   [SYSROOT_CFLAGS_FOR_TARGET=])
146 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
148 if test "x$prefix" = xNONE; then
149  test_prefix=/usr/local
150 else
151  test_prefix=$prefix
153 if test "x$exec_prefix" = xNONE; then
154  test_exec_prefix=$test_prefix
155 else
156  test_exec_prefix=$exec_prefix
159 AC_ARG_WITH(sysroot,
160 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
161                 [search for usr/lib, usr/include, et al, within DIR])],
163  case ${with_sysroot} in
164  /) ;;
165  */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
166  esac
167  case ${with_sysroot} in
168  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
169  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
170  esac
171    
172  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
173  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
174         
175  case ${TARGET_SYSTEM_ROOT} in
176  "${test_prefix}"|"${test_prefix}/"*|\
177  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
178  '${prefix}'|'${prefix}/'*|\
179  '${exec_prefix}'|'${exec_prefix}/'*)
180    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
181    TARGET_SYSTEM_ROOT_DEFINE="$t"
182    ;;
183  esac
184 ], [
185  TARGET_SYSTEM_ROOT=
186  TARGET_SYSTEM_ROOT_DEFINE=
187  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
189 AC_SUBST(TARGET_SYSTEM_ROOT)
190 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
191 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
193 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
194 # passed in by the toplevel make and thus we'd get different behavior
195 # depending on where we built the sources.
196 gcc_gxx_include_dir=
197 # Specify the g++ header file directory
198 AC_ARG_WITH(gxx-include-dir,
199 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
200                 [specifies directory to put g++ header files])],
201 [case "${withval}" in
202 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
203 no)     ;;
204 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
205 esac])
207 # If both --with-sysroot and --with-gxx-include-dir are passed, we interpolate
208 # the former in the latter and, upon success, compute gcc_gxx_include_dir as
209 # relative to the sysroot.
210 gcc_gxx_include_dir_add_sysroot=0
212 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
213 if test x${gcc_gxx_include_dir} = x; then
214   if test x${enable_version_specific_runtime_libs} = xyes; then
215     gcc_gxx_include_dir='${libsubdir}/include/c++'
216   else
217     libstdcxx_incdir='include/c++/$(version)'
218     if test x$host != x$target; then
219        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
220     fi
221     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
222   fi
223 elif test "${with_sysroot+set}" = set; then
224   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
225   if test "${gcc_gxx_without_sysroot}"; then
226     gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
227     gcc_gxx_include_dir_add_sysroot=1
228   fi
231 AC_ARG_WITH(cpp_install_dir,
232 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
233                 [install the user visible C preprocessor in DIR
234                  (relative to PREFIX) as well as PREFIX/bin])],
235 [if test x$withval = xyes; then
236   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
237 elif test x$withval != xno; then
238   cpp_install_dir=$withval
239 fi])
241 # We would like to our source tree to be readonly.  However when releases or
242 # pre-releases are generated, the flex/bison generated files as well as the 
243 # various formats of manuals need to be included along with the rest of the
244 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
245 # just that.
247 AC_MSG_CHECKING([whether to place generated files in the source directory])
248   dnl generated-files-in-srcdir is disabled by default
249   AC_ARG_ENABLE(generated-files-in-srcdir, 
250     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
251                     [put copies of generated files in source dir
252                      intended for creating source tarballs for users
253                      without texinfo bison or flex])],
254       generated_files_in_srcdir=$enableval,
255       generated_files_in_srcdir=no)
257 AC_MSG_RESULT($generated_files_in_srcdir)
259 if test "$generated_files_in_srcdir" = "yes"; then
260   GENINSRC=''
261 else
262   GENINSRC='#'
264 AC_SUBST(GENINSRC)
266 # -------------------
267 # Find default linker
268 # -------------------
270 # With GNU ld
271 AC_ARG_WITH(gnu-ld,
272 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
273 gnu_ld_flag="$with_gnu_ld",
274 gnu_ld_flag=no)
276 case $target in
277     *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
278     *) ld64_flag=no;;
279 esac
281 # With pre-defined ld
282 AC_ARG_WITH(ld,
283 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
284 DEFAULT_LINKER="$with_ld")
285 if test x"${DEFAULT_LINKER+set}" = x"set"; then
286   if test ! -x "$DEFAULT_LINKER"; then
287     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
288   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
289     gnu_ld_flag=yes
290   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
291     ld64_flag=yes
292   fi
293   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
294         [Define to enable the use of a default linker.])
297 AC_MSG_CHECKING([whether a default linker was specified])
298 if test x"${DEFAULT_LINKER+set}" = x"set"; then
299   if test x"$gnu_ld_flag" = x"no"; then
300     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
301   else
302     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
303   fi
304 else
305   AC_MSG_RESULT(no)
308 # With demangler in GNU ld
309 AC_ARG_WITH(demangler-in-ld,
310 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
311 demangler_in_ld="$with_demangler_in_ld",
312 demangler_in_ld=yes)
314 # ----------------------
315 # Find default assembler
316 # ----------------------
318 # With GNU as
319 AC_ARG_WITH(gnu-as,
320 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
321 gas_flag="$with_gnu_as",
322 gas_flag=no)
324 AC_ARG_WITH(as,
325 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
326 DEFAULT_ASSEMBLER="$with_as")
327 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
328   if test ! -x "$DEFAULT_ASSEMBLER"; then
329     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
330   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
331     gas_flag=yes
332   fi
333   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
334         [Define to enable the use of a default assembler.])
337 AC_MSG_CHECKING([whether a default assembler was specified])
338 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
339   if test x"$gas_flag" = x"no"; then
340     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
341   else
342     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
343   fi
344 else
345   AC_MSG_RESULT(no)
348 # ---------------
349 # Find C compiler
350 # ---------------
352 # If a non-executable a.out is present (e.g. created by GNU as above even if
353 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
354 # file, even when creating an executable, so an execution test fails.
355 # Remove possible default executable files to avoid this.
357 # FIXME: This really belongs into AC_PROG_CC and can be removed once
358 # Autoconf includes it.
359 rm -f a.out a.exe b.out
361 # Find the native compiler
362 AC_PROG_CC
363 AC_PROG_CXX
364 ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
366 # Do configure tests with the C++ compiler, since that's what we build with.
367 AC_LANG(C++)
369 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
370 # optimizations to be activated explicitly by the toplevel.
371 case "$CC" in
372   */prev-gcc/xgcc*) ;;
373   *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[       ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" `
374      CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[   ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" ` ;;
375 esac
376 AC_SUBST(CFLAGS)
377 AC_SUBST(CXXFLAGS)
379 # Determine PICFLAG for target gnatlib.
380 GCC_PICFLAG_FOR_TARGET
381 AC_SUBST(PICFLAG_FOR_TARGET)
383 # -------------------------
384 # Check C compiler features
385 # -------------------------
387 AC_USE_SYSTEM_EXTENSIONS
388 AC_PROG_CPP
389 AC_C_INLINE
391 AC_SYS_LARGEFILE
393 # sizeof(char) is 1 by definition.
394 AC_CHECK_SIZEOF(void *)
395 AC_CHECK_SIZEOF(short)
396 AC_CHECK_SIZEOF(int)
397 AC_CHECK_SIZEOF(long)
398 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
399 GCC_STDINT_TYPES
400 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
401   AC_MSG_ERROR([uint64_t or int64_t not found])
404 # check what underlying integer type int64_t uses
405 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
406 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
407 #ifdef HAVE_STDINT_H
408 #include <stdint.h>
409 #endif
410 template <typename T> struct X { };
411 template <>
412 struct X<long> { typedef long t; };
413 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
414 if test "$ac_cv_int64_t_type" = "long"; then
415   AC_DEFINE(INT64_T_IS_LONG, 1,
416   [Define if int64_t uses long as underlying type.])
417 else
418 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
419 #ifdef HAVE_STDINT_H
420 #include <stdint.h>
421 #endif
422 template <typename T> struct X { };
423 template <>
424 struct X<long long> { typedef long long t; };
425 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
428 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
429 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
430 #include <utility>
431 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
432 if test $ac_cv_std_swap_in_utility = yes; then
433   AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
434   [Define if <utility> defines std::swap.])
437 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
438 # If the host compiler is affected by the bug, and we build with optimization
439 # enabled (which happens e.g. when cross-compiling), the pool allocator may
440 # get miscompiled.  Use -fno-strict-aliasing to work around this problem.
441 # Since there is no reliable feature check for the presence of this bug,
442 # we simply use a GCC version number check.  (This should never trigger for
443 # stages 2 or 3 of a native bootstrap.)
444 aliasing_flags=
445 if test "$GCC" = yes; then
446   saved_CXXFLAGS="$CXXFLAGS"
448   # The following test compilation will succeed if and only if $CXX accepts
449   # -fno-strict-aliasing *and* is older than GCC 4.3.
450   CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
451   AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
452   AC_COMPILE_IFELSE([AC_LANG_SOURCE([
453 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
454 #error compiler not affected by placement new aliasing bug
455 #endif
456 ])],
457     [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
458     [AC_MSG_RESULT([no])])
460   CXXFLAGS="$saved_CXXFLAGS"
462 AC_SUBST(aliasing_flags)
466 # ---------------------
467 # Warnings and checking
468 # ---------------------
470 # Check $CC warning features (if it's GCC).
471 # We want to use -pedantic, but we don't want warnings about
472 # * 'long long'
473 # * variadic macros
474 # * overlong strings
475 # * C++11 narrowing conversions in { }
476 # So, we only use -pedantic if we can disable those warnings.
478 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
479 AC_ARG_ENABLE(build-format-warnings,
480   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
481   [],[enable_build_format_warnings=yes])
482 AS_IF([test $enable_build_format_warnings = no],
483       [wf_opt=-Wno-format],[wf_opt=])
484 ACX_PROG_CXX_WARNING_OPTS(
485         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
486                        [-Wcast-qual -Wno-error=format-diag $wf_opt])),
487                        [loose_warn])
488 ACX_PROG_CC_WARNING_OPTS(
489         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
490                        [-Wno-error=format-diag])), [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 -fkeep-static-functions"
732     ;;
733   opt)
734     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2 -fkeep-static-functions"
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 # default stack clash protection guard size as power of twos in bytes.
815 # Please keep these in sync with params.def.
816 stk_clash_min=12
817 stk_clash_max=30
819 # Keep the default value when the option is not used to 0, this allows us to
820 # distinguish between the cases where the user specifially set a value via
821 # configure and when the normal default value is used.
822 AC_ARG_WITH(stack-clash-protection-guard-size,
823 [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
824 [Set the default stack clash protection guard size for specific targets as a power of two in bytes.])],
825 [DEFAULT_STK_CLASH_GUARD_SIZE="$with_stack_clash_protection_guard_size"], [DEFAULT_STK_CLASH_GUARD_SIZE=0])
826 if test $DEFAULT_STK_CLASH_GUARD_SIZE -ne 0 \
827      && (test $DEFAULT_STK_CLASH_GUARD_SIZE -lt $stk_clash_min \
828          || test $DEFAULT_STK_CLASH_GUARD_SIZE -gt $stk_clash_max); then
829   AC_MSG_ERROR(m4_normalize([
830                 Invalid value $DEFAULT_STK_CLASH_GUARD_SIZE for --with-stack-clash-protection-guard-size. \
831                 Must be between $stk_clash_min and $stk_clash_max.]))
834 AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
835         [Define to larger than zero set the default stack clash protector size.])
837 # Enable __cxa_atexit for C++.
838 AC_ARG_ENABLE(__cxa_atexit,
839 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
840 [], [])
842 # Enable C extension for decimal float if target supports it.
843 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
845 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
846 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
847 [Define to 1 to enable decimal float extension to C.])
849 # Use default_decimal_float for dependency.
850 enable_decimal_float=$default_decimal_float
852 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
853 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
854 [Define to 1 to specify that we are using the BID decimal floating
855 point format instead of DPD])
857 # Enable C extension for fixed-point arithmetic.
858 AC_ARG_ENABLE(fixed-point,
859 [AS_HELP_STRING([--enable-fixed-point],
860                 [enable fixed-point arithmetic extension to C])],
863   case $target in
864     arm*)
865       enable_fixed_point=yes
866       ;;
868     mips*-*-*)
869       enable_fixed_point=yes
870       ;;
871     *)
872       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
873       enable_fixed_point=no
874       ;;
875   esac
877 AC_SUBST(enable_fixed_point)
879 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
880 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
881 [Define to 1 to enable fixed-point arithmetic extension to C.])
883 # Enable threads
884 # Pass with no value to take the default
885 # Pass with a value to specify a thread package
886 AC_ARG_ENABLE(threads,
887 [AS_HELP_STRING([[--enable-threads[=LIB]]],
888                 [enable thread usage for target GCC,
889                  using LIB thread package])],,
890 [enable_threads=''])
892 AC_ARG_ENABLE(tls,
893 [AS_HELP_STRING([--enable-tls],
894                 [enable or disable generation of tls code
895                  overriding the assembler check for tls support])],
897   case $enable_tls in
898     yes | no) ;;
899     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
900 Valid choices are 'yes' and 'no'.]) ;;
901   esac
902 ], [enable_tls=''])
904 AC_ARG_ENABLE(vtable-verify,
905 [AS_HELP_STRING([--enable-vtable-verify],
906                 [enable vtable verification feature])],,
907 [enable_vtable_verify=no])
908 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
909 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
910 [Define 0/1 if vtable verification feature is enabled.])
912 AC_ARG_ENABLE(objc-gc,
913 [AS_HELP_STRING([--enable-objc-gc],
914                 [enable the use of Boehm's garbage collector with
915                  the GNU Objective-C runtime])],
916 if test x$enable_objc_gc = xno; then
917         objc_boehm_gc=''
918 else
919         objc_boehm_gc=1
921 objc_boehm_gc='')
923 AC_ARG_WITH(dwarf2,
924 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
925 dwarf2="$with_dwarf2",
926 dwarf2=no)
928 AC_ARG_ENABLE(shared,
929 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
931   case $enable_shared in
932   yes | no) ;;
933   *)
934     enable_shared=no
935     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
936     for pkg in $enableval; do
937       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
938         enable_shared=yes
939       fi
940     done
941     IFS="$ac_save_ifs"
942     ;;
943   esac
944 ], [enable_shared=yes])
945 AC_SUBST(enable_shared)
947 AC_ARG_ENABLE(gcov,
948 [  --disable-gcov          don't provide libgcov and related host tools],
949 [], [enable_gcov=yes])
950 AC_SUBST(enable_gcov)
952 AC_ARG_WITH(specs,
953   [AS_HELP_STRING([--with-specs=SPECS],
954                   [add SPECS to driver command-line processing])],
955   [CONFIGURE_SPECS=$withval],
956   [CONFIGURE_SPECS=]
958 AC_SUBST(CONFIGURE_SPECS)
960 ACX_PKGVERSION([GCC])
961 ACX_BUGURL([https://gcc.gnu.org/bugs/])
963 # Allow overriding the default URL for documentation
964 AC_ARG_WITH(documentation-root-url,
965     AS_HELP_STRING([--with-documentation-root-url=URL],
966                    [Root for documentation URLs]),
967     [case "$withval" in
968       yes) AC_MSG_ERROR([documentation root URL not specified]) ;;
969       no)  AC_MSG_ERROR([documentation root URL not specified]) ;;
970       *)   DOCUMENTATION_ROOT_URL="$withval"
971            ;;
972      esac],
973      DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/gcc/"
975 AC_SUBST(DOCUMENTATION_ROOT_URL)
977 # Sanity check enable_languages in case someone does not run the toplevel
978 # configure # script.
979 AC_ARG_ENABLE(languages,
980 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
981 [case ,${enable_languages}, in
982        ,,|,yes,)
983                 # go safe -- we cannot be much sure without the toplevel
984                 # configure's
985                 # analysis of which target libs are present and usable
986                 enable_languages=c
987                 ;;
988          *,all,*)
989                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
990                 ;;
991         *,c,*)
992                 ;;
993         *)
994                 enable_languages=c,${enable_languages}
995                 ;;
996 esac],
997 [enable_languages=c])
999 # If top-level libada has been disabled, then wire in install-gnatlib
1000 # invocation with `make install', so that one can build and install
1001 # the library manually with `make -C gcc all gnatlib gnattools install'.
1002 if test x"$enable_libada" = xno; then
1003   gnat_install_lib=gnat-install-lib
1004 else
1005   gnat_install_lib=
1007 AC_SUBST(gnat_install_lib)
1009 if test x"$enable_as_accelerator_for" != x; then
1010   AC_DEFINE(ACCEL_COMPILER, 1,
1011     [Define if this compiler should be built as the offload target compiler.])
1012   enable_as_accelerator=yes
1013   case "${target}" in
1014     *-intelmicemul-*)
1015       # In this case we expect offload compiler to be built as native, so we
1016       # need to rename the driver to avoid clashes with host's drivers.
1017       program_transform_name="s&^&${target}-&" ;;
1018   esac
1019   sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
1020   program_transform_name=`echo $program_transform_name | sed $sedscript`
1021   accel_dir_suffix=/accel/${target_noncanonical}
1022   real_target_noncanonical=${enable_as_accelerator_for}
1024 AC_SUBST(enable_as_accelerator)
1025 AC_SUBST(real_target_noncanonical)
1026 AC_SUBST(accel_dir_suffix)
1028 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
1029   tgt=`echo $tgt | sed 's/=.*//'`
1031   if echo "$tgt" | grep "^hsa" > /dev/null ; then
1032     enable_hsa=1
1033   else
1034     enable_offloading=1
1035     case "$tgt" in
1036       *-intelmicemul-*)
1037         omp_device_property=omp-device-properties-i386
1038         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
1039         ;;
1040       nvptx*-*)
1041         omp_device_property=omp-device-properties-nvptx
1042         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1043         ;;
1044     esac
1045     omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1046     omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1047   fi
1049   if test x"$offload_targets" = x; then
1050     offload_targets=$tgt
1051   else
1052     offload_targets="$offload_targets,$tgt"
1053   fi
1054 done
1055 AC_SUBST(omp_device_properties)
1056 AC_SUBST(omp_device_property_deps)
1058 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1059   [Define to offload targets, separated by commas.])
1060 if test x"$enable_offloading" != x; then
1061   AC_DEFINE(ENABLE_OFFLOADING, 1,
1062     [Define this to enable support for offloading.])
1063 else
1064   AC_DEFINE(ENABLE_OFFLOADING, 0,
1065     [Define this to enable support for offloading.])
1068 if test x"$enable_hsa" = x1 ; then
1069   AC_DEFINE(ENABLE_HSA, 1,
1070     [Define this to enable support for generating HSAIL.])
1073 AC_ARG_WITH(multilib-list,
1074 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
1076 with_multilib_list=default)
1078 # -------------------------
1079 # Checks for other programs
1080 # -------------------------
1082 AC_PROG_MAKE_SET
1084 # Find some useful tools
1085 AC_PROG_AWK
1086 # We need awk to create options.c and options.h.
1087 # Bail out if it's missing.
1088 case ${AWK} in
1089   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1090 esac
1092 gcc_AC_PROG_LN_S
1093 ACX_PROG_LN($LN_S)
1094 AC_PROG_RANLIB
1095 ranlib_flags=""
1096 AC_SUBST(ranlib_flags)
1097      
1098 gcc_AC_PROG_INSTALL
1100 # See if cmp has --ignore-initial.
1101 gcc_AC_PROG_CMP_IGNORE_INITIAL
1103 # See if we have the mktemp command.
1104 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1106 # See if makeinfo has been installed and is modern enough
1107 # that we can use it.
1108 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1109   [GNU texinfo.* \([0-9][0-9.]*\)],
1110   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1111 if test $gcc_cv_prog_makeinfo_modern = no; then
1112   AC_MSG_WARN([
1113 *** Makeinfo is missing or too old.
1114 *** Info documentation will not be built.])
1115   BUILD_INFO=
1116 else
1117   BUILD_INFO=info
1119 AC_SUBST(BUILD_INFO)
1121 # Is pod2man recent enough to regenerate manpages?
1122 AC_MSG_CHECKING([for recent Pod::Man])
1123 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1124   AC_MSG_RESULT(yes)
1125   GENERATED_MANPAGES=generated-manpages
1126 else
1127   AC_MSG_RESULT(no)
1128   GENERATED_MANPAGES=
1130 AC_SUBST(GENERATED_MANPAGES)
1132 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1134 # How about lex?
1135 dnl Don't use AC_PROG_LEX; we insist on flex.
1136 dnl LEXLIB is not useful in gcc.
1137 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1139 # Bison?
1140 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1142 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1143 # check for build == host before using them.
1145 # NM
1146 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1147   && test -d ../binutils ; then
1148   NM='${objdir}/../binutils/nm-new'
1149 else
1150   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1153 # AR
1154 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1155   && test -d ../binutils ; then
1156   AR='${objdir}/../binutils/ar'
1157 else
1158   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1161 # The jit documentation looks better if built with sphinx, but can be
1162 # built with texinfo if sphinx is not available.
1163 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1164 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1166 # --------------------
1167 # Checks for C headers
1168 # --------------------
1170 # Need to reject headers which give warnings, so that the -Werror bootstrap
1171 # works later. *sigh*  This needs to come before all header checks.
1172 AC_PROG_CPP_WERROR
1174 AC_HEADER_STDC
1175 AC_HEADER_TIME
1176 ACX_HEADER_STRING
1177 AC_HEADER_SYS_WAIT
1178 AC_HEADER_TIOCGWINSZ
1179 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1180                  fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1181                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1182                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1184 # Check for thread headers.
1185 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1186 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1188 # These tests can't be done till we know if we have limits.h.
1189 gcc_AC_C_CHAR_BIT
1190 AC_C_BIGENDIAN
1192 # ----------------------
1193 # Checks for C++ headers
1194 # ----------------------
1196 dnl Autoconf will give an error in the configure script if there is no
1197 dnl C++ preprocessor.  Hack to prevent that.
1198 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1199 AC_PROG_CXXCPP
1200 m4_popdef([AC_MSG_ERROR])[]dnl
1202 AC_CHECK_HEADERS(unordered_map)
1203 AC_CHECK_HEADERS(tr1/unordered_map)
1204 AC_CHECK_HEADERS(ext/hash_map)
1206 # --------
1207 # Dependency checking.
1208 # --------
1210 ZW_CREATE_DEPDIR
1211 AC_CONFIG_COMMANDS([gccdepdir],[
1212   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1213   for lang in $subdirs c-family common
1214   do
1215       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1216   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1218 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1220 # --------
1221 # UNSORTED
1222 # --------
1225 # These libraries may be used by collect2.
1226 # We may need a special search path to get them linked.
1227 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1228 [save_LIBS="$LIBS"
1229 for libs in '' -lld -lmld \
1230                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1231                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1233         LIBS="$libs"
1234         AC_TRY_LINK_FUNC(ldopen,
1235                 [gcc_cv_collect2_libs="$libs"; break])
1236 done
1237 LIBS="$save_LIBS"
1238 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1239 case $gcc_cv_collect2_libs in
1240         "none required")        ;;
1241         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1242 esac
1243 AC_SUBST(COLLECT2_LIBS)
1245 # When building Ada code on Alpha, we need exc_resume which is usually in
1246 # -lexc.  So test for it.
1247 save_LIBS="$LIBS"
1248 LIBS=
1249 AC_SEARCH_LIBS(exc_resume, exc)
1250 GNAT_LIBEXC="$LIBS"
1251 LIBS="$save_LIBS"
1252 AC_SUBST(GNAT_LIBEXC)
1254 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1255 save_LIBS="$LIBS"
1256 LIBS=
1257 AC_SEARCH_LIBS(kstat_open, kstat)
1258 EXTRA_GCC_LIBS="$LIBS"
1259 LIBS="$save_LIBS"
1260 AC_SUBST(EXTRA_GCC_LIBS)
1262 # Some systems put ldexp and frexp in libm instead of libc; assume
1263 # they're both in the same place.  jcf-dump needs them.
1264 save_LIBS="$LIBS"
1265 LIBS=
1266 AC_SEARCH_LIBS(ldexp, m)
1267 LDEXP_LIB="$LIBS"
1268 LIBS="$save_LIBS"
1269 AC_SUBST(LDEXP_LIB)
1271 # Some systems need dlopen
1272 save_LIBS="$LIBS"
1273 LIBS=
1274 AC_SEARCH_LIBS(dlopen, dl)
1275 DL_LIB="$LIBS"
1276 LIBS="$save_LIBS"
1277 AC_SUBST(DL_LIB)
1279 # Use <inttypes.h> only if it exists,
1280 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1281 # PRId64
1282 AC_MSG_CHECKING(for inttypes.h)
1283 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1284 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1285 [[#define __STDC_FORMAT_MACROS
1286 #include <sys/types.h>
1287 #include <inttypes.h>]],
1288   [[intmax_t i = -1;
1289 #ifndef PRId64
1290 choke me
1291 #endif]])],
1292   [gcc_cv_header_inttypes_h=yes],
1293   [gcc_cv_header_inttypes_h=no])])
1294 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1295 if test $gcc_cv_header_inttypes_h = yes; then
1296   AC_DEFINE(HAVE_INTTYPES_H, 1,
1297         [Define if you have a working <inttypes.h> header file.])
1300 # Look for the ZSTD package.
1301 ZSTD_INCLUDE=
1302 ZSTD_LIB=
1303 AC_SUBST(ZSTD_INCLUDE)
1304 AC_SUBST(ZSTD_LIB)
1305 ZSTD_CPPFLAGS=
1306 ZSTD_LDFLAGS=
1307 AC_ARG_WITH(zstd,
1308         [AS_HELP_STRING([--with-zstd=PATH],
1309                 [specify prefix directory for installed zstd library.
1310                  Equivalent to --with-zstd-include=PATH/include
1311                  plus --with-zstd-lib=PATH/lib])])
1312 AC_ARG_WITH(zstd-include,
1313         [AS_HELP_STRING([--with-zstd-include=PATH],
1314                 [specify directory for installed zstd include files])])
1315 AC_ARG_WITH(zstd-lib,
1316         [AS_HELP_STRING([--with-zstd-lib=PATH],
1317                 [specify directory for the installed zstd library])])
1318 case "x$with_zstd" in
1319   x) ;;
1320   xno)
1321     ZSTD_INCLUDE=no
1322     ZSTD_LIB=no
1323     ;;
1324   *) ZSTD_INCLUDE=$with_zstd/include
1325      ZSTD_LIB=$with_zstd/lib
1326      ;;
1327 esac
1328 if test "x$with_zstd_include" != x; then
1329   ZSTD_INCLUDE=$with_zstd_include
1331 if test "x$with_zstd_lib" != x; then
1332   ZSTD_LIB=$with_zstd_lib
1334 if test "x$ZSTD_INCLUDE" != x \
1335    && test "x$ZSTD_INCLUDE" != xno; then
1336   ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1338 if test "x$ZSTD_LIB" != x \
1339    && test "x$ZSTD_LIB" != xno; then
1340   ZSTD_LDFLAGS=-L$ZSTD_LIB
1343 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1344 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1346 AC_MSG_CHECKING(for zstd.h)
1347 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1348 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1349 [[#include <zstd.h>]])],
1350   [gcc_cv_header_zstd_h=yes],
1351   [gcc_cv_header_zstd_h=no])])
1352 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1353 if test $gcc_cv_header_zstd_h = yes; then
1354   AC_DEFINE(HAVE_ZSTD_H, 1,
1355         [Define if you have a working <zstd.h> header file.])
1358 # LTO can use zstd compression algorithm
1359 save_LIBS="$LIBS"
1360 LIBS=
1361 AC_SEARCH_LIBS(ZSTD_compress, zstd)
1362 ZSTD_LIB="$LIBS"
1363 LIBS="$save_LIBS"
1364 AC_SUBST(ZSTD_LIB)
1366 dnl Disabled until we have a complete test for buggy enum bitfields.
1367 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1369 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1370   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1371   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1372   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1373   putchar_unlocked putc_unlocked)
1374 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1375         popen sysconf strsignal getrusage nl_langinfo \
1376         gettimeofday mbstowcs wcswidth mmap setlocale \
1377         gcc_UNLOCKED_FUNCS madvise mallinfo)
1379 if test x$ac_cv_func_mbstowcs = xyes; then
1380   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1381 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1382 int main()
1384   mbstowcs(0, "", 0);
1385   return 0;
1386 }]])],
1387     [gcc_cv_func_mbstowcs_works=yes],
1388     [gcc_cv_func_mbstowcs_works=no],
1389     [gcc_cv_func_mbstowcs_works=yes])])
1390   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1391     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1392   [Define this macro if mbstowcs does not crash when its
1393    first argument is NULL.])
1394   fi
1397 AC_CHECK_TYPE(ssize_t, int)
1398 AC_CHECK_TYPE(caddr_t, char *)
1400 GCC_AC_FUNC_MMAP_BLACKLIST
1402 case "${host}" in
1403 *-*-*vms*)
1404   # Under VMS, vfork works very differently than on Unix. The standard test 
1405   # won't work, and it isn't easily adaptable. It makes more sense to
1406   # just force it.
1407   ac_cv_func_vfork_works=yes
1408   ;;
1409 esac
1410 AC_FUNC_FORK
1412 AM_ICONV
1414 # Until we have in-tree GNU iconv:
1415 LIBICONV_DEP=
1416 if test -f "$LTLIBICONV"; then
1417   LIBICONV_DEP=$LTLIBICONV
1419 AC_SUBST(LIBICONV_DEP)
1421 AM_LC_MESSAGES
1423 AM_LANGINFO_CODESET
1425 # We will need to find libiberty.h and ansidecl.h
1426 saved_CFLAGS="$CFLAGS"
1427 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1428 saved_CXXFLAGS="$CXXFLAGS"
1429 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1431 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1432 # normal autoconf function for these.  But force definition of
1433 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1434 # basename handling in libiberty.h.
1435 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1436 #undef HAVE_DECL_BASENAME
1437 #define HAVE_DECL_BASENAME 1
1438 #include "ansidecl.h"
1439 #include "system.h"])
1441 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1442         madvise stpcpy strnlen strsignal strverscmp \
1443         strtol strtoul strtoll strtoull setenv unsetenv \
1444         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1445         free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1446 #include "ansidecl.h"
1447 #include "system.h"])
1449 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1450 #include "ansidecl.h"
1451 #include "system.h"
1452 #ifdef HAVE_SYS_RESOURCE_H
1453 #include <sys/resource.h>
1454 #endif
1457 gcc_AC_CHECK_DECLS(mallinfo, , ,[
1458 #include "ansidecl.h"
1459 #include "system.h"
1460 #ifdef HAVE_MALLOC_H
1461 #include <malloc.h>
1462 #endif
1465 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1466 #include "ansidecl.h"
1467 #include "system.h"
1468 #ifdef HAVE_SYS_RESOURCE_H
1469 #include <sys/resource.h>
1470 #endif
1471 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1472 [Define to `long' if <sys/resource.h> doesn't define.])])
1474 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1475 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1476 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1477 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1478 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1479 #include "ansidecl.h"
1480 #include "system.h"
1481 #ifdef HAVE_LDFCN_H
1482 #undef FREAD
1483 #undef FWRITE
1484 #include <ldfcn.h>
1485 #endif
1488 gcc_AC_CHECK_DECLS(times, , ,[
1489 #include "ansidecl.h"
1490 #include "system.h"
1491 #ifdef HAVE_SYS_TIMES_H
1492 #include <sys/times.h>
1493 #endif
1496 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1497 #include "ansidecl.h"
1498 #include "system.h"
1499 #include <signal.h>
1502 # More time-related stuff.
1503 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1504 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1505 #include "ansidecl.h"
1506 #include "system.h"
1507 #ifdef HAVE_SYS_TIMES_H
1508 #include <sys/times.h>
1509 #endif
1510 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1511 if test $ac_cv_struct_tms = yes; then
1512   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1513   [Define if <sys/times.h> defines struct tms.])
1516 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1517 # revisit after autoconf 2.50.
1518 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1519 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1520 #include "ansidecl.h"
1521 #include "system.h"
1522 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1523 if test $gcc_cv_type_clock_t = yes; then
1524   AC_DEFINE(HAVE_CLOCK_T, 1,
1525   [Define if <time.h> defines clock_t.])
1528 # Check if F_SETLKW is supported by fcntl.
1529 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1530 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1531 #include <fcntl.h>]], [[
1532 struct flock fl;
1533 fl.l_whence = 0;
1534 fl.l_start = 0;
1535 fl.l_len = 0;
1536 fl.l_pid = 0;
1537 return fcntl (1, F_SETLKW, &fl);]])],
1538 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1539 if test $ac_cv_f_setlkw = yes; then
1540   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1541   [Define if F_SETLKW supported by fcntl.])
1544 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1545 CFLAGS="$saved_CFLAGS"
1546 CXXFLAGS="$saved_CXXFLAGS"
1548 # mkdir takes a single argument on some systems. 
1549 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1551 # File extensions
1552 manext='.1'
1553 objext='.o'
1554 AC_SUBST(manext)
1555 AC_SUBST(objext)
1557 # With Setjmp/Longjmp based exception handling.
1558 AC_ARG_ENABLE(sjlj-exceptions,
1559 [AS_HELP_STRING([--enable-sjlj-exceptions],
1560                 [arrange to use setjmp/longjmp exception handling])],
1561 [case $target in
1562   *-*-hpux10*)
1563     if test $enableval != yes; then
1564       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1565       enableval=yes
1566     fi
1567     ;;
1568 esac
1569 force_sjlj_exceptions=yes],
1570 [case $target in
1571   *-*-hpux10*)
1572     force_sjlj_exceptions=yes
1573     enableval=yes
1574     ;;
1575   lm32*-*-*)
1576      force_sjlj_exceptions=yes
1577      enableval=yes
1578      ;;
1579   *)
1580     force_sjlj_exceptions=no
1581     ;;
1582 esac])
1583 if test $force_sjlj_exceptions = yes; then
1584   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1585   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1586     [Define 0/1 to force the choice for exception handling model.])
1589 # --------------------------------------------------------
1590 # Build, host, and target specific configuration fragments
1591 # --------------------------------------------------------
1593 # Collect build-machine-specific information.
1594 . ${srcdir}/config.build || exit 1
1596 # Collect host-machine-specific information.
1597 . ${srcdir}/config.host || exit 1
1599 target_gtfiles=
1601 # Collect target-machine-specific information.
1602 . ${srcdir}/config.gcc || exit 1
1604 extra_objs="${host_extra_objs} ${extra_objs}"
1605 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1607 # Default the target-machine variables that were not explicitly set.
1608 if test x"$tm_file" = x
1609 then tm_file=$cpu_type/$cpu_type.h; fi
1611 if test x"$extra_headers" = x
1612 then extra_headers=; fi
1614 if test x$md_file = x
1615 then md_file=$cpu_type/$cpu_type.md; fi
1617 if test x$out_file = x
1618 then out_file=$cpu_type/$cpu_type.c; fi
1620 if test x"$tmake_file" = x
1621 then tmake_file=$cpu_type/t-$cpu_type
1624 # Support --enable-initfini-array.
1625 if test x$enable_initfini_array != xno; then
1626   tm_file="${tm_file} initfini-array.h"
1629 if test x"$dwarf2" = xyes
1630 then tm_file="$tm_file tm-dwarf2.h"
1633 # Say what files are being used for the output code and MD file.
1634 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1635 echo "Using \`$srcdir/config/$md_file' as machine description file."
1637 # If any of the xm_file variables contain nonexistent files, warn
1638 # about them and drop them.
1641 for x in $build_xm_file; do
1642   if    test -f $srcdir/config/$x
1643   then      bx="$bx $x"
1644   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1645   fi
1646 done
1647 build_xm_file="$bx"
1650 for x in $host_xm_file; do
1651   if    test -f $srcdir/config/$x
1652   then      hx="$hx $x"
1653   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1654   fi
1655 done
1656 host_xm_file="$hx"
1659 for x in $xm_file; do
1660   if    test -f $srcdir/config/$x
1661   then      tx="$tx $x"
1662   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1663   fi
1664 done
1665 xm_file="$tx"
1667 count=a
1668 for f in $tm_file; do
1669         count=${count}x
1670 done
1671 if test $count = ax; then
1672         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1673 else
1674         echo "Using the following target machine macro files:"
1675         for f in $tm_file; do
1676                 echo "  $srcdir/config/$f"
1677         done
1680 if test x$use_long_long_for_widest_fast_int = xyes; then
1681         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1682 [Define to 1 if the 'long long' type is wider than 'long' but still
1683 efficiently supported by the host hardware.])
1686 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1687 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1689 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1690 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1692 count=a
1693 for f in $host_xm_file; do
1694         count=${count}x
1695 done
1696 if test $count = a; then
1697         :
1698 elif test $count = ax; then
1699         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1700 else
1701         echo "Using the following host machine macro files:"
1702         for f in $host_xm_file; do
1703                 echo "  $srcdir/config/$f"
1704         done
1706 echo "Using ${out_host_hook_obj} for host machine hooks."
1708 if test "$host_xm_file" != "$build_xm_file"; then
1709         count=a
1710         for f in $build_xm_file; do
1711                 count=${count}x
1712         done
1713         if test $count = a; then
1714                 :
1715         elif test $count = ax; then
1716                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1717         else
1718                 echo "Using the following build machine macro files:"
1719                 for f in $build_xm_file; do
1720                         echo "  $srcdir/config/$f"
1721                 done
1722         fi
1725 if test -n "$configured_native_system_header_dir"; then
1726   native_system_header_dir=$configured_native_system_header_dir
1728 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1729 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1731 case ${host} in
1732   powerpc*-*-darwin*)
1733     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1734       gcc_cv_mcontext_underscores,
1735       AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1736 #include <sys/cdefs.h>
1737 #include <sys/signal.h>
1738 #include <ucontext.h>
1739 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1740 ])],
1741         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1742       if test $gcc_cv_mcontext_underscores = yes; then
1743         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1744           [mcontext_t fields start with __])
1745       fi
1746     ;;
1747 esac
1749 # ---------
1750 # Threading
1751 # ---------
1753 # Check if a valid thread package
1754 case ${enable_threads} in
1755   "" | no)
1756     # No threads
1757     target_thread_file='single'
1758     ;;
1759   yes)
1760     # default
1761     target_thread_file='single'
1762     ;;
1763   aix | dce | lynx | mipssde | posix | rtems | \
1764   single | tpf | vxworks | win32)
1765     target_thread_file=${enable_threads}
1766     ;;
1767   *)
1768     echo "${enable_threads} is an unknown thread package" 1>&2
1769     exit 1
1770     ;;
1771 esac
1773 if test x${thread_file} = x; then
1774   # No thread file set by target-specific clauses in config.gcc,
1775   # so use file chosen by default logic above
1776   thread_file=${target_thread_file}
1779 # --------
1780 # UNSORTED
1781 # --------
1783 use_cxa_atexit=no
1784 if test x$enable___cxa_atexit = xyes || \
1785    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1786   if test x$host = x$target; then
1787     case $host in
1788       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1789       # keyed to flag_use_cxa_atexit
1790       *-*-mingw32*)
1791         use_cxa_atexit=yes
1792         ;;
1793       powerpc-ibm-aix*)
1794         use_cxa_atexit=yes
1795         ;;
1796       *)
1797         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1798           [echo "__cxa_atexit can't be enabled on this target"])
1799         ;;
1800     esac
1801   else
1802     # We can't check for __cxa_atexit when building a cross, so assume
1803     # it is available 
1804     use_cxa_atexit=yes
1805   fi
1806   if test x$use_cxa_atexit = xyes; then
1807     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1808       [Define if you want to use __cxa_atexit, rather than atexit, to
1809       register C++ destructors for local statics and global objects.
1810       This is essential for fully standards-compliant handling of
1811       destructors, but requires __cxa_atexit in libc.])
1812   fi
1815 # Look for a file containing extra machine modes.
1816 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1817   extra_modes_file='$(srcdir)'/config/${extra_modes}
1818   AC_SUBST(extra_modes_file)
1819   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1820   [Define to the name of a file containing a list of extra machine modes
1821    for this architecture.])
1824 # Convert extra_options into a form suitable for Makefile use.
1825 extra_opt_files=
1826 all_opt_files=
1827 for f in $extra_options; do
1828   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1829   all_opt_files="$all_opt_files $srcdir/config/$f"
1830 done
1831 AC_SUBST(extra_opt_files)
1833 # auto-host.h is the file containing items generated by autoconf and is
1834 # the first file included by config.h.
1835 # If host=build, it is correct to have bconfig include auto-host.h
1836 # as well.  If host!=build, we are in error and need to do more 
1837 # work to find out the build config parameters.
1838 if test x$host = x$build
1839 then
1840         build_auto=auto-host.h
1841         HAVE_AUTO_BUILD='# '
1842 else
1843         # We create a subdir, then run autoconf in the subdir.
1844         # To prevent recursion we set host and build for the new
1845         # invocation of configure to the build for this invocation
1846         # of configure. 
1847         tempdir=build.$$
1848         rm -rf $tempdir
1849         mkdir $tempdir
1850         cd $tempdir
1851         case ${srcdir} in
1852         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1853         *) realsrcdir=../${srcdir};;
1854         esac
1855         # Clearing GMPINC is necessary to prevent host headers being
1856         # used by the build compiler.  Defining GENERATOR_FILE stops
1857         # system.h from including gmp.h.
1858         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1859         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1860         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1861         GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1862         ${realsrcdir}/configure \
1863                 --enable-languages=${enable_languages-all} \
1864                 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
1865                 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
1866                 --target=$target_alias --host=$build_alias \
1867                 --build=$build_alias || exit # retaining $tempdir
1869         # We just finished tests for the build machine, so rename
1870         # the file auto-build.h in the gcc directory.
1871         mv auto-host.h ../auto-build.h
1872         cd ..
1873         rm -rf $tempdir
1874         build_auto=auto-build.h
1875         HAVE_AUTO_BUILD=
1877 AC_SUBST(build_subdir)
1878 AC_SUBST(HAVE_AUTO_BUILD)
1880 tm_file="${tm_file} defaults.h"
1881 tm_p_file="${tm_p_file} tm-preds.h"
1882 tm_d_file="${tm_d_file} defaults.h"
1883 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1884 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1885 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1886 # put this back in temporarily.
1887 xm_file="auto-host.h ansidecl.h ${xm_file}"
1889 # --------
1890 # UNSORTED
1891 # --------
1893 changequote(,)dnl
1894 # Compile in configure arguments.
1895 if test -f configargs.h ; then
1896         # Being re-configured.
1897         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1898         gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
1899         if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
1900                 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1901         fi
1902 else
1903         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1906 # Double all backslashes and backslash all quotes to turn
1907 # gcc_config_arguments into a C string.
1908 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1909 $gcc_config_arguments
1911 gcc_config_arguments_str=`cat conftest.out`
1912 rm -f conftest.out
1914 cat > configargs.h <<EOF
1915 /* Generated automatically. */
1916 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1917 static const char thread_model[] = "$thread_file";
1919 static const struct {
1920   const char *name, *value;
1921 } configure_default_options[] = $configure_default_options;
1923 changequote([,])dnl
1925 changequote(,)dnl
1926 gcc_BASEVER=`cat $srcdir/BASE-VER`
1927 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1928 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1929 if test -f $srcdir/REVISION ; then
1930         gcc_REVISION=`cat $srcdir/REVISION`
1931 else
1932         gcc_REVISION=""
1934 cat > plugin-version.h <<EOF
1935 #include "configargs.h"
1937 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1938 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1939 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1940 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1942 static char basever[] = "$gcc_BASEVER";
1943 static char datestamp[] = "$gcc_DATESTAMP";
1944 static char devphase[] = "$gcc_DEVPHASE";
1945 static char revision[] = "$gcc_REVISION";
1947 /* FIXME plugins: We should make the version information more precise.
1948    One way to do is to add a checksum. */
1950 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1951                                                 devphase, revision,
1952                                                 configuration_arguments};
1954 changequote([,])dnl
1956 # Determine what GCC version number to use in filesystem paths.
1957 GCC_BASE_VER
1959 # Internationalization
1960 ZW_GNU_GETTEXT_SISTER_DIR
1962 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1963 # -liconv on the link line twice.
1964 case "$LIBINTL" in *$LIBICONV*)
1965         LIBICONV= ;;
1966 esac
1968 AC_ARG_ENABLE(secureplt,
1969 [AS_HELP_STRING([--enable-secureplt],
1970                 [enable -msecure-plt by default for PowerPC])],
1971 [], [])
1973 AC_ARG_ENABLE(mingw-wildcard,
1974 [AS_HELP_STRING([--enable-mingw-wildcard],
1975                 [Set whether to expand wildcard on command-line.
1976                  Default to platform configuration])],
1977 [],[enable_mingw_wildcard=platform])
1978 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
1979       [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
1980                  $(test x"$enable_mingw_wildcard" = xno; echo $?),
1981                  [Value to set mingw's _dowildcard to.])])
1983 AC_ARG_ENABLE(large-address-aware,
1984 [AS_HELP_STRING([--enable-large-address-aware],
1985                 [Link mingw executables with --large-address-aware])])
1986 AS_IF([test x"$enable_large_address_aware" = xyes],
1987   [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
1988     [Define if we should link mingw executables with --large-address-aware])])
1990 AC_ARG_ENABLE(leading-mingw64-underscores,
1991   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1992                  [enable leading underscores on 64 bit mingw targets]),
1993   [],[])
1994 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1995   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1996     [Define if we should use leading underscore on 64 bit mingw targets])])
1998 AC_ARG_ENABLE(cld,
1999 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2000 [enable_cld=no])
2002 AC_ARG_ENABLE(frame-pointer,
2003 [AS_HELP_STRING([--enable-frame-pointer],
2004                 [enable -fno-omit-frame-pointer by default for x86])], [],
2006 case $target_os in
2007 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2008   # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2009   enable_frame_pointer=no
2010   ;;
2012   enable_frame_pointer=yes
2013   ;;
2014 esac
2017 case $target in
2018 i[[34567]]86-*-* | x86_64-*-*)
2019         if test "x$enable_cld" = xyes; then
2020                 tm_defines="${tm_defines} USE_IX86_CLD=1"
2021         fi
2022         if test "x$enable_frame_pointer" = xyes; then
2023                 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2024         fi
2025         ;;
2026 esac
2028 # Windows32 Registry support for specifying GCC installation paths.
2029 AC_ARG_ENABLE(win32-registry,
2030 [AS_HELP_STRING([--disable-win32-registry],
2031                 [disable lookup of installation paths in the
2032                  Registry on Windows hosts])
2033 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2034 AS_HELP_STRING([--enable-win32-registry=KEY],
2035                [use KEY instead of GCC version as the last portion
2036                 of the registry key])],,)
2038 case $host_os in
2039   win32 | pe | cygwin* | mingw32*)
2040     if test "x$enable_win32_registry" != xno; then
2041       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2042     fi
2044     if test "x$enable_win32_registry" != xno; then
2045       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2046   [Define to 1 if installation paths should be looked up in the Windows
2047    Registry. Ignored on non-Windows hosts.])
2049       if test "x$enable_win32_registry" != xyes \
2050          && test "x$enable_win32_registry" != x; then
2051         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2052   [Define to be the last component of the Windows registry key under which
2053    to look for installation paths.  The full key used will be 
2054    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2055    The default is the GCC version number.])
2056       fi
2057     fi
2058   ;;
2059 esac
2061 # Get an absolute path to the GCC top-level source directory
2062 holddir=`${PWDCMD-pwd}`
2063 cd $srcdir
2064 topdir=`${PWDCMD-pwd}`
2065 cd $holddir
2067 # Conditionalize the makefile for this host machine.
2068 xmake_file=
2069 for f in ${host_xmake_file}
2071         if test -f ${srcdir}/config/$f
2072         then
2073                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2074         fi
2075 done
2077 # Conditionalize the makefile for this target machine.
2078 tmake_file_=
2079 for f in ${tmake_file}
2081         if test -f ${srcdir}/config/$f
2082         then
2083                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2084         fi
2085 done
2086 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2088 out_object_file=`basename $out_file .c`.o
2089 common_out_object_file=`basename $common_out_file .c`.o
2091 tm_file_list="options.h"
2092 tm_include_list="options.h insn-constants.h"
2093 for f in $tm_file; do
2094   case $f in
2095     ./* )
2096        f=`echo $f | sed 's/^..//'`
2097        tm_file_list="${tm_file_list} $f"
2098        tm_include_list="${tm_include_list} $f"
2099        ;;
2100     defaults.h )
2101        tm_file_list="${tm_file_list} \$(srcdir)/$f"
2102        tm_include_list="${tm_include_list} $f"
2103        ;;
2104     * )
2105        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2106        tm_include_list="${tm_include_list} config/$f"
2107        ;;
2108   esac
2109 done
2111 tm_p_file_list=
2112 tm_p_include_list=
2113 for f in $tm_p_file; do
2114   case $f in
2115     tm-preds.h )
2116        tm_p_file_list="${tm_p_file_list} $f"
2117        tm_p_include_list="${tm_p_include_list} $f"
2118        ;;
2119     * )
2120        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2121        tm_p_include_list="${tm_p_include_list} config/$f"
2122   esac
2123 done
2125 tm_d_file_list=
2126 tm_d_include_list="options.h insn-constants.h"
2127 for f in $tm_d_file; do
2128   case $f in
2129     defaults.h )
2130        tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
2131        tm_d_include_list="${tm_d_include_list} $f"
2132        ;;
2133     * )
2134        tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2135        tm_d_include_list="${tm_d_include_list} config/$f"
2136        ;;
2137   esac
2138 done
2140 xm_file_list=
2141 xm_include_list=
2142 for f in $xm_file; do
2143   case $f in
2144     ansidecl.h )
2145        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2146        xm_include_list="${xm_include_list} $f"
2147        ;;
2148     auto-host.h )
2149        xm_file_list="${xm_file_list} $f"
2150        xm_include_list="${xm_include_list} $f"
2151        ;;
2152     * )
2153        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2154        xm_include_list="${xm_include_list} config/$f"
2155        ;;
2156   esac
2157 done
2159 host_xm_file_list=
2160 host_xm_include_list=
2161 for f in $host_xm_file; do
2162   case $f in
2163     ansidecl.h )
2164        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2165        host_xm_include_list="${host_xm_include_list} $f"
2166        ;;
2167     auto-host.h )
2168        host_xm_file_list="${host_xm_file_list} $f"
2169        host_xm_include_list="${host_xm_include_list} $f"
2170        ;;
2171     * )
2172        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2173        host_xm_include_list="${host_xm_include_list} config/$f"
2174        ;;
2175   esac
2176 done
2178 build_xm_file_list=
2179 for f in $build_xm_file; do
2180   case $f in
2181     ansidecl.h )
2182        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2183        build_xm_include_list="${build_xm_include_list} $f"
2184        ;;
2185     auto-build.h | auto-host.h )
2186        build_xm_file_list="${build_xm_file_list} $f"
2187        build_xm_include_list="${build_xm_include_list} $f"
2188        ;;
2189     * )
2190        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2191        build_xm_include_list="${build_xm_include_list} config/$f"
2192        ;;
2193   esac
2194 done
2196 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2197 # cross-compiler which does not use the native headers and libraries.
2198 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2199 CROSS=                                          AC_SUBST(CROSS)
2200 ALL=all.internal                                AC_SUBST(ALL)
2201 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2202 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR      AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2204 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2205    test x$build != x$host || test "x$with_build_sysroot" != x; then
2206   if test "x$with_build_sysroot" != x; then
2207     BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2208   else
2209     BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2210   fi
2212   if test x$host != x$target
2213   then
2214     CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2215     ALL=all.cross
2216     SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2217   elif test "x$TARGET_SYSTEM_ROOT" != x; then
2218     SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2219   fi
2221   if test "x$with_build_sysroot" != "x"; then
2222     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2223   elif test "x$with_sysroot" = x; then
2224     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2225   elif test "x$with_sysroot" = xyes; then
2226     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2227   else
2228     target_header_dir="${with_sysroot}${native_system_header_dir}"
2229   fi
2230 else
2231   target_header_dir=${native_system_header_dir}
2234 # If this is a cross-compiler that does not
2235 # have its own set of headers then define
2236 # inhibit_libc
2238 # If this is using newlib, without having the headers available now,
2239 # then define inhibit_libc in LIBGCC2_CFLAGS.
2240 # This prevents libgcc2 from containing any code which requires libc
2241 # support.
2242 : ${inhibit_libc=false}
2243 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2244        test x$with_newlib = xyes ; } &&
2245      { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2246        inhibit_libc=true
2248 AC_SUBST(inhibit_libc)
2250 # When building gcc with a cross-compiler, we need to adjust things so
2251 # that the generator programs are still built with the native compiler.
2252 # Also, we cannot run fixincludes.
2254 # These are the normal (build=host) settings:
2255 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2256 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2257 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2258 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2259 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2260 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2262 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
2263 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
2265 # And these apply if build != host, or we are generating coverage data
2266 if test x$build != x$host || test "x$coverage_flags" != x
2267 then
2268     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2269     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2270     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2272     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
2273     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
2274     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
2275     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
2277 AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
2278 AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
2280 # Expand extra_headers to include complete path.
2281 # This substitutes for lots of t-* files.
2282 extra_headers_list=
2283 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2284 for file in ${extra_headers} ; do
2285   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2286 done
2288 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2289 if test x"$use_gcc_tgmath" = xyes
2290 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2293 # Define collect2 in Makefile.
2294 case $host_can_use_collect2 in
2295   no) collect2= ;;
2296   *) collect2='collect2$(exeext)' ;;
2297 esac
2298 AC_SUBST([collect2])
2300 # Add a definition of USE_COLLECT2 if system wants one.
2301 case $use_collect2 in
2302   no) use_collect2= ;;
2303   "") ;;
2304   *) 
2305     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2306     xm_defines="${xm_defines} USE_COLLECT2"
2307     case $host_can_use_collect2 in
2308       no)
2309         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2310         ;;
2311     esac
2312     ;;
2313 esac
2315 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2316 [Define to the name of the LTO plugin DSO that must be
2317   passed to the linker's -plugin=LIB option.])
2319 # ---------------------------
2320 # Assembler & linker features
2321 # ---------------------------
2323 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2324 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2325 # However when ld-new is first executed from the build tree, libtool will
2326 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2327 # to the build tree.  While doing this we need to use the previous-stage
2328 # linker, or we have an infinite loop.  The presence of a shell script as
2329 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2330 # the gcc/collect-ld script.  So we need to know how libtool works, or
2331 # exec-tool will fail.
2333 m4_defun([_LT_CONFIG_COMMANDS], [])
2334 AC_PROG_LIBTOOL
2335 AC_SUBST(objdir)
2336 AC_SUBST(enable_fast_install)
2338 # Identify the assembler which will work hand-in-glove with the newly
2339 # built GCC, so that we can examine its features.  This is the assembler
2340 # which will be driven by the driver program.
2342 # If build != host, and we aren't building gas in-tree, we identify a
2343 # build->target assembler and hope that it will have the same features
2344 # as the host->target assembler we'll be using.
2345 gcc_cv_gas_major_version=
2346 gcc_cv_gas_minor_version=
2347 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2349 m4_pattern_allow([AS_FOR_TARGET])dnl
2350 AS_VAR_SET_IF(gcc_cv_as,, [
2351 if test -x "$DEFAULT_ASSEMBLER"; then
2352         gcc_cv_as="$DEFAULT_ASSEMBLER"
2353 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2354      && test -f ../gas/Makefile \
2355      && test x$build = x$host; then
2356         gcc_cv_as=../gas/as-new$build_exeext
2357 elif test -x as$build_exeext; then
2358         # Build using assembler in the current directory.
2359         gcc_cv_as=./as$build_exeext
2360 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2361         gcc_cv_as="$AS_FOR_TARGET"
2362 else
2363         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2364 fi])
2366 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2367 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2368 case "$ORIGINAL_AS_FOR_TARGET" in
2369   ./as | ./as$build_exeext) ;;
2370   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2371 esac 
2373 AC_MSG_CHECKING(what assembler to use)
2374 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2375   # Single tree build which includes gas.  We want to prefer it
2376   # over whatever linker top-level may have detected, since
2377   # we'll use what we're building after installation anyway.
2378   AC_MSG_RESULT(newly built gas)
2379   in_tree_gas=yes
2380   _gcc_COMPUTE_GAS_VERSION
2381   in_tree_gas_is_elf=no
2382   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2383      || (grep 'obj_format = multi' ../gas/Makefile \
2384          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2385   then
2386     in_tree_gas_is_elf=yes
2387   fi
2388 else
2389   AC_MSG_RESULT($gcc_cv_as)
2390   in_tree_gas=no
2393 default_ld=
2394 AC_ARG_ENABLE(ld,
2395 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2396 [case "${enableval}" in
2397  no)
2398    default_ld=ld.gold
2399    ;;
2400  esac])
2402 install_gold_as_default=no
2403 AC_ARG_ENABLE(gold,
2404 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2405 [case "${enableval}" in
2406  default)
2407    install_gold_as_default=yes
2408    ;;
2409  yes)
2410    if test x${default_ld} != x; then
2411      install_gold_as_default=yes
2412    fi
2413    ;;
2414  no)
2415    ;;
2416  *)
2417    AC_MSG_ERROR([invalid --enable-gold argument])
2418    ;;
2419  esac])
2421 # Identify the linker which will work hand-in-glove with the newly
2422 # built GCC, so that we can examine its features.  This is the linker
2423 # which will be driven by the driver program.
2425 # If build != host, and we aren't building gas in-tree, we identify a
2426 # build->target linker and hope that it will have the same features
2427 # as the host->target linker we'll be using.
2428 gcc_cv_gld_major_version=
2429 gcc_cv_gld_minor_version=
2430 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2431 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2432 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2434 AS_VAR_SET_IF(gcc_cv_ld,, [
2435 if test -x "$DEFAULT_LINKER"; then
2436         gcc_cv_ld="$DEFAULT_LINKER"
2437 elif test $install_gold_as_default = yes \
2438      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2439      && test -f ../gold/Makefile \
2440      && test x$build = x$host; then
2441         gcc_cv_ld=../gold/ld-new$build_exeext
2442 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2443      && test -f ../ld/Makefile \
2444      && test x$build = x$host; then
2445         gcc_cv_ld=../ld/ld-new$build_exeext
2446 elif test -x collect-ld$build_exeext; then
2447         # Build using linker in the current directory.
2448         gcc_cv_ld=./collect-ld$build_exeext
2449 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2450         gcc_cv_ld="$LD_FOR_TARGET"
2451 else
2452         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2453 fi])
2455 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2456 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2457 # if the PLUGIN_LD is set ld-new, just have it as ld
2458 # as that is the installed named.
2459 if test x$PLUGIN_LD_SUFFIX = xld-new \
2460    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2461   PLUGIN_LD_SUFFIX=ld
2463 AC_ARG_WITH(plugin-ld,
2464 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2465 [if test x"$withval" != x; then
2466    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2467    PLUGIN_LD_SUFFIX="$withval"
2468  fi])
2469 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2470 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2472 # Check to see if we are using gold instead of ld
2473 AC_MSG_CHECKING(whether we are using gold)
2474 ld_is_gold=no
2475 if test x$gcc_cv_ld != x; then
2476   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2477      | grep "GNU gold" > /dev/null; then
2478     ld_is_gold=yes
2479   fi
2481 AC_MSG_RESULT($ld_is_gold)
2483 AC_MSG_CHECKING(gold linker with split stack support as non default)
2484 # Check to see if default ld is not gold, but gold is
2485 # available and has support for split stack.  If gcc was configured
2486 # with gold then no checking is done.
2488 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2490 # For platforms other than powerpc64*, enable as appropriate.
2492   gold_non_default=no
2493   ld_gold=`which ${gcc_cv_ld}.gold`
2494 # Make sure this gold has minimal split stack support
2495   if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2496     ld_vers=`$ld_gold --version | sed 1q`
2497     gold_vers=`echo $ld_vers | sed -n \
2498           -e 's,^[[^)]]*[[  ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2499     case $target in
2500 # check that the gold version contains the complete split stack support
2501 # on powerpc64 big and little endian
2502       powerpc64*-*-*)
2503         case "$gold_vers" in
2504           2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2505           ;;
2506           *) gold_non_default=no
2507           ;;
2508         esac
2509         ;;
2510     esac
2511   fi
2512   if test $gold_non_default = yes; then
2513     AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2514             [Define if the gold linker supports split stack and is available as a non-default])
2515   fi
2517 AC_MSG_RESULT($gold_non_default)
2519 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2520 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2521 case "$ORIGINAL_LD_FOR_TARGET" in
2522   ./collect-ld | ./collect-ld$build_exeext) ;;
2523   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2524 esac 
2526 AC_MSG_CHECKING(what linker to use)
2527 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2528    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2529         # Single tree build which includes ld.  We want to prefer it
2530         # over whatever linker top-level may have detected, since
2531         # we'll use what we're building after installation anyway.
2532         AC_MSG_RESULT(newly built ld)
2533         in_tree_ld=yes
2534         in_tree_ld_is_elf=no
2535         if (grep 'EMUL = .*elf' ../ld/Makefile \
2536             || grep 'EMUL = .*linux' ../ld/Makefile \
2537             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2538           in_tree_ld_is_elf=yes
2539         elif test "$ld_is_gold" = yes; then
2540           in_tree_ld_is_elf=yes
2541         fi
2542         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
2543         do
2544 changequote(,)dnl
2545                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2546                 if test x$gcc_cv_gld_version != x; then
2547                         break
2548                 fi
2549         done
2550         case $gcc_cv_gld_version in
2551           VERSION=[0-9]*) ;;
2552 changequote([,])dnl
2553           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2554 changequote(,)dnl
2555         esac
2556         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2557         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2558 changequote([,])dnl
2559         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2560         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2561 else
2562         AC_MSG_RESULT($gcc_cv_ld)
2563         in_tree_ld=no
2564         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2565         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2566         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2569 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2570 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2572 # Figure out what nm we will be using.
2573 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2574 AS_VAR_SET_IF(gcc_cv_nm,, [
2575 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2576      && test -f ../binutils/Makefile \
2577      && test x$build = x$host; then
2578         gcc_cv_nm=../binutils/nm-new$build_exeext
2579 elif test -x nm$build_exeext; then
2580         gcc_cv_nm=./nm$build_exeext
2581 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2582         gcc_cv_nm="$NM_FOR_TARGET"
2583 else
2584         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2585 fi])
2587 AC_MSG_CHECKING(what nm to use)
2588 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2589         # Single tree build which includes binutils.
2590         AC_MSG_RESULT(newly built nm)
2591         in_tree_nm=yes
2592 else
2593         AC_MSG_RESULT($gcc_cv_nm)
2594         in_tree_nm=no
2597 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2598 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2599 case "$ORIGINAL_NM_FOR_TARGET" in
2600   ./nm | ./nm$build_exeext) ;;
2601   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2602 esac
2605 # Figure out what objdump we will be using.
2606 AS_VAR_SET_IF(gcc_cv_objdump,, [
2607 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2608      && test -f ../binutils/Makefile \
2609      && test x$build = x$host; then
2610         # Single tree build which includes binutils.
2611         gcc_cv_objdump=../binutils/objdump$build_exeext
2612 elif test -x objdump$build_exeext; then
2613         gcc_cv_objdump=./objdump$build_exeext
2614 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2615         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2616 else
2617         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2618 fi])
2620 AC_MSG_CHECKING(what objdump to use)
2621 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2622         # Single tree build which includes binutils.
2623         AC_MSG_RESULT(newly built objdump)
2624 elif test x$gcc_cv_objdump = x; then
2625         AC_MSG_RESULT(not found)
2626 else
2627         AC_MSG_RESULT($gcc_cv_objdump)
2630 # Figure out what readelf we will be using.
2631 AS_VAR_SET_IF(gcc_cv_readelf,, [
2632 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2633      && test -f ../binutils/Makefile \
2634      && test x$build = x$host; then
2635         # Single tree build which includes binutils.
2636         gcc_cv_readelf=../binutils/readelf$build_exeext
2637 elif test -x readelf$build_exeext; then
2638         gcc_cv_readelf=./readelf$build_exeext
2639 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2640         gcc_cv_readelf="$READELF_FOR_TARGET"
2641 else
2642         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2643 fi])
2645 AC_MSG_CHECKING(what readelf to use)
2646 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2647         # Single tree build which includes binutils.
2648         AC_MSG_RESULT(newly built readelf)
2649 elif test x$gcc_cv_readelf = x; then
2650         AC_MSG_RESULT(not found)
2651 else
2652         AC_MSG_RESULT($gcc_cv_readelf)
2655 # Figure out what otool we will be using.
2656 AS_VAR_SET_IF(gcc_cv_otool,, [
2657 if test -x otool$build_exeext; then
2658         gcc_cv_otool=./otool$build_exeext
2659 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2660         gcc_cv_otool="$OTOOL_FOR_TARGET"
2661 else
2662         AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2663 fi])
2665 AC_MSG_CHECKING(what otool to use)
2666 if test x$gcc_cv_otool = x; then
2667         AC_MSG_RESULT(not found)
2668 else
2669         AC_MSG_RESULT($gcc_cv_otool)
2672 # Figure out what assembler alignment features are present.
2673 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2674  [2,6,0],,
2675 [.balign 4
2676 .p2align 2],,
2677 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2678   [Define if your assembler supports .balign and .p2align.])])
2680 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2681  [2,8,0],,
2682  [.p2align 4,,7],,
2683 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2684   [Define if your assembler supports specifying the maximum number
2685    of bytes to skip when using the GAS .p2align command.])])
2687 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2688  [2,8,0],,
2689  [.literal16],,
2690 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2691   [Define if your assembler supports .literal16.])])
2693 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2694  [elf,2,9,0],,
2695  [conftest_label1: .word 0
2696 .subsection -1
2697 conftest_label2: .word 0
2698 .previous],
2699  [if test x$gcc_cv_nm != x; then
2700     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2701     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2702     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2703     then :
2704     else gcc_cv_as_subsection_m1=yes
2705     fi
2706     rm -f conftest.nm1 conftest.nm2
2707   fi],
2708  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2709   [Define if your assembler supports .subsection and .subsection -1 starts
2710    emitting at the beginning of your section.])])
2712 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2713  [2,2,0],,
2714  [      .weak foobar],,
2715 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2717 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2718  [2,17,0],,
2719  [      .weakref foobar, barfnot],,
2720 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2722 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2723  [2,15,91],,
2724  [      .SPACE $TEXT$
2725         .NSUBSPA $CODE$,COMDAT],,
2726 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2728 # .hidden needs to be supported in both the assembler and the linker,
2729 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2730 # This is irritatingly difficult to feature test for; we have to check the
2731 # date string after the version number.  If we've got an in-tree
2732 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2733 # to be safe.
2734 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2735 case "${target}" in
2736   *-*-aix*)
2737     conftest_s='        .globl foobar,hidden'
2738     ;;
2739   *)
2740     conftest_s='        .hidden foobar
2741 foobar:'
2742     ;;
2743 esac
2744 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2745  [elf,2,13,0],, [$conftest_s])
2746 case "${target}" in
2747   *-*-darwin*)
2748     # Darwin as has some visibility support, though with a different syntax.
2749     gcc_cv_as_hidden=yes
2750     ;;
2751 esac
2753 # gnu_indirect_function type is an extension proposed at
2754 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2755 # selection of function implementation
2756 AC_ARG_ENABLE(gnu-indirect-function,
2757  [AS_HELP_STRING([--enable-gnu-indirect-function],
2758                  [enable the use of the @gnu_indirect_function to glibc systems])],
2759  [case $enable_gnu_indirect_function in
2760     yes | no) ;;
2761     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2762 Valid choices are 'yes' and 'no'.]) ;;
2763   esac],
2764  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2766 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2767 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2768 [Define if your system supports gnu indirect functions.])
2771 changequote(,)dnl
2772 if test $in_tree_ld != yes ; then
2773   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2774   if echo "$ld_ver" | grep GNU > /dev/null; then
2775     if test x"$ld_is_gold" = xyes; then
2776       # GNU gold --version looks like this:
2777       #
2778       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2779       #
2780       # We extract the binutils version which is more familiar and specific
2781       # than the gold version.
2782       ld_vers=`echo $ld_ver | sed -n \
2783           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2784     else
2785       # GNU ld --version looks like this:
2786       #
2787       # GNU ld (GNU Binutils) 2.21.51.20110225
2788       ld_vers=`echo $ld_ver | sed -n \
2789           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2790     fi
2791     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'`
2792     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2793     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2794     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2795   else
2796     case "${target}" in
2797       *-*-solaris2*)
2798         # Solaris 2 ld -V output looks like this for a regular version:
2799         #
2800         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
2801         #
2802         # but test versions add stuff at the end:
2803         #
2804         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
2805         #
2806         # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
2807         # numbers can be used in ld.so.1 feature checks even if a different
2808         # linker is configured.
2809         ld_ver=`$gcc_cv_ld -V 2>&1`
2810         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2811           ld_vers=`echo $ld_ver | sed -n \
2812             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2813           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2814           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2815         fi
2816         ;;
2817     esac
2818   fi
2820 changequote([,])dnl
2822 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2823 [[if test $in_tree_ld = yes ; then
2824   gcc_cv_ld_hidden=no
2825   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 \
2826      && test $in_tree_ld_is_elf = yes; then
2827      gcc_cv_ld_hidden=yes
2828   fi
2829 else
2830   gcc_cv_ld_hidden=yes
2831   if test x"$ld_is_gold" = xyes; then
2832     :
2833   elif echo "$ld_ver" | grep GNU > /dev/null; then
2834     case "${target}" in
2835       mmix-knuth-mmixware)
2836         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2837         gcc_cv_ld_hidden=no
2838         ;;
2839     esac
2840     if test 0"$ld_date" -lt 20020404; then
2841       if test -n "$ld_date"; then
2842         # If there was date string, but was earlier than 2002-04-04, fail
2843         gcc_cv_ld_hidden=no
2844       elif test -z "$ld_vers"; then
2845         # If there was no date string nor ld version number, something is wrong
2846         gcc_cv_ld_hidden=no
2847       else
2848         test -z "$ld_vers_patch" && ld_vers_patch=0
2849         if test "$ld_vers_major" -lt 2; then
2850           gcc_cv_ld_hidden=no
2851         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2852           gcc_cv_ld_hidden="no"
2853         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2854           gcc_cv_ld_hidden=no
2855         fi
2856       fi
2857     fi
2858   else
2859     case "${target}" in
2860       *-*-aix[789]*)
2861         gcc_cv_ld_hidden=yes
2862         ;;
2863       *-*-darwin*)
2864         # Darwin ld has some visibility support.
2865         gcc_cv_ld_hidden=yes
2866         ;;
2867       hppa64*-*-hpux* | ia64*-*-hpux*)
2868         gcc_cv_ld_hidden=yes
2869         ;;
2870       *-*-solaris2*)
2871         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2872         # .symbolic was only added in Solaris 9 12/02.
2873         gcc_cv_ld_hidden=yes
2874         ;;
2875       *)
2876         gcc_cv_ld_hidden=no
2877         ;;
2878     esac
2879   fi
2880 fi]])
2881 libgcc_visibility=no
2882 AC_SUBST(libgcc_visibility)
2883 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2884 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2885   libgcc_visibility=yes
2886   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2887   [Define if your assembler and linker support .hidden.])
2890 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2891 gcc_cv_ld_ro_rw_mix=unknown
2892 if test $in_tree_ld = yes ; then
2893   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 \
2894      && test $in_tree_ld_is_elf = yes; then
2895     gcc_cv_ld_ro_rw_mix=read-write
2896   fi
2897 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2898   echo '.section myfoosect, "a"' > conftest1.s
2899   echo '.section myfoosect, "aw"' > conftest2.s
2900   echo '.byte 1' >> conftest2.s
2901   echo '.section myfoosect, "a"' > conftest3.s
2902   echo '.byte 0' >> conftest3.s
2903   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2904      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2905      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2906      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2907         conftest2.o conftest3.o > /dev/null 2>&1; then
2908     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2909                          | sed -e '/myfoosect/!d' -e N`
2910     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2911       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2912         gcc_cv_ld_ro_rw_mix=read-only
2913       else
2914         gcc_cv_ld_ro_rw_mix=read-write
2915       fi
2916     fi
2917   fi
2918 changequote(,)dnl
2919   rm -f conftest.* conftest[123].*
2920 changequote([,])dnl
2922 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2923         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2924   [Define if your linker links a mix of read-only
2925    and read-write sections into a read-write section.])
2927 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2929 gcc_AC_INITFINI_ARRAY
2931 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2932 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2933   [elf,2,11,0],,
2934 [       .data
2935         .uleb128 L2 - L1
2937         .uleb128 1280
2938         .sleb128 -1010
2939 L2:],
2940 [[# GAS versions before 2.11 do not support uleb128,
2941   # despite appearing to.
2942   # ??? There exists an elf-specific test that will crash
2943   # the assembler.  Perhaps it's better to figure out whether
2944   # arbitrary sections are supported and try the test.
2945   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2946   if echo "$as_ver" | grep GNU > /dev/null; then
2947     as_vers=`echo $as_ver | sed -n \
2948         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2949     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2950     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2951     if test $as_major -eq 2 && test $as_minor -lt 11
2952     then :
2953     else gcc_cv_as_leb128=yes
2954     fi
2955   fi]],
2956   [AC_DEFINE(HAVE_AS_LEB128, 1,
2957     [Define if your assembler supports .sleb128 and .uleb128.])],
2958   [AC_DEFINE(HAVE_AS_LEB128, 0,
2959     [Define if your assembler supports .sleb128 and .uleb128.])])
2961 # Determine if an .eh_frame section is read-only.
2962 gcc_fn_eh_frame_ro () {
2963   $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
2964     $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2965     sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
2968 # Check if we have assembler support for unwind directives.
2969 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2970   ,,
2971 [       .text
2972         .cfi_startproc
2973         .cfi_offset 0, 0
2974         .cfi_same_value 1
2975         .cfi_def_cfa 1, 2
2976         .cfi_escape 1, 2, 3, 4, 5
2977         .cfi_endproc],
2978 [case "$target" in
2979   *-*-solaris*)
2980     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2981     # read-only and read-write sections, we need to make sure that the
2982     # assembler used emits read-write .eh_frame sections.
2983     if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
2984       gcc_cv_as_cfi_directive=yes
2985     elif test "x$gcc_cv_objdump" = x; then
2986       # No objdump, err on the side of caution.
2987       gcc_cv_as_cfi_directive=no
2988     else
2989       if test x$gas = xyes; then
2990         as_32_opt="--32"
2991         as_64_opt="--64"
2992       else
2993         as_32_opt="-m32"
2994         as_64_opt="-m64"
2995       fi
2996       case "$target" in
2997         sparc*-*-solaris2.*)
2998           # On Solaris/SPARC, .eh_frame sections should always be read-write.
2999           if gcc_fn_eh_frame_ro $as_32_opt \
3000              || gcc_fn_eh_frame_ro $as_64_opt; then
3001             gcc_cv_as_cfi_directive=no
3002           else
3003             gcc_cv_as_cfi_directive=yes
3004           fi
3005           ;;
3006         i?86-*-solaris2.* | x86_64-*-solaris2.*)
3007           # On Solaris/x86, make sure that GCC and assembler agree on using
3008           # read-only .eh_frame sections for 64-bit.
3009           if gcc_fn_eh_frame_ro $as_32_opt; then
3010             gcc_cv_as_cfi_directive=no
3011           elif gcc_fn_eh_frame_ro $as_64_opt; then
3012             gcc_cv_as_cfi_directive=yes
3013           else
3014             gcc_cv_as_cfi_directive=no
3015           fi
3016           ;;
3017       esac
3018     fi
3019     ;;
3020   *-*-*)
3021     gcc_cv_as_cfi_directive=yes
3022     ;;
3023 esac])
3024 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3025 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
3026   ,,
3027 [       .text
3028         .cfi_startproc
3029         .cfi_adjust_cfa_offset 64
3030         .skip 75040, 0
3031         .cfi_adjust_cfa_offset 128
3032         .cfi_endproc],
3034 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3035     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
3036    gcc_cv_as_cfi_advance_working=yes
3039 else
3040   # no objdump, err on the side of caution
3041   gcc_cv_as_cfi_advance_working=no
3043 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3044 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3045   [`if test $gcc_cv_as_cfi_directive = yes \
3046        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3047   [Define 0/1 if your assembler supports CFI directives.])
3049 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3050 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3051   gcc_cv_as_cfi_personality_directive, ,,
3052 [       .text
3053         .cfi_startproc
3054         .cfi_personality 0, symbol
3055         .cfi_endproc])
3056 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3057   [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3058   [Define 0/1 if your assembler supports .cfi_personality.])
3060 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3061   gcc_cv_as_cfi_sections_directive, ,,
3062 [       .text
3063         .cfi_sections .debug_frame, .eh_frame
3064         .cfi_startproc
3065         .cfi_endproc],
3066 [case $target_os in
3067   win32 | pe | cygwin* | mingw32*)
3068     # Need to check that we generated the correct relocation for the
3069     # .debug_frame section.  This was fixed for binutils 2.21.
3070     gcc_cv_as_cfi_sections_directive=no
3071     if test "x$gcc_cv_objdump" != x; then
3072      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3073         grep secrel > /dev/null; then
3074       gcc_cv_as_cfi_sections_directive=yes
3075      fi
3076     fi
3077     ;;
3078   *)
3079     gcc_cv_as_cfi_sections_directive=yes
3080     ;;
3081 esac])
3082 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3083 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3084   [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3085   [Define 0/1 if your assembler supports .cfi_sections.])
3087 # GAS versions up to and including 2.11.0 may mis-optimize
3088 # .eh_frame data.
3089 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
3090   [elf,2,12,0],,
3091 [       .text
3092 .LFB1:
3093         .4byte  0
3094 .L1:
3095         .4byte  0
3096 .LFE1:
3097         .section        .eh_frame,"aw",@progbits
3098 __FRAME_BEGIN__:
3099         .4byte  .LECIE1-.LSCIE1
3100 .LSCIE1:
3101         .4byte  0x0
3102         .byte   0x1
3103         .ascii "z\0"
3104         .byte   0x1
3105         .byte   0x78
3106         .byte   0x1a
3107         .byte   0x0
3108         .byte   0x4
3109         .4byte  1
3110         .p2align 1
3111 .LECIE1:
3112 .LSFDE1:
3113         .4byte  .LEFDE1-.LASFDE1
3114 .LASFDE1:
3115         .4byte  .LASFDE1-__FRAME_BEGIN__
3116         .4byte  .LFB1
3117         .4byte  .LFE1-.LFB1
3118         .byte   0x4
3119         .4byte  .LFE1-.LFB1
3120         .byte   0x4
3121         .4byte  .L1-.LFB1
3122 .LEFDE1:],
3123 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3124 cat > conftest.lit <<EOF
3125  0000 10000000 00000000 017a0001 781a0004  .........z..x...
3126  0010 01000000 12000000 18000000 00000000  ................
3127  0020 08000000 04080000 0044               .........D      @&t@
3129 cat > conftest.big <<EOF
3130  0000 00000010 00000000 017a0001 781a0004  .........z..x...
3131  0010 00000001 00000012 00000018 00000000  ................
3132  0020 00000008 04000000 0844               .........D      @&t@
3134   # If the assembler didn't choke, and we can objdump,
3135   # and we got the correct data, then succeed.
3136   # The text in the here-document typically retains its unix-style line
3137   # endings, while the output of objdump will use host line endings.
3138   # Therefore, use diff -b for the comparisons.
3139   if test x$gcc_cv_objdump != x \
3140   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3141      | tail -3 > conftest.got \
3142   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3143     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3144   then
3145     gcc_cv_as_eh_frame=yes
3146   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3147     gcc_cv_as_eh_frame=buggy
3148   else
3149     # Uh oh, what do we do now?
3150     gcc_cv_as_eh_frame=no
3151   fi])
3153 if test $gcc_cv_as_eh_frame = buggy; then
3154   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3155   [Define if your assembler mis-optimizes .eh_frame data.])
3158 # Test if the assembler supports the section flag 'e' or #exclude for
3159 # specifying an excluded section.
3160 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3161  [2,22,51], [--fatal-warnings],
3162  [.section foo1,"e"
3163   .byte 0,0,0,0])
3164 if test $gcc_cv_as_section_exclude_e = no; then
3165   case "${target}" in
3166     # Solaris as uses #exclude instead.
3167     *-*-solaris2*)
3168       case "${target}" in
3169         sparc*-*-solaris2*)
3170           conftest_s='.section "foo1", #exclude'
3171           ;;
3172         i?86-*-solaris2* | x86_64-*-solaris2*)
3173           conftest_s='.section foo1, #exclude'
3174           ;;      
3175       esac
3176       ;;
3177     esac
3178   gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,,
3179     [$conftest_s
3180      .byte 0,0,0,0])
3182 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3183   [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3184 [Define if your assembler supports specifying the exclude section flag.])
3186 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3187  [elf,2,12,0], [--fatal-warnings],
3188  [.section .rodata.str, "aMS", @progbits, 1])
3189 if test $gcc_cv_as_shf_merge = no; then
3190   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3191     [elf,2,12,0], [--fatal-warnings],
3192     [.section .rodata.str, "aMS", %progbits, 1])
3194 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3195   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3196 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3198 gcc_cv_ld_aligned_shf_merge=yes
3199 case "$target" in
3200   # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
3201   # alignment > 1.
3202   sparc*-*-solaris2.11*)
3203     if test x"$gnu_ld" = xno \
3204        && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
3205       gcc_cv_ld_aligned_shf_merge=no
3206     fi
3207     ;;
3208 esac
3209 AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
3210   [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
3211 [Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
3213 gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
3214 [.stabs "gcc2_compiled.",60,0,0,0],,
3215 [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
3216   [Define if your assembler supports .stabs.])])
3218 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3219  gcc_cv_as_comdat_group,
3220  [elf,2,16,0], [--fatal-warnings],
3221  [.section .text,"axG",@progbits,.foo,comdat])
3222 if test $gcc_cv_as_comdat_group = yes; then
3223   gcc_cv_as_comdat_group_percent=no
3224   gcc_cv_as_comdat_group_group=no
3225 else
3226  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3227    gcc_cv_as_comdat_group_percent,
3228    [elf,2,16,0], [--fatal-warnings],
3229    [.section .text,"axG",%progbits,.foo,comdat])
3230  if test $gcc_cv_as_comdat_group_percent = yes; then
3231    gcc_cv_as_comdat_group_group=no
3232  else
3233    case "${target}" in
3234      # Sun as uses a completely different syntax.
3235      *-*-solaris2*)
3236        case "${target}" in
3237          sparc*-*-solaris2*)
3238            conftest_s='
3239                .group foo,".text%foo",#comdat
3240                .section ".text%foo", #alloc,#execinstr,#progbits
3241                .globl foo
3242              foo:
3243              '
3244            ;;
3245          i?86-*-solaris2* | x86_64-*-solaris2*)
3246            conftest_s='
3247                .group foo,.text%foo,#comdat
3248                .section .text%foo, "ax", @progbits
3249                .globl  foo
3250              foo:
3251              '
3252            ;;
3253        esac
3254        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3255          gcc_cv_as_comdat_group_group,
3256          ,, [$conftest_s])
3257        ;;
3258    esac
3259    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3260      gcc_cv_as_comdat_group_group=no
3261    fi
3262  fi
3264 if test x"$ld_is_gold" = xyes; then
3265   comdat_group=yes
3266 elif test $in_tree_ld = yes ; then
3267   comdat_group=no
3268   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 \
3269      && test $in_tree_ld_is_elf = yes; then
3270      comdat_group=yes
3271   fi
3272 elif echo "$ld_ver" | grep GNU > /dev/null; then
3273   comdat_group=yes
3274   if test 0"$ld_date" -lt 20050308; then
3275     if test -n "$ld_date"; then
3276       # If there was date string, but was earlier than 2005-03-08, fail
3277       comdat_group=no
3278     elif test "$ld_vers_major" -lt 2; then
3279       comdat_group=no
3280     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3281       comdat_group=no
3282     fi
3283   fi
3284 else
3285 changequote(,)dnl
3286   case "${target}" in
3287     *-*-solaris2.1[1-9]*)
3288       comdat_group=no
3289       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3290       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3291       # version 1.688.
3292       #
3293       # If using Sun as for COMDAT group as emitted by GCC, one needs at
3294       # least ld version 1.2267.
3295       if test "$ld_vers_major" -gt 1; then
3296         comdat_group=yes
3297       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3298         comdat_group=yes
3299       elif test "$ld_vers_minor" -ge 2267; then
3300         comdat_group=yes
3301       fi
3302       ;;
3303     *)
3304       # Assume linkers other than GNU ld don't support COMDAT group.
3305       comdat_group=no
3306       ;;
3307   esac
3308 changequote([,])dnl
3310 # Allow overriding the automatic COMDAT group tests above.
3311 AC_ARG_ENABLE(comdat,
3312   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3313   [comdat_group="$enable_comdat"])
3314 if test $comdat_group = no; then
3315   gcc_cv_as_comdat_group=no
3316   gcc_cv_as_comdat_group_percent=no
3317   gcc_cv_as_comdat_group_group=no
3319 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3320   [`if test $gcc_cv_as_comdat_group = yes \
3321     || test $gcc_cv_as_comdat_group_percent = yes \
3322     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3323 [Define 0/1 if your assembler and linker support COMDAT groups.])
3325 # Restrict this test to Solaris/x86: other targets define this statically.
3326 case "${target}" in
3327   i?86-*-solaris2* | x86_64-*-solaris2*)
3328     AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
3329     if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
3330       hidden_linkonce=yes
3331     else
3332       case "${target}" in
3333         # Full support for hidden thunks in linkonce sections only appeared in
3334         # Solaris 11/OpenSolaris.
3335         *-*-solaris2.1[[1-9]]*)
3336           hidden_linkonce=yes
3337           ;;
3338         *)
3339           hidden_linkonce=no
3340           ;;
3341       esac
3342     fi
3343     AC_MSG_RESULT($hidden_linkonce)
3344     AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
3345       [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
3346     [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
3347   ;;
3348 esac
3350 gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3351  gcc_cv_as_is_stmt,
3352  [2,16,92],,
3353 [       .text
3354         .file 1 "conf.c"
3355         .loc 1 1 0 is_stmt 1],,
3356 [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3357   [Define if your assembler supports the .loc is_stmt sub-directive.])])
3359 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3360  gcc_cv_as_discriminator,
3361  [2,19,51],,
3362 [       .text
3363         .file 1 "conf.c"
3364         .loc 1 1 0 discriminator 1],,
3365 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3366   [Define if your assembler supports the .loc discriminator sub-directive.])])
3368 # Catch the newlib flag of the same name so we can gate GCC features on it.
3369 AC_ARG_ENABLE(newlib-nano-formatted-io,
3370 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3371  formatted IO])],
3372 [case "${enableval}" in
3373   yes|no)
3374     ;;
3375   *)
3376     AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3377     ;;
3378 esac], [])
3380 # Thread-local storage - the check is heavily parameterized.
3381 conftest_s=
3382 tls_first_major=
3383 tls_first_minor=
3384 tls_as_opt=
3385 case "$target" in
3386 changequote(,)dnl
3387   alpha*-*-*)
3388     conftest_s='
3389         .section ".tdata","awT",@progbits
3390 foo:    .long   25
3391         .text
3392         ldq     $27,__tls_get_addr($29)         !literal!1
3393         lda     $16,foo($29)                    !tlsgd!1
3394         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
3395         ldq     $27,__tls_get_addr($29)         !literal!2
3396         lda     $16,foo($29)                    !tlsldm!2
3397         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
3398         ldq     $1,foo($29)                     !gotdtprel
3399         ldah    $2,foo($29)                     !dtprelhi
3400         lda     $3,foo($2)                      !dtprello
3401         lda     $4,foo($29)                     !dtprel
3402         ldq     $1,foo($29)                     !gottprel
3403         ldah    $2,foo($29)                     !tprelhi
3404         lda     $3,foo($2)                      !tprello
3405         lda     $4,foo($29)                     !tprel'
3406         tls_first_major=2
3407         tls_first_minor=13
3408         tls_as_opt=--fatal-warnings
3409         ;;
3410   arc*-*-*)
3411     conftest_s='
3412         add_s r0,r0, @foo@tpoff'
3413         tls_first_major=2
3414         tls_first_minor=23
3415         ;;
3416   cris-*-*|crisv32-*-*)
3417     conftest_s='
3418         .section ".tdata","awT",@progbits
3419 x:      .long   25
3420         .text
3421         move.d x:IE,$r10
3422         nop'
3423         tls_first_major=2
3424         tls_first_minor=20
3425         tls_as_opt=--fatal-warnings
3426         ;;
3427   frv*-*-*)
3428     conftest_s='
3429         .section ".tdata","awT",@progbits
3430 x:      .long   25
3431         .text
3432         call    #gettlsoff(x)'
3433         tls_first_major=2
3434         tls_first_minor=14
3435         ;;
3436   hppa*-*-linux*)
3437     conftest_s='
3438 t1:     .reg    %r20
3439 t2:     .reg    %r21
3440 gp:     .reg    %r19
3441         .section ".tdata","awT",@progbits
3442 foo:    .long   25
3443         .text
3444         .align  4
3445         addil LT%foo-$tls_gdidx$,gp
3446         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3447         b __tls_get_addr
3448         nop             
3449         addil LT%foo-$tls_ldidx$,gp
3450         b __tls_get_addr
3451         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3452         addil LR%foo-$tls_dtpoff$,%ret0
3453         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3454         mfctl %cr27,%t1                 
3455         addil LT%foo-$tls_ieoff$,gp
3456         ldw RT%foo-$tls_ieoff$(%r1),%t2
3457         add %t1,%t2,%t3                 
3458         mfctl %cr27,%t1                 
3459         addil LR%foo-$tls_leoff$,%t1
3460         ldo RR%foo-$tls_leoff$(%r1),%t2'
3461         tls_first_major=2
3462         tls_first_minor=15
3463         tls_as_opt=--fatal-warnings
3464         ;;
3465   arm*-*-*)
3466     conftest_s='
3467         .section ".tdata","awT",%progbits
3468 foo:    .long   25
3469         .text
3470 .word foo(gottpoff)
3471 .word foo(tpoff)
3472 .word foo(tlsgd)
3473 .word foo(tlsldm)
3474 .word foo(tlsldo)'
3475         tls_first_major=2
3476         tls_first_minor=17
3477         ;;
3478   i[34567]86-*-* | x86_64-*-*)
3479     case "$target" in
3480       i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3481         on_solaris=yes
3482         ;;
3483       *)
3484         on_solaris=no
3485         ;;
3486     esac
3487     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3488       conftest_s='
3489         .section .tdata,"awt",@progbits'
3490       tls_first_major=0
3491       tls_first_minor=0
3492       tls_section_flag=t
3493 changequote([,])dnl
3494       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3495 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3496 changequote(,)dnl
3497     else
3498       conftest_s='
3499         .section ".tdata","awT",@progbits'
3500       tls_first_major=2
3501       tls_first_minor=14
3502       tls_section_flag=T
3503       tls_as_opt="--fatal-warnings"
3504     fi
3505     case "$target" in
3506       i[34567]86-*-*)
3507         conftest_s="$conftest_s
3508 foo:    .long   25
3509         .text
3510         movl    %gs:0, %eax
3511         leal    foo@tlsgd(,%ebx,1), %eax
3512         leal    foo@tlsldm(%ebx), %eax
3513         leal    foo@dtpoff(%eax), %edx
3514         movl    foo@gottpoff(%ebx), %eax
3515         subl    foo@gottpoff(%ebx), %eax
3516         addl    foo@gotntpoff(%ebx), %eax
3517         movl    foo@indntpoff, %eax
3518         movl    \$foo@tpoff, %eax
3519         subl    \$foo@tpoff, %eax
3520         leal    foo@ntpoff(%ecx), %eax"
3521         ;;
3522       x86_64-*-*)
3523         if test x$on_solaris = xyes; then
3524           case $gas_flag in
3525             yes) tls_as_opt="$tls_as_opt --64" ;;
3526             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3527           esac    
3528         fi
3529         conftest_s="$conftest_s
3530 foo:    .long   25
3531         .text
3532         movq    %fs:0, %rax
3533         leaq    foo@tlsgd(%rip), %rdi
3534         leaq    foo@tlsld(%rip), %rdi
3535         leaq    foo@dtpoff(%rax), %rdx
3536         movq    foo@gottpoff(%rip), %rax
3537         movq    \$foo@tpoff, %rax"
3538         ;;
3539     esac
3540     ;;
3541   ia64-*-*)
3542     conftest_s='
3543         .section ".tdata","awT",@progbits
3544 foo:    data8   25
3545         .text
3546         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3547         addl    r17 = @ltoff(@dtprel(foo#)), gp
3548         addl    r18 = @ltoff(@tprel(foo#)), gp
3549         addl    r19 = @dtprel(foo#), gp
3550         adds    r21 = @dtprel(foo#), r13
3551         movl    r23 = @dtprel(foo#)
3552         addl    r20 = @tprel(foo#), gp
3553         adds    r22 = @tprel(foo#), r13
3554         movl    r24 = @tprel(foo#)'
3555         tls_first_major=2
3556         tls_first_minor=13
3557         tls_as_opt=--fatal-warnings
3558         ;;
3559   microblaze*-*-*)
3560     conftest_s='
3561         .section .tdata,"awT",@progbits
3563         .word 2
3564         .text
3565         addik r5,r20,x@TLSGD
3566         addik r5,r20,x@TLSLDM'
3567         tls_first_major=2
3568         tls_first_minor=20
3569         tls_as_opt='--fatal-warnings'
3570         ;;
3571   mips*-*-*)
3572     conftest_s='
3573         .section .tdata,"awT",@progbits
3575         .word 2
3576         .text
3577         addiu $4, $28, %tlsgd(x)
3578         addiu $4, $28, %tlsldm(x)
3579         lui $4, %dtprel_hi(x)
3580         addiu $4, $4, %dtprel_lo(x)
3581         lw $4, %gottprel(x)($28)
3582         lui $4, %tprel_hi(x)
3583         addiu $4, $4, %tprel_lo(x)'
3584         tls_first_major=2
3585         tls_first_minor=16
3586         tls_as_opt='-32 --fatal-warnings'
3587         ;;
3588   m68k-*-*)
3589     conftest_s='
3590         .section .tdata,"awT",@progbits
3592         .word 2
3593         .text
3594 foo:
3595         move.l x@TLSGD(%a5),%a0
3596         move.l x@TLSLDM(%a5),%a0
3597         move.l x@TLSLDO(%a5),%a0
3598         move.l x@TLSIE(%a5),%a0
3599         move.l x@TLSLE(%a5),%a0'
3600         tls_first_major=2
3601         tls_first_minor=19
3602         tls_as_opt='--fatal-warnings'
3603         ;;
3604   nios2-*-*)
3605       conftest_s='
3606         .section ".tdata","awT",@progbits'
3607         tls_first_major=2
3608         tls_first_minor=23
3609         tls_as_opt="--fatal-warnings"
3610         ;;
3611   aarch64*-*-*)
3612     conftest_s='
3613         .section ".tdata","awT",%progbits
3614 foo:    .long   25
3615         .text
3616         adrp  x0, :tlsgd:x
3617         add   x0, x0, #:tlsgd_lo12:x
3618         bl    __tls_get_addr
3619         nop'
3620         tls_first_major=2
3621         tls_first_minor=20
3622         tls_as_opt='--fatal-warnings'
3623         ;;
3624   or1k*-*-*)
3625     conftest_s='
3626         .section ".tdata","awT",@progbits
3627 foo:    .long   25
3628         .text
3629         l.movhi r3, tpoffha(foo)
3630         l.add   r3, r3, r10
3631         l.lwz   r4, tpofflo(foo)(r3)'
3632     tls_first_major=2
3633     tls_first_minor=30
3634     tls_as_opt=--fatal-warnings
3635     ;;
3636   powerpc-ibm-aix*)
3637     conftest_s='
3638         .extern __get_tpointer
3639         .toc
3640 LC..1:
3641         .tc a[TC],a[TL]@le
3642         .csect .text[PR]
3643 .tlstest:
3644         lwz 9,LC..1(2)
3645         bla __get_tpointer
3646         lwzx 3,9,3
3647         .globl a
3648         .csect a[TL],4
3650         .space 4'
3651         tls_first_major=0
3652         tls_first_minor=0
3653         ;;
3654   powerpc64*-*-*)
3655     conftest_s='
3656         .section ".tdata","awT",@progbits
3657         .align 3
3658 ld0:    .space 8
3659 ld1:    .space 8
3660 x1:     .space 8
3661 x2:     .space 8
3662 x3:     .space 8
3663         .text
3664         addi 3,2,ld0@got@tlsgd
3665         bl .__tls_get_addr
3666         nop
3667         addi 3,2,ld1@toc
3668         bl .__tls_get_addr
3669         nop
3670         addi 3,2,x1@got@tlsld
3671         bl .__tls_get_addr
3672         nop
3673         addi 9,3,x1@dtprel
3674         bl .__tls_get_addr
3675         nop
3676         addis 9,3,x2@dtprel@ha
3677         addi 9,9,x2@dtprel@l
3678         bl .__tls_get_addr
3679         nop
3680         ld 9,x3@got@dtprel(2)
3681         add 9,9,3
3682         bl .__tls_get_addr
3683         nop'
3684         tls_first_major=2
3685         tls_first_minor=14
3686         tls_as_opt="-a64 --fatal-warnings"
3687         ;;
3688   powerpc*-*-*)
3689     conftest_s='
3690         .section ".tdata","awT",@progbits
3691         .align 2
3692 ld0:    .space 4
3693 ld1:    .space 4
3694 x1:     .space 4
3695 x2:     .space 4
3696 x3:     .space 4
3697         .text
3698         addi 3,31,ld0@got@tlsgd
3699         bl __tls_get_addr
3700         addi 3,31,x1@got@tlsld
3701         bl __tls_get_addr
3702         addi 9,3,x1@dtprel
3703         addis 9,3,x2@dtprel@ha
3704         addi 9,9,x2@dtprel@l
3705         lwz 9,x3@got@tprel(31)
3706         add 9,9,x@tls
3707         addi 9,2,x1@tprel
3708         addis 9,2,x2@tprel@ha
3709         addi 9,9,x2@tprel@l'
3710         tls_first_major=2
3711         tls_first_minor=14
3712         tls_as_opt="-a32 --fatal-warnings"
3713         ;;
3714   riscv*-*-*)
3715     conftest_s='
3716         .section .tdata,"awT",@progbits
3717 x:      .word 2
3718         .text
3719         la.tls.gd a0,x
3720         call __tls_get_addr'
3721         tls_first_major=2
3722         tls_first_minor=21
3723         tls_as_opt='--fatal-warnings'
3724         ;;
3725   s390-*-*)
3726     conftest_s='
3727         .section ".tdata","awT",@progbits
3728 foo:    .long   25
3729         .text
3730         .long   foo@TLSGD
3731         .long   foo@TLSLDM
3732         .long   foo@DTPOFF
3733         .long   foo@NTPOFF
3734         .long   foo@GOTNTPOFF
3735         .long   foo@INDNTPOFF
3736         l       %r1,foo@GOTNTPOFF(%r12)
3737         l       %r1,0(%r1):tls_load:foo
3738         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3739         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3740         tls_first_major=2
3741         tls_first_minor=14
3742         tls_as_opt="-m31 --fatal-warnings"
3743         ;;
3744   s390x-*-*)
3745     conftest_s='
3746         .section ".tdata","awT",@progbits
3747 foo:    .long   25
3748         .text
3749         .quad   foo@TLSGD
3750         .quad   foo@TLSLDM
3751         .quad   foo@DTPOFF
3752         .quad   foo@NTPOFF
3753         .quad   foo@GOTNTPOFF
3754         lg      %r1,foo@GOTNTPOFF(%r12)
3755         larl    %r1,foo@INDNTPOFF
3756         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3757         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3758         tls_first_major=2
3759         tls_first_minor=14
3760         tls_as_opt="-m64 -Aesame --fatal-warnings"
3761         ;;
3762   sh-*-* | sh[123456789lbe]*-*-*)
3763     conftest_s='
3764         .section ".tdata","awT",@progbits
3765 foo:    .long   25
3766         .text
3767         .long   foo@TLSGD
3768         .long   foo@TLSLDM
3769         .long   foo@DTPOFF
3770         .long   foo@GOTTPOFF
3771         .long   foo@TPOFF'
3772         tls_first_major=2
3773         tls_first_minor=13
3774         tls_as_opt=--fatal-warnings
3775         ;;
3776   sparc*-*-*)
3777     case "$target" in
3778       sparc*-sun-solaris2.*)
3779         on_solaris=yes
3780         ;;
3781       *)
3782         on_solaris=no
3783         ;;
3784     esac
3785     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3786       conftest_s='
3787         .section ".tdata",#alloc,#write,#tls'
3788         tls_first_major=0
3789         tls_first_minor=0
3790     else
3791       conftest_s='
3792         .section ".tdata","awT",@progbits'
3793         tls_first_major=2
3794         tls_first_minor=14
3795         tls_as_opt="-32 --fatal-warnings"
3796     fi
3797     conftest_s="$conftest_s
3798 foo:    .long   25
3799         .text
3800         sethi   %tgd_hi22(foo), %o0
3801         add     %o0, %tgd_lo10(foo), %o1
3802         add     %l7, %o1, %o0, %tgd_add(foo)
3803         call    __tls_get_addr, %tgd_call(foo)
3804         sethi   %tldm_hi22(foo), %l1
3805         add     %l1, %tldm_lo10(foo), %l2
3806         add     %l7, %l2, %o0, %tldm_add(foo)
3807         call    __tls_get_addr, %tldm_call(foo)
3808         sethi   %tldo_hix22(foo), %l3
3809         xor     %l3, %tldo_lox10(foo), %l4
3810         add     %o0, %l4, %l5, %tldo_add(foo)
3811         sethi   %tie_hi22(foo), %o3
3812         add     %o3, %tie_lo10(foo), %o3
3813         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3814         add     %g7, %o2, %o4, %tie_add(foo)
3815         sethi   %tle_hix22(foo), %l1
3816         xor     %l1, %tle_lox10(foo), %o5
3817         ld      [%g7 + %o5], %o1"
3818         ;;
3819   tilepro*-*-*)
3820       conftest_s='
3821         .section ".tdata","awT",@progbits
3822 foo:    .long   25
3823         .text
3824         addli   r0, zero, tls_gd(foo)
3825         auli    r0, zero, tls_gd_ha16(foo)
3826         addli   r0, r0, tls_gd_lo16(foo)
3827         jal     __tls_get_addr
3828         addli   r0, zero, tls_ie(foo)
3829         auli    r0, r0, tls_ie_ha16(foo)
3830         addli   r0, r0, tls_ie_lo16(foo)'
3831         tls_first_major=2
3832         tls_first_minor=22
3833         tls_as_opt="--fatal-warnings"
3834         ;;
3835   tilegx*-*-*)
3836       conftest_s='
3837         .section ".tdata","awT",@progbits
3838 foo:    .long   25
3839         .text
3840         shl16insli r0, zero, hw0_last_tls_gd(foo)
3841         shl16insli r0, zero, hw1_last_tls_gd(foo)
3842         shl16insli r0, r0,   hw0_tls_gd(foo)
3843         jal        __tls_get_addr
3844         shl16insli r0, zero, hw1_last_tls_ie(foo)
3845         shl16insli r0, r0,   hw0_tls_ie(foo)'
3846         tls_first_major=2
3847         tls_first_minor=22
3848         tls_as_opt="--fatal-warnings"
3849         ;;
3850   xtensa*-*-*)
3851     conftest_s='
3852         .section ".tdata","awT",@progbits
3853 foo:    .long   25
3854         .text
3855         movi    a8, foo@TLSFUNC
3856         movi    a10, foo@TLSARG
3857         callx8.tls a8, foo@TLSCALL'
3858         tls_first_major=2
3859         tls_first_minor=19
3860         ;;
3861 changequote([,])dnl
3862 esac
3863 set_have_as_tls=no
3864 if test "x$enable_tls" = xno ; then
3865   : # TLS explicitly disabled.
3866 elif test "x$enable_tls" = xyes ; then
3867   set_have_as_tls=yes # TLS explicitly enabled.
3868 elif test -z "$tls_first_major"; then
3869   : # If we don't have a check, assume no support.
3870 else
3871   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3872   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3873   [set_have_as_tls=yes])
3875 if test $set_have_as_tls = yes ; then
3876   AC_DEFINE(HAVE_AS_TLS, 1,
3877             [Define if your assembler and linker support thread-local storage.])
3880 # Target-specific assembler checks.
3882 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3883 gcc_cv_ld_static_dynamic=no
3884 gcc_cv_ld_static_option='-Bstatic'
3885 gcc_cv_ld_dynamic_option='-Bdynamic'
3886 if test $in_tree_ld = yes ; then
3887   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
3888     gcc_cv_ld_static_dynamic=yes
3889   fi
3890 elif test x$gcc_cv_ld != x; then
3891   # Check if linker supports -Bstatic/-Bdynamic option
3892   if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
3893      && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
3894       gcc_cv_ld_static_dynamic=yes
3895   else
3896     case "$target" in
3897       # AIX ld uses -b flags
3898       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3899         gcc_cv_ld_static_dynamic=yes
3900         gcc_cv_ld_static_option="-bstatic"
3901         gcc_cv_ld_dynamic_option="-bdynamic"
3902         ;;
3903       # HP-UX ld uses -a flags to select between shared and archive.
3904       *-*-hpux*)
3905         if test x"$gnu_ld" = xno; then
3906           gcc_cv_ld_static_dynamic=yes
3907           gcc_cv_ld_static_option="-aarchive_shared"
3908           gcc_cv_ld_dynamic_option="-adefault"
3909         fi
3910         ;;
3911       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3912       *-*-solaris2*)
3913         gcc_cv_ld_static_dynamic=yes
3914         ;;
3915     esac
3916   fi
3918 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3919         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3920 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3921         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3922 [Define to the linker option to disable use of shared objects.])
3923         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3924 [Define to the linker option to enable use of shared objects.])
3926 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3928 AC_MSG_CHECKING(linker --version-script option)
3929 gcc_cv_ld_version_script=no
3930 ld_version_script_option=''
3931 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3932   gcc_cv_ld_version_script=yes
3933   ld_version_script_option='--version-script'
3934 elif test x$gcc_cv_ld != x; then
3935   case "$target" in
3936     # Solaris 2 ld always supports -M.  It also supports a subset of
3937     # --version-script since Solaris 11.4, but requires
3938     # -z gnu-version-script-compat to activate.
3939     *-*-solaris2*)
3940       gcc_cv_ld_version_script=yes
3941       ld_version_script_option='-M'
3942       ;;
3943   esac
3945 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3946 AC_MSG_RESULT($gcc_cv_ld_version_script)
3947 AC_SUBST(ld_version_script_option)
3949 AC_MSG_CHECKING(linker soname option)
3950 gcc_cv_ld_soname=no
3951 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3952   gcc_cv_ld_soname=yes
3953   ld_soname_option='-soname'
3954 elif test x$gcc_cv_ld != x; then
3955   case "$target" in
3956     *-*-darwin*)
3957       gcc_cv_ld_soname=yes
3958       ld_soname_option='-install_name'
3959       ;;
3960     # Solaris 2 ld always supports -h.  It also supports --soname for GNU
3961     # ld compatiblity since some Solaris 10 update.
3962     *-*-solaris2*)
3963       gcc_cv_ld_soname=yes
3964       ld_soname_option='-h'
3965       ;;
3966   esac
3968 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3969 AC_MSG_RESULT($gcc_cv_ld_soname)
3970 AC_SUBST(ld_soname_option)
3972 if test x"$demangler_in_ld" = xyes; then
3973   AC_MSG_CHECKING(linker --demangle support)
3974   gcc_cv_ld_demangle=no
3975   if test $in_tree_ld = yes; then
3976     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 \
3977       gcc_cv_ld_demangle=yes
3978     fi
3979   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3980     # Check if the GNU linker supports --demangle option
3981     if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
3982       gcc_cv_ld_demangle=yes
3983     fi
3984   fi
3985   if test x"$gcc_cv_ld_demangle" = xyes; then
3986     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3987 [Define if your linker supports --demangle option.])
3988   fi
3989   AC_MSG_RESULT($gcc_cv_ld_demangle)
3992 AC_MSG_CHECKING(linker plugin support)
3993 gcc_cv_lto_plugin=0
3994 if test -f liblto_plugin.la; then
3995   save_ld_ver="$ld_ver"
3996   save_ld_vers_major="$ld_vers_major"
3997   save_ld_vers_minor="$ld_vers_minor"
3998   save_ld_is_gold="$ld_is_gold"
4000   ld_is_gold=no
4002   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4003     ld_ver="GNU ld"
4004     # FIXME: ld_is_gold?
4005     ld_vers_major="$gcc_cv_gld_major_version"
4006     ld_vers_minor="$gcc_cv_gld_minor_version"
4007   else
4008     # Determine plugin linker version.
4009     # FIXME: Partial duplicate from above, generalize.
4010 changequote(,)dnl
4011     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4012     if echo "$ld_ver" | grep GNU > /dev/null; then
4013       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4014         ld_is_gold=yes
4015         ld_vers=`echo $ld_ver | sed -n \
4016             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4017       else
4018         ld_vers=`echo $ld_ver | sed -n \
4019             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4020       fi
4021       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4022       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4023     fi
4024 changequote([,])dnl
4025   fi
4027   # Determine plugin support.
4028   if echo "$ld_ver" | grep GNU > /dev/null; then
4029     # Require GNU ld or gold 2.21+ for plugin support by default.
4030     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4031       gcc_cv_lto_plugin=2
4032     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4033     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4034       gcc_cv_lto_plugin=1
4035     fi
4036   fi
4038   ld_ver="$save_ld_ver"
4039   ld_vers_major="$save_ld_vers_major"
4040   ld_vers_minor="$save_ld_vers_minor"
4041   ld_is_gold="$save_ld_is_gold"
4043 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4044   [Define to the level of your linker's plugin support.])
4045 AC_MSG_RESULT($gcc_cv_lto_plugin)
4047 # Target OS-specific assembler checks.
4049 case "$target_os" in
4050   darwin*)
4051     gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4052       gcc_cv_as_mmacosx_version_min,,
4053       [-mmacosx-version-min=10.1], [.text],,
4054       [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4055         [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
4056     ;;
4057 esac
4059 # Target CPU-specific assembler checks.
4061 case "$target" in
4062   aarch64*-*-*)
4063     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
4064                           [-mabi=lp64], [.text],,,)
4065     if test x$gcc_cv_as_aarch64_mabi = xyes; then
4066       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4067                 [Define if your assembler supports the -mabi option.])
4068     else
4069       if test x$with_abi = xilp32; then
4070         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4071                      Upgrade the Assembler.])
4072       fi
4073       if test x"$with_multilib_list" = xdefault; then
4074         TM_MULTILIB_CONFIG=lp64
4075       else
4076         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4077         for aarch64_multilib in ${aarch64_multilibs}; do
4078           case ${aarch64_multilib} in
4079             ilp32)
4080               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4081                             Upgrade the Assembler.])
4082               ;;
4083             *)
4084               ;;
4085           esac
4086         done
4087       fi
4088     fi
4089     # Check if we have binutils support for relocations types needed by -fpic
4090     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
4091     [
4092         .text
4093         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
4094     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4095         [Define if your assembler supports relocs needed by -fpic.])])
4096     # Enable Branch Target Identification Mechanism and Return Address
4097     # Signing by default.
4098     AC_ARG_ENABLE(standard-branch-protection,
4099     [
4100 AS_HELP_STRING([--enable-standard-branch-protection],
4101         [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4102 AS_HELP_STRING([--disable-standard-branch-protection],
4103         [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4104     ],
4105       [
4106         case $enableval in
4107           yes)
4108             tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4109             ;;
4110           no)
4111             ;;
4112           *)
4113             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4114   Valid choices are 'yes' and 'no'.])
4115             ;;
4116         esac
4117       ],
4118     [])
4119     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4120     AC_ARG_ENABLE(fix-cortex-a53-835769,
4121     [
4122 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4123         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4124 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4125         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4126     ],
4127       [
4128         case $enableval in
4129           yes)
4130             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4131             ;;
4132           no)
4133             ;;
4134           *)
4135             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4136   Valid choices are 'yes' and 'no'.])
4137             ;;
4139         esac
4140       ],
4141     [])
4142     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4143     AC_ARG_ENABLE(fix-cortex-a53-843419,
4144     [
4145 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4146         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4147 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4148         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4149     ],
4150       [
4151         case $enableval in
4152           yes)
4153             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4154             ;;
4155           no)
4156             ;;
4157           *)
4158             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4159   Valid choices are 'yes' and 'no'.])
4160             ;;
4162         esac
4163       ],
4164     [])
4165     ;;
4167   # All TARGET_ABI_OSF targets.
4168   alpha*-*-linux* | alpha*-*-*bsd*)
4169     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4170         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
4171 [       .set nomacro
4172         .text
4173         extbl   $3, $2, $3      !lituse_bytoff!1
4174         ldq     $2, a($29)      !literal!1
4175         ldq     $4, b($29)      !literal!2
4176         ldq_u   $3, 0($2)       !lituse_base!1
4177         ldq     $27, f($29)     !literal!5
4178         jsr     $26, ($27), f   !lituse_jsr!5
4179         ldah    $29, 0($26)     !gpdisp!3
4180         lda     $0, c($29)      !gprel
4181         ldah    $1, d($29)      !gprelhigh
4182         lda     $1, d($1)       !gprellow
4183         lda     $29, 0($29)     !gpdisp!3],,
4184     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4185   [Define if your assembler supports explicit relocations.])])
4186     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4187         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
4188 [       .set nomacro
4189         .text
4190         ldq     $27, a($29)     !literal!1
4191         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
4192     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4193   [Define if your assembler supports the lituse_jsrdirect relocation.])])
4194     ;;
4196   avr-*-*)
4197     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
4198       [--mlink-relax], [.text],,
4199       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4200                 [Define if your avr assembler supports --mlink-relax option.])])
4202     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
4203       [-mrmw], [.text],,
4204       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4205                 [Define if your avr assembler supports -mrmw option.])])
4207     gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4208       gcc_cv_as_avr_mgccisr,,
4209       [-mgcc-isr], [.text
4210                     __gcc_isr 1
4211                     __gcc_isr 2
4212                     __gcc_isr 0,r24
4213                    ],,
4214       [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4215                 [Define if your avr assembler supports -mgcc-isr option.])])
4217     # Check how default linker description file implements .rodata for
4218     # avrxmega3 (PR21472).  avr-gcc assumes .rodata is *not* loaded to
4219     # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4220     AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4221     cat > conftest.s <<EOF
4222         .section .rodata,"a",@progbits
4223         .global xxvaryy
4224     ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4225     xxvaryy:
4226         .word 1
4228     rm -f conftest.nm
4229     AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4230     AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4231     AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4232     if test -s conftest.nm
4233     then
4234         if grep ' R xxvaryy' conftest.nm > /dev/null; then
4235             AC_MSG_RESULT(yes)
4236             AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4237                 [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4238         else
4239             AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4240             echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4241             cat conftest.nm >&AS_MESSAGE_LOG_FD
4242             avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4243             AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4244         fi
4245     else
4246         AC_MSG_RESULT(test failed)
4247         echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4248         cat conftest.s >&AS_MESSAGE_LOG_FD
4249         AC_MSG_WARN([[see `config.log' for details]])
4250     fi
4251     rm -f conftest.s conftest.o conftest.elf conftest.nm
4252     ;;
4254   cris-*-*)
4255     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4256       gcc_cv_as_cris_no_mul_bug,[2,15,91],
4257       [-no-mul-bug-abort], [.text],,
4258       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4259                 [Define if your assembler supports the -no-mul-bug-abort option.])])
4260     ;;
4262   sparc*-*-*)
4263     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
4264       [-relax], [.text],,
4265       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4266                 [Define if your assembler supports -relax option.])])
4268     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4269       gcc_cv_as_sparc_gotdata_op,,
4270       [-K PIC],
4271 [.text
4272 .align 4
4273 foo:
4274         nop
4275 bar:
4276         sethi %gdop_hix22(foo), %g1
4277         xor    %g1, %gdop_lox10(foo), %g1
4278         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
4279       [if test x$gcc_cv_ld != x \
4280        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4281          if test x$gcc_cv_objdump != x; then
4282            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4283               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4284                gcc_cv_as_sparc_gotdata_op=no
4285            else
4286                gcc_cv_as_sparc_gotdata_op=yes
4287            fi
4288          fi
4289        fi
4290        rm -f conftest],
4291       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4292                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
4294     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4295       gcc_cv_as_sparc_ua_pcrel,,
4296       [-K PIC],
4297 [.text
4298 foo:
4299         nop
4300 .data
4301 .align 4
4302 .byte 0
4303 .uaword %r_disp32(foo)],
4304       [if test x$gcc_cv_ld != x \
4305        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4306          gcc_cv_as_sparc_ua_pcrel=yes
4307        fi
4308        rm -f conftest],
4309       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4310                 [Define if your assembler and linker support unaligned PC relative relocs.])
4312       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4313         gcc_cv_as_sparc_ua_pcrel_hidden,,
4314         [-K PIC],
4315 [.data
4316 .align 4
4317 .byte 0x31
4318 .uaword %r_disp32(foo)
4319 .byte 0x32, 0x33, 0x34
4320 .global foo
4321 .hidden foo
4322 foo:
4323 .skip 4],
4324         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4325          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4326          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4327             | grep ' 31000000 07323334' > /dev/null 2>&1; then
4328             if $gcc_cv_objdump -R conftest 2> /dev/null \
4329                | grep 'DISP32' > /dev/null 2>&1; then
4330                 :
4331             else
4332                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
4333             fi
4334          fi
4335          rm -f conftest],
4336          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4337                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4338     ]) # unaligned pcrel relocs
4340     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4341       gcc_cv_as_sparc_offsetable_lo10,,
4342       [-xarch=v9],
4343 [.text
4344         or %g1, %lo(ab) + 12, %g1
4345         or %g1, %lo(ab + 12), %g1],
4346       [if test x$gcc_cv_objdump != x \
4347        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4348           | grep ' 82106000 82106000' > /dev/null 2>&1; then
4349          gcc_cv_as_sparc_offsetable_lo10=yes
4350        fi],
4351        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4352                  [Define if your assembler supports offsetable %lo().])])
4354     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4355       gcc_cv_as_sparc_fmaf,,
4356       [-xarch=v9d],
4357       [.text
4358        .register %g2, #scratch
4359        .register %g3, #scratch
4360        .align 4
4361        fmaddd %f0, %f2, %f4, %f6
4362        addxccc %g1, %g2, %g3
4363        fsrl32 %f2, %f4, %f8
4364        fnaddd %f10, %f12, %f14],,
4365       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4366                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4368     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4369       gcc_cv_as_sparc_sparc4,,
4370       [-xarch=sparc4],
4371       [.text
4372        .register %g2, #scratch
4373        .register %g3, #scratch
4374        .align 4
4375        cxbe %g2, %g3, 1f
4376 1:     cwbneg %g2, %g3, 1f
4377 1:     sha1
4378        md5
4379        aes_kexpand0 %f4, %f6, %f8
4380        des_round %f38, %f40, %f42, %f44
4381        camellia_f %f54, %f56, %f58, %f60
4382        kasumi_fi_xor %f46, %f48, %f50, %f52],,
4383       [AC_DEFINE(HAVE_AS_SPARC4, 1,
4384                 [Define if your assembler supports SPARC4 instructions.])])
4386     gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4387       gcc_cv_as_sparc_sparc5,,
4388       [-xarch=sparc5],
4389       [.text
4390        .register %g2, #scratch
4391        .register %g3, #scratch
4392        .align 4
4393        subxc %g1, %g2, %g3
4394        fpadd8 %f0, %f2, %f4],,
4395       [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4396                 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4398     gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4399       gcc_cv_as_sparc_sparc6,,
4400       [-xarch=sparc6],
4401       [.text
4402        .register %g2, #scratch
4403        .register %g3, #scratch
4404        .align 4
4405        rd %entropy, %g1
4406        fpsll64x %f0, %f2, %f4],,
4407       [AC_DEFINE(HAVE_AS_SPARC6, 1,
4408                 [Define if your assembler supports SPARC6 instructions.])])
4410     gcc_GAS_CHECK_FEATURE([LEON instructions],
4411       gcc_cv_as_sparc_leon,,
4412       [-Aleon],
4413       [.text
4414        .register %g2, #scratch
4415        .register %g3, #scratch
4416        .align 4
4417        smac %g2, %g3, %g1
4418        umac %g2, %g3, %g1
4419        casa [[%g2]] 0xb, %g3, %g1],,
4420       [AC_DEFINE(HAVE_AS_LEON, 1,
4421                 [Define if your assembler supports LEON instructions.])])
4422     ;;
4424 changequote(,)dnl
4425   i[34567]86-*-* | x86_64-*-*)
4426 changequote([,])dnl
4427     case $target_os in
4428       cygwin*)
4429         # Full C++ conformance when using a shared libstdc++-v3 requires some
4430         # support from the Cygwin DLL, which in more recent versions exports
4431         # wrappers to aid in interposing and redirecting operators new, delete,
4432         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
4433         # are configuring for a version of Cygwin that exports the wrappers.
4434         if test x$host = x$target && test x$host_cpu = xi686; then
4435           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4436         else
4437           # Can't check presence of libc functions during cross-compile, so
4438           # we just have to assume we're building for an up-to-date target.
4439           gcc_ac_cygwin_dll_wrappers=yes
4440         fi
4441         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4442           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4443           [Define if you want to generate code by default that assumes that the
4444            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4445     esac
4446     case $target_os in
4447       cygwin* | pe | mingw32*)
4448         # Recent binutils allows the three-operand form of ".comm" on PE.  This
4449         # definition is used unconditionally to initialise the default state of
4450         # the target option variable that governs usage of the feature.
4451         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
4452          [2,19,52],,[.comm foo,1,32])
4453         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4454           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4455           [Define if your assembler supports specifying the alignment
4456            of objects allocated using the GAS .comm command.])
4457         # Used for DWARF 2 in PE
4458         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4459           gcc_cv_as_ix86_pe_secrel32,
4460           [2,15,91],,
4461 [.text
4462 foo:    nop
4463 .data
4464         .secrel32 foo],
4465           [if test x$gcc_cv_ld != x \
4466            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4467              gcc_cv_as_ix86_pe_secrel32=yes
4468            fi
4469            rm -f conftest],
4470           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4471             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4472         # Test if the assembler supports the extended form of the .section
4473         # directive that specifies section alignment.  LTO support uses this,
4474         # but normally only after installation, so we warn but don't fail the
4475         # configure if LTO is enabled but the assembler does not support it.
4476         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4477           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
4478         if test x$gcc_cv_as_section_has_align != xyes; then
4479           case ",$enable_languages," in
4480             *,lto,*)
4481               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4482               ;;
4483           esac
4484         fi
4485         ;;
4486     esac
4488     gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
4489       [-xbrace_comment=no], [.text],,
4490       [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4491                 [Define if your assembler supports -xbrace_comment option.])])
4493     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4494        gcc_cv_as_ix86_filds,,,
4495        [filds (%ebp); fists (%ebp)],,
4496        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4497          [Define if your assembler uses filds and fists mnemonics.])])
4499     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4500        gcc_cv_as_ix86_fildq,,,
4501        [fildq (%ebp); fistpq (%ebp)],,
4502        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4503          [Define if your assembler uses fildq and fistq mnemonics.])])
4505     gcc_GAS_CHECK_FEATURE([cmov syntax],
4506       gcc_cv_as_ix86_cmov_sun_syntax,,,
4507       [cmovl.l %edx, %eax],,
4508       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4509         [Define if your assembler supports the Sun syntax for cmov.])])
4511     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4512       gcc_cv_as_ix86_ffreep,,,
4513       [ffreep %st(1)],,
4514       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4515         [Define if your assembler supports the ffreep mnemonic.])])
4517     gcc_GAS_CHECK_FEATURE([.quad directive],
4518       gcc_cv_as_ix86_quad,,,
4519       [.quad 0],,
4520       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4521         [Define if your assembler supports the .quad directive.])])
4523     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4524       gcc_cv_as_ix86_sahf,,,
4525       [.code64
4526        sahf],,
4527       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4528         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4530     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4531       gcc_cv_as_ix86_interunit_movq,,,
4532       [.code64
4533        movq %mm0, %rax
4534        movq %rax, %xmm0])
4535     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4536       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4537       [Define if your assembler supports interunit movq mnemonic.])
4539     gcc_GAS_CHECK_FEATURE([hle prefixes],
4540       gcc_cv_as_ix86_hle,,,
4541       [lock xacquire cmpxchg %esi, (%ecx)],,
4542       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4543         [Define if your assembler supports HLE prefixes.])])
4545     gcc_GAS_CHECK_FEATURE([swap suffix],
4546       gcc_cv_as_ix86_swap,,,
4547       [movl.s %esp, %ebp],,
4548       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4549         [Define if your assembler supports the swap suffix.])])
4551     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4552       gcc_cv_as_ix86_diff_sect_delta,,,
4553       [.section .rodata
4554 .L1:
4555         .long .L2-.L1
4556         .long .L3-.L1
4557         .text
4558 .L3:    nop
4559 .L2:    nop],,
4560       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4561         [Define if your assembler supports the subtraction of symbols in different sections.])])
4563     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4564         gcc_cv_as_ix86_rep_lock_prefix,,,
4565         [rep movsl
4566          rep ret
4567          rep nop
4568          rep bsf %ecx, %eax
4569          rep bsr %ecx, %eax
4570          lock addl %edi, (%eax,%esi)
4571          lock orl $0, (%esp)],,
4572         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4573           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4575     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4576         gcc_cv_as_ix86_ud2,,,
4577         [ud2],,
4578       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4579         [Define if your assembler supports the 'ud2' mnemonic.])])
4581     # Enforce 32-bit output with gas and gld.
4582     if test x$gas = xyes; then
4583       as_ix86_gas_32_opt="--32"
4584     fi
4585     if echo "$ld_ver" | grep GNU > /dev/null; then
4586       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4587         ld_ix86_gld_32_opt="-melf_i386_sol2"
4588       else
4589         ld_ix86_gld_32_opt="-melf_i386"
4590       fi
4591     fi
4593     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4594         gcc_cv_as_ix86_tlsgdplt,,
4595         [$as_ix86_gas_32_opt],
4596         [call    tls_gd@tlsgdplt],
4597         [if test x$gcc_cv_ld != x \
4598          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4599            gcc_cv_as_ix86_tlsgdplt=yes
4600          fi
4601          rm -f conftest],
4602       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4603         [Define if your assembler and linker support @tlsgdplt.])])
4605     conftest_s='
4606         .section .tdata,"aw'$tls_section_flag'",@progbits
4607 tls_ld:
4608         .section .text,"ax",@progbits
4609          call    tls_ld@tlsldmplt'
4611     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4612         gcc_cv_as_ix86_tlsldmplt,,
4613         [$as_ix86_gas_32_opt],
4614         [$conftest_s],
4615         [if test x$gcc_cv_ld != x \
4616          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4617            gcc_cv_as_ix86_tlsldmplt=yes
4618          fi
4619          rm -f conftest])
4620     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4621       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4622       [Define to 1 if your assembler and linker support @tlsldmplt.])
4624     conftest_s='
4625         .section .text,"ax",@progbits
4626         .globl  _start
4627         .type   _start, @function
4628 _start:      
4629         leal    value@tlsldm(%ebx), %eax
4630         call    ___tls_get_addr@plt
4632         .section .tdata,"aw'$tls_section_flag'",@progbits
4633         .type   value, @object
4634 value:'
4635     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4636         gcc_cv_as_ix86_tlsldm,,
4637         [$as_ix86_gas_32_opt],
4638         [$conftest_s],
4639         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4640             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4641            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4642               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4643              gcc_cv_as_ix86_tlsldm=yes
4644            fi
4645          fi
4646          rm -f conftest])
4647     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4648       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4649       [Define to 1 if your assembler and linker support @tlsldm.])
4651     conftest_s='
4652         .data
4653 bar:
4654         .byte 1
4655         .text
4656         .global _start
4657 _start:
4658          cmpl $0, bar@GOT
4659          jmp *_start@GOT'
4660     gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4661         gcc_cv_as_ix86_got32x,,
4662         [$as_ix86_gas_32_opt],
4663         [$conftest_s],
4664         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4665             && test x$gcc_cv_readelf != x \
4666             && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4667                | grep R_386_GOT32X > /dev/null 2>&1 \
4668             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4669            if $gcc_cv_objdump -dw conftest 2>&1 \
4670               | grep 0xffffff > /dev/null 2>&1; then
4671              gcc_cv_as_ix86_got32x=no
4672            else
4673              gcc_cv_as_ix86_got32x=yes
4674            fi
4675          fi
4676          rm -f conftest])
4677     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4678       [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4679       [Define 0/1 if your assembler and linker support @GOT.])
4681     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4682       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4683       [$as_ix86_gas_32_opt],
4684 [       .text
4685 .L0:
4686         nop
4687         .data
4688         .long .L0@GOTOFF])
4689     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4690       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4691       [Define true if the assembler supports '.long foo@GOTOFF'.])
4693     conftest_s='
4694         .section .text,"ax",@progbits
4695         .globl  _start
4696         .type   _start, @function
4697 _start:
4698         leal    ld@tlsldm(%ecx), %eax
4699         call    *___tls_get_addr@GOT(%ecx)
4700         leal    gd@tlsgd(%ecx), %eax
4701         call    *___tls_get_addr@GOT(%ecx)
4703         .section .tdata,"aw'$tls_section_flag'",@progbits
4704         .type   ld, @object
4706         .byte 0
4707         .globl  gd
4708         .type   gd, @object
4710         .byte 0'
4711     gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4712         gcc_cv_as_ix86_tls_get_addr_via_got,,
4713         [$as_ix86_gas_32_opt],
4714         [$conftest_s],
4715         [if test x$gcc_cv_ld != x \
4716             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4717            gcc_cv_as_ix86_tls_get_addr_via_got=yes
4718          fi
4719          rm -f conftest])
4720     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4721       [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4722       [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4723     ;;
4725   ia64*-*-*)
4726     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4727         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4728 [       .text
4729         addl r15 = @ltoffx(x#), gp
4730         ;;
4731         ld8.mov r16 = [[r15]], x#
4733     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4734           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4736     ;;
4738   powerpc*-*-*)
4740     case $target in
4741       *-*-darwin*)
4742         gcc_GAS_CHECK_FEATURE([.machine directive support],
4743           gcc_cv_as_machine_directive,,,
4744           [     .machine ppc7400])
4745         if test x$gcc_cv_as_machine_directive != xyes; then
4746           echo "*** This target requires an assembler supporting \".machine\"" >&2
4747           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4748           test x$build = x$target && exit 1
4749         fi
4750         ;;
4751     esac
4753     case $target in
4754       *-*-aix*) conftest_s='    .machine "pwr5"
4755         .csect .text[[PR]]
4756         mfcr 3,128';;
4757       *-*-darwin*) conftest_s=' .text
4758         mfcr r3,128';;
4759       *) conftest_s='   .machine power4
4760         .text
4761         mfcr 3,128';;
4762     esac
4764     gcc_GAS_CHECK_FEATURE([mfcr field support],
4765       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4766       [$conftest_s],,
4767       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4768           [Define if your assembler supports mfcr field.])])
4770     case $target in
4771       *-*-aix*) conftest_s='    .csect .text[[PR]]
4772 LCF..0:
4773         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4774       *-*-darwin*)
4775         conftest_s='    .text
4776 LCF0:
4777         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4778       *) conftest_s='   .text
4779 .LCF0:
4780         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4781     esac
4783     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4784       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4785       [$conftest_s],,
4786       [AC_DEFINE(HAVE_AS_REL16, 1,
4787           [Define if your assembler supports R_PPC_REL16 relocs.])])
4789     case $target in
4790       *-*-aix*) conftest_s='    .machine "pwr7"
4791         .csect .text[[PR]]
4792         lxvd2x 1,2,3';;
4793       *) conftest_s='   .machine power7
4794         .text
4795         lxvd2x 1,2,3';;
4796     esac
4798     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4799       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4800       [$conftest_s],,
4801       [AC_DEFINE(HAVE_AS_VSX, 1,
4802           [Define if your assembler supports VSX instructions.])])
4804     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4805       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4806       [.gnu_attribute 4,1],,
4807       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4808           [Define if your assembler supports .gnu_attribute.])])
4810     gcc_GAS_CHECK_FEATURE([tls marker support],
4811       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4812       [ bl __tls_get_addr(x@tlsgd)],,
4813       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4814           [Define if your assembler supports arg info for __tls_get_addr.])])
4816     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4817       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4818       [ .reloc .,R_PPC64_ENTRY; nop],,
4819       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4820           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4822     gcc_GAS_CHECK_FEATURE([plt sequence marker support],
4823       gcc_cv_as_powerpc_pltseq_markers, [2,31,0],-a32 --fatal-warnings,
4824       [ .reloc .,R_PPC_PLTSEQ; nop],,
4825       [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
4826           [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
4828     case $target in
4829       *-*-aix*)
4830         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4831           gcc_cv_as_aix_ref, [2,21,0],,
4832           [     .csect stuff[[rw]]
4833              stuff:
4834                 .long 1
4835                 .extern sym
4836                 .ref sym
4837           ],,
4838           [AC_DEFINE(HAVE_AS_REF, 1,
4839             [Define if your assembler supports .ref])])
4841         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4842           gcc_cv_as_aix_dwloc, [2,21,0],,
4843           [     .dwsect 0xA0000
4844         Lframe..0:
4845                 .vbyte 4,Lframe..0
4846           ],,
4847           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4848             [Define if your assembler supports AIX debug frame section label reference.])])
4849         ;;
4850     esac
4851     ;;
4853   mips*-*-*)
4854     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4855       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4856 [       lw $4,%gp_rel(foo)($4)],,
4857       [if test x$target_cpu_default = x
4858        then target_cpu_default=MASK_EXPLICIT_RELOCS
4859        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4860        fi])
4862     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4863       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4864       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4865                  [Define if the assembler understands -mno-shared.])])
4867     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4868       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4869       [.gnu_attribute 4,1],,
4870       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4871           [Define if your assembler supports .gnu_attribute.])])
4873     gcc_GAS_CHECK_FEATURE([.module support],
4874       gcc_cv_as_mips_dot_module,,[-32],
4875       [.module mips2
4876        .module fp=xx],,
4877       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4878           [Define if your assembler supports .module.])])
4879     if test x$gcc_cv_as_mips_dot_module = xno \
4880        && test x$with_fp_32 != x; then
4881       AC_MSG_ERROR(
4882         [Requesting --with-fp-32= requires assembler support for .module.])
4883     fi
4885     gcc_GAS_CHECK_FEATURE([.micromips support],
4886       gcc_cv_as_micromips_support,,[--fatal-warnings],
4887       [.set micromips],,
4888       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4889           [Define if your assembler supports the .set micromips directive])])
4891     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4892       gcc_cv_as_mips_dtprelword, [2,18,0],,
4893       [.section .tdata,"awT",@progbits
4895         .word 2
4896         .text
4897         .dtprelword x+0x8000],,
4898       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4899           [Define if your assembler supports .dtprelword.])])
4901     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4902       gcc_cv_as_mips_dspr1_mult,,,
4903 [       .set    mips32r2
4904         .set    nodspr2
4905         .set    dsp
4906         madd    $ac3,$4,$5
4907         maddu   $ac3,$4,$5
4908         msub    $ac3,$4,$5
4909         msubu   $ac3,$4,$5
4910         mult    $ac3,$4,$5
4911         multu   $ac3,$4,$5],,
4912       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4913           [Define if your assembler supports DSPR1 mult.])])
4915     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4916     gcc_cv_as_ld_jalr_reloc=no
4917     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4918       if test $in_tree_ld = yes ; then
4919         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 \
4920            && test $in_tree_ld_is_elf = yes; then
4921           gcc_cv_as_ld_jalr_reloc=yes
4922         fi
4923       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4924         echo '  .ent x' > conftest.s
4925         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4926         echo '  lw $25,%call16(y)($28)' >> conftest.s
4927         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4928         echo '1:        jalr $25' >> conftest.s
4929         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4930         echo '1:        jalr $25' >> conftest.s
4931         echo '  .end x' >> conftest.s
4932         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4933            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4934           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4935              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4936             gcc_cv_as_ld_jalr_reloc=yes
4937           fi
4938         fi
4939         rm -f conftest.*
4940       fi
4941     fi
4942     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4943       if test x$target_cpu_default = x; then
4944         target_cpu_default=MASK_RELAX_PIC_CALLS
4945       else
4946         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4947       fi
4948     fi
4949     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4951     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4952       [gcc_cv_ld_mips_personality_relaxation],
4953       [gcc_cv_ld_mips_personality_relaxation=no
4954        if test $in_tree_ld = yes ; then
4955          if test "$gcc_cv_gld_major_version" -eq 2 \
4956                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4957                  -o "$gcc_cv_gld_major_version" -gt 2; then
4958            gcc_cv_ld_mips_personality_relaxation=yes
4959          fi
4960        elif test x$gcc_cv_as != x \
4961                  -a x$gcc_cv_ld != x \
4962                  -a x$gcc_cv_readelf != x ; then
4963          cat > conftest.s <<EOF
4964         .cfi_startproc
4965         .cfi_personality 0x80,indirect_ptr
4966         .ent test
4967 test:
4968         nop
4969         .end test
4970         .cfi_endproc
4972         .section .data,"aw",@progbits
4973 indirect_ptr:
4974         .dc.a personality
4976          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4977             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4978            if $gcc_cv_readelf -d conftest 2>&1 \
4979               | grep TEXTREL > /dev/null 2>&1; then
4980              :
4981            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4982                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4983              :
4984            else
4985              gcc_cv_ld_mips_personality_relaxation=yes
4986            fi
4987          fi
4988        fi
4989        rm -f conftest.s conftest.o conftest])
4990     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4991             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4992       [Define if your linker can relax absolute .eh_frame personality
4993 pointers into PC-relative form.])
4994     fi
4996     gcc_GAS_CHECK_FEATURE([-mnan= support],
4997       gcc_cv_as_mips_nan,,
4998       [-mnan=2008],,,
4999       [AC_DEFINE(HAVE_AS_NAN, 1,
5000                  [Define if the assembler understands -mnan=.])])
5001     if test x$gcc_cv_as_mips_nan = xno \
5002        && test x$with_nan != x; then
5003       AC_MSG_ERROR(
5004         [Requesting --with-nan= requires assembler support for -mnan=])
5005     fi
5006     ;;
5007     msp430-*-*)
5008     # Earlier GAS versions generically support .gnu_attribute, but the
5009     # msp430 assembler will not do anything with it.
5010     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5011       gcc_cv_as_msp430_gnu_attribute, [2,33,50],,
5012       [.gnu_attribute 4,1],,
5013       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5014           [Define if your assembler supports .gnu_attribute.])])
5015     gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5016       gcc_cv_as_msp430_mspabi_attribute, [2,33,50],,
5017       [.mspabi_attribute 4,1],,
5018       [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5019           [Define if your assembler supports .mspabi_attribute.])])
5020     if test x$enable_newlib_nano_formatted_io = xyes; then
5021       AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5022 configured with --enable-newlib-nano-formatted-io.])
5023       fi
5024     ;;
5025     riscv*-*-*)
5026     gcc_GAS_CHECK_FEATURE([.attribute support],
5027       gcc_cv_as_riscv_attribute, [2,32,0],,
5028       [.attribute stack_align,4],,
5029       [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5030           [Define if your assembler supports .attribute.])])
5031     ;;
5032     s390*-*-*)
5033     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5034       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
5035       [.gnu_attribute 8,1],,
5036       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5037           [Define if your assembler supports .gnu_attribute.])])
5038     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5039       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
5040       [ .machinemode push
5041         .machinemode pop
5042         .machine push
5043         .machine pop],,
5044       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5045           [Define if your assembler supports .machine and .machinemode.])])
5046     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5047       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
5048       [ .machine z13+vx ],,
5049       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5050           [Define if your assembler supports architecture modifiers.])])
5051     gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5052       gcc_cv_as_s390_vector_loadstore_alignment_hints, [2,31,0],,
5053       [ vl %v24,0(%r15),3 ],,
5054       [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5055           [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5057     ;;
5058 esac
5060 # Mips and HP-UX need the GNU assembler.
5061 # Linux on IA64 might be able to use the Intel assembler.
5063 case "$target" in
5064   mips*-*-* | *-*-hpux* )
5065     if test x$gas_flag = xyes \
5066        || test x"$host" != x"$build" \
5067        || test ! -x "$gcc_cv_as" \
5068        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5069       :
5070     else
5071       echo "*** This configuration requires the GNU assembler" >&2
5072       exit 1
5073     fi
5074     ;;
5075 esac
5077 # ??? Not all targets support dwarf2 debug_line, even within a version
5078 # of gas.  Moreover, we need to emit a valid instruction to trigger any
5079 # info to the output file.  So, as supported targets are added to gas 2.11,
5080 # add some instruction here to (also) show we expect this might work.
5081 # ??? Once 2.11 is released, probably need to add first known working
5082 # version to the per-target configury.
5083 case "$cpu_type" in
5084   aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \
5085   | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5086   | tilegx | tilepro | visium | xstormy16 | xtensa)
5087     insn="nop"
5088     ;;
5089   ia64 | s390)
5090     insn="nop 0"
5091     ;;
5092   mmix)
5093     insn="swym 0"
5094     ;;
5095 esac
5096 if test x"$insn" != x; then
5097  conftest_s="\
5098         .file 1 \"conftest.s\"
5099         .loc 1 3 0
5100         $insn"
5101  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5102   gcc_cv_as_dwarf2_debug_line,
5103   [elf,2,11,0],, [$conftest_s],
5104   [if test x$gcc_cv_objdump != x \
5105    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5106       | grep debug_line > /dev/null 2>&1; then
5107      gcc_cv_as_dwarf2_debug_line=yes
5108    elif test x$gcc_cv_otool != x \
5109    && $gcc_cv_otool -l conftest.o 2> /dev/null \
5110       | grep debug_line > /dev/null 2>&1; then
5111      gcc_cv_as_dwarf2_debug_line=yes
5112    fi])
5114 # The .debug_line file table must be in the exact order that
5115 # we specified the files, since these indices are also used
5116 # by DW_AT_decl_file.  Approximate this test by testing if
5117 # the assembler bitches if the same index is assigned twice.
5118  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5119   gcc_cv_as_dwarf2_file_buggy,,,
5120 [       .file 1 "foo.s"
5121         .file 1 "bar.s"])
5123  if test $gcc_cv_as_dwarf2_debug_line = yes \
5124  && test $gcc_cv_as_dwarf2_file_buggy = no; then
5125     AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5126   [Define if your assembler supports dwarf2 .file/.loc directives,
5127    and preserves file table indices exactly as given.])
5129     if test $gcc_cv_as_leb128 = yes; then
5130         conftest_s="\
5131         .file 1 \"conftest.s\"
5132         .loc 1 3 0 view .LVU1
5133         $insn
5134         .data
5135         .uleb128 .LVU1
5136         .uleb128 .LVU1
5138         gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5139           gcc_cv_as_dwarf2_debug_view,
5140           [elf,2,27,0],,[$conftest_s],,
5141           [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5142   [Define if your assembler supports views in dwarf2 .loc directives.])])
5143     fi
5144  fi
5146  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5147   gcc_cv_as_gdwarf2_flag,
5148   [elf,2,11,0], [--gdwarf2], [$insn],,
5149   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5150 [Define if your assembler supports the --gdwarf2 option.])])
5152  gcc_GAS_CHECK_FEATURE([--gstabs option],
5153   gcc_cv_as_gstabs_flag,
5154   [elf,2,11,0], [--gstabs], [$insn],,
5155   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
5156 [Define if your assembler supports the --gstabs option.])])
5158  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5159   gcc_cv_as_debug_prefix_map_flag,
5160   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
5161   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5162 [Define if your assembler supports the --debug-prefix-map option.])])
5165 gcc_GAS_CHECK_FEATURE([compressed debug sections],
5166   gcc_cv_as_compress_debug,,,,
5167   [# gas compiled without zlib cannot compress debug sections and warns
5168    # about it, but still exits successfully.  So check for this, too.
5169    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5170    then
5171      gcc_cv_as_compress_debug=0
5172    # Since binutils 2.26, gas supports --compress-debug-sections=type,
5173    # defaulting to the ELF gABI format.
5174    elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
5175    then
5176      gcc_cv_as_compress_debug=2
5177      gcc_cv_as_compress_debug_option="--compress-debug-sections"
5178      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5179    # Before binutils 2.26, gas only supported --compress-debug-options and
5180    # emitted the traditional GNU format.
5181    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
5182    then
5183      gcc_cv_as_compress_debug=1
5184      gcc_cv_as_compress_debug_option="--compress-debug-sections"
5185      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5186    else
5187      gcc_cv_as_compress_debug=0
5188    fi])
5189 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5190 [Define to the level of your assembler's compressed debug section support.])
5191 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5192 [Define to the assembler option to enable compressed debug sections.])
5193 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5194 [Define to the assembler option to disable compressed debug sections.])
5196 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
5197  ,,
5198 [.lcomm bar,4,16],,
5199 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5200   [Define if your assembler supports .lcomm with an alignment field.])])
5202 if test x$with_sysroot = x && test x$host = x$target \
5203    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5204    && test "$prefix" != "NONE"; then
5205   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5206 [Define to PREFIX/include if cpp should also search that directory.])
5209 # Determine the version of glibc, if any, used on the target.
5210 AC_MSG_CHECKING([for target glibc version])
5211 AC_ARG_WITH([glibc-version],
5212   [AS_HELP_STRING([--with-glibc-version=M.N],
5213     [assume GCC used with glibc version M.N or later])], [
5214 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5215   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5216   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5217 else
5218   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5219 fi], [
5220 glibc_version_major=0
5221 glibc_version_minor=0
5222 [if test -f $target_header_dir/features.h \
5223   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
5224   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
5225   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
5226   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
5227 fi]])
5228 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5229 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5230 [GNU C Library major version number used on the target, or 0.])
5231 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5232 [GNU C Library minor version number used on the target, or 0.])
5234 AC_ARG_ENABLE(gnu-unique-object,
5235  [AS_HELP_STRING([--enable-gnu-unique-object],
5236    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5237  [case $enable_gnu_unique_object in
5238     yes | no) ;;
5239     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5240 Valid choices are 'yes' and 'no'.]) ;;
5241   esac],
5242  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
5243    [elf,2,19,52],,
5244    [.type foo, '$target_type_format_char'gnu_unique_object],,
5245 # We need to unquote above to to use the definition from config.gcc.
5246 # Also check for ld.so support, i.e. glibc 2.11 or higher.
5247    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5248    )])
5249 if test x$enable_gnu_unique_object = xyes; then
5250   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5251    [Define if your assembler supports @gnu_unique_object.])
5254 AC_CACHE_CHECK([assembler for tolerance to line number 0],
5255  [gcc_cv_as_line_zero],
5256  [gcc_cv_as_line_zero=no
5257   if test $in_tree_gas = yes; then
5258     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
5259   elif test "x$gcc_cv_as" != x; then
5260     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5261     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5262        test "x`cat conftest.out`" = x
5263     then
5264       gcc_cv_as_line_zero=yes
5265     else
5266       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5267       cat conftest.s >&AS_MESSAGE_LOG_FD
5268       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5269       cat conftest.out >&AS_MESSAGE_LOG_FD
5270     fi
5271     rm -f conftest.o conftest.s conftest.out
5272   fi])
5273 if test "x$gcc_cv_as_line_zero" = xyes; then
5274   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5275 [Define if the assembler won't complain about a line such as # 0 "" 2.])
5278 AC_MSG_CHECKING(support for thin archives)
5279 thin_archive_support=no
5280 echo 'int main (void) { return 0; }' > conftest.c
5281 if ($AR --version | sed 1q | grep "GNU ar" \
5282     && $CC $CFLAGS -c conftest.c \
5283     && $AR rcT conftest.a conftest.o \
5284     && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5285   thin_archive_support=yes
5287 rm -f conftest.c conftest.o conftest.a conftest
5288 AC_MSG_RESULT($thin_archive_support)
5289 AC_SUBST(thin_archive_support)
5291 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5292 gcc_cv_ld_eh_frame_hdr=no
5293 if test $in_tree_ld = yes ; then
5294   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 \
5295      && test $in_tree_ld_is_elf = yes; then
5296     gcc_cv_ld_eh_frame_hdr=yes
5297   fi
5298 elif test x$gcc_cv_ld != x; then
5299   if echo "$ld_ver" | grep GNU > /dev/null; then
5300     # Check if linker supports --eh-frame-hdr option
5301     if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5302       gcc_cv_ld_eh_frame_hdr=yes
5303     fi
5304   else
5305     case "$target" in
5306       *-*-solaris2*)
5307         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5308         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
5309           gcc_cv_ld_eh_frame_hdr=yes
5310         fi
5311         ;;
5312     esac
5313   fi
5315 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
5316 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
5317         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
5318 [Define if your linker supports .eh_frame_hdr.])
5320 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
5322 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
5323 gcc_cv_ld_eh_frame_ciev3=no
5324 if test $in_tree_ld = yes ; then
5325   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 \
5326      && test $in_tree_ld_is_elf = yes; then
5327     gcc_cv_ld_eh_frame_ciev3=yes
5328   fi
5329 elif test x$gcc_cv_ld != x; then
5330   if echo "$ld_ver" | grep GNU > /dev/null; then
5331     gcc_cv_ld_eh_frame_ciev3=yes
5332     if test 0"$ld_date" -lt 20040513; then
5333       if test -n "$ld_date"; then
5334         # If there was date string, but was earlier than 2004-05-13, fail
5335         gcc_cv_ld_eh_frame_ciev3=no
5336       elif test "$ld_vers_major" -lt 2; then
5337         gcc_cv_ld_eh_frame_ciev3=no
5338       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
5339         gcc_cv_ld_eh_frame_ciev3=no
5340       fi
5341     fi
5342   else
5343     case "$target" in
5344       *-*-solaris2*)
5345         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
5346         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
5347           gcc_cv_ld_eh_frame_ciev3=yes
5348         fi
5349         ;;
5350     esac
5351   fi
5353 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
5354   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
5355   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
5356 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
5358 AC_MSG_CHECKING(linker position independent executable support)
5359 gcc_cv_ld_pie=no
5360 if test $in_tree_ld = yes ; then
5361   case "$target" in
5362     # Full PIE support on Solaris was only introduced in gld 2.26.
5363     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
5364     *)              gcc_gld_pie_min_version=15 ;;
5365   esac
5366   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 \
5367      && test $in_tree_ld_is_elf = yes; then
5368     gcc_cv_ld_pie=yes
5369   fi
5370 elif test x$gcc_cv_ld != x; then
5371   # Check if linker supports -pie option
5372   if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
5373     gcc_cv_ld_pie=yes
5374     case "$target" in
5375       *-*-solaris2*)
5376         if echo "$ld_ver" | grep GNU > /dev/null \
5377           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5378           gcc_cv_ld_pie=no
5379         fi
5380         ;;
5381     esac
5382   else
5383     case "$target" in
5384       *-*-solaris2.1[[1-9]]*)
5385         # Solaris 11.3 added PIE support.
5386         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
5387           gcc_cv_ld_pie=yes
5388         fi
5389         ;;
5390     esac
5391   fi
5393 if test x"$gcc_cv_ld_pie" = xyes; then
5394         AC_DEFINE(HAVE_LD_PIE, 1,
5395 [Define if your linker supports PIE option.])
5397 AC_MSG_RESULT($gcc_cv_ld_pie)
5399 AC_MSG_CHECKING(linker PIE support with copy reloc)
5400 gcc_cv_ld_pie_copyreloc=no
5401 if test $gcc_cv_ld_pie = yes ; then
5402   if test $in_tree_ld = yes ; then
5403     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
5404       gcc_cv_ld_pie_copyreloc=yes
5405     fi
5406   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5407     # Check if linker supports -pie option with copy reloc
5408     case "$target" in
5409     i?86-*-linux* | x86_64-*-linux*)
5410       cat > conftest1.s <<EOF
5411         .globl  a_glob
5412         .data
5413         .type   a_glob, @object
5414         .size   a_glob, 4
5415 a_glob:
5416         .long   2
5418       cat > conftest2.s <<EOF
5419         .text
5420         .globl  main
5421         .type   main, @function
5422 main:
5423         movl    %eax, a_glob(%rip)
5424         .size   main, .-main
5425         .globl  ptr
5426         .section        .data.rel,"aw",@progbits
5427         .type   ptr, @object
5428 ptr:
5429         .quad   a_glob
5431       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5432          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
5433          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5434          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
5435         gcc_cv_ld_pie_copyreloc=yes
5436       fi
5437       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
5438       ;;
5439     esac
5440   fi
5442 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
5443   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
5444   [Define 0/1 if your linker supports -pie option with copy reloc.])
5445 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
5447 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
5448 gcc_cv_ld_eh_gc_sections=no
5449 if test $in_tree_ld = yes ; then
5450   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 \
5451      && test $in_tree_ld_is_elf = yes; then
5452     gcc_cv_ld_eh_gc_sections=yes
5453   fi
5454 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
5455   cat > conftest.s <<EOF
5456         .section        .text
5457 .globl _start
5458         .type _start, @function
5459 _start:
5460         .long foo
5461         .size _start, .-_start
5462         .section        .text.foo,"ax",@progbits
5463         .type foo, @function
5464 foo:
5465         .long 0
5466         .size foo, .-foo
5467         .section        .gcc_except_table.foo,"a",@progbits
5468 .L0:
5469         .long 0
5470         .section        .eh_frame,"a",@progbits
5471         .long .L0
5473   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5474     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5475          | grep "gc-sections option ignored" > /dev/null; then
5476       gcc_cv_ld_eh_gc_sections=no
5477     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5478          | grep gcc_except_table > /dev/null; then
5479       gcc_cv_ld_eh_gc_sections=yes
5480       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5481       if test x$gcc_cv_as_comdat_group != xyes; then
5482         gcc_cv_ld_eh_gc_sections=no
5483         cat > conftest.s <<EOF
5484         .section        .text
5485 .globl _start
5486         .type _start, @function
5487 _start:
5488         .long foo
5489         .size _start, .-_start
5490         .section        .gnu.linkonce.t.foo,"ax",@progbits
5491         .type foo, @function
5492 foo:
5493         .long 0
5494         .size foo, .-foo
5495         .section        .gcc_except_table.foo,"a",@progbits
5496 .L0:
5497         .long 0
5498         .section        .eh_frame,"a",@progbits
5499         .long .L0
5501         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5502           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5503                | grep "gc-sections option ignored" > /dev/null; then
5504             gcc_cv_ld_eh_gc_sections=no
5505           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5506                | grep gcc_except_table > /dev/null; then
5507             gcc_cv_ld_eh_gc_sections=yes
5508           fi
5509         fi
5510       fi
5511     fi
5512   fi
5513   rm -f conftest.s conftest.o conftest
5515 case "$target" in
5516   hppa*-*-linux*)
5517     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5518     gcc_cv_ld_eh_gc_sections=no
5519     ;;
5520 esac
5521 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5522         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5523   [Define if your linker supports garbage collection of
5524    sections in presence of EH frames.])
5526 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5528 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5529 gcc_cv_ld_eh_gc_sections_bug=no
5530 if test $in_tree_ld = yes ; then
5531   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 \
5532      && test $in_tree_ld_is_elf = yes; then
5533     gcc_cv_ld_eh_gc_sections_bug=yes
5534   fi
5535 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
5536   gcc_cv_ld_eh_gc_sections_bug=yes
5537   cat > conftest.s <<EOF
5538         .section        .text
5539 .globl _start
5540         .type _start, @function
5541 _start:
5542         .long foo
5543         .size _start, .-_start
5544         .section        .text.startup.foo,"ax",@progbits
5545         .type foo, @function
5546 foo:
5547         .long 0
5548         .size foo, .-foo
5549         .section        .gcc_except_table.foo,"a",@progbits
5550 .L0:
5551         .long 0
5552         .section        .eh_frame,"a",@progbits
5553         .long .L0
5555   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5556     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5557          | grep "gc-sections option ignored" > /dev/null; then
5558       :
5559     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5560          | grep gcc_except_table > /dev/null; then
5561       gcc_cv_ld_eh_gc_sections_bug=no
5562     fi
5563   fi
5564   rm -f conftest.s conftest.o conftest
5566 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5567         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5568   [Define if your linker has buggy garbage collection of
5569    sections support when .text.startup.foo like sections are used.])
5571 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5573 AC_MSG_CHECKING(linker for compressed debug sections)
5574 # gold/gld support compressed debug sections since binutils 2.19/2.21
5575 # In binutils 2.26, gld gained support for the ELF gABI format.
5576 if test $in_tree_ld = yes ; then
5577   gcc_cv_ld_compress_debug=0
5578   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 \
5579      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5580     gcc_cv_ld_compress_debug=2
5581     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5582   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 \
5583      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
5584     gcc_cv_ld_compress_debug=3
5585     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5586   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 \
5587      && test $in_tree_ld_is_elf = yes; then
5588     gcc_cv_ld_compress_debug=1
5589   fi
5590 elif echo "$ld_ver" | grep GNU > /dev/null; then
5591   if test "$ld_vers_major" -lt 2 \
5592      || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5593     gcc_cv_ld_compress_debug=0
5594   elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5595     gcc_cv_ld_compress_debug=1
5596   else
5597     gcc_cv_ld_compress_debug=3
5598     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5599   fi
5600   if test $ld_is_gold = yes; then
5601     gcc_cv_ld_compress_debug=2
5602     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5603   fi
5604 else
5605 changequote(,)dnl
5606   case "${target}" in
5607     *-*-solaris2*)
5608       # Introduced in Solaris 11.2.
5609       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5610         gcc_cv_ld_compress_debug=3
5611         gcc_cv_ld_compress_debug_option="-z compress-sections"
5612       else
5613         gcc_cv_ld_compress_debug=0
5614       fi
5615       ;;
5616     *)
5617       # Assume linkers other than GNU ld don't support compessed debug
5618       # sections.
5619       gcc_cv_ld_compress_debug=0
5620       ;;
5621   esac
5622 changequote([,])dnl
5624 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5625 [Define to the level of your linker's compressed debug section support.])
5626 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5627 [Define to the linker option to enable compressed debug sections.])
5628 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5630 if test x"$ld64_flag" = x"yes"; then
5632   # Set defaults for possibly untestable items.
5633   gcc_cv_ld64_export_dynamic=0
5635   if test "$build" = "$host"; then
5636     darwin_try_test=1
5637   else
5638     darwin_try_test=0
5639   fi
5641   # On Darwin, because of FAT library support, it is often possible to execute
5642   # exes from compatible archs even when the host differs from the build system.
5643   case "$build","$host" in
5644     x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
5645         darwin_try_test=1;;
5646     *) ;;
5647   esac
5649   # If the configurer specified a minimum ld64 version to be supported, then use
5650   # that to determine feature support.
5651   if test x"${gcc_cv_ld64_version}" != x; then
5652     AC_MSG_CHECKING(ld64 specified version)
5653     gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
5654     AC_MSG_RESULT($gcc_cv_ld64_major)
5655    if test "$gcc_cv_ld64_major" -ge 236; then
5656       gcc_cv_ld64_export_dynamic=1
5657     fi
5658   elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
5659     # If the version was not specified, try to find it.
5660     AC_MSG_CHECKING(linker version)
5661     if test x"${gcc_cv_ld64_version}" = x; then
5662       gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
5663     fi
5664     AC_MSG_RESULT($gcc_cv_ld64_version)
5666     AC_MSG_CHECKING(linker for -export_dynamic support)
5667     gcc_cv_ld64_export_dynamic=1
5668     if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
5669       gcc_cv_ld64_export_dynamic=0
5670     fi
5671     AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
5672   fi
5674   if test x"${gcc_cv_ld64_version}" != x; then
5675     AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
5676       [Define to ld64 version.])
5677   fi
5679   AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
5680   [Define to 1 if ld64 supports '-export_dynamic'.])
5683 # --------
5684 # UNSORTED
5685 # --------
5687 AC_CACHE_CHECK(linker --as-needed support,
5688 gcc_cv_ld_as_needed,
5689 [gcc_cv_ld_as_needed=no
5690 gcc_cv_ld_as_needed_option='--as-needed'
5691 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5692 if test $in_tree_ld = yes ; then
5693   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 \
5694      && test $in_tree_ld_is_elf = yes; then
5695     gcc_cv_ld_as_needed=yes
5696     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
5697       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5698       gcc_cv_ld_no_as_needed_option='--pop-state'
5699     fi
5700   fi
5701 elif test x$gcc_cv_ld != x; then
5702   # Check if linker supports --as-needed and --no-as-needed options
5703   if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
5704     gcc_cv_ld_as_needed=yes
5705     if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
5706        && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
5707        && echo "$ld_ver" | grep GNU > /dev/null \
5708        && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
5709       # Use these options only when both ld.bfd and ld.gold support
5710       # --push-state/--pop-state, which unfortunately wasn't added
5711       # at the same time.
5712       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5713       gcc_cv_ld_no_as_needed_option='--pop-state'
5714     fi
5715   fi
5716   case "$target:$gnu_ld" in
5717     *-*-solaris2*:no)
5718       # Solaris 2 ld always supports -z ignore/-z record.  Prefer the native
5719       # forms.
5720       gcc_cv_ld_as_needed=yes
5721       gcc_cv_ld_as_needed_option="-z ignore"
5722       gcc_cv_ld_no_as_needed_option="-z record"
5723       ;;
5724   esac
5726 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5727 # dl_iterate_phdr, i.e. since Solaris 11.
5728 case "$target" in
5729   *-*-solaris2.1[[1-9]]*)
5730     case "$target" in
5731     i?86-*-* | x86_64-*-*)
5732       if echo "$ld_ver" | grep GNU > /dev/null; then
5733         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5734         gcc_cv_ld_as_needed=no
5735       fi
5736       ;;
5737     esac
5738     ;;
5739   *-*-solaris2*)
5740     gcc_cv_ld_as_needed=no
5741     ;;
5742 esac
5744 if test x"$gcc_cv_ld_as_needed" = xyes; then
5745         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5746 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5747         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5748 [Define to the linker option to ignore unused dependencies.])
5749         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5750 [Define to the linker option to keep unused dependencies.])
5753 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5754 saved_LDFLAGS="$LDFLAGS"
5755 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5756   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5757   AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
5758     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5759 done
5760 LDFLAGS="$saved_LDFLAGS"
5761 if test "x$gcc_cv_ld_clearcap" = xyes; then
5762   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5763 [Define if the linker supports clearing hardware capabilities via mapfile.])
5764   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5766 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5768 case "$target" in
5769   powerpc*-*-*)
5770     case "$target" in
5771       *le-*-linux*)
5772         emul_name="-melf32lppc"
5773         ;;
5774       *)
5775         emul_name="-melf32ppc"
5776         ;;
5777     esac
5778     AC_CACHE_CHECK(linker .gnu.attributes long double support,
5779     gcc_cv_ld_ppc_attr,
5780     [gcc_cv_ld_ppc_attr=no
5781     if test x"$ld_is_gold" = xyes; then
5782       gcc_cv_ld_ppc_attr=yes
5783     elif test $in_tree_ld = yes ; then
5784       if test "$gcc_cv_gld_major_version" -eq 2 \
5785                 -a "$gcc_cv_gld_minor_version" -ge 28 \
5786                 -o "$gcc_cv_gld_major_version" -gt 2; then
5787         gcc_cv_ld_ppc_attr=yes
5788       fi
5789     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5790       # check that merging the long double .gnu_attribute doesn't warn
5791       cat > conftest1.s <<EOF
5792         .gnu_attribute 4,1
5794       cat > conftest2.s <<EOF
5795         .gnu_attribute 4,9
5797       if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5798          && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5799          && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
5800          && test ! -s conftest.err; then
5801         gcc_cv_ld_ppc_attr=yes
5802       fi
5803       rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
5804     fi
5805     ])
5806     if test x$gcc_cv_ld_ppc_attr = xyes; then
5807       AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
5808     [Define if your PowerPC linker has .gnu.attributes long double support.])
5809     fi
5810     ;;
5811 esac
5813 case "$target:$tm_file" in
5814   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5815   case "$target" in
5816      *le-*-linux*)
5817      emul_name="-melf64lppc"
5818       ;;
5819      *-*-linux*)
5820      emul_name="-melf64ppc"
5821       ;;
5822      *-*-freebsd*)
5823      emul_name="-melf64ppc_fbsd"
5824       ;;
5825   esac
5826     AC_CACHE_CHECK(linker support for omitting dot symbols,
5827     gcc_cv_ld_no_dot_syms,
5828     [gcc_cv_ld_no_dot_syms=no
5829     if test x"$ld_is_gold" = xyes; then
5830       gcc_cv_ld_no_dot_syms=yes
5831     elif test $in_tree_ld = yes ; then
5832       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
5833         gcc_cv_ld_no_dot_syms=yes
5834       fi
5835     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5836       cat > conftest1.s <<EOF
5837         .text
5838         bl .foo
5840       cat > conftest2.s <<EOF
5841         .section ".opd","aw"
5842         .align 3
5843         .globl foo
5844         .type foo,@function
5845 foo:
5846         .quad .LEfoo,.TOC.@tocbase,0
5847         .text
5848 .LEfoo:
5849         blr
5850         .size foo,.-.LEfoo
5852       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5853          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5854          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5855         gcc_cv_ld_no_dot_syms=yes
5856       fi
5857       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5858     fi
5859     ])
5860     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5861       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5862     [Define if your PowerPC64 linker only needs function descriptor syms.])
5863     fi
5865     AC_CACHE_CHECK(linker large toc support,
5866     gcc_cv_ld_large_toc,
5867     [gcc_cv_ld_large_toc=no
5868     if test x"$ld_is_gold" = xyes; then
5869       gcc_cv_ld_large_toc=yes
5870     elif test $in_tree_ld = yes ; then
5871       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
5872         gcc_cv_ld_large_toc=yes
5873       fi
5874     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5875       cat > conftest.s <<EOF
5876         .section ".tbss","awT",@nobits
5877         .align 3
5878 ie0:    .space 8
5879         .global _start
5880         .text
5881 _start:
5882         addis 9,13,ie0@got@tprel@ha
5883         ld 9,ie0@got@tprel@l(9)
5885       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5886          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5887         gcc_cv_ld_large_toc=yes
5888       fi
5889       rm -f conftest conftest.o conftest.s
5890     fi
5891     ])
5892     if test x"$gcc_cv_ld_large_toc" = xyes; then
5893       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5894     [Define if your PowerPC64 linker supports a large TOC.])
5895     fi
5897     AC_CACHE_CHECK(linker toc pointer alignment,
5898     gcc_cv_ld_toc_align,
5899     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5900       cat > conftest.s <<EOF
5901         .global _start
5902         .text
5903 _start:
5904         addis 9,2,x@got@ha
5905         .section .data.rel.ro,"aw",@progbits
5906         .p2align 16
5907         .space 32768
5908 x:      .quad .TOC.
5910       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5911          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5912         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)) }'`
5913       fi
5914       rm -f conftest conftest.o conftest.s
5915     fi
5916     ])
5917     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5918       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5919     [Define to .TOC. alignment forced by your linker.])
5920     fi
5921     ;;
5922 esac
5924 case "$target" in
5925   *-*-aix*)
5926     AC_CACHE_CHECK(linker large toc support,
5927     gcc_cv_ld_large_toc,
5928     [gcc_cv_ld_large_toc=no
5929     if test x$gcc_cv_as != x ; then
5930       cat > conftest.s <<EOF
5931         .toc
5932 LC..1:
5933         .tc a[[TC]],a[[RW]]
5934         .extern a[[RW]]
5935         .csect .text[[PR]]
5936 .largetoctest:
5937         addis 9,LC..1@u(2)
5938         ld 3,LC..1@l(9)
5940       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5941         gcc_cv_ld_large_toc=yes
5942       fi
5943       rm -f conftest conftest.o conftest.s
5944     fi
5945     ])
5946     if test x"$gcc_cv_ld_large_toc" = xyes; then
5947       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5948     [Define if your PowerPC64 linker supports a large TOC.])
5949     fi
5950     ;;
5951 esac
5953 AC_CACHE_CHECK(linker --build-id support,
5954   gcc_cv_ld_buildid,
5955   [gcc_cv_ld_buildid=no
5956   if test $in_tree_ld = yes ; then
5957     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5958        "$gcc_cv_gld_minor_version" -ge 18 -o \
5959        "$gcc_cv_gld_major_version" -gt 2 \
5960        && test $in_tree_ld_is_elf = yes; then
5961       gcc_cv_ld_buildid=yes
5962     fi
5963   elif test x$gcc_cv_ld != x; then
5964     if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
5965       gcc_cv_ld_buildid=yes
5966     fi
5967   fi])
5968 if test x"$gcc_cv_ld_buildid" = xyes; then
5969   AC_DEFINE(HAVE_LD_BUILDID, 1,
5970   [Define if your linker supports --build-id.])
5973 AC_ARG_ENABLE(linker-build-id,
5974 [AS_HELP_STRING([--enable-linker-build-id],
5975                 [compiler will always pass --build-id to linker])],
5977 enable_linker_build_id=no)
5979 if test x"$enable_linker_build_id" = xyes; then
5980   if test x"$gcc_cv_ld_buildid" = xyes; then
5981     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5982     [Define if gcc should always pass --build-id to linker.])
5983   else
5984     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5985   fi
5988 # In binutils 2.21, GNU ld gained support for new emulations fully
5989 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5990 AC_CACHE_CHECK(linker *_sol2 emulation support,
5991   gcc_cv_ld_sol2_emulation,
5992   [gcc_cv_ld_sol2_emulation=no
5993   if test $in_tree_ld = yes ; then
5994     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5995        "$gcc_cv_gld_minor_version" -ge 21 -o \
5996        "$gcc_cv_gld_major_version" -gt 2 \
5997        && test $in_tree_ld_is_elf = yes; then
5998       gcc_cv_ld_sol2_emulation=yes
5999     fi
6000   elif test x$gcc_cv_ld != x; then
6001     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6002        grep _sol2 > /dev/null; then
6003       gcc_cv_ld_sol2_emulation=yes
6004     fi
6005   fi])
6006 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6007   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6008   [Define if your linker supports the *_sol2 emulations.])
6011 AC_CACHE_CHECK(linker --sysroot support,
6012   gcc_cv_ld_sysroot,
6013   [gcc_cv_ld_sysroot=no
6014   if test $in_tree_ld = yes ; then
6015       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
6016         gcc_cv_ld_sysroot=yes
6017       fi
6018   elif test x$gcc_cv_ld != x; then 
6019     if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6020       gcc_cv_ld_sysroot=yes
6021     fi
6022   fi])
6023 if test x"$gcc_cv_ld_sysroot" = xyes; then
6024   AC_DEFINE(HAVE_LD_SYSROOT, 1,
6025   [Define if your linker supports --sysroot.])
6026 fi        
6028 case $target in
6029 *-*-solaris2*)
6030   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6031   AC_CACHE_CHECK([system-provided CRTs on Solaris],
6032     gcc_cv_solaris_crts,
6033     [gcc_cv_solaris_crts=no
6034      if test x$host != x$target; then
6035        if test "x$with_sysroot" = xyes; then
6036          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6037        else
6038          target_sysroot="${with_sysroot}"
6039        fi
6040      fi
6041      target_libdir="$target_sysroot/usr/lib"
6042      # At the time they were added, gcrt1.o became a symlink for backwards
6043      # compatibility on x86, while crt1.o was added on sparc, so check for that.
6044      case $target in
6045        i?86-*-solaris2* | x86_64-*-solaris2*)
6046          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6047          ;;
6048        sparc*-*-solaris2*)
6049          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6050          ;;
6051      esac])
6052   ;;
6053 esac
6054 if test x$gcc_cv_solaris_crts = xyes; then
6055   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6056             [Define if the system-provided CRTs are present on Solaris.])
6059 AC_ARG_ENABLE(libssp,
6060 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6061 [case "${enableval}" in
6062   yes|no)
6063     ;;
6064   *)
6065     AC_MSG_ERROR([unknown libssp setting $enableval])
6066     ;;
6067 esac], [])
6069 # Test for stack protector support in target C library.
6070 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6071   gcc_cv_libc_provides_ssp,
6072   [gcc_cv_libc_provides_ssp=no
6073   if test "x$enable_libssp" = "xno"; then
6074     gcc_cv_libc_provides_ssp=yes
6075   elif test "x$enable_libssp" = "xyes"; then
6076     gcc_cv_libc_provides_ssp=no
6077   else
6078     case "$target" in
6079        *-*-musl*)
6080          # All versions of musl provide stack protector
6081          gcc_cv_libc_provides_ssp=yes;;
6082        *-*-linux* | *-*-kfreebsd*-gnu)
6083       # glibc 2.4 and later provides __stack_chk_fail and
6084       # either __stack_chk_guard, or TLS access to stack guard canary.
6085       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6086       [if test -f $target_header_dir/features.h \
6087          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
6088             $target_header_dir/features.h > /dev/null; then
6089         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
6090              $target_header_dir/features.h > /dev/null && \
6091              test -f $target_header_dir/bits/uClibc_config.h && \
6092              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
6093              $target_header_dir/bits/uClibc_config.h > /dev/null; then
6094           gcc_cv_libc_provides_ssp=yes
6095         fi
6096       # all versions of Bionic support stack protector
6097       elif test -f $target_header_dir/sys/cdefs.h \
6098         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
6099            $target_header_dir/sys/cdefs.h > /dev/null; then
6100          gcc_cv_libc_provides_ssp=yes
6101       fi]])
6102         ;;
6103        *-*-gnu*)
6104          # Avoid complicated tests (see
6105          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6106          # simply assert that glibc does provide this, which is true for all
6107          # realistically usable GNU/Hurd configurations.
6108          # All supported versions of musl provide it as well
6109          gcc_cv_libc_provides_ssp=yes;;
6110        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6111          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6112            [echo "no __stack_chk_fail on this target"])
6113         ;;
6114        *) gcc_cv_libc_provides_ssp=no ;;
6115     esac
6116   fi])
6118 if test x$gcc_cv_libc_provides_ssp = xyes; then
6119   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6120             [Define if your target C library provides stack protector support])
6123 # Check whether --enable-default-ssp was given.
6124 AC_ARG_ENABLE(default-ssp,
6125 [AS_HELP_STRING([--enable-default-ssp],
6126   [enable Stack Smashing Protection as default])],[
6127 if test x$gcc_cv_libc_provides_ssp = xyes; then
6128   case "$target" in
6129     ia64*-*-*) enable_default_ssp=no ;;
6130     *) enable_default_ssp=$enableval ;;
6131   esac
6132 else
6133   enable_default_ssp=no
6134 fi],
6135 enable_default_ssp=no)
6136 if test x$enable_default_ssp = xyes ; then
6137   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6138       [Define if your target supports default stack protector and it is enabled.])
6140 AC_SUBST([enable_default_ssp])
6142 # Test for <sys/sdt.h> on the target.
6143 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
6144 AC_MSG_CHECKING(sys/sdt.h in the target C library)
6145 have_sys_sdt_h=no
6146 if test -f $target_header_dir/sys/sdt.h; then
6147   have_sys_sdt_h=yes
6148   AC_DEFINE(HAVE_SYS_SDT_H, 1,
6149             [Define if your target C library provides sys/sdt.h])
6151 AC_MSG_RESULT($have_sys_sdt_h)
6153 # Check if TFmode long double should be used by default or not.
6154 # Some glibc targets used DFmode long double, but with glibc 2.4
6155 # and later they can use TFmode.
6156 case "$target" in
6157   powerpc*-*-linux* | \
6158   sparc*-*-linux* | \
6159   s390*-*-linux* | \
6160   alpha*-*-linux*)
6161     AC_ARG_WITH(long-double-128,
6162       [AS_HELP_STRING([--with-long-double-128],
6163                       [use 128-bit long double by default])],
6164       gcc_cv_target_ldbl128="$with_long_double_128",
6165       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
6166       [gcc_cv_target_ldbl128=no
6167       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6168         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
6169       && gcc_cv_target_ldbl128=yes
6170       ]])])
6171     ;;
6172 esac
6173 if test x$gcc_cv_target_ldbl128 = xyes; then
6174   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
6175             [Define if TFmode long double should be the default])
6178 # Check if TFmode long double target should use the IBM extended double or IEEE
6179 # 128-bit floating point formats if long doubles are 128-bits long.  The long
6180 # double type can only be switched on powerpc64 bit Linux systems where VSX is
6181 # supported.  Other PowerPC systems do not build the IEEE 128-bit emulator in
6182 # libgcc.
6183 AC_ARG_WITH([long-double-format],
6184   [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
6185                   [Specify whether PowerPC long double uses IEEE or IBM format])],[
6186 case "$target:$with_long_double_format" in
6187   powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
6188     :
6189     ;;
6190   powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
6191     # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
6192     case "$with_cpu" in
6193       power7 | power8 | power9 | power1*)
6194         :
6195         ;;
6196       *)
6197         AC_MSG_ERROR([Configuration option --with-long-double-format is only \
6198 supported if the default cpu is power7 or newer])
6199         with_long_double_format=""
6200         ;;
6201       esac
6202       ;;
6203   xpowerpc64*-*-linux*:*)
6204     AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
6205     with_long_double_format=""
6206     ;;
6207   *)
6208     AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
6209 on 64-bit PowerPC VSX Linux systems])
6210     with_long_double_format=""
6211     ;;
6212 esac],
6213   [])
6215 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
6216 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
6217 gcc_cv_libc_provides_hwcap_in_tcb=no
6218 case "$target" in
6219   powerpc*-*-linux*)
6220     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
6221     ;;
6222 esac
6223 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
6224   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
6225             [Define if your target C Library provides the AT_HWCAP value in the TCB])
6228 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
6229 gcc_cv_target_dl_iterate_phdr=unknown
6230 case "$target" in
6231   *-*-solaris2*)
6232     # <link.h> needs both a dl_iterate_phdr declaration and support for
6233     # compilation with largefile support.
6234     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
6235       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
6236       gcc_cv_target_dl_iterate_phdr=yes
6237     else
6238       gcc_cv_target_dl_iterate_phdr=no
6239     fi
6240     ;;
6241   *-*-dragonfly* | *-*-freebsd*)
6242     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
6243       gcc_cv_target_dl_iterate_phdr=yes
6244     else
6245       gcc_cv_target_dl_iterate_phdr=no
6246     fi
6247     ;;
6248   *-linux-musl*)
6249     gcc_cv_target_dl_iterate_phdr=yes
6250     ;;
6251 esac
6252 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
6253 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
6254    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
6255 [Define if your target C library provides the `dl_iterate_phdr' function.])
6257 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
6259 # We no longer support different GC mechanisms.  Emit an error if
6260 # the user configures with --with-gc.
6261 AC_ARG_WITH(gc,
6262 [AS_HELP_STRING([--with-gc={page,zone}],
6263                 [this option is not supported anymore.  It used to choose
6264                  the garbage collection mechanism to use with the compiler])],
6265 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
6268 # Libraries to use on the host.  This will normally be set by the top
6269 # level Makefile.  Here we simply capture the value for our Makefile.
6270 if test -z "${HOST_LIBS+set}"; then
6271   HOST_LIBS=
6273 AC_SUBST(HOST_LIBS)
6275 # Use the system's zlib library.
6276 AM_ZLIB
6278 dnl Very limited version of automake's enable-maintainer-mode
6280 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
6281   dnl maintainer-mode is disabled by default
6282   AC_ARG_ENABLE(maintainer-mode,
6283 [AS_HELP_STRING([--enable-maintainer-mode],
6284                 [enable make rules and dependencies not useful
6285                  (and sometimes confusing) to the casual installer])],
6286       maintainer_mode=$enableval,
6287       maintainer_mode=no)
6289 AC_MSG_RESULT($maintainer_mode)
6291 if test "$maintainer_mode" = "yes"; then
6292   MAINT=''
6293 else
6294   MAINT='#'
6296 AC_SUBST(MAINT)dnl
6298 dnl Whether to prevent multiple front-ends from linking at the same time
6300 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
6301   AC_ARG_ENABLE(link-mutex,
6302 [AS_HELP_STRING([--enable-link-mutex],
6303                 [avoid linking multiple front-ends at once to avoid thrashing
6304                  on the build machine])],
6305       do_link_mutex=$enableval,
6306       do_link_mutex=no)
6307 AC_MSG_RESULT($do_link_mutex)
6309 if test "$do_link_mutex" = "yes"; then
6310    DO_LINK_MUTEX=true
6311 else
6312    DO_LINK_MUTEX=false
6314 AC_SUBST(DO_LINK_MUTEX)
6316 # --------------
6317 # Language hooks
6318 # --------------
6320 # Make empty files to contain the specs and options for each language.
6321 # Then add #include lines to for a compiler that has specs and/or options.
6323 subdirs=
6324 lang_opt_files=
6325 lang_specs_files=
6326 lang_tree_files=
6327 # These (without "all_") are set in each config-lang.in.
6328 # `language' must be a single word so is spelled singularly.
6329 all_languages=
6330 all_compilers=
6331 all_outputs='Makefile'
6332 # List of language makefile fragments.
6333 all_lang_makefrags=
6334 # Additional files for gengtype
6335 all_gtfiles="$target_gtfiles"
6337 # These are the languages that are set in --enable-languages,
6338 # and are available in the GCC tree.
6339 all_selected_languages=
6341 # Add the language fragments.
6342 # Languages are added via two mechanisms.  Some information must be
6343 # recorded in makefile variables, these are defined in config-lang.in.
6344 # We accumulate them and plug them into the main Makefile.
6345 # The other mechanism is a set of hooks for each of the main targets
6346 # like `clean', `install', etc.
6348 language_hooks="Make-hooks"
6350 for lang in ${srcdir}/*/config-lang.in
6352 changequote(,)dnl
6353         test "$lang" = "${srcdir}/*/config-lang.in" && continue
6355         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
6356         if test "x$lang_alias" = x
6357         then
6358               echo "$lang doesn't set \$language." 1>&2
6359               exit 1
6360         fi
6361         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
6362         subdirs="$subdirs $subdir"
6364         # $gcc_subdir is where the gcc integration files are to be found
6365         # for a language, both for internal compiler purposes (compiler
6366         # sources implementing front-end to GCC tree converters), and for
6367         # build infrastructure purposes (Make-lang.in, etc.)
6368         #
6369         # This will be <subdir> (relative to $srcdir) if a line like 
6370         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
6371         # is found in <langdir>/config-lang.in, and will remain <langdir>
6372         # otherwise.
6373         #
6374         # Except for the language alias (fetched above), the regular
6375         # "config-lang.in" contents are always retrieved from $gcc_subdir,
6376         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
6377         # only this and the language alias.
6379         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
6380         if [ "$gcc_subdir" = "" ]; then
6381            gcc_subdir="$subdir"
6382         fi
6384         case ",$enable_languages," in
6385         *,$lang_alias,*)
6386             all_selected_languages="$all_selected_languages $lang_alias"
6387             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
6388                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
6389             fi
6390             ;;
6391         esac
6392 changequote([,])dnl
6394         language=
6395         boot_language=
6396         compilers=
6397         outputs=
6398         gtfiles=
6399         subdir_requires=
6400         . ${srcdir}/$gcc_subdir/config-lang.in
6401         if test "x$language" = x
6402         then
6403                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
6404                 exit 1
6405         fi
6407         ok=:
6408         case ",$enable_languages," in
6409                 *,$lang_alias,*) ;;
6410                 *)
6411                         for i in $subdir_requires; do
6412                                 test -f "${srcdir}/$i/config-lang.in" && continue
6413                                 ok=false
6414                                 break
6415                         done
6416                 ;;
6417         esac
6418         $ok || continue
6420         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
6421         if test -f $srcdir/$gcc_subdir/lang.opt; then
6422             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
6423             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
6424         fi
6425         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
6426             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
6427         fi
6428         all_languages="$all_languages $language"
6429         all_compilers="$all_compilers $compilers"
6430         all_outputs="$all_outputs $outputs"
6431         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
6432         case ",$enable_languages," in
6433                 *,lto,*)
6434                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
6435                     enable_lto=yes
6436                     AC_SUBST(enable_lto)
6437                     ;;
6438                 *) ;;
6439         esac
6440 done
6442 check_languages=
6443 for language in $all_selected_languages
6445         check_languages="$check_languages check-$language"
6446 done
6448 selftest_languages=
6449 for language in $all_selected_languages
6451         selftest_languages="$selftest_languages selftest-$language"
6452 done
6454 # We link each language in with a set of hooks, reached indirectly via
6455 # lang.${target}.  Only do so for selected languages.
6457 rm -f Make-hooks
6458 touch Make-hooks
6459 target_list="all.cross start.encap rest.encap tags \
6460         install-common install-man install-info install-pdf install-html dvi \
6461         pdf html uninstall info man srcextra srcman srcinfo \
6462         mostlyclean clean distclean maintainer-clean install-plugin"
6464 for t in $target_list
6466         x=
6467         for lang in $all_selected_languages
6468         do
6469                 x="$x $lang.$t"
6470         done
6471         echo "lang.$t: $x" >> Make-hooks
6472 done
6474 # --------
6475 # Option include files
6476 # --------
6478 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
6479 option_includes="option-includes.mk"
6480 AC_SUBST_FILE(option_includes)
6482 # --------
6483 # UNSORTED
6484 # --------
6486 # Create .gdbinit.
6488 echo "dir ." > .gdbinit
6489 echo "dir ${srcdir}" >> .gdbinit
6490 if test x$gdb_needs_out_file_path = xyes
6491 then
6492         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
6494 if test "x$subdirs" != x; then
6495         for s in $subdirs
6496         do
6497                 echo "dir ${srcdir}/$s" >> .gdbinit
6498         done
6500 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
6501 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
6503 # Put a breakpoint on __asan_report_error to help with debugging buffer
6504 # overflow.
6505 case "$CFLAGS" in
6506 *-fsanitize=address*)
6507   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
6508   ;;
6509 esac
6511 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
6512 AC_SUBST(gcc_tooldir)
6513 AC_SUBST(dollar)
6515 # Find a directory in which to install a shared libgcc.
6517 AC_ARG_ENABLE(version-specific-runtime-libs,
6518 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
6519                 [specify that runtime libraries should be
6520                  installed in a compiler-specific directory])])
6522 # Substitute configuration variables
6523 AC_SUBST(subdirs)
6524 AC_SUBST(srcdir)
6525 AC_SUBST(all_compilers)
6526 AC_SUBST(all_gtfiles)
6527 AC_SUBST(all_lang_makefrags)
6528 AC_SUBST(all_languages)
6529 AC_SUBST(all_selected_languages)
6530 AC_SUBST(build_exeext)
6531 AC_SUBST(build_install_headers_dir)
6532 AC_SUBST(build_xm_file_list)
6533 AC_SUBST(build_xm_include_list)
6534 AC_SUBST(build_xm_defines)
6535 AC_SUBST(build_file_translate)
6536 AC_SUBST(check_languages)
6537 AC_SUBST(selftest_languages)
6538 AC_SUBST(cpp_install_dir)
6539 AC_SUBST(xmake_file)
6540 AC_SUBST(tmake_file)
6541 AC_SUBST(TM_ENDIAN_CONFIG)
6542 AC_SUBST(TM_MULTILIB_CONFIG)
6543 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
6544 AC_SUBST(extra_gcc_objs)
6545 AC_SUBST(user_headers_inc_next_pre)
6546 AC_SUBST(user_headers_inc_next_post)
6547 AC_SUBST(extra_headers_list)
6548 AC_SUBST(extra_objs)
6549 AC_SUBST(extra_programs)
6550 AC_SUBST(float_h_file)
6551 AC_SUBST(gcc_config_arguments)
6552 AC_SUBST(gcc_gxx_include_dir)
6553 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
6554 AC_SUBST(host_exeext)
6555 AC_SUBST(host_xm_file_list)
6556 AC_SUBST(host_xm_include_list)
6557 AC_SUBST(host_xm_defines)
6558 AC_SUBST(out_host_hook_obj)
6559 AC_SUBST(install)
6560 AC_SUBST(lang_opt_files)
6561 AC_SUBST(lang_specs_files)
6562 AC_SUBST(lang_tree_files)
6563 AC_SUBST(local_prefix)
6564 AC_SUBST(md_file)
6565 AC_SUBST(objc_boehm_gc)
6566 AC_SUBST(out_file)
6567 AC_SUBST(out_object_file)
6568 AC_SUBST(common_out_file)
6569 AC_SUBST(common_out_object_file)
6570 AC_SUBST(tm_file_list)
6571 AC_SUBST(tm_include_list)
6572 AC_SUBST(tm_defines)
6573 AC_SUBST(tm_p_file_list)
6574 AC_SUBST(tm_p_include_list)
6575 AC_SUBST(tm_d_file_list)
6576 AC_SUBST(tm_d_include_list)
6577 AC_SUBST(xm_file_list)
6578 AC_SUBST(xm_include_list)
6579 AC_SUBST(xm_defines)
6580 AC_SUBST(use_gcc_stdint)
6581 AC_SUBST(c_target_objs)
6582 AC_SUBST(cxx_target_objs)
6583 AC_SUBST(fortran_target_objs)
6584 AC_SUBST(d_target_objs)
6585 AC_SUBST(target_cpu_default)
6587 AC_SUBST_FILE(language_hooks)
6589 # Echo link setup.
6590 if test x${build} = x${host} ; then
6591   if test x${host} = x${target} ; then
6592     echo "Links are now set up to build a native compiler for ${target}." 1>&2
6593   else
6594     echo "Links are now set up to build a cross-compiler" 1>&2
6595     echo " from ${host} to ${target}." 1>&2
6596   fi
6597 else
6598   if test x${host} = x${target} ; then
6599     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
6600     echo " for ${target}." 1>&2
6601   else
6602     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
6603     echo " from ${host} to ${target}." 1>&2
6604   fi
6607 AC_ARG_VAR(GMPLIBS,[How to link GMP])
6608 AC_ARG_VAR(GMPINC,[How to find GMP include files])
6610 AC_ARG_VAR(ISLLIBS,[How to link isl])
6611 AC_ARG_VAR(ISLINC,[How to find isl include files])
6612 if test "x${ISLLIBS}" != "x" ; then 
6613    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
6616 GCC_ENABLE_PLUGINS
6617 AC_SUBST(pluginlibs)
6618 AC_SUBST(enable_plugin)
6619 if test x"$enable_plugin" = x"yes"; then
6620   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
6624 # Enable --enable-host-shared
6625 AC_ARG_ENABLE(host-shared,
6626 [AS_HELP_STRING([--enable-host-shared],
6627                 [build host code as shared libraries])],
6628 [PICFLAG=-fPIC], [PICFLAG=])
6629 AC_SUBST(enable_host_shared)
6630 AC_SUBST(PICFLAG)
6633 AC_ARG_ENABLE(libquadmath-support,
6634 [AS_HELP_STRING([--disable-libquadmath-support],
6635   [disable libquadmath support for Fortran])],
6636 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6637 ENABLE_LIBQUADMATH_SUPPORT=yes)
6638 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6639   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6640             [Define to 1 to enable libquadmath support])
6644 # Specify what hash style to use by default.
6645 AC_ARG_WITH([linker-hash-style],
6646 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6647                 [specify the linker hash style])],
6648 [case x"$withval" in
6649    xsysv)
6650      LINKER_HASH_STYLE=sysv
6651      ;;
6652    xgnu)
6653      LINKER_HASH_STYLE=gnu
6654      ;;
6655    xboth)
6656      LINKER_HASH_STYLE=both
6657      ;;
6658    *)
6659      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6660      ;;
6661  esac],
6662 [LINKER_HASH_STYLE=''])
6663 if test x"${LINKER_HASH_STYLE}" != x; then
6664   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6665                                          [The linker hash style])
6668 # Specify what should be the default of -fdiagnostics-color option.
6669 AC_ARG_WITH([diagnostics-color],
6670 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6671                 [specify the default of -fdiagnostics-color option
6672                  auto-if-env stands for -fdiagnostics-color=auto if
6673                  GCC_COLOR environment variable is present and
6674                  -fdiagnostics-color=never otherwise])],
6675 [case x"$withval" in
6676    xnever)
6677      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6678      ;;
6679    xauto)
6680      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6681      ;;
6682    xauto-if-env)
6683      DIAGNOSTICS_COLOR_DEFAULT=-1
6684      ;;
6685    xalways)
6686      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6687      ;;
6688    *)
6689      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6690      ;;
6691  esac],
6692 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6693 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6694                    [The default for -fdiagnostics-color option])
6696 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6697 # of jit/jit-playback.c.
6698 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
6699 echo "gcc_driver_version: ${gcc_driver_version}"
6700 cat > gcc-driver-name.h <<EOF
6701 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
6704 # Check whether --enable-default-pie was given.
6705 AC_ARG_ENABLE(default-pie,
6706 [AS_HELP_STRING([--enable-default-pie],
6707   [enable Position Independent Executable as default])],
6708 enable_default_pie=$enableval,
6709 enable_default_pie=no)
6710 if test x$enable_default_pie = xyes ; then
6711   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6712       [Define if your target supports default PIE and it is enabled.])
6714 AC_SUBST([enable_default_pie])
6716 # Check if -fno-PIE works.
6717 AC_CACHE_CHECK([for -fno-PIE option],
6718   [gcc_cv_c_no_fpie],
6719   [saved_CXXFLAGS="$CXXFLAGS"
6720    CXXFLAGS="$CXXFLAGS -fno-PIE"
6721    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6722      [gcc_cv_c_no_fpie=yes],
6723      [gcc_cv_c_no_fpie=no])
6724    CXXFLAGS="$saved_CXXFLAGS"])
6725 if test "$gcc_cv_c_no_fpie" = "yes"; then
6726   NO_PIE_CFLAGS="-fno-PIE"
6728 AC_SUBST([NO_PIE_CFLAGS])
6730 # Check if -no-pie works.
6731 AC_CACHE_CHECK([for -no-pie option],
6732   [gcc_cv_no_pie],
6733   [saved_LDFLAGS="$LDFLAGS"
6734    LDFLAGS="$LDFLAGS -no-pie"
6735    AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6736      [gcc_cv_no_pie=yes],
6737      [gcc_cv_no_pie=no])
6738    LDFLAGS="$saved_LDFLAGS"])
6739 if test "$gcc_cv_no_pie" = "yes"; then
6740   NO_PIE_FLAG="-no-pie"
6742 AC_SUBST([NO_PIE_FLAG])
6744 # Check linker supports '-z bndplt'
6745 ld_bndplt_support=no
6746 AC_MSG_CHECKING(linker -z bndplt option)
6747 if test x"$ld_is_gold" = xno; then
6748   if test $in_tree_ld = yes ; then
6749     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
6750       ld_bndplt_support=yes
6751     fi
6752   elif test x$gcc_cv_ld != x; then
6753     # Check if linker supports -a bndplt option
6754     if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
6755       ld_bndplt_support=yes
6756     fi
6757   fi
6759 if test x"$ld_bndplt_support" = xyes; then
6760   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6761         [Define if your linker supports -z bndplt])
6763 AC_MSG_RESULT($ld_bndplt_support)
6765 # Check linker supports '--push-state'/'--pop-state'
6766 ld_pushpopstate_support=no
6767 AC_MSG_CHECKING(linker --push-state/--pop-state options)
6768 if test x"$ld_is_gold" = xno; then
6769   if test $in_tree_ld = yes ; then
6770     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
6771       ld_pushpopstate_support=yes
6772     fi
6773   elif test x$gcc_cv_ld != x; then
6774     # Check if linker supports --push-state/--pop-state options
6775     if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
6776       ld_pushpopstate_support=yes
6777     fi
6778   fi
6780 if test x"$ld_pushpopstate_support" = xyes; then
6781   AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
6782         [Define if your linker supports --push-state/--pop-state])
6784 AC_MSG_RESULT($ld_pushpopstate_support)
6786 # Configure the subdirectories
6787 # AC_CONFIG_SUBDIRS($subdirs)
6789 # Create the Makefile
6790 # and configure language subdirectories
6791 AC_CONFIG_FILES($all_outputs)
6793 AC_CONFIG_COMMANDS([default],
6795 case ${CONFIG_HEADERS} in
6796   *auto-host.h:config.in*)
6797   echo > cstamp-h ;;
6798 esac
6799 # Make sure all the subdirs exist.
6800 for d in $subdirs doc build common c-family
6802     test -d $d || mkdir $d
6803 done
6804 ], 
6805 [subdirs='$subdirs'])
6806 AC_OUTPUT