typeck.c (cp_truthvalue_conversion): Add tsubst_flags_t parameter and use it in calls...
[official-gcc.git] / gcc / configure.ac
blobb9cc2435cdfffcffe7362150a73a443f41079197
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       gcn*-*)
1041         omp_device_property=omp-device-properties-gcn
1042         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
1043         ;;
1044       nvptx*-*)
1045         omp_device_property=omp-device-properties-nvptx
1046         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1047         ;;
1048     esac
1049     omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1050     omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1051   fi
1053   if test x"$offload_targets" = x; then
1054     offload_targets=$tgt
1055   else
1056     offload_targets="$offload_targets,$tgt"
1057   fi
1058 done
1059 AC_SUBST(omp_device_properties)
1060 AC_SUBST(omp_device_property_deps)
1062 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1063   [Define to offload targets, separated by commas.])
1064 if test x"$enable_offloading" != x; then
1065   AC_DEFINE(ENABLE_OFFLOADING, 1,
1066     [Define this to enable support for offloading.])
1067 else
1068   AC_DEFINE(ENABLE_OFFLOADING, 0,
1069     [Define this to enable support for offloading.])
1072 if test x"$enable_hsa" = x1 ; then
1073   AC_DEFINE(ENABLE_HSA, 1,
1074     [Define this to enable support for generating HSAIL.])
1077 AC_ARG_WITH(multilib-list,
1078 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
1080 with_multilib_list=default)
1082 # -------------------------
1083 # Checks for other programs
1084 # -------------------------
1086 AC_PROG_MAKE_SET
1088 # Find some useful tools
1089 AC_PROG_AWK
1090 # We need awk to create options.c and options.h.
1091 # Bail out if it's missing.
1092 case ${AWK} in
1093   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1094 esac
1096 gcc_AC_PROG_LN_S
1097 ACX_PROG_LN($LN_S)
1098 AC_PROG_RANLIB
1099 ranlib_flags=""
1100 AC_SUBST(ranlib_flags)
1101      
1102 gcc_AC_PROG_INSTALL
1104 # See if cmp has --ignore-initial.
1105 gcc_AC_PROG_CMP_IGNORE_INITIAL
1107 # See if we have the mktemp command.
1108 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1110 # See if makeinfo has been installed and is modern enough
1111 # that we can use it.
1112 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1113   [GNU texinfo.* \([0-9][0-9.]*\)],
1114   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1115 if test $gcc_cv_prog_makeinfo_modern = no; then
1116   AC_MSG_WARN([
1117 *** Makeinfo is missing or too old.
1118 *** Info documentation will not be built.])
1119   BUILD_INFO=
1120 else
1121   BUILD_INFO=info
1123 AC_SUBST(BUILD_INFO)
1125 # Is pod2man recent enough to regenerate manpages?
1126 AC_MSG_CHECKING([for recent Pod::Man])
1127 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1128   AC_MSG_RESULT(yes)
1129   GENERATED_MANPAGES=generated-manpages
1130 else
1131   AC_MSG_RESULT(no)
1132   GENERATED_MANPAGES=
1134 AC_SUBST(GENERATED_MANPAGES)
1136 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1138 # How about lex?
1139 dnl Don't use AC_PROG_LEX; we insist on flex.
1140 dnl LEXLIB is not useful in gcc.
1141 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1143 # Bison?
1144 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1146 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1147 # check for build == host before using them.
1149 # NM
1150 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1151   && test -d ../binutils ; then
1152   NM='${objdir}/../binutils/nm-new'
1153 else
1154   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1157 # AR
1158 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1159   && test -d ../binutils ; then
1160   AR='${objdir}/../binutils/ar'
1161 else
1162   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1165 # The jit documentation looks better if built with sphinx, but can be
1166 # built with texinfo if sphinx is not available.
1167 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1168 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1170 # --------------------
1171 # Checks for C headers
1172 # --------------------
1174 # Need to reject headers which give warnings, so that the -Werror bootstrap
1175 # works later. *sigh*  This needs to come before all header checks.
1176 AC_PROG_CPP_WERROR
1178 AC_HEADER_STDC
1179 AC_HEADER_TIME
1180 ACX_HEADER_STRING
1181 AC_HEADER_SYS_WAIT
1182 AC_HEADER_TIOCGWINSZ
1183 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1184                  fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1185                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1186                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1188 # Check for thread headers.
1189 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1190 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1192 # These tests can't be done till we know if we have limits.h.
1193 gcc_AC_C_CHAR_BIT
1194 AC_C_BIGENDIAN
1196 # ----------------------
1197 # Checks for C++ headers
1198 # ----------------------
1200 dnl Autoconf will give an error in the configure script if there is no
1201 dnl C++ preprocessor.  Hack to prevent that.
1202 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1203 AC_PROG_CXXCPP
1204 m4_popdef([AC_MSG_ERROR])[]dnl
1206 AC_CHECK_HEADERS(unordered_map)
1207 AC_CHECK_HEADERS(tr1/unordered_map)
1208 AC_CHECK_HEADERS(ext/hash_map)
1210 # --------
1211 # Dependency checking.
1212 # --------
1214 ZW_CREATE_DEPDIR
1215 AC_CONFIG_COMMANDS([gccdepdir],[
1216   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1217   for lang in $subdirs c-family common
1218   do
1219       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1220   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1222 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1224 # --------
1225 # UNSORTED
1226 # --------
1229 # These libraries may be used by collect2.
1230 # We may need a special search path to get them linked.
1231 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1232 [save_LIBS="$LIBS"
1233 for libs in '' -lld -lmld \
1234                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1235                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1237         LIBS="$libs"
1238         AC_TRY_LINK_FUNC(ldopen,
1239                 [gcc_cv_collect2_libs="$libs"; break])
1240 done
1241 LIBS="$save_LIBS"
1242 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1243 case $gcc_cv_collect2_libs in
1244         "none required")        ;;
1245         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1246 esac
1247 AC_SUBST(COLLECT2_LIBS)
1249 # When building Ada code on Alpha, we need exc_resume which is usually in
1250 # -lexc.  So test for it.
1251 save_LIBS="$LIBS"
1252 LIBS=
1253 AC_SEARCH_LIBS(exc_resume, exc)
1254 GNAT_LIBEXC="$LIBS"
1255 LIBS="$save_LIBS"
1256 AC_SUBST(GNAT_LIBEXC)
1258 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1259 save_LIBS="$LIBS"
1260 LIBS=
1261 AC_SEARCH_LIBS(kstat_open, kstat)
1262 EXTRA_GCC_LIBS="$LIBS"
1263 LIBS="$save_LIBS"
1264 AC_SUBST(EXTRA_GCC_LIBS)
1266 # Some systems put ldexp and frexp in libm instead of libc; assume
1267 # they're both in the same place.  jcf-dump needs them.
1268 save_LIBS="$LIBS"
1269 LIBS=
1270 AC_SEARCH_LIBS(ldexp, m)
1271 LDEXP_LIB="$LIBS"
1272 LIBS="$save_LIBS"
1273 AC_SUBST(LDEXP_LIB)
1275 # Some systems need dlopen
1276 save_LIBS="$LIBS"
1277 LIBS=
1278 AC_SEARCH_LIBS(dlopen, dl)
1279 DL_LIB="$LIBS"
1280 LIBS="$save_LIBS"
1281 AC_SUBST(DL_LIB)
1283 # Use <inttypes.h> only if it exists,
1284 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1285 # PRId64
1286 AC_MSG_CHECKING(for inttypes.h)
1287 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1288 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1289 [[#define __STDC_FORMAT_MACROS
1290 #include <sys/types.h>
1291 #include <inttypes.h>]],
1292   [[intmax_t i = -1;
1293 #ifndef PRId64
1294 choke me
1295 #endif]])],
1296   [gcc_cv_header_inttypes_h=yes],
1297   [gcc_cv_header_inttypes_h=no])])
1298 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1299 if test $gcc_cv_header_inttypes_h = yes; then
1300   AC_DEFINE(HAVE_INTTYPES_H, 1,
1301         [Define if you have a working <inttypes.h> header file.])
1304 # Look for the ZSTD package.
1305 ZSTD_INCLUDE=
1306 ZSTD_LIB=
1307 AC_SUBST(ZSTD_INCLUDE)
1308 AC_SUBST(ZSTD_LIB)
1309 ZSTD_CPPFLAGS=
1310 ZSTD_LDFLAGS=
1311 AC_ARG_WITH(zstd,
1312         [AS_HELP_STRING([--with-zstd=PATH],
1313                 [specify prefix directory for installed zstd library.
1314                  Equivalent to --with-zstd-include=PATH/include
1315                  plus --with-zstd-lib=PATH/lib])])
1316 AC_ARG_WITH(zstd-include,
1317         [AS_HELP_STRING([--with-zstd-include=PATH],
1318                 [specify directory for installed zstd include files])])
1319 AC_ARG_WITH(zstd-lib,
1320         [AS_HELP_STRING([--with-zstd-lib=PATH],
1321                 [specify directory for the installed zstd library])])
1322 case "x$with_zstd" in
1323   x) ;;
1324   xno)
1325     ZSTD_INCLUDE=no
1326     ZSTD_LIB=no
1327     ;;
1328   *) ZSTD_INCLUDE=$with_zstd/include
1329      ZSTD_LIB=$with_zstd/lib
1330      ;;
1331 esac
1332 if test "x$with_zstd_include" != x; then
1333   ZSTD_INCLUDE=$with_zstd_include
1335 if test "x$with_zstd_lib" != x; then
1336   ZSTD_LIB=$with_zstd_lib
1338 if test "x$ZSTD_INCLUDE" != x \
1339    && test "x$ZSTD_INCLUDE" != xno; then
1340   ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1342 if test "x$ZSTD_LIB" != x \
1343    && test "x$ZSTD_LIB" != xno; then
1344   ZSTD_LDFLAGS=-L$ZSTD_LIB
1347 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1348 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1350 AC_MSG_CHECKING(for zstd.h)
1351 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1352 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1353 [[#include <zstd.h>]])],
1354   [gcc_cv_header_zstd_h=yes],
1355   [gcc_cv_header_zstd_h=no])])
1356 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1357 if test $gcc_cv_header_zstd_h = yes; then
1358   AC_DEFINE(HAVE_ZSTD_H, 1,
1359         [Define if you have a working <zstd.h> header file.])
1362 # LTO can use zstd compression algorithm
1363 save_LIBS="$LIBS"
1364 LIBS=
1365 AC_SEARCH_LIBS(ZSTD_compress, zstd)
1366 ZSTD_LIB="$LIBS"
1367 LIBS="$save_LIBS"
1368 AC_SUBST(ZSTD_LIB)
1370 dnl Disabled until we have a complete test for buggy enum bitfields.
1371 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1373 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1374   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1375   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1376   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1377   putchar_unlocked putc_unlocked)
1378 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1379         popen sysconf strsignal getrusage nl_langinfo \
1380         gettimeofday mbstowcs wcswidth mmap setlocale \
1381         gcc_UNLOCKED_FUNCS madvise mallinfo)
1383 if test x$ac_cv_func_mbstowcs = xyes; then
1384   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1385 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1386 int main()
1388   mbstowcs(0, "", 0);
1389   return 0;
1390 }]])],
1391     [gcc_cv_func_mbstowcs_works=yes],
1392     [gcc_cv_func_mbstowcs_works=no],
1393     [gcc_cv_func_mbstowcs_works=yes])])
1394   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1395     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1396   [Define this macro if mbstowcs does not crash when its
1397    first argument is NULL.])
1398   fi
1401 AC_CHECK_TYPE(ssize_t, int)
1402 AC_CHECK_TYPE(caddr_t, char *)
1404 GCC_AC_FUNC_MMAP_BLACKLIST
1406 case "${host}" in
1407 *-*-*vms*)
1408   # Under VMS, vfork works very differently than on Unix. The standard test 
1409   # won't work, and it isn't easily adaptable. It makes more sense to
1410   # just force it.
1411   ac_cv_func_vfork_works=yes
1412   ;;
1413 esac
1414 AC_FUNC_FORK
1416 AM_ICONV
1418 # Until we have in-tree GNU iconv:
1419 LIBICONV_DEP=
1420 if test -f "$LTLIBICONV"; then
1421   LIBICONV_DEP=$LTLIBICONV
1423 AC_SUBST(LIBICONV_DEP)
1425 AM_LC_MESSAGES
1427 AM_LANGINFO_CODESET
1429 # We will need to find libiberty.h and ansidecl.h
1430 saved_CFLAGS="$CFLAGS"
1431 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1432 saved_CXXFLAGS="$CXXFLAGS"
1433 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1435 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1436 # normal autoconf function for these.  But force definition of
1437 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1438 # basename handling in libiberty.h.
1439 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1440 #undef HAVE_DECL_BASENAME
1441 #define HAVE_DECL_BASENAME 1
1442 #include "ansidecl.h"
1443 #include "system.h"])
1445 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1446         madvise stpcpy strnlen strsignal strverscmp \
1447         strtol strtoul strtoll strtoull setenv unsetenv \
1448         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1449         free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1450 #include "ansidecl.h"
1451 #include "system.h"])
1453 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1454 #include "ansidecl.h"
1455 #include "system.h"
1456 #ifdef HAVE_SYS_RESOURCE_H
1457 #include <sys/resource.h>
1458 #endif
1461 gcc_AC_CHECK_DECLS(mallinfo, , ,[
1462 #include "ansidecl.h"
1463 #include "system.h"
1464 #ifdef HAVE_MALLOC_H
1465 #include <malloc.h>
1466 #endif
1469 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1470 #include "ansidecl.h"
1471 #include "system.h"
1472 #ifdef HAVE_SYS_RESOURCE_H
1473 #include <sys/resource.h>
1474 #endif
1475 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1476 [Define to `long' if <sys/resource.h> doesn't define.])])
1478 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1479 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1480 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1481 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1482 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1483 #include "ansidecl.h"
1484 #include "system.h"
1485 #ifdef HAVE_LDFCN_H
1486 #undef FREAD
1487 #undef FWRITE
1488 #include <ldfcn.h>
1489 #endif
1492 gcc_AC_CHECK_DECLS(times, , ,[
1493 #include "ansidecl.h"
1494 #include "system.h"
1495 #ifdef HAVE_SYS_TIMES_H
1496 #include <sys/times.h>
1497 #endif
1500 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1501 #include "ansidecl.h"
1502 #include "system.h"
1503 #include <signal.h>
1506 # More time-related stuff.
1507 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1508 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1509 #include "ansidecl.h"
1510 #include "system.h"
1511 #ifdef HAVE_SYS_TIMES_H
1512 #include <sys/times.h>
1513 #endif
1514 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1515 if test $ac_cv_struct_tms = yes; then
1516   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1517   [Define if <sys/times.h> defines struct tms.])
1520 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1521 # revisit after autoconf 2.50.
1522 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1523 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1524 #include "ansidecl.h"
1525 #include "system.h"
1526 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1527 if test $gcc_cv_type_clock_t = yes; then
1528   AC_DEFINE(HAVE_CLOCK_T, 1,
1529   [Define if <time.h> defines clock_t.])
1532 # Check if F_SETLKW is supported by fcntl.
1533 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1534 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1535 #include <fcntl.h>]], [[
1536 struct flock fl;
1537 fl.l_whence = 0;
1538 fl.l_start = 0;
1539 fl.l_len = 0;
1540 fl.l_pid = 0;
1541 return fcntl (1, F_SETLKW, &fl);]])],
1542 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1543 if test $ac_cv_f_setlkw = yes; then
1544   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1545   [Define if F_SETLKW supported by fcntl.])
1548 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1549 CFLAGS="$saved_CFLAGS"
1550 CXXFLAGS="$saved_CXXFLAGS"
1552 # mkdir takes a single argument on some systems. 
1553 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1555 # File extensions
1556 manext='.1'
1557 objext='.o'
1558 AC_SUBST(manext)
1559 AC_SUBST(objext)
1561 # With Setjmp/Longjmp based exception handling.
1562 AC_ARG_ENABLE(sjlj-exceptions,
1563 [AS_HELP_STRING([--enable-sjlj-exceptions],
1564                 [arrange to use setjmp/longjmp exception handling])],
1565 [case $target in
1566   *-*-hpux10*)
1567     if test $enableval != yes; then
1568       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1569       enableval=yes
1570     fi
1571     ;;
1572 esac
1573 force_sjlj_exceptions=yes],
1574 [case $target in
1575   *-*-hpux10*)
1576     force_sjlj_exceptions=yes
1577     enableval=yes
1578     ;;
1579   lm32*-*-*)
1580      force_sjlj_exceptions=yes
1581      enableval=yes
1582      ;;
1583   *)
1584     force_sjlj_exceptions=no
1585     ;;
1586 esac])
1587 if test $force_sjlj_exceptions = yes; then
1588   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1589   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1590     [Define 0/1 to force the choice for exception handling model.])
1593 # --------------------------------------------------------
1594 # Build, host, and target specific configuration fragments
1595 # --------------------------------------------------------
1597 # Collect build-machine-specific information.
1598 . ${srcdir}/config.build || exit 1
1600 # Collect host-machine-specific information.
1601 . ${srcdir}/config.host || exit 1
1603 target_gtfiles=
1605 # Collect target-machine-specific information.
1606 . ${srcdir}/config.gcc || exit 1
1608 extra_objs="${host_extra_objs} ${extra_objs}"
1609 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1611 # Default the target-machine variables that were not explicitly set.
1612 if test x"$tm_file" = x
1613 then tm_file=$cpu_type/$cpu_type.h; fi
1615 if test x"$extra_headers" = x
1616 then extra_headers=; fi
1618 if test x$md_file = x
1619 then md_file=$cpu_type/$cpu_type.md; fi
1621 if test x$out_file = x
1622 then out_file=$cpu_type/$cpu_type.c; fi
1624 if test x"$tmake_file" = x
1625 then tmake_file=$cpu_type/t-$cpu_type
1628 # Support --enable-initfini-array.
1629 if test x$enable_initfini_array != xno; then
1630   tm_file="${tm_file} initfini-array.h"
1633 if test x"$dwarf2" = xyes
1634 then tm_file="$tm_file tm-dwarf2.h"
1637 # Say what files are being used for the output code and MD file.
1638 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1639 echo "Using \`$srcdir/config/$md_file' as machine description file."
1641 # If any of the xm_file variables contain nonexistent files, warn
1642 # about them and drop them.
1645 for x in $build_xm_file; do
1646   if    test -f $srcdir/config/$x
1647   then      bx="$bx $x"
1648   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1649   fi
1650 done
1651 build_xm_file="$bx"
1654 for x in $host_xm_file; do
1655   if    test -f $srcdir/config/$x
1656   then      hx="$hx $x"
1657   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1658   fi
1659 done
1660 host_xm_file="$hx"
1663 for x in $xm_file; do
1664   if    test -f $srcdir/config/$x
1665   then      tx="$tx $x"
1666   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1667   fi
1668 done
1669 xm_file="$tx"
1671 count=a
1672 for f in $tm_file; do
1673         count=${count}x
1674 done
1675 if test $count = ax; then
1676         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1677 else
1678         echo "Using the following target machine macro files:"
1679         for f in $tm_file; do
1680                 echo "  $srcdir/config/$f"
1681         done
1684 if test x$use_long_long_for_widest_fast_int = xyes; then
1685         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1686 [Define to 1 if the 'long long' type is wider than 'long' but still
1687 efficiently supported by the host hardware.])
1690 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1691 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1693 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1694 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1696 count=a
1697 for f in $host_xm_file; do
1698         count=${count}x
1699 done
1700 if test $count = a; then
1701         :
1702 elif test $count = ax; then
1703         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1704 else
1705         echo "Using the following host machine macro files:"
1706         for f in $host_xm_file; do
1707                 echo "  $srcdir/config/$f"
1708         done
1710 echo "Using ${out_host_hook_obj} for host machine hooks."
1712 if test "$host_xm_file" != "$build_xm_file"; then
1713         count=a
1714         for f in $build_xm_file; do
1715                 count=${count}x
1716         done
1717         if test $count = a; then
1718                 :
1719         elif test $count = ax; then
1720                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1721         else
1722                 echo "Using the following build machine macro files:"
1723                 for f in $build_xm_file; do
1724                         echo "  $srcdir/config/$f"
1725                 done
1726         fi
1729 if test -n "$configured_native_system_header_dir"; then
1730   native_system_header_dir=$configured_native_system_header_dir
1732 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1733 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1735 case ${host} in
1736   powerpc*-*-darwin*)
1737     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1738       gcc_cv_mcontext_underscores,
1739       AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1740 #include <sys/cdefs.h>
1741 #include <sys/signal.h>
1742 #include <ucontext.h>
1743 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1744 ])],
1745         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1746       if test $gcc_cv_mcontext_underscores = yes; then
1747         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1748           [mcontext_t fields start with __])
1749       fi
1750     ;;
1751 esac
1753 # ---------
1754 # Threading
1755 # ---------
1757 # Check if a valid thread package
1758 case ${enable_threads} in
1759   "" | no)
1760     # No threads
1761     target_thread_file='single'
1762     ;;
1763   yes)
1764     # default
1765     target_thread_file='single'
1766     ;;
1767   aix | dce | lynx | mipssde | posix | rtems | \
1768   single | tpf | vxworks | win32)
1769     target_thread_file=${enable_threads}
1770     ;;
1771   *)
1772     echo "${enable_threads} is an unknown thread package" 1>&2
1773     exit 1
1774     ;;
1775 esac
1777 if test x${thread_file} = x; then
1778   # No thread file set by target-specific clauses in config.gcc,
1779   # so use file chosen by default logic above
1780   thread_file=${target_thread_file}
1783 # --------
1784 # UNSORTED
1785 # --------
1787 use_cxa_atexit=no
1788 if test x$enable___cxa_atexit = xyes || \
1789    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1790   if test x$host = x$target; then
1791     case $host in
1792       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1793       # keyed to flag_use_cxa_atexit
1794       *-*-mingw32*)
1795         use_cxa_atexit=yes
1796         ;;
1797       powerpc-ibm-aix*)
1798         use_cxa_atexit=yes
1799         ;;
1800       *)
1801         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1802           [echo "__cxa_atexit can't be enabled on this target"])
1803         ;;
1804     esac
1805   else
1806     # We can't check for __cxa_atexit when building a cross, so assume
1807     # it is available 
1808     use_cxa_atexit=yes
1809   fi
1810   if test x$use_cxa_atexit = xyes; then
1811     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1812       [Define if you want to use __cxa_atexit, rather than atexit, to
1813       register C++ destructors for local statics and global objects.
1814       This is essential for fully standards-compliant handling of
1815       destructors, but requires __cxa_atexit in libc.])
1816   fi
1819 # Look for a file containing extra machine modes.
1820 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1821   extra_modes_file='$(srcdir)'/config/${extra_modes}
1822   AC_SUBST(extra_modes_file)
1823   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1824   [Define to the name of a file containing a list of extra machine modes
1825    for this architecture.])
1828 # Convert extra_options into a form suitable for Makefile use.
1829 extra_opt_files=
1830 all_opt_files=
1831 for f in $extra_options; do
1832   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1833   all_opt_files="$all_opt_files $srcdir/config/$f"
1834 done
1835 AC_SUBST(extra_opt_files)
1837 # auto-host.h is the file containing items generated by autoconf and is
1838 # the first file included by config.h.
1839 # If host=build, it is correct to have bconfig include auto-host.h
1840 # as well.  If host!=build, we are in error and need to do more 
1841 # work to find out the build config parameters.
1842 if test x$host = x$build
1843 then
1844         build_auto=auto-host.h
1845         HAVE_AUTO_BUILD='# '
1846 else
1847         # We create a subdir, then run autoconf in the subdir.
1848         # To prevent recursion we set host and build for the new
1849         # invocation of configure to the build for this invocation
1850         # of configure. 
1851         tempdir=build.$$
1852         rm -rf $tempdir
1853         mkdir $tempdir
1854         cd $tempdir
1855         case ${srcdir} in
1856         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1857         *) realsrcdir=../${srcdir};;
1858         esac
1859         # Clearing GMPINC is necessary to prevent host headers being
1860         # used by the build compiler.  Defining GENERATOR_FILE stops
1861         # system.h from including gmp.h.
1862         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1863         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1864         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1865         GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1866         ${realsrcdir}/configure \
1867                 --enable-languages=${enable_languages-all} \
1868                 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
1869                 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
1870                 --target=$target_alias --host=$build_alias \
1871                 --build=$build_alias || exit # retaining $tempdir
1873         # We just finished tests for the build machine, so rename
1874         # the file auto-build.h in the gcc directory.
1875         mv auto-host.h ../auto-build.h
1876         cd ..
1877         rm -rf $tempdir
1878         build_auto=auto-build.h
1879         HAVE_AUTO_BUILD=
1881 AC_SUBST(build_subdir)
1882 AC_SUBST(HAVE_AUTO_BUILD)
1884 tm_file="${tm_file} defaults.h"
1885 tm_p_file="${tm_p_file} tm-preds.h"
1886 tm_d_file="${tm_d_file} defaults.h"
1887 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1888 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1889 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1890 # put this back in temporarily.
1891 xm_file="auto-host.h ansidecl.h ${xm_file}"
1893 # --------
1894 # UNSORTED
1895 # --------
1897 changequote(,)dnl
1898 # Compile in configure arguments.
1899 if test -f configargs.h ; then
1900         # Being re-configured.
1901         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1902         gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
1903         if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
1904                 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1905         fi
1906 else
1907         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1910 # Double all backslashes and backslash all quotes to turn
1911 # gcc_config_arguments into a C string.
1912 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1913 $gcc_config_arguments
1915 gcc_config_arguments_str=`cat conftest.out`
1916 rm -f conftest.out
1918 cat > configargs.h <<EOF
1919 /* Generated automatically. */
1920 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1921 static const char thread_model[] = "$thread_file";
1923 static const struct {
1924   const char *name, *value;
1925 } configure_default_options[] = $configure_default_options;
1927 changequote([,])dnl
1929 changequote(,)dnl
1930 gcc_BASEVER=`cat $srcdir/BASE-VER`
1931 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1932 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1933 if test -f $srcdir/REVISION ; then
1934         gcc_REVISION=`cat $srcdir/REVISION`
1935 else
1936         gcc_REVISION=""
1938 cat > plugin-version.h <<EOF
1939 #include "configargs.h"
1941 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1942 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1943 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1944 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1946 static char basever[] = "$gcc_BASEVER";
1947 static char datestamp[] = "$gcc_DATESTAMP";
1948 static char devphase[] = "$gcc_DEVPHASE";
1949 static char revision[] = "$gcc_REVISION";
1951 /* FIXME plugins: We should make the version information more precise.
1952    One way to do is to add a checksum. */
1954 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1955                                                 devphase, revision,
1956                                                 configuration_arguments};
1958 changequote([,])dnl
1960 # Determine what GCC version number to use in filesystem paths.
1961 GCC_BASE_VER
1963 # Internationalization
1964 ZW_GNU_GETTEXT_SISTER_DIR
1966 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1967 # -liconv on the link line twice.
1968 case "$LIBINTL" in *$LIBICONV*)
1969         LIBICONV= ;;
1970 esac
1972 AC_ARG_ENABLE(secureplt,
1973 [AS_HELP_STRING([--enable-secureplt],
1974                 [enable -msecure-plt by default for PowerPC])],
1975 [], [])
1977 AC_ARG_ENABLE(mingw-wildcard,
1978 [AS_HELP_STRING([--enable-mingw-wildcard],
1979                 [Set whether to expand wildcard on command-line.
1980                  Default to platform configuration])],
1981 [],[enable_mingw_wildcard=platform])
1982 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
1983       [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
1984                  $(test x"$enable_mingw_wildcard" = xno; echo $?),
1985                  [Value to set mingw's _dowildcard to.])])
1987 AC_ARG_ENABLE(large-address-aware,
1988 [AS_HELP_STRING([--enable-large-address-aware],
1989                 [Link mingw executables with --large-address-aware])])
1990 AS_IF([test x"$enable_large_address_aware" = xyes],
1991   [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
1992     [Define if we should link mingw executables with --large-address-aware])])
1994 AC_ARG_ENABLE(leading-mingw64-underscores,
1995   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1996                  [enable leading underscores on 64 bit mingw targets]),
1997   [],[])
1998 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1999   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
2000     [Define if we should use leading underscore on 64 bit mingw targets])])
2002 AC_ARG_ENABLE(cld,
2003 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2004 [enable_cld=no])
2006 AC_ARG_ENABLE(frame-pointer,
2007 [AS_HELP_STRING([--enable-frame-pointer],
2008                 [enable -fno-omit-frame-pointer by default for x86])], [],
2010 case $target_os in
2011 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2012   # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2013   enable_frame_pointer=no
2014   ;;
2016   enable_frame_pointer=yes
2017   ;;
2018 esac
2021 case $target in
2022 i[[34567]]86-*-* | x86_64-*-*)
2023         if test "x$enable_cld" = xyes; then
2024                 tm_defines="${tm_defines} USE_IX86_CLD=1"
2025         fi
2026         if test "x$enable_frame_pointer" = xyes; then
2027                 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2028         fi
2029         ;;
2030 esac
2032 # Windows32 Registry support for specifying GCC installation paths.
2033 AC_ARG_ENABLE(win32-registry,
2034 [AS_HELP_STRING([--disable-win32-registry],
2035                 [disable lookup of installation paths in the
2036                  Registry on Windows hosts])
2037 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2038 AS_HELP_STRING([--enable-win32-registry=KEY],
2039                [use KEY instead of GCC version as the last portion
2040                 of the registry key])],,)
2042 case $host_os in
2043   win32 | pe | cygwin* | mingw32*)
2044     if test "x$enable_win32_registry" != xno; then
2045       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2046     fi
2048     if test "x$enable_win32_registry" != xno; then
2049       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2050   [Define to 1 if installation paths should be looked up in the Windows
2051    Registry. Ignored on non-Windows hosts.])
2053       if test "x$enable_win32_registry" != xyes \
2054          && test "x$enable_win32_registry" != x; then
2055         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2056   [Define to be the last component of the Windows registry key under which
2057    to look for installation paths.  The full key used will be 
2058    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2059    The default is the GCC version number.])
2060       fi
2061     fi
2062   ;;
2063 esac
2065 # Get an absolute path to the GCC top-level source directory
2066 holddir=`${PWDCMD-pwd}`
2067 cd $srcdir
2068 topdir=`${PWDCMD-pwd}`
2069 cd $holddir
2071 # Conditionalize the makefile for this host machine.
2072 xmake_file=
2073 for f in ${host_xmake_file}
2075         if test -f ${srcdir}/config/$f
2076         then
2077                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2078         fi
2079 done
2081 # Conditionalize the makefile for this target machine.
2082 tmake_file_=
2083 for f in ${tmake_file}
2085         if test -f ${srcdir}/config/$f
2086         then
2087                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2088         fi
2089 done
2090 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2092 out_object_file=`basename $out_file .c`.o
2093 common_out_object_file=`basename $common_out_file .c`.o
2095 tm_file_list="options.h"
2096 tm_include_list="options.h insn-constants.h"
2097 for f in $tm_file; do
2098   case $f in
2099     ./* )
2100        f=`echo $f | sed 's/^..//'`
2101        tm_file_list="${tm_file_list} $f"
2102        tm_include_list="${tm_include_list} $f"
2103        ;;
2104     defaults.h )
2105        tm_file_list="${tm_file_list} \$(srcdir)/$f"
2106        tm_include_list="${tm_include_list} $f"
2107        ;;
2108     * )
2109        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2110        tm_include_list="${tm_include_list} config/$f"
2111        ;;
2112   esac
2113 done
2115 tm_p_file_list=
2116 tm_p_include_list=
2117 for f in $tm_p_file; do
2118   case $f in
2119     tm-preds.h )
2120        tm_p_file_list="${tm_p_file_list} $f"
2121        tm_p_include_list="${tm_p_include_list} $f"
2122        ;;
2123     * )
2124        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2125        tm_p_include_list="${tm_p_include_list} config/$f"
2126   esac
2127 done
2129 tm_d_file_list=
2130 tm_d_include_list="options.h insn-constants.h"
2131 for f in $tm_d_file; do
2132   case $f in
2133     defaults.h )
2134        tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
2135        tm_d_include_list="${tm_d_include_list} $f"
2136        ;;
2137     * )
2138        tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2139        tm_d_include_list="${tm_d_include_list} config/$f"
2140        ;;
2141   esac
2142 done
2144 xm_file_list=
2145 xm_include_list=
2146 for f in $xm_file; do
2147   case $f in
2148     ansidecl.h )
2149        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2150        xm_include_list="${xm_include_list} $f"
2151        ;;
2152     auto-host.h )
2153        xm_file_list="${xm_file_list} $f"
2154        xm_include_list="${xm_include_list} $f"
2155        ;;
2156     * )
2157        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2158        xm_include_list="${xm_include_list} config/$f"
2159        ;;
2160   esac
2161 done
2163 host_xm_file_list=
2164 host_xm_include_list=
2165 for f in $host_xm_file; do
2166   case $f in
2167     ansidecl.h )
2168        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2169        host_xm_include_list="${host_xm_include_list} $f"
2170        ;;
2171     auto-host.h )
2172        host_xm_file_list="${host_xm_file_list} $f"
2173        host_xm_include_list="${host_xm_include_list} $f"
2174        ;;
2175     * )
2176        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2177        host_xm_include_list="${host_xm_include_list} config/$f"
2178        ;;
2179   esac
2180 done
2182 build_xm_file_list=
2183 for f in $build_xm_file; do
2184   case $f in
2185     ansidecl.h )
2186        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2187        build_xm_include_list="${build_xm_include_list} $f"
2188        ;;
2189     auto-build.h | auto-host.h )
2190        build_xm_file_list="${build_xm_file_list} $f"
2191        build_xm_include_list="${build_xm_include_list} $f"
2192        ;;
2193     * )
2194        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2195        build_xm_include_list="${build_xm_include_list} config/$f"
2196        ;;
2197   esac
2198 done
2200 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2201 # cross-compiler which does not use the native headers and libraries.
2202 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2203 CROSS=                                          AC_SUBST(CROSS)
2204 ALL=all.internal                                AC_SUBST(ALL)
2205 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2206 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR      AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2208 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2209    test x$build != x$host || test "x$with_build_sysroot" != x; then
2210   if test "x$with_build_sysroot" != x; then
2211     BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2212   else
2213     BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2214   fi
2216   if test x$host != x$target
2217   then
2218     CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2219     ALL=all.cross
2220     SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2221   elif test "x$TARGET_SYSTEM_ROOT" != x; then
2222     SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2223   fi
2225   if test "x$with_build_sysroot" != "x"; then
2226     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2227   elif test "x$with_sysroot" = x; then
2228     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2229   elif test "x$with_sysroot" = xyes; then
2230     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2231   else
2232     target_header_dir="${with_sysroot}${native_system_header_dir}"
2233   fi
2234 else
2235   target_header_dir=${native_system_header_dir}
2238 # If this is a cross-compiler that does not
2239 # have its own set of headers then define
2240 # inhibit_libc
2242 # If this is using newlib, without having the headers available now,
2243 # then define inhibit_libc in LIBGCC2_CFLAGS.
2244 # This prevents libgcc2 from containing any code which requires libc
2245 # support.
2246 : ${inhibit_libc=false}
2247 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2248        test x$with_newlib = xyes ; } &&
2249      { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2250        inhibit_libc=true
2252 AC_SUBST(inhibit_libc)
2254 # When building gcc with a cross-compiler, we need to adjust things so
2255 # that the generator programs are still built with the native compiler.
2256 # Also, we cannot run fixincludes.
2258 # These are the normal (build=host) settings:
2259 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2260 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2261 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2262 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2263 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2264 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2266 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
2267 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
2269 # And these apply if build != host, or we are generating coverage data
2270 if test x$build != x$host || test "x$coverage_flags" != x
2271 then
2272     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2273     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2274     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2276     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
2277     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
2278     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
2279     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
2281 AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
2282 AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
2284 # Expand extra_headers to include complete path.
2285 # This substitutes for lots of t-* files.
2286 extra_headers_list=
2287 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2288 for file in ${extra_headers} ; do
2289   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2290 done
2292 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2293 if test x"$use_gcc_tgmath" = xyes
2294 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2297 # Define collect2 in Makefile.
2298 case $host_can_use_collect2 in
2299   no) collect2= ;;
2300   *) collect2='collect2$(exeext)' ;;
2301 esac
2302 AC_SUBST([collect2])
2304 # Add a definition of USE_COLLECT2 if system wants one.
2305 case $use_collect2 in
2306   no) use_collect2= ;;
2307   "") ;;
2308   *) 
2309     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2310     xm_defines="${xm_defines} USE_COLLECT2"
2311     case $host_can_use_collect2 in
2312       no)
2313         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2314         ;;
2315     esac
2316     ;;
2317 esac
2319 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2320 [Define to the name of the LTO plugin DSO that must be
2321   passed to the linker's -plugin=LIB option.])
2323 # ---------------------------
2324 # Assembler & linker features
2325 # ---------------------------
2327 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2328 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2329 # However when ld-new is first executed from the build tree, libtool will
2330 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2331 # to the build tree.  While doing this we need to use the previous-stage
2332 # linker, or we have an infinite loop.  The presence of a shell script as
2333 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2334 # the gcc/collect-ld script.  So we need to know how libtool works, or
2335 # exec-tool will fail.
2337 m4_defun([_LT_CONFIG_COMMANDS], [])
2338 AC_PROG_LIBTOOL
2339 AC_SUBST(objdir)
2340 AC_SUBST(enable_fast_install)
2342 # Identify the assembler which will work hand-in-glove with the newly
2343 # built GCC, so that we can examine its features.  This is the assembler
2344 # which will be driven by the driver program.
2346 # If build != host, and we aren't building gas in-tree, we identify a
2347 # build->target assembler and hope that it will have the same features
2348 # as the host->target assembler we'll be using.
2349 gcc_cv_gas_major_version=
2350 gcc_cv_gas_minor_version=
2351 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2353 m4_pattern_allow([AS_FOR_TARGET])dnl
2354 AS_VAR_SET_IF(gcc_cv_as,, [
2355 if test -x "$DEFAULT_ASSEMBLER"; then
2356         gcc_cv_as="$DEFAULT_ASSEMBLER"
2357 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2358      && test -f ../gas/Makefile \
2359      && test x$build = x$host; then
2360         gcc_cv_as=../gas/as-new$build_exeext
2361 elif test -x as$build_exeext; then
2362         # Build using assembler in the current directory.
2363         gcc_cv_as=./as$build_exeext
2364 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2365         gcc_cv_as="$AS_FOR_TARGET"
2366 else
2367         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2368 fi])
2370 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2371 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2372 case "$ORIGINAL_AS_FOR_TARGET" in
2373   ./as | ./as$build_exeext) ;;
2374   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2375 esac 
2377 AC_MSG_CHECKING(what assembler to use)
2378 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2379   # Single tree build which includes gas.  We want to prefer it
2380   # over whatever linker top-level may have detected, since
2381   # we'll use what we're building after installation anyway.
2382   AC_MSG_RESULT(newly built gas)
2383   in_tree_gas=yes
2384   _gcc_COMPUTE_GAS_VERSION
2385   in_tree_gas_is_elf=no
2386   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2387      || (grep 'obj_format = multi' ../gas/Makefile \
2388          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2389   then
2390     in_tree_gas_is_elf=yes
2391   fi
2392 else
2393   AC_MSG_RESULT($gcc_cv_as)
2394   in_tree_gas=no
2397 default_ld=
2398 AC_ARG_ENABLE(ld,
2399 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2400 [case "${enableval}" in
2401  no)
2402    default_ld=ld.gold
2403    ;;
2404  esac])
2406 install_gold_as_default=no
2407 AC_ARG_ENABLE(gold,
2408 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2409 [case "${enableval}" in
2410  default)
2411    install_gold_as_default=yes
2412    ;;
2413  yes)
2414    if test x${default_ld} != x; then
2415      install_gold_as_default=yes
2416    fi
2417    ;;
2418  no)
2419    ;;
2420  *)
2421    AC_MSG_ERROR([invalid --enable-gold argument])
2422    ;;
2423  esac])
2425 # Identify the linker which will work hand-in-glove with the newly
2426 # built GCC, so that we can examine its features.  This is the linker
2427 # which will be driven by the driver program.
2429 # If build != host, and we aren't building gas in-tree, we identify a
2430 # build->target linker and hope that it will have the same features
2431 # as the host->target linker we'll be using.
2432 gcc_cv_gld_major_version=
2433 gcc_cv_gld_minor_version=
2434 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2435 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2436 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2438 AS_VAR_SET_IF(gcc_cv_ld,, [
2439 if test -x "$DEFAULT_LINKER"; then
2440         gcc_cv_ld="$DEFAULT_LINKER"
2441 elif test $install_gold_as_default = yes \
2442      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2443      && test -f ../gold/Makefile \
2444      && test x$build = x$host; then
2445         gcc_cv_ld=../gold/ld-new$build_exeext
2446 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2447      && test -f ../ld/Makefile \
2448      && test x$build = x$host; then
2449         gcc_cv_ld=../ld/ld-new$build_exeext
2450 elif test -x collect-ld$build_exeext; then
2451         # Build using linker in the current directory.
2452         gcc_cv_ld=./collect-ld$build_exeext
2453 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2454         gcc_cv_ld="$LD_FOR_TARGET"
2455 else
2456         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2457 fi])
2459 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2460 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2461 # if the PLUGIN_LD is set ld-new, just have it as ld
2462 # as that is the installed named.
2463 if test x$PLUGIN_LD_SUFFIX = xld-new \
2464    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2465   PLUGIN_LD_SUFFIX=ld
2467 AC_ARG_WITH(plugin-ld,
2468 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2469 [if test x"$withval" != x; then
2470    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2471    PLUGIN_LD_SUFFIX="$withval"
2472  fi])
2473 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2474 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2476 # Check to see if we are using gold instead of ld
2477 AC_MSG_CHECKING(whether we are using gold)
2478 ld_is_gold=no
2479 if test x$gcc_cv_ld != x; then
2480   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2481      | grep "GNU gold" > /dev/null; then
2482     ld_is_gold=yes
2483   fi
2485 AC_MSG_RESULT($ld_is_gold)
2487 AC_MSG_CHECKING(gold linker with split stack support as non default)
2488 # Check to see if default ld is not gold, but gold is
2489 # available and has support for split stack.  If gcc was configured
2490 # with gold then no checking is done.
2492 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2494 # For platforms other than powerpc64*, enable as appropriate.
2496   gold_non_default=no
2497   ld_gold=`which ${gcc_cv_ld}.gold`
2498 # Make sure this gold has minimal split stack support
2499   if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2500     ld_vers=`$ld_gold --version | sed 1q`
2501     gold_vers=`echo $ld_vers | sed -n \
2502           -e 's,^[[^)]]*[[  ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2503     case $target in
2504 # check that the gold version contains the complete split stack support
2505 # on powerpc64 big and little endian
2506       powerpc64*-*-*)
2507         case "$gold_vers" in
2508           2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2509           ;;
2510           *) gold_non_default=no
2511           ;;
2512         esac
2513         ;;
2514     esac
2515   fi
2516   if test $gold_non_default = yes; then
2517     AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2518             [Define if the gold linker supports split stack and is available as a non-default])
2519   fi
2521 AC_MSG_RESULT($gold_non_default)
2523 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2524 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2525 case "$ORIGINAL_LD_FOR_TARGET" in
2526   ./collect-ld | ./collect-ld$build_exeext) ;;
2527   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2528 esac 
2530 AC_MSG_CHECKING(what linker to use)
2531 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2532    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2533         # Single tree build which includes ld.  We want to prefer it
2534         # over whatever linker top-level may have detected, since
2535         # we'll use what we're building after installation anyway.
2536         AC_MSG_RESULT(newly built ld)
2537         in_tree_ld=yes
2538         in_tree_ld_is_elf=no
2539         if (grep 'EMUL = .*elf' ../ld/Makefile \
2540             || grep 'EMUL = .*linux' ../ld/Makefile \
2541             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2542           in_tree_ld_is_elf=yes
2543         elif test "$ld_is_gold" = yes; then
2544           in_tree_ld_is_elf=yes
2545         fi
2546         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
2547         do
2548 changequote(,)dnl
2549                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2550                 if test x$gcc_cv_gld_version != x; then
2551                         break
2552                 fi
2553         done
2554         case $gcc_cv_gld_version in
2555           VERSION=[0-9]*) ;;
2556 changequote([,])dnl
2557           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2558 changequote(,)dnl
2559         esac
2560         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2561         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2562 changequote([,])dnl
2563         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2564         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2565 else
2566         AC_MSG_RESULT($gcc_cv_ld)
2567         in_tree_ld=no
2568         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2569         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2570         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2573 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2574 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2576 # Figure out what nm we will be using.
2577 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2578 AS_VAR_SET_IF(gcc_cv_nm,, [
2579 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2580      && test -f ../binutils/Makefile \
2581      && test x$build = x$host; then
2582         gcc_cv_nm=../binutils/nm-new$build_exeext
2583 elif test -x nm$build_exeext; then
2584         gcc_cv_nm=./nm$build_exeext
2585 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2586         gcc_cv_nm="$NM_FOR_TARGET"
2587 else
2588         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2589 fi])
2591 AC_MSG_CHECKING(what nm to use)
2592 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2593         # Single tree build which includes binutils.
2594         AC_MSG_RESULT(newly built nm)
2595         in_tree_nm=yes
2596 else
2597         AC_MSG_RESULT($gcc_cv_nm)
2598         in_tree_nm=no
2601 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2602 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2603 case "$ORIGINAL_NM_FOR_TARGET" in
2604   ./nm | ./nm$build_exeext) ;;
2605   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2606 esac
2609 # Figure out what objdump we will be using.
2610 AS_VAR_SET_IF(gcc_cv_objdump,, [
2611 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2612      && test -f ../binutils/Makefile \
2613      && test x$build = x$host; then
2614         # Single tree build which includes binutils.
2615         gcc_cv_objdump=../binutils/objdump$build_exeext
2616 elif test -x objdump$build_exeext; then
2617         gcc_cv_objdump=./objdump$build_exeext
2618 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2619         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2620 else
2621         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2622 fi])
2624 AC_MSG_CHECKING(what objdump to use)
2625 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2626         # Single tree build which includes binutils.
2627         AC_MSG_RESULT(newly built objdump)
2628 elif test x$gcc_cv_objdump = x; then
2629         AC_MSG_RESULT(not found)
2630 else
2631         AC_MSG_RESULT($gcc_cv_objdump)
2634 # Figure out what readelf we will be using.
2635 AS_VAR_SET_IF(gcc_cv_readelf,, [
2636 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2637      && test -f ../binutils/Makefile \
2638      && test x$build = x$host; then
2639         # Single tree build which includes binutils.
2640         gcc_cv_readelf=../binutils/readelf$build_exeext
2641 elif test -x readelf$build_exeext; then
2642         gcc_cv_readelf=./readelf$build_exeext
2643 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2644         gcc_cv_readelf="$READELF_FOR_TARGET"
2645 else
2646         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2647 fi])
2649 AC_MSG_CHECKING(what readelf to use)
2650 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2651         # Single tree build which includes binutils.
2652         AC_MSG_RESULT(newly built readelf)
2653 elif test x$gcc_cv_readelf = x; then
2654         AC_MSG_RESULT(not found)
2655 else
2656         AC_MSG_RESULT($gcc_cv_readelf)
2659 # Figure out what otool we will be using.
2660 AS_VAR_SET_IF(gcc_cv_otool,, [
2661 if test -x otool$build_exeext; then
2662         gcc_cv_otool=./otool$build_exeext
2663 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2664         gcc_cv_otool="$OTOOL_FOR_TARGET"
2665 else
2666         AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2667 fi])
2669 AC_MSG_CHECKING(what otool to use)
2670 if test x$gcc_cv_otool = x; then
2671         AC_MSG_RESULT(not found)
2672 else
2673         AC_MSG_RESULT($gcc_cv_otool)
2676 # Figure out what assembler alignment features are present.
2677 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2678  [2,6,0],,
2679 [.balign 4
2680 .p2align 2],,
2681 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2682   [Define if your assembler supports .balign and .p2align.])])
2684 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2685  [2,8,0],,
2686  [.p2align 4,,7],,
2687 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2688   [Define if your assembler supports specifying the maximum number
2689    of bytes to skip when using the GAS .p2align command.])])
2691 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2692  [2,8,0],,
2693  [.literal16],,
2694 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2695   [Define if your assembler supports .literal16.])])
2697 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2698  [elf,2,9,0],,
2699  [conftest_label1: .word 0
2700 .subsection -1
2701 conftest_label2: .word 0
2702 .previous],
2703  [if test x$gcc_cv_nm != x; then
2704     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2705     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2706     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2707     then :
2708     else gcc_cv_as_subsection_m1=yes
2709     fi
2710     rm -f conftest.nm1 conftest.nm2
2711   fi],
2712  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2713   [Define if your assembler supports .subsection and .subsection -1 starts
2714    emitting at the beginning of your section.])])
2716 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2717  [2,2,0],,
2718  [      .weak foobar],,
2719 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2721 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2722  [2,17,0],,
2723  [      .weakref foobar, barfnot],,
2724 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2726 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2727  [2,15,91],,
2728  [      .SPACE $TEXT$
2729         .NSUBSPA $CODE$,COMDAT],,
2730 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2732 # .hidden needs to be supported in both the assembler and the linker,
2733 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2734 # This is irritatingly difficult to feature test for; we have to check the
2735 # date string after the version number.  If we've got an in-tree
2736 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2737 # to be safe.
2738 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2739 case "${target}" in
2740   *-*-aix*)
2741     conftest_s='        .globl foobar,hidden'
2742     ;;
2743   *)
2744     conftest_s='        .hidden foobar
2745 foobar:'
2746     ;;
2747 esac
2748 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2749  [elf,2,13,0],, [$conftest_s])
2750 case "${target}" in
2751   *-*-darwin*)
2752     # Darwin as has some visibility support, though with a different syntax.
2753     gcc_cv_as_hidden=yes
2754     ;;
2755 esac
2757 # gnu_indirect_function type is an extension proposed at
2758 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2759 # selection of function implementation
2760 AC_ARG_ENABLE(gnu-indirect-function,
2761  [AS_HELP_STRING([--enable-gnu-indirect-function],
2762                  [enable the use of the @gnu_indirect_function to glibc systems])],
2763  [case $enable_gnu_indirect_function in
2764     yes | no) ;;
2765     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2766 Valid choices are 'yes' and 'no'.]) ;;
2767   esac],
2768  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2770 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2771 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2772 [Define if your system supports gnu indirect functions.])
2775 changequote(,)dnl
2776 if test $in_tree_ld != yes ; then
2777   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2778   if echo "$ld_ver" | grep GNU > /dev/null; then
2779     if test x"$ld_is_gold" = xyes; then
2780       # GNU gold --version looks like this:
2781       #
2782       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2783       #
2784       # We extract the binutils version which is more familiar and specific
2785       # than the gold version.
2786       ld_vers=`echo $ld_ver | sed -n \
2787           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2788     else
2789       # GNU ld --version looks like this:
2790       #
2791       # GNU ld (GNU Binutils) 2.21.51.20110225
2792       ld_vers=`echo $ld_ver | sed -n \
2793           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2794     fi
2795     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'`
2796     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2797     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2798     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2799   else
2800     case "${target}" in
2801       *-*-solaris2*)
2802         # Solaris 2 ld -V output looks like this for a regular version:
2803         #
2804         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
2805         #
2806         # but test versions add stuff at the end:
2807         #
2808         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
2809         #
2810         # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
2811         # numbers can be used in ld.so.1 feature checks even if a different
2812         # linker is configured.
2813         ld_ver=`$gcc_cv_ld -V 2>&1`
2814         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2815           ld_vers=`echo $ld_ver | sed -n \
2816             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2817           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2818           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2819         fi
2820         ;;
2821     esac
2822   fi
2824 changequote([,])dnl
2826 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2827 [[if test $in_tree_ld = yes ; then
2828   gcc_cv_ld_hidden=no
2829   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 \
2830      && test $in_tree_ld_is_elf = yes; then
2831      gcc_cv_ld_hidden=yes
2832   fi
2833 else
2834   gcc_cv_ld_hidden=yes
2835   if test x"$ld_is_gold" = xyes; then
2836     :
2837   elif echo "$ld_ver" | grep GNU > /dev/null; then
2838     case "${target}" in
2839       mmix-knuth-mmixware)
2840         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2841         gcc_cv_ld_hidden=no
2842         ;;
2843     esac
2844     if test 0"$ld_date" -lt 20020404; then
2845       if test -n "$ld_date"; then
2846         # If there was date string, but was earlier than 2002-04-04, fail
2847         gcc_cv_ld_hidden=no
2848       elif test -z "$ld_vers"; then
2849         # If there was no date string nor ld version number, something is wrong
2850         gcc_cv_ld_hidden=no
2851       else
2852         test -z "$ld_vers_patch" && ld_vers_patch=0
2853         if test "$ld_vers_major" -lt 2; then
2854           gcc_cv_ld_hidden=no
2855         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2856           gcc_cv_ld_hidden="no"
2857         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2858           gcc_cv_ld_hidden=no
2859         fi
2860       fi
2861     fi
2862   else
2863     case "${target}" in
2864       *-*-aix[789]*)
2865         gcc_cv_ld_hidden=yes
2866         ;;
2867       *-*-darwin*)
2868         # Darwin ld has some visibility support.
2869         gcc_cv_ld_hidden=yes
2870         ;;
2871       hppa64*-*-hpux* | ia64*-*-hpux*)
2872         gcc_cv_ld_hidden=yes
2873         ;;
2874       *-*-solaris2*)
2875         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2876         # .symbolic was only added in Solaris 9 12/02.
2877         gcc_cv_ld_hidden=yes
2878         ;;
2879       *)
2880         gcc_cv_ld_hidden=no
2881         ;;
2882     esac
2883   fi
2884 fi]])
2885 libgcc_visibility=no
2886 AC_SUBST(libgcc_visibility)
2887 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2888 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2889   libgcc_visibility=yes
2890   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2891   [Define if your assembler and linker support .hidden.])
2894 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2895 gcc_cv_ld_ro_rw_mix=unknown
2896 if test $in_tree_ld = yes ; then
2897   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 \
2898      && test $in_tree_ld_is_elf = yes; then
2899     gcc_cv_ld_ro_rw_mix=read-write
2900   fi
2901 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2902   echo '.section myfoosect, "a"' > conftest1.s
2903   echo '.section myfoosect, "aw"' > conftest2.s
2904   echo '.byte 1' >> conftest2.s
2905   echo '.section myfoosect, "a"' > conftest3.s
2906   echo '.byte 0' >> conftest3.s
2907   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2908      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2909      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2910      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2911         conftest2.o conftest3.o > /dev/null 2>&1; then
2912     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2913                          | sed -e '/myfoosect/!d' -e N`
2914     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2915       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2916         gcc_cv_ld_ro_rw_mix=read-only
2917       else
2918         gcc_cv_ld_ro_rw_mix=read-write
2919       fi
2920     fi
2921   fi
2922 changequote(,)dnl
2923   rm -f conftest.* conftest[123].*
2924 changequote([,])dnl
2926 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2927         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2928   [Define if your linker links a mix of read-only
2929    and read-write sections into a read-write section.])
2931 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2933 gcc_AC_INITFINI_ARRAY
2935 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2936 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2937   [elf,2,11,0],,
2938 [       .data
2939         .uleb128 L2 - L1
2941         .uleb128 1280
2942         .sleb128 -1010
2943 L2:],
2944 [[# GAS versions before 2.11 do not support uleb128,
2945   # despite appearing to.
2946   # ??? There exists an elf-specific test that will crash
2947   # the assembler.  Perhaps it's better to figure out whether
2948   # arbitrary sections are supported and try the test.
2949   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2950   if echo "$as_ver" | grep GNU > /dev/null; then
2951     as_vers=`echo $as_ver | sed -n \
2952         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2953     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2954     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2955     if test $as_major -eq 2 && test $as_minor -lt 11
2956     then :
2957     else gcc_cv_as_leb128=yes
2958     fi
2959   fi]],
2960   [AC_DEFINE(HAVE_AS_LEB128, 1,
2961     [Define if your assembler supports .sleb128 and .uleb128.])],
2962   [AC_DEFINE(HAVE_AS_LEB128, 0,
2963     [Define if your assembler supports .sleb128 and .uleb128.])])
2965 # Determine if an .eh_frame section is read-only.
2966 gcc_fn_eh_frame_ro () {
2967   $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
2968     $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2969     sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
2972 # Check if we have assembler support for unwind directives.
2973 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2974   ,,
2975 [       .text
2976         .cfi_startproc
2977         .cfi_offset 0, 0
2978         .cfi_same_value 1
2979         .cfi_def_cfa 1, 2
2980         .cfi_escape 1, 2, 3, 4, 5
2981         .cfi_endproc],
2982 [case "$target" in
2983   *-*-solaris*)
2984     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2985     # read-only and read-write sections, we need to make sure that the
2986     # assembler used emits read-write .eh_frame sections.
2987     if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
2988       gcc_cv_as_cfi_directive=yes
2989     elif test "x$gcc_cv_objdump" = x; then
2990       # No objdump, err on the side of caution.
2991       gcc_cv_as_cfi_directive=no
2992     else
2993       if test x$gas = xyes; then
2994         as_32_opt="--32"
2995         as_64_opt="--64"
2996       else
2997         as_32_opt="-m32"
2998         as_64_opt="-m64"
2999       fi
3000       case "$target" in
3001         sparc*-*-solaris2.*)
3002           # On Solaris/SPARC, .eh_frame sections should always be read-write.
3003           if gcc_fn_eh_frame_ro $as_32_opt \
3004              || gcc_fn_eh_frame_ro $as_64_opt; then
3005             gcc_cv_as_cfi_directive=no
3006           else
3007             gcc_cv_as_cfi_directive=yes
3008           fi
3009           ;;
3010         i?86-*-solaris2.* | x86_64-*-solaris2.*)
3011           # On Solaris/x86, make sure that GCC and assembler agree on using
3012           # read-only .eh_frame sections for 64-bit.
3013           if gcc_fn_eh_frame_ro $as_32_opt; then
3014             gcc_cv_as_cfi_directive=no
3015           elif gcc_fn_eh_frame_ro $as_64_opt; then
3016             gcc_cv_as_cfi_directive=yes
3017           else
3018             gcc_cv_as_cfi_directive=no
3019           fi
3020           ;;
3021       esac
3022     fi
3023     ;;
3024   *-*-*)
3025     gcc_cv_as_cfi_directive=yes
3026     ;;
3027 esac])
3028 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3029 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
3030   ,,
3031 [       .text
3032         .cfi_startproc
3033         .cfi_adjust_cfa_offset 64
3034         .skip 75040, 0
3035         .cfi_adjust_cfa_offset 128
3036         .cfi_endproc],
3038 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3039     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
3040    gcc_cv_as_cfi_advance_working=yes
3043 else
3044   # no objdump, err on the side of caution
3045   gcc_cv_as_cfi_advance_working=no
3047 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3048 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3049   [`if test $gcc_cv_as_cfi_directive = yes \
3050        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3051   [Define 0/1 if your assembler supports CFI directives.])
3053 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3054 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3055   gcc_cv_as_cfi_personality_directive, ,,
3056 [       .text
3057         .cfi_startproc
3058         .cfi_personality 0, symbol
3059         .cfi_endproc])
3060 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3061   [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3062   [Define 0/1 if your assembler supports .cfi_personality.])
3064 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3065   gcc_cv_as_cfi_sections_directive, ,,
3066 [       .text
3067         .cfi_sections .debug_frame, .eh_frame
3068         .cfi_startproc
3069         .cfi_endproc],
3070 [case $target_os in
3071   win32 | pe | cygwin* | mingw32*)
3072     # Need to check that we generated the correct relocation for the
3073     # .debug_frame section.  This was fixed for binutils 2.21.
3074     gcc_cv_as_cfi_sections_directive=no
3075     if test "x$gcc_cv_objdump" != x; then
3076      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3077         grep secrel > /dev/null; then
3078       gcc_cv_as_cfi_sections_directive=yes
3079      fi
3080     fi
3081     ;;
3082   *)
3083     gcc_cv_as_cfi_sections_directive=yes
3084     ;;
3085 esac])
3086 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3087 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3088   [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3089   [Define 0/1 if your assembler supports .cfi_sections.])
3091 # GAS versions up to and including 2.11.0 may mis-optimize
3092 # .eh_frame data.
3093 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
3094   [elf,2,12,0],,
3095 [       .text
3096 .LFB1:
3097         .4byte  0
3098 .L1:
3099         .4byte  0
3100 .LFE1:
3101         .section        .eh_frame,"aw",@progbits
3102 __FRAME_BEGIN__:
3103         .4byte  .LECIE1-.LSCIE1
3104 .LSCIE1:
3105         .4byte  0x0
3106         .byte   0x1
3107         .ascii "z\0"
3108         .byte   0x1
3109         .byte   0x78
3110         .byte   0x1a
3111         .byte   0x0
3112         .byte   0x4
3113         .4byte  1
3114         .p2align 1
3115 .LECIE1:
3116 .LSFDE1:
3117         .4byte  .LEFDE1-.LASFDE1
3118 .LASFDE1:
3119         .4byte  .LASFDE1-__FRAME_BEGIN__
3120         .4byte  .LFB1
3121         .4byte  .LFE1-.LFB1
3122         .byte   0x4
3123         .4byte  .LFE1-.LFB1
3124         .byte   0x4
3125         .4byte  .L1-.LFB1
3126 .LEFDE1:],
3127 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3128 cat > conftest.lit <<EOF
3129  0000 10000000 00000000 017a0001 781a0004  .........z..x...
3130  0010 01000000 12000000 18000000 00000000  ................
3131  0020 08000000 04080000 0044               .........D      @&t@
3133 cat > conftest.big <<EOF
3134  0000 00000010 00000000 017a0001 781a0004  .........z..x...
3135  0010 00000001 00000012 00000018 00000000  ................
3136  0020 00000008 04000000 0844               .........D      @&t@
3138   # If the assembler didn't choke, and we can objdump,
3139   # and we got the correct data, then succeed.
3140   # The text in the here-document typically retains its unix-style line
3141   # endings, while the output of objdump will use host line endings.
3142   # Therefore, use diff -b for the comparisons.
3143   if test x$gcc_cv_objdump != x \
3144   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3145      | tail -3 > conftest.got \
3146   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3147     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3148   then
3149     gcc_cv_as_eh_frame=yes
3150   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3151     gcc_cv_as_eh_frame=buggy
3152   else
3153     # Uh oh, what do we do now?
3154     gcc_cv_as_eh_frame=no
3155   fi])
3157 if test $gcc_cv_as_eh_frame = buggy; then
3158   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3159   [Define if your assembler mis-optimizes .eh_frame data.])
3162 # Test if the assembler supports the section flag 'e' or #exclude for
3163 # specifying an excluded section.
3164 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3165  [2,22,51], [--fatal-warnings],
3166  [.section foo1,"e"
3167   .byte 0,0,0,0])
3168 if test $gcc_cv_as_section_exclude_e = no; then
3169   case "${target}" in
3170     # Solaris as uses #exclude instead.
3171     *-*-solaris2*)
3172       case "${target}" in
3173         sparc*-*-solaris2*)
3174           conftest_s='.section "foo1", #exclude'
3175           ;;
3176         i?86-*-solaris2* | x86_64-*-solaris2*)
3177           conftest_s='.section foo1, #exclude'
3178           ;;      
3179       esac
3180       ;;
3181     esac
3182   gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,,
3183     [$conftest_s
3184      .byte 0,0,0,0])
3186 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3187   [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3188 [Define if your assembler supports specifying the exclude section flag.])
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])
3193 if test $gcc_cv_as_shf_merge = no; then
3194   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3195     [elf,2,12,0], [--fatal-warnings],
3196     [.section .rodata.str, "aMS", %progbits, 1])
3198 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3199   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3200 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3202 gcc_cv_ld_aligned_shf_merge=yes
3203 case "$target" in
3204   # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
3205   # alignment > 1.
3206   sparc*-*-solaris2.11*)
3207     if test x"$gnu_ld" = xno \
3208        && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
3209       gcc_cv_ld_aligned_shf_merge=no
3210     fi
3211     ;;
3212 esac
3213 AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
3214   [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
3215 [Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
3217 gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
3218 [.stabs "gcc2_compiled.",60,0,0,0],,
3219 [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
3220   [Define if your assembler supports .stabs.])])
3222 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3223  gcc_cv_as_comdat_group,
3224  [elf,2,16,0], [--fatal-warnings],
3225  [.section .text,"axG",@progbits,.foo,comdat])
3226 if test $gcc_cv_as_comdat_group = yes; then
3227   gcc_cv_as_comdat_group_percent=no
3228   gcc_cv_as_comdat_group_group=no
3229 else
3230  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3231    gcc_cv_as_comdat_group_percent,
3232    [elf,2,16,0], [--fatal-warnings],
3233    [.section .text,"axG",%progbits,.foo,comdat])
3234  if test $gcc_cv_as_comdat_group_percent = yes; then
3235    gcc_cv_as_comdat_group_group=no
3236  else
3237    case "${target}" in
3238      # Sun as uses a completely different syntax.
3239      *-*-solaris2*)
3240        case "${target}" in
3241          sparc*-*-solaris2*)
3242            conftest_s='
3243                .group foo,".text%foo",#comdat
3244                .section ".text%foo", #alloc,#execinstr,#progbits
3245                .globl foo
3246              foo:
3247              '
3248            ;;
3249          i?86-*-solaris2* | x86_64-*-solaris2*)
3250            conftest_s='
3251                .group foo,.text%foo,#comdat
3252                .section .text%foo, "ax", @progbits
3253                .globl  foo
3254              foo:
3255              '
3256            ;;
3257        esac
3258        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3259          gcc_cv_as_comdat_group_group,
3260          ,, [$conftest_s])
3261        ;;
3262    esac
3263    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3264      gcc_cv_as_comdat_group_group=no
3265    fi
3266  fi
3268 if test x"$ld_is_gold" = xyes; then
3269   comdat_group=yes
3270 elif test $in_tree_ld = yes ; then
3271   comdat_group=no
3272   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 \
3273      && test $in_tree_ld_is_elf = yes; then
3274      comdat_group=yes
3275   fi
3276 elif echo "$ld_ver" | grep GNU > /dev/null; then
3277   comdat_group=yes
3278   if test 0"$ld_date" -lt 20050308; then
3279     if test -n "$ld_date"; then
3280       # If there was date string, but was earlier than 2005-03-08, fail
3281       comdat_group=no
3282     elif test "$ld_vers_major" -lt 2; then
3283       comdat_group=no
3284     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3285       comdat_group=no
3286     fi
3287   fi
3288 else
3289 changequote(,)dnl
3290   case "${target}" in
3291     *-*-solaris2.1[1-9]*)
3292       comdat_group=no
3293       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3294       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3295       # version 1.688.
3296       #
3297       # If using Sun as for COMDAT group as emitted by GCC, one needs at
3298       # least ld version 1.2267.
3299       if test "$ld_vers_major" -gt 1; then
3300         comdat_group=yes
3301       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3302         comdat_group=yes
3303       elif test "$ld_vers_minor" -ge 2267; then
3304         comdat_group=yes
3305       fi
3306       ;;
3307     *)
3308       # Assume linkers other than GNU ld don't support COMDAT group.
3309       comdat_group=no
3310       ;;
3311   esac
3312 changequote([,])dnl
3314 # Allow overriding the automatic COMDAT group tests above.
3315 AC_ARG_ENABLE(comdat,
3316   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3317   [comdat_group="$enable_comdat"])
3318 if test $comdat_group = no; then
3319   gcc_cv_as_comdat_group=no
3320   gcc_cv_as_comdat_group_percent=no
3321   gcc_cv_as_comdat_group_group=no
3323 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3324   [`if test $gcc_cv_as_comdat_group = yes \
3325     || test $gcc_cv_as_comdat_group_percent = yes \
3326     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3327 [Define 0/1 if your assembler and linker support COMDAT groups.])
3329 # Restrict this test to Solaris/x86: other targets define this statically.
3330 case "${target}" in
3331   i?86-*-solaris2* | x86_64-*-solaris2*)
3332     AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
3333     if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
3334       hidden_linkonce=yes
3335     else
3336       case "${target}" in
3337         # Full support for hidden thunks in linkonce sections only appeared in
3338         # Solaris 11/OpenSolaris.
3339         *-*-solaris2.1[[1-9]]*)
3340           hidden_linkonce=yes
3341           ;;
3342         *)
3343           hidden_linkonce=no
3344           ;;
3345       esac
3346     fi
3347     AC_MSG_RESULT($hidden_linkonce)
3348     AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
3349       [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
3350     [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
3351   ;;
3352 esac
3354 gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3355  gcc_cv_as_is_stmt,
3356  [2,16,92],,
3357 [       .text
3358         .file 1 "conf.c"
3359         .loc 1 1 0 is_stmt 1],,
3360 [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3361   [Define if your assembler supports the .loc is_stmt sub-directive.])])
3363 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3364  gcc_cv_as_discriminator,
3365  [2,19,51],,
3366 [       .text
3367         .file 1 "conf.c"
3368         .loc 1 1 0 discriminator 1],,
3369 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3370   [Define if your assembler supports the .loc discriminator sub-directive.])])
3372 # Catch the newlib flag of the same name so we can gate GCC features on it.
3373 AC_ARG_ENABLE(newlib-nano-formatted-io,
3374 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3375  formatted IO])],
3376 [case "${enableval}" in
3377   yes|no)
3378     ;;
3379   *)
3380     AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3381     ;;
3382 esac], [])
3384 # Thread-local storage - the check is heavily parameterized.
3385 conftest_s=
3386 tls_first_major=
3387 tls_first_minor=
3388 tls_as_opt=
3389 case "$target" in
3390 changequote(,)dnl
3391   alpha*-*-*)
3392     conftest_s='
3393         .section ".tdata","awT",@progbits
3394 foo:    .long   25
3395         .text
3396         ldq     $27,__tls_get_addr($29)         !literal!1
3397         lda     $16,foo($29)                    !tlsgd!1
3398         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
3399         ldq     $27,__tls_get_addr($29)         !literal!2
3400         lda     $16,foo($29)                    !tlsldm!2
3401         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
3402         ldq     $1,foo($29)                     !gotdtprel
3403         ldah    $2,foo($29)                     !dtprelhi
3404         lda     $3,foo($2)                      !dtprello
3405         lda     $4,foo($29)                     !dtprel
3406         ldq     $1,foo($29)                     !gottprel
3407         ldah    $2,foo($29)                     !tprelhi
3408         lda     $3,foo($2)                      !tprello
3409         lda     $4,foo($29)                     !tprel'
3410         tls_first_major=2
3411         tls_first_minor=13
3412         tls_as_opt=--fatal-warnings
3413         ;;
3414   arc*-*-*)
3415     conftest_s='
3416         add_s r0,r0, @foo@tpoff'
3417         tls_first_major=2
3418         tls_first_minor=23
3419         ;;
3420   cris-*-*|crisv32-*-*)
3421     conftest_s='
3422         .section ".tdata","awT",@progbits
3423 x:      .long   25
3424         .text
3425         move.d x:IE,$r10
3426         nop'
3427         tls_first_major=2
3428         tls_first_minor=20
3429         tls_as_opt=--fatal-warnings
3430         ;;
3431   frv*-*-*)
3432     conftest_s='
3433         .section ".tdata","awT",@progbits
3434 x:      .long   25
3435         .text
3436         call    #gettlsoff(x)'
3437         tls_first_major=2
3438         tls_first_minor=14
3439         ;;
3440   hppa*-*-linux*)
3441     conftest_s='
3442 t1:     .reg    %r20
3443 t2:     .reg    %r21
3444 gp:     .reg    %r19
3445         .section ".tdata","awT",@progbits
3446 foo:    .long   25
3447         .text
3448         .align  4
3449         addil LT%foo-$tls_gdidx$,gp
3450         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3451         b __tls_get_addr
3452         nop             
3453         addil LT%foo-$tls_ldidx$,gp
3454         b __tls_get_addr
3455         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3456         addil LR%foo-$tls_dtpoff$,%ret0
3457         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3458         mfctl %cr27,%t1                 
3459         addil LT%foo-$tls_ieoff$,gp
3460         ldw RT%foo-$tls_ieoff$(%r1),%t2
3461         add %t1,%t2,%t3                 
3462         mfctl %cr27,%t1                 
3463         addil LR%foo-$tls_leoff$,%t1
3464         ldo RR%foo-$tls_leoff$(%r1),%t2'
3465         tls_first_major=2
3466         tls_first_minor=15
3467         tls_as_opt=--fatal-warnings
3468         ;;
3469   arm*-*-*)
3470     conftest_s='
3471         .section ".tdata","awT",%progbits
3472 foo:    .long   25
3473         .text
3474 .word foo(gottpoff)
3475 .word foo(tpoff)
3476 .word foo(tlsgd)
3477 .word foo(tlsldm)
3478 .word foo(tlsldo)'
3479         tls_first_major=2
3480         tls_first_minor=17
3481         ;;
3482   i[34567]86-*-* | x86_64-*-*)
3483     case "$target" in
3484       i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3485         on_solaris=yes
3486         ;;
3487       *)
3488         on_solaris=no
3489         ;;
3490     esac
3491     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3492       conftest_s='
3493         .section .tdata,"awt",@progbits'
3494       tls_first_major=0
3495       tls_first_minor=0
3496       tls_section_flag=t
3497 changequote([,])dnl
3498       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3499 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3500 changequote(,)dnl
3501     else
3502       conftest_s='
3503         .section ".tdata","awT",@progbits'
3504       tls_first_major=2
3505       tls_first_minor=14
3506       tls_section_flag=T
3507       tls_as_opt="--fatal-warnings"
3508     fi
3509     case "$target" in
3510       i[34567]86-*-*)
3511         conftest_s="$conftest_s
3512 foo:    .long   25
3513         .text
3514         movl    %gs:0, %eax
3515         leal    foo@tlsgd(,%ebx,1), %eax
3516         leal    foo@tlsldm(%ebx), %eax
3517         leal    foo@dtpoff(%eax), %edx
3518         movl    foo@gottpoff(%ebx), %eax
3519         subl    foo@gottpoff(%ebx), %eax
3520         addl    foo@gotntpoff(%ebx), %eax
3521         movl    foo@indntpoff, %eax
3522         movl    \$foo@tpoff, %eax
3523         subl    \$foo@tpoff, %eax
3524         leal    foo@ntpoff(%ecx), %eax"
3525         ;;
3526       x86_64-*-*)
3527         if test x$on_solaris = xyes; then
3528           case $gas_flag in
3529             yes) tls_as_opt="$tls_as_opt --64" ;;
3530             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3531           esac    
3532         fi
3533         conftest_s="$conftest_s
3534 foo:    .long   25
3535         .text
3536         movq    %fs:0, %rax
3537         leaq    foo@tlsgd(%rip), %rdi
3538         leaq    foo@tlsld(%rip), %rdi
3539         leaq    foo@dtpoff(%rax), %rdx
3540         movq    foo@gottpoff(%rip), %rax
3541         movq    \$foo@tpoff, %rax"
3542         ;;
3543     esac
3544     ;;
3545   ia64-*-*)
3546     conftest_s='
3547         .section ".tdata","awT",@progbits
3548 foo:    data8   25
3549         .text
3550         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3551         addl    r17 = @ltoff(@dtprel(foo#)), gp
3552         addl    r18 = @ltoff(@tprel(foo#)), gp
3553         addl    r19 = @dtprel(foo#), gp
3554         adds    r21 = @dtprel(foo#), r13
3555         movl    r23 = @dtprel(foo#)
3556         addl    r20 = @tprel(foo#), gp
3557         adds    r22 = @tprel(foo#), r13
3558         movl    r24 = @tprel(foo#)'
3559         tls_first_major=2
3560         tls_first_minor=13
3561         tls_as_opt=--fatal-warnings
3562         ;;
3563   microblaze*-*-*)
3564     conftest_s='
3565         .section .tdata,"awT",@progbits
3567         .word 2
3568         .text
3569         addik r5,r20,x@TLSGD
3570         addik r5,r20,x@TLSLDM'
3571         tls_first_major=2
3572         tls_first_minor=20
3573         tls_as_opt='--fatal-warnings'
3574         ;;
3575   mips*-*-*)
3576     conftest_s='
3577         .section .tdata,"awT",@progbits
3579         .word 2
3580         .text
3581         addiu $4, $28, %tlsgd(x)
3582         addiu $4, $28, %tlsldm(x)
3583         lui $4, %dtprel_hi(x)
3584         addiu $4, $4, %dtprel_lo(x)
3585         lw $4, %gottprel(x)($28)
3586         lui $4, %tprel_hi(x)
3587         addiu $4, $4, %tprel_lo(x)'
3588         tls_first_major=2
3589         tls_first_minor=16
3590         tls_as_opt='-32 --fatal-warnings'
3591         ;;
3592   m68k-*-*)
3593     conftest_s='
3594         .section .tdata,"awT",@progbits
3596         .word 2
3597         .text
3598 foo:
3599         move.l x@TLSGD(%a5),%a0
3600         move.l x@TLSLDM(%a5),%a0
3601         move.l x@TLSLDO(%a5),%a0
3602         move.l x@TLSIE(%a5),%a0
3603         move.l x@TLSLE(%a5),%a0'
3604         tls_first_major=2
3605         tls_first_minor=19
3606         tls_as_opt='--fatal-warnings'
3607         ;;
3608   nios2-*-*)
3609       conftest_s='
3610         .section ".tdata","awT",@progbits'
3611         tls_first_major=2
3612         tls_first_minor=23
3613         tls_as_opt="--fatal-warnings"
3614         ;;
3615   aarch64*-*-*)
3616     conftest_s='
3617         .section ".tdata","awT",%progbits
3618 foo:    .long   25
3619         .text
3620         adrp  x0, :tlsgd:x
3621         add   x0, x0, #:tlsgd_lo12:x
3622         bl    __tls_get_addr
3623         nop'
3624         tls_first_major=2
3625         tls_first_minor=20
3626         tls_as_opt='--fatal-warnings'
3627         ;;
3628   or1k*-*-*)
3629     conftest_s='
3630         .section ".tdata","awT",@progbits
3631 foo:    .long   25
3632         .text
3633         l.movhi r3, tpoffha(foo)
3634         l.add   r3, r3, r10
3635         l.lwz   r4, tpofflo(foo)(r3)'
3636     tls_first_major=2
3637     tls_first_minor=30
3638     tls_as_opt=--fatal-warnings
3639     ;;
3640   powerpc-ibm-aix*)
3641     conftest_s='
3642         .extern __get_tpointer
3643         .toc
3644 LC..1:
3645         .tc a[TC],a[TL]@le
3646         .csect .text[PR]
3647 .tlstest:
3648         lwz 9,LC..1(2)
3649         bla __get_tpointer
3650         lwzx 3,9,3
3651         .globl a
3652         .csect a[TL],4
3654         .space 4'
3655         tls_first_major=0
3656         tls_first_minor=0
3657         ;;
3658   powerpc64*-*-*)
3659     conftest_s='
3660         .section ".tdata","awT",@progbits
3661         .align 3
3662 ld0:    .space 8
3663 ld1:    .space 8
3664 x1:     .space 8
3665 x2:     .space 8
3666 x3:     .space 8
3667         .text
3668         addi 3,2,ld0@got@tlsgd
3669         bl .__tls_get_addr
3670         nop
3671         addi 3,2,ld1@toc
3672         bl .__tls_get_addr
3673         nop
3674         addi 3,2,x1@got@tlsld
3675         bl .__tls_get_addr
3676         nop
3677         addi 9,3,x1@dtprel
3678         bl .__tls_get_addr
3679         nop
3680         addis 9,3,x2@dtprel@ha
3681         addi 9,9,x2@dtprel@l
3682         bl .__tls_get_addr
3683         nop
3684         ld 9,x3@got@dtprel(2)
3685         add 9,9,3
3686         bl .__tls_get_addr
3687         nop'
3688         tls_first_major=2
3689         tls_first_minor=14
3690         tls_as_opt="-a64 --fatal-warnings"
3691         ;;
3692   powerpc*-*-*)
3693     conftest_s='
3694         .section ".tdata","awT",@progbits
3695         .align 2
3696 ld0:    .space 4
3697 ld1:    .space 4
3698 x1:     .space 4
3699 x2:     .space 4
3700 x3:     .space 4
3701         .text
3702         addi 3,31,ld0@got@tlsgd
3703         bl __tls_get_addr
3704         addi 3,31,x1@got@tlsld
3705         bl __tls_get_addr
3706         addi 9,3,x1@dtprel
3707         addis 9,3,x2@dtprel@ha
3708         addi 9,9,x2@dtprel@l
3709         lwz 9,x3@got@tprel(31)
3710         add 9,9,x@tls
3711         addi 9,2,x1@tprel
3712         addis 9,2,x2@tprel@ha
3713         addi 9,9,x2@tprel@l'
3714         tls_first_major=2
3715         tls_first_minor=14
3716         tls_as_opt="-a32 --fatal-warnings"
3717         ;;
3718   riscv*-*-*)
3719     conftest_s='
3720         .section .tdata,"awT",@progbits
3721 x:      .word 2
3722         .text
3723         la.tls.gd a0,x
3724         call __tls_get_addr'
3725         tls_first_major=2
3726         tls_first_minor=21
3727         tls_as_opt='--fatal-warnings'
3728         ;;
3729   s390-*-*)
3730     conftest_s='
3731         .section ".tdata","awT",@progbits
3732 foo:    .long   25
3733         .text
3734         .long   foo@TLSGD
3735         .long   foo@TLSLDM
3736         .long   foo@DTPOFF
3737         .long   foo@NTPOFF
3738         .long   foo@GOTNTPOFF
3739         .long   foo@INDNTPOFF
3740         l       %r1,foo@GOTNTPOFF(%r12)
3741         l       %r1,0(%r1):tls_load:foo
3742         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3743         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3744         tls_first_major=2
3745         tls_first_minor=14
3746         tls_as_opt="-m31 --fatal-warnings"
3747         ;;
3748   s390x-*-*)
3749     conftest_s='
3750         .section ".tdata","awT",@progbits
3751 foo:    .long   25
3752         .text
3753         .quad   foo@TLSGD
3754         .quad   foo@TLSLDM
3755         .quad   foo@DTPOFF
3756         .quad   foo@NTPOFF
3757         .quad   foo@GOTNTPOFF
3758         lg      %r1,foo@GOTNTPOFF(%r12)
3759         larl    %r1,foo@INDNTPOFF
3760         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3761         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3762         tls_first_major=2
3763         tls_first_minor=14
3764         tls_as_opt="-m64 -Aesame --fatal-warnings"
3765         ;;
3766   sh-*-* | sh[123456789lbe]*-*-*)
3767     conftest_s='
3768         .section ".tdata","awT",@progbits
3769 foo:    .long   25
3770         .text
3771         .long   foo@TLSGD
3772         .long   foo@TLSLDM
3773         .long   foo@DTPOFF
3774         .long   foo@GOTTPOFF
3775         .long   foo@TPOFF'
3776         tls_first_major=2
3777         tls_first_minor=13
3778         tls_as_opt=--fatal-warnings
3779         ;;
3780   sparc*-*-*)
3781     case "$target" in
3782       sparc*-sun-solaris2.*)
3783         on_solaris=yes
3784         ;;
3785       *)
3786         on_solaris=no
3787         ;;
3788     esac
3789     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3790       conftest_s='
3791         .section ".tdata",#alloc,#write,#tls'
3792         tls_first_major=0
3793         tls_first_minor=0
3794     else
3795       conftest_s='
3796         .section ".tdata","awT",@progbits'
3797         tls_first_major=2
3798         tls_first_minor=14
3799         tls_as_opt="-32 --fatal-warnings"
3800     fi
3801     conftest_s="$conftest_s
3802 foo:    .long   25
3803         .text
3804         sethi   %tgd_hi22(foo), %o0
3805         add     %o0, %tgd_lo10(foo), %o1
3806         add     %l7, %o1, %o0, %tgd_add(foo)
3807         call    __tls_get_addr, %tgd_call(foo)
3808         sethi   %tldm_hi22(foo), %l1
3809         add     %l1, %tldm_lo10(foo), %l2
3810         add     %l7, %l2, %o0, %tldm_add(foo)
3811         call    __tls_get_addr, %tldm_call(foo)
3812         sethi   %tldo_hix22(foo), %l3
3813         xor     %l3, %tldo_lox10(foo), %l4
3814         add     %o0, %l4, %l5, %tldo_add(foo)
3815         sethi   %tie_hi22(foo), %o3
3816         add     %o3, %tie_lo10(foo), %o3
3817         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3818         add     %g7, %o2, %o4, %tie_add(foo)
3819         sethi   %tle_hix22(foo), %l1
3820         xor     %l1, %tle_lox10(foo), %o5
3821         ld      [%g7 + %o5], %o1"
3822         ;;
3823   tilepro*-*-*)
3824       conftest_s='
3825         .section ".tdata","awT",@progbits
3826 foo:    .long   25
3827         .text
3828         addli   r0, zero, tls_gd(foo)
3829         auli    r0, zero, tls_gd_ha16(foo)
3830         addli   r0, r0, tls_gd_lo16(foo)
3831         jal     __tls_get_addr
3832         addli   r0, zero, tls_ie(foo)
3833         auli    r0, r0, tls_ie_ha16(foo)
3834         addli   r0, r0, tls_ie_lo16(foo)'
3835         tls_first_major=2
3836         tls_first_minor=22
3837         tls_as_opt="--fatal-warnings"
3838         ;;
3839   tilegx*-*-*)
3840       conftest_s='
3841         .section ".tdata","awT",@progbits
3842 foo:    .long   25
3843         .text
3844         shl16insli r0, zero, hw0_last_tls_gd(foo)
3845         shl16insli r0, zero, hw1_last_tls_gd(foo)
3846         shl16insli r0, r0,   hw0_tls_gd(foo)
3847         jal        __tls_get_addr
3848         shl16insli r0, zero, hw1_last_tls_ie(foo)
3849         shl16insli r0, r0,   hw0_tls_ie(foo)'
3850         tls_first_major=2
3851         tls_first_minor=22
3852         tls_as_opt="--fatal-warnings"
3853         ;;
3854   xtensa*-*-*)
3855     conftest_s='
3856         .section ".tdata","awT",@progbits
3857 foo:    .long   25
3858         .text
3859         movi    a8, foo@TLSFUNC
3860         movi    a10, foo@TLSARG
3861         callx8.tls a8, foo@TLSCALL'
3862         tls_first_major=2
3863         tls_first_minor=19
3864         ;;
3865 changequote([,])dnl
3866 esac
3867 set_have_as_tls=no
3868 if test "x$enable_tls" = xno ; then
3869   : # TLS explicitly disabled.
3870 elif test "x$enable_tls" = xyes ; then
3871   set_have_as_tls=yes # TLS explicitly enabled.
3872 elif test -z "$tls_first_major"; then
3873   : # If we don't have a check, assume no support.
3874 else
3875   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3876   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3877   [set_have_as_tls=yes])
3879 if test $set_have_as_tls = yes ; then
3880   AC_DEFINE(HAVE_AS_TLS, 1,
3881             [Define if your assembler and linker support thread-local storage.])
3884 # Target-specific assembler checks.
3886 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3887 gcc_cv_ld_static_dynamic=no
3888 gcc_cv_ld_static_option='-Bstatic'
3889 gcc_cv_ld_dynamic_option='-Bdynamic'
3890 if test $in_tree_ld = yes ; then
3891   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
3892     gcc_cv_ld_static_dynamic=yes
3893   fi
3894 elif test x$gcc_cv_ld != x; then
3895   # Check if linker supports -Bstatic/-Bdynamic option
3896   if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
3897      && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
3898       gcc_cv_ld_static_dynamic=yes
3899   else
3900     case "$target" in
3901       # AIX ld uses -b flags
3902       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3903         gcc_cv_ld_static_dynamic=yes
3904         gcc_cv_ld_static_option="-bstatic"
3905         gcc_cv_ld_dynamic_option="-bdynamic"
3906         ;;
3907       # HP-UX ld uses -a flags to select between shared and archive.
3908       *-*-hpux*)
3909         if test x"$gnu_ld" = xno; then
3910           gcc_cv_ld_static_dynamic=yes
3911           gcc_cv_ld_static_option="-aarchive_shared"
3912           gcc_cv_ld_dynamic_option="-adefault"
3913         fi
3914         ;;
3915       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3916       *-*-solaris2*)
3917         gcc_cv_ld_static_dynamic=yes
3918         ;;
3919     esac
3920   fi
3922 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3923         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3924 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3925         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3926 [Define to the linker option to disable use of shared objects.])
3927         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3928 [Define to the linker option to enable use of shared objects.])
3930 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3932 AC_MSG_CHECKING(linker --version-script option)
3933 gcc_cv_ld_version_script=no
3934 ld_version_script_option=''
3935 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3936   gcc_cv_ld_version_script=yes
3937   ld_version_script_option='--version-script'
3938 elif test x$gcc_cv_ld != x; then
3939   case "$target" in
3940     # Solaris 2 ld always supports -M.  It also supports a subset of
3941     # --version-script since Solaris 11.4, but requires
3942     # -z gnu-version-script-compat to activate.
3943     *-*-solaris2*)
3944       gcc_cv_ld_version_script=yes
3945       ld_version_script_option='-M'
3946       ;;
3947   esac
3949 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3950 AC_MSG_RESULT($gcc_cv_ld_version_script)
3951 AC_SUBST(ld_version_script_option)
3953 AC_MSG_CHECKING(linker soname option)
3954 gcc_cv_ld_soname=no
3955 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3956   gcc_cv_ld_soname=yes
3957   ld_soname_option='-soname'
3958 elif test x$gcc_cv_ld != x; then
3959   case "$target" in
3960     *-*-darwin*)
3961       gcc_cv_ld_soname=yes
3962       ld_soname_option='-install_name'
3963       ;;
3964     # Solaris 2 ld always supports -h.  It also supports --soname for GNU
3965     # ld compatiblity since some Solaris 10 update.
3966     *-*-solaris2*)
3967       gcc_cv_ld_soname=yes
3968       ld_soname_option='-h'
3969       ;;
3970   esac
3972 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3973 AC_MSG_RESULT($gcc_cv_ld_soname)
3974 AC_SUBST(ld_soname_option)
3976 if test x"$demangler_in_ld" = xyes; then
3977   AC_MSG_CHECKING(linker --demangle support)
3978   gcc_cv_ld_demangle=no
3979   if test $in_tree_ld = yes; then
3980     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 \
3981       gcc_cv_ld_demangle=yes
3982     fi
3983   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3984     # Check if the GNU linker supports --demangle option
3985     if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
3986       gcc_cv_ld_demangle=yes
3987     fi
3988   fi
3989   if test x"$gcc_cv_ld_demangle" = xyes; then
3990     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3991 [Define if your linker supports --demangle option.])
3992   fi
3993   AC_MSG_RESULT($gcc_cv_ld_demangle)
3996 AC_MSG_CHECKING(linker plugin support)
3997 gcc_cv_lto_plugin=0
3998 if test -f liblto_plugin.la; then
3999   save_ld_ver="$ld_ver"
4000   save_ld_vers_major="$ld_vers_major"
4001   save_ld_vers_minor="$ld_vers_minor"
4002   save_ld_is_gold="$ld_is_gold"
4004   ld_is_gold=no
4006   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4007     ld_ver="GNU ld"
4008     # FIXME: ld_is_gold?
4009     ld_vers_major="$gcc_cv_gld_major_version"
4010     ld_vers_minor="$gcc_cv_gld_minor_version"
4011   else
4012     # Determine plugin linker version.
4013     # FIXME: Partial duplicate from above, generalize.
4014 changequote(,)dnl
4015     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4016     if echo "$ld_ver" | grep GNU > /dev/null; then
4017       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4018         ld_is_gold=yes
4019         ld_vers=`echo $ld_ver | sed -n \
4020             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4021       else
4022         ld_vers=`echo $ld_ver | sed -n \
4023             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4024       fi
4025       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4026       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4027     fi
4028 changequote([,])dnl
4029   fi
4031   # Determine plugin support.
4032   if echo "$ld_ver" | grep GNU > /dev/null; then
4033     # Require GNU ld or gold 2.21+ for plugin support by default.
4034     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4035       gcc_cv_lto_plugin=2
4036     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4037     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4038       gcc_cv_lto_plugin=1
4039     fi
4040   fi
4042   ld_ver="$save_ld_ver"
4043   ld_vers_major="$save_ld_vers_major"
4044   ld_vers_minor="$save_ld_vers_minor"
4045   ld_is_gold="$save_ld_is_gold"
4047 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4048   [Define to the level of your linker's plugin support.])
4049 AC_MSG_RESULT($gcc_cv_lto_plugin)
4051 # Target OS-specific assembler checks.
4053 case "$target_os" in
4054   darwin*)
4055     gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4056       gcc_cv_as_mmacosx_version_min,,
4057       [-mmacosx-version-min=10.1], [.text],,
4058       [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4059         [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
4060     ;;
4061 esac
4063 # Target CPU-specific assembler checks.
4065 case "$target" in
4066   aarch64*-*-*)
4067     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
4068                           [-mabi=lp64], [.text],,,)
4069     if test x$gcc_cv_as_aarch64_mabi = xyes; then
4070       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4071                 [Define if your assembler supports the -mabi option.])
4072     else
4073       if test x$with_abi = xilp32; then
4074         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4075                      Upgrade the Assembler.])
4076       fi
4077       if test x"$with_multilib_list" = xdefault; then
4078         TM_MULTILIB_CONFIG=lp64
4079       else
4080         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4081         for aarch64_multilib in ${aarch64_multilibs}; do
4082           case ${aarch64_multilib} in
4083             ilp32)
4084               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4085                             Upgrade the Assembler.])
4086               ;;
4087             *)
4088               ;;
4089           esac
4090         done
4091       fi
4092     fi
4093     # Check if we have binutils support for relocations types needed by -fpic
4094     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
4095     [
4096         .text
4097         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
4098     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4099         [Define if your assembler supports relocs needed by -fpic.])])
4100     # Enable Branch Target Identification Mechanism and Return Address
4101     # Signing by default.
4102     AC_ARG_ENABLE(standard-branch-protection,
4103     [
4104 AS_HELP_STRING([--enable-standard-branch-protection],
4105         [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4106 AS_HELP_STRING([--disable-standard-branch-protection],
4107         [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4108     ],
4109       [
4110         case $enableval in
4111           yes)
4112             tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4113             ;;
4114           no)
4115             ;;
4116           *)
4117             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4118   Valid choices are 'yes' and 'no'.])
4119             ;;
4120         esac
4121       ],
4122     [])
4123     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4124     AC_ARG_ENABLE(fix-cortex-a53-835769,
4125     [
4126 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4127         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4128 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4129         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4130     ],
4131       [
4132         case $enableval in
4133           yes)
4134             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4135             ;;
4136           no)
4137             ;;
4138           *)
4139             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4140   Valid choices are 'yes' and 'no'.])
4141             ;;
4143         esac
4144       ],
4145     [])
4146     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4147     AC_ARG_ENABLE(fix-cortex-a53-843419,
4148     [
4149 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4150         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4151 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4152         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4153     ],
4154       [
4155         case $enableval in
4156           yes)
4157             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4158             ;;
4159           no)
4160             ;;
4161           *)
4162             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4163   Valid choices are 'yes' and 'no'.])
4164             ;;
4166         esac
4167       ],
4168     [])
4169     ;;
4171   # All TARGET_ABI_OSF targets.
4172   alpha*-*-linux* | alpha*-*-*bsd*)
4173     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4174         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
4175 [       .set nomacro
4176         .text
4177         extbl   $3, $2, $3      !lituse_bytoff!1
4178         ldq     $2, a($29)      !literal!1
4179         ldq     $4, b($29)      !literal!2
4180         ldq_u   $3, 0($2)       !lituse_base!1
4181         ldq     $27, f($29)     !literal!5
4182         jsr     $26, ($27), f   !lituse_jsr!5
4183         ldah    $29, 0($26)     !gpdisp!3
4184         lda     $0, c($29)      !gprel
4185         ldah    $1, d($29)      !gprelhigh
4186         lda     $1, d($1)       !gprellow
4187         lda     $29, 0($29)     !gpdisp!3],,
4188     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4189   [Define if your assembler supports explicit relocations.])])
4190     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4191         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
4192 [       .set nomacro
4193         .text
4194         ldq     $27, a($29)     !literal!1
4195         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
4196     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4197   [Define if your assembler supports the lituse_jsrdirect relocation.])])
4198     ;;
4200   avr-*-*)
4201     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
4202       [--mlink-relax], [.text],,
4203       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4204                 [Define if your avr assembler supports --mlink-relax option.])])
4206     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
4207       [-mrmw], [.text],,
4208       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4209                 [Define if your avr assembler supports -mrmw option.])])
4211     gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4212       gcc_cv_as_avr_mgccisr,,
4213       [-mgcc-isr], [.text
4214                     __gcc_isr 1
4215                     __gcc_isr 2
4216                     __gcc_isr 0,r24
4217                    ],,
4218       [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4219                 [Define if your avr assembler supports -mgcc-isr option.])])
4221     # Check how default linker description file implements .rodata for
4222     # avrxmega3 (PR21472).  avr-gcc assumes .rodata is *not* loaded to
4223     # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4224     AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4225     cat > conftest.s <<EOF
4226         .section .rodata,"a",@progbits
4227         .global xxvaryy
4228     ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4229     xxvaryy:
4230         .word 1
4232     rm -f conftest.nm
4233     AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4234     AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4235     AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4236     if test -s conftest.nm
4237     then
4238         if grep ' R xxvaryy' conftest.nm > /dev/null; then
4239             AC_MSG_RESULT(yes)
4240             AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4241                 [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4242         else
4243             AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4244             echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4245             cat conftest.nm >&AS_MESSAGE_LOG_FD
4246             avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4247             AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4248         fi
4249     else
4250         AC_MSG_RESULT(test failed)
4251         echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4252         cat conftest.s >&AS_MESSAGE_LOG_FD
4253         AC_MSG_WARN([[see `config.log' for details]])
4254     fi
4255     rm -f conftest.s conftest.o conftest.elf conftest.nm
4256     ;;
4258   cris-*-*)
4259     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4260       gcc_cv_as_cris_no_mul_bug,[2,15,91],
4261       [-no-mul-bug-abort], [.text],,
4262       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4263                 [Define if your assembler supports the -no-mul-bug-abort option.])])
4264     ;;
4266   sparc*-*-*)
4267     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
4268       [-relax], [.text],,
4269       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4270                 [Define if your assembler supports -relax option.])])
4272     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4273       gcc_cv_as_sparc_gotdata_op,,
4274       [-K PIC],
4275 [.text
4276 .align 4
4277 foo:
4278         nop
4279 bar:
4280         sethi %gdop_hix22(foo), %g1
4281         xor    %g1, %gdop_lox10(foo), %g1
4282         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
4283       [if test x$gcc_cv_ld != x \
4284        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4285          if test x$gcc_cv_objdump != x; then
4286            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4287               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4288                gcc_cv_as_sparc_gotdata_op=no
4289            else
4290                gcc_cv_as_sparc_gotdata_op=yes
4291            fi
4292          fi
4293        fi
4294        rm -f conftest],
4295       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4296                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
4298     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4299       gcc_cv_as_sparc_ua_pcrel,,
4300       [-K PIC],
4301 [.text
4302 foo:
4303         nop
4304 .data
4305 .align 4
4306 .byte 0
4307 .uaword %r_disp32(foo)],
4308       [if test x$gcc_cv_ld != x \
4309        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4310          gcc_cv_as_sparc_ua_pcrel=yes
4311        fi
4312        rm -f conftest],
4313       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4314                 [Define if your assembler and linker support unaligned PC relative relocs.])
4316       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4317         gcc_cv_as_sparc_ua_pcrel_hidden,,
4318         [-K PIC],
4319 [.data
4320 .align 4
4321 .byte 0x31
4322 .uaword %r_disp32(foo)
4323 .byte 0x32, 0x33, 0x34
4324 .global foo
4325 .hidden foo
4326 foo:
4327 .skip 4],
4328         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4329          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4330          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4331             | grep ' 31000000 07323334' > /dev/null 2>&1; then
4332             if $gcc_cv_objdump -R conftest 2> /dev/null \
4333                | grep 'DISP32' > /dev/null 2>&1; then
4334                 :
4335             else
4336                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
4337             fi
4338          fi
4339          rm -f conftest],
4340          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4341                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4342     ]) # unaligned pcrel relocs
4344     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4345       gcc_cv_as_sparc_offsetable_lo10,,
4346       [-xarch=v9],
4347 [.text
4348         or %g1, %lo(ab) + 12, %g1
4349         or %g1, %lo(ab + 12), %g1],
4350       [if test x$gcc_cv_objdump != x \
4351        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4352           | grep ' 82106000 82106000' > /dev/null 2>&1; then
4353          gcc_cv_as_sparc_offsetable_lo10=yes
4354        fi],
4355        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4356                  [Define if your assembler supports offsetable %lo().])])
4358     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4359       gcc_cv_as_sparc_fmaf,,
4360       [-xarch=v9d],
4361       [.text
4362        .register %g2, #scratch
4363        .register %g3, #scratch
4364        .align 4
4365        fmaddd %f0, %f2, %f4, %f6
4366        addxccc %g1, %g2, %g3
4367        fsrl32 %f2, %f4, %f8
4368        fnaddd %f10, %f12, %f14],,
4369       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4370                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4372     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4373       gcc_cv_as_sparc_sparc4,,
4374       [-xarch=sparc4],
4375       [.text
4376        .register %g2, #scratch
4377        .register %g3, #scratch
4378        .align 4
4379        cxbe %g2, %g3, 1f
4380 1:     cwbneg %g2, %g3, 1f
4381 1:     sha1
4382        md5
4383        aes_kexpand0 %f4, %f6, %f8
4384        des_round %f38, %f40, %f42, %f44
4385        camellia_f %f54, %f56, %f58, %f60
4386        kasumi_fi_xor %f46, %f48, %f50, %f52],,
4387       [AC_DEFINE(HAVE_AS_SPARC4, 1,
4388                 [Define if your assembler supports SPARC4 instructions.])])
4390     gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4391       gcc_cv_as_sparc_sparc5,,
4392       [-xarch=sparc5],
4393       [.text
4394        .register %g2, #scratch
4395        .register %g3, #scratch
4396        .align 4
4397        subxc %g1, %g2, %g3
4398        fpadd8 %f0, %f2, %f4],,
4399       [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4400                 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4402     gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4403       gcc_cv_as_sparc_sparc6,,
4404       [-xarch=sparc6],
4405       [.text
4406        .register %g2, #scratch
4407        .register %g3, #scratch
4408        .align 4
4409        rd %entropy, %g1
4410        fpsll64x %f0, %f2, %f4],,
4411       [AC_DEFINE(HAVE_AS_SPARC6, 1,
4412                 [Define if your assembler supports SPARC6 instructions.])])
4414     gcc_GAS_CHECK_FEATURE([LEON instructions],
4415       gcc_cv_as_sparc_leon,,
4416       [-Aleon],
4417       [.text
4418        .register %g2, #scratch
4419        .register %g3, #scratch
4420        .align 4
4421        smac %g2, %g3, %g1
4422        umac %g2, %g3, %g1
4423        casa [[%g2]] 0xb, %g3, %g1],,
4424       [AC_DEFINE(HAVE_AS_LEON, 1,
4425                 [Define if your assembler supports LEON instructions.])])
4426     ;;
4428 changequote(,)dnl
4429   i[34567]86-*-* | x86_64-*-*)
4430 changequote([,])dnl
4431     case $target_os in
4432       cygwin*)
4433         # Full C++ conformance when using a shared libstdc++-v3 requires some
4434         # support from the Cygwin DLL, which in more recent versions exports
4435         # wrappers to aid in interposing and redirecting operators new, delete,
4436         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
4437         # are configuring for a version of Cygwin that exports the wrappers.
4438         if test x$host = x$target && test x$host_cpu = xi686; then
4439           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4440         else
4441           # Can't check presence of libc functions during cross-compile, so
4442           # we just have to assume we're building for an up-to-date target.
4443           gcc_ac_cygwin_dll_wrappers=yes
4444         fi
4445         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4446           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4447           [Define if you want to generate code by default that assumes that the
4448            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4449     esac
4450     case $target_os in
4451       cygwin* | pe | mingw32*)
4452         # Recent binutils allows the three-operand form of ".comm" on PE.  This
4453         # definition is used unconditionally to initialise the default state of
4454         # the target option variable that governs usage of the feature.
4455         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
4456          [2,19,52],,[.comm foo,1,32])
4457         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4458           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4459           [Define if your assembler supports specifying the alignment
4460            of objects allocated using the GAS .comm command.])
4461         # Used for DWARF 2 in PE
4462         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4463           gcc_cv_as_ix86_pe_secrel32,
4464           [2,15,91],,
4465 [.text
4466 foo:    nop
4467 .data
4468         .secrel32 foo],
4469           [if test x$gcc_cv_ld != x \
4470            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4471              gcc_cv_as_ix86_pe_secrel32=yes
4472            fi
4473            rm -f conftest],
4474           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4475             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4476         # Test if the assembler supports the extended form of the .section
4477         # directive that specifies section alignment.  LTO support uses this,
4478         # but normally only after installation, so we warn but don't fail the
4479         # configure if LTO is enabled but the assembler does not support it.
4480         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4481           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
4482         if test x$gcc_cv_as_section_has_align != xyes; then
4483           case ",$enable_languages," in
4484             *,lto,*)
4485               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4486               ;;
4487           esac
4488         fi
4489         ;;
4490     esac
4492     gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
4493       [-xbrace_comment=no], [.text],,
4494       [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4495                 [Define if your assembler supports -xbrace_comment option.])])
4497     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4498        gcc_cv_as_ix86_filds,,,
4499        [filds (%ebp); fists (%ebp)],,
4500        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4501          [Define if your assembler uses filds and fists mnemonics.])])
4503     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4504        gcc_cv_as_ix86_fildq,,,
4505        [fildq (%ebp); fistpq (%ebp)],,
4506        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4507          [Define if your assembler uses fildq and fistq mnemonics.])])
4509     gcc_GAS_CHECK_FEATURE([cmov syntax],
4510       gcc_cv_as_ix86_cmov_sun_syntax,,,
4511       [cmovl.l %edx, %eax],,
4512       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4513         [Define if your assembler supports the Sun syntax for cmov.])])
4515     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4516       gcc_cv_as_ix86_ffreep,,,
4517       [ffreep %st(1)],,
4518       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4519         [Define if your assembler supports the ffreep mnemonic.])])
4521     gcc_GAS_CHECK_FEATURE([.quad directive],
4522       gcc_cv_as_ix86_quad,,,
4523       [.quad 0],,
4524       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4525         [Define if your assembler supports the .quad directive.])])
4527     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4528       gcc_cv_as_ix86_sahf,,,
4529       [.code64
4530        sahf],,
4531       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4532         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4534     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4535       gcc_cv_as_ix86_interunit_movq,,,
4536       [.code64
4537        movq %mm0, %rax
4538        movq %rax, %xmm0])
4539     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4540       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4541       [Define if your assembler supports interunit movq mnemonic.])
4543     gcc_GAS_CHECK_FEATURE([hle prefixes],
4544       gcc_cv_as_ix86_hle,,,
4545       [lock xacquire cmpxchg %esi, (%ecx)],,
4546       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4547         [Define if your assembler supports HLE prefixes.])])
4549     gcc_GAS_CHECK_FEATURE([swap suffix],
4550       gcc_cv_as_ix86_swap,,,
4551       [movl.s %esp, %ebp],,
4552       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4553         [Define if your assembler supports the swap suffix.])])
4555     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4556       gcc_cv_as_ix86_diff_sect_delta,,,
4557       [.section .rodata
4558 .L1:
4559         .long .L2-.L1
4560         .long .L3-.L1
4561         .text
4562 .L3:    nop
4563 .L2:    nop],,
4564       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4565         [Define if your assembler supports the subtraction of symbols in different sections.])])
4567     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4568         gcc_cv_as_ix86_rep_lock_prefix,,,
4569         [rep movsl
4570          rep ret
4571          rep nop
4572          rep bsf %ecx, %eax
4573          rep bsr %ecx, %eax
4574          lock addl %edi, (%eax,%esi)
4575          lock orl $0, (%esp)],,
4576         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4577           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4579     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4580         gcc_cv_as_ix86_ud2,,,
4581         [ud2],,
4582       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4583         [Define if your assembler supports the 'ud2' mnemonic.])])
4585     # Enforce 32-bit output with gas and gld.
4586     if test x$gas = xyes; then
4587       as_ix86_gas_32_opt="--32"
4588     fi
4589     if echo "$ld_ver" | grep GNU > /dev/null; then
4590       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4591         ld_ix86_gld_32_opt="-melf_i386_sol2"
4592       else
4593         ld_ix86_gld_32_opt="-melf_i386"
4594       fi
4595     fi
4597     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4598         gcc_cv_as_ix86_tlsgdplt,,
4599         [$as_ix86_gas_32_opt],
4600         [call    tls_gd@tlsgdplt],
4601         [if test x$gcc_cv_ld != x \
4602          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4603            gcc_cv_as_ix86_tlsgdplt=yes
4604          fi
4605          rm -f conftest],
4606       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4607         [Define if your assembler and linker support @tlsgdplt.])])
4609     conftest_s='
4610         .section .tdata,"aw'$tls_section_flag'",@progbits
4611 tls_ld:
4612         .section .text,"ax",@progbits
4613          call    tls_ld@tlsldmplt'
4615     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4616         gcc_cv_as_ix86_tlsldmplt,,
4617         [$as_ix86_gas_32_opt],
4618         [$conftest_s],
4619         [if test x$gcc_cv_ld != x \
4620          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4621            gcc_cv_as_ix86_tlsldmplt=yes
4622          fi
4623          rm -f conftest])
4624     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4625       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4626       [Define to 1 if your assembler and linker support @tlsldmplt.])
4628     conftest_s='
4629         .section .text,"ax",@progbits
4630         .globl  _start
4631         .type   _start, @function
4632 _start:      
4633         leal    value@tlsldm(%ebx), %eax
4634         call    ___tls_get_addr@plt
4636         .section .tdata,"aw'$tls_section_flag'",@progbits
4637         .type   value, @object
4638 value:'
4639     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4640         gcc_cv_as_ix86_tlsldm,,
4641         [$as_ix86_gas_32_opt],
4642         [$conftest_s],
4643         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4644             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4645            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4646               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4647              gcc_cv_as_ix86_tlsldm=yes
4648            fi
4649          fi
4650          rm -f conftest])
4651     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4652       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4653       [Define to 1 if your assembler and linker support @tlsldm.])
4655     conftest_s='
4656         .data
4657 bar:
4658         .byte 1
4659         .text
4660         .global _start
4661 _start:
4662          cmpl $0, bar@GOT
4663          jmp *_start@GOT'
4664     gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4665         gcc_cv_as_ix86_got32x,,
4666         [$as_ix86_gas_32_opt],
4667         [$conftest_s],
4668         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4669             && test x$gcc_cv_readelf != x \
4670             && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4671                | grep R_386_GOT32X > /dev/null 2>&1 \
4672             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4673            if $gcc_cv_objdump -dw conftest 2>&1 \
4674               | grep 0xffffff > /dev/null 2>&1; then
4675              gcc_cv_as_ix86_got32x=no
4676            else
4677              gcc_cv_as_ix86_got32x=yes
4678            fi
4679          fi
4680          rm -f conftest])
4681     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4682       [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4683       [Define 0/1 if your assembler and linker support @GOT.])
4685     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4686       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4687       [$as_ix86_gas_32_opt],
4688 [       .text
4689 .L0:
4690         nop
4691         .data
4692         .long .L0@GOTOFF])
4693     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4694       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4695       [Define true if the assembler supports '.long foo@GOTOFF'.])
4697     conftest_s='
4698         .section .text,"ax",@progbits
4699         .globl  _start
4700         .type   _start, @function
4701 _start:
4702         leal    ld@tlsldm(%ecx), %eax
4703         call    *___tls_get_addr@GOT(%ecx)
4704         leal    gd@tlsgd(%ecx), %eax
4705         call    *___tls_get_addr@GOT(%ecx)
4707         .section .tdata,"aw'$tls_section_flag'",@progbits
4708         .type   ld, @object
4710         .byte 0
4711         .globl  gd
4712         .type   gd, @object
4714         .byte 0'
4715     gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4716         gcc_cv_as_ix86_tls_get_addr_via_got,,
4717         [$as_ix86_gas_32_opt],
4718         [$conftest_s],
4719         [if test x$gcc_cv_ld != x \
4720             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4721            gcc_cv_as_ix86_tls_get_addr_via_got=yes
4722          fi
4723          rm -f conftest])
4724     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4725       [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4726       [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4727     ;;
4729   ia64*-*-*)
4730     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4731         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4732 [       .text
4733         addl r15 = @ltoffx(x#), gp
4734         ;;
4735         ld8.mov r16 = [[r15]], x#
4737     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4738           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4740     ;;
4742   powerpc*-*-*)
4744     case $target in
4745       *-*-darwin*)
4746         gcc_GAS_CHECK_FEATURE([.machine directive support],
4747           gcc_cv_as_machine_directive,,,
4748           [     .machine ppc7400])
4749         if test x$gcc_cv_as_machine_directive != xyes; then
4750           echo "*** This target requires an assembler supporting \".machine\"" >&2
4751           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4752           test x$build = x$target && exit 1
4753         fi
4754         ;;
4755     esac
4757     case $target in
4758       *-*-aix*) conftest_s='    .machine "pwr5"
4759         .csect .text[[PR]]
4760         mfcr 3,128';;
4761       *-*-darwin*) conftest_s=' .text
4762         mfcr r3,128';;
4763       *) conftest_s='   .machine power4
4764         .text
4765         mfcr 3,128';;
4766     esac
4768     gcc_GAS_CHECK_FEATURE([mfcr field support],
4769       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4770       [$conftest_s],,
4771       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4772           [Define if your assembler supports mfcr field.])])
4774     case $target in
4775       *-*-aix*) conftest_s='    .csect .text[[PR]]
4776 LCF..0:
4777         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4778       *-*-darwin*)
4779         conftest_s='    .text
4780 LCF0:
4781         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4782       *) conftest_s='   .text
4783 .LCF0:
4784         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4785     esac
4787     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4788       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4789       [$conftest_s],,
4790       [AC_DEFINE(HAVE_AS_REL16, 1,
4791           [Define if your assembler supports R_PPC_REL16 relocs.])])
4793     case $target in
4794       *-*-aix*) conftest_s='    .machine "pwr7"
4795         .csect .text[[PR]]
4796         lxvd2x 1,2,3';;
4797       *) conftest_s='   .machine power7
4798         .text
4799         lxvd2x 1,2,3';;
4800     esac
4802     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4803       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4804       [$conftest_s],,
4805       [AC_DEFINE(HAVE_AS_VSX, 1,
4806           [Define if your assembler supports VSX instructions.])])
4808     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4809       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4810       [.gnu_attribute 4,1],,
4811       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4812           [Define if your assembler supports .gnu_attribute.])])
4814     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4815       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4816       [ .reloc .,R_PPC64_ENTRY; nop],,
4817       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4818           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4820     gcc_GAS_CHECK_FEATURE([plt sequence marker support],
4821       gcc_cv_as_powerpc_pltseq_markers, [2,31,0],-a32 --fatal-warnings,
4822       [ .reloc .,R_PPC_PLTSEQ; nop],,
4823       [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
4824           [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
4826     case $target in
4827       *-*-aix*)
4828         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4829           gcc_cv_as_aix_ref, [2,21,0],,
4830           [     .csect stuff[[rw]]
4831              stuff:
4832                 .long 1
4833                 .extern sym
4834                 .ref sym
4835           ],,
4836           [AC_DEFINE(HAVE_AS_REF, 1,
4837             [Define if your assembler supports .ref])])
4839         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4840           gcc_cv_as_aix_dwloc, [2,21,0],,
4841           [     .dwsect 0xA0000
4842         Lframe..0:
4843                 .vbyte 4,Lframe..0
4844           ],,
4845           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4846             [Define if your assembler supports AIX debug frame section label reference.])])
4847         ;;
4848     esac
4849     ;;
4851   mips*-*-*)
4852     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4853       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4854 [       lw $4,%gp_rel(foo)($4)],,
4855       [if test x$target_cpu_default = x
4856        then target_cpu_default=MASK_EXPLICIT_RELOCS
4857        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4858        fi])
4860     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4861       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4862       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4863                  [Define if the assembler understands -mno-shared.])])
4865     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4866       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4867       [.gnu_attribute 4,1],,
4868       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4869           [Define if your assembler supports .gnu_attribute.])])
4871     gcc_GAS_CHECK_FEATURE([.module support],
4872       gcc_cv_as_mips_dot_module,,[-32],
4873       [.module mips2
4874        .module fp=xx],,
4875       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4876           [Define if your assembler supports .module.])])
4877     if test x$gcc_cv_as_mips_dot_module = xno \
4878        && test x$with_fp_32 != x; then
4879       AC_MSG_ERROR(
4880         [Requesting --with-fp-32= requires assembler support for .module.])
4881     fi
4883     gcc_GAS_CHECK_FEATURE([.micromips support],
4884       gcc_cv_as_micromips_support,,[--fatal-warnings],
4885       [.set micromips],,
4886       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4887           [Define if your assembler supports the .set micromips directive])])
4889     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4890       gcc_cv_as_mips_dtprelword, [2,18,0],,
4891       [.section .tdata,"awT",@progbits
4893         .word 2
4894         .text
4895         .dtprelword x+0x8000],,
4896       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4897           [Define if your assembler supports .dtprelword.])])
4899     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4900       gcc_cv_as_mips_dspr1_mult,,,
4901 [       .set    mips32r2
4902         .set    nodspr2
4903         .set    dsp
4904         madd    $ac3,$4,$5
4905         maddu   $ac3,$4,$5
4906         msub    $ac3,$4,$5
4907         msubu   $ac3,$4,$5
4908         mult    $ac3,$4,$5
4909         multu   $ac3,$4,$5],,
4910       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4911           [Define if your assembler supports DSPR1 mult.])])
4913     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4914     gcc_cv_as_ld_jalr_reloc=no
4915     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4916       if test $in_tree_ld = yes ; then
4917         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 \
4918            && test $in_tree_ld_is_elf = yes; then
4919           gcc_cv_as_ld_jalr_reloc=yes
4920         fi
4921       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4922         echo '  .ent x' > conftest.s
4923         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4924         echo '  lw $25,%call16(y)($28)' >> conftest.s
4925         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4926         echo '1:        jalr $25' >> conftest.s
4927         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4928         echo '1:        jalr $25' >> conftest.s
4929         echo '  .end x' >> conftest.s
4930         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4931            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4932           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4933              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4934             gcc_cv_as_ld_jalr_reloc=yes
4935           fi
4936         fi
4937         rm -f conftest.*
4938       fi
4939     fi
4940     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4941       if test x$target_cpu_default = x; then
4942         target_cpu_default=MASK_RELAX_PIC_CALLS
4943       else
4944         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4945       fi
4946     fi
4947     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4949     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4950       [gcc_cv_ld_mips_personality_relaxation],
4951       [gcc_cv_ld_mips_personality_relaxation=no
4952        if test $in_tree_ld = yes ; then
4953          if test "$gcc_cv_gld_major_version" -eq 2 \
4954                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4955                  -o "$gcc_cv_gld_major_version" -gt 2; then
4956            gcc_cv_ld_mips_personality_relaxation=yes
4957          fi
4958        elif test x$gcc_cv_as != x \
4959                  -a x$gcc_cv_ld != x \
4960                  -a x$gcc_cv_readelf != x ; then
4961          cat > conftest.s <<EOF
4962         .cfi_startproc
4963         .cfi_personality 0x80,indirect_ptr
4964         .ent test
4965 test:
4966         nop
4967         .end test
4968         .cfi_endproc
4970         .section .data,"aw",@progbits
4971 indirect_ptr:
4972         .dc.a personality
4974          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4975             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4976            if $gcc_cv_readelf -d conftest 2>&1 \
4977               | grep TEXTREL > /dev/null 2>&1; then
4978              :
4979            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4980                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4981              :
4982            else
4983              gcc_cv_ld_mips_personality_relaxation=yes
4984            fi
4985          fi
4986        fi
4987        rm -f conftest.s conftest.o conftest])
4988     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4989             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4990       [Define if your linker can relax absolute .eh_frame personality
4991 pointers into PC-relative form.])
4992     fi
4994     gcc_GAS_CHECK_FEATURE([-mnan= support],
4995       gcc_cv_as_mips_nan,,
4996       [-mnan=2008],,,
4997       [AC_DEFINE(HAVE_AS_NAN, 1,
4998                  [Define if the assembler understands -mnan=.])])
4999     if test x$gcc_cv_as_mips_nan = xno \
5000        && test x$with_nan != x; then
5001       AC_MSG_ERROR(
5002         [Requesting --with-nan= requires assembler support for -mnan=])
5003     fi
5004     ;;
5005     msp430-*-*)
5006     # Earlier GAS versions generically support .gnu_attribute, but the
5007     # msp430 assembler will not do anything with it.
5008     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5009       gcc_cv_as_msp430_gnu_attribute, [2,33,50],,
5010       [.gnu_attribute 4,1],,
5011       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5012           [Define if your assembler supports .gnu_attribute.])])
5013     gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5014       gcc_cv_as_msp430_mspabi_attribute, [2,33,50],,
5015       [.mspabi_attribute 4,1],,
5016       [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5017           [Define if your assembler supports .mspabi_attribute.])])
5018     if test x$enable_newlib_nano_formatted_io = xyes; then
5019       AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5020 configured with --enable-newlib-nano-formatted-io.])
5021       fi
5022     ;;
5023     riscv*-*-*)
5024     gcc_GAS_CHECK_FEATURE([.attribute support],
5025       gcc_cv_as_riscv_attribute, [2,32,0],,
5026       [.attribute stack_align,4],,
5027       [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5028           [Define if your assembler supports .attribute.])])
5029     ;;
5030     s390*-*-*)
5031     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5032       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
5033       [.gnu_attribute 8,1],,
5034       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5035           [Define if your assembler supports .gnu_attribute.])])
5036     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5037       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
5038       [ .machinemode push
5039         .machinemode pop
5040         .machine push
5041         .machine pop],,
5042       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5043           [Define if your assembler supports .machine and .machinemode.])])
5044     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5045       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
5046       [ .machine z13+vx ],,
5047       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5048           [Define if your assembler supports architecture modifiers.])])
5049     gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5050       gcc_cv_as_s390_vector_loadstore_alignment_hints, [2,31,0],,
5051       [ vl %v24,0(%r15),3 ],,
5052       [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5053           [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5055     ;;
5056 esac
5058 # Mips and HP-UX need the GNU assembler.
5059 # Linux on IA64 might be able to use the Intel assembler.
5061 case "$target" in
5062   mips*-*-* | *-*-hpux* )
5063     if test x$gas_flag = xyes \
5064        || test x"$host" != x"$build" \
5065        || test ! -x "$gcc_cv_as" \
5066        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5067       :
5068     else
5069       echo "*** This configuration requires the GNU assembler" >&2
5070       exit 1
5071     fi
5072     ;;
5073 esac
5075 # ??? Not all targets support dwarf2 debug_line, even within a version
5076 # of gas.  Moreover, we need to emit a valid instruction to trigger any
5077 # info to the output file.  So, as supported targets are added to gas 2.11,
5078 # add some instruction here to (also) show we expect this might work.
5079 # ??? Once 2.11 is released, probably need to add first known working
5080 # version to the per-target configury.
5081 case "$cpu_type" in
5082   aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \
5083   | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5084   | tilegx | tilepro | visium | xstormy16 | xtensa)
5085     insn="nop"
5086     ;;
5087   ia64 | s390)
5088     insn="nop 0"
5089     ;;
5090   mmix)
5091     insn="swym 0"
5092     ;;
5093 esac
5094 if test x"$insn" != x; then
5095  conftest_s="\
5096         .file 1 \"conftest.s\"
5097         .loc 1 3 0
5098         $insn"
5099  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5100   gcc_cv_as_dwarf2_debug_line,
5101   [elf,2,11,0],, [$conftest_s],
5102   [if test x$gcc_cv_objdump != x \
5103    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5104       | grep debug_line > /dev/null 2>&1; then
5105      gcc_cv_as_dwarf2_debug_line=yes
5106    elif test x$gcc_cv_otool != x \
5107    && $gcc_cv_otool -l conftest.o 2> /dev/null \
5108       | grep debug_line > /dev/null 2>&1; then
5109      gcc_cv_as_dwarf2_debug_line=yes
5110    fi])
5112 # The .debug_line file table must be in the exact order that
5113 # we specified the files, since these indices are also used
5114 # by DW_AT_decl_file.  Approximate this test by testing if
5115 # the assembler bitches if the same index is assigned twice.
5116  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5117   gcc_cv_as_dwarf2_file_buggy,,,
5118 [       .file 1 "foo.s"
5119         .file 1 "bar.s"])
5121  if test $gcc_cv_as_dwarf2_debug_line = yes \
5122  && test $gcc_cv_as_dwarf2_file_buggy = no; then
5123     AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5124   [Define if your assembler supports dwarf2 .file/.loc directives,
5125    and preserves file table indices exactly as given.])
5127     if test $gcc_cv_as_leb128 = yes; then
5128         conftest_s="\
5129         .file 1 \"conftest.s\"
5130         .loc 1 3 0 view .LVU1
5131         $insn
5132         .data
5133         .uleb128 .LVU1
5134         .uleb128 .LVU1
5136         gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5137           gcc_cv_as_dwarf2_debug_view,
5138           [elf,2,27,0],,[$conftest_s],,
5139           [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5140   [Define if your assembler supports views in dwarf2 .loc directives.])])
5141     fi
5142  fi
5144  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5145   gcc_cv_as_gdwarf2_flag,
5146   [elf,2,11,0], [--gdwarf2], [$insn],,
5147   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5148 [Define if your assembler supports the --gdwarf2 option.])])
5150  gcc_GAS_CHECK_FEATURE([--gstabs option],
5151   gcc_cv_as_gstabs_flag,
5152   [elf,2,11,0], [--gstabs], [$insn],,
5153   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
5154 [Define if your assembler supports the --gstabs option.])])
5156  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5157   gcc_cv_as_debug_prefix_map_flag,
5158   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
5159   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5160 [Define if your assembler supports the --debug-prefix-map option.])])
5163 gcc_GAS_CHECK_FEATURE([compressed debug sections],
5164   gcc_cv_as_compress_debug,,,,
5165   [# gas compiled without zlib cannot compress debug sections and warns
5166    # about it, but still exits successfully.  So check for this, too.
5167    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5168    then
5169      gcc_cv_as_compress_debug=0
5170    # Since binutils 2.26, gas supports --compress-debug-sections=type,
5171    # defaulting to the ELF gABI format.
5172    elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
5173    then
5174      gcc_cv_as_compress_debug=2
5175      gcc_cv_as_compress_debug_option="--compress-debug-sections"
5176      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5177    # Before binutils 2.26, gas only supported --compress-debug-options and
5178    # emitted the traditional GNU format.
5179    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
5180    then
5181      gcc_cv_as_compress_debug=1
5182      gcc_cv_as_compress_debug_option="--compress-debug-sections"
5183      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5184    else
5185      gcc_cv_as_compress_debug=0
5186    fi])
5187 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5188 [Define to the level of your assembler's compressed debug section support.])
5189 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5190 [Define to the assembler option to enable compressed debug sections.])
5191 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5192 [Define to the assembler option to disable compressed debug sections.])
5194 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
5195  ,,
5196 [.lcomm bar,4,16],,
5197 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5198   [Define if your assembler supports .lcomm with an alignment field.])])
5200 if test x$with_sysroot = x && test x$host = x$target \
5201    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5202    && test "$prefix" != "NONE"; then
5203   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5204 [Define to PREFIX/include if cpp should also search that directory.])
5207 # Determine the version of glibc, if any, used on the target.
5208 AC_MSG_CHECKING([for target glibc version])
5209 AC_ARG_WITH([glibc-version],
5210   [AS_HELP_STRING([--with-glibc-version=M.N],
5211     [assume GCC used with glibc version M.N or later])], [
5212 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5213   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5214   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5215 else
5216   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5217 fi], [
5218 glibc_version_major=0
5219 glibc_version_minor=0
5220 [if test -f $target_header_dir/features.h \
5221   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
5222   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
5223   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
5224   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
5225 fi]])
5226 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5227 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5228 [GNU C Library major version number used on the target, or 0.])
5229 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5230 [GNU C Library minor version number used on the target, or 0.])
5232 AC_ARG_ENABLE(gnu-unique-object,
5233  [AS_HELP_STRING([--enable-gnu-unique-object],
5234    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5235  [case $enable_gnu_unique_object in
5236     yes | no) ;;
5237     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5238 Valid choices are 'yes' and 'no'.]) ;;
5239   esac],
5240  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
5241    [elf,2,19,52],,
5242    [.type foo, '$target_type_format_char'gnu_unique_object],,
5243 # We need to unquote above to to use the definition from config.gcc.
5244 # Also check for ld.so support, i.e. glibc 2.11 or higher.
5245    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5246    )])
5247 if test x$enable_gnu_unique_object = xyes; then
5248   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5249    [Define if your assembler supports @gnu_unique_object.])
5252 AC_CACHE_CHECK([assembler for tolerance to line number 0],
5253  [gcc_cv_as_line_zero],
5254  [gcc_cv_as_line_zero=no
5255   if test $in_tree_gas = yes; then
5256     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
5257   elif test "x$gcc_cv_as" != x; then
5258     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5259     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5260        test "x`cat conftest.out`" = x
5261     then
5262       gcc_cv_as_line_zero=yes
5263     else
5264       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5265       cat conftest.s >&AS_MESSAGE_LOG_FD
5266       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5267       cat conftest.out >&AS_MESSAGE_LOG_FD
5268     fi
5269     rm -f conftest.o conftest.s conftest.out
5270   fi])
5271 if test "x$gcc_cv_as_line_zero" = xyes; then
5272   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5273 [Define if the assembler won't complain about a line such as # 0 "" 2.])
5276 AC_MSG_CHECKING(support for thin archives)
5277 thin_archive_support=no
5278 echo 'int main (void) { return 0; }' > conftest.c
5279 if ($AR --version | sed 1q | grep "GNU ar" \
5280     && $CC $CFLAGS -c conftest.c \
5281     && $AR rcT conftest.a conftest.o \
5282     && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5283   thin_archive_support=yes
5285 rm -f conftest.c conftest.o conftest.a conftest
5286 AC_MSG_RESULT($thin_archive_support)
5287 AC_SUBST(thin_archive_support)
5289 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5290 gcc_cv_ld_eh_frame_hdr=no
5291 if test $in_tree_ld = yes ; then
5292   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 \
5293      && test $in_tree_ld_is_elf = yes; then
5294     gcc_cv_ld_eh_frame_hdr=yes
5295   fi
5296 elif test x$gcc_cv_ld != x; then
5297   if echo "$ld_ver" | grep GNU > /dev/null; then
5298     # Check if linker supports --eh-frame-hdr option
5299     if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5300       gcc_cv_ld_eh_frame_hdr=yes
5301     fi
5302   else
5303     case "$target" in
5304       *-*-solaris2*)
5305         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5306         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
5307           gcc_cv_ld_eh_frame_hdr=yes
5308         fi
5309         ;;
5310     esac
5311   fi
5313 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
5314 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
5315         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
5316 [Define if your linker supports .eh_frame_hdr.])
5318 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
5320 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
5321 gcc_cv_ld_eh_frame_ciev3=no
5322 if test $in_tree_ld = yes ; then
5323   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 \
5324      && test $in_tree_ld_is_elf = yes; then
5325     gcc_cv_ld_eh_frame_ciev3=yes
5326   fi
5327 elif test x$gcc_cv_ld != x; then
5328   if echo "$ld_ver" | grep GNU > /dev/null; then
5329     gcc_cv_ld_eh_frame_ciev3=yes
5330     if test 0"$ld_date" -lt 20040513; then
5331       if test -n "$ld_date"; then
5332         # If there was date string, but was earlier than 2004-05-13, fail
5333         gcc_cv_ld_eh_frame_ciev3=no
5334       elif test "$ld_vers_major" -lt 2; then
5335         gcc_cv_ld_eh_frame_ciev3=no
5336       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
5337         gcc_cv_ld_eh_frame_ciev3=no
5338       fi
5339     fi
5340   else
5341     case "$target" in
5342       *-*-solaris2*)
5343         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
5344         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
5345           gcc_cv_ld_eh_frame_ciev3=yes
5346         fi
5347         ;;
5348     esac
5349   fi
5351 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
5352   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
5353   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
5354 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
5356 AC_MSG_CHECKING(linker position independent executable support)
5357 gcc_cv_ld_pie=no
5358 if test $in_tree_ld = yes ; then
5359   case "$target" in
5360     # Full PIE support on Solaris was only introduced in gld 2.26.
5361     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
5362     *)              gcc_gld_pie_min_version=15 ;;
5363   esac
5364   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 \
5365      && test $in_tree_ld_is_elf = yes; then
5366     gcc_cv_ld_pie=yes
5367   fi
5368 elif test x$gcc_cv_ld != x; then
5369   # Check if linker supports -pie option
5370   if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
5371     gcc_cv_ld_pie=yes
5372     case "$target" in
5373       *-*-solaris2*)
5374         if echo "$ld_ver" | grep GNU > /dev/null \
5375           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5376           gcc_cv_ld_pie=no
5377         fi
5378         ;;
5379     esac
5380   else
5381     case "$target" in
5382       *-*-solaris2.1[[1-9]]*)
5383         # Solaris 11.3 added PIE support.
5384         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
5385           gcc_cv_ld_pie=yes
5386         fi
5387         ;;
5388     esac
5389   fi
5391 if test x"$gcc_cv_ld_pie" = xyes; then
5392         AC_DEFINE(HAVE_LD_PIE, 1,
5393 [Define if your linker supports PIE option.])
5395 AC_MSG_RESULT($gcc_cv_ld_pie)
5397 AC_MSG_CHECKING(linker PIE support with copy reloc)
5398 gcc_cv_ld_pie_copyreloc=no
5399 if test $gcc_cv_ld_pie = yes ; then
5400   if test $in_tree_ld = yes ; then
5401     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
5402       gcc_cv_ld_pie_copyreloc=yes
5403     fi
5404   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5405     # Check if linker supports -pie option with copy reloc
5406     case "$target" in
5407     i?86-*-linux* | x86_64-*-linux*)
5408       cat > conftest1.s <<EOF
5409         .globl  a_glob
5410         .data
5411         .type   a_glob, @object
5412         .size   a_glob, 4
5413 a_glob:
5414         .long   2
5416       cat > conftest2.s <<EOF
5417         .text
5418         .globl  main
5419         .type   main, @function
5420 main:
5421         movl    %eax, a_glob(%rip)
5422         .size   main, .-main
5423         .globl  ptr
5424         .section        .data.rel,"aw",@progbits
5425         .type   ptr, @object
5426 ptr:
5427         .quad   a_glob
5429       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5430          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
5431          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5432          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
5433         gcc_cv_ld_pie_copyreloc=yes
5434       fi
5435       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
5436       ;;
5437     esac
5438   fi
5440 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
5441   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
5442   [Define 0/1 if your linker supports -pie option with copy reloc.])
5443 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
5445 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
5446 gcc_cv_ld_eh_gc_sections=no
5447 if test $in_tree_ld = yes ; then
5448   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 \
5449      && test $in_tree_ld_is_elf = yes; then
5450     gcc_cv_ld_eh_gc_sections=yes
5451   fi
5452 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
5453   cat > conftest.s <<EOF
5454         .section        .text
5455 .globl _start
5456         .type _start, @function
5457 _start:
5458         .long foo
5459         .size _start, .-_start
5460         .section        .text.foo,"ax",@progbits
5461         .type foo, @function
5462 foo:
5463         .long 0
5464         .size foo, .-foo
5465         .section        .gcc_except_table.foo,"a",@progbits
5466 .L0:
5467         .long 0
5468         .section        .eh_frame,"a",@progbits
5469         .long .L0
5471   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5472     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5473          | grep "gc-sections option ignored" > /dev/null; then
5474       gcc_cv_ld_eh_gc_sections=no
5475     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5476          | grep gcc_except_table > /dev/null; then
5477       gcc_cv_ld_eh_gc_sections=yes
5478       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5479       if test x$gcc_cv_as_comdat_group != xyes; then
5480         gcc_cv_ld_eh_gc_sections=no
5481         cat > conftest.s <<EOF
5482         .section        .text
5483 .globl _start
5484         .type _start, @function
5485 _start:
5486         .long foo
5487         .size _start, .-_start
5488         .section        .gnu.linkonce.t.foo,"ax",@progbits
5489         .type foo, @function
5490 foo:
5491         .long 0
5492         .size foo, .-foo
5493         .section        .gcc_except_table.foo,"a",@progbits
5494 .L0:
5495         .long 0
5496         .section        .eh_frame,"a",@progbits
5497         .long .L0
5499         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5500           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5501                | grep "gc-sections option ignored" > /dev/null; then
5502             gcc_cv_ld_eh_gc_sections=no
5503           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5504                | grep gcc_except_table > /dev/null; then
5505             gcc_cv_ld_eh_gc_sections=yes
5506           fi
5507         fi
5508       fi
5509     fi
5510   fi
5511   rm -f conftest.s conftest.o conftest
5513 case "$target" in
5514   hppa*-*-linux*)
5515     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5516     gcc_cv_ld_eh_gc_sections=no
5517     ;;
5518 esac
5519 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5520         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5521   [Define if your linker supports garbage collection of
5522    sections in presence of EH frames.])
5524 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5526 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5527 gcc_cv_ld_eh_gc_sections_bug=no
5528 if test $in_tree_ld = yes ; then
5529   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 \
5530      && test $in_tree_ld_is_elf = yes; then
5531     gcc_cv_ld_eh_gc_sections_bug=yes
5532   fi
5533 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
5534   gcc_cv_ld_eh_gc_sections_bug=yes
5535   cat > conftest.s <<EOF
5536         .section        .text
5537 .globl _start
5538         .type _start, @function
5539 _start:
5540         .long foo
5541         .size _start, .-_start
5542         .section        .text.startup.foo,"ax",@progbits
5543         .type foo, @function
5544 foo:
5545         .long 0
5546         .size foo, .-foo
5547         .section        .gcc_except_table.foo,"a",@progbits
5548 .L0:
5549         .long 0
5550         .section        .eh_frame,"a",@progbits
5551         .long .L0
5553   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5554     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5555          | grep "gc-sections option ignored" > /dev/null; then
5556       :
5557     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5558          | grep gcc_except_table > /dev/null; then
5559       gcc_cv_ld_eh_gc_sections_bug=no
5560     fi
5561   fi
5562   rm -f conftest.s conftest.o conftest
5564 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5565         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5566   [Define if your linker has buggy garbage collection of
5567    sections support when .text.startup.foo like sections are used.])
5569 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5571 AC_MSG_CHECKING(linker for compressed debug sections)
5572 # gold/gld support compressed debug sections since binutils 2.19/2.21
5573 # In binutils 2.26, gld gained support for the ELF gABI format.
5574 if test $in_tree_ld = yes ; then
5575   gcc_cv_ld_compress_debug=0
5576   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 \
5577      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5578     gcc_cv_ld_compress_debug=2
5579     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5580   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 \
5581      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
5582     gcc_cv_ld_compress_debug=3
5583     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5584   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 \
5585      && test $in_tree_ld_is_elf = yes; then
5586     gcc_cv_ld_compress_debug=1
5587   fi
5588 elif echo "$ld_ver" | grep GNU > /dev/null; then
5589   if test "$ld_vers_major" -lt 2 \
5590      || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5591     gcc_cv_ld_compress_debug=0
5592   elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5593     gcc_cv_ld_compress_debug=1
5594   else
5595     gcc_cv_ld_compress_debug=3
5596     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5597   fi
5598   if test $ld_is_gold = yes; then
5599     gcc_cv_ld_compress_debug=2
5600     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5601   fi
5602 else
5603 changequote(,)dnl
5604   case "${target}" in
5605     *-*-solaris2*)
5606       # Introduced in Solaris 11.2.
5607       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5608         gcc_cv_ld_compress_debug=3
5609         gcc_cv_ld_compress_debug_option="-z compress-sections"
5610       else
5611         gcc_cv_ld_compress_debug=0
5612       fi
5613       ;;
5614     *)
5615       # Assume linkers other than GNU ld don't support compessed debug
5616       # sections.
5617       gcc_cv_ld_compress_debug=0
5618       ;;
5619   esac
5620 changequote([,])dnl
5622 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5623 [Define to the level of your linker's compressed debug section support.])
5624 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5625 [Define to the linker option to enable compressed debug sections.])
5626 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5628 if test x"$ld64_flag" = x"yes"; then
5630   # Set defaults for possibly untestable items.
5631   gcc_cv_ld64_export_dynamic=0
5633   if test "$build" = "$host"; then
5634     darwin_try_test=1
5635   else
5636     darwin_try_test=0
5637   fi
5639   # On Darwin, because of FAT library support, it is often possible to execute
5640   # exes from compatible archs even when the host differs from the build system.
5641   case "$build","$host" in
5642     x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
5643         darwin_try_test=1;;
5644     *) ;;
5645   esac
5647   # If the configurer specified a minimum ld64 version to be supported, then use
5648   # that to determine feature support.
5649   if test x"${gcc_cv_ld64_version}" != x; then
5650     AC_MSG_CHECKING(ld64 specified version)
5651     gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
5652     AC_MSG_RESULT($gcc_cv_ld64_major)
5653    if test "$gcc_cv_ld64_major" -ge 236; then
5654       gcc_cv_ld64_export_dynamic=1
5655     fi
5656   elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
5657     # If the version was not specified, try to find it.
5658     AC_MSG_CHECKING(linker version)
5659     if test x"${gcc_cv_ld64_version}" = x; then
5660       gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
5661     fi
5662     AC_MSG_RESULT($gcc_cv_ld64_version)
5664     AC_MSG_CHECKING(linker for -export_dynamic support)
5665     gcc_cv_ld64_export_dynamic=1
5666     if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
5667       gcc_cv_ld64_export_dynamic=0
5668     fi
5669     AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
5670   fi
5672   if test x"${gcc_cv_ld64_version}" != x; then
5673     AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
5674       [Define to ld64 version.])
5675   fi
5677   AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
5678   [Define to 1 if ld64 supports '-export_dynamic'.])
5681 # --------
5682 # UNSORTED
5683 # --------
5685 AC_CACHE_CHECK(linker --as-needed support,
5686 gcc_cv_ld_as_needed,
5687 [gcc_cv_ld_as_needed=no
5688 gcc_cv_ld_as_needed_option='--as-needed'
5689 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5690 if test $in_tree_ld = yes ; then
5691   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 \
5692      && test $in_tree_ld_is_elf = yes; then
5693     gcc_cv_ld_as_needed=yes
5694     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
5695       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5696       gcc_cv_ld_no_as_needed_option='--pop-state'
5697     fi
5698   fi
5699 elif test x$gcc_cv_ld != x; then
5700   # Check if linker supports --as-needed and --no-as-needed options
5701   if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
5702     gcc_cv_ld_as_needed=yes
5703     if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
5704        && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
5705        && echo "$ld_ver" | grep GNU > /dev/null \
5706        && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
5707       # Use these options only when both ld.bfd and ld.gold support
5708       # --push-state/--pop-state, which unfortunately wasn't added
5709       # at the same time.
5710       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5711       gcc_cv_ld_no_as_needed_option='--pop-state'
5712     fi
5713   fi
5714   case "$target:$gnu_ld" in
5715     *-*-solaris2*:no)
5716       # Solaris 2 ld always supports -z ignore/-z record.  Prefer the native
5717       # forms.
5718       gcc_cv_ld_as_needed=yes
5719       gcc_cv_ld_as_needed_option="-z ignore"
5720       gcc_cv_ld_no_as_needed_option="-z record"
5721       ;;
5722   esac
5724 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5725 # dl_iterate_phdr, i.e. since Solaris 11.
5726 case "$target" in
5727   *-*-solaris2.1[[1-9]]*)
5728     case "$target" in
5729     i?86-*-* | x86_64-*-*)
5730       if echo "$ld_ver" | grep GNU > /dev/null; then
5731         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5732         gcc_cv_ld_as_needed=no
5733       fi
5734       ;;
5735     esac
5736     ;;
5737   *-*-solaris2*)
5738     gcc_cv_ld_as_needed=no
5739     ;;
5740 esac
5742 if test x"$gcc_cv_ld_as_needed" = xyes; then
5743         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5744 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5745         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5746 [Define to the linker option to ignore unused dependencies.])
5747         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5748 [Define to the linker option to keep unused dependencies.])
5751 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5752 saved_LDFLAGS="$LDFLAGS"
5753 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5754   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5755   AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
5756     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5757 done
5758 LDFLAGS="$saved_LDFLAGS"
5759 if test "x$gcc_cv_ld_clearcap" = xyes; then
5760   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5761 [Define if the linker supports clearing hardware capabilities via mapfile.])
5762   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5764 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5766 case "$target" in
5767   powerpc*-*-*)
5768     case "$target" in
5769       *le-*-linux*)
5770         emul_name="-melf32lppc"
5771         ;;
5772       *)
5773         emul_name="-melf32ppc"
5774         ;;
5775     esac
5776     AC_CACHE_CHECK(linker .gnu.attributes long double support,
5777     gcc_cv_ld_ppc_attr,
5778     [gcc_cv_ld_ppc_attr=no
5779     if test x"$ld_is_gold" = xyes; then
5780       gcc_cv_ld_ppc_attr=yes
5781     elif test $in_tree_ld = yes ; then
5782       if test "$gcc_cv_gld_major_version" -eq 2 \
5783                 -a "$gcc_cv_gld_minor_version" -ge 28 \
5784                 -o "$gcc_cv_gld_major_version" -gt 2; then
5785         gcc_cv_ld_ppc_attr=yes
5786       fi
5787     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5788       # check that merging the long double .gnu_attribute doesn't warn
5789       cat > conftest1.s <<EOF
5790         .gnu_attribute 4,1
5792       cat > conftest2.s <<EOF
5793         .gnu_attribute 4,9
5795       if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5796          && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5797          && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
5798          && test ! -s conftest.err; then
5799         gcc_cv_ld_ppc_attr=yes
5800       fi
5801       rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
5802     fi
5803     ])
5804     if test x$gcc_cv_ld_ppc_attr = xyes; then
5805       AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
5806     [Define if your PowerPC linker has .gnu.attributes long double support.])
5807     fi
5808     ;;
5809 esac
5811 case "$target:$tm_file" in
5812   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5813   case "$target" in
5814      *le-*-linux*)
5815      emul_name="-melf64lppc"
5816       ;;
5817      *-*-linux*)
5818      emul_name="-melf64ppc"
5819       ;;
5820      *-*-freebsd*)
5821      emul_name="-melf64ppc_fbsd"
5822       ;;
5823   esac
5824     AC_CACHE_CHECK(linker support for omitting dot symbols,
5825     gcc_cv_ld_no_dot_syms,
5826     [gcc_cv_ld_no_dot_syms=no
5827     if test x"$ld_is_gold" = xyes; then
5828       gcc_cv_ld_no_dot_syms=yes
5829     elif test $in_tree_ld = yes ; then
5830       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
5831         gcc_cv_ld_no_dot_syms=yes
5832       fi
5833     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5834       cat > conftest1.s <<EOF
5835         .text
5836         bl .foo
5838       cat > conftest2.s <<EOF
5839         .section ".opd","aw"
5840         .align 3
5841         .globl foo
5842         .type foo,@function
5843 foo:
5844         .quad .LEfoo,.TOC.@tocbase,0
5845         .text
5846 .LEfoo:
5847         blr
5848         .size foo,.-.LEfoo
5850       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5851          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5852          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5853         gcc_cv_ld_no_dot_syms=yes
5854       fi
5855       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5856     fi
5857     ])
5858     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5859       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5860     [Define if your PowerPC64 linker only needs function descriptor syms.])
5861     fi
5863     AC_CACHE_CHECK(linker large toc support,
5864     gcc_cv_ld_large_toc,
5865     [gcc_cv_ld_large_toc=no
5866     if test x"$ld_is_gold" = xyes; then
5867       gcc_cv_ld_large_toc=yes
5868     elif test $in_tree_ld = yes ; then
5869       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
5870         gcc_cv_ld_large_toc=yes
5871       fi
5872     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5873       cat > conftest.s <<EOF
5874         .section ".tbss","awT",@nobits
5875         .align 3
5876 ie0:    .space 8
5877         .global _start
5878         .text
5879 _start:
5880         addis 9,13,ie0@got@tprel@ha
5881         ld 9,ie0@got@tprel@l(9)
5883       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5884          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5885         gcc_cv_ld_large_toc=yes
5886       fi
5887       rm -f conftest conftest.o conftest.s
5888     fi
5889     ])
5890     if test x"$gcc_cv_ld_large_toc" = xyes; then
5891       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5892     [Define if your PowerPC64 linker supports a large TOC.])
5893     fi
5895     AC_CACHE_CHECK(linker toc pointer alignment,
5896     gcc_cv_ld_toc_align,
5897     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5898       cat > conftest.s <<EOF
5899         .global _start
5900         .text
5901 _start:
5902         addis 9,2,x@got@ha
5903         .section .data.rel.ro,"aw",@progbits
5904         .p2align 16
5905         .space 32768
5906 x:      .quad .TOC.
5908       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5909          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5910         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)) }'`
5911       fi
5912       rm -f conftest conftest.o conftest.s
5913     fi
5914     ])
5915     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5916       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5917     [Define to .TOC. alignment forced by your linker.])
5918     fi
5919     ;;
5920 esac
5922 case "$target" in
5923   *-*-aix*)
5924     AC_CACHE_CHECK(linker large toc support,
5925     gcc_cv_ld_large_toc,
5926     [gcc_cv_ld_large_toc=no
5927     if test x$gcc_cv_as != x ; then
5928       cat > conftest.s <<EOF
5929         .toc
5930 LC..1:
5931         .tc a[[TC]],a[[RW]]
5932         .extern a[[RW]]
5933         .csect .text[[PR]]
5934 .largetoctest:
5935         addis 9,LC..1@u(2)
5936         ld 3,LC..1@l(9)
5938       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5939         gcc_cv_ld_large_toc=yes
5940       fi
5941       rm -f conftest conftest.o conftest.s
5942     fi
5943     ])
5944     if test x"$gcc_cv_ld_large_toc" = xyes; then
5945       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5946     [Define if your PowerPC64 linker supports a large TOC.])
5947     fi
5948     ;;
5949 esac
5951 AC_CACHE_CHECK(linker --build-id support,
5952   gcc_cv_ld_buildid,
5953   [gcc_cv_ld_buildid=no
5954   if test $in_tree_ld = yes ; then
5955     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5956        "$gcc_cv_gld_minor_version" -ge 18 -o \
5957        "$gcc_cv_gld_major_version" -gt 2 \
5958        && test $in_tree_ld_is_elf = yes; then
5959       gcc_cv_ld_buildid=yes
5960     fi
5961   elif test x$gcc_cv_ld != x; then
5962     if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
5963       gcc_cv_ld_buildid=yes
5964     fi
5965   fi])
5966 if test x"$gcc_cv_ld_buildid" = xyes; then
5967   AC_DEFINE(HAVE_LD_BUILDID, 1,
5968   [Define if your linker supports --build-id.])
5971 AC_ARG_ENABLE(linker-build-id,
5972 [AS_HELP_STRING([--enable-linker-build-id],
5973                 [compiler will always pass --build-id to linker])],
5975 enable_linker_build_id=no)
5977 if test x"$enable_linker_build_id" = xyes; then
5978   if test x"$gcc_cv_ld_buildid" = xyes; then
5979     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5980     [Define if gcc should always pass --build-id to linker.])
5981   else
5982     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5983   fi
5986 # In binutils 2.21, GNU ld gained support for new emulations fully
5987 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5988 AC_CACHE_CHECK(linker *_sol2 emulation support,
5989   gcc_cv_ld_sol2_emulation,
5990   [gcc_cv_ld_sol2_emulation=no
5991   if test $in_tree_ld = yes ; then
5992     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5993        "$gcc_cv_gld_minor_version" -ge 21 -o \
5994        "$gcc_cv_gld_major_version" -gt 2 \
5995        && test $in_tree_ld_is_elf = yes; then
5996       gcc_cv_ld_sol2_emulation=yes
5997     fi
5998   elif test x$gcc_cv_ld != x; then
5999     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6000        grep _sol2 > /dev/null; then
6001       gcc_cv_ld_sol2_emulation=yes
6002     fi
6003   fi])
6004 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6005   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6006   [Define if your linker supports the *_sol2 emulations.])
6009 AC_CACHE_CHECK(linker --sysroot support,
6010   gcc_cv_ld_sysroot,
6011   [gcc_cv_ld_sysroot=no
6012   if test $in_tree_ld = yes ; then
6013       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
6014         gcc_cv_ld_sysroot=yes
6015       fi
6016   elif test x$gcc_cv_ld != x; then 
6017     if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6018       gcc_cv_ld_sysroot=yes
6019     fi
6020   fi])
6021 if test x"$gcc_cv_ld_sysroot" = xyes; then
6022   AC_DEFINE(HAVE_LD_SYSROOT, 1,
6023   [Define if your linker supports --sysroot.])
6024 fi        
6026 case $target in
6027 *-*-solaris2*)
6028   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6029   AC_CACHE_CHECK([system-provided CRTs on Solaris],
6030     gcc_cv_solaris_crts,
6031     [gcc_cv_solaris_crts=no
6032      if test x$host != x$target; then
6033        if test "x$with_sysroot" = xyes; then
6034          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6035        else
6036          target_sysroot="${with_sysroot}"
6037        fi
6038      fi
6039      target_libdir="$target_sysroot/usr/lib"
6040      # At the time they were added, gcrt1.o became a symlink for backwards
6041      # compatibility on x86, while crt1.o was added on sparc, so check for that.
6042      case $target in
6043        i?86-*-solaris2* | x86_64-*-solaris2*)
6044          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6045          ;;
6046        sparc*-*-solaris2*)
6047          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6048          ;;
6049      esac])
6050   ;;
6051 esac
6052 if test x$gcc_cv_solaris_crts = xyes; then
6053   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6054             [Define if the system-provided CRTs are present on Solaris.])
6057 AC_ARG_ENABLE(libssp,
6058 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6059 [case "${enableval}" in
6060   yes|no)
6061     ;;
6062   *)
6063     AC_MSG_ERROR([unknown libssp setting $enableval])
6064     ;;
6065 esac], [])
6067 # Test for stack protector support in target C library.
6068 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6069   gcc_cv_libc_provides_ssp,
6070   [gcc_cv_libc_provides_ssp=no
6071   if test "x$enable_libssp" = "xno"; then
6072     gcc_cv_libc_provides_ssp=yes
6073   elif test "x$enable_libssp" = "xyes"; then
6074     gcc_cv_libc_provides_ssp=no
6075   else
6076     case "$target" in
6077        *-*-musl*)
6078          # All versions of musl provide stack protector
6079          gcc_cv_libc_provides_ssp=yes;;
6080        *-*-linux* | *-*-kfreebsd*-gnu)
6081       # glibc 2.4 and later provides __stack_chk_fail and
6082       # either __stack_chk_guard, or TLS access to stack guard canary.
6083       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6084       [if test -f $target_header_dir/features.h \
6085          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
6086             $target_header_dir/features.h > /dev/null; then
6087         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
6088              $target_header_dir/features.h > /dev/null && \
6089              test -f $target_header_dir/bits/uClibc_config.h && \
6090              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
6091              $target_header_dir/bits/uClibc_config.h > /dev/null; then
6092           gcc_cv_libc_provides_ssp=yes
6093         fi
6094       # all versions of Bionic support stack protector
6095       elif test -f $target_header_dir/sys/cdefs.h \
6096         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
6097            $target_header_dir/sys/cdefs.h > /dev/null; then
6098          gcc_cv_libc_provides_ssp=yes
6099       fi]])
6100         ;;
6101        *-*-gnu*)
6102          # Avoid complicated tests (see
6103          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6104          # simply assert that glibc does provide this, which is true for all
6105          # realistically usable GNU/Hurd configurations.
6106          # All supported versions of musl provide it as well
6107          gcc_cv_libc_provides_ssp=yes;;
6108        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6109          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6110            [echo "no __stack_chk_fail on this target"])
6111         ;;
6112        *) gcc_cv_libc_provides_ssp=no ;;
6113     esac
6114   fi])
6116 if test x$gcc_cv_libc_provides_ssp = xyes; then
6117   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6118             [Define if your target C library provides stack protector support])
6121 # Check whether --enable-default-ssp was given.
6122 AC_ARG_ENABLE(default-ssp,
6123 [AS_HELP_STRING([--enable-default-ssp],
6124   [enable Stack Smashing Protection as default])],[
6125 if test x$gcc_cv_libc_provides_ssp = xyes; then
6126   case "$target" in
6127     ia64*-*-*) enable_default_ssp=no ;;
6128     *) enable_default_ssp=$enableval ;;
6129   esac
6130 else
6131   enable_default_ssp=no
6132 fi],
6133 enable_default_ssp=no)
6134 if test x$enable_default_ssp = xyes ; then
6135   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6136       [Define if your target supports default stack protector and it is enabled.])
6138 AC_SUBST([enable_default_ssp])
6140 # Test for <sys/sdt.h> on the target.
6141 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
6142 AC_MSG_CHECKING(sys/sdt.h in the target C library)
6143 have_sys_sdt_h=no
6144 if test -f $target_header_dir/sys/sdt.h; then
6145   have_sys_sdt_h=yes
6146   AC_DEFINE(HAVE_SYS_SDT_H, 1,
6147             [Define if your target C library provides sys/sdt.h])
6149 AC_MSG_RESULT($have_sys_sdt_h)
6151 # Check if TFmode long double should be used by default or not.
6152 # Some glibc targets used DFmode long double, but with glibc 2.4
6153 # and later they can use TFmode.
6154 case "$target" in
6155   powerpc*-*-linux* | \
6156   sparc*-*-linux* | \
6157   s390*-*-linux* | \
6158   alpha*-*-linux*)
6159     AC_ARG_WITH(long-double-128,
6160       [AS_HELP_STRING([--with-long-double-128],
6161                       [use 128-bit long double by default])],
6162       gcc_cv_target_ldbl128="$with_long_double_128",
6163       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
6164       [gcc_cv_target_ldbl128=no
6165       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6166         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
6167       && gcc_cv_target_ldbl128=yes
6168       ]])])
6169     ;;
6170 esac
6171 if test x$gcc_cv_target_ldbl128 = xyes; then
6172   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
6173             [Define if TFmode long double should be the default])
6176 # Check if TFmode long double target should use the IBM extended double or IEEE
6177 # 128-bit floating point formats if long doubles are 128-bits long.  The long
6178 # double type can only be switched on powerpc64 bit Linux systems where VSX is
6179 # supported.  Other PowerPC systems do not build the IEEE 128-bit emulator in
6180 # libgcc.
6181 AC_ARG_WITH([long-double-format],
6182   [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
6183                   [Specify whether PowerPC long double uses IEEE or IBM format])],[
6184 case "$target:$with_long_double_format" in
6185   powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
6186     :
6187     ;;
6188   powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
6189     # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
6190     case "$with_cpu" in
6191       power7 | power8 | power9 | power1*)
6192         :
6193         ;;
6194       *)
6195         AC_MSG_ERROR([Configuration option --with-long-double-format is only \
6196 supported if the default cpu is power7 or newer])
6197         with_long_double_format=""
6198         ;;
6199       esac
6200       ;;
6201   xpowerpc64*-*-linux*:*)
6202     AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
6203     with_long_double_format=""
6204     ;;
6205   *)
6206     AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
6207 on 64-bit PowerPC VSX Linux systems])
6208     with_long_double_format=""
6209     ;;
6210 esac],
6211   [])
6213 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
6214 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
6215 gcc_cv_libc_provides_hwcap_in_tcb=no
6216 case "$target" in
6217   powerpc*-*-linux*)
6218     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
6219     ;;
6220 esac
6221 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
6222   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
6223             [Define if your target C Library provides the AT_HWCAP value in the TCB])
6226 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
6227 gcc_cv_target_dl_iterate_phdr=unknown
6228 case "$target" in
6229   *-*-solaris2*)
6230     # <link.h> needs both a dl_iterate_phdr declaration and support for
6231     # compilation with largefile support.
6232     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
6233       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
6234       gcc_cv_target_dl_iterate_phdr=yes
6235     else
6236       gcc_cv_target_dl_iterate_phdr=no
6237     fi
6238     ;;
6239   *-*-dragonfly* | *-*-freebsd*)
6240     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
6241       gcc_cv_target_dl_iterate_phdr=yes
6242     else
6243       gcc_cv_target_dl_iterate_phdr=no
6244     fi
6245     ;;
6246   *-linux-musl*)
6247     gcc_cv_target_dl_iterate_phdr=yes
6248     ;;
6249 esac
6250 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
6251 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
6252    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
6253 [Define if your target C library provides the `dl_iterate_phdr' function.])
6255 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
6257 # We no longer support different GC mechanisms.  Emit an error if
6258 # the user configures with --with-gc.
6259 AC_ARG_WITH(gc,
6260 [AS_HELP_STRING([--with-gc={page,zone}],
6261                 [this option is not supported anymore.  It used to choose
6262                  the garbage collection mechanism to use with the compiler])],
6263 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
6266 # Libraries to use on the host.  This will normally be set by the top
6267 # level Makefile.  Here we simply capture the value for our Makefile.
6268 if test -z "${HOST_LIBS+set}"; then
6269   HOST_LIBS=
6271 AC_SUBST(HOST_LIBS)
6273 # Use the system's zlib library.
6274 AM_ZLIB
6276 dnl Very limited version of automake's enable-maintainer-mode
6278 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
6279   dnl maintainer-mode is disabled by default
6280   AC_ARG_ENABLE(maintainer-mode,
6281 [AS_HELP_STRING([--enable-maintainer-mode],
6282                 [enable make rules and dependencies not useful
6283                  (and sometimes confusing) to the casual installer])],
6284       maintainer_mode=$enableval,
6285       maintainer_mode=no)
6287 AC_MSG_RESULT($maintainer_mode)
6289 if test "$maintainer_mode" = "yes"; then
6290   MAINT=''
6291 else
6292   MAINT='#'
6294 AC_SUBST(MAINT)dnl
6296 dnl Whether to prevent multiple front-ends from linking at the same time
6298 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
6299   AC_ARG_ENABLE(link-mutex,
6300 [AS_HELP_STRING([--enable-link-mutex],
6301                 [avoid linking multiple front-ends at once to avoid thrashing
6302                  on the build machine])],
6303       do_link_mutex=$enableval,
6304       do_link_mutex=no)
6305 AC_MSG_RESULT($do_link_mutex)
6307 if test "$do_link_mutex" = "yes"; then
6308    DO_LINK_MUTEX=true
6309 else
6310    DO_LINK_MUTEX=false
6312 AC_SUBST(DO_LINK_MUTEX)
6314 # --------------
6315 # Language hooks
6316 # --------------
6318 # Make empty files to contain the specs and options for each language.
6319 # Then add #include lines to for a compiler that has specs and/or options.
6321 subdirs=
6322 lang_opt_files=
6323 lang_specs_files=
6324 lang_tree_files=
6325 # These (without "all_") are set in each config-lang.in.
6326 # `language' must be a single word so is spelled singularly.
6327 all_languages=
6328 all_compilers=
6329 all_outputs='Makefile'
6330 # List of language configure and makefile fragments.
6331 all_lang_configurefrags=
6332 all_lang_makefrags=
6333 # Additional files for gengtype
6334 all_gtfiles="$target_gtfiles"
6336 # These are the languages that are set in --enable-languages,
6337 # and are available in the GCC tree.
6338 all_selected_languages=
6340 # Add the language fragments.
6341 # Languages are added via two mechanisms.  Some information must be
6342 # recorded in makefile variables, these are defined in config-lang.in.
6343 # We accumulate them and plug them into the main Makefile.
6344 # The other mechanism is a set of hooks for each of the main targets
6345 # like `clean', `install', etc.
6347 language_hooks="Make-hooks"
6349 for lang in ${srcdir}/*/config-lang.in
6351 changequote(,)dnl
6352         test "$lang" = "${srcdir}/*/config-lang.in" && continue
6354         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
6355         if test "x$lang_alias" = x
6356         then
6357               echo "$lang doesn't set \$language." 1>&2
6358               exit 1
6359         fi
6360         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
6361         subdirs="$subdirs $subdir"
6363         # $gcc_subdir is where the gcc integration files are to be found
6364         # for a language, both for internal compiler purposes (compiler
6365         # sources implementing front-end to GCC tree converters), and for
6366         # build infrastructure purposes (Make-lang.in, etc.)
6367         #
6368         # This will be <subdir> (relative to $srcdir) if a line like 
6369         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
6370         # is found in <langdir>/config-lang.in, and will remain <langdir>
6371         # otherwise.
6372         #
6373         # Except for the language alias (fetched above), the regular
6374         # "config-lang.in" contents are always retrieved from $gcc_subdir,
6375         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
6376         # only this and the language alias.
6378         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
6379         if [ "$gcc_subdir" = "" ]; then
6380            gcc_subdir="$subdir"
6381         fi
6383         case ",$enable_languages," in
6384         *,$lang_alias,*)
6385             all_selected_languages="$all_selected_languages $lang_alias"
6386             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
6387                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
6388             fi
6389             ;;
6390         esac
6391 changequote([,])dnl
6393         language=
6394         boot_language=
6395         compilers=
6396         outputs=
6397         gtfiles=
6398         subdir_requires=
6399         . ${srcdir}/$gcc_subdir/config-lang.in
6400         if test "x$language" = x
6401         then
6402                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
6403                 exit 1
6404         fi
6406         ok=:
6407         case ",$enable_languages," in
6408                 *,$lang_alias,*) ;;
6409                 *)
6410                         for i in $subdir_requires; do
6411                                 test -f "${srcdir}/$i/config-lang.in" && continue
6412                                 ok=false
6413                                 break
6414                         done
6415                 ;;
6416         esac
6417         $ok || continue
6419         all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
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_configurefrags)
6528 AC_SUBST(all_lang_makefrags)
6529 AC_SUBST(all_languages)
6530 AC_SUBST(all_selected_languages)
6531 AC_SUBST(build_exeext)
6532 AC_SUBST(build_install_headers_dir)
6533 AC_SUBST(build_xm_file_list)
6534 AC_SUBST(build_xm_include_list)
6535 AC_SUBST(build_xm_defines)
6536 AC_SUBST(build_file_translate)
6537 AC_SUBST(check_languages)
6538 AC_SUBST(selftest_languages)
6539 AC_SUBST(cpp_install_dir)
6540 AC_SUBST(xmake_file)
6541 AC_SUBST(tmake_file)
6542 AC_SUBST(TM_ENDIAN_CONFIG)
6543 AC_SUBST(TM_MULTILIB_CONFIG)
6544 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
6545 AC_SUBST(extra_gcc_objs)
6546 AC_SUBST(user_headers_inc_next_pre)
6547 AC_SUBST(user_headers_inc_next_post)
6548 AC_SUBST(extra_headers_list)
6549 AC_SUBST(extra_objs)
6550 AC_SUBST(extra_programs)
6551 AC_SUBST(float_h_file)
6552 AC_SUBST(gcc_config_arguments)
6553 AC_SUBST(gcc_gxx_include_dir)
6554 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
6555 AC_SUBST(host_exeext)
6556 AC_SUBST(host_xm_file_list)
6557 AC_SUBST(host_xm_include_list)
6558 AC_SUBST(host_xm_defines)
6559 AC_SUBST(out_host_hook_obj)
6560 AC_SUBST(install)
6561 AC_SUBST(lang_opt_files)
6562 AC_SUBST(lang_specs_files)
6563 AC_SUBST(lang_tree_files)
6564 AC_SUBST(local_prefix)
6565 AC_SUBST(md_file)
6566 AC_SUBST(objc_boehm_gc)
6567 AC_SUBST(out_file)
6568 AC_SUBST(out_object_file)
6569 AC_SUBST(common_out_file)
6570 AC_SUBST(common_out_object_file)
6571 AC_SUBST(tm_file_list)
6572 AC_SUBST(tm_include_list)
6573 AC_SUBST(tm_defines)
6574 AC_SUBST(tm_p_file_list)
6575 AC_SUBST(tm_p_include_list)
6576 AC_SUBST(tm_d_file_list)
6577 AC_SUBST(tm_d_include_list)
6578 AC_SUBST(xm_file_list)
6579 AC_SUBST(xm_include_list)
6580 AC_SUBST(xm_defines)
6581 AC_SUBST(use_gcc_stdint)
6582 AC_SUBST(c_target_objs)
6583 AC_SUBST(cxx_target_objs)
6584 AC_SUBST(fortran_target_objs)
6585 AC_SUBST(d_target_objs)
6586 AC_SUBST(target_cpu_default)
6588 AC_SUBST_FILE(language_hooks)
6590 # Echo link setup.
6591 if test x${build} = x${host} ; then
6592   if test x${host} = x${target} ; then
6593     echo "Links are now set up to build a native compiler for ${target}." 1>&2
6594   else
6595     echo "Links are now set up to build a cross-compiler" 1>&2
6596     echo " from ${host} to ${target}." 1>&2
6597   fi
6598 else
6599   if test x${host} = x${target} ; then
6600     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
6601     echo " for ${target}." 1>&2
6602   else
6603     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
6604     echo " from ${host} to ${target}." 1>&2
6605   fi
6608 AC_ARG_VAR(GMPLIBS,[How to link GMP])
6609 AC_ARG_VAR(GMPINC,[How to find GMP include files])
6611 AC_ARG_VAR(ISLLIBS,[How to link isl])
6612 AC_ARG_VAR(ISLINC,[How to find isl include files])
6613 if test "x${ISLLIBS}" != "x" ; then 
6614    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
6617 GCC_ENABLE_PLUGINS
6618 AC_SUBST(pluginlibs)
6619 AC_SUBST(enable_plugin)
6620 if test x"$enable_plugin" = x"yes"; then
6621   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
6625 # Enable --enable-host-shared
6626 AC_ARG_ENABLE(host-shared,
6627 [AS_HELP_STRING([--enable-host-shared],
6628                 [build host code as shared libraries])],
6629 [PICFLAG=-fPIC], [PICFLAG=])
6630 AC_SUBST(enable_host_shared)
6631 AC_SUBST(PICFLAG)
6634 AC_ARG_ENABLE(libquadmath-support,
6635 [AS_HELP_STRING([--disable-libquadmath-support],
6636   [disable libquadmath support for Fortran])],
6637 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6638 ENABLE_LIBQUADMATH_SUPPORT=yes)
6639 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6640   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6641             [Define to 1 to enable libquadmath support])
6645 # Specify what hash style to use by default.
6646 AC_ARG_WITH([linker-hash-style],
6647 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6648                 [specify the linker hash style])],
6649 [case x"$withval" in
6650    xsysv)
6651      LINKER_HASH_STYLE=sysv
6652      ;;
6653    xgnu)
6654      LINKER_HASH_STYLE=gnu
6655      ;;
6656    xboth)
6657      LINKER_HASH_STYLE=both
6658      ;;
6659    *)
6660      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6661      ;;
6662  esac],
6663 [LINKER_HASH_STYLE=''])
6664 if test x"${LINKER_HASH_STYLE}" != x; then
6665   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6666                                          [The linker hash style])
6669 # Specify what should be the default of -fdiagnostics-color option.
6670 AC_ARG_WITH([diagnostics-color],
6671 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6672                 [specify the default of -fdiagnostics-color option
6673                  auto-if-env stands for -fdiagnostics-color=auto if
6674                  GCC_COLOR environment variable is present and
6675                  -fdiagnostics-color=never otherwise])],
6676 [case x"$withval" in
6677    xnever)
6678      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6679      ;;
6680    xauto)
6681      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6682      ;;
6683    xauto-if-env)
6684      DIAGNOSTICS_COLOR_DEFAULT=-1
6685      ;;
6686    xalways)
6687      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6688      ;;
6689    *)
6690      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6691      ;;
6692  esac],
6693 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6694 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6695                    [The default for -fdiagnostics-color option])
6697 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6698 # of jit/jit-playback.c.
6699 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
6700 echo "gcc_driver_version: ${gcc_driver_version}"
6701 cat > gcc-driver-name.h <<EOF
6702 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
6705 # Check whether --enable-default-pie was given.
6706 AC_ARG_ENABLE(default-pie,
6707 [AS_HELP_STRING([--enable-default-pie],
6708   [enable Position Independent Executable as default])],
6709 enable_default_pie=$enableval,
6710 enable_default_pie=no)
6711 if test x$enable_default_pie = xyes ; then
6712   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6713       [Define if your target supports default PIE and it is enabled.])
6715 AC_SUBST([enable_default_pie])
6717 # Check if -fno-PIE works.
6718 AC_CACHE_CHECK([for -fno-PIE option],
6719   [gcc_cv_c_no_fpie],
6720   [saved_CXXFLAGS="$CXXFLAGS"
6721    CXXFLAGS="$CXXFLAGS -fno-PIE"
6722    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6723      [gcc_cv_c_no_fpie=yes],
6724      [gcc_cv_c_no_fpie=no])
6725    CXXFLAGS="$saved_CXXFLAGS"])
6726 if test "$gcc_cv_c_no_fpie" = "yes"; then
6727   NO_PIE_CFLAGS="-fno-PIE"
6729 AC_SUBST([NO_PIE_CFLAGS])
6731 # Check if -no-pie works.
6732 AC_CACHE_CHECK([for -no-pie option],
6733   [gcc_cv_no_pie],
6734   [saved_LDFLAGS="$LDFLAGS"
6735    LDFLAGS="$LDFLAGS -no-pie"
6736    AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6737      [gcc_cv_no_pie=yes],
6738      [gcc_cv_no_pie=no])
6739    LDFLAGS="$saved_LDFLAGS"])
6740 if test "$gcc_cv_no_pie" = "yes"; then
6741   NO_PIE_FLAG="-no-pie"
6743 AC_SUBST([NO_PIE_FLAG])
6745 # Check linker supports '-z bndplt'
6746 ld_bndplt_support=no
6747 AC_MSG_CHECKING(linker -z bndplt option)
6748 if test x"$ld_is_gold" = xno; then
6749   if test $in_tree_ld = yes ; then
6750     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
6751       ld_bndplt_support=yes
6752     fi
6753   elif test x$gcc_cv_ld != x; then
6754     # Check if linker supports -a bndplt option
6755     if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
6756       ld_bndplt_support=yes
6757     fi
6758   fi
6760 if test x"$ld_bndplt_support" = xyes; then
6761   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6762         [Define if your linker supports -z bndplt])
6764 AC_MSG_RESULT($ld_bndplt_support)
6766 # Check linker supports '--push-state'/'--pop-state'
6767 ld_pushpopstate_support=no
6768 AC_MSG_CHECKING(linker --push-state/--pop-state options)
6769 if test x"$ld_is_gold" = xno; then
6770   if test $in_tree_ld = yes ; then
6771     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
6772       ld_pushpopstate_support=yes
6773     fi
6774   elif test x$gcc_cv_ld != x; then
6775     # Check if linker supports --push-state/--pop-state options
6776     if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
6777       ld_pushpopstate_support=yes
6778     fi
6779   fi
6781 if test x"$ld_pushpopstate_support" = xyes; then
6782   AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
6783         [Define if your linker supports --push-state/--pop-state])
6785 AC_MSG_RESULT($ld_pushpopstate_support)
6787 # Configure the subdirectories
6788 # AC_CONFIG_SUBDIRS($subdirs)
6790 # Create the Makefile
6791 # and configure language subdirectories
6792 AC_CONFIG_FILES($all_outputs)
6794 AC_CONFIG_COMMANDS([default],
6796 case ${CONFIG_HEADERS} in
6797   *auto-host.h:config.in*)
6798   echo > cstamp-h ;;
6799 esac
6800 # Make sure all the subdirs exist.
6801 for d in $subdirs doc build common c-family
6803     test -d $d || mkdir $d
6804 done
6805 ], 
6806 [subdirs='$subdirs'])
6807 AC_OUTPUT