struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / support / cpp / gcc / configure.ac
blobe5aad310e4e38507d25c037ab4ff0efbf47546d5
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2022 Free Software Foundation, Inc.
6 #This file is part of GCC.
7 #was: gcc/configure.ac
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
12 #version.
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 #for more details.
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3.  If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
27 AC_INIT
28 AC_CONFIG_SRCDIR(gcc.cc)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
31 gcc_version=`cat $srcdir/BASE-VER`
33 # Determine the host, build, and target systems
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
38 # Determine the noncanonical host name, for Ada.
39 ACX_NONCANONICAL_HOST
41 # Determine the noncanonical target name, for directory use.
42 ACX_NONCANONICAL_TARGET
44 # Used for constructing correct paths for offload compilers.
45 real_target_noncanonical=${target_noncanonical}
46 accel_dir_suffix=
48 # Determine the target- and build-specific subdirectories
49 GCC_TOPLEV_SUBDIRS
51 # Set program_transform_name
52 AC_ARG_PROGRAM
54 # Check for bogus environment variables.
55 # Test if LIBRARY_PATH contains the notation for the current directory
56 # since this would lead to problems installing/building glibc.
57 # LIBRARY_PATH contains the current directory if one of the following
58 # is true:
59 # - one of the terminals (":" and ";") is the first or last sign
60 # - two terminals occur directly after each other
61 # - the path contains an element with a dot in it
62 AC_MSG_CHECKING(LIBRARY_PATH variable)
63 changequote(,)dnl
64 case ${LIBRARY_PATH} in
65   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
66     library_path_setting="contains current directory"
67     ;;
68   *)
69     library_path_setting="ok"
70     ;;
71 esac
72 changequote([,])dnl
73 AC_MSG_RESULT($library_path_setting)
74 if test "$library_path_setting" != "ok"; then
75 AC_MSG_ERROR([
76 *** LIBRARY_PATH shouldn't contain the current directory when
77 *** building gcc. Please change the environment variable
78 *** and run configure again.])
81 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
82 # since this would lead to problems installing/building glibc.
83 # GCC_EXEC_PREFIX contains the current directory if one of the following
84 # is true:
85 # - one of the terminals (":" and ";") is the first or last sign
86 # - two terminals occur directly after each other
87 # - the path contains an element with a dot in it
88 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
89 changequote(,)dnl
90 case ${GCC_EXEC_PREFIX} in
91   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
92     gcc_exec_prefix_setting="contains current directory"
93     ;;
94   *)
95     gcc_exec_prefix_setting="ok"
96     ;;
97 esac
98 changequote([,])dnl
99 AC_MSG_RESULT($gcc_exec_prefix_setting)
100 if test "$gcc_exec_prefix_setting" != "ok"; then
101 AC_MSG_ERROR([
102 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
103 *** building gcc. Please change the environment variable
104 *** and run configure again.])
107 # -----------
108 # Directories
109 # -----------
111 # Specify the local prefix
112 local_prefix=
113 AC_ARG_WITH(local-prefix,
114 [AS_HELP_STRING([--with-local-prefix=DIR],
115                 [specifies directory to put local include])],
116 [case "${withval}" in
117 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
118 no)     ;;
119 *)      local_prefix=$with_local_prefix ;;
120 esac])
122 # Default local prefix if it is empty
123 if test x$local_prefix = x; then
124         local_prefix=/usr/local
127 AC_ARG_WITH([native-system-header-dir],
128   [  --with-native-system-header-dir=dir
129                           use dir as the directory to look for standard
130                           system header files in.  Defaults to /usr/include.],
132  case ${with_native_system_header_dir} in
133  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
134  /* | [[A-Za-z]]:[[\\/]]*) ;;
135  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
136  esac
137  configured_native_system_header_dir="${withval}"
138 ], [configured_native_system_header_dir=])
140 AC_ARG_WITH(build-sysroot, 
141   [AS_HELP_STRING([--with-build-sysroot=sysroot],
142                   [use sysroot as the system root during the build])],
143   [if test x"$withval" != x ; then
144      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
145    fi],
146   [SYSROOT_CFLAGS_FOR_TARGET=])
147 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
149 if test "x$prefix" = xNONE; then
150  test_prefix=/usr/local
151 else
152  test_prefix=$prefix
154 if test "x$exec_prefix" = xNONE; then
155  test_exec_prefix=$test_prefix
156 else
157  test_exec_prefix=$exec_prefix
160 AC_ARG_WITH(sysroot,
161 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
162                 [search for usr/lib, usr/include, et al, within DIR])],
164  case ${with_sysroot} in
165  /) ;;
166  */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
167  esac
168  case ${with_sysroot} in
169  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
170  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
171  esac
172    
173  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
174  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
175         
176  case ${TARGET_SYSTEM_ROOT} in
177  "${test_prefix}"|"${test_prefix}/"*|\
178  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
179  '${prefix}'|'${prefix}/'*|\
180  '${exec_prefix}'|'${exec_prefix}/'*)
181    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
182    TARGET_SYSTEM_ROOT_DEFINE="$t"
183    ;;
184  esac
185 ], [
186  TARGET_SYSTEM_ROOT=
187  TARGET_SYSTEM_ROOT_DEFINE=
188  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
190 AC_SUBST(TARGET_SYSTEM_ROOT)
191 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
192 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
194 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
195 # passed in by the toplevel make and thus we'd get different behavior
196 # depending on where we built the sources.
197 gcc_gxx_include_dir=
198 # Specify the g++ header file directory
199 AC_ARG_WITH(gxx-include-dir,
200 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
201                 [specifies directory to put g++ header files])],
202 [case "${withval}" in
203 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
204 no)     ;;
205 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
206 esac])
208 # If both --with-sysroot and --with-gxx-include-dir are passed, we interpolate
209 # the former in the latter and, upon success, compute gcc_gxx_include_dir as
210 # relative to the sysroot.
211 gcc_gxx_include_dir_add_sysroot=0
213 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
214 if test x${gcc_gxx_include_dir} = x; then
215   if test x${enable_version_specific_runtime_libs} = xyes; then
216     gcc_gxx_include_dir='${libsubdir}/include/c++'
217   else
218     libstdcxx_incdir='include/c++/$(version)'
219     if test x$host != x$target; then
220        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
221     fi
222     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
223   fi
224 elif test "${with_sysroot+set}" = set; then
225   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
226   if test "${gcc_gxx_without_sysroot}"; then
227     gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
228     gcc_gxx_include_dir_add_sysroot=1
229   fi
232 # Configuration for an alternate set of C++ headers.
233 gcc_gxx_libcxx_include_dir=
234 # Specify the alternate g++ header file directory
235 AC_ARG_WITH(gxx-libcxx-include-dir,
236 [AS_HELP_STRING([--with-gxx-libcxx-include-dir=DIR],
237                 [specifies directory to find libc++ header files])],
238 [case "${withval}" in
239 yes)    AC_MSG_ERROR(bad value ${withval} given for libc++ include directory) ;;
240 no)     ;;
241 *)      gcc_gxx_libcxx_include_dir=$with_gxx_libcxx_include_dir ;;
242 esac])
244 # If both --with-sysroot and --with-gxx-libcxx-include-dir are passed, we
245 # check to see if the latter starts with the former and, upon success, compute
246 # gcc_gxx_libcxx_include_dir as relative to the sysroot.
247 gcc_gxx_libcxx_include_dir_add_sysroot=0
249 if test x${gcc_gxx_libcxx_include_dir} != x; then
250   AC_DEFINE(ENABLE_STDLIB_OPTION, 1,
251             [Define if the -stdlib= option should be enabled.])
252 else
253   AC_DEFINE(ENABLE_STDLIB_OPTION, 0)
255 # ??? This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
256 if test x${gcc_gxx_libcxx_include_dir} = x; then
257   if test x${enable_version_specific_runtime_libs} = xyes; then
258     gcc_gxx_libcxx_include_dir='${libsubdir}/libc++_include/c++/v1'
259   else
260     libcxx_incdir='libc++_include/c++/$(version)/v1'
261     if test x$host != x$target; then
262        libcxx_incdir="$target_alias/$libcxx_incdir"
263     fi
264     gcc_gxx_libcxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libcxx_incdir"
265   fi
266 elif test "${with_sysroot+set}" = set; then
267   gcc_gxx_libcxx_without_sysroot=`expr "${gcc_gxx_libcxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
268   if test "${gcc_gxx_libcxx_without_sysroot}"; then
269     gcc_gxx_libcxx_include_dir="${gcc_gxx_libcxx_without_sysroot}"
270     gcc_gxx_libcxx_include_dir_add_sysroot=1
271   fi
274 AC_ARG_WITH(cpp_install_dir,
275 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
276                 [install the user visible C preprocessor in DIR
277                  (relative to PREFIX) as well as PREFIX/bin])],
278 [if test x$withval = xyes; then
279   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
280 elif test x$withval != xno; then
281   cpp_install_dir=$withval
282 fi])
284 # We would like to our source tree to be readonly.  However when releases or
285 # pre-releases are generated, the flex/bison generated files as well as the 
286 # various formats of manuals need to be included along with the rest of the
287 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
288 # just that.
290 AC_MSG_CHECKING([whether to place generated files in the source directory])
291   dnl generated-files-in-srcdir is disabled by default
292   AC_ARG_ENABLE(generated-files-in-srcdir, 
293     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
294                     [put copies of generated files in source dir
295                      intended for creating source tarballs for users
296                      without texinfo bison or flex])],
297       generated_files_in_srcdir=$enableval,
298       generated_files_in_srcdir=no)
300 AC_MSG_RESULT($generated_files_in_srcdir)
302 if test "$generated_files_in_srcdir" = "yes"; then
303   GENINSRC=''
304 else
305   GENINSRC='#'
307 AC_SUBST(GENINSRC)
309 # -------------------
310 # Find default linker
311 # -------------------
313 # With GNU ld
314 AC_ARG_WITH(gnu-ld,
315 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
316 gnu_ld_flag="$with_gnu_ld",
317 gnu_ld_flag=no)
319 case $target in
320     *darwin*)
321         ld64_flag=yes # Darwin can only use a ld64-compatible linker.
322         dsymutil_flag=yes # Darwin uses dsymutil to link debug.
323         ;;
324     *)
325         ld64_flag=no
326         dsymutil_flag=no
327         ;;
328 esac
330 # With pre-defined ld
331 AC_ARG_WITH(ld,
332 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
333 DEFAULT_LINKER="$with_ld")
334 if test x"${DEFAULT_LINKER+set}" = x"set"; then
335   if test ! -x "$DEFAULT_LINKER"; then
336     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
337   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
338     gnu_ld_flag=yes
339   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
340     ld64_flag=yes
341   fi
342   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
343         [Define to enable the use of a default linker.])
346 AC_MSG_CHECKING([whether a default linker was specified])
347 if test x"${DEFAULT_LINKER+set}" = x"set"; then
348   if test x"$gnu_ld_flag" = x"no"; then
349     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
350   else
351     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
352   fi
353 else
354   AC_MSG_RESULT(no)
357 # With demangler in GNU ld
358 AC_ARG_WITH(demangler-in-ld,
359 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
360 demangler_in_ld="$with_demangler_in_ld",
361 demangler_in_ld=yes)
363 # Allow the user to specify a dsymutil executable (used on Darwin only, so far)
364 AC_ARG_WITH(dsymutil,
365 [AS_HELP_STRING([--with-dsymutil], [arrange to use the specified dsymutil (full pathname)])],
366 DEFAULT_DSYMUTIL="$with_dsymutil")
368 dsymutil_vers=
369 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
370   if test ! -x "$DEFAULT_DSYMUTIL"; then
371     AC_MSG_ERROR([cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL])
372   else
373     if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
374       dsymutil_flag=yes
375     fi
376   fi
377   AC_DEFINE_UNQUOTED(DEFAULT_DSYMUTIL,"$DEFAULT_DSYMUTIL",
378         [Define to enable the use of a default debug linker.])
381 AC_MSG_CHECKING([whether a default dsymutil was specified])
382 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
383   AC_MSG_RESULT([yes ($DEFAULT_DSYMUTIL)])
384 else
385   AC_MSG_RESULT(no)
388 # ----------------------
389 # Find default assembler
390 # ----------------------
392 # With GNU as
393 AC_ARG_WITH(gnu-as,
394 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
395 gas_flag="$with_gnu_as",
396 gas_flag=no)
398 AC_ARG_WITH(as,
399 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
400 DEFAULT_ASSEMBLER="$with_as")
401 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
402   if test ! -x "$DEFAULT_ASSEMBLER"; then
403     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
404   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
405     gas_flag=yes
406   fi
407   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
408         [Define to enable the use of a default assembler.])
411 AC_MSG_CHECKING([whether a default assembler was specified])
412 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
413   if test x"$gas_flag" = x"no"; then
414     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
415   else
416     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
417   fi
418 else
419   AC_MSG_RESULT(no)
422 # ---------------
423 # Find C compiler
424 # ---------------
426 # If a non-executable a.out is present (e.g. created by GNU as above even if
427 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
428 # file, even when creating an executable, so an execution test fails.
429 # Remove possible default executable files to avoid this.
431 # FIXME: This really belongs into AC_PROG_CC and can be removed once
432 # Autoconf includes it.
433 rm -f a.out a.exe b.out
435 # Find the native compiler
436 AC_PROG_CC
437 AC_PROG_CXX
438 # ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
439 # ACX_PROG_GDC([-I"$srcdir"/d])
441 # Do configure tests with the C++ compiler, since that's what we build with.
442 AC_LANG(C++)
444 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
445 # optimizations to be activated explicitly by the toplevel.
446 case "$CC" in
447   */prev-gcc/xgcc*) ;;
448   *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[       ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" `
449      CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[   ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" ` ;;
450 esac
451 AC_SUBST(CFLAGS)
452 AC_SUBST(CXXFLAGS)
453 AC_SUBST(GDCFLAGS)
455 # Determine PICFLAG for target gnatlib.
456 GCC_PICFLAG_FOR_TARGET
457 AC_SUBST(PICFLAG_FOR_TARGET)
459 # -------------------------
460 # Check C compiler features
461 # -------------------------
463 AC_USE_SYSTEM_EXTENSIONS
465 AC_PROG_CPP
466 AC_C_INLINE
468 AC_SYS_LARGEFILE
469 AC_CHECK_SIZEOF(ino_t)
470 AC_CHECK_SIZEOF(dev_t)
472 # Select the right stat being able to handle 64bit inodes, if needed.
473 if test "$enable_largefile" != no; then
474   case "$host, $build" in
475     *-*-aix*,*|*,*-*-aix*)
476       if test "$ac_cv_sizeof_ino_t" == "4" -a "$ac_cv_sizeof_dev_t" == 4; then
477         AC_DEFINE(HOST_STAT_FOR_64BIT_INODES, stat64x,
478           [Define which stat syscall is able to handle 64bit indodes.])
479       fi;;
480   esac
484 # sizeof(char) is 1 by definition.
485 AC_CHECK_SIZEOF(void *)
486 AC_CHECK_SIZEOF(short)
487 AC_CHECK_SIZEOF(int)
488 AC_CHECK_SIZEOF(long)
489 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
490 GCC_STDINT_TYPES
491 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
492   AC_MSG_ERROR([uint64_t or int64_t not found])
495 # check what underlying integer type int64_t uses
496 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
497 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
498 #ifdef HAVE_STDINT_H
499 #include <stdint.h>
500 #endif
501 template <typename T> struct X { };
502 template <>
503 struct X<long> { typedef long t; };
504 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
505 if test "$ac_cv_int64_t_type" = "long"; then
506   AC_DEFINE(INT64_T_IS_LONG, 1,
507   [Define if int64_t uses long as underlying type.])
508 else
509 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
510 #ifdef HAVE_STDINT_H
511 #include <stdint.h>
512 #endif
513 template <typename T> struct X { };
514 template <>
515 struct X<long long> { typedef long long t; };
516 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
519 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
520 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
521 #include <utility>
522 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
523 if test $ac_cv_std_swap_in_utility = yes; then
524   AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
525   [Define if <utility> defines std::swap.])
528 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
529 # If the host compiler is affected by the bug, and we build with optimization
530 # enabled (which happens e.g. when cross-compiling), the pool allocator may
531 # get miscompiled.  Use -fno-strict-aliasing to work around this problem.
532 # Since there is no reliable feature check for the presence of this bug,
533 # we simply use a GCC version number check.  (This should never trigger for
534 # stages 2 or 3 of a native bootstrap.)
535 aliasing_flags=
536 if test "$GCC" = yes; then
537   saved_CXXFLAGS="$CXXFLAGS"
539   # The following test compilation will succeed if and only if $CXX accepts
540   # -fno-strict-aliasing *and* is older than GCC 4.3.
541   CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
542   AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
543   AC_COMPILE_IFELSE([AC_LANG_SOURCE([
544 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
545 #error compiler not affected by placement new aliasing bug
546 #endif
547 ])],
548     [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
549     [AC_MSG_RESULT([no])])
551   CXXFLAGS="$saved_CXXFLAGS"
553 AC_SUBST(aliasing_flags)
557 # ---------------------
558 # Warnings and checking
559 # ---------------------
561 # Check $CC warning features (if it's GCC).
562 # We want to use -pedantic, but we don't want warnings about
563 # * 'long long'
564 # * variadic macros
565 # * overlong strings
566 # * C++11 narrowing conversions in { }
567 # So, we only use -pedantic if we can disable those warnings.
569 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
570 AC_ARG_ENABLE(build-format-warnings,
571   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
572   [],[enable_build_format_warnings=yes])
573 AS_IF([test $enable_build_format_warnings = no],
574       [wf_opt=-Wno-format],[wf_opt=])
575 ACX_PROG_CXX_WARNING_OPTS(
576         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
577                        [-Wcast-qual $wf_opt])),
578                        [loose_warn])
579 ACX_PROG_CC_WARNING_OPTS(
580         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
581                        [])), [c_loose_warn])
582 ACX_PROG_CXX_WARNING_OPTS(
583         m4_quote(m4_do([-Wmissing-format-attribute ],
584                        [-Woverloaded-virtual])), [strict_warn])
585 ACX_PROG_CC_WARNING_OPTS(
586         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
587 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
588         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
589                        [-Wno-overlength-strings])), [strict_warn])
590 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
592 # The above macros do nothing if the compiler is not GCC.  However, the
593 # Makefile has more goo to add other flags, so these variables are used
594 # to enable warnings only for GCC.
595 warn_cflags=
596 warn_cxxflags=
597 if test "x$GCC" = "xyes"; then
598   warn_cflags='$(GCC_WARN_CFLAGS)'
599   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
601 AC_SUBST(warn_cflags)
602 AC_SUBST(warn_cxxflags)
604 # Disable exceptions and RTTI if building with g++
605 ACX_PROG_CC_WARNING_OPTS(
606         m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
607                        [noexception_flags])
608         
609 # Enable expensive internal checks
610 is_release=
611 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
612   is_release=yes
615 AC_ARG_ENABLE(checking,
616 [AS_HELP_STRING([[--enable-checking[=LIST]]],
617                 [enable expensive run-time checks.  With LIST,
618                  enable only specific categories of checks.
619                  Categories are: yes,no,all,none,release.
620                  Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
621                  rtlflag,rtl,runtime,tree,valgrind,types])],
622 [ac_checking_flags="${enableval}"],[
623 # Determine the default checks.
624 if test x$is_release = x ; then
625   ac_checking_flags=yes,extra
626 else
627   ac_checking_flags=release
628 fi])
629 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
630 for check in release $ac_checking_flags
632         case $check in
633         # these set all the flags to specific states
634         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
635                         ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
636                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
637                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
638                         ac_tree_checking=1 ; ac_valgrind_checking= ;
639                         ac_types_checking=1 ;;
640         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
641                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
642                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
643                         ac_rtlflag_checking= ; ac_runtime_checking= ;
644                         ac_tree_checking= ; ac_valgrind_checking= ;
645                         ac_types_checking= ;;
646         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
647                         ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
648                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
649                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
650                         ac_tree_checking=1 ; ac_valgrind_checking= ;
651                         ac_types_checking=1 ;;
652         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
653                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
654                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
655                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
656                         ac_tree_checking= ; ac_valgrind_checking= ;
657                         ac_types_checking= ;;
658         # these enable particular checks
659         assert)         ac_assert_checking=1 ;;
660         df)             ac_df_checking=1 ;;
661         extra)          ac_extra_checking=1 ;;
662         fold)           ac_fold_checking=1 ;;
663         gc)             ac_gc_checking=1 ;;
664         gcac)           ac_gc_always_collect=1 ;;
665         gimple)         ac_gimple_checking=1 ;;
666         misc)           ac_checking=1 ;;
667         rtl)            ac_rtl_checking=1 ;;
668         rtlflag)        ac_rtlflag_checking=1 ;;
669         runtime)        ac_runtime_checking=1 ;;
670         tree)           ac_tree_checking=1 ;;
671         types)          ac_types_checking=1 ;;
672         valgrind)       ac_valgrind_checking=1 ;;
673         *)      AC_MSG_ERROR(unknown check category $check) ;;
674         esac
675 done
676 IFS="$ac_save_IFS"
678 nocommon_flag=""
679 if test x$ac_checking != x ; then
680   AC_DEFINE(CHECKING_P, 1,
681 [Define to 0/1 if you want more run-time sanity checks.  This one gets a grab
682 bag of miscellaneous but relatively cheap checks.])
683   nocommon_flag=-fno-common
684 else
685   AC_DEFINE(CHECKING_P, 0)
687 AC_SUBST(nocommon_flag)
688 if test x$ac_extra_checking != x ; then
689   AC_DEFINE(ENABLE_EXTRA_CHECKING, 1,
690 [Define to 0/1 if you want extra run-time checking that might affect code
691 generation.])
692 else
693   AC_DEFINE(ENABLE_EXTRA_CHECKING, 0)
695 if test x$ac_df_checking != x ; then
696   AC_DEFINE(ENABLE_DF_CHECKING, 1,
697 [Define if you want more run-time sanity checks for dataflow.])
699 if test x$ac_assert_checking != x ; then
700   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
701 [Define if you want assertions enabled.  This is a cheap check.])
703 if test x$ac_gimple_checking != x ; then
704   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
705 [Define if you want operations on GIMPLE (the basic data structure of
706 the high-level optimizers) to be checked for dynamic type safety at
707 runtime.  This is moderately expensive.])
709 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
710 if test x$ac_runtime_checking != x ; then
711   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
712 [Define if you want runtime assertions enabled.  This is a cheap check.])
714 if test x$ac_tree_checking != x ; then
715   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
716 [Define if you want all operations on trees (the basic data
717    structure of the front ends) to be checked for dynamic type safety
718    at runtime.  This is moderately expensive.
719    ])
720   TREECHECKING=yes
722 if test x$ac_types_checking != x ; then
723   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
724 [Define if you want all gimple types to be verified after gimplifiation.
725    This is cheap.
726    ])
728 AC_SUBST(TREECHECKING)
729 if test x$ac_rtl_checking != x ; then
730   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
731 [Define if you want all operations on RTL (the basic data structure
732    of the optimizer and back end) to be checked for dynamic type safety
733    at runtime.  This is quite expensive.])
735 if test x$ac_rtlflag_checking != x ; then
736   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
737 [Define if you want RTL flag accesses to be checked against the RTL
738    codes that are supported for each access macro.  This is relatively
739    cheap.])
741 if test x$ac_gc_checking != x ; then
742   AC_DEFINE(ENABLE_GC_CHECKING, 1,
743 [Define if you want the garbage collector to do object poisoning and
744    other memory allocation checks.  This is quite expensive.])
746 if test x$ac_gc_always_collect != x ; then
747   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
748 [Define if you want the garbage collector to operate in maximally
749    paranoid mode, validating the entire heap and collecting garbage at
750    every opportunity.  This is extremely expensive.])
752 if test x$ac_fold_checking != x ; then
753   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
754 [Define if you want fold checked that it never destructs its argument.
755    This is quite expensive.])
757 valgrind_path_defines=
758 valgrind_command=
760 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
761 dnl # an if statement.  This was the source of very frustrating bugs
762 dnl # in converting to autoconf 2.5x!
763 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
765 # It is certainly possible that there's valgrind but no valgrind.h.
766 # GCC relies on making annotations so we must have both.
767 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
768 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
769   [[#include <valgrind/memcheck.h>
770 #ifndef VALGRIND_DISCARD
771 #error VALGRIND_DISCARD not defined
772 #endif]])],
773   [gcc_cv_header_valgrind_memcheck_h=yes],
774   [gcc_cv_header_valgrind_memcheck_h=no])
775 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
776 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
777 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
778   [[#include <memcheck.h>
779 #ifndef VALGRIND_DISCARD
780 #error VALGRIND_DISCARD not defined
781 #endif]])],
782   [gcc_cv_header_memcheck_h=yes],
783   [gcc_cv_header_memcheck_h=no])
784 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
785 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
786   AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
787         [Define if valgrind's valgrind/memcheck.h header is installed.])
789 if test $gcc_cv_header_memcheck_h = yes; then
790   AC_DEFINE(HAVE_MEMCHECK_H, 1,
791         [Define if valgrind's memcheck.h header is installed.])
794 if test x$ac_valgrind_checking != x ; then
795   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
796         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
797   if test "x$valgrind_path" = "x" \
798     || (test $have_valgrind_h = no \
799         && test $gcc_cv_header_memcheck_h = no \
800         && test $gcc_cv_header_valgrind_memcheck_h = no); then
801         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
802   fi
803   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
804   valgrind_command="$valgrind_path -q"
805   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
806 [Define if you want to run subprograms and generated programs
807    through valgrind (a memory checker).  This is extremely expensive.])
809 AC_SUBST(valgrind_path_defines)
810 AC_SUBST(valgrind_command)
812 # Enable code coverage collection
813 AC_ARG_ENABLE(coverage,
814 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
815                 [enable compiler's code coverage collection.
816                  Use to measure compiler performance and locate
817                  unused parts of the compiler. With LEVEL, specify
818                  optimization. Values are opt, noopt,
819                  default is noopt])],
820 [case "${enableval}" in
821   yes|noopt)
822     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0 -fkeep-static-functions"
823     ;;
824   opt)
825     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2 -fkeep-static-functions"
826     ;;
827   no)
828     # a.k.a. --disable-coverage
829     coverage_flags=""
830     ;;
831   *)
832     AC_MSG_ERROR(unknown coverage setting $enableval)
833     ;;
834 esac],
835 [coverage_flags=""])
836 AC_SUBST(coverage_flags)
838 AC_ARG_ENABLE(gather-detailed-mem-stats, 
839 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
840                 [enable detailed memory allocation stats gathering])], [],
841 [enable_gather_detailed_mem_stats=no])
842 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
843 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
844 [Define to enable detailed memory allocation stats gathering.])
846 AC_ARG_ENABLE(valgrind-annotations,
847 [AS_HELP_STRING([--enable-valgrind-annotations],
848                 [enable valgrind runtime interaction])], [],
849 [enable_valgrind_annotations=no])
850 if test x$enable_valgrind_annotations != xno \
851     || test x$ac_valgrind_checking != x; then
852   if (test $have_valgrind_h = no \
853       && test $gcc_cv_header_memcheck_h = no \
854       && test $gcc_cv_header_valgrind_memcheck_h = no); then
855     AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h])
856   fi
857   AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
858 [Define to get calls to the valgrind runtime enabled.])
861 # -------------------------------
862 # Miscenalleous configure options
863 # -------------------------------
865 # Determine whether or not multilibs are enabled.
866 AC_ARG_ENABLE(multilib,
867 [AS_HELP_STRING([--enable-multilib],
868                 [enable library support for multiple ABIs])],
869 [], [enable_multilib=yes])
870 AC_SUBST(enable_multilib)
872 # Determine whether or not multiarch is enabled.
873 AC_ARG_ENABLE(multiarch,
874 [AS_HELP_STRING([--enable-multiarch],
875                 [enable support for multiarch paths])],
876 [case "${enableval}" in
877 yes|no|auto) enable_multiarch=$enableval;;
878 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
879 esac], [enable_multiarch=auto])
880 if test x${enable_multiarch} = xauto; then
881   if test x${with_native_system_header_dir} != x; then
882     ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
883     enable_multiarch=no
884   fi
885   if test x$host != x$target && test "x$with_sysroot" = x; then
886     ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
887     enable_multiarch=no
888   fi
890 AC_MSG_CHECKING(for multiarch configuration)
891 AC_SUBST(enable_multiarch)
892 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
894 # needed for setting the multiarch name for soft-float/hard-float ABIs
895 AC_SUBST(with_cpu)
896 AC_SUBST(with_float)
898 # default stack clash protection guard size as power of twos in bytes.
899 # Please keep these in sync with params.def.
900 stk_clash_min=12
901 stk_clash_max=30
903 # Keep the default value when the option is not used to 0, this allows us to
904 # distinguish between the cases where the user specifially set a value via
905 # configure and when the normal default value is used.
906 AC_ARG_WITH(stack-clash-protection-guard-size,
907 [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
908 [Set the default stack clash protection guard size for specific targets as a power of two in bytes.])],
909 [DEFAULT_STK_CLASH_GUARD_SIZE="$with_stack_clash_protection_guard_size"], [DEFAULT_STK_CLASH_GUARD_SIZE=0])
910 if test $DEFAULT_STK_CLASH_GUARD_SIZE -ne 0 \
911      && (test $DEFAULT_STK_CLASH_GUARD_SIZE -lt $stk_clash_min \
912          || test $DEFAULT_STK_CLASH_GUARD_SIZE -gt $stk_clash_max); then
913   AC_MSG_ERROR(m4_normalize([
914                 Invalid value $DEFAULT_STK_CLASH_GUARD_SIZE for --with-stack-clash-protection-guard-size. \
915                 Must be between $stk_clash_min and $stk_clash_max.]))
918 AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
919         [Define to larger than zero set the default stack clash protector size.])
921 # Enable __cxa_atexit for C++.
922 AC_ARG_ENABLE(__cxa_atexit,
923 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
924 [], [])
926 # Enable C extension for decimal float if target supports it.
927 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
929 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
930 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
931 [Define to 1 to enable decimal float extension to C.])
933 # Use default_decimal_float for dependency.
934 enable_decimal_float=$default_decimal_float
936 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
937 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
938 [Define to 1 to specify that we are using the BID decimal floating
939 point format instead of DPD])
941 # Enable C extension for fixed-point arithmetic.
942 AC_ARG_ENABLE(fixed-point,
943 [AS_HELP_STRING([--enable-fixed-point],
944                 [enable fixed-point arithmetic extension to C])],
947   case $target in
948     arm*)
949       enable_fixed_point=yes
950       ;;
952     mips*-*-*)
953       enable_fixed_point=yes
954       ;;
955     loongarch*-*-*)
956       enable_fixed_point=yes
957       ;;
958     *)
959       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
960       enable_fixed_point=no
961       ;;
962   esac
964 AC_SUBST(enable_fixed_point)
966 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
967 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
968 [Define to 1 to enable fixed-point arithmetic extension to C.])
970 # Enable threads
971 # Pass with no value to take the default
972 # Pass with a value to specify a thread package
973 AC_ARG_ENABLE(threads,
974 [AS_HELP_STRING([[--enable-threads[=LIB]]],
975                 [enable thread usage for target GCC,
976                  using LIB thread package])],,
977 [enable_threads=''])
979 AC_ARG_ENABLE(tls,
980 [AS_HELP_STRING([--enable-tls],
981                 [enable or disable generation of tls code
982                  overriding the assembler check for tls support])],
984   case $enable_tls in
985     yes | no) ;;
986     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
987 Valid choices are 'yes' and 'no'.]) ;;
988   esac
989 ], [enable_tls=''])
991 AC_ARG_ENABLE(vtable-verify,
992 [AS_HELP_STRING([--enable-vtable-verify],
993                 [enable vtable verification feature])],,
994 [enable_vtable_verify=no])
995 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
996 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
997 [Define 0/1 if vtable verification feature is enabled.])
999 AC_ARG_ENABLE(analyzer,
1000 [AS_HELP_STRING([--disable-analyzer],
1001                 [disable -fanalyzer static analyzer])],
1002 if test x$enable_analyzer = xno; then
1003         analyzer=0
1004 else
1005         analyzer=1
1007 analyzer=1)
1008 AC_DEFINE_UNQUOTED(ENABLE_ANALYZER, $analyzer,
1009 [Define 0/1 if static analyzer feature is enabled.])
1011 AC_ARG_ENABLE(objc-gc,
1012 [AS_HELP_STRING([--enable-objc-gc],
1013                 [enable the use of Boehm's garbage collector with
1014                  the GNU Objective-C runtime])],
1015 if test x$enable_objc_gc = xno; then
1016         objc_boehm_gc=''
1017 else
1018         objc_boehm_gc=1
1020 objc_boehm_gc='')
1022 AC_ARG_WITH(dwarf2,
1023 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
1024 dwarf2="$with_dwarf2",
1025 dwarf2=no)
1027 AC_ARG_ENABLE(shared,
1028 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
1030   case $enable_shared in
1031   yes | no) ;;
1032   *)
1033     enable_shared=no
1034     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
1035     for pkg in $enableval; do
1036       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
1037         enable_shared=yes
1038       fi
1039     done
1040     IFS="$ac_save_ifs"
1041     ;;
1042   esac
1043 ], [enable_shared=yes])
1044 AC_SUBST(enable_shared)
1046 AC_ARG_ENABLE(gcov,
1047 [  --disable-gcov          don't provide libgcov and related host tools],
1048 [], [case $target in
1049        bpf-*-*)
1050          enable_gcov=no
1051        ;;
1052        *)
1053          enable_gcov=yes
1054        ;;
1055      esac])
1057 AC_SUBST(enable_gcov)
1059 AC_ARG_WITH(specs,
1060   [AS_HELP_STRING([--with-specs=SPECS],
1061                   [add SPECS to driver command-line processing])],
1062   [CONFIGURE_SPECS=$withval],
1063   [CONFIGURE_SPECS=]
1065 AC_SUBST(CONFIGURE_SPECS)
1067 ACX_PKGVERSION([GCC])
1068 ACX_BUGURL([http://sourceforge.net/tracker/?atid=100599&group_id=599&func=browse])
1070 # Allow overriding the default URL for documentation
1071 AC_ARG_WITH(documentation-root-url,
1072     AS_HELP_STRING([--with-documentation-root-url=URL],
1073                    [Root for documentation URLs]),
1074     [case "$withval" in
1075       yes) AC_MSG_ERROR([documentation root URL not specified]) ;;
1076       no)  AC_MSG_ERROR([documentation root URL not specified]) ;;
1077       */)  DOCUMENTATION_ROOT_URL="$withval" ;;
1078       *)   AC_MSG_ERROR([documentation root URL does not end with /]) ;;
1079      esac],
1080      DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/"
1082 AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL",
1083         [Define to the root for documentation URLs.])
1085 # Allow overriding the default URL for GCC changes
1086 AC_ARG_WITH(changes-root-url,
1087     AS_HELP_STRING([--with-changes-root-url=URL],
1088                    [Root for GCC changes URLs]),
1089     [case "$withval" in
1090       yes) AC_MSG_ERROR([changes root URL not specified]) ;;
1091       no)  AC_MSG_ERROR([changes root URL not specified]) ;;
1092       */)  CHANGES_ROOT_URL="$withval" ;;
1093       *)   AC_MSG_ERROR([changes root URL does not end with /]) ;;
1094      esac],
1095      CHANGES_ROOT_URL="https://gcc.gnu.org/"
1097 AC_DEFINE_UNQUOTED(CHANGES_ROOT_URL,"$CHANGES_ROOT_URL",
1098         [Define to the root for URLs about GCC changes.])
1100 # Sanity check enable_languages in case someone does not run the toplevel
1101 # configure # script.
1102 AC_ARG_ENABLE(languages,
1103 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
1104 [case ,${enable_languages}, in
1105        ,,|,yes,)
1106                 # go safe -- we cannot be much sure without the toplevel
1107                 # configure's
1108                 # analysis of which target libs are present and usable
1109                 enable_languages=c
1110                 ;;
1111          *,all,*)
1112                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
1113                 ;;
1114         *,c,*)
1115                 ;;
1116         *)
1117                 enable_languages=c,${enable_languages}
1118                 ;;
1119 esac],
1120 [enable_languages=c])
1122 # If top-level libada has been disabled, then wire in install-gnatlib
1123 # invocation with `make install', so that one can build and install
1124 # the library manually with `make -C gcc all gnatlib gnattools install'.
1125 if test x"$enable_libada" = xno; then
1126   gnat_install_lib=gnat-install-lib
1127 else
1128   gnat_install_lib=
1130 AC_SUBST(gnat_install_lib)
1132 if test x"$enable_as_accelerator_for" != x; then
1133   AC_DEFINE(ACCEL_COMPILER, 1,
1134     [Define if this compiler should be built as the offload target compiler.])
1135   enable_as_accelerator=yes
1136   case "${target}" in
1137     *-intelmicemul-*)
1138       # In this case we expect offload compiler to be built as native, so we
1139       # need to rename the driver to avoid clashes with host's drivers.
1140       program_transform_name="s&^&${target}-&" ;;
1141   esac
1142   sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
1143   program_transform_name=`echo $program_transform_name | sed $sedscript`
1144   accel_dir_suffix=/accel/${target_noncanonical}
1145   real_target_noncanonical=${enable_as_accelerator_for}
1147 AC_SUBST(enable_as_accelerator)
1148 AC_SUBST(real_target_noncanonical)
1149 AC_SUBST(accel_dir_suffix)
1151 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
1152   tgt=`echo $tgt | sed 's/=.*//'`
1154   enable_offloading=1
1155   case "$tgt" in
1156     *-intelmic-* | *-intelmicemul-*)
1157         omp_device_property=omp-device-properties-i386
1158         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
1159         ;;
1160     amdgcn*)
1161         omp_device_property=omp-device-properties-gcn
1162         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
1163         ;;
1164     nvptx*)
1165         omp_device_property=omp-device-properties-nvptx
1166         omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1167         ;;
1168     *)
1169         AC_MSG_ERROR([unknown offload target specified])
1170         ;;
1171   esac
1172   omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1173   omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1175   if test x"$offload_targets" = x; then
1176     offload_targets=$tgt
1177   else
1178     offload_targets="$offload_targets,$tgt"
1179   fi
1180 done
1181 AC_SUBST(omp_device_properties)
1182 AC_SUBST(omp_device_property_deps)
1184 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1185   [Define to offload targets, separated by commas.])
1186 if test x"$enable_offloading" != x; then
1187   AC_DEFINE(ENABLE_OFFLOADING, 1,
1188     [Define this to enable support for offloading.])
1189 else
1190   AC_DEFINE(ENABLE_OFFLOADING, 0,
1191     [Define this to enable support for offloading.])
1194 if test "x$enable_offload_defaulted" = xyes; then
1195   AC_DEFINE(OFFLOAD_DEFAULTED, 1,
1196     [Define to 1 to if -foffload is defaulted])
1199 AC_ARG_WITH(multilib-list,
1200 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, AVR, OR1K, RISC-V, SH and x86-64 only)])],
1202 with_multilib_list=default)
1204 AC_ARG_WITH(multilib-generator,
1205 [AS_HELP_STRING([--with-multilib-generator], [Multi-libs configuration string (RISC-V only)])],
1207 with_multilib_generator=default)
1209 # -------------------------
1210 # Checks for other programs
1211 # -------------------------
1213 AC_PROG_MAKE_SET
1215 # Find some useful tools
1216 AC_PROG_AWK
1217 # We need awk to create options.cc and options.h.
1218 # Bail out if it's missing.
1219 case ${AWK} in
1220   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1221 esac
1223 gcc_AC_PROG_LN_S
1224 ACX_PROG_LN($LN_S)
1225 AC_PROG_RANLIB
1226 ranlib_flags=""
1227 AC_SUBST(ranlib_flags)
1228      
1229 gcc_AC_PROG_INSTALL
1231 # See if cmp has --ignore-initial.
1232 gcc_AC_PROG_CMP_IGNORE_INITIAL
1234 # See if we have the mktemp command.
1235 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1237 # See if makeinfo has been installed and is modern enough
1238 # that we can use it.
1239 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1240   [GNU texinfo.* \([0-9][0-9.]*\)],
1241   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1242 if test $gcc_cv_prog_makeinfo_modern = no; then
1243   AC_MSG_WARN([
1244 *** Makeinfo is missing or too old.
1245 *** Info documentation will not be built.])
1246   BUILD_INFO=
1247 else
1248   BUILD_INFO=info
1250 AC_SUBST(BUILD_INFO)
1252 # Is pod2man recent enough to regenerate manpages?
1253 AC_MSG_CHECKING([for recent Pod::Man])
1254 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1255   AC_MSG_RESULT(yes)
1256   GENERATED_MANPAGES=generated-manpages
1257 else
1258   AC_MSG_RESULT(no)
1259   GENERATED_MANPAGES=
1261 AC_SUBST(GENERATED_MANPAGES)
1263 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1265 # How about lex?
1266 dnl Don't use AC_PROG_LEX; we insist on flex.
1267 dnl LEXLIB is not useful in gcc.
1268 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1270 # Bison?
1271 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1273 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1274 # check for build == host before using them.
1276 # NM
1277 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1278   && test -d ../binutils ; then
1279   NM='${objdir}/../binutils/nm-new'
1280 else
1281   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1284 # AR
1285 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1286   && test -d ../binutils ; then
1287   AR='${objdir}/../binutils/ar'
1288 else
1289   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1292 # The jit documentation looks better if built with sphinx, but can be
1293 # built with texinfo if sphinx is not available.
1294 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1295 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1297 # --------------------
1298 # Checks for C headers
1299 # --------------------
1301 # Need to reject headers which give warnings, so that the -Werror bootstrap
1302 # works later. *sigh*  This needs to come before all header checks.
1303 AC_PROG_CPP_WERROR
1305 AC_HEADER_STDC
1306 AC_HEADER_TIME
1307 ACX_HEADER_STRING
1308 AC_HEADER_SYS_WAIT
1309 AC_HEADER_TIOCGWINSZ
1310 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1311                  fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1312                  sys/resource.h sys/param.h sys/times.h sys/stat.h sys/locking.h \
1313                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1315 # Check for thread headers.
1316 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1317 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1319 # These tests can't be done till we know if we have limits.h.
1320 gcc_AC_C_CHAR_BIT
1321 AC_C_BIGENDIAN
1323 # ----------------------
1324 # Checks for C++ headers
1325 # ----------------------
1327 dnl Autoconf will give an error in the configure script if there is no
1328 dnl C++ preprocessor.  Hack to prevent that.
1329 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1330 AC_PROG_CXXCPP
1331 m4_popdef([AC_MSG_ERROR])[]dnl
1333 AC_CHECK_HEADERS(unordered_map)
1334 AC_CHECK_HEADERS(tr1/unordered_map)
1335 AC_CHECK_HEADERS(ext/hash_map)
1337 # --------
1338 # Dependency checking.
1339 # --------
1341 ZW_CREATE_DEPDIR
1342 AC_CONFIG_COMMANDS([gccdepdir],[
1343   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1344   for lang in $subdirs c-family common analyzer rtl-ssa
1345   do
1346       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1347   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1349 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1351 # --------
1352 # UNSORTED
1353 # --------
1356 # These libraries may be used by collect2.
1357 # We may need a special search path to get them linked.
1358 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1359 [save_LIBS="$LIBS"
1360 for libs in '' -lld -lmld \
1361                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1362                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1364         LIBS="$libs"
1365         AC_TRY_LINK_FUNC(ldopen,
1366                 [gcc_cv_collect2_libs="$libs"; break])
1367 done
1368 LIBS="$save_LIBS"
1369 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1370 case $gcc_cv_collect2_libs in
1371         "none required")        ;;
1372         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1373 esac
1374 AC_SUBST(COLLECT2_LIBS)
1376 # When building Ada code on Alpha, we need exc_resume which is usually in
1377 # -lexc.  So test for it.
1378 save_LIBS="$LIBS"
1379 LIBS=
1380 AC_SEARCH_LIBS(exc_resume, exc)
1381 GNAT_LIBEXC="$LIBS"
1382 LIBS="$save_LIBS"
1383 AC_SUBST(GNAT_LIBEXC)
1385 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1386 save_LIBS="$LIBS"
1387 LIBS=
1388 AC_SEARCH_LIBS(kstat_open, kstat)
1389 EXTRA_GCC_LIBS="$LIBS"
1390 LIBS="$save_LIBS"
1391 AC_SUBST(EXTRA_GCC_LIBS)
1393 # Solaris needs libsocket and libnsl for socket functions before 11.4.
1394 # C++ needs those for libcody.
1395 save_LIBS="$LIBS"
1396 LIBS=
1397 AX_LIB_SOCKET_NSL
1398 NETLIBS="$LIBS"
1399 LIBS="$save_LIBS"
1400 AC_SUBST(NETLIBS)
1402 # Some systems put ldexp and frexp in libm instead of libc; assume
1403 # they're both in the same place.  jcf-dump needs them.
1404 save_LIBS="$LIBS"
1405 LIBS=
1406 AC_SEARCH_LIBS(ldexp, m)
1407 LDEXP_LIB="$LIBS"
1408 LIBS="$save_LIBS"
1409 AC_SUBST(LDEXP_LIB)
1411 # Some systems need dlopen
1412 save_LIBS="$LIBS"
1413 LIBS=
1414 AC_SEARCH_LIBS(dlopen, dl)
1415 DL_LIB="$LIBS"
1416 LIBS="$save_LIBS"
1417 AC_SUBST(DL_LIB)
1419 # Use <inttypes.h> only if it exists,
1420 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1421 # PRId64
1422 AC_MSG_CHECKING(for inttypes.h)
1423 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1424 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1425 [[#define __STDC_FORMAT_MACROS
1426 #include <sys/types.h>
1427 #include <inttypes.h>]],
1428   [[intmax_t i = -1;
1429 #ifndef PRId64
1430 choke me
1431 #endif]])],
1432   [gcc_cv_header_inttypes_h=yes],
1433   [gcc_cv_header_inttypes_h=no])])
1434 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1435 if test $gcc_cv_header_inttypes_h = yes; then
1436   AC_DEFINE(HAVE_INTTYPES_H, 1,
1437         [Define if you have a working <inttypes.h> header file.])
1440 # Look for the ZSTD package.
1441 ZSTD_INCLUDE=
1442 ZSTD_LIB=
1443 AC_SUBST(ZSTD_INCLUDE)
1444 AC_SUBST(ZSTD_LIB)
1445 ZSTD_CPPFLAGS=
1446 ZSTD_LDFLAGS=
1447 AC_SUBST(ZSTD_CPPFLAGS)
1448 AC_SUBST(ZSTD_LDFLAGS)
1449 AC_ARG_WITH(zstd,
1450         [AS_HELP_STRING([--with-zstd=PATH],
1451                 [specify prefix directory for installed zstd library.
1452                  Equivalent to --with-zstd-include=PATH/include
1453                  plus --with-zstd-lib=PATH/lib])])
1454 AC_ARG_WITH(zstd-include,
1455         [AS_HELP_STRING([--with-zstd-include=PATH],
1456                 [specify directory for installed zstd include files])])
1457 AC_ARG_WITH(zstd-lib,
1458         [AS_HELP_STRING([--with-zstd-lib=PATH],
1459                 [specify directory for the installed zstd library])])
1460 case "x$with_zstd" in
1461   x) ;;
1462   xno)
1463     ZSTD_INCLUDE=
1464     ZSTD_LIB=
1465     ;;
1466   *) ZSTD_INCLUDE=$with_zstd/include
1467      ZSTD_LIB=$with_zstd/lib
1468      ;;
1469 esac
1471 if test "x$with_zstd" != xno; then
1472 if test "x$with_zstd_include" != x; then
1473   ZSTD_INCLUDE=$with_zstd_include
1475 if test "x$with_zstd_lib" != x; then
1476   ZSTD_LIB=$with_zstd_lib
1478 if test "x$ZSTD_INCLUDE" != x \
1479    && test "x$ZSTD_INCLUDE" != xno; then
1480   ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1482 if test "x$ZSTD_LIB" != x \
1483    && test "x$ZSTD_LIB" != xno; then
1484   ZSTD_LDFLAGS=-L$ZSTD_LIB
1487 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1488 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1490 AC_MSG_CHECKING(for zstd.h)
1491 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1492 # We require version 1.3.0 or later.  This is the first version that has
1493 # ZSTD_getFrameContentSize.
1494 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1495 [[#include <zstd.h>
1496 #if ZSTD_VERSION_NUMBER < 10300
1497 #error "need zstd 1.3.0 or better"
1498 #endif]])],
1499   [gcc_cv_header_zstd_h=yes],
1500   [gcc_cv_header_zstd_h=no])])
1501 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1502 if test $gcc_cv_header_zstd_h = yes; then
1503   AC_DEFINE(HAVE_ZSTD_H, 1,
1504         [Define if you have a working <zstd.h> header file.])
1505 elif test "x$with_zstd" != x; then
1506     as_fn_error $? "Unable to find zstd.h.  See config.log for details." "$LINENO" 5
1509 # LTO can use zstd compression algorithm
1510 save_LIBS="$LIBS"
1511 LIBS=
1512 AC_SEARCH_LIBS(ZSTD_compress, zstd)
1513 ZSTD_LIB="$LIBS"
1514 LIBS="$save_LIBS"
1515 AC_SUBST(ZSTD_LIB)
1518 dnl Disabled until we have a complete test for buggy enum bitfields.
1519 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1521 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1522   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1523   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1524   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1525   putchar_unlocked putc_unlocked)
1526 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1527         popen sysconf strsignal getrusage nl_langinfo \
1528         gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
1529         gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat)
1531 if test x$ac_cv_func_mbstowcs = xyes; then
1532   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1533 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1534 int main()
1536   mbstowcs(0, "", 0);
1537   return 0;
1538 }]])],
1539     [gcc_cv_func_mbstowcs_works=yes],
1540     [gcc_cv_func_mbstowcs_works=no],
1541     [gcc_cv_func_mbstowcs_works=yes])])
1542   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1543     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1544   [Define this macro if mbstowcs does not crash when its
1545    first argument is NULL.])
1546   fi
1549 AC_CHECK_TYPE(ssize_t, int)
1550 AC_CHECK_TYPE(caddr_t, char *)
1551 AC_CHECK_TYPE(sighander_t,
1552   AC_DEFINE(HAVE_SIGHANDLER_T, 1,
1553     [Define if <sys/signal.h> defines sighandler_t]),
1554     ,signal.h)
1556 GCC_AC_FUNC_MMAP_BLACKLIST
1558 case "${host}" in
1559 *-*-*vms*)
1560   # Under VMS, vfork works very differently than on Unix. The standard test 
1561   # won't work, and it isn't easily adaptable. It makes more sense to
1562   # just force it.
1563   ac_cv_func_vfork_works=yes
1564   ;;
1565 esac
1566 AC_FUNC_FORK
1568 AM_ICONV
1570 # Until we have in-tree GNU iconv:
1571 LIBICONV_DEP=
1572 if test -f "$LTLIBICONV"; then
1573   LIBICONV_DEP=$LTLIBICONV
1575 AC_SUBST(LIBICONV_DEP)
1577 AM_LC_MESSAGES
1579 AM_LANGINFO_CODESET
1581 # We will need to find libiberty.h and ansidecl.h
1582 saved_CFLAGS="$CFLAGS"
1583 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC -I${top_srcdir}/../../sdbinutils/include"
1584 saved_CXXFLAGS="$CXXFLAGS"
1585 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC -I${srcdir}/../../sdbinutils/include"
1587 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1588 # normal autoconf function for these.  But force definition of
1589 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1590 # basename handling in libiberty.h.
1591 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1592 #undef HAVE_DECL_BASENAME
1593 #define HAVE_DECL_BASENAME 1
1594 #include "ansidecl.h"
1595 #include "system.h"])
1597 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1598         madvise stpcpy strnlen strsignal strverscmp \
1599         strtol strtoul strtoll strtoull setenv unsetenv \
1600         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1601         free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1602 #include "ansidecl.h"
1603 #include "system.h"])
1605 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1606 #include "ansidecl.h"
1607 #include "system.h"
1608 #ifdef HAVE_SYS_RESOURCE_H
1609 #include <sys/resource.h>
1610 #endif
1613 gcc_AC_CHECK_DECLS(mallinfo mallinfo2, , ,[
1614 #include "ansidecl.h"
1615 #include "system.h"
1616 #ifdef HAVE_MALLOC_H
1617 #include <malloc.h>
1618 #endif
1621 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1622 #include "ansidecl.h"
1623 #include "system.h"
1624 #ifdef HAVE_SYS_RESOURCE_H
1625 #include <sys/resource.h>
1626 #endif
1627 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1628 [Define to `long' if <sys/resource.h> doesn't define.])])
1630 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1631 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1632 # in collect2.cc, <fcntl.h> isn't visible, but the configure test below needs
1633 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1634 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1635 #include "ansidecl.h"
1636 #include "system.h"
1637 #ifdef HAVE_LDFCN_H
1638 #undef FREAD
1639 #undef FWRITE
1640 #include <ldfcn.h>
1641 #endif
1644 gcc_AC_CHECK_DECLS(times, , ,[
1645 #include "ansidecl.h"
1646 #include "system.h"
1647 #ifdef HAVE_SYS_TIMES_H
1648 #include <sys/times.h>
1649 #endif
1652 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1653 #include "ansidecl.h"
1654 #include "system.h"
1655 #include <signal.h>
1658 # More time-related stuff.
1659 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1660 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1661 #include "ansidecl.h"
1662 #include "system.h"
1663 #ifdef HAVE_SYS_TIMES_H
1664 #include <sys/times.h>
1665 #endif
1666 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1667 if test $ac_cv_struct_tms = yes; then
1668   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1669   [Define if <sys/times.h> defines struct tms.])
1672 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1673 # revisit after autoconf 2.50.
1674 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1675 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1676 #include "ansidecl.h"
1677 #include "system.h"
1678 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1679 if test $gcc_cv_type_clock_t = yes; then
1680   AC_DEFINE(HAVE_CLOCK_T, 1,
1681   [Define if <time.h> defines clock_t.])
1684 # Check if F_SETLKW is supported by fcntl.
1685 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1686 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1687 #include <fcntl.h>]], [[
1688 struct flock fl;
1689 fl.l_whence = 0;
1690 fl.l_start = 0;
1691 fl.l_len = 0;
1692 fl.l_pid = 0;
1693 return fcntl (1, F_SETLKW, &fl);]])],
1694 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1695 if test $ac_cv_f_setlkw = yes; then
1696   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1697   [Define if F_SETLKW supported by fcntl.])
1700 # Check if O_CLOEXEC is defined by fcntl
1701 AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
1702 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1703 #include <fcntl.h>]], [[
1704 return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
1705 [ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
1706 if test $ac_cv_o_cloexec = yes; then
1707   AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
1708   [Define if O_CLOEXEC supported by fcntl.])
1711 # C++ Modules would like some networking features to provide the mapping
1712 # server.  You can still use modules without them though.
1713 # The following network-related checks could probably do with some
1714 # Windows and other non-linux defenses and checking.
1716 # Local socket connectivity wants AF_UNIX networking
1717 # Check for AF_UNIX networking
1718 AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
1719 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1720 #include <sys/types.h>
1721 #include <sys/socket.h>
1722 #include <sys/un.h>
1723 #include <netinet/in.h>]],[[
1724 sockaddr_un un;
1725 un.sun_family = AF_UNSPEC;
1726 int fd = socket (AF_UNIX, SOCK_STREAM, 0);
1727 connect (fd, (sockaddr *)&un, sizeof (un));]])],
1728 [ac_cv_af_unix=yes],
1729 [ac_cv_af_unix=no])])
1730 if test $ac_cv_af_unix = yes; then
1731   AC_DEFINE(HAVE_AF_UNIX, 1,
1732   [Define if AF_UNIX supported.])
1735 # Remote socket connectivity wants AF_INET6 networking
1736 # Check for AF_INET6 networking
1737 AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
1738 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1739 #include <sys/types.h>
1740 #include <sys/socket.h>
1741 #include <netinet/in.h>
1742 #include <netdb.h>]],[[
1743 sockaddr_in6 in6;
1744 in6.sin6_family = AF_UNSPEC;
1745 struct addrinfo *addrs = 0;
1746 struct addrinfo hints;
1747 hints.ai_flags = 0;
1748 hints.ai_family = AF_INET6;
1749 hints.ai_socktype = SOCK_STREAM;
1750 hints.ai_protocol = 0;
1751 hints.ai_canonname = 0;
1752 hints.ai_addr = 0;
1753 hints.ai_next = 0;
1754 int e = getaddrinfo ("localhost", 0, &hints, &addrs);
1755 const char *str = gai_strerror (e);
1756 freeaddrinfo (addrs);
1757 int fd = socket (AF_INET6, SOCK_STREAM, 0);
1758 connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
1759 [ac_cv_af_inet6=yes],
1760 [ac_cv_af_inet6=no])])
1761 if test $ac_cv_af_inet6 = yes; then
1762   AC_DEFINE(HAVE_AF_INET6, 1,
1763   [Define if AF_INET6 supported.])
1766 # Check if _LK_LOCK is supported by _locking
1767 AC_CACHE_CHECK(for _LK_LOCK, ac_cv_lk_lock, [
1768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1769 #include <io.h>
1770 #include <sys/locking.h>]], [[
1771   int fd;
1772   return _locking (fd, _LK_LOCK, 0);]])],
1773 [ac_cv_lk_lock=yes],[ac_cv_lk_lock=no])])
1774 if test $ac_cv_lk_lock = yes; then
1775   AC_DEFINE(HOST_HAS_LK_LOCK, 1,
1776   [Define if _LK_LOC supported by _locking.])
1779 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1780 CFLAGS="$saved_CFLAGS"
1781 CXXFLAGS="$saved_CXXFLAGS"
1783 # mkdir takes a single argument on some systems. 
1784 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1786 # File extensions
1787 manext='.1'
1788 objext='.o'
1789 AC_SUBST(manext)
1790 AC_SUBST(objext)
1792 # With Setjmp/Longjmp based exception handling.
1793 AC_ARG_ENABLE(sjlj-exceptions,
1794 [AS_HELP_STRING([--enable-sjlj-exceptions],
1795                 [arrange to use setjmp/longjmp exception handling])],
1796 [case $target in
1797   *-*-hpux10*)
1798     if test $enableval != yes; then
1799       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1800       enableval=yes
1801     fi
1802     ;;
1803 esac
1804 force_sjlj_exceptions=yes],
1805 [case $target in
1806   *-*-hpux10*)
1807     force_sjlj_exceptions=yes
1808     enableval=yes
1809     ;;
1810   lm32*-*-*)
1811      force_sjlj_exceptions=yes
1812      enableval=yes
1813      ;;
1814   *)
1815     force_sjlj_exceptions=no
1816     ;;
1817 esac])
1818 if test $force_sjlj_exceptions = yes; then
1819   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1820   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1821     [Define 0/1 to force the choice for exception handling model.])
1824 # --------------------------------------------------------
1825 # Build, host, and target specific configuration fragments
1826 # --------------------------------------------------------
1828 # Collect build-machine-specific information.
1829 . ${srcdir}/config.build || exit 1
1831 # Collect host-machine-specific information.
1832 . ${srcdir}/config.host || exit 1
1834 target_gtfiles=
1836 # Collect target-machine-specific information.
1837 . ${srcdir}/config.gcc || exit 1
1839 extra_objs="${host_extra_objs} ${extra_objs}"
1840 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1842 # Default the target-machine variables that were not explicitly set.
1843 if test x"$tm_file" = x
1844 then tm_file=$cpu_type/$cpu_type.h; fi
1846 if test x"$extra_headers" = x
1847 then extra_headers=; fi
1849 if test x$md_file = x
1850 then md_file=$cpu_type/$cpu_type.md; fi
1852 if test x$out_file = x
1853 then out_file=$cpu_type/$cpu_type.cc; fi
1855 if test x"$tmake_file" = x
1856 then tmake_file=$cpu_type/t-$cpu_type
1859 # Support --enable-initfini-array.
1860 if test x$enable_initfini_array != xno; then
1861   tm_file="${tm_file} initfini-array.h"
1864 if test x"$dwarf2" = xyes
1865 then tm_file="$tm_file tm-dwarf2.h"
1868 # Say what files are being used for the output code and MD file.
1869 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1870 echo "Using \`$srcdir/config/$md_file' as machine description file."
1872 # If any of the xm_file variables contain nonexistent files, warn
1873 # about them and drop them.
1876 for x in $build_xm_file; do
1877   if    test -f $srcdir/config/$x
1878   then      bx="$bx $x"
1879   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1880   fi
1881 done
1882 build_xm_file="$bx"
1885 for x in $host_xm_file; do
1886   if    test -f $srcdir/config/$x
1887   then      hx="$hx $x"
1888   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1889   fi
1890 done
1891 host_xm_file="$hx"
1894 for x in $xm_file; do
1895   if    test -f $srcdir/config/$x
1896   then      tx="$tx $x"
1897   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1898   fi
1899 done
1900 xm_file="$tx"
1902 count=a
1903 for f in $tm_file; do
1904         count=${count}x
1905 done
1906 if test $count = ax; then
1907         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1908 else
1909         echo "Using the following target machine macro files:"
1910         for f in $tm_file; do
1911                 echo "  $srcdir/config/$f"
1912         done
1915 if test x$use_long_long_for_widest_fast_int = xyes; then
1916         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1917 [Define to 1 if the 'long long' type is wider than 'long' but still
1918 efficiently supported by the host hardware.])
1921 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1922 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1924 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1925 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1927 count=a
1928 for f in $host_xm_file; do
1929         count=${count}x
1930 done
1931 if test $count = a; then
1932         :
1933 elif test $count = ax; then
1934         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1935 else
1936         echo "Using the following host machine macro files:"
1937         for f in $host_xm_file; do
1938                 echo "  $srcdir/config/$f"
1939         done
1941 echo "Using ${out_host_hook_obj} for host machine hooks."
1943 if test "$host_xm_file" != "$build_xm_file"; then
1944         count=a
1945         for f in $build_xm_file; do
1946                 count=${count}x
1947         done
1948         if test $count = a; then
1949                 :
1950         elif test $count = ax; then
1951                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1952         else
1953                 echo "Using the following build machine macro files:"
1954                 for f in $build_xm_file; do
1955                         echo "  $srcdir/config/$f"
1956                 done
1957         fi
1960 if test -n "$configured_native_system_header_dir"; then
1961   native_system_header_dir=$configured_native_system_header_dir
1963 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1964 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1966 case ${host} in
1967   powerpc*-*-darwin*)
1968     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1969       gcc_cv_mcontext_underscores,
1970       AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1971 #include <sys/cdefs.h>
1972 #include <sys/signal.h>
1973 #include <ucontext.h>
1974 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1975 ])],
1976         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1977       if test $gcc_cv_mcontext_underscores = yes; then
1978         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1979           [mcontext_t fields start with __])
1980       fi
1981     ;;
1982 esac
1984 # ---------
1985 # Threading
1986 # ---------
1988 # Check if a valid thread package
1989 case ${enable_threads} in
1990   "" | no)
1991     # No threads
1992     target_thread_file='single'
1993     ;;
1994   yes)
1995     # default
1996     target_thread_file='single'
1997     ;;
1998   aix | dce | lynx | mipssde | posix | rtems | \
1999   single | tpf | vxworks | win32)
2000     target_thread_file=${enable_threads}
2001     ;;
2002   *)
2003     echo "${enable_threads} is an unknown thread package" 1>&2
2004     exit 1
2005     ;;
2006 esac
2008 if test x${thread_file} = x; then
2009   # No thread file set by target-specific clauses in config.gcc,
2010   # so use file chosen by default logic above
2011   thread_file=${target_thread_file}
2014 # --------
2015 # UNSORTED
2016 # --------
2018 use_cxa_atexit=no
2019 if test x$enable___cxa_atexit = xyes || \
2020    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
2021   if test x$host = x$target; then
2022     case $host in
2023       # mingw32 doesn't have __cxa_atexit but uses atexit registration
2024       # keyed to flag_use_cxa_atexit
2025       *-*-mingw32*)
2026         use_cxa_atexit=yes
2027         ;;
2028       powerpc-ibm-aix*)
2029         use_cxa_atexit=yes
2030         ;;
2031       *)
2032         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
2033           [echo "__cxa_atexit can't be enabled on this target"])
2034         ;;
2035     esac
2036   else
2037     # We can't check for __cxa_atexit when building a cross, so assume
2038     # it is available 
2039     use_cxa_atexit=yes
2040   fi
2041   if test x$use_cxa_atexit = xyes; then
2042     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
2043       [Define if you want to use __cxa_atexit, rather than atexit, to
2044       register C++ destructors for local statics and global objects.
2045       This is essential for fully standards-compliant handling of
2046       destructors, but requires __cxa_atexit in libc.])
2047   fi
2050 # Look for a file containing extra machine modes.
2051 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
2052   extra_modes_file='$(srcdir)'/config/${extra_modes}
2053   AC_SUBST(extra_modes_file)
2054   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
2055   [Define to the name of a file containing a list of extra machine modes
2056    for this architecture.])
2059 # Convert extra_options into a form suitable for Makefile use.
2060 extra_opt_files=
2061 all_opt_files=
2062 for f in $extra_options; do
2063   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
2064   all_opt_files="$all_opt_files $srcdir/config/$f"
2065 done
2066 AC_SUBST(extra_opt_files)
2068 # auto-host.h is the file containing items generated by autoconf and is
2069 # the first file included by config.h.
2070 # If host=build, it is correct to have bconfig include auto-host.h
2071 # as well.  If host!=build, we are in error and need to do more 
2072 # work to find out the build config parameters.
2073 if test x$host = x$build
2074 then
2075         build_auto=auto-host.h
2076         HAVE_AUTO_BUILD='# '
2077 else
2078         # We create a subdir, then run autoconf in the subdir.
2079         # To prevent recursion we set host and build for the new
2080         # invocation of configure to the build for this invocation
2081         # of configure. 
2082         tempdir=build.$$
2083         rm -rf $tempdir
2084         mkdir $tempdir
2085         cd $tempdir
2086         case ${srcdir} in
2087         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
2088         *) realsrcdir=../${srcdir};;
2089         esac
2090         # Clearing GMPINC is necessary to prevent host headers being
2091         # used by the build compiler.  Defining GENERATOR_FILE stops
2092         # system.h from including gmp.h.
2093         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
2094         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
2095         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
2096         GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
2097         ${realsrcdir}/configure \
2098                 --enable-languages=${enable_languages-all} \
2099                 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
2100                 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
2101                 --target=$target_alias --host=$build_alias \
2102                 --build=$build_alias || exit # retaining $tempdir
2104         # We just finished tests for the build machine, so rename
2105         # the file auto-build.h in the gcc directory.
2106         mv auto-host.h ../auto-build.h
2107         cd ..
2108         rm -rf $tempdir
2109         build_auto=auto-build.h
2110         HAVE_AUTO_BUILD=
2112 AC_SUBST(build_subdir)
2113 AC_SUBST(HAVE_AUTO_BUILD)
2115 tm_file="${tm_file} defaults.h"
2116 tm_p_file="${tm_p_file} tm-preds.h"
2117 tm_d_file="${tm_d_file} defaults.h"
2118 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
2119 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
2120 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
2121 # put this back in temporarily.
2122 xm_file="auto-host.h ansidecl.h ${xm_file}"
2124 # --------
2125 # UNSORTED
2126 # --------
2128 changequote(,)dnl
2129 # Compile in configure arguments.
2130 if test -f configargs.h ; then
2131         # Being re-configured.
2132         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
2133         gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
2134         if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
2135                 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
2136         fi
2137 else
2138         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
2141 # Double all backslashes and backslash all quotes to turn
2142 # gcc_config_arguments into a C string.
2143 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
2144 $gcc_config_arguments
2146 gcc_config_arguments_str=`cat conftest.out`
2147 rm -f conftest.out
2149 cat > configargs.h <<EOF
2150 /* Generated automatically. */
2151 static const char configuration_arguments[] = "$gcc_config_arguments_str";
2152 static const char thread_model[] = "$thread_file";
2154 static const struct {
2155   const char *name, *value;
2156 } configure_default_options[] = $configure_default_options;
2158 changequote([,])dnl
2160 changequote(,)dnl
2161 gcc_BASEVER=`cat $srcdir/BASE-VER`
2162 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
2163 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
2164 if test -f $srcdir/REVISION ; then
2165         gcc_REVISION=`cat $srcdir/REVISION`
2166 else
2167         gcc_REVISION=""
2169 cat > plugin-version.h <<EOF
2170 #include "configargs.h"
2172 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
2173 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
2174 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
2175 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
2177 static char basever[] = "$gcc_BASEVER";
2178 static char datestamp[] = "$gcc_DATESTAMP";
2179 static char devphase[] = "$gcc_DEVPHASE";
2180 static char revision[] = "$gcc_REVISION";
2182 /* FIXME plugins: We should make the version information more precise.
2183    One way to do is to add a checksum. */
2185 static struct plugin_gcc_version gcc_version = {basever, datestamp,
2186                                                 devphase, revision,
2187                                                 configuration_arguments};
2189 changequote([,])dnl
2191 # Determine what GCC version number to use in filesystem paths.
2192 GCC_BASE_VER
2194 # Internationalization
2195 ZW_GNU_GETTEXT_SISTER_DIR
2197 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
2198 # -liconv on the link line twice.
2199 case "$LIBINTL" in *$LIBICONV*)
2200         LIBICONV= ;;
2201 esac
2203 AC_ARG_ENABLE(secureplt,
2204 [AS_HELP_STRING([--enable-secureplt],
2205                 [enable -msecure-plt by default for PowerPC])],
2206 [], [])
2208 AC_ARG_ENABLE(mingw-wildcard,
2209 [AS_HELP_STRING([--enable-mingw-wildcard],
2210                 [Set whether to expand wildcard on command-line.
2211                  Default to platform configuration])],
2212 [],[enable_mingw_wildcard=platform])
2213 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
2214       [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
2215                  $(test x"$enable_mingw_wildcard" = xno; echo $?),
2216                  [Value to set mingw's _dowildcard to.])])
2218 AC_ARG_ENABLE(large-address-aware,
2219 [AS_HELP_STRING([--enable-large-address-aware],
2220                 [Link mingw executables with --large-address-aware])])
2221 AS_IF([test x"$enable_large_address_aware" = xyes],
2222   [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
2223     [Define if we should link mingw executables with --large-address-aware])])
2225 AC_ARG_ENABLE(leading-mingw64-underscores,
2226   AS_HELP_STRING([--enable-leading-mingw64-underscores],
2227                  [enable leading underscores on 64 bit mingw targets]),
2228   [],[])
2229 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
2230   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
2231     [Define if we should use leading underscore on 64 bit mingw targets])])
2233 AC_ARG_ENABLE(cld,
2234 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2235 [enable_cld=no])
2237 AC_ARG_ENABLE(frame-pointer,
2238 [AS_HELP_STRING([--enable-frame-pointer],
2239                 [enable -fno-omit-frame-pointer by default for x86])], [],
2241 case $target_os in
2242 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2243   # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2244   enable_frame_pointer=no
2245   ;;
2247   enable_frame_pointer=yes
2248   ;;
2249 esac
2252 case $target in
2253 i[[34567]]86-*-* | x86_64-*-*)
2254         if test "x$enable_cld" = xyes; then
2255                 tm_defines="${tm_defines} USE_IX86_CLD=1"
2256         fi
2257         if test "x$enable_frame_pointer" = xyes; then
2258                 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2259         fi
2260         ;;
2261 esac
2263 # Windows32 Registry support for specifying GCC installation paths.
2264 AC_ARG_ENABLE(win32-registry,
2265 [AS_HELP_STRING([--disable-win32-registry],
2266                 [disable lookup of installation paths in the
2267                  Registry on Windows hosts])
2268 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2269 AS_HELP_STRING([--enable-win32-registry=KEY],
2270                [use KEY instead of GCC version as the last portion
2271                 of the registry key])],,)
2273 case $host_os in
2274   win32 | pe | cygwin* | mingw32*)
2275     if test "x$enable_win32_registry" != xno; then
2276       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2277     fi
2279     if test "x$enable_win32_registry" != xno; then
2280       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2281   [Define to 1 if installation paths should be looked up in the Windows
2282    Registry. Ignored on non-Windows hosts.])
2284       if test "x$enable_win32_registry" != xyes \
2285          && test "x$enable_win32_registry" != x; then
2286         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2287   [Define to be the last component of the Windows registry key under which
2288    to look for installation paths.  The full key used will be 
2289    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2290    The default is the GCC version number.])
2291       fi
2292     fi
2293   ;;
2294 esac
2296 # Get an absolute path to the GCC top-level source directory
2297 holddir=`${PWDCMD-pwd}`
2298 cd $srcdir
2299 topdir=`${PWDCMD-pwd}`
2300 cd $holddir
2302 # Conditionalize the makefile for this host machine.
2303 xmake_file=
2304 for f in ${host_xmake_file}
2306         if test -f ${srcdir}/config/$f
2307         then
2308                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2309         fi
2310 done
2312 # Conditionalize the makefile for this target machine.
2313 tmake_file_=
2314 for f in ${tmake_file}
2316         if test -f ${srcdir}/config/$f
2317         then
2318                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2319         fi
2320 done
2321 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2323 out_object_file=`basename $out_file .cc`.o
2324 common_out_file=default-common.cc
2325 common_out_object_file=`basename $common_out_file .cc`.o
2327 tm_file_list="options.h"
2328 tm_include_list="options.h insn-constants.h"
2329 for f in $tm_file; do
2330   case $f in
2331     ./* )
2332        f=`echo $f | sed 's/^..//'`
2333        tm_file_list="${tm_file_list} $f"
2334        tm_include_list="${tm_include_list} $f"
2335        ;;
2336     defaults.h )
2337        tm_file_list="${tm_file_list} \$(srcdir)/$f"
2338        tm_include_list="${tm_include_list} $f"
2339        ;;
2340     * )
2341        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2342        tm_include_list="${tm_include_list} config/$f"
2343        ;;
2344   esac
2345 done
2347 tm_p_file_list=
2348 tm_p_include_list=
2349 for f in $tm_p_file; do
2350   case $f in
2351     tm-preds.h )
2352        tm_p_file_list="${tm_p_file_list} $f"
2353        tm_p_include_list="${tm_p_include_list} $f"
2354        ;;
2355     * )
2356        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2357        tm_p_include_list="${tm_p_include_list} config/$f"
2358   esac
2359 done
2361 tm_d_file_list=
2362 tm_d_include_list="options.h insn-constants.h"
2363 for f in $tm_d_file; do
2364   case $f in
2365     defaults.h )
2366        tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
2367        tm_d_include_list="${tm_d_include_list} $f"
2368        ;;
2369     * )
2370        tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2371        tm_d_include_list="${tm_d_include_list} config/$f"
2372        ;;
2373   esac
2374 done
2376 xm_file_list=
2377 xm_include_list=
2378 for f in $xm_file; do
2379   case $f in
2380     ansidecl.h )
2381        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2382        xm_include_list="${xm_include_list} $f"
2383        ;;
2384     auto-host.h )
2385        xm_file_list="${xm_file_list} $f"
2386        xm_include_list="${xm_include_list} $f"
2387        ;;
2388     * )
2389        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2390        xm_include_list="${xm_include_list} config/$f"
2391        ;;
2392   esac
2393 done
2395 host_xm_file_list=
2396 host_xm_include_list=
2397 for f in $host_xm_file; do
2398   case $f in
2399     ansidecl.h )
2400        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2401        host_xm_include_list="${host_xm_include_list} $f"
2402        ;;
2403     auto-host.h )
2404        host_xm_file_list="${host_xm_file_list} $f"
2405        host_xm_include_list="${host_xm_include_list} $f"
2406        ;;
2407     * )
2408        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2409        host_xm_include_list="${host_xm_include_list} config/$f"
2410        ;;
2411   esac
2412 done
2414 build_xm_file_list=
2415 for f in $build_xm_file; do
2416   case $f in
2417     ansidecl.h )
2418        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2419        build_xm_include_list="${build_xm_include_list} $f"
2420        ;;
2421     auto-build.h | auto-host.h )
2422        build_xm_file_list="${build_xm_file_list} $f"
2423        build_xm_include_list="${build_xm_include_list} $f"
2424        ;;
2425     * )
2426        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2427        build_xm_include_list="${build_xm_include_list} config/$f"
2428        ;;
2429   esac
2430 done
2432 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2433 # cross-compiler which does not use the native headers and libraries.
2434 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2435 CROSS=                                          AC_SUBST(CROSS)
2436 ALL=all.internal                                AC_SUBST(ALL)
2437 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2438 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR      AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2440 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2441    test x$build != x$host || test "x$with_build_sysroot" != x; then
2442   if test "x$with_build_sysroot" != x; then
2443     BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2444   else
2445     BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2446   fi
2448   if test x$host != x$target
2449   then
2450     CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2451     ALL=all.cross
2452     SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2453   elif test "x$TARGET_SYSTEM_ROOT" != x; then
2454     SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2455   fi
2457   if test "x$with_build_sysroot" != "x"; then
2458     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2459   elif test "x$with_sysroot" = x; then
2460     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2461   elif test "x$with_sysroot" = xyes; then
2462     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2463   else
2464     target_header_dir="${with_sysroot}${native_system_header_dir}"
2465   fi
2466 else
2467   target_header_dir=${native_system_header_dir}
2470 # If this is a cross-compiler that does not
2471 # have its own set of headers then define
2472 # inhibit_libc
2474 # If this is using newlib, without having the headers available now,
2475 # then define inhibit_libc in LIBGCC2_CFLAGS.
2476 # This prevents libgcc2 from containing any code which requires libc
2477 # support.
2478 : ${inhibit_libc=false}
2479 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2480        test x$with_newlib = xyes ; } &&
2481      { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2482        inhibit_libc=true
2484 AC_SUBST(inhibit_libc)
2486 # When building gcc with a cross-compiler, we need to adjust things so
2487 # that the generator programs are still built with the native compiler.
2488 # Also, we cannot run fixincludes.
2490 # These are the normal (build=host) settings:
2491 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2492 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2493 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2494 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2495 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2496 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2498 # And these apply if build != host, or we are generating coverage data
2499 if test x$build != x$host || test "x$coverage_flags" != x
2500 then
2501     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CFLAGS_FOR_BUILD)'
2502     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS_FOR_BUILD)'
2503     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2506 # Expand extra_headers to include complete path.
2507 # This substitutes for lots of t-* files.
2508 extra_headers_list=
2509 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2510 for file in ${extra_headers} ; do
2511   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2512 done
2514 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2515 if test x"$use_gcc_tgmath" = xyes
2516 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2519 # Define collect2 in Makefile.
2520 case $host_can_use_collect2 in
2521   no) collect2= ;;
2522   *) collect2='collect2$(exeext)' ;;
2523 esac
2524 AC_SUBST([collect2])
2526 # Add a definition of USE_COLLECT2 if system wants one.
2527 case $use_collect2 in
2528   no) use_collect2= ;;
2529   "") ;;
2530   *) 
2531     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2532     xm_defines="${xm_defines} USE_COLLECT2"
2533     case $host_can_use_collect2 in
2534       no)
2535         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2536         ;;
2537     esac
2538     ;;
2539 esac
2541 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2542 [Define to the name of the LTO plugin DSO that must be
2543   passed to the linker's -plugin=LIB option.])
2545 # ---------------------------
2546 # Assembler & linker features
2547 # ---------------------------
2549 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2550 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2551 # However when ld-new is first executed from the build tree, libtool will
2552 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2553 # to the build tree.  While doing this we need to use the previous-stage
2554 # linker, or we have an infinite loop.  The presence of a shell script as
2555 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2556 # the gcc/collect-ld script.  So we need to know how libtool works, or
2557 # exec-tool will fail.
2559 m4_defun([_LT_CONFIG_COMMANDS], [])
2560 AC_PROG_LIBTOOL
2561 AC_SUBST(objdir)
2562 AC_SUBST(enable_fast_install)
2564 # Identify the assembler which will work hand-in-glove with the newly
2565 # built GCC, so that we can examine its features.  This is the assembler
2566 # which will be driven by the driver program.
2568 # If build != host, and we aren't building gas in-tree, we identify a
2569 # build->target assembler and hope that it will have the same features
2570 # as the host->target assembler we'll be using.
2571 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2573 m4_pattern_allow([AS_FOR_TARGET])dnl
2574 AS_VAR_SET_IF(gcc_cv_as,, [
2575 if test -x "$DEFAULT_ASSEMBLER"; then
2576         gcc_cv_as="$DEFAULT_ASSEMBLER"
2577 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2578      && test -f ../gas/Makefile \
2579      && test x$build = x$host; then
2580         gcc_cv_as=../gas/as-new$build_exeext
2581 elif test -x as$build_exeext; then
2582         # Build using assembler in the current directory.
2583         gcc_cv_as=./as$build_exeext
2584 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2585         gcc_cv_as="$AS_FOR_TARGET"
2586 else
2587         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2588 fi])
2590 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2591 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2592 case "$ORIGINAL_AS_FOR_TARGET" in
2593   ./as | ./as$build_exeext) ;;
2594   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2595 esac 
2597 default_ld=
2598 AC_ARG_ENABLE(ld,
2599 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2600 [case "${enableval}" in
2601  no)
2602    default_ld=ld.gold
2603    ;;
2604  esac])
2606 install_gold_as_default=no
2607 AC_ARG_ENABLE(gold,
2608 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2609 [case "${enableval}" in
2610  default)
2611    install_gold_as_default=yes
2612    ;;
2613  yes)
2614    if test x${default_ld} != x; then
2615      install_gold_as_default=yes
2616    fi
2617    ;;
2618  no)
2619    ;;
2620  *)
2621    AC_MSG_ERROR([invalid --enable-gold argument])
2622    ;;
2623  esac])
2625 # Identify the linker which will work hand-in-glove with the newly
2626 # built GCC, so that we can examine its features.  This is the linker
2627 # which will be driven by the driver program.
2629 # If build != host, and we aren't building gas in-tree, we identify a
2630 # build->target linker and hope that it will have the same features
2631 # as the host->target linker we'll be using.
2632 gcc_cv_gld_major_version=
2633 gcc_cv_gld_minor_version=
2634 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2635 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2636 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2638 AS_VAR_SET_IF(gcc_cv_ld,, [
2639 if test -x "$DEFAULT_LINKER"; then
2640         gcc_cv_ld="$DEFAULT_LINKER"
2641 elif test $install_gold_as_default = yes \
2642      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2643      && test -f ../gold/Makefile \
2644      && test x$build = x$host; then
2645         gcc_cv_ld=../gold/ld-new$build_exeext
2646 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2647      && test -f ../ld/Makefile \
2648      && test x$build = x$host; then
2649         gcc_cv_ld=../ld/ld-new$build_exeext
2650 elif test -x collect-ld$build_exeext; then
2651         # Build using linker in the current directory.
2652         gcc_cv_ld=./collect-ld$build_exeext
2653 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2654         gcc_cv_ld="$LD_FOR_TARGET"
2655 else
2656         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2657 fi])
2659 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2660 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2661 # if the PLUGIN_LD is set ld-new, just have it as ld
2662 # as that is the installed named.
2663 if test x$PLUGIN_LD_SUFFIX = xld-new \
2664    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2665   PLUGIN_LD_SUFFIX=ld
2667 AC_ARG_WITH(plugin-ld,
2668 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2669 [if test x"$withval" != x; then
2670    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2671    PLUGIN_LD_SUFFIX="$withval"
2672  fi])
2673 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2674 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2676 # Check to see if we are using gold instead of ld
2677 AC_MSG_CHECKING(whether we are using gold)
2678 ld_is_gold=no
2679 if test x$gcc_cv_ld != x; then
2680   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2681      | grep "GNU gold" > /dev/null; then
2682     ld_is_gold=yes
2683   fi
2685 AC_MSG_RESULT($ld_is_gold)
2687 # Check to see if we are using mold instead of ld
2688 AC_MSG_CHECKING(whether we are using mold)
2689 ld_is_mold=no
2690 if test x$gcc_cv_ld != x; then
2691   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2692      | grep "mold" > /dev/null; then
2693     ld_is_mold=yes
2694   fi
2696 AC_MSG_RESULT($ld_is_mold)
2699 AC_MSG_CHECKING(gold linker with split stack support as non default)
2700 # Check to see if default ld is not gold, but gold is
2701 # available and has support for split stack.  If gcc was configured
2702 # with gold then no checking is done.
2704 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2706 # For platforms other than powerpc64*, enable as appropriate.
2708   gold_non_default=no
2709   ld_gold=`which ${gcc_cv_ld}.gold`
2710 # Make sure this gold has minimal split stack support
2711   if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2712     ld_vers=`$ld_gold --version | sed 1q`
2713     gold_vers=`echo $ld_vers | sed -n \
2714           -e 's,^[[^)]]*[[  ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2715     case $target in
2716 # check that the gold version contains the complete split stack support
2717 # on powerpc64 big and little endian
2718       powerpc64*-*-*)
2719         case "$gold_vers" in
2720           2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2721           ;;
2722           *) gold_non_default=no
2723           ;;
2724         esac
2725         ;;
2726     esac
2727   fi
2728   if test $gold_non_default = yes; then
2729     AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2730             [Define if the gold linker supports split stack and is available as a non-default])
2731   fi
2733 AC_MSG_RESULT($gold_non_default)
2735 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2736 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2737 case "$ORIGINAL_LD_FOR_TARGET" in
2738   ./collect-ld | ./collect-ld$build_exeext) ;;
2739   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2740 esac 
2742 AC_MSG_CHECKING(what linker to use)
2743 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2744    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2745         # Single tree build which includes ld.  We want to prefer it
2746         # over whatever linker top-level may have detected, since
2747         # we'll use what we're building after installation anyway.
2748         AC_MSG_RESULT(newly built ld)
2749         in_tree_ld=yes
2750         in_tree_ld_is_elf=no
2751         if (grep 'EMUL = .*elf' ../ld/Makefile \
2752             || grep 'EMUL = .*linux' ../ld/Makefile \
2753             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2754           in_tree_ld_is_elf=yes
2755         elif test "$ld_is_gold" = yes; then
2756           in_tree_ld_is_elf=yes
2757         fi
2758         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
2759         do
2760 changequote(,)dnl
2761                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2762                 if test x$gcc_cv_gld_version != x; then
2763                         break
2764                 fi
2765         done
2766         case $gcc_cv_gld_version in
2767           VERSION=[0-9]*) ;;
2768 changequote([,])dnl
2769           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2770 changequote(,)dnl
2771         esac
2772         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2773         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2774 changequote([,])dnl
2775         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2776         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2777 else
2778         AC_MSG_RESULT($gcc_cv_ld)
2779         in_tree_ld=no
2780         gcc_cvs_ld_program=false # `dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2781         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2782         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2785 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2786 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2788 # Figure out what nm we will be using.
2789 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2790 AS_VAR_SET_IF(gcc_cv_nm,, [
2791 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2792      && test -f ../binutils/Makefile \
2793      && test x$build = x$host; then
2794         gcc_cv_nm=../binutils/nm-new$build_exeext
2795 elif test -x nm$build_exeext; then
2796         gcc_cv_nm=./nm$build_exeext
2797 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2798         gcc_cv_nm="$NM_FOR_TARGET"
2799 else
2800         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2801 fi])
2803 AC_MSG_CHECKING(what nm to use)
2804 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2805         # Single tree build which includes binutils.
2806         AC_MSG_RESULT(newly built nm)
2807         in_tree_nm=yes
2808 else
2809         AC_MSG_RESULT($gcc_cv_nm)
2810         in_tree_nm=no
2813 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2814 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2815 case "$ORIGINAL_NM_FOR_TARGET" in
2816   ./nm | ./nm$build_exeext) ;;
2817   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2818 esac
2821 # Figure out what objdump we will be using.
2822 AS_VAR_SET_IF(gcc_cv_objdump,, [
2823 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2824      && test -f ../binutils/Makefile \
2825      && test x$build = x$host; then
2826         # Single tree build which includes binutils.
2827         gcc_cv_objdump=../binutils/objdump$build_exeext
2828 elif test -x objdump$build_exeext; then
2829         gcc_cv_objdump=./objdump$build_exeext
2830 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2831         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2832 else
2833         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2834 fi])
2836 AC_MSG_CHECKING(what objdump to use)
2837 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2838         # Single tree build which includes binutils.
2839         AC_MSG_RESULT(newly built objdump)
2840 elif test x$gcc_cv_objdump = x; then
2841         AC_MSG_RESULT(not found)
2842 else
2843         AC_MSG_RESULT($gcc_cv_objdump)
2846 # Figure out what readelf we will be using.
2847 AS_VAR_SET_IF(gcc_cv_readelf,, [
2848 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2849      && test -f ../binutils/Makefile \
2850      && test x$build = x$host; then
2851         # Single tree build which includes binutils.
2852         gcc_cv_readelf=../binutils/readelf$build_exeext
2853 elif test -x readelf$build_exeext; then
2854         gcc_cv_readelf=./readelf$build_exeext
2855 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2856         gcc_cv_readelf="$READELF_FOR_TARGET"
2857 else
2858         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2859 fi])
2861 AC_MSG_CHECKING(what readelf to use)
2862 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2863         # Single tree build which includes binutils.
2864         AC_MSG_RESULT(newly built readelf)
2865 elif test x$gcc_cv_readelf = x; then
2866         AC_MSG_RESULT(not found)
2867 else
2868         AC_MSG_RESULT($gcc_cv_readelf)
2871 # Figure out what otool we will be using.
2872 AS_VAR_SET_IF(gcc_cv_otool,, [
2873 if test -x otool$build_exeext; then
2874         gcc_cv_otool=./otool$build_exeext
2875 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2876         gcc_cv_otool="$OTOOL_FOR_TARGET"
2877 else
2878         AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2879 fi])
2881 AC_MSG_CHECKING(what otool to use)
2882 if test x$gcc_cv_otool = x; then
2883         AC_MSG_RESULT(not found)
2884 else
2885         AC_MSG_RESULT($gcc_cv_otool)
2888 # Figure out the dsymutil we will use.
2889 AS_VAR_SET_IF(gcc_cv_dsymutil,, [
2890 if test -x "$DEFAULT_DSYMUTIL"; then
2891     gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
2892 elif test -x dsymutil$build_exeext; then
2893     gcc_cv_dsymutil=./dsymutil$build_exeext
2894 elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $[2] ); then
2895     gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
2896 elif ( set dummy $DSYMUTIL; test -x $[2] ); then
2897     gcc_cv_dsymutil=$DSYMUTIL
2898 else
2899     AC_PATH_PROG(gcc_cv_dsymutil, $DSYMUTIL_FOR_TARGET)
2900 fi])
2902 ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
2903 AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
2904 case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
2905   ./dsymutil | ./dsymutil$build_exeext) ;;
2906   *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
2907 esac 
2909 #~ # Figure out what assembler alignment features are present.
2910 #~ gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,,
2911 #~ [.balign 4
2912 #~ .p2align 2],,
2913 #~ [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2914   #~ [Define if your assembler supports .balign and .p2align.])])
2916 #~ gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,,
2917  #~ [.p2align 4,,7],,
2918 #~ [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2919   #~ [Define if your assembler supports specifying the maximum number
2920    #~ of bytes to skip when using the GAS .p2align command.])])
2922 #~ gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,,
2923  #~ [.literal16],,
2924 #~ [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2925   #~ [Define if your assembler supports .literal16.])])
2927 #~ gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,,
2928  #~ [conftest_label1: .word 0
2929 #~ .subsection -1
2930 #~ conftest_label2: .word 0
2931 #~ .previous],
2932  #~ [if test x$gcc_cv_nm != x; then
2933     #~ $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2934     #~ $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2935     #~ if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2936     #~ then :
2937     #~ else gcc_cv_as_subsection_m1=yes
2938     #~ fi
2939     #~ rm -f conftest.nm1 conftest.nm2
2940   #~ fi],
2941  #~ [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2942   #~ [Define if your assembler supports .subsection and .subsection -1 starts
2943    #~ emitting at the beginning of your section.])])
2945 #~ gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,,
2946  #~ [   .weak foobar],,
2947 #~ [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2949 #~ gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,,
2950  #~ [   .weakref foobar, barfnot],,
2951 #~ [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2953 #~ gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,,
2954  #~ [   .SPACE $TEXT$
2955         #~ .NSUBSPA $CODE$,COMDAT],,
2956 #~ [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2958 #~ # .hidden needs to be supported in both the assembler and the linker,
2959 #~ # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2960 #~ # This is irritatingly difficult to feature test for; we have to check the
2961 #~ # date string after the version number.  If we've got an in-tree
2962 #~ # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2963 #~ # to be safe.
2964 #~ # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2965 #~ case "${target}" in
2966   #~ *-*-aix*)
2967     #~ conftest_s='     .globl foobar,hidden'
2968     #~ ;;
2969   #~ *)
2970     #~ conftest_s='     .hidden foobar
2971 #~ foobar:'
2972     #~ ;;
2973 #~ esac
2974 #~ gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,, [$conftest_s])
2975 #~ case "${target}" in
2976   #~ *-*-darwin*)
2977     #~ # Darwin as has some visibility support, though with a different syntax.
2978     #~ gcc_cv_as_hidden=yes
2979     #~ ;;
2980 #~ esac
2982 # gnu_indirect_function type is an extension proposed at
2983 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2984 # selection of function implementation
2985 AC_ARG_ENABLE(gnu-indirect-function,
2986  [AS_HELP_STRING([--enable-gnu-indirect-function],
2987                  [enable the use of the @gnu_indirect_function to glibc systems])],
2988  [case $enable_gnu_indirect_function in
2989     yes | no) ;;
2990     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2991 Valid choices are 'yes' and 'no'.]) ;;
2992   esac],
2993  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2995 case "${target}" in
2996   riscv*-*-linux*)
2997     AC_MSG_CHECKING(linker ifunc IRELATIVE support)
2998     cat > conftest.s <<EOF
2999         .text
3000         .type   foo_resolver, @function
3001 foo_resolver:
3002         ret
3003         .size   foo_resolver, .-foo_resolver
3005         .globl  foo
3006         .type   foo, %gnu_indirect_function
3007         .set    foo, foo_resolver
3009         .globl  bar
3010         .type   bar, @function
3011 bar:
3012         call    foo
3013         ret
3014         .size   bar, .-bar
3016     if test x$gcc_cv_as != x \
3017        && test x$gcc_cv_ld != x \
3018        && test x$gcc_cv_readelf != x \
3019        && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
3020        && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
3021        && $gcc_cv_readelf --relocs --wide conftest \
3022           | grep R_RISCV_IRELATIVE > /dev/null 2>&1; then
3023       enable_gnu_indirect_function=yes
3024     fi
3025     rm -f conftest conftest.o conftest.s
3026     AC_MSG_RESULT($enable_gnu_indirect_function)
3027     ;;
3028 esac
3030 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
3031 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
3032 [Define if your system supports gnu indirect functions.])
3035 changequote(,)dnl
3036 if test $in_tree_ld != yes ; then
3037   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
3038   if echo "$ld_ver" | grep GNU > /dev/null; then
3039     if test x"$ld_is_gold" = xyes; then
3040       # GNU gold --version looks like this:
3041       #
3042       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
3043       #
3044       # We extract the binutils version which is more familiar and specific
3045       # than the gold version.
3046       ld_vers=`echo $ld_ver | sed -n \
3047           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3048     else
3049       # GNU ld --version looks like this:
3050       #
3051       # GNU ld (GNU Binutils) 2.21.51.20110225
3052       ld_vers=`echo $ld_ver | sed -n \
3053           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3054     fi
3055     ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)\(-*\)\([01][0-9]\)\2\([0-3][0-9]\).*$,\1\3\4,p'`
3056     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3057     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3058     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
3059   else
3060     case "${target}" in
3061       *-*-solaris2*)
3062         # Solaris 2 ld -V output looks like this for a regular version:
3063         #
3064         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
3065         #
3066         # but test versions add stuff at the end:
3067         #
3068         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
3069         #
3070         # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
3071         # numbers can be used in ld.so.1 feature checks even if a different
3072         # linker is configured.
3073         ld_ver=`$gcc_cv_ld -V 2>&1`
3074         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
3075           ld_vers=`echo $ld_ver | sed -n \
3076             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
3077           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3078           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3079         fi
3080         ;;
3081     esac
3082   fi
3084 changequote([,])dnl
3086 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
3087 [[if test $in_tree_ld = yes ; then
3088   gcc_cv_ld_hidden=no
3089   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 \
3090      && test $in_tree_ld_is_elf = yes; then
3091      gcc_cv_ld_hidden=yes
3092   fi
3093 else
3094   gcc_cv_ld_hidden=yes
3095   if test x"$ld_is_gold" = xyes; then
3096     :
3097   elif test x"$ld_is_mold" = xyes; then
3098     :
3099   elif echo "$ld_ver" | grep GNU > /dev/null; then
3100     if test 0"$ld_date" -lt 20020404; then
3101       if test -n "$ld_date"; then
3102         # If there was date string, but was earlier than 2002-04-04, fail
3103         gcc_cv_ld_hidden=no
3104       elif test -z "$ld_vers"; then
3105         # If there was no date string nor ld version number, something is wrong
3106         gcc_cv_ld_hidden=no
3107       else
3108         test -z "$ld_vers_patch" && ld_vers_patch=0
3109         if test "$ld_vers_major" -lt 2; then
3110           gcc_cv_ld_hidden=no
3111         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
3112           gcc_cv_ld_hidden="no"
3113         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
3114           gcc_cv_ld_hidden=no
3115         fi
3116       fi
3117     fi
3118   else
3119     case "${target}" in
3120       *-*-aix[789]*)
3121         gcc_cv_ld_hidden=yes
3122         ;;
3123       *-*-darwin*)
3124         # Darwin ld has some visibility support.
3125         gcc_cv_ld_hidden=yes
3126         ;;
3127       hppa64*-*-hpux* | ia64*-*-hpux*)
3128         gcc_cv_ld_hidden=yes
3129         ;;
3130       *-*-solaris2*)
3131         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
3132         # .symbolic was only added in Solaris 9 12/02.
3133         gcc_cv_ld_hidden=yes
3134         ;;
3135       *)
3136         gcc_cv_ld_hidden=no
3137         ;;
3138     esac
3139   fi
3140 fi]])
3141 libgcc_visibility=no
3142 AC_SUBST(libgcc_visibility)
3143 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
3144 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
3145   libgcc_visibility=yes
3146   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
3147   [Define if your assembler and linker support .hidden.])
3150 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3151 gcc_cv_ld_ro_rw_mix=unknown
3152 if test $in_tree_ld = yes ; then
3153   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 \
3154      && test $in_tree_ld_is_elf = yes; then
3155     gcc_cv_ld_ro_rw_mix=read-write
3156   fi
3157 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3158   echo '.section myfoosect, "a"' > conftest1.s
3159   echo '.section myfoosect, "aw"' > conftest2.s
3160   echo '.byte 1' >> conftest2.s
3161   echo '.section myfoosect, "a"' > conftest3.s
3162   echo '.byte 0' >> conftest3.s
3163   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3164      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3165      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3166      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3167         conftest2.o conftest3.o > /dev/null 2>&1; then
3168     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3169                          | sed -e '/myfoosect/!d' -e N`
3170     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3171       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3172         gcc_cv_ld_ro_rw_mix=read-only
3173       else
3174         gcc_cv_ld_ro_rw_mix=read-write
3175       fi
3176     fi
3177   fi
3178 changequote(,)dnl
3179   rm -f conftest.* conftest[123].*
3180 changequote([,])dnl
3182 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3183         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3184   [Define if your linker links a mix of read-only
3185    and read-write sections into a read-write section.])
3187 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3189 gcc_AC_INITFINI_ARRAY
3191 # Check if we have .[us]leb128, and support symbol arithmetic with it.
3192 # Older versions of GAS and some non-GNU assemblers, have a bugs handling
3193 # these directives, even when they appear to accept them.
3194 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,,
3195 [       .data
3196         .uleb128 L2 - L1
3198         .uleb128 1280
3199         .sleb128 -1010
3201         .uleb128 0x8000000000000000
3204 if test "x$gcc_cv_objdump" != x; then
3205   if $gcc_cv_objdump -s conftest.o 2>/dev/null \
3206      | grep '04800a8e 78808080 80808080 808001' >/dev/null; then
3207     gcc_cv_as_leb128=yes
3208   fi
3209 elif test "x$gcc_cv_otool" != x; then
3210   if $gcc_cv_otool -d conftest.o 2>/dev/null \
3211      | grep '04 80 0a 8e 78 80 80 80 80 80 80 80 80 80 01' >/dev/null; then
3212     gcc_cv_as_leb128=yes
3213   fi
3214 else
3215   # play safe, assume the assembler is broken.
3216   :
3219  [AC_DEFINE(HAVE_AS_LEB128, 1,
3220    [Define if your assembler supports .sleb128 and .uleb128.])],
3221  [AC_DEFINE(HAVE_AS_LEB128, 0,
3222    [Define if your assembler supports .sleb128 and .uleb128.])])
3224 # Determine if an .eh_frame section is read-only.
3225 gcc_fn_eh_frame_ro () {
3226   $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
3227     $gcc_cv_objdump -h conftest.o 2>/dev/null | \
3228     sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
3231 # Check if we have assembler support for unwind directives.
3232 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,,
3233 [       .text
3234         .cfi_startproc
3235         .cfi_offset 0, 0
3236         .cfi_same_value 1
3237         .cfi_def_cfa 1, 2
3238         .cfi_escape 1, 2, 3, 4, 5
3239         .cfi_endproc],
3240 [case "$target" in
3241   *-*-solaris*)
3242     # If the linker used on Solaris (like Sun ld) isn't capable of merging
3243     # read-only and read-write sections, we need to make sure that the
3244     # assembler used emits read-write .eh_frame sections.
3245     if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
3246       gcc_cv_as_cfi_directive=yes
3247     elif test "x$gcc_cv_objdump" = x; then
3248       # No objdump, err on the side of caution.
3249       gcc_cv_as_cfi_directive=no
3250     else
3251       if test x$gas = xyes; then
3252         as_32_opt="--32"
3253         as_64_opt="--64"
3254       else
3255         as_32_opt="-m32"
3256         as_64_opt="-m64"
3257       fi
3258       case "$target" in
3259         sparc*-*-solaris2.*)
3260           # On Solaris/SPARC, .eh_frame sections should always be read-write.
3261           if gcc_fn_eh_frame_ro $as_32_opt \
3262              || gcc_fn_eh_frame_ro $as_64_opt; then
3263             gcc_cv_as_cfi_directive=no
3264           else
3265             gcc_cv_as_cfi_directive=yes
3266           fi
3267           ;;
3268         i?86-*-solaris2.* | x86_64-*-solaris2.*)
3269           # On Solaris/x86, make sure that GCC and assembler agree on using
3270           # read-only .eh_frame sections for 64-bit.
3271           if gcc_fn_eh_frame_ro $as_32_opt; then
3272             gcc_cv_as_cfi_directive=no
3273           elif gcc_fn_eh_frame_ro $as_64_opt; then
3274             gcc_cv_as_cfi_directive=yes
3275           else
3276             gcc_cv_as_cfi_directive=no
3277           fi
3278           ;;
3279       esac
3280     fi
3281     ;;
3282   *-*-*)
3283     gcc_cv_as_cfi_directive=yes
3284     ;;
3285 esac])
3286 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3287 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,,
3288 [       .text
3289         .cfi_startproc
3290         .cfi_adjust_cfa_offset 64
3291         .skip 75040, 0
3292         .cfi_adjust_cfa_offset 128
3293         .cfi_endproc],
3295 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3296     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
3297    gcc_cv_as_cfi_advance_working=yes
3300 else
3301   # no objdump, err on the side of caution
3302   gcc_cv_as_cfi_advance_working=no
3304 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3305 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3306   [`if test $gcc_cv_as_cfi_directive = yes \
3307        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3308   [Define 0/1 if your assembler supports CFI directives.])
3310 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3311 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3312   gcc_cv_as_cfi_personality_directive,,
3313 [       .text
3314         .cfi_startproc
3315         .cfi_personality 0, symbol
3316         .cfi_endproc])
3317 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3318   [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3319   [Define 0/1 if your assembler supports .cfi_personality.])
3321 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3322   gcc_cv_as_cfi_sections_directive,,
3323 [       .text
3324         .cfi_sections .debug_frame, .eh_frame
3325         .cfi_startproc
3326         .cfi_endproc],
3327 [case $target_os in
3328   win32 | pe | cygwin* | mingw32*)
3329     # Need to check that we generated the correct relocation for the
3330     # .debug_frame section.  This was fixed for binutils 2.21.
3331     gcc_cv_as_cfi_sections_directive=no
3332     if test "x$gcc_cv_objdump" != x; then
3333      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3334         grep secrel > /dev/null; then
3335       gcc_cv_as_cfi_sections_directive=yes
3336      fi
3337     fi
3338     ;;
3339   *)
3340     gcc_cv_as_cfi_sections_directive=yes
3341     ;;
3342 esac])
3343 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3344 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3345   [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3346   [Define 0/1 if your assembler supports .cfi_sections.])
3348 # GAS versions up to and including 2.11.0 may mis-optimize
3349 # .eh_frame data.
3350 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,,
3351 [       .text
3352 .LFB1:
3353         .4byte  0
3354 .L1:
3355         .4byte  0
3356 .LFE1:
3357         .section        .eh_frame,"aw",@progbits
3358 __FRAME_BEGIN__:
3359         .4byte  .LECIE1-.LSCIE1
3360 .LSCIE1:
3361         .4byte  0x0
3362         .byte   0x1
3363         .ascii "z\0"
3364         .byte   0x1
3365         .byte   0x78
3366         .byte   0x1a
3367         .byte   0x0
3368         .byte   0x4
3369         .4byte  1
3370         .p2align 1
3371 .LECIE1:
3372 .LSFDE1:
3373         .4byte  .LEFDE1-.LASFDE1
3374 .LASFDE1:
3375         .4byte  .LASFDE1-__FRAME_BEGIN__
3376         .4byte  .LFB1
3377         .4byte  .LFE1-.LFB1
3378         .byte   0x4
3379         .4byte  .LFE1-.LFB1
3380         .byte   0x4
3381         .4byte  .L1-.LFB1
3382 .LEFDE1:],
3383 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3384 cat > conftest.lit <<EOF
3385  0000 10000000 00000000 017a0001 781a0004  .........z..x...
3386  0010 01000000 12000000 18000000 00000000  ................
3387  0020 08000000 04080000 0044               .........D      @&t@
3389 cat > conftest.big <<EOF
3390  0000 00000010 00000000 017a0001 781a0004  .........z..x...
3391  0010 00000001 00000012 00000018 00000000  ................
3392  0020 00000008 04000000 0844               .........D      @&t@
3394   # If the assembler didn't choke, and we can objdump,
3395   # and we got the correct data, then succeed.
3396   # The text in the here-document typically retains its unix-style line
3397   # endings, while the output of objdump will use host line endings.
3398   # Therefore, use diff -b for the comparisons.
3399   if test x$gcc_cv_objdump != x \
3400   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3401      | tail -3 > conftest.got \
3402   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3403     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3404   then
3405     gcc_cv_as_eh_frame=yes
3406   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3407     gcc_cv_as_eh_frame=buggy
3408   else
3409     # Uh oh, what do we do now?
3410     gcc_cv_as_eh_frame=no
3411   fi])
3413 if test $gcc_cv_as_eh_frame = buggy; then
3414   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3415   [Define if your assembler mis-optimizes .eh_frame data.])
3418 # Test if the assembler supports the section flag 'e' or #exclude for
3419 # specifying an excluded section.
3420 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3421  [--fatal-warnings],
3422  [.section foo1,"e"
3423   .byte 0,0,0,0])
3424 if test $gcc_cv_as_section_exclude_e = no; then
3425   case "${target}" in
3426     # Solaris as uses #exclude instead.
3427     *-*-solaris2*)
3428       case "${target}" in
3429         sparc*-*-solaris2*)
3430           conftest_s='.section "foo1", #exclude'
3431           ;;
3432         i?86-*-solaris2* | x86_64-*-solaris2*)
3433           conftest_s='.section foo1, #exclude'
3434           ;;      
3435       esac
3436       ;;
3437     esac
3438   gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,
3439     [$conftest_s
3440      .byte 0,0,0,0])
3442 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3443   [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3444 [Define if your assembler supports specifying the exclude section flag.])
3446 #~ # Test if the assembler supports the section flag 'R' for specifying
3447 #~ # section with SHF_GNU_RETAIN.
3448 #~ case "${target}" in
3449   #~ # Solaris may use GNU assembler with Solairs ld.  Even if GNU
3450   #~ # assembler supports the section flag 'R', it doesn't mean that
3451   #~ # Solairs ld supports it.
3452   #~ *-*-solaris2*)
3453     #~ gcc_cv_as_shf_gnu_retain=no
3454     #~ ;;
3455   #~ *)
3456     #~ gcc_GAS_CHECK_FEATURE([section 'R' flag], gcc_cv_as_shf_gnu_retain,
3457       #~ [--fatal-warnings],
3458       #~ [.section .foo,"awR",%progbits
3459 #~ .byte 0])
3460     #~ ;;
3461 #~ esac
3462 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_GNU_RETAIN,
3463   #~ [`if test $gcc_cv_as_shf_gnu_retain = yes; then echo 1; else echo 0; fi`],
3464   #~ [Define 0/1 if your assembler supports marking sections with SHF_GNU_RETAIN flag.])
3466 #~ # Test if the assembler supports the section flag 'o' for specifying
3467 #~ # section with link-order.
3468 #~ case "${target}" in
3469   #~ # Solaris may use GNU assembler with Solairs ld.  Even if GNU
3470   #~ # assembler supports the section flag 'o', it doesn't mean that
3471   #~ # Solairs ld supports it.
3472   #~ *-*-solaris2*)
3473     #~ gcc_cv_as_section_link_order=no
3474     #~ ;;
3475   #~ *)
3476     #~ gcc_GAS_CHECK_FEATURE([section 'o' flag], gcc_cv_as_section_link_order,
3477       #~ [--fatal-warnings],
3478       #~ [.section .foo,"a"
3479 #~ .byte 0
3480 #~ .section __patchable_function_entries,"awo",%progbits,.foo
3481 #~ .byte 0])
3482     #~ ;;
3483 #~ esac
3484 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_LINK_ORDER,
3485   #~ [`if test $gcc_cv_as_section_link_order = yes; then echo 1; else echo 0; fi`],
3486   #~ [Define 0/1 if your assembler supports 'o' flag in .section directive.])
3488 #~ gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3489  #~ [--fatal-warnings],
3490  #~ [.section .rodata.str, "aMS", @progbits, 1])
3491 #~ if test $gcc_cv_as_shf_merge = no; then
3492   #~ gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3493     #~ [--fatal-warnings],
3494     #~ [.section .rodata.str, "aMS", %progbits, 1])
3495 #~ fi
3496 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3497   #~ [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3498 #~ [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3500 #~ gcc_cv_ld_aligned_shf_merge=yes
3501 #~ case "$target" in
3502   #~ # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
3503   #~ # alignment > 1.
3504   #~ sparc*-*-solaris2.11*)
3505     #~ if test x"$gnu_ld" = xno \
3506        #~ && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
3507       #~ gcc_cv_ld_aligned_shf_merge=no
3508     #~ fi
3509     #~ ;;
3510 #~ esac
3511 #~ AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
3512   #~ [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
3513 #~ [Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
3515 #~ gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive,,
3516 #~ [.stabs "gcc2_compiled.",60,0,0,0],,
3517 #~ [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
3518   #~ [Define if your assembler supports .stabs.])])
3520 #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3521  #~ gcc_cv_as_comdat_group,
3522  #~ [--fatal-warnings],
3523  #~ [.section .text,"axG",@progbits,.foo,comdat])
3524 #~ if test $gcc_cv_as_comdat_group = yes; then
3525   #~ gcc_cv_as_comdat_group_percent=no
3526   #~ gcc_cv_as_comdat_group_group=no
3527 #~ else
3528  #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3529    #~ gcc_cv_as_comdat_group_percent,
3530    #~ [--fatal-warnings],
3531    #~ [.section .text,"axG",%progbits,.foo,comdat])
3532  #~ if test $gcc_cv_as_comdat_group_percent = yes; then
3533    #~ gcc_cv_as_comdat_group_group=no
3534  #~ else
3535    #~ case "${target}" in
3536      #~ # Sun as uses a completely different syntax.
3537      #~ *-*-solaris2*)
3538        #~ case "${target}" in
3539          #~ sparc*-*-solaris2*)
3540            #~ conftest_s='
3541                #~ .group foo,".text%foo",#comdat
3542                #~ .section ".text%foo", #alloc,#execinstr,#progbits
3543                #~ .globl foo
3544              #~ foo:
3545              #~ '
3546            #~ ;;
3547          #~ i?86-*-solaris2* | x86_64-*-solaris2*)
3548            #~ conftest_s='
3549                #~ .group foo,.text%foo,#comdat
3550                #~ .section .text%foo, "ax", @progbits
3551                #~ .globl  foo
3552              #~ foo:
3553              #~ '
3554            #~ ;;
3555        #~ esac
3556        #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3557          #~ gcc_cv_as_comdat_group_group,
3558          #~ , [$conftest_s])
3559        #~ ;;
3560    #~ esac
3561    #~ if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3562      #~ gcc_cv_as_comdat_group_group=no
3563    #~ fi
3564  #~ fi
3565 #~ fi
3566 #~ if test x"$ld_is_gold" = xyes; then
3567   #~ comdat_group=yes
3568 #~ elif test x"$ld_is_mold" = xyes; then
3569   #~ comdat_group=yes
3570 #~ elif test $in_tree_ld = yes ; then
3571   #~ comdat_group=no
3572   #~ 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 \
3573      #~ && test $in_tree_ld_is_elf = yes; then
3574      #~ comdat_group=yes
3575   #~ fi
3576 #~ elif echo "$ld_ver" | grep GNU > /dev/null; then
3577   #~ comdat_group=yes
3578   #~ if test 0"$ld_date" -lt 20050308; then
3579     #~ if test -n "$ld_date"; then
3580       #~ # If there was date string, but was earlier than 2005-03-08, fail
3581       #~ comdat_group=no
3582     #~ elif test "$ld_vers_major" -lt 2; then
3583       #~ comdat_group=no
3584     #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3585       #~ comdat_group=no
3586     #~ fi
3587   #~ fi
3588 #~ else
3589 #~ changequote(,)dnl
3590   #~ case "${target}" in
3591     #~ *-*-solaris2.1[1-9]*)
3592       #~ comdat_group=no
3593       #~ # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3594       #~ # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3595       #~ # version 1.688.
3596       #~ #
3597       #~ # If using Sun as for COMDAT group as emitted by GCC, one needs at
3598       #~ # least ld version 1.2267.
3599       #~ if test "$ld_vers_major" -gt 1; then
3600         #~ comdat_group=yes
3601       #~ elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3602         #~ comdat_group=yes
3603       #~ elif test "$ld_vers_minor" -ge 2267; then
3604         #~ comdat_group=yes
3605       #~ fi
3606       #~ ;;
3607     #~ *)
3608       #~ # Assume linkers other than GNU ld don't support COMDAT group.
3609       #~ comdat_group=no
3610       #~ ;;
3611   #~ esac
3612 #~ changequote([,])dnl
3613 #~ fi
3614 #~ # Allow overriding the automatic COMDAT group tests above.
3615 #~ AC_ARG_ENABLE(comdat,
3616   #~ [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3617   #~ [comdat_group="$enable_comdat"])
3618 #~ if test $comdat_group = no; then
3619   #~ gcc_cv_as_comdat_group=no
3620   #~ gcc_cv_as_comdat_group_percent=no
3621   #~ gcc_cv_as_comdat_group_group=no
3622 #~ fi
3623 #~ AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3624   #~ [`if test $gcc_cv_as_comdat_group = yes \
3625     #~ || test $gcc_cv_as_comdat_group_percent = yes \
3626     #~ || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3627 #~ [Define 0/1 if your assembler and linker support COMDAT groups.])
3629 #~ # Restrict this test to Solaris/x86: other targets define this statically.
3630 #~ case "${target}" in
3631   #~ i?86-*-solaris2* | x86_64-*-solaris2*)
3632     #~ AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
3633     #~ if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
3634       #~ hidden_linkonce=yes
3635     #~ else
3636       #~ case "${target}" in
3637         #~ # Full support for hidden thunks in linkonce sections only appeared in
3638         #~ # Solaris 11/OpenSolaris.
3639         #~ *-*-solaris2.1[[1-9]]*)
3640           #~ hidden_linkonce=yes
3641           #~ ;;
3642         #~ *)
3643           #~ hidden_linkonce=no
3644           #~ ;;
3645       #~ esac
3646     #~ fi
3647     #~ AC_MSG_RESULT($hidden_linkonce)
3648     #~ AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
3649       #~ [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
3650     #~ [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
3651   #~ ;;
3652 #~ esac
3654 #~ gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3655  #~ gcc_cv_as_is_stmt,,
3656 #~ [    .text
3657         #~ .file 1 "conf.c"
3658         #~ .loc 1 1 0 is_stmt 1],,
3659 #~ [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3660   #~ [Define if your assembler supports the .loc is_stmt sub-directive.])])
3662 #~ gcc_GAS_CHECK_FEATURE([line table discriminator support],
3663  #~ gcc_cv_as_discriminator,,
3664 #~ [    .text
3665         #~ .file 1 "conf.c"
3666         #~ .loc 1 1 0 discriminator 1],,
3667 #~ [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3668   #~ [Define if your assembler supports the .loc discriminator sub-directive.])])
3670 # Catch the newlib flag of the same name so we can gate GCC features on it.
3671 AC_ARG_ENABLE(newlib-nano-formatted-io,
3672 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3673  formatted IO])],
3674 [case "${enableval}" in
3675   yes|no)
3676     ;;
3677   *)
3678     AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3679     ;;
3680 esac], [])
3682 #~ # Thread-local storage - the check is heavily parameterized.
3683 #~ conftest_s=
3684 #~ tls_as_opt=
3685 #~ case "$target" in
3686 #~ changequote(,)dnl
3687   #~ alpha*-*-*)
3688     #~ conftest_s='
3689         #~ .section ".tdata","awT",@progbits
3690 #~ foo: .long   25
3691         #~ .text
3692         #~ ldq  $27,__tls_get_addr($29)         !literal!1
3693         #~ lda  $16,foo($29)                    !tlsgd!1
3694         #~ jsr  $26,($27),__tls_get_addr        !lituse_tlsgd!1
3695         #~ ldq  $27,__tls_get_addr($29)         !literal!2
3696         #~ lda  $16,foo($29)                    !tlsldm!2
3697         #~ jsr  $26,($27),__tls_get_addr        !lituse_tlsldm!2
3698         #~ ldq  $1,foo($29)                     !gotdtprel
3699         #~ ldah $2,foo($29)                     !dtprelhi
3700         #~ lda  $3,foo($2)                      !dtprello
3701         #~ lda  $4,foo($29)                     !dtprel
3702         #~ ldq  $1,foo($29)                     !gottprel
3703         #~ ldah $2,foo($29)                     !tprelhi
3704         #~ lda  $3,foo($2)                      !tprello
3705         #~ lda  $4,foo($29)                     !tprel'
3706         #~ tls_as_opt=--fatal-warnings
3707         #~ ;;
3708   #~ arc*-*-*)
3709     #~ conftest_s='
3710         #~ add_s r0,r0, @foo@tpoff'
3711         #~ ;;
3712   #~ cris-*-*|crisv32-*-*)
3713     #~ conftest_s='
3714         #~ .section ".tdata","awT",@progbits
3715 #~ x:      .long   25
3716         #~ .text
3717         #~ move.d x:IE,$r10
3718         #~ nop'
3719         #~ tls_as_opt=--fatal-warnings
3720         #~ ;;
3721   #~ frv*-*-*)
3722     #~ conftest_s='
3723         #~ .section ".tdata","awT",@progbits
3724 #~ x:      .long   25
3725         #~ .text
3726         #~ call    #gettlsoff(x)'
3727         #~ ;;
3728   #~ hppa*-*-linux*)
3729     #~ conftest_s='
3730 #~ t1:  .reg    %r20
3731 #~ t2:  .reg    %r21
3732 #~ gp:  .reg    %r19
3733         #~ .section ".tdata","awT",@progbits
3734 #~ foo: .long   25
3735         #~ .text
3736         #~ .align       4
3737         #~ addil LT%foo-$tls_gdidx$,gp
3738         #~ ldo RT%foo-$tls_gdidx$(%r1),%arg0
3739         #~ b __tls_get_addr
3740         #~ nop          
3741         #~ addil LT%foo-$tls_ldidx$,gp
3742         #~ b __tls_get_addr
3743         #~ ldo RT%foo-$tls_ldidx$(%r1),%arg0
3744         #~ addil LR%foo-$tls_dtpoff$,%ret0
3745         #~ ldo RR%foo-$tls_dtpoff$(%r1),%t1
3746         #~ mfctl %cr27,%t1              
3747         #~ addil LT%foo-$tls_ieoff$,gp
3748         #~ ldw RT%foo-$tls_ieoff$(%r1),%t2
3749         #~ add %t1,%t2,%t3              
3750         #~ mfctl %cr27,%t1              
3751         #~ addil LR%foo-$tls_leoff$,%t1
3752         #~ ldo RR%foo-$tls_leoff$(%r1),%t2'
3753         #~ tls_as_opt=--fatal-warnings
3754         #~ ;;
3755   #~ arm*-*-*)
3756     #~ conftest_s='
3757         #~ .section ".tdata","awT",%progbits
3758 #~ foo: .long   25
3759         #~ .text
3760 #~ .word foo(gottpoff)
3761 #~ .word foo(tpoff)
3762 #~ .word foo(tlsgd)
3763 #~ .word foo(tlsldm)
3764 #~ .word foo(tlsldo)'
3765         #~ ;;
3766   #~ i[34567]86-*-* | x86_64-*-*)
3767     #~ case "$target" in
3768       #~ i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3769         #~ on_solaris=yes
3770         #~ ;;
3771       #~ *)
3772         #~ on_solaris=no
3773         #~ ;;
3774     #~ esac
3775     #~ if test x$on_solaris = xyes && test x$gas_flag = xno; then
3776       #~ conftest_s='
3777         #~ .section .tdata,"awt",@progbits'
3778       #~ tls_section_flag=t
3779 #~ changequote([,])dnl
3780       #~ AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3781 #~ [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3782 #~ changequote(,)dnl
3783     #~ else
3784       #~ conftest_s='
3785         #~ .section ".tdata","awT",@progbits'
3786       #~ tls_section_flag=T
3787       #~ tls_as_opt="--fatal-warnings"
3788     #~ fi
3789     #~ case "$target" in
3790       #~ i[34567]86-*-*)
3791         #~ if test x$on_solaris = xyes; then
3792           #~ case $gas_flag in
3793             #~ yes) tls_as_opt="$tls_as_opt --32" ;;
3794           #~ esac
3795         #~ fi
3796         #~ conftest_s="$conftest_s
3797 #~ foo: .long   25
3798         #~ .text
3799         #~ movl %gs:0, %eax
3800         #~ leal foo@tlsgd(,%ebx,1), %eax
3801         #~ leal foo@tlsldm(%ebx), %eax
3802         #~ leal foo@dtpoff(%eax), %edx
3803         #~ movl foo@gottpoff(%ebx), %eax
3804         #~ subl foo@gottpoff(%ebx), %eax
3805         #~ addl foo@gotntpoff(%ebx), %eax
3806         #~ movl foo@indntpoff, %eax
3807         #~ movl \$foo@tpoff, %eax
3808         #~ subl \$foo@tpoff, %eax
3809         #~ leal foo@ntpoff(%ecx), %eax"
3810         #~ ;;
3811       #~ x86_64-*-*)
3812         #~ if test x$on_solaris = xyes; then
3813           #~ case $gas_flag in
3814             #~ yes) tls_as_opt="$tls_as_opt --64" ;;
3815             #~ no)       tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3816           #~ esac         
3817         #~ fi
3818         #~ conftest_s="$conftest_s
3819 #~ foo: .long   25
3820         #~ .text
3821         #~ movq %fs:0, %rax
3822         #~ leaq foo@tlsgd(%rip), %rdi
3823         #~ leaq foo@tlsld(%rip), %rdi
3824         #~ leaq foo@dtpoff(%rax), %rdx
3825         #~ movq foo@gottpoff(%rip), %rax
3826         #~ movq \$foo@tpoff, %rax"
3827         #~ ;;
3828     #~ esac
3829     #~ ;;
3830   #~ ia64-*-*)
3831     #~ conftest_s='
3832         #~ .section ".tdata","awT",@progbits
3833 #~ foo: data8   25
3834         #~ .text
3835         #~ addl r16 = @ltoff(@dtpmod(foo#)), gp
3836         #~ addl r17 = @ltoff(@dtprel(foo#)), gp
3837         #~ addl r18 = @ltoff(@tprel(foo#)), gp
3838         #~ addl r19 = @dtprel(foo#), gp
3839         #~ adds r21 = @dtprel(foo#), r13
3840         #~ movl r23 = @dtprel(foo#)
3841         #~ addl r20 = @tprel(foo#), gp
3842         #~ adds r22 = @tprel(foo#), r13
3843         #~ movl r24 = @tprel(foo#)'
3844         #~ tls_as_opt=--fatal-warnings
3845         #~ ;;
3846   #~ loongarch*-*-*)
3847     #~ conftest_s='
3848         #~ .section .tdata,"awT",@progbits
3849 #~ x:   .word 2
3850         #~ .text
3851         #~ la.tls.gd $a0,x
3852         #~ bl __tls_get_addr'
3853         #~ tls_first_major=0
3854         #~ tls_first_minor=0
3855         #~ tls_as_opt='--fatal-warnings'
3856         #~ ;;
3857   #~ microblaze*-*-*)
3858     #~ conftest_s='
3859         #~ .section .tdata,"awT",@progbits
3860 #~ x:
3861         #~ .word 2
3862         #~ .text
3863         #~ addik r5,r20,x@TLSGD
3864         #~ addik r5,r20,x@TLSLDM'
3865         #~ tls_as_opt='--fatal-warnings'
3866         #~ ;;
3867   #~ mips*-*-*)
3868     #~ conftest_s='
3869         #~ .section .tdata,"awT",@progbits
3870 #~ x:
3871         #~ .word 2
3872         #~ .text
3873         #~ addiu $4, $28, %tlsgd(x)
3874         #~ addiu $4, $28, %tlsldm(x)
3875         #~ lui $4, %dtprel_hi(x)
3876         #~ addiu $4, $4, %dtprel_lo(x)
3877         #~ lw $4, %gottprel(x)($28)
3878         #~ lui $4, %tprel_hi(x)
3879         #~ addiu $4, $4, %tprel_lo(x)'
3880         #~ tls_as_opt='-32 --fatal-warnings'
3881         #~ ;;
3882   #~ m68k-*-*)
3883     #~ conftest_s='
3884         #~ .section .tdata,"awT",@progbits
3885 #~ x:
3886         #~ .word 2
3887         #~ .text
3888 #~ foo:
3889         #~ move.l x@TLSGD(%a5),%a0
3890         #~ move.l x@TLSLDM(%a5),%a0
3891         #~ move.l x@TLSLDO(%a5),%a0
3892         #~ move.l x@TLSIE(%a5),%a0
3893         #~ move.l x@TLSLE(%a5),%a0'
3894         #~ tls_as_opt='--fatal-warnings'
3895         #~ ;;
3896   #~ nios2-*-*)
3897       #~ conftest_s='
3898         #~ .section ".tdata","awT",@progbits'
3899         #~ tls_as_opt="--fatal-warnings"
3900         #~ ;;
3901   #~ aarch64*-*-*)
3902     #~ conftest_s='
3903         #~ .section ".tdata","awT",%progbits
3904 #~ foo: .long   25
3905         #~ .text
3906         #~ adrp  x0, :tlsgd:x
3907         #~ add   x0, x0, #:tlsgd_lo12:x
3908         #~ bl    __tls_get_addr
3909         #~ nop'
3910         #~ tls_as_opt='--fatal-warnings'
3911         #~ ;;
3912   #~ or1k*-*-*)
3913     #~ conftest_s='
3914         #~ .section ".tdata","awT",@progbits
3915 #~ foo: .long   25
3916         #~ .text
3917         #~ l.movhi      r3, tpoffha(foo)
3918         #~ l.add        r3, r3, r10
3919         #~ l.lwz        r4, tpofflo(foo)(r3)'
3920     #~ tls_as_opt=--fatal-warnings
3921     #~ ;;
3922   #~ powerpc-ibm-aix*)
3923     #~ conftest_s='
3924         #~ .extern __get_tpointer
3925         #~ .toc
3926 #~ LC..1:
3927         #~ .tc a[TC],a[TL]@le
3928         #~ .csect .text[PR]
3929 #~ .tlstest:
3930         #~ lwz 9,LC..1(2)
3931         #~ bla __get_tpointer
3932         #~ lwzx 3,9,3
3933         #~ .globl a
3934         #~ .csect a[TL],4
3935 #~ a:
3936         #~ .space 4'
3937         #~ ;;
3938   #~ powerpc64*-*-*)
3939     #~ conftest_s='
3940         #~ .section ".tdata","awT",@progbits
3941         #~ .align 3
3942 #~ ld0: .space 8
3943 #~ ld1: .space 8
3944 #~ x1:  .space 8
3945 #~ x2:  .space 8
3946 #~ x3:  .space 8
3947         #~ .text
3948         #~ addi 3,2,ld0@got@tlsgd
3949         #~ bl .__tls_get_addr
3950         #~ nop
3951         #~ addi 3,2,ld1@toc
3952         #~ bl .__tls_get_addr
3953         #~ nop
3954         #~ addi 3,2,x1@got@tlsld
3955         #~ bl .__tls_get_addr
3956         #~ nop
3957         #~ addi 9,3,x1@dtprel
3958         #~ bl .__tls_get_addr
3959         #~ nop
3960         #~ addis 9,3,x2@dtprel@ha
3961         #~ addi 9,9,x2@dtprel@l
3962         #~ bl .__tls_get_addr
3963         #~ nop
3964         #~ ld 9,x3@got@dtprel(2)
3965         #~ add 9,9,3
3966         #~ bl .__tls_get_addr
3967         #~ nop'
3968         #~ tls_as_opt="-a64 --fatal-warnings"
3969         #~ ;;
3970   #~ powerpc*-*-*)
3971     #~ conftest_s='
3972         #~ .section ".tdata","awT",@progbits
3973         #~ .align 2
3974 #~ ld0: .space 4
3975 #~ ld1: .space 4
3976 #~ x1:  .space 4
3977 #~ x2:  .space 4
3978 #~ x3:  .space 4
3979         #~ .text
3980         #~ addi 3,31,ld0@got@tlsgd
3981         #~ bl __tls_get_addr
3982         #~ addi 3,31,x1@got@tlsld
3983         #~ bl __tls_get_addr
3984         #~ addi 9,3,x1@dtprel
3985         #~ addis 9,3,x2@dtprel@ha
3986         #~ addi 9,9,x2@dtprel@l
3987         #~ lwz 9,x3@got@tprel(31)
3988         #~ add 9,9,x@tls
3989         #~ addi 9,2,x1@tprel
3990         #~ addis 9,2,x2@tprel@ha
3991         #~ addi 9,9,x2@tprel@l'
3992         #~ tls_as_opt="-a32 --fatal-warnings"
3993         #~ ;;
3994   #~ riscv*-*-*)
3995     #~ conftest_s='
3996         #~ .section .tdata,"awT",@progbits
3997 #~ x:   .word 2
3998         #~ .text
3999         #~ la.tls.gd a0,x
4000         #~ call __tls_get_addr'
4001         #~ tls_as_opt='--fatal-warnings'
4002         #~ ;;
4003   #~ s390-*-*)
4004     #~ conftest_s='
4005         #~ .section ".tdata","awT",@progbits
4006 #~ foo: .long   25
4007         #~ .text
4008         #~ .long        foo@TLSGD
4009         #~ .long        foo@TLSLDM
4010         #~ .long        foo@DTPOFF
4011         #~ .long        foo@NTPOFF
4012         #~ .long        foo@GOTNTPOFF
4013         #~ .long        foo@INDNTPOFF
4014         #~ l    %r1,foo@GOTNTPOFF(%r12)
4015         #~ l    %r1,0(%r1):tls_load:foo
4016         #~ bas  %r14,0(%r1,%r13):tls_gdcall:foo
4017         #~ bas  %r14,0(%r1,%r13):tls_ldcall:foo'
4018         #~ tls_as_opt="-m31 --fatal-warnings"
4019         #~ ;;
4020   #~ s390x-*-*)
4021     #~ conftest_s='
4022         #~ .section ".tdata","awT",@progbits
4023 #~ foo: .long   25
4024         #~ .text
4025         #~ .quad        foo@TLSGD
4026         #~ .quad        foo@TLSLDM
4027         #~ .quad        foo@DTPOFF
4028         #~ .quad        foo@NTPOFF
4029         #~ .quad        foo@GOTNTPOFF
4030         #~ lg   %r1,foo@GOTNTPOFF(%r12)
4031         #~ larl %r1,foo@INDNTPOFF
4032         #~ brasl        %r14,__tls_get_offset@PLT:tls_gdcall:foo
4033         #~ brasl        %r14,__tls_get_offset@PLT:tls_ldcall:foo'
4034         #~ tls_as_opt="-m64 -Aesame --fatal-warnings"
4035         #~ ;;
4036   #~ sh-*-* | sh[123456789lbe]*-*-*)
4037     #~ conftest_s='
4038         #~ .section ".tdata","awT",@progbits
4039 #~ foo: .long   25
4040         #~ .text
4041         #~ .long        foo@TLSGD
4042         #~ .long        foo@TLSLDM
4043         #~ .long        foo@DTPOFF
4044         #~ .long        foo@GOTTPOFF
4045         #~ .long        foo@TPOFF'
4046         #~ tls_as_opt=--fatal-warnings
4047         #~ ;;
4048   #~ sparc*-*-*)
4049     #~ case "$target" in
4050       #~ sparc*-sun-solaris2.*)
4051         #~ on_solaris=yes
4052         #~ ;;
4053       #~ *)
4054         #~ on_solaris=no
4055         #~ ;;
4056     #~ esac
4057     #~ if test x$on_solaris = xyes && test x$gas_flag = xno; then
4058       #~ conftest_s='
4059         #~ .section ".tdata",#alloc,#write,#tls'
4060     #~ else
4061       #~ conftest_s='
4062         #~ .section ".tdata","awT",@progbits'
4063         #~ tls_as_opt="-32 --fatal-warnings"
4064     #~ fi
4065     #~ conftest_s="$conftest_s
4066 #~ foo: .long   25
4067         #~ .text
4068         #~ sethi        %tgd_hi22(foo), %o0
4069         #~ add  %o0, %tgd_lo10(foo), %o1
4070         #~ add  %l7, %o1, %o0, %tgd_add(foo)
4071         #~ call __tls_get_addr, %tgd_call(foo)
4072         #~ sethi        %tldm_hi22(foo), %l1
4073         #~ add  %l1, %tldm_lo10(foo), %l2
4074         #~ add  %l7, %l2, %o0, %tldm_add(foo)
4075         #~ call __tls_get_addr, %tldm_call(foo)
4076         #~ sethi        %tldo_hix22(foo), %l3
4077         #~ xor  %l3, %tldo_lox10(foo), %l4
4078         #~ add  %o0, %l4, %l5, %tldo_add(foo)
4079         #~ sethi        %tie_hi22(foo), %o3
4080         #~ add  %o3, %tie_lo10(foo), %o3
4081         #~ ld   [%l7 + %o3], %o2, %tie_ld(foo)
4082         #~ add  %g7, %o2, %o4, %tie_add(foo)
4083         #~ sethi        %tle_hix22(foo), %l1
4084         #~ xor  %l1, %tle_lox10(foo), %o5
4085         #~ ld   [%g7 + %o5], %o1"
4086         #~ ;;
4087   #~ tilepro*-*-*)
4088       #~ conftest_s='
4089         #~ .section ".tdata","awT",@progbits
4090 #~ foo: .long   25
4091         #~ .text
4092         #~ addli        r0, zero, tls_gd(foo)
4093         #~ auli r0, zero, tls_gd_ha16(foo)
4094         #~ addli        r0, r0, tls_gd_lo16(foo)
4095         #~ jal  __tls_get_addr
4096         #~ addli        r0, zero, tls_ie(foo)
4097         #~ auli r0, r0, tls_ie_ha16(foo)
4098         #~ addli        r0, r0, tls_ie_lo16(foo)'
4099         #~ tls_as_opt="--fatal-warnings"
4100         #~ ;;
4101   #~ tilegx*-*-*)
4102       #~ conftest_s='
4103         #~ .section ".tdata","awT",@progbits
4104 #~ foo: .long   25
4105         #~ .text
4106         #~ shl16insli r0, zero, hw0_last_tls_gd(foo)
4107         #~ shl16insli r0, zero, hw1_last_tls_gd(foo)
4108         #~ shl16insli r0, r0,   hw0_tls_gd(foo)
4109         #~ jal     __tls_get_addr
4110         #~ shl16insli r0, zero, hw1_last_tls_ie(foo)
4111         #~ shl16insli r0, r0,   hw0_tls_ie(foo)'
4112         #~ tls_as_opt="--fatal-warnings"
4113         #~ ;;
4114   #~ xtensa*-*-*)
4115     #~ conftest_s='
4116         #~ .section ".tdata","awT",@progbits
4117 #~ foo: .long   25
4118         #~ .text
4119         #~ movi a8, foo@TLSFUNC
4120         #~ movi a10, foo@TLSARG
4121         #~ callx8.tls a8, foo@TLSCALL'
4122         #~ ;;
4123 #~ changequote([,])dnl
4124 #~ esac
4125 #~ set_have_as_tls=no
4126 #~ if test "x$enable_tls" = xno ; then
4127   #~ : # TLS explicitly disabled.
4128 #~ elif test "x$enable_tls" = xyes ; then
4129   #~ set_have_as_tls=yes # TLS explicitly enabled.
4130 #~ elif test -z "$conftest_s"; then
4131   #~ : # If we don't have a check, assume no support.
4132 #~ else
4133   #~ gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
4134   #~ [$tls_as_opt], [$conftest_s],,
4135   #~ [set_have_as_tls=yes])
4136 #~ fi
4137 #~ if test $set_have_as_tls = yes ; then
4138   #~ AC_DEFINE(HAVE_AS_TLS, 1,
4139             #~ [Define if your assembler and linker support thread-local storage.])
4140 #~ fi
4142 # Target-specific assembler checks.
4144 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
4145 gcc_cv_ld_static_dynamic=no
4146 gcc_cv_ld_static_option='-Bstatic'
4147 gcc_cv_ld_dynamic_option='-Bdynamic'
4148 if test $in_tree_ld = yes ; then
4149   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
4150     gcc_cv_ld_static_dynamic=yes
4151   fi
4152 elif test x$gcc_cv_ld != x; then
4153   # Check if linker supports -Bstatic/-Bdynamic option
4154   if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
4155      && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
4156       gcc_cv_ld_static_dynamic=yes
4157   else
4158     case "$target" in
4159       # AIX ld uses -b flags
4160       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
4161         gcc_cv_ld_static_dynamic=yes
4162         gcc_cv_ld_static_option="-bstatic"
4163         gcc_cv_ld_dynamic_option="-bdynamic"
4164         ;;
4165       # HP-UX ld uses -a flags to select between shared and archive.
4166       *-*-hpux*)
4167         if test x"$gnu_ld" = xno; then
4168           gcc_cv_ld_static_dynamic=yes
4169           gcc_cv_ld_static_option="-aarchive_shared"
4170           gcc_cv_ld_dynamic_option="-adefault"
4171         fi
4172         ;;
4173       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
4174       *-*-solaris2*)
4175         gcc_cv_ld_static_dynamic=yes
4176         ;;
4177     esac
4178   fi
4180 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
4181         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
4182 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
4183         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
4184 [Define to the linker option to disable use of shared objects.])
4185         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
4186 [Define to the linker option to enable use of shared objects.])
4188 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
4190 AC_MSG_CHECKING(linker --version-script option)
4191 gcc_cv_ld_version_script=no
4192 ld_version_script_option=''
4193 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4194   gcc_cv_ld_version_script=yes
4195   ld_version_script_option='--version-script'
4196 elif test x$gcc_cv_ld != x; then
4197   case "$target" in
4198     # Solaris 2 ld always supports -M.  It also supports a subset of
4199     # --version-script since Solaris 11.4, but requires
4200     # -z gnu-version-script-compat to activate.
4201     *-*-solaris2*)
4202       gcc_cv_ld_version_script=yes
4203       ld_version_script_option='-M'
4204       ;;
4205   esac
4207 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4208 AC_MSG_RESULT($gcc_cv_ld_version_script)
4209 AC_SUBST(ld_version_script_option)
4211 AC_MSG_CHECKING(linker soname option)
4212 gcc_cv_ld_soname=no
4213 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4214   gcc_cv_ld_soname=yes
4215   ld_soname_option='-soname'
4216 elif test x$gcc_cv_ld != x; then
4217   case "$target" in
4218     *-*-darwin*)
4219       gcc_cv_ld_soname=yes
4220       ld_soname_option='-install_name'
4221       ;;
4222     # Solaris 2 ld always supports -h.  It also supports --soname for GNU
4223     # ld compatiblity since some Solaris 10 update.
4224     *-*-solaris2*)
4225       gcc_cv_ld_soname=yes
4226       ld_soname_option='-h'
4227       ;;
4228   esac
4230 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4231 AC_MSG_RESULT($gcc_cv_ld_soname)
4232 AC_SUBST(ld_soname_option)
4234 if test x"$demangler_in_ld" = xyes; then
4235   AC_MSG_CHECKING(linker --demangle support)
4236   gcc_cv_ld_demangle=no
4237   if test $in_tree_ld = yes; then
4238     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 \
4239       gcc_cv_ld_demangle=yes
4240     fi
4241   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
4242     # Check if the GNU linker supports --demangle option
4243     if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
4244       gcc_cv_ld_demangle=yes
4245     fi
4246   fi
4247   if test x"$gcc_cv_ld_demangle" = xyes; then
4248     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
4249 [Define if your linker supports --demangle option.])
4250   fi
4251   AC_MSG_RESULT($gcc_cv_ld_demangle)
4254 AC_MSG_CHECKING(linker plugin support)
4255 gcc_cv_lto_plugin=0
4256 if test -f liblto_plugin.la; then
4257   save_ld_ver="$ld_ver"
4258   save_ld_vers_major="$ld_vers_major"
4259   save_ld_vers_minor="$ld_vers_minor"
4260   save_ld_is_gold="$ld_is_gold"
4262   ld_is_gold=no
4264   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4265     ld_ver="GNU ld"
4266     # FIXME: ld_is_gold?
4267     ld_vers_major="$gcc_cv_gld_major_version"
4268     ld_vers_minor="$gcc_cv_gld_minor_version"
4269   else
4270     # Determine plugin linker version.
4271     # FIXME: Partial duplicate from above, generalize.
4272 changequote(,)dnl
4273     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4274     if echo "$ld_ver" | grep GNU > /dev/null; then
4275       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4276         ld_is_gold=yes
4277         ld_vers=`echo $ld_ver | sed -n \
4278             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4279       else
4280         ld_vers=`echo $ld_ver | sed -n \
4281             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4282       fi
4283       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4284       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4285     fi
4286 changequote([,])dnl
4287   fi
4289   # Determine plugin support.
4290   if echo "$ld_ver" | grep GNU > /dev/null; then
4291     # Require GNU ld or gold 2.21+ for plugin support by default.
4292     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4293       gcc_cv_lto_plugin=2
4294     elif test "$ld_is_mold" = yes; then
4295       gcc_cv_lto_plugin=2
4296     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4297     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4298       gcc_cv_lto_plugin=1
4299     fi
4300   fi
4302   ld_ver="$save_ld_ver"
4303   ld_vers_major="$save_ld_vers_major"
4304   ld_vers_minor="$save_ld_vers_minor"
4305   ld_is_gold="$save_ld_is_gold"
4307 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4308   [Define to the level of your linker's plugin support.])
4309 AC_MSG_RESULT($gcc_cv_lto_plugin)
4311 # Target OS-specific assembler checks.
4313 #~ case "$target_os" in
4314   #~ darwin*)
4315     #~ gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4316       #~ gcc_cv_as_mmacosx_version_min,
4317       #~ [-mmacosx-version-min=10.1], [.text],,
4318       #~ [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4319         #~ [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
4320     #~ ;;
4321 #~ esac
4323 # Target CPU-specific assembler checks.
4325 #~ case "$target" in
4326   #~ aarch64*-*-*)
4327     #~ gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,
4328                           #~ [-mabi=lp64], [.text],,,)
4329     #~ if test x$gcc_cv_as_aarch64_mabi = xyes; then
4330       #~ AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4331                 #~ [Define if your assembler supports the -mabi option.])
4332     #~ else
4333       #~ if test x$with_abi = xilp32; then
4334         #~ AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4335                      #~ Upgrade the Assembler.])
4336       #~ fi
4337       #~ if test x"$with_multilib_list" = xdefault; then
4338         #~ TM_MULTILIB_CONFIG=lp64
4339       #~ else
4340         #~ aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4341         #~ for aarch64_multilib in ${aarch64_multilibs}; do
4342           #~ case ${aarch64_multilib} in
4343             #~ ilp32)
4344               #~ AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4345                             #~ Upgrade the Assembler.])
4346               #~ ;;
4347             #~ *)
4348               #~ ;;
4349           #~ esac
4350         #~ done
4351       #~ fi
4352     #~ fi
4353     #~ # Check if we have binutils support for relocations types needed by -fpic
4354     #~ gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,
4355     #~ [
4356         #~ .text
4357         #~ ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
4358     #~ ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4359         #~ [Define if your assembler supports relocs needed by -fpic.])])
4360     #~ # Enable Branch Target Identification Mechanism and Return Address
4361     #~ # Signing by default.
4362     #~ AC_ARG_ENABLE(standard-branch-protection,
4363     #~ [
4364 #~ AS_HELP_STRING([--enable-standard-branch-protection],
4365         #~ [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4366 #~ AS_HELP_STRING([--disable-standard-branch-protection],
4367         #~ [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4368     #~ ],
4369       #~ [
4370         #~ case $enableval in
4371           #~ yes)
4372             #~ tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4373             #~ ;;
4374           #~ no)
4375             #~ ;;
4376           #~ *)
4377             #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4378   #~ Valid choices are 'yes' and 'no'.])
4379             #~ ;;
4380         #~ esac
4381       #~ ],
4382     #~ [])
4383     #~ # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4384     #~ AC_ARG_ENABLE(fix-cortex-a53-835769,
4385     #~ [
4386 #~ AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4387         #~ [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4388 #~ AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4389         #~ [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4390     #~ ],
4391       #~ [
4392         #~ case $enableval in
4393           #~ yes)
4394             #~ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4395             #~ ;;
4396           #~ no)
4397             #~ ;;
4398           #~ *)
4399             #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4400   #~ Valid choices are 'yes' and 'no'.])
4401             #~ ;;
4403         #~ esac
4404       #~ ],
4405     #~ [])
4406     #~ # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4407     #~ AC_ARG_ENABLE(fix-cortex-a53-843419,
4408     #~ [
4409 #~ AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4410         #~ [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4411 #~ AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4412         #~ [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4413     #~ ],
4414       #~ [
4415         #~ case $enableval in
4416           #~ yes)
4417             #~ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4418             #~ ;;
4419           #~ no)
4420             #~ ;;
4421           #~ *)
4422             #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4423   #~ Valid choices are 'yes' and 'no'.])
4424             #~ ;;
4426         #~ esac
4427       #~ ],
4428     #~ [])
4429     #~ ;;
4431   #~ # All TARGET_ABI_OSF targets.
4432   #~ alpha*-*-linux* | alpha*-*-*bsd*)
4433     #~ gcc_GAS_CHECK_FEATURE([explicit relocation support],
4434         #~ gcc_cv_as_alpha_explicit_relocs,,
4435 #~ [    .set nomacro
4436         #~ .text
4437         #~ extbl        $3, $2, $3      !lituse_bytoff!1
4438         #~ ldq  $2, a($29)      !literal!1
4439         #~ ldq  $4, b($29)      !literal!2
4440         #~ ldq_u        $3, 0($2)       !lituse_base!1
4441         #~ ldq  $27, f($29)     !literal!5
4442         #~ jsr  $26, ($27), f   !lituse_jsr!5
4443         #~ ldah $29, 0($26)     !gpdisp!3
4444         #~ lda  $0, c($29)      !gprel
4445         #~ ldah $1, d($29)      !gprelhigh
4446         #~ lda  $1, d($1)       !gprellow
4447         #~ lda  $29, 0($29)     !gpdisp!3],,
4448     #~ [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4449   #~ [Define if your assembler supports explicit relocations.])])
4450     #~ gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4451         #~ gcc_cv_as_alpha_jsrdirect_relocs,,
4452 #~ [    .set nomacro
4453         #~ .text
4454         #~ ldq  $27, a($29)     !literal!1
4455         #~ jsr  $26, ($27), a   !lituse_jsrdirect!1],,
4456     #~ [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4457   #~ [Define if your assembler supports the lituse_jsrdirect relocation.])])
4458     #~ ;;
4460   #~ avr-*-*)
4461     #~ gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,
4462       #~ [--mlink-relax], [.text],,
4463       #~ [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4464                 #~ [Define if your avr assembler supports --mlink-relax option.])])
4466     #~ gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,
4467       #~ [-mrmw], [.text],,
4468       #~ [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4469                 #~ [Define if your avr assembler supports -mrmw option.])])
4471     #~ gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4472       #~ gcc_cv_as_avr_mgccisr,
4473       #~ [-mgcc-isr], [.text
4474                     #~ __gcc_isr 1
4475                     #~ __gcc_isr 2
4476                     #~ __gcc_isr 0,r24
4477                    #~ ],,
4478       #~ [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4479                 #~ [Define if your avr assembler supports -mgcc-isr option.])])
4481     #~ # Check how default linker description file implements .rodata for
4482     #~ # avrxmega3 (PR21472).  avr-gcc assumes .rodata is *not* loaded to
4483     #~ # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4484     #~ AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4485     #~ cat > conftest.s <<EOF
4486         #~ .section .rodata,"a",@progbits
4487         #~ .global xxvaryy
4488     #~ ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4489     #~ xxvaryy:
4490         #~ .word 1
4491 #~ EOF
4492     #~ rm -f conftest.nm
4493     #~ AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4494     #~ AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4495     #~ AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4496     #~ if test -s conftest.nm
4497     #~ then
4498         #~ if grep ' R xxvaryy' conftest.nm > /dev/null; then
4499             #~ AC_MSG_RESULT(yes)
4500             #~ AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4501                 #~ [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4502         #~ else
4503             #~ AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4504             #~ echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4505             #~ cat conftest.nm >&AS_MESSAGE_LOG_FD
4506             #~ avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4507             #~ AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4508         #~ fi
4509     #~ else
4510         #~ AC_MSG_RESULT(test failed)
4511         #~ echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4512         #~ cat conftest.s >&AS_MESSAGE_LOG_FD
4513         #~ AC_MSG_WARN([[see `config.log' for details]])
4514     #~ fi
4515     #~ rm -f conftest.s conftest.o conftest.elf conftest.nm
4516     #~ ;;
4518   #~ cris-*-*)
4519     #~ gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4520       #~ gcc_cv_as_cris_no_mul_bug,
4521       #~ [-no-mul-bug-abort], [.text],,
4522       #~ [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4523                 #~ [Define if your assembler supports the -no-mul-bug-abort option.])])
4524     #~ ;;
4526   #~ sparc*-*-*)
4527     #~ gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,
4528       #~ [-relax], [.text],,
4529       #~ [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4530                 #~ [Define if your assembler supports -relax option.])])
4532     #~ gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4533       #~ gcc_cv_as_sparc_gotdata_op,
4534       #~ [-K PIC],
4535 #~ [.text
4536 #~ .align 4
4537 #~ foo:
4538         #~ nop
4539 #~ bar:
4540         #~ sethi %gdop_hix22(foo), %g1
4541         #~ xor    %g1, %gdop_lox10(foo), %g1
4542         #~ ld    [[%l7 + %g1]], %g2, %gdop(foo)],
4543       #~ [if test x$gcc_cv_ld != x \
4544        #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4545          #~ if test x$gcc_cv_objdump != x; then
4546            #~ if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4547               #~ | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4548                #~ gcc_cv_as_sparc_gotdata_op=no
4549            #~ else
4550                #~ gcc_cv_as_sparc_gotdata_op=yes
4551            #~ fi
4552          #~ fi
4553        #~ fi
4554        #~ rm -f conftest],
4555       #~ [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4556                 #~ [Define if your assembler and linker support GOTDATA_OP relocs.])])
4558     #~ gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4559       #~ gcc_cv_as_sparc_ua_pcrel,
4560       #~ [-K PIC],
4561 #~ [.text
4562 #~ foo:
4563         #~ nop
4564 #~ .data
4565 #~ .align 4
4566 #~ .byte 0
4567 #~ .uaword %r_disp32(foo)],
4568       #~ [if test x$gcc_cv_ld != x \
4569        #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4570          #~ gcc_cv_as_sparc_ua_pcrel=yes
4571        #~ fi
4572        #~ rm -f conftest],
4573       #~ [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4574                 #~ [Define if your assembler and linker support unaligned PC relative relocs.])
4576       #~ gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4577         #~ gcc_cv_as_sparc_ua_pcrel_hidden,
4578         #~ [-K PIC],
4579 #~ [.data
4580 #~ .align 4
4581 #~ .byte 0x31
4582 #~ .uaword %r_disp32(foo)
4583 #~ .byte 0x32, 0x33, 0x34
4584 #~ .global foo
4585 #~ .hidden foo
4586 #~ foo:
4587 #~ .skip 4],
4588         #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4589          #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4590          #~ && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4591             #~ | grep ' 31000000 07323334' > /dev/null 2>&1; then
4592             #~ if $gcc_cv_objdump -R conftest 2> /dev/null \
4593                #~ | grep 'DISP32' > /dev/null 2>&1; then
4594                 #~ :
4595             #~ else
4596                 #~ gcc_cv_as_sparc_ua_pcrel_hidden=yes
4597             #~ fi
4598          #~ fi
4599          #~ rm -f conftest],
4600          #~ [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4601                    #~ [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4602     #~ ]) # unaligned pcrel relocs
4604     #~ gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4605       #~ gcc_cv_as_sparc_offsetable_lo10,
4606       #~ [-xarch=v9],
4607 #~ [.text
4608         #~ or %g1, %lo(ab) + 12, %g1
4609         #~ or %g1, %lo(ab + 12), %g1],
4610       #~ [if test x$gcc_cv_objdump != x \
4611        #~ && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4612           #~ | grep ' 82106000 82106000' > /dev/null 2>&1; then
4613          #~ gcc_cv_as_sparc_offsetable_lo10=yes
4614        #~ fi],
4615        #~ [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4616                  #~ [Define if your assembler supports offsetable %lo().])])
4618     #~ gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4619       #~ gcc_cv_as_sparc_fmaf,
4620       #~ [-xarch=v9d],
4621       #~ [.text
4622        #~ .register %g2, #scratch
4623        #~ .register %g3, #scratch
4624        #~ .align 4
4625        #~ fmaddd %f0, %f2, %f4, %f6
4626        #~ addxccc %g1, %g2, %g3
4627        #~ fsrl32 %f2, %f4, %f8
4628        #~ fnaddd %f10, %f12, %f14],,
4629       #~ [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4630                 #~ [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4632     #~ gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4633       #~ gcc_cv_as_sparc_sparc4,
4634       #~ [-xarch=sparc4],
4635       #~ [.text
4636        #~ .register %g2, #scratch
4637        #~ .register %g3, #scratch
4638        #~ .align 4
4639        #~ cxbe %g2, %g3, 1f
4640 #~ 1:     cwbneg %g2, %g3, 1f
4641 #~ 1:     sha1
4642        #~ md5
4643        #~ aes_kexpand0 %f4, %f6, %f8
4644        #~ des_round %f38, %f40, %f42, %f44
4645        #~ camellia_f %f54, %f56, %f58, %f60
4646        #~ kasumi_fi_xor %f46, %f48, %f50, %f52],,
4647       #~ [AC_DEFINE(HAVE_AS_SPARC4, 1,
4648                 #~ [Define if your assembler supports SPARC4 instructions.])])
4650     #~ gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4651       #~ gcc_cv_as_sparc_sparc5,
4652       #~ [-xarch=sparc5],
4653       #~ [.text
4654        #~ .register %g2, #scratch
4655        #~ .register %g3, #scratch
4656        #~ .align 4
4657        #~ subxc %g1, %g2, %g3
4658        #~ fpadd8 %f0, %f2, %f4],,
4659       #~ [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4660                 #~ [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4662     #~ gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4663       #~ gcc_cv_as_sparc_sparc6,
4664       #~ [-xarch=sparc6],
4665       #~ [.text
4666        #~ .register %g2, #scratch
4667        #~ .register %g3, #scratch
4668        #~ .align 4
4669        #~ rd %entropy, %g1
4670        #~ fpsll64x %f0, %f2, %f4],,
4671       #~ [AC_DEFINE(HAVE_AS_SPARC6, 1,
4672                 #~ [Define if your assembler supports SPARC6 instructions.])])
4674     #~ gcc_GAS_CHECK_FEATURE([LEON instructions],
4675       #~ gcc_cv_as_sparc_leon,
4676       #~ [-Aleon],
4677       #~ [.text
4678        #~ .register %g2, #scratch
4679        #~ .register %g3, #scratch
4680        #~ .align 4
4681        #~ smac %g2, %g3, %g1
4682        #~ umac %g2, %g3, %g1
4683        #~ casa [[%g2]] 0xb, %g3, %g1],,
4684       #~ [AC_DEFINE(HAVE_AS_LEON, 1,
4685                 #~ [Define if your assembler supports LEON instructions.])])
4686     #~ ;;
4688 #~ changequote(,)dnl
4689   #~ i[34567]86-*-* | x86_64-*-*)
4690 #~ changequote([,])dnl
4691     #~ case $target_os in
4692       #~ cygwin*)
4693         #~ # Full C++ conformance when using a shared libstdc++-v3 requires some
4694         #~ # support from the Cygwin DLL, which in more recent versions exports
4695         #~ # wrappers to aid in interposing and redirecting operators new, delete,
4696         #~ # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
4697         #~ # are configuring for a version of Cygwin that exports the wrappers.
4698         #~ if test x$host = x$target && test x$host_cpu = xi686; then
4699           #~ AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4700         #~ else
4701           #~ # Can't check presence of libc functions during cross-compile, so
4702           #~ # we just have to assume we're building for an up-to-date target.
4703           #~ gcc_ac_cygwin_dll_wrappers=yes
4704         #~ fi
4705         #~ AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4706           #~ [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4707           #~ [Define if you want to generate code by default that assumes that the
4708            #~ Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4709     #~ esac
4710     #~ case $target_os in
4711       #~ cygwin* | pe | mingw32*)
4712         #~ # Recent binutils allows the three-operand form of ".comm" on PE.  This
4713         #~ # definition is used unconditionally to initialise the default state of
4714         #~ # the target option variable that governs usage of the feature.
4715         #~ gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,,
4716           #~ [.comm foo,1,32])
4717         #~ AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4718           #~ [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4719           #~ [Define if your assembler supports specifying the alignment
4720            #~ of objects allocated using the GAS .comm command.])
4721         #~ # Used for DWARF 2 in PE
4722         #~ gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4723           #~ gcc_cv_as_ix86_pe_secrel32,,
4724 #~ [.text
4725 #~ foo: nop
4726 #~ .data
4727         #~ .secrel32 foo],
4728           #~ [if test x$gcc_cv_ld != x \
4729            #~ && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4730              #~ gcc_cv_as_ix86_pe_secrel32=yes
4731            #~ fi
4732            #~ rm -f conftest],
4733           #~ [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4734             #~ [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4735         #~ # Test if the assembler supports the extended form of the .section
4736         #~ # directive that specifies section alignment.  LTO support uses this,
4737         #~ # but normally only after installation, so we warn but don't fail the
4738         #~ # configure if LTO is enabled but the assembler does not support it.
4739         #~ gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4740           #~ -fatal-warnings,[.section lto_test,"dr0"])
4741         #~ if test x$gcc_cv_as_section_has_align != xyes; then
4742           #~ case ",$enable_languages," in
4743             #~ *,lto,*)
4744               #~ AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4745               #~ ;;
4746           #~ esac
4747         #~ fi
4748         #~ ;;
4749     #~ esac
4750     #~ case $target_os in
4751        #~ darwin2* | darwin19*)
4752         #~ gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
4753           #~ gcc_cv_as_mllvm_x86_pad_for_align,
4754           #~ [-mllvm -x86-pad-for-align=false], [.text],,
4755           #~ [AC_DEFINE(HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN, 1,
4756             #~ [Define if your Mac OS X assembler supports -mllvm -x86-pad-for-align=false.])])
4757        #~ ;;
4758     #~ esac
4760     #~ gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,
4761       #~ [-xbrace_comment=no], [.text],,
4762       #~ [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4763                 #~ [Define if your assembler supports -xbrace_comment option.])])
4765     #~ gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4766        #~ gcc_cv_as_ix86_filds,,
4767        #~ [filds (%ebp); fists (%ebp)],,
4768        #~ [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4769          #~ [Define if your assembler uses filds and fists mnemonics.])])
4771     #~ gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4772        #~ gcc_cv_as_ix86_fildq,,
4773        #~ [fildq (%ebp); fistpq (%ebp)],,
4774        #~ [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4775          #~ [Define if your assembler uses fildq and fistq mnemonics.])])
4777     #~ gcc_GAS_CHECK_FEATURE([cmov syntax],
4778       #~ gcc_cv_as_ix86_cmov_sun_syntax,,
4779       #~ [cmovl.l %edx, %eax],,
4780       #~ [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4781         #~ [Define if your assembler supports the Sun syntax for cmov.])])
4783     #~ gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4784       #~ gcc_cv_as_ix86_ffreep,,
4785       #~ [ffreep %st(1)],,
4786       #~ [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4787         #~ [Define if your assembler supports the ffreep mnemonic.])])
4789     #~ gcc_GAS_CHECK_FEATURE([.quad directive],
4790       #~ gcc_cv_as_ix86_quad,,
4791       #~ [.quad 0],,
4792       #~ [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4793         #~ [Define if your assembler supports the .quad directive.])])
4795     #~ gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4796       #~ gcc_cv_as_ix86_sahf,,
4797       #~ [.code64
4798        #~ sahf],,
4799       #~ [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4800         #~ [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4802     #~ gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4803       #~ gcc_cv_as_ix86_interunit_movq,,
4804       #~ [.code64
4805        #~ movq %mm0, %rax
4806        #~ movq %rax, %xmm0])
4807     #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4808       #~ [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4809       #~ [Define if your assembler supports interunit movq mnemonic.])
4811     #~ gcc_GAS_CHECK_FEATURE([hle prefixes],
4812       #~ gcc_cv_as_ix86_hle,,
4813       #~ [lock xacquire cmpxchg %esi, (%ecx)],,
4814       #~ [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4815         #~ [Define if your assembler supports HLE prefixes.])])
4817     #~ gcc_GAS_CHECK_FEATURE([swap suffix],
4818       #~ gcc_cv_as_ix86_swap,,
4819       #~ [movl.s %esp, %ebp],,
4820       #~ [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4821         #~ [Define if your assembler supports the swap suffix.])])
4823     #~ gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4824       #~ gcc_cv_as_ix86_diff_sect_delta,,
4825       #~ [.section .rodata
4826 #~ .L1:
4827         #~ .long .L2-.L1
4828         #~ .long .L3-.L1
4829         #~ .text
4830 #~ .L3:    nop
4831 #~ .L2:    nop],,
4832       #~ [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4833         #~ [Define if your assembler supports the subtraction of symbols in different sections.])])
4835     #~ gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4836         #~ gcc_cv_as_ix86_rep_lock_prefix,,
4837         #~ [rep movsl
4838          #~ rep ret
4839          #~ rep nop
4840          #~ rep bsf %ecx, %eax
4841          #~ rep bsr %ecx, %eax
4842          #~ lock addl %edi, (%eax,%esi)
4843          #~ lock orl $0, (%esp)],,
4844         #~ [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4845           #~ [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4847     #~ gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4848         #~ gcc_cv_as_ix86_ud2,,
4849         #~ [ud2],,
4850       #~ [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4851         #~ [Define if your assembler supports the 'ud2' mnemonic.])])
4853     #~ # Enforce 32-bit output with gas and gld.
4854     #~ if test x$gas = xyes; then
4855       #~ as_ix86_gas_32_opt="--32"
4856     #~ fi
4857     #~ if echo "$ld_ver" | grep GNU > /dev/null; then
4858       #~ if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4859         #~ ld_ix86_gld_32_opt="-melf_i386_sol2"
4860       #~ else
4861         #~ ld_ix86_gld_32_opt="-melf_i386"
4862       #~ fi
4863     #~ fi
4865     #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4866         #~ gcc_cv_as_ix86_tlsgdplt,
4867         #~ [$as_ix86_gas_32_opt],
4868         #~ [call    tls_gd@tlsgdplt],
4869         #~ [if test x$gcc_cv_ld != x \
4870          #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4871            #~ gcc_cv_as_ix86_tlsgdplt=yes
4872          #~ fi
4873          #~ rm -f conftest],
4874       #~ [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4875         #~ [Define if your assembler and linker support @tlsgdplt.])])
4877     #~ conftest_s='
4878         #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4879 #~ tls_ld:
4880         #~ .section .text,"ax",@progbits
4881          #~ call    tls_ld@tlsldmplt'
4883     #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4884         #~ gcc_cv_as_ix86_tlsldmplt,
4885         #~ [$as_ix86_gas_32_opt],
4886         #~ [$conftest_s],
4887         #~ [if test x$gcc_cv_ld != x \
4888          #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4889            #~ gcc_cv_as_ix86_tlsldmplt=yes
4890          #~ fi
4891          #~ rm -f conftest])
4892     #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4893       #~ [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4894       #~ [Define to 1 if your assembler and linker support @tlsldmplt.])
4896     #~ conftest_s='
4897         #~ .section .text,"ax",@progbits
4898         #~ .globl  _start
4899         #~ .type   _start, @function
4900 #~ _start:      
4901         #~ leal value@tlsldm(%ebx), %eax
4902         #~ call ___tls_get_addr@plt
4904         #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4905         #~ .type        value, @object
4906 #~ value:'
4907     #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4908         #~ gcc_cv_as_ix86_tlsldm,
4909         #~ [$as_ix86_gas_32_opt],
4910         #~ [$conftest_s],
4911         #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4912             #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4913            #~ if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4914               #~ || dis conftest 2>/dev/null | grep nop > /dev/null; then
4915              #~ gcc_cv_as_ix86_tlsldm=yes
4916            #~ fi
4917          #~ fi
4918          #~ rm -f conftest])
4919     #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4920       #~ [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4921       #~ [Define to 1 if your assembler and linker support @tlsldm.])
4923     #~ conftest_s='
4924         #~ .data
4925 #~ bar:
4926         #~ .byte 1
4927         #~ .text
4928         #~ .global _start
4929 #~ _start:
4930          #~ cmpl $0, bar@GOT
4931          #~ jmp *_start@GOT'
4932     #~ gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4933         #~ gcc_cv_as_ix86_got32x,
4934         #~ [$as_ix86_gas_32_opt],
4935         #~ [$conftest_s],
4936         #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4937             #~ && test x$gcc_cv_readelf != x \
4938             #~ && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4939                #~ | grep R_386_GOT32X > /dev/null 2>&1 \
4940             #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4941            #~ if $gcc_cv_objdump -dw conftest 2>&1 \
4942               #~ | grep 0xffffff > /dev/null 2>&1; then
4943              #~ gcc_cv_as_ix86_got32x=no
4944            #~ else
4945              #~ gcc_cv_as_ix86_got32x=yes
4946            #~ fi
4947          #~ fi
4948          #~ rm -f conftest])
4949     #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4950       #~ [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4951       #~ [Define 0/1 if your assembler and linker support @GOT.])
4953     #~ gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4954       #~ gcc_cv_as_ix86_gotoff_in_data,
4955       #~ [$as_ix86_gas_32_opt],
4956 #~ [    .text
4957 #~ .L0:
4958         #~ nop
4959         #~ .data
4960         #~ .long .L0@GOTOFF])
4961     #~ AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4962       #~ [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4963       #~ [Define true if the assembler supports '.long foo@GOTOFF'.])
4965     #~ conftest_s='
4966         #~ .section .text,"ax",@progbits
4967         #~ .globl  _start
4968         #~ .type   _start, @function
4969 #~ _start:
4970         #~ leal ld@tlsldm(%ecx), %eax
4971         #~ call *___tls_get_addr@GOT(%ecx)
4972         #~ leal gd@tlsgd(%ecx), %eax
4973         #~ call *___tls_get_addr@GOT(%ecx)
4975         #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4976         #~ .type        ld, @object
4977 #~ ld:
4978         #~ .byte 0
4979         #~ .globl  gd
4980         #~ .type        gd, @object
4981 #~ gd:
4982         #~ .byte 0'
4983     #~ gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4984         #~ gcc_cv_as_ix86_tls_get_addr_via_got,
4985         #~ [$as_ix86_gas_32_opt],
4986         #~ [$conftest_s],
4987         #~ [if test x$gcc_cv_ld != x \
4988             #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4989            #~ gcc_cv_as_ix86_tls_get_addr_via_got=yes
4990          #~ fi
4991          #~ rm -f conftest])
4992     #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4993       #~ [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4994       #~ [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4995     #~ ;;
4997   #~ ia64*-*-*)
4998     #~ gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4999         #~ gcc_cv_as_ia64_ltoffx_ldxmov_relocs,,
5000 #~ [    .text
5001         #~ addl r15 = @ltoffx(x#), gp
5002         #~ ;;
5003         #~ ld8.mov r16 = [[r15]], x#
5004 #~ ],,
5005     #~ [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
5006           #~ [Define if your assembler supports ltoffx and ldxmov relocations.])])
5008     #~ ;;
5010   #~ powerpc*-*-*)
5012     #~ case $target in
5013       #~ *-*-darwin*)
5014         #~ gcc_GAS_CHECK_FEATURE([.machine directive support],
5015           #~ gcc_cv_as_machine_directive,,
5016           #~ [  .machine ppc7400])
5017         #~ if test x$gcc_cv_as_machine_directive != xyes; then
5018           #~ echo "*** This target requires an assembler supporting \".machine\"" >&2
5019           #~ echo you can get it from: https://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
5020           #~ test x$build = x$target && exit 1
5021         #~ fi
5022         #~ ;;
5023     #~ esac
5025     #~ case $target in
5026       #~ *-*-aix*) conftest_s=' .machine "pwr5"
5027         #~ .csect .text[[PR]]
5028         #~ mfcr 3,128';;
5029       #~ *-*-darwin*) conftest_s='      .text
5030         #~ mfcr r3,128';;
5031       #~ *) conftest_s='        .machine power4
5032         #~ .text
5033         #~ mfcr 3,128';;
5034     #~ esac
5036     #~ gcc_GAS_CHECK_FEATURE([mfcr field support],
5037       #~ gcc_cv_as_powerpc_mfcrf,,
5038       #~ [$conftest_s],,
5039       #~ [AC_DEFINE(HAVE_AS_MFCRF, 1,
5040           #~ [Define if your assembler supports mfcr field.])])
5042     #~ case $target in
5043       #~ *-*-aix*) conftest_s=' .csect .text[[PR]]
5044 #~ LCF..0:
5045         #~ addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
5046       #~ *-*-darwin*)
5047         #~ conftest_s=' .text
5048 #~ LCF0:
5049         #~ addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
5050       #~ *) conftest_s='        .text
5051 #~ .LCF0:
5052         #~ addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
5053     #~ esac
5055     #~ gcc_GAS_CHECK_FEATURE([rel16 relocs],
5056       #~ gcc_cv_as_powerpc_rel16, -a32,
5057       #~ [$conftest_s],,
5058       #~ [AC_DEFINE(HAVE_AS_REL16, 1,
5059           #~ [Define if your assembler supports R_PPC_REL16 relocs.])])
5061     #~ case $target in
5062       #~ *-*-aix*) conftest_s=' .machine "pwr7"
5063         #~ .csect .text[[PR]]
5064         #~ lxvd2x 1,2,3';;
5065       #~ *) conftest_s='        .machine power7
5066         #~ .text
5067         #~ lxvd2x 1,2,3';;
5068     #~ esac
5070     #~ gcc_GAS_CHECK_FEATURE([vector-scalar support],
5071       #~ gcc_cv_as_powerpc_vsx, -a32,
5072       #~ [$conftest_s],,
5073       #~ [AC_DEFINE(HAVE_AS_VSX, 1,
5074           #~ [Define if your assembler supports VSX instructions.])])
5076     #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5077       #~ gcc_cv_as_powerpc_gnu_attribute,,
5078       #~ [.gnu_attribute 4,1],,
5079       #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5080           #~ [Define if your assembler supports .gnu_attribute.])])
5082     #~ gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
5083       #~ gcc_cv_as_powerpc_entry_markers,-a64 --fatal-warnings,
5084       #~ [ .reloc .,R_PPC64_ENTRY; nop],,
5085       #~ [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
5086           #~ [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
5088     #~ gcc_GAS_CHECK_FEATURE([plt sequence marker support],
5089       #~ gcc_cv_as_powerpc_pltseq_markers,-a32 --fatal-warnings,
5090       #~ [ .reloc .,R_PPC_PLTSEQ; nop],,
5091       #~ [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
5092           #~ [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
5094     #~ case $target in
5095       #~ *-*-aix*)
5096         #~ gcc_GAS_CHECK_FEATURE([AIX .ref support],
5097           #~ gcc_cv_as_aix_ref,,
5098           #~ [  .csect stuff[[rw]]
5099              #~ stuff:
5100                 #~ .long 1
5101                 #~ .extern sym
5102                 #~ .ref sym
5103           #~ ],,
5104           #~ [AC_DEFINE(HAVE_AS_REF, 1,
5105             #~ [Define if your assembler supports .ref])])
5107         #~ gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
5108           #~ gcc_cv_as_aix_dwloc,,
5109           #~ [  .dwsect 0xA0000
5110         #~ Lframe..0:
5111                 #~ .vbyte 4,Lframe..0
5112           #~ ],,
5113           #~ [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
5114             #~ [Define if your assembler supports AIX debug frame section label reference.])])
5115         #~ ;;
5116     #~ esac
5117     #~ ;;
5119   #~ mips*-*-*)
5120     #~ gcc_GAS_CHECK_FEATURE([explicit relocation support],
5121       #~ gcc_cv_as_mips_explicit_relocs,,
5122 #~ [    lw $4,%gp_rel(foo)($4)],,
5123       #~ [if test x$target_cpu_default = x
5124        #~ then target_cpu_default=MASK_EXPLICIT_RELOCS
5125        #~ else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
5126        #~ fi])
5128     #~ gcc_GAS_CHECK_FEATURE([-mno-shared support],
5129       #~ gcc_cv_as_mips_no_shared,[-mno-shared], [nop],,
5130       #~ [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
5131                  #~ [Define if the assembler understands -mno-shared.])])
5133     #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5134       #~ gcc_cv_as_mips_gnu_attribute,,
5135       #~ [.gnu_attribute 4,1],,
5136       #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5137           #~ [Define if your assembler supports .gnu_attribute.])])
5139     #~ gcc_GAS_CHECK_FEATURE([.module support],
5140       #~ gcc_cv_as_mips_dot_module,[-32],
5141       #~ [.module mips2
5142        #~ .module fp=xx],,
5143       #~ [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
5144           #~ [Define if your assembler supports .module.])])
5145     #~ if test x$gcc_cv_as_mips_dot_module = xno \
5146        #~ && test x$with_fp_32 != x; then
5147       #~ AC_MSG_ERROR(
5148         #~ [Requesting --with-fp-32= requires assembler support for .module.])
5149     #~ fi
5151     #~ gcc_GAS_CHECK_FEATURE([.micromips support],
5152       #~ gcc_cv_as_micromips_support,[--fatal-warnings],
5153       #~ [.set micromips],,
5154       #~ [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
5155           #~ [Define if your assembler supports the .set micromips directive])])
5157     #~ gcc_GAS_CHECK_FEATURE([.dtprelword support],
5158       #~ gcc_cv_as_mips_dtprelword,,
5159       #~ [.section .tdata,"awT",@progbits
5160 #~ x:
5161         #~ .word 2
5162         #~ .text
5163         #~ .dtprelword x+0x8000],,
5164       #~ [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5165           #~ [Define if your assembler supports .dtprelword.])])
5167     #~ gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
5168       #~ gcc_cv_as_mips_dspr1_mult,,
5169 #~ [    .set    mips32r2
5170         #~ .set nodspr2
5171         #~ .set dsp
5172         #~ madd $ac3,$4,$5
5173         #~ maddu        $ac3,$4,$5
5174         #~ msub $ac3,$4,$5
5175         #~ msubu        $ac3,$4,$5
5176         #~ mult $ac3,$4,$5
5177         #~ multu        $ac3,$4,$5],,
5178       #~ [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
5179           #~ [Define if your assembler supports DSPR1 mult.])])
5181     #~ AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
5182     #~ gcc_cv_as_ld_jalr_reloc=no
5183     #~ if test $gcc_cv_as_mips_explicit_relocs = yes; then
5184       #~ if test $in_tree_ld = yes ; then
5185         #~ 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 \
5186            #~ && test $in_tree_ld_is_elf = yes; then
5187           #~ gcc_cv_as_ld_jalr_reloc=yes
5188         #~ fi
5189       #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
5190         #~ echo '       .ent x' > conftest.s
5191         #~ echo 'x:     lw $2,%got_disp(y)($3)' >> conftest.s
5192         #~ echo '       lw $25,%call16(y)($28)' >> conftest.s
5193         #~ echo '       .reloc  1f,R_MIPS_JALR,y' >> conftest.s
5194         #~ echo '1:     jalr $25' >> conftest.s
5195         #~ echo '       .reloc  1f,R_MIPS_JALR,x' >> conftest.s
5196         #~ echo '1:     jalr $25' >> conftest.s
5197         #~ echo '       .end x' >> conftest.s
5198         #~ if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
5199            #~ && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
5200           #~ if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
5201              #~ && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
5202             #~ gcc_cv_as_ld_jalr_reloc=yes
5203           #~ fi
5204         #~ fi
5205         #~ rm -f conftest.*
5206       #~ fi
5207     #~ fi
5208     #~ if test $gcc_cv_as_ld_jalr_reloc = yes; then
5209       #~ if test x$target_cpu_default = x; then
5210         #~ target_cpu_default=MASK_RELAX_PIC_CALLS
5211       #~ else
5212         #~ target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
5213       #~ fi
5214     #~ fi
5215     #~ AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
5217     #~ AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
5218       #~ [gcc_cv_ld_mips_personality_relaxation],
5219       #~ [gcc_cv_ld_mips_personality_relaxation=no
5220        #~ if test $in_tree_ld = yes ; then
5221          #~ if test "$gcc_cv_gld_major_version" -eq 2 \
5222                  #~ -a "$gcc_cv_gld_minor_version" -ge 21 \
5223                  #~ -o "$gcc_cv_gld_major_version" -gt 2; then
5224            #~ gcc_cv_ld_mips_personality_relaxation=yes
5225          #~ fi
5226        #~ elif test x$gcc_cv_as != x \
5227                  #~ -a x$gcc_cv_ld != x \
5228                  #~ -a x$gcc_cv_readelf != x ; then
5229          #~ cat > conftest.s <<EOF
5230         #~ .cfi_startproc
5231         #~ .cfi_personality 0x80,indirect_ptr
5232         #~ .ent test
5233 #~ test:
5234         #~ nop
5235         #~ .end test
5236         #~ .cfi_endproc
5238         #~ .section .data,"aw",@progbits
5239 #~ indirect_ptr:
5240         #~ .dc.a personality
5241 #~ EOF
5242          #~ if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
5243             #~ && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
5244            #~ if $gcc_cv_readelf -d conftest 2>&1 \
5245               #~ | grep TEXTREL > /dev/null 2>&1; then
5246              #~ :
5247            #~ elif $gcc_cv_readelf --relocs conftest 2>&1 \
5248                 #~ | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
5249              #~ :
5250            #~ else
5251              #~ gcc_cv_ld_mips_personality_relaxation=yes
5252            #~ fi
5253          #~ fi
5254        #~ fi
5255        #~ rm -f conftest.s conftest.o conftest])
5256     #~ if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
5257             #~ AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
5258       #~ [Define if your linker can relax absolute .eh_frame personality
5259 #~ pointers into PC-relative form.])
5260     #~ fi
5262     #~ gcc_GAS_CHECK_FEATURE([-mnan= support],
5263       #~ gcc_cv_as_mips_nan,
5264       #~ [-mnan=2008],,,
5265       #~ [AC_DEFINE(HAVE_AS_NAN, 1,
5266                  #~ [Define if the assembler understands -mnan=.])])
5267     #~ if test x$gcc_cv_as_mips_nan = xno \
5268        #~ && test x$with_nan != x; then
5269       #~ AC_MSG_ERROR(
5270         #~ [Requesting --with-nan= requires assembler support for -mnan=])
5271     #~ fi
5272     #~ ;;
5273     #~ msp430-*-*)
5274     #~ # Earlier GAS versions generically support .gnu_attribute, but the
5275     #~ # msp430 assembler will not do anything with it.
5276     #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5277       #~ gcc_cv_as_msp430_gnu_attribute,,
5278       #~ [.gnu_attribute 4,1],,
5279       #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5280           #~ [Define if your assembler supports .gnu_attribute.])])
5281     #~ gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5282       #~ gcc_cv_as_msp430_mspabi_attribute,,
5283       #~ [.mspabi_attribute 4,2],,
5284       #~ [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5285           #~ [Define if your assembler supports .mspabi_attribute.])])
5286     #~ if test x$enable_newlib_nano_formatted_io = xyes; then
5287       #~ AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5288 #~ configured with --enable-newlib-nano-formatted-io.])
5289       #~ fi
5290     #~ ;;
5291     #~ nios2-*-*)
5292     #~ # Versions 2.33 and earlier lacked support for the %gotoff relocation
5293     #~ # syntax that is documented in the ABI specification.
5294     #~ gcc_GAS_CHECK_FEATURE([support for %gotoff relocations in constant data],
5295       #~ gcc_cv_as_nios2_gotoff_relocation,,
5296 #~ [    .extern foo
5297         #~ .data
5298         #~ .long %gotoff(foo)],,
5299       #~ [AC_DEFINE(HAVE_AS_NIOS2_GOTOFF_RELOCATION, 1,
5300           #~ [Define if your assembler supports %gotoff relocation syntax.])])
5301     #~ ;;
5302     #~ riscv*-*-*)
5303     #~ gcc_GAS_CHECK_FEATURE([.attribute support],
5304       #~ gcc_cv_as_riscv_attribute,,
5305       #~ [.attribute stack_align,4],,
5306       #~ [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5307           #~ [Define if your assembler supports .attribute.])])
5308     #~ gcc_GAS_CHECK_FEATURE([-misa-spec= support],
5309       #~ gcc_cv_as_riscv_isa_spec,
5310       #~ [-misa-spec=2.2],,,
5311       #~ [AC_DEFINE(HAVE_AS_MISA_SPEC, 1,
5312                  #~ [Define if the assembler understands -misa-spec=.])])
5313     #~ gcc_GAS_CHECK_FEATURE([-march=rv32i_zifencei support],
5314       #~ gcc_cv_as_riscv_march_zifencei,
5315       #~ [-march=rv32i_zifencei2p0],,,
5316       #~ [AC_DEFINE(HAVE_AS_MARCH_ZIFENCEI, 1,
5317                  #~ [Define if the assembler understands -march=rv*_zifencei.])])
5318     #~ ;;
5319   #~ loongarch*-*-*)
5320     #~ gcc_GAS_CHECK_FEATURE([.dtprelword support],
5321       #~ gcc_cv_as_loongarch_dtprelword, [2,18,0],,
5322       #~ [.section .tdata,"awT",@progbits
5323 #~ x:
5324         #~ .word 2
5325         #~ .text
5326         #~ .dtprelword x+0x8000],,
5327       #~ [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5328           #~ [Define if your assembler supports .dtprelword.])])
5329     #~ ;;
5330     #~ s390*-*-*)
5331     #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5332       #~ gcc_cv_as_s390_gnu_attribute,,
5333       #~ [.gnu_attribute 8,1],,
5334       #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5335           #~ [Define if your assembler supports .gnu_attribute.])])
5336     #~ gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5337       #~ gcc_cv_as_s390_machine_machinemode,,
5338       #~ [      .machinemode push
5339         #~ .machinemode pop
5340         #~ .machine push
5341         #~ .machine pop],,
5342       #~ [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5343           #~ [Define if your assembler supports .machine and .machinemode.])])
5344     #~ gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5345       #~ gcc_cv_as_s390_architecture_modifiers,,
5346       #~ [      .machine z13+vx ],,
5347       #~ [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5348           #~ [Define if your assembler supports architecture modifiers.])])
5349     #~ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5350       #~ gcc_cv_as_s390_vector_loadstore_alignment_hints,,
5351       #~ [      vl %v24,0(%r15),3 ],,
5352       #~ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5353           #~ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5354     #~ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints on z13],
5355       #~ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13, [-mzarch -march=z13],
5356       #~ [      vl %v24,0(%r15),3 ],,
5357       #~ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13, 1,
5358           #~ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument on z13.])])
5360     #~ ;;
5361 #~ esac
5363 #~ # Mips, LoongArch and HP-UX need the GNU assembler.
5364 #~ # Linux on IA64 might be able to use the Intel assembler.
5366 #~ case "$target" in
5367   #~ mips*-*-* | loongarch*-*-* | *-*-hpux* )
5368     #~ if test x$gas_flag = xyes \
5369        #~ || test x"$host" != x"$build" \
5370        #~ || test ! -x "$gcc_cv_as" \
5371        #~ || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5372       #~ :
5373     #~ else
5374       #~ echo "*** This configuration requires the GNU assembler" >&2
5375       #~ exit 1
5376     #~ fi
5377     #~ ;;
5378 #~ esac
5380 #~ # This tests if the assembler supports two registers for global_load functions
5381 #~ # (like in LLVM versions <12) or one register (like in LLVM 12).
5382 #~ case "$target" in
5383   #~ amdgcn-* | gcn-*)
5384     #~ AC_MSG_CHECKING(assembler fix for global_load functions)
5385     #~ gcc_cv_as_gcn_global_load_fixed=yes
5386     #~ if test x$gcc_cv_as != x; then
5387       #~ cat > conftest.s <<EOF
5388         #~ global_store_dwordx2    v[[1:2]], v[[4:5]], s[[14:15]]
5389 #~ EOF
5390       #~ if $gcc_cv_as -triple=amdgcn--amdhsa -filetype=obj -mcpu=gfx900 -o conftest.o conftest.s > /dev/null 2>&1; then
5391         #~ gcc_cv_as_gcn_global_load_fixed=no
5392       #~ fi
5393       #~ rm -f conftest.s conftest.o conftest
5394     #~ fi
5395     #~ global_load_fixed=`if test x$gcc_cv_as_gcn_global_load_fixed = xyes; then echo 1; else echo 0; fi`
5396     #~ AC_DEFINE_UNQUOTED(HAVE_GCN_ASM_GLOBAL_LOAD_FIXED, $global_load_fixed,
5397       #~ [Define if your assembler has fixed global_load functions.])
5398     #~ AC_MSG_RESULT($gcc_cv_as_gcn_global_load_fixed)
5399     #~ ;;
5400 #~ esac
5402 #~ case "$target" in
5403   #~ amdgcn-* | gcn-*)
5404     #~ # Test the LLVM assembler syntax dialect; they have made a number of
5405     #~ # changes between LLVM 12 & 13 without any backward compatibility.
5406     #~ gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v2/3 syntax],
5407       #~ gcc_cv_as_gcn_asm_v3_syntax,
5408       #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack],
5409       #~ [.amdgcn_target "amdgcn-unknown-amdhsa--gfx906+xnack"],,
5410       #~ [AC_DEFINE(HAVE_GCN_ASM_V3_SYNTAX, 1,
5411        #~ [Define if your assembler expects amdgcn_target gfx908+xnack syntax.])])
5412     #~ gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v4 syntax],
5413       #~ gcc_cv_as_gcn_asm_v4_syntax,
5414       #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack],
5415       #~ [.amdgcn_target "amdgcn-unknown-amdhsa--gfx908:xnack+"],,
5416       #~ [AC_DEFINE(HAVE_GCN_ASM_V4_SYNTAX, 1,
5417        #~ [Define if your assembler expects amdgcn_target gfx908:xnack+ syntax.])])
5419     #~ # Some attribute names changed in the move to v4 ...
5420     #~ if test $gcc_cv_as_gcn_asm_v3_syntax = yes; then
5421         #~ sramopt="+sram-ecc"
5422         #~ sramattr="+sram-ecc"
5423         #~ xnackattr="+xnack"
5424     #~ elif test $gcc_cv_as_gcn_asm_v4_syntax = yes; then
5425         #~ sramopt="+sramecc"
5426         #~ sramattr=":sramecc+"
5427         #~ xnackattr=":xnack+"
5428     #~ else
5429         #~ AC_MSG_ERROR([Unrecognised assembler version])
5430     #~ fi
5432     #~ # Test whether the LLVM assembler accepts -mattr=+xnack without any
5433     #~ # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
5434     #~ # LLVM 12+ throws a warning for GPUs without support.
5435     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for fiji],
5436       #~ gcc_cv_as_gcn_xnack_ecc_fiji,
5437       #~ [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=+xnack 2>conftest.err], [],
5438       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5439        #~ || gcc_cv_as_gcn_xnack_ecc_fiji=yes],
5440       #~ [AC_DEFINE(HAVE_GCN_XNACK_FIJI, 1,
5441        #~ [Define if your assembler allows -mattr=+xnack for fiji.])])
5442     #~ rm -f conftest.err
5443     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx900],
5444       #~ gcc_cv_as_gcn_xnack_ecc_gfx900,
5445       #~ [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+xnack 2>conftest.err], [],
5446       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5447        #~ || gcc_cv_as_gcn_xnack_ecc_gfx900=yes],
5448       #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX900, 1,
5449        #~ [Define if your assembler allows -mattr=+xnack for gfx900.])])
5450     #~ rm -f conftest.err
5451     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx906],
5452       #~ gcc_cv_as_gcn_xnack_ecc_gfx906,
5453       #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack 2>conftest.err], [],
5454       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5455        #~ || gcc_cv_as_gcn_xnack_ecc_gfx906=yes],
5456       #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX906, 1,
5457        #~ [Define if your assembler allows -mattr=+xnack for gfx906.])])
5458     #~ rm -f conftest.err
5459     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx908],
5460       #~ gcc_cv_as_gcn_xnack_ecc_gfx908,
5461       #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack 2>conftest.err], [],
5462       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5463        #~ || gcc_cv_as_gcn_xnack_ecc_gfx908=yes],
5464       #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX908, 1,
5465        #~ [Define if your assembler allows -mattr=+xnack for gfx908.])])
5466     #~ rm -f conftest.err
5468     #~ # Test whether the LLVM assembler accepts -mattr=+sramecc without any
5469     #~ # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
5470     #~ # (some?) LLVM 12 rejects it for all GPUs, and LLVM13 throws a warning
5471     #~ # for GPUs without support.
5472     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for fiji],
5473       #~ gcc_cv_as_gcn_sram_ecc_fiji,
5474       #~ [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=$sramopt 2>conftest.err], [],
5475       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5476        #~ || gcc_cv_as_gcn_sram_ecc_fiji=yes],
5477       #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_FIJI, 1,
5478        #~ [Define if your assembler allows -mattr=+sramecc for fiji.])])
5479     #~ rm -f conftest.err
5480     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx900],
5481       #~ gcc_cv_as_gcn_sram_ecc_gfx900,
5482       #~ [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=$sramopt 2>conftest.err], [],
5483       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5484        #~ || gcc_cv_as_gcn_sram_ecc_gfx900=yes],
5485       #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX900, 1,
5486        #~ [Define if your assembler allows -mattr=+sramecc for gfx900.])])
5487     #~ rm -f conftest.err
5488     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx906],
5489       #~ gcc_cv_as_gcn_sram_ecc_gfx906,
5490       #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=$sramopt 2>conftest.err], [],
5491       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5492        #~ || gcc_cv_as_gcn_sram_ecc_gfx906=yes],
5493       #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX906, 1,
5494        #~ [Define if your assembler allows -mattr=+sramecc for gfx906.])])
5495     #~ rm -f conftest.err
5496     #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx908],
5497       #~ gcc_cv_as_gcn_sram_ecc_gfx908,
5498       #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=$sramopt 2>conftest.err], [],
5499       #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5500        #~ || gcc_cv_as_gcn_sram_ecc_gfx908=yes],
5501       #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX908, 1,
5502        #~ [Define if your assembler allows -mattr=+sramecc for gfx908.])])
5503     #~ rm -f conftest.err
5504     #~ ;;
5505   #~ arm*)
5506     #~ gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions],
5507       #~ gcc_cv_as_arm_option_extensions,
5508       #~ [-march=armv8.1-m.main+mve],
5509       #~ [.text
5510         #~ .thumb
5511         #~ .syntax unified
5512         #~ vmov.f32 s0, s1],,
5513       #~ [AC_DEFINE(HAVE_GAS_ARM_EXTENDED_ARCH, 1,
5514        #~ [Define if your Arm assembler permits context-specific feature extensions.])])
5515 #~ esac
5517 #~ # ??? Not all targets support dwarf2 debug_line, even within a version
5518 #~ # of gas.  Moreover, we need to emit a valid instruction to trigger any
5519 #~ # info to the output file.  So, as supported targets are added to gas 2.11,
5520 #~ # add some instruction here to (also) show we expect this might work.
5521 #~ # ??? Once 2.11 is released, probably need to add first known working
5522 #~ # version to the per-target configury.
5523 #~ case "$cpu_type" in
5524   #~ aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | loongarch | m32c \
5525   #~ | m68k | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5526   #~ | tilegx | tilepro | visium | xstormy16 | xtensa)
5527     #~ insn="nop"
5528     #~ ;;
5529   #~ ia64 | s390)
5530     #~ insn="nop 0"
5531     #~ ;;
5532   #~ mmix)
5533     #~ insn="swym 0"
5534     #~ ;;
5535 #~ esac
5536 #~ if test x"$insn" != x; then
5537  #~ conftest_s="\
5538         #~ .file 1 \"conftest.s\"
5539         #~ .loc 1 3 0
5540         #~ $insn"
5541  #~ gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5542   #~ gcc_cv_as_dwarf2_debug_line,,
5543   #~ [$conftest_s],
5544   #~ [if test x$gcc_cv_objdump != x \
5545    #~ && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5546       #~ | grep debug_line > /dev/null 2>&1; then
5547      #~ gcc_cv_as_dwarf2_debug_line=yes
5548    #~ elif test x$gcc_cv_otool != x \
5549    #~ && $gcc_cv_otool -l conftest.o 2> /dev/null \
5550       #~ | grep debug_line > /dev/null 2>&1; then
5551      #~ gcc_cv_as_dwarf2_debug_line=yes
5552    #~ fi])
5554 #~ # The .debug_line file table must be in the exact order that
5555 #~ # we specified the files, since these indices are also used
5556 #~ # by DW_AT_decl_file.  Approximate this test by testing if
5557 #~ # the assembler bitches if the same index is assigned twice.
5558  #~ gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5559   #~ gcc_cv_as_dwarf2_file_buggy,,
5560 #~ [    .file 1 "foo.s"
5561         #~ .file 1 "bar.s"])
5563  #~ if test $gcc_cv_as_dwarf2_debug_line = yes \
5564  #~ && test $gcc_cv_as_dwarf2_file_buggy = no; then
5565     #~ AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5566   #~ [Define if your assembler supports dwarf2 .file/.loc directives,
5567    #~ and preserves file table indices exactly as given.])
5569     #~ if test $gcc_cv_as_leb128 = yes; then
5570         #~ conftest_s="\
5571         #~ .file 1 \"conftest.s\"
5572         #~ .loc 1 3 0 view .LVU1
5573         #~ $insn
5574         #~ .data
5575         #~ .uleb128 .LVU1
5576         #~ .uleb128 .LVU1
5577 #~ "
5578         #~ gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5579           #~ gcc_cv_as_dwarf2_debug_view,,
5580           #~ [$conftest_s],,
5581           #~ [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5582   #~ [Define if your assembler supports views in dwarf2 .loc directives.])])
5583     #~ fi
5584  #~ fi
5586  #~ gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5587   #~ gcc_cv_as_gdwarf2_flag,
5588   #~ [--gdwarf2], [$insn],,
5589   #~ [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5590 #~ [Define if your assembler supports the --gdwarf2 option.])])
5592  #~ gcc_GAS_CHECK_FEATURE([--gdwarf-5 option],
5593   #~ gcc_cv_as_gdwarf_5_flag,
5594   #~ [--gdwarf-5], [$insn],
5595   #~ [if test x$gcc_cv_objdump != x \
5596       #~ && $gcc_cv_objdump -Wi conftest.o 2>&1 \
5597          #~ | grep DW_TAG_compile_unit > /dev/null 2>&1; then
5598      #~ gcc_cv_as_gdwarf_5_flag=yes;
5599    #~ fi],[AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
5600 #~ [Define if your assembler supports the --gdwarf-5 option.])])
5602  #~ case $target_os in
5603    #~ win32 | pe | cygwin* | mingw32*)
5604      #~ section_flags=\"dr\"
5605      #~ function_type=".def foo; .scl 2; .type 32; .endef"
5606      #~ function_size="";;
5607    #~ *)
5608      #~ section_flags=\"\",%progbits
5609      #~ function_type=".type foo, %function"
5610      #~ function_size=".size foo, .-foo";;
5611  #~ esac
5612  #~ dwarf4_debug_info_size=0x46
5613  #~ dwarf4_high_pc_form=7
5614  #~ dwarf4_debug_aranges_size=0x2c
5615  #~ dwarf4_line_sz=9
5616  #~ for dwarf4_addr_size in 8 4; do
5617    #~ conftest_s="\
5618         #~ .file        \"a.c\"
5619         #~ .text
5620 #~ .Ltext0:
5621         #~ .p2align 4
5622         #~ .globl       foo
5623         #~ $function_type
5624 #~ foo:
5625 #~ .LFB0:
5626 #~ .LM1:
5627         #~ $insn
5628 #~ .LM2:
5629 #~ .LFE0:
5630         #~ $function_size
5631 #~ .Letext0:
5632         #~ .section     .debug_info,$section_flags
5633 #~ .Ldebug_info0:
5634         #~ .4byte       $dwarf4_debug_info_size
5635         #~ .2byte       0x4
5636         #~ .4byte       .Ldebug_abbrev0
5637         #~ .byte        0x$dwarf4_addr_size
5638         #~ .byte        0x1
5639         #~ .ascii \"GNU C17\\0\"
5640         #~ .byte        0xc
5641         #~ .ascii \"a.c\\0\"
5642         #~ .ascii \"/\\0\"
5643         #~ .${dwarf4_addr_size}byte     .Ltext0
5644         #~ .${dwarf4_addr_size}byte     .Letext0-.Ltext0
5645         #~ .4byte       .Ldebug_line0
5646         #~ .byte        0x2
5647         #~ .ascii \"foo\\0\"
5648         #~ .byte        0x1
5649         #~ .byte        0x2
5650         #~ .byte        0x1
5651         #~ .${dwarf4_addr_size}byte     .LFB0
5652         #~ .${dwarf4_addr_size}byte     .LFE0-.LFB0
5653         #~ .byte        0x1
5654         #~ .byte        0x9c
5655         #~ .byte        0
5656         #~ .section     .debug_abbrev,$section_flags
5657 #~ .Ldebug_abbrev0:
5658         #~ .byte        0x1
5659         #~ .byte        0x11
5660         #~ .byte        0x1
5661         #~ .byte        0x25
5662         #~ .byte        0x8
5663         #~ .byte        0x13
5664         #~ .byte        0xb
5665         #~ .byte        0x3
5666         #~ .byte        0x8
5667         #~ .byte        0x1b
5668         #~ .byte        0x8
5669         #~ .byte        0x11
5670         #~ .byte        0x1
5671         #~ .byte        0x12
5672         #~ .byte        0x$dwarf4_high_pc_form
5673         #~ .byte        0x10
5674         #~ .byte        0x17
5675         #~ .byte        0
5676         #~ .byte        0
5677         #~ .byte        0x2
5678         #~ .byte        0x2e
5679         #~ .byte        0
5680         #~ .byte        0x3f
5681         #~ .byte        0x19
5682         #~ .byte        0x3
5683         #~ .byte        0x8
5684         #~ .byte        0x3a
5685         #~ .byte        0xb
5686         #~ .byte        0x3b
5687         #~ .byte        0xb
5688         #~ .byte        0x39
5689         #~ .byte        0xb
5690         #~ .byte        0x11
5691         #~ .byte        0x1
5692         #~ .byte        0x12
5693         #~ .byte        0x$dwarf4_high_pc_form
5694         #~ .byte        0x40
5695         #~ .byte        0x18
5696         #~ .byte        0
5697         #~ .byte        0
5698         #~ .byte        0
5699         #~ .section     .debug_aranges,$section_flags
5700         #~ .4byte       $dwarf4_debug_aranges_size
5701         #~ .2byte       0x2
5702         #~ .4byte       .Ldebug_info0
5703         #~ .byte        0x8
5704         #~ .byte        0
5705         #~ .2byte       0
5706         #~ .2byte       0
5707         #~ .${dwarf4_addr_size}byte     .Ltext0
5708         #~ .${dwarf4_addr_size}byte     .Letext0-.Ltext0
5709         #~ .${dwarf4_addr_size}byte     0
5710         #~ .${dwarf4_addr_size}byte     0
5711         #~ .section     .debug_line,$section_flags
5712 #~ .Ldebug_line0:
5713         #~ .4byte       .LELT0-.LSLT0
5714 #~ .LSLT0:
5715         #~ .2byte       0x4
5716         #~ .4byte       .LELTP0-.LASLTP0
5717 #~ .LASLTP0:
5718         #~ .byte        0x1
5719         #~ .byte        0x1
5720         #~ .byte        0x1
5721         #~ .byte        0xf6
5722         #~ .byte        0xf2
5723         #~ .byte        0xd
5724         #~ .byte        0
5725         #~ .byte        0x1
5726         #~ .byte        0x1
5727         #~ .byte        0x1
5728         #~ .byte        0x1
5729         #~ .byte        0
5730         #~ .byte        0
5731         #~ .byte        0
5732         #~ .byte        0x1
5733         #~ .byte        0
5734         #~ .byte        0
5735         #~ .byte        0x1
5736         #~ .byte        0
5737         #~ .ascii \"a.c\\0\"
5738         #~ .byte        0
5739         #~ .byte        0
5740         #~ .byte        0
5741         #~ .byte        0
5742 #~ .LELTP0:
5743         #~ .byte        0
5744         #~ .byte        0x$dwarf4_line_sz
5745         #~ .byte        0x2
5746         #~ .${dwarf4_addr_size}byte     .LM1
5747         #~ .byte        0x18
5748         #~ .byte        0x5
5749         #~ .byte        0x1
5750         #~ .byte        0
5751         #~ .byte        0x$dwarf4_line_sz
5752         #~ .byte        0x2
5753         #~ .${dwarf4_addr_size}byte     .LM2
5754         #~ .byte        0x1
5755         #~ .byte        0x5
5756         #~ .byte        0x1
5757         #~ .byte        0
5758         #~ .byte        0x$dwarf4_line_sz
5759         #~ .byte        0x2
5760         #~ .${dwarf4_addr_size}byte     .Letext0
5761         #~ .byte        0
5762         #~ .byte        0x1
5763         #~ .byte        0x1
5764 #~ .LELT0:
5765         #~ .section     .debug_str,$section_flags
5766         #~ .ident       \"GCC\"
5767 #~ "
5768    #~ dwarf4_success=no
5769    #~ if test $dwarf4_addr_size = 4; then
5770      #~ gcc_GAS_CHECK_FEATURE([assembly of compiler generated 32-bit .debug_line],
5771       #~ gcc_cv_as_debug_line_32_flag,,
5772       #~ [$conftest_s],,
5773       #~ [dwarf4_success=yes])
5774    #~ else
5775      #~ gcc_GAS_CHECK_FEATURE([assembly of compiler generated 64-bit .debug_line],
5776       #~ gcc_cv_as_debug_line_64_flag,,
5777       #~ [$conftest_s],,
5778       #~ [dwarf4_success=yes])
5779    #~ fi
5780    #~ if test $dwarf4_success = yes; then
5781      #~ dwarf4_success=no
5782      #~ gcc_GAS_CHECK_FEATURE([--gdwarf-4 not refusing compiler generated .debug_line],
5783       #~ gcc_cv_as_dwarf_4_debug_line_flag,
5784       #~ [--gdwarf-4], [$conftest_s],,
5785       #~ [dwarf4_success=yes])
5786      #~ break
5787    #~ fi
5788    #~ dwarf4_debug_info_size=0x36
5789    #~ dwarf4_high_pc_form=6
5790    #~ dwarf4_debug_aranges_size=0x1c
5791    #~ dwarf4_line_sz=5
5792  #~ done
5794  #~ if test $dwarf4_success = yes; then
5795    #~ conftest_s="\
5796         #~ .file        \"foo.c\"
5797         #~ .text
5798 #~ bar:
5799 #~ #APP
5800 #~ # 82 \"xxx.h\" 1
5801         #~ $insn
5802 #~ # 0 \"\" 2
5803 #~ #NO_APP
5804         #~ $insn
5805 #~ foo:
5806         #~ .file 1 \"foo.c\"
5807         #~ $insn
5808         #~ .file 2 \"foo.h\"
5809         #~ ret
5810 #~ "
5811    #~ dwarf4_success=no
5812    #~ gcc_GAS_CHECK_FEATURE([--gdwarf-4 with the APP marker],
5813      #~ gcc_cv_as_dwarf_4_app_flag,
5814      #~ [--gdwarf-4], [$conftest_s],, [dwarf4_success=yes])
5815  #~ fi
5817  #~ if test $dwarf4_success = yes; then
5818    #~ conftest_s="\
5819         #~ .text
5820         #~ .globl       foo
5821         #~ $function_type
5822 #~ foo:
5823         #~ $insn
5824         #~ $function_size
5825         #~ .file        1 \"foo.c\"
5826 #~ "
5827    #~ gcc_GAS_CHECK_FEATURE([working --gdwarf-4/--gdwarf-5 for all sources],
5828      #~ gcc_cv_as_working_gdwarf_n_flag,
5829      #~ [--gdwarf-4],
5830      #~ [$conftest_s],
5831      #~ [changequote(,)dnl
5832       #~ if test x$gcc_cv_objdump != x \
5833          #~ && $gcc_cv_objdump -W conftest.o 2>&1 \
5834                 #~ | grep conftest.s > /dev/null 2>&1; then
5835         #~ gcc_cv_as_working_gdwarf_n_flag=no
5836       #~ else
5837         #~ gcc_cv_as_working_gdwarf_n_flag=yes
5838       #~ fi
5839       #~ changequote([,])dnl])
5840    #~ if test $gcc_cv_as_working_gdwarf_n_flag = yes; then
5841      #~ AC_DEFINE(HAVE_AS_WORKING_DWARF_N_FLAG, 1,
5842 #~ [Define if your assembler supports --gdwarf-4/--gdwarf-5 even with
5843  #~ compiler generated .debug_line.])
5844    #~ fi
5845  #~ fi
5847  #~ gcc_GAS_CHECK_FEATURE([--gstabs option],
5848   #~ gcc_cv_as_gstabs_flag,
5849   #~ [--gstabs], [$insn],,
5850   #~ [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
5851 #~ [Define if your assembler supports the --gstabs option.])])
5853  #~ gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5854   #~ gcc_cv_as_debug_prefix_map_flag,
5855   #~ [--debug-prefix-map /a=/b], [$insn],,
5856   #~ [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5857 #~ [Define if your assembler supports the --debug-prefix-map option.])])
5858 #~ fi
5860 #~ gcc_GAS_CHECK_FEATURE([compressed debug sections],
5861   #~ gcc_cv_as_compress_debug,,,
5862   #~ [# gas compiled without zlib cannot compress debug sections and warns
5863    #~ # about it, but still exits successfully.  So check for this, too.
5864    #~ if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5865    #~ then
5866      #~ gcc_cv_as_compress_debug=0
5867    #~ # Since binutils 2.26, gas supports --compress-debug-sections=type,
5868    #~ # defaulting to the ELF gABI format.
5869    #~ elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
5870    #~ then
5871      #~ gcc_cv_as_compress_debug=2
5872      #~ gcc_cv_as_compress_debug_option="--compress-debug-sections"
5873      #~ gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5874    #~ # Before binutils 2.26, gas only supported --compress-debug-options and
5875    #~ # emitted the traditional GNU format.
5876    #~ elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
5877    #~ then
5878      #~ gcc_cv_as_compress_debug=1
5879      #~ gcc_cv_as_compress_debug_option="--compress-debug-sections"
5880      #~ gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5881    #~ else
5882      #~ gcc_cv_as_compress_debug=0
5883    #~ fi])
5884 #~ AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5885 #~ [Define to the level of your assembler's compressed debug section support.])
5886 #~ AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5887 #~ [Define to the assembler option to enable compressed debug sections.])
5888 #~ AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5889 #~ [Define to the assembler option to disable compressed debug sections.])
5891 #~ gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,,
5892 #~ [.lcomm bar,4,16],,
5893 #~ [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5894   #~ [Define if your assembler supports .lcomm with an alignment field.])])
5896 #~ if test x$with_sysroot = x && test x$host = x$target \
5897    #~ && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5898    #~ && test "$prefix" != "NONE"; then
5899   #~ AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5900 #~ [Define to PREFIX/include if cpp should also search that directory.])
5901 #~ fi
5903 #~ # Determine the version of glibc, if any, used on the target.
5904 #~ AC_MSG_CHECKING([for target glibc version])
5905 #~ AC_ARG_WITH([glibc-version],
5906   #~ [AS_HELP_STRING([--with-glibc-version=M.N],
5907     #~ [assume GCC used with glibc version M.N or later])], [
5908 #~ if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5909   #~ glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5910   #~ glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5911 #~ else
5912   #~ AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5913 #~ fi], [
5914 #~ glibc_version_major=0
5915 #~ glibc_version_minor=0
5916 #~ [if test -f $target_header_dir/features.h \
5917   #~ && glibc_version_major_define=`$EGREP '^[  ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
5918   #~ && glibc_version_minor_define=`$EGREP '^[  ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
5919   #~ glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[   ]*//'`
5920   #~ glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[     ]*//'`
5921 #~ fi]])
5922 #~ AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5923 #~ AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5924 #~ [GNU C Library major version number used on the target, or 0.])
5925 #~ AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5926 #~ [GNU C Library minor version number used on the target, or 0.])
5928 #~ AC_ARG_ENABLE(gnu-unique-object,
5929  #~ [AS_HELP_STRING([--enable-gnu-unique-object],
5930    #~ [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5931  #~ [case $enable_gnu_unique_object in
5932     #~ yes | no) ;;
5933     #~ *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5934 #~ Valid choices are 'yes' and 'no'.]) ;;
5935   #~ esac],
5936  #~ [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,,
5937    #~ [.type foo, '$target_type_format_char'gnu_unique_object],,
5938 #~ # We need to unquote above to to use the definition from config.gcc.
5939 #~ # Also check for ld.so support, i.e. glibc 2.11 or higher.
5940    #~ [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5941    #~ )])
5942 #~ if test x$enable_gnu_unique_object = xyes; then
5943   #~ AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5944    #~ [Define if your assembler supports @gnu_unique_object.])
5945 #~ fi
5947 #~ AC_CACHE_CHECK([assembler for tolerance to line number 0],
5948  #~ [gcc_cv_as_line_zero],
5949  #~ [gcc_cv_as_line_zero=no
5950   #~ if test "x$gcc_cv_as" != x; then
5951     #~ { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5952     #~ if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5953        #~ test "x`cat conftest.out`" = x
5954     #~ then
5955       #~ gcc_cv_as_line_zero=yes
5956     #~ else
5957       #~ echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5958       #~ cat conftest.s >&AS_MESSAGE_LOG_FD
5959       #~ echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5960       #~ cat conftest.out >&AS_MESSAGE_LOG_FD
5961     #~ fi
5962     #~ rm -f conftest.o conftest.s conftest.out
5963   #~ fi])
5964 #~ if test "x$gcc_cv_as_line_zero" = xyes; then
5965   #~ AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5966 #~ [Define if the assembler won't complain about a line such as # 0 "" 2.])
5967 #~ fi
5969 #~ AC_MSG_CHECKING(support for thin archives)
5970 #~ thin_archive_support=no
5971 #~ echo 'int main (void) { return 0; }' > conftest.c
5972 #~ if ($AR --version | sed 1q | grep "GNU ar" \
5973     #~ && $CC $CFLAGS -c conftest.c \
5974     #~ && $AR rcT conftest.a conftest.o \
5975     #~ && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5976   #~ thin_archive_support=yes
5977 #~ fi
5978 #~ rm -f conftest.c conftest.o conftest.a conftest
5979 #~ AC_MSG_RESULT($thin_archive_support)
5980 #~ AC_SUBST(thin_archive_support)
5982 #~ AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5983 #~ gcc_cv_ld_eh_frame_hdr=no
5984 #~ if test $in_tree_ld = yes ; then
5985   #~ 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 \
5986      #~ && test $in_tree_ld_is_elf = yes; then
5987     #~ gcc_cv_ld_eh_frame_hdr=yes
5988   #~ fi
5989 #~ elif test x$gcc_cv_ld != x; then
5990   #~ if echo "$ld_ver" | grep GNU > /dev/null; then
5991     #~ # Check if linker supports --eh-frame-hdr option
5992     #~ if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5993       #~ gcc_cv_ld_eh_frame_hdr=yes
5994     #~ fi
5995   #~ else
5996     #~ case "$target" in
5997       #~ *-*-solaris2*)
5998         #~ # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5999         #~ if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
6000           #~ gcc_cv_ld_eh_frame_hdr=yes
6001         #~ fi
6002         #~ ;;
6003     #~ esac
6004   #~ fi
6005 #~ fi
6006 #~ GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
6007 #~ if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
6008         #~ AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
6009 #~ [Define if your linker supports .eh_frame_hdr.])
6010 #~ fi
6011 #~ AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
6013 #~ AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
6014 #~ gcc_cv_ld_eh_frame_ciev3=no
6015 #~ if test $in_tree_ld = yes ; then
6016   #~ 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 \
6017      #~ && test $in_tree_ld_is_elf = yes; then
6018     #~ gcc_cv_ld_eh_frame_ciev3=yes
6019   #~ fi
6020 #~ elif test x$gcc_cv_ld != x; then
6021   #~ if echo "$ld_ver" | grep GNU > /dev/null; then
6022     #~ gcc_cv_ld_eh_frame_ciev3=yes
6023     #~ if test 0"$ld_date" -lt 20040513; then
6024       #~ if test -n "$ld_date"; then
6025         #~ # If there was date string, but was earlier than 2004-05-13, fail
6026         #~ gcc_cv_ld_eh_frame_ciev3=no
6027       #~ elif test "$ld_vers_major" -lt 2; then
6028         #~ gcc_cv_ld_eh_frame_ciev3=no
6029       #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
6030         #~ gcc_cv_ld_eh_frame_ciev3=no
6031       #~ fi
6032     #~ fi
6033   #~ else
6034     #~ case "$target" in
6035       #~ *-*-solaris2*)
6036         #~ # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
6037         #~ if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
6038           #~ gcc_cv_ld_eh_frame_ciev3=yes
6039         #~ fi
6040         #~ ;;
6041     #~ esac
6042   #~ fi
6043 #~ fi
6044 #~ AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
6045   #~ [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
6046   #~ [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
6047 #~ AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
6049 #~ AC_MSG_CHECKING(linker position independent executable support)
6050 #~ gcc_cv_ld_pie=no
6051 #~ if test $in_tree_ld = yes ; then
6052   #~ case "$target" in
6053     #~ # Full PIE support on Solaris was only introduced in gld 2.26.
6054     #~ *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
6055     #~ *)                   gcc_gld_pie_min_version=15 ;;
6056   #~ esac
6057   #~ 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 \
6058      #~ && test $in_tree_ld_is_elf = yes; then
6059     #~ gcc_cv_ld_pie=yes
6060   #~ fi
6061 #~ elif test x$gcc_cv_ld != x; then
6062   #~ # Check if linker supports -pie option
6063   #~ if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
6064     #~ gcc_cv_ld_pie=yes
6065     #~ case "$target" in
6066       #~ *-*-solaris2*)
6067         #~ if echo "$ld_ver" | grep GNU > /dev/null \
6068           #~ && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
6069           #~ gcc_cv_ld_pie=no
6070         #~ fi
6071         #~ ;;
6072     #~ esac
6073   #~ else
6074     #~ case "$target" in
6075       #~ *-*-solaris2.1[[1-9]]*)
6076         #~ # Solaris 11.3 added PIE support.
6077         #~ if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
6078           #~ gcc_cv_ld_pie=yes
6079         #~ fi
6080         #~ ;;
6081     #~ esac
6082   #~ fi
6083 #~ fi
6084 #~ if test x"$gcc_cv_ld_pie" = xyes; then
6085         #~ AC_DEFINE(HAVE_LD_PIE, 1,
6086 #~ [Define if your linker supports PIE option.])
6087 #~ fi
6088 #~ AC_MSG_RESULT($gcc_cv_ld_pie)
6090 #~ AC_MSG_CHECKING(linker PIE support with copy reloc)
6091 #~ gcc_cv_ld_pie_copyreloc=no
6092 #~ if test $gcc_cv_ld_pie = yes ; then
6093   #~ if test $in_tree_ld = yes ; then
6094     #~ 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
6095       #~ gcc_cv_ld_pie_copyreloc=yes
6096     #~ fi
6097   #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6098     #~ # Check if linker supports -pie option with copy reloc
6099     #~ case "$target" in
6100     #~ i?86-*-linux* | x86_64-*-linux*)
6101       #~ cat > conftest1.s <<EOF
6102         #~ .globl       a_glob
6103         #~ .data
6104         #~ .type        a_glob, @object
6105         #~ .size        a_glob, 4
6106 #~ a_glob:
6107         #~ .long        2
6108 #~ EOF
6109       #~ cat > conftest2.s <<EOF
6110         #~ .text
6111         #~ .globl       main
6112         #~ .type        main, @function
6113 #~ main:
6114         #~ movl %eax, a_glob(%rip)
6115         #~ .size        main, .-main
6116         #~ .globl       ptr
6117         #~ .section     .data.rel,"aw",@progbits
6118         #~ .type        ptr, @object
6119 #~ ptr:
6120         #~ .quad        a_glob
6121 #~ EOF
6122       #~ if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6123          #~ && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
6124          #~ && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6125          #~ && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
6126         #~ gcc_cv_ld_pie_copyreloc=yes
6127       #~ fi
6128       #~ rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
6129       #~ ;;
6130     #~ esac
6131   #~ fi
6132 #~ fi
6133 #~ AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
6134   #~ [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
6135   #~ [Define 0/1 if your linker supports -pie option with copy reloc.])
6136 #~ AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
6138 #~ AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
6139 #~ gcc_cv_ld_eh_gc_sections=no
6140 #~ if test $in_tree_ld = yes ; then
6141   #~ 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 \
6142      #~ && test $in_tree_ld_is_elf = yes; then
6143     #~ gcc_cv_ld_eh_gc_sections=yes
6144   #~ fi
6145 #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
6146   #~ cat > conftest.s <<EOF
6147         #~ .section     .text
6148 #~ .globl _start
6149         #~ .type _start, @function
6150 #~ _start:
6151         #~ .long foo
6152         #~ .size _start, .-_start
6153         #~ .section     .text.foo,"ax",@progbits
6154         #~ .type foo, @function
6155 #~ foo:
6156         #~ .long 0
6157         #~ .size foo, .-foo
6158         #~ .section     .gcc_except_table.foo,"a",@progbits
6159 #~ .L0:
6160         #~ .long 0
6161         #~ .section     .eh_frame,"a",@progbits
6162         #~ .long .L0
6163 #~ EOF
6164   #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6165     #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6166          #~ | grep "gc-sections option ignored" > /dev/null; then
6167       #~ gcc_cv_ld_eh_gc_sections=no
6168     #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6169          #~ | grep gcc_except_table > /dev/null; then
6170       #~ gcc_cv_ld_eh_gc_sections=yes
6171       #~ # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
6172       #~ if test x$gcc_cv_as_comdat_group != xyes; then
6173         #~ gcc_cv_ld_eh_gc_sections=no
6174         #~ cat > conftest.s <<EOF
6175         #~ .section     .text
6176 #~ .globl _start
6177         #~ .type _start, @function
6178 #~ _start:
6179         #~ .long foo
6180         #~ .size _start, .-_start
6181         #~ .section     .gnu.linkonce.t.foo,"ax",@progbits
6182         #~ .type foo, @function
6183 #~ foo:
6184         #~ .long 0
6185         #~ .size foo, .-foo
6186         #~ .section     .gcc_except_table.foo,"a",@progbits
6187 #~ .L0:
6188         #~ .long 0
6189         #~ .section     .eh_frame,"a",@progbits
6190         #~ .long .L0
6191 #~ EOF
6192         #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6193           #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6194                #~ | grep "gc-sections option ignored" > /dev/null; then
6195             #~ gcc_cv_ld_eh_gc_sections=no
6196           #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6197                #~ | grep gcc_except_table > /dev/null; then
6198             #~ gcc_cv_ld_eh_gc_sections=yes
6199           #~ fi
6200         #~ fi
6201       #~ fi
6202     #~ fi
6203   #~ fi
6204   #~ rm -f conftest.s conftest.o conftest
6205 #~ fi
6206 #~ case "$target" in
6207   #~ hppa*-*-linux*)
6208     #~ # ??? This apparently exposes a binutils bug with PC-relative relocations.
6209     #~ gcc_cv_ld_eh_gc_sections=no
6210     #~ ;;
6211 #~ esac
6212 #~ if test x$gcc_cv_ld_eh_gc_sections = xyes; then
6213         #~ AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
6214   #~ [Define if your linker supports garbage collection of
6215    #~ sections in presence of EH frames.])
6216 #~ fi
6217 #~ AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
6219 #~ AC_MSG_CHECKING(linker EH garbage collection of sections bug)
6220 #~ gcc_cv_ld_eh_gc_sections_bug=no
6221 #~ if test $in_tree_ld = yes ; then
6222   #~ 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 \
6223      #~ && test $in_tree_ld_is_elf = yes; then
6224     #~ gcc_cv_ld_eh_gc_sections_bug=yes
6225   #~ fi
6226 #~ 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
6227   #~ gcc_cv_ld_eh_gc_sections_bug=yes
6228   #~ cat > conftest.s <<EOF
6229         #~ .section     .text
6230 #~ .globl _start
6231         #~ .type _start, @function
6232 #~ _start:
6233         #~ .long foo
6234         #~ .size _start, .-_start
6235         #~ .section     .text.startup.foo,"ax",@progbits
6236         #~ .type foo, @function
6237 #~ foo:
6238         #~ .long 0
6239         #~ .size foo, .-foo
6240         #~ .section     .gcc_except_table.foo,"a",@progbits
6241 #~ .L0:
6242         #~ .long 0
6243         #~ .section     .eh_frame,"a",@progbits
6244         #~ .long .L0
6245 #~ EOF
6246   #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6247     #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6248          #~ | grep "gc-sections option ignored" > /dev/null; then
6249       #~ :
6250     #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6251          #~ | grep gcc_except_table > /dev/null; then
6252       #~ gcc_cv_ld_eh_gc_sections_bug=no
6253     #~ fi
6254   #~ fi
6255   #~ rm -f conftest.s conftest.o conftest
6256 #~ fi
6257 #~ if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
6258         #~ AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
6259   #~ [Define if your linker has buggy garbage collection of
6260    #~ sections support when .text.startup.foo like sections are used.])
6261 #~ fi
6262 #~ AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
6264 #~ AC_MSG_CHECKING(linker for compressed debug sections)
6265 #~ # gold/gld support compressed debug sections since binutils 2.19/2.21
6266 #~ # In binutils 2.26, gld gained support for the ELF gABI format.
6267 #~ if test $in_tree_ld = yes ; then
6268   #~ gcc_cv_ld_compress_debug=0
6269   #~ if test $ld_is_mold = yes; then
6270     #~ gcc_cv_ld_compress_debug=3
6271     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6272   #~ elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \
6273      #~ && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
6274     #~ gcc_cv_ld_compress_debug=2
6275     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6276   #~ 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 \
6277      #~ && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
6278     #~ gcc_cv_ld_compress_debug=3
6279     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6280   #~ 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 \
6281      #~ && test $in_tree_ld_is_elf = yes; then
6282     #~ gcc_cv_ld_compress_debug=1
6283   #~ fi
6284 #~ elif echo "$ld_ver" | grep GNU > /dev/null; then
6285   #~ if test $ld_is_mold = yes; then
6286     #~ gcc_cv_ld_compress_debug=3
6287     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6288   #~ elif test "$ld_vers_major" -lt 2 \
6289      #~ || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
6290     #~ gcc_cv_ld_compress_debug=0
6291   #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
6292     #~ gcc_cv_ld_compress_debug=1
6293   #~ else
6294     #~ gcc_cv_ld_compress_debug=3
6295     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6296   #~ fi
6297   #~ if test $ld_is_gold = yes; then
6298     #~ gcc_cv_ld_compress_debug=2
6299     #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6300   #~ fi
6301 #~ else
6302 #~ changequote(,)dnl
6303   #~ case "${target}" in
6304     #~ *-*-solaris2*)
6305       #~ # Introduced in Solaris 11.2.
6306       #~ if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
6307         #~ gcc_cv_ld_compress_debug=3
6308         #~ gcc_cv_ld_compress_debug_option="-z compress-sections"
6309       #~ else
6310         #~ gcc_cv_ld_compress_debug=0
6311       #~ fi
6312       #~ ;;
6313     #~ *)
6314       #~ # Assume linkers other than GNU ld don't support compessed debug
6315       #~ # sections.
6316       #~ gcc_cv_ld_compress_debug=0
6317       #~ ;;
6318   #~ esac
6319 #~ changequote([,])dnl
6320 #~ fi
6321 #~ AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
6322 #~ [Define to the level of your linker's compressed debug section support.])
6323 #~ AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
6324 #~ [Define to the linker option to enable compressed debug sections.])
6325 #~ AC_MSG_RESULT($gcc_cv_ld_compress_debug)
6327 if test x"$ld64_flag" = x"yes"; then
6329   # Set defaults for possibly untestable items.
6330   gcc_cv_ld64_export_dynamic=0
6331   gcc_cv_ld64_platform_version=0
6333   if test "$build" = "$host"; then
6334     darwin_try_test=1
6335   else
6336     darwin_try_test=0
6337   fi
6339   # On Darwin, because of FAT library support, it is often possible to execute
6340   # exes from compatible archs even when the host differs from the build system.
6341   case "$build","$host" in
6342     x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
6343         darwin_try_test=1;;
6344     *) ;;
6345   esac
6347   # If the configurer specified a minimum ld64 version to be supported, then use
6348   # that to determine feature support.
6349   if test x"${gcc_cv_ld64_version}" != x; then
6350     AC_MSG_CHECKING(ld64 specified version)
6351     gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
6352     AC_MSG_RESULT($gcc_cv_ld64_major)
6353     if test "$gcc_cv_ld64_major" -ge 236; then
6354       gcc_cv_ld64_export_dynamic=1
6355     fi
6356     if test "$gcc_cv_ld64_major" -ge 512; then
6357       gcc_cv_ld64_platform_version=1
6358     fi
6359   elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
6360     # If the version was not specified, try to find it.
6361     AC_MSG_CHECKING(linker version)
6362     if test x"${gcc_cv_ld64_version}" = x; then
6363       gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
6364     fi
6365     AC_MSG_RESULT($gcc_cv_ld64_version)
6367     AC_MSG_CHECKING(linker for -export_dynamic support)
6368     gcc_cv_ld64_export_dynamic=1
6369     if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6370       gcc_cv_ld64_export_dynamic=0
6371     fi
6372     AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
6374     AC_MSG_CHECKING(linker for -platform_version support)
6375     gcc_cv_ld64_platform_version=1
6376     if $gcc_cv_ld -platform_version macos 10.5 0.0 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6377       gcc_cv_ld64_platform_version=0
6378     fi
6379     AC_MSG_RESULT($gcc_cv_ld64_platform_version)
6380   fi
6382   if test x"${gcc_cv_ld64_version}" != x; then
6383     AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
6384       [Define to ld64 version.])
6385   fi
6387   AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
6388   [Define to 1 if ld64 supports '-export_dynamic'.])
6390   AC_DEFINE_UNQUOTED(LD64_HAS_PLATFORM_VERSION, $gcc_cv_ld64_platform_version,
6391   [Define to 1 if ld64 supports '-platform_version'.])
6394 if test x"$dsymutil_flag" = x"yes"; then
6396     # If the user specified a dsymutil path, then we will already have the
6397     # version string, otherwise, pick it up.
6398     if test x"$gcc_cv_dsymutil" = x; then
6399         AC_MSG_WARN([dsymutil is a required tool for this system, but not found])
6400         dsymutil_vers="tool unspecified"
6401     elif test x"$dsymutil_vers" = x; then
6402         dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
6403     fi
6405     dsymutil_temp=`echo $dsymutil_vers | sed 1q`
6406     AC_MSG_CHECKING(dsymutil version "$dsymutil_temp")
6407     if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
6408       dsymutil_kind=DWARFUTILS
6409       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([[0-9\.]]*\).*/\1/'`
6410     elif echo $dsymutil_temp | grep clang- > /dev/null; then
6411       dsymutil_kind=CLANG
6412       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([[0-9\.]]*\).*/\1/'`
6413     elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
6414       dsymutil_kind=LLVM
6415       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([[0-9\.]]*\).*/\1/'`
6416     else
6417       dsymutil_kind=UNKNOWN
6418       dsymutil_vers="0.0"
6419     fi
6420     dsymutil_major=`expr "$dsymutil_vers" : '\([[0-9]]*\)'`
6421     dsymutil_minor=`expr "$dsymutil_vers" : '[[0-9]]*\.\([[0-9]]*\)'`
6422     dsymutil_tiny=`expr "$dsymutil_vers" : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
6423     if test x"${dsymutil_minor}" = x; then
6424       dsymutil_minor=0
6425     fi
6426     if test x"${dsymutil_tiny}" = x; then
6427       dsymutil_tiny=0
6428     fi
6429     AC_DEFINE_UNQUOTED(DSYMUTIL_VERSION, [$dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}],
6430         [Define to the dsymutil version.])
6431     AC_MSG_RESULT($dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} )
6434 #~ case $target_os in
6435   #~ win32 | pe | cygwin* | mingw32*)
6436     #~ AC_MSG_CHECKING(broken PE linker dwarf5 support)
6437     #~ gcc_cv_ld_broken_pe_dwarf5=yes
6438     #~ if test $in_tree_ld = yes ; then
6439       #~ if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6440            #~ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
6441          #~ && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6442               #~ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
6443         #~ gcc_cv_ld_broken_pe_dwarf5=no
6444       #~ fi
6445     #~ else
6446       #~ if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6447          #~ && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
6448         #~ gcc_cv_ld_broken_pe_dwarf5=no
6449       #~ fi
6450     #~ fi
6451     #~ if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
6452       #~ AC_DEFINE(HAVE_LD_BROKEN_PE_DWARF5, 1,
6453                 #~ [Define if the PE linker has broken DWARF 5 support.])
6454     #~ fi
6455     #~ AC_MSG_RESULT($gcc_cv_ld_broken_pe_dwarf5)
6457     #~ AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
6458     #~ gcc_cv_ld_disable_dynamicbase=no
6459     #~ if test $in_tree_ld = yes; then
6460       #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
6461         #~ gcc_cv_ld_disable_dynamicbase=yes
6462       #~ fi
6463     #~ else
6464       #~ if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
6465         #~ gcc_cv_ld_disable_dynamicbase=yes
6466       #~ fi
6467     #~ fi
6468     #~ if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
6469       #~ AC_DEFINE(HAVE_LD_PE_DISABLE_DYNAMICBASE, 1,
6470                 #~ [Define if the PE linker supports --disable-dynamicbase option.])
6471     #~ fi
6472     #~ AC_MSG_RESULT($gcc_cv_ld_disable_dynamicbase)
6473     #~ ;;
6474 #~ esac
6476 # --------
6477 # UNSORTED
6478 # --------
6480 AC_CACHE_CHECK(linker --as-needed support,
6481 gcc_cv_ld_as_needed,
6482 [gcc_cv_ld_as_needed=no
6483 gcc_cv_ld_as_needed_option='--as-needed'
6484 gcc_cv_ld_no_as_needed_option='--no-as-needed'
6485 if test $in_tree_ld = yes ; then
6486   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 \
6487      && test $in_tree_ld_is_elf = yes; then
6488     gcc_cv_ld_as_needed=yes
6489     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
6490       gcc_cv_ld_as_needed_option='--push-state --as-needed'
6491       gcc_cv_ld_no_as_needed_option='--pop-state'
6492     fi
6493   fi
6494 elif test x$gcc_cv_ld != x; then
6495   # Check if linker supports --as-needed and --no-as-needed options
6496   if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
6497     gcc_cv_ld_as_needed=yes
6498     if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
6499        && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
6500        && echo "$ld_ver" | grep GNU > /dev/null \
6501        && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
6502       # Use these options only when both ld.bfd and ld.gold support
6503       # --push-state/--pop-state, which unfortunately wasn't added
6504       # at the same time.
6505       gcc_cv_ld_as_needed_option='--push-state --as-needed'
6506       gcc_cv_ld_no_as_needed_option='--pop-state'
6507     fi
6508   fi
6509   case "$target:$gnu_ld" in
6510     *-*-solaris2*:no)
6511       # Solaris 2 ld always supports -z ignore/-z record.  Prefer the native
6512       # forms.
6513       gcc_cv_ld_as_needed=yes
6514       gcc_cv_ld_as_needed_option="-z ignore"
6515       gcc_cv_ld_no_as_needed_option="-z record"
6516       ;;
6517   esac
6519 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
6520 # dl_iterate_phdr, i.e. since Solaris 11.
6521 case "$target" in
6522   *-*-solaris2.1[[1-9]]*)
6523     case "$target" in
6524     i?86-*-* | x86_64-*-*)
6525       if echo "$ld_ver" | grep GNU > /dev/null; then
6526         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
6527         gcc_cv_ld_as_needed=no
6528       fi
6529       ;;
6530     esac
6531     ;;
6532   *-*-solaris2*)
6533     gcc_cv_ld_as_needed=no
6534     ;;
6535 esac
6537 if test x"$gcc_cv_ld_as_needed" = xyes; then
6538         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
6539 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
6540         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
6541 [Define to the linker option to ignore unused dependencies.])
6542         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
6543 [Define to the linker option to keep unused dependencies.])
6546 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
6547 saved_LDFLAGS="$LDFLAGS"
6548 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
6549   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
6550   AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6551     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
6552 done
6553 LDFLAGS="$saved_LDFLAGS"
6554 if test "x$gcc_cv_ld_clearcap" = xyes; then
6555   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
6556 [Define if the linker supports clearing hardware capabilities via mapfile.])
6557   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
6559 AC_MSG_RESULT($gcc_cv_ld_clearcap)
6561 case "$target" in
6562   powerpc*-*-*)
6563     case "$target" in
6564       *le-*-linux*)
6565         emul_name="-melf32lppc"
6566         ;;
6567       *)
6568         emul_name="-melf32ppc"
6569         ;;
6570     esac
6571     AC_CACHE_CHECK(linker .gnu.attributes long double support,
6572     gcc_cv_ld_ppc_attr,
6573     [gcc_cv_ld_ppc_attr=no
6574     if test x"$ld_is_gold" = xyes; then
6575       gcc_cv_ld_ppc_attr=yes
6576     elif test $in_tree_ld = yes ; then
6577       if test "$gcc_cv_gld_major_version" -eq 2 \
6578                 -a "$gcc_cv_gld_minor_version" -ge 28 \
6579                 -o "$gcc_cv_gld_major_version" -gt 2; then
6580         gcc_cv_ld_ppc_attr=yes
6581       fi
6582     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6583       # check that merging the long double .gnu_attribute doesn't warn
6584       cat > conftest1.s <<EOF
6585         .gnu_attribute 4,1
6587       cat > conftest2.s <<EOF
6588         .gnu_attribute 4,9
6590       if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6591          && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6592          && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
6593          && test ! -s conftest.err; then
6594         gcc_cv_ld_ppc_attr=yes
6595       fi
6596       rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
6597     fi
6598     ])
6599     if test x$gcc_cv_ld_ppc_attr = xyes; then
6600       AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
6601     [Define if your PowerPC linker has .gnu.attributes long double support.])
6602     fi
6603     ;;
6604 esac
6606 case "$target:$tm_file" in
6607   powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
6608   case "$target" in
6609      *le-*-linux*)
6610      emul_name="-melf64lppc"
6611       ;;
6612      *-*-linux*)
6613      emul_name="-melf64ppc"
6614       ;;
6615      *le-*-freebsd*)
6616      emul_name="-melf64lppc_fbsd"
6617       ;;
6618      *-*-freebsd*)
6619      emul_name="-melf64ppc_fbsd"
6620       ;;
6621   esac
6622     AC_CACHE_CHECK(linker support for omitting dot symbols,
6623     gcc_cv_ld_no_dot_syms,
6624     [gcc_cv_ld_no_dot_syms=no
6625     if test x"$ld_is_gold" = xyes; then
6626       gcc_cv_ld_no_dot_syms=yes
6627     elif test $in_tree_ld = yes ; then
6628       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
6629         gcc_cv_ld_no_dot_syms=yes
6630       fi
6631     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6632       cat > conftest1.s <<EOF
6633         .text
6634         bl .foo
6636       cat > conftest2.s <<EOF
6637         .section ".opd","aw"
6638         .align 3
6639         .globl foo
6640         .type foo,@function
6641 foo:
6642         .quad .LEfoo,.TOC.@tocbase,0
6643         .text
6644 .LEfoo:
6645         blr
6646         .size foo,.-.LEfoo
6648       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6649          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6650          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
6651         gcc_cv_ld_no_dot_syms=yes
6652       fi
6653       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
6654     fi
6655     ])
6656     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
6657       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
6658     [Define if your PowerPC64 linker only needs function descriptor syms.])
6659     fi
6661     AC_CACHE_CHECK(linker large toc support,
6662     gcc_cv_ld_large_toc,
6663     [gcc_cv_ld_large_toc=no
6664     if test x"$ld_is_gold" = xyes; then
6665       gcc_cv_ld_large_toc=yes
6666     elif test $in_tree_ld = yes ; then
6667       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
6668         gcc_cv_ld_large_toc=yes
6669       fi
6670     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6671       cat > conftest.s <<EOF
6672         .section ".tbss","awT",@nobits
6673         .align 3
6674 ie0:    .space 8
6675         .global _start
6676         .text
6677 _start:
6678         addis 9,13,ie0@got@tprel@ha
6679         ld 9,ie0@got@tprel@l(9)
6681       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6682          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
6683         gcc_cv_ld_large_toc=yes
6684       fi
6685       rm -f conftest conftest.o conftest.s
6686     fi
6687     ])
6688     if test x"$gcc_cv_ld_large_toc" = xyes; then
6689       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6690     [Define if your PowerPC64 linker supports a large TOC.])
6691     fi
6693     AC_CACHE_CHECK(linker toc pointer alignment,
6694     gcc_cv_ld_toc_align,
6695     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
6696       cat > conftest.s <<EOF
6697         .global _start
6698         .text
6699 _start:
6700         addis 9,2,x@got@ha
6701         .section .data.rel.ro,"aw",@progbits
6702         .p2align 16
6703         .space 32768
6704 x:      .quad .TOC.
6706       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6707          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
6708         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)) }'`
6709       fi
6710       rm -f conftest conftest.o conftest.s
6711     fi
6712     ])
6713     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
6714       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
6715     [Define to .TOC. alignment forced by your linker.])
6716     fi
6717     ;;
6718 esac
6720 case "$target" in
6721   *-*-aix*)
6722     AC_CACHE_CHECK(linker large toc support,
6723     gcc_cv_ld_large_toc,
6724     [gcc_cv_ld_large_toc=no
6725     if test x$gcc_cv_as != x ; then
6726       cat > conftest.s <<EOF
6727         .toc
6728 LC..1:
6729         .tc a[[TC]],a[[RW]]
6730         .extern a[[RW]]
6731         .csect .text[[PR]]
6732 .largetoctest:
6733         addis 9,LC..1@u(2)
6734         ld 3,LC..1@l(9)
6736       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
6737         gcc_cv_ld_large_toc=yes
6738       fi
6739       rm -f conftest conftest.o conftest.s
6740     fi
6741     ])
6742     if test x"$gcc_cv_ld_large_toc" = xyes; then
6743       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6744     [Define if your PowerPC64 linker supports a large TOC.])
6745     fi
6746     ;;
6747 esac
6749 AC_CACHE_CHECK(linker --build-id support,
6750   gcc_cv_ld_buildid,
6751   [gcc_cv_ld_buildid=no
6752   if test $in_tree_ld = yes ; then
6753     if test "$gcc_cv_gld_major_version" -eq 2 -a \
6754        "$gcc_cv_gld_minor_version" -ge 18 -o \
6755        "$gcc_cv_gld_major_version" -gt 2 \
6756        && test $in_tree_ld_is_elf = yes; then
6757       gcc_cv_ld_buildid=yes
6758     fi
6759   elif test x$gcc_cv_ld != x; then
6760     if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
6761       gcc_cv_ld_buildid=yes
6762     fi
6763   fi])
6764 if test x"$gcc_cv_ld_buildid" = xyes; then
6765   AC_DEFINE(HAVE_LD_BUILDID, 1,
6766   [Define if your linker supports --build-id.])
6769 AC_ARG_ENABLE(linker-build-id,
6770 [AS_HELP_STRING([--enable-linker-build-id],
6771                 [compiler will always pass --build-id to linker])],
6773 enable_linker_build_id=no)
6775 if test x"$enable_linker_build_id" = xyes; then
6776   if test x"$gcc_cv_ld_buildid" = xyes; then
6777     AC_DEFINE(ENABLE_LD_BUILDID, 1,
6778     [Define if gcc should always pass --build-id to linker.])
6779   else
6780     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
6781   fi
6784 # In binutils 2.21, GNU ld gained support for new emulations fully
6785 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
6786 AC_CACHE_CHECK(linker *_sol2 emulation support,
6787   gcc_cv_ld_sol2_emulation,
6788   [gcc_cv_ld_sol2_emulation=no
6789   if test $in_tree_ld = yes ; then
6790     if test "$gcc_cv_gld_major_version" -eq 2 -a \
6791        "$gcc_cv_gld_minor_version" -ge 21 -o \
6792        "$gcc_cv_gld_major_version" -gt 2 \
6793        && test $in_tree_ld_is_elf = yes; then
6794       gcc_cv_ld_sol2_emulation=yes
6795     fi
6796   elif test x$gcc_cv_ld != x; then
6797     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6798        grep _sol2 > /dev/null; then
6799       gcc_cv_ld_sol2_emulation=yes
6800     fi
6801   fi])
6802 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6803   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6804   [Define if your linker supports the *_sol2 emulations.])
6807 AC_CACHE_CHECK(linker --sysroot support,
6808   gcc_cv_ld_sysroot,
6809   [gcc_cv_ld_sysroot=no
6810   if test $in_tree_ld = yes ; then
6811       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
6812         gcc_cv_ld_sysroot=yes
6813       fi
6814   elif test x$gcc_cv_ld != x; then 
6815     if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6816       gcc_cv_ld_sysroot=yes
6817     fi
6818   fi])
6819 if test x"$gcc_cv_ld_sysroot" = xyes; then
6820   AC_DEFINE(HAVE_LD_SYSROOT, 1,
6821   [Define if your linker supports --sysroot.])
6822 fi        
6824 case $target in
6825 *-*-solaris2*)
6826   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6827   AC_CACHE_CHECK([system-provided CRTs on Solaris],
6828     gcc_cv_solaris_crts,
6829     [gcc_cv_solaris_crts=no
6830      if test x$host != x$target; then
6831        if test "x$with_sysroot" = xyes; then
6832          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6833        else
6834          target_sysroot="${with_sysroot}"
6835        fi
6836      fi
6837      target_libdir="$target_sysroot/usr/lib"
6838      # At the time they were added, gcrt1.o became a symlink for backwards
6839      # compatibility on x86, while crt1.o was added on sparc, so check for that.
6840      case $target in
6841        i?86-*-solaris2* | x86_64-*-solaris2*)
6842          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6843          ;;
6844        sparc*-*-solaris2*)
6845          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6846          ;;
6847      esac])
6848   ;;
6849 esac
6850 if test x$gcc_cv_solaris_crts = xyes; then
6851   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6852             [Define if the system-provided CRTs are present on Solaris.])
6855 AC_ARG_ENABLE(libssp,
6856 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6857 [case "${enableval}" in
6858   yes|no)
6859     ;;
6860   *)
6861     AC_MSG_ERROR([unknown libssp setting $enableval])
6862     ;;
6863 esac], [])
6865 # Test for stack protector support in target C library.
6866 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6867   gcc_cv_libc_provides_ssp,
6868   [gcc_cv_libc_provides_ssp=no
6869   if test "x$enable_libssp" = "xno"; then
6870     gcc_cv_libc_provides_ssp=yes
6871   elif test "x$enable_libssp" = "xyes"; then
6872     gcc_cv_libc_provides_ssp=no
6873   else
6874     case "$target" in
6875        *-*-musl*)
6876          # All versions of musl provide stack protector
6877          gcc_cv_libc_provides_ssp=yes;;
6878        *-*-linux* | *-*-kfreebsd*-gnu)
6879       # glibc 2.4 and later provides __stack_chk_fail and
6880       # either __stack_chk_guard, or TLS access to stack guard canary.
6881       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6882       [if test -f $target_header_dir/features.h \
6883          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
6884             $target_header_dir/features.h > /dev/null; then
6885         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
6886              $target_header_dir/features.h > /dev/null && \
6887              test -f $target_header_dir/bits/uClibc_config.h && \
6888              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
6889              $target_header_dir/bits/uClibc_config.h > /dev/null; then
6890           gcc_cv_libc_provides_ssp=yes
6891         fi
6892       # all versions of Bionic support stack protector
6893       elif test -f $target_header_dir/sys/cdefs.h \
6894         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
6895            $target_header_dir/sys/cdefs.h > /dev/null; then
6896          gcc_cv_libc_provides_ssp=yes
6897       fi]])
6898         ;;
6899        *-*-gnu*)
6900          # Avoid complicated tests (see
6901          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6902          # simply assert that glibc does provide this, which is true for all
6903          # realistically usable GNU/Hurd configurations.
6904          # All supported versions of musl provide it as well
6905          gcc_cv_libc_provides_ssp=yes;;
6906        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6907          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6908            [echo "no __stack_chk_fail on this target"])
6909         ;;
6910        *) gcc_cv_libc_provides_ssp=no ;;
6911     esac
6912   fi])
6914 if test x$gcc_cv_libc_provides_ssp = xyes; then
6915   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6916             [Define if your target C library provides stack protector support])
6919 # Check whether --enable-default-ssp was given.
6920 AC_ARG_ENABLE(default-ssp,
6921 [AS_HELP_STRING([--enable-default-ssp],
6922   [enable Stack Smashing Protection as default])],[
6923 if test x$gcc_cv_libc_provides_ssp = xyes; then
6924   case "$target" in
6925     ia64*-*-*) enable_default_ssp=no ;;
6926     *) enable_default_ssp=$enableval ;;
6927   esac
6928 else
6929   enable_default_ssp=no
6930 fi],
6931 enable_default_ssp=no)
6932 if test x$enable_default_ssp = xyes ; then
6933   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6934       [Define if your target supports default stack protector and it is enabled.])
6936 AC_SUBST([enable_default_ssp])
6938 # Test for <sys/sdt.h> on the target.
6939 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
6940 AC_MSG_CHECKING(sys/sdt.h in the target C library)
6941 have_sys_sdt_h=no
6942 if test -f $target_header_dir/sys/sdt.h; then
6943   have_sys_sdt_h=yes
6944   AC_DEFINE(HAVE_SYS_SDT_H, 1,
6945             [Define if your target C library provides sys/sdt.h])
6947 AC_MSG_RESULT($have_sys_sdt_h)
6949 # Check if TFmode long double should be used by default or not.
6950 # Some glibc targets used DFmode long double, but with glibc 2.4
6951 # and later they can use TFmode.
6952 case "$target" in
6953   powerpc*-*-linux* | \
6954   sparc*-*-linux* | \
6955   s390*-*-linux* | \
6956   alpha*-*-linux*)
6957     AC_ARG_WITH(long-double-128,
6958       [AS_HELP_STRING([--with-long-double-128],
6959                       [use 128-bit long double by default])],
6960       gcc_cv_target_ldbl128="$with_long_double_128", [
6961       case "$target" in
6962         s390*-*-linux-musl*)
6963           gcc_cv_target_ldbl128=yes
6964           ;;
6965         powerpc*-*-linux-musl*)
6966           gcc_cv_target_ldbl128=no
6967           ;;
6968         *)]
6969       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
6970       [gcc_cv_target_ldbl128=no
6971       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6972         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
6973       && gcc_cv_target_ldbl128=yes
6974       ]])]
6975       [
6976           ;;
6977       esac
6978       ])
6979     ;;
6980 esac
6981 if test x$gcc_cv_target_ldbl128 = xyes; then
6982   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
6983             [Define if TFmode long double should be the default])
6986 # Check if TFmode long double target should use the IBM extended double or IEEE
6987 # 128-bit floating point formats if long doubles are 128-bits long.  The long
6988 # double type can only be switched on powerpc64 bit Linux systems where VSX is
6989 # supported.  Other PowerPC systems do not build the IEEE 128-bit emulator in
6990 # libgcc.
6991 AC_ARG_WITH([long-double-format],
6992   [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
6993                   [Specify whether PowerPC long double uses IEEE or IBM format])],[
6994 case "$target:$with_long_double_format" in
6995   powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
6996     :
6997     ;;
6998   powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
6999     # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
7000     case "$with_cpu" in
7001       power7 | power8 | power9 | power1*)
7002         :
7003         ;;
7004       *)
7005         AC_MSG_ERROR([Configuration option --with-long-double-format is only \
7006 supported if the default cpu is power7 or newer])
7007         with_long_double_format=""
7008         ;;
7009       esac
7010       ;;
7011   powerpc64*-*-linux*:*)
7012     AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
7013     with_long_double_format=""
7014     ;;
7015   *)
7016     AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
7017 on 64-bit PowerPC VSX Linux systems])
7018     with_long_double_format=""
7019     ;;
7020 esac],
7021   [])
7023 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
7024 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
7025 gcc_cv_libc_provides_hwcap_in_tcb=no
7026 case "$target" in
7027   powerpc*-*-linux*)
7028     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
7029     ;;
7030 esac
7031 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
7032   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
7033             [Define if your target C Library provides the AT_HWCAP value in the TCB])
7036 # Check if the target LIBC handles PT_GNU_STACK.
7037 gcc_cv_libc_gnustack=unknown
7038 case "$target" in
7039   mips*-*-linux-musl*)
7040     gcc_cv_libc_gnustack=yes
7041     ;;
7042   mips*-*-linux*)
7043     GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
7044     ;;
7045 esac
7046 if test x$gcc_cv_libc_gnustack = xyes; then
7047   AC_DEFINE(TARGET_LIBC_GNUSTACK, 1,
7048             [Define if your target C Library properly handles PT_GNU_STACK])
7051 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
7052 gcc_cv_target_dl_iterate_phdr=unknown
7053 case "$target" in
7054   *-*-solaris2*)
7055     # <link.h> needs both a dl_iterate_phdr declaration and support for
7056     # compilation with largefile support.
7057     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
7058       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
7059       gcc_cv_target_dl_iterate_phdr=yes
7060     else
7061       gcc_cv_target_dl_iterate_phdr=no
7062     fi
7063     ;;
7064   *-*-dragonfly* | *-*-freebsd*)
7065     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
7066       gcc_cv_target_dl_iterate_phdr=yes
7067     else
7068       gcc_cv_target_dl_iterate_phdr=no
7069     fi
7070     ;;
7071   *-linux-musl*)
7072     gcc_cv_target_dl_iterate_phdr=yes
7073     ;;
7074 esac
7075 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
7076 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
7077    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
7078 [Define if your target C library provides the `dl_iterate_phdr' function.])
7080 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
7082 # We no longer support different GC mechanisms.  Emit an error if
7083 # the user configures with --with-gc.
7084 AC_ARG_WITH(gc,
7085 [AS_HELP_STRING([--with-gc={page,zone}],
7086                 [this option is not supported anymore.  It used to choose
7087                  the garbage collection mechanism to use with the compiler])],
7088 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
7091 # Libraries to use on the host.  This will normally be set by the top
7092 # level Makefile.  Here we simply capture the value for our Makefile.
7093 if test -z "${HOST_LIBS+set}"; then
7094   HOST_LIBS=
7096 AC_SUBST(HOST_LIBS)
7098 # Use the system's zlib library.
7099 AM_ZLIB
7101 dnl Very limited version of automake's enable-maintainer-mode
7103 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
7104   dnl maintainer-mode is disabled by default
7105   AC_ARG_ENABLE(maintainer-mode,
7106 [AS_HELP_STRING([--enable-maintainer-mode],
7107                 [enable make rules and dependencies not useful
7108                  (and sometimes confusing) to the casual installer])],
7109       maintainer_mode=$enableval,
7110       maintainer_mode=no)
7112 AC_MSG_RESULT($maintainer_mode)
7114 if test "$maintainer_mode" = "yes"; then
7115   MAINT=''
7116 else
7117   MAINT='#'
7119 AC_SUBST(MAINT)dnl
7121 dnl Variables for tags utilities; copied from automake 1.16.4+'s init.m4
7122 if test -z "$CTAGS"; then
7123   CTAGS=ctags
7125 AC_SUBST([CTAGS])
7126 if test -z "$ETAGS"; then
7127   ETAGS=etags
7129 AC_SUBST([ETAGS])
7130 if test -z "$CSCOPE"; then
7131   CSCOPE=cscope
7133 AC_SUBST([CSCOPE])
7135 dnl Whether to prevent multiple front-ends from linking at the same time
7137 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
7138   AC_ARG_ENABLE(link-mutex,
7139 [AS_HELP_STRING([--enable-link-mutex],
7140                 [avoid linking multiple front-ends at once to avoid thrashing
7141                  on the build machine])],
7142       do_link_mutex=$enableval,
7143       do_link_mutex=no)
7144 AC_MSG_RESULT($do_link_mutex)
7146 if test "$do_link_mutex" = "yes"; then
7147    DO_LINK_MUTEX=true
7148 else
7149    DO_LINK_MUTEX=false
7151 AC_SUBST(DO_LINK_MUTEX)
7153 dnl Whether to prevent multiple GCC front-ends from linking at the same time
7155 AC_MSG_CHECKING([whether to serialize linking of multiple front-ends])
7156   AC_ARG_ENABLE(link-serialization,
7157 [AS_HELP_STRING([--enable-link-serialization],
7158                 [avoid linking multiple GCC front-ends at once using make
7159                  dependencies to avoid thrashing on the build machine])],
7160       do_link_serialization=$enableval,
7161       do_link_serialization=no)
7162 AC_MSG_RESULT($do_link_serialization)
7164 case "$do_link_serialization" in
7165   yes)
7166     DO_LINK_SERIALIZATION=1;;
7167   [[1-9]] | [[1-9]][[0-9]] | [[1-9]][[0-9]][[0-9]])
7168     DO_LINK_SERIALIZATION=$do_link_serialization;;
7169   no)
7170     DO_LINK_SERIALIZATION=;;
7171   *)
7172     AC_MSG_ERROR(bad value ${do_link_serialization} given for --enable-link-serialization) ;;
7173 esac
7174 AC_SUBST(DO_LINK_SERIALIZATION)
7176 # --------------
7177 # Language hooks
7178 # --------------
7180 # Make empty files to contain the specs and options for each language.
7181 # Then add #include lines to for a compiler that has specs and/or options.
7183 subdirs=
7184 lang_opt_files=
7185 lang_specs_files=
7186 lang_tree_files=
7187 # These (without "all_") are set in each config-lang.in.
7188 # `language' must be a single word so is spelled singularly.
7189 all_languages=
7190 all_compilers=
7191 all_outputs='Makefile'
7192 # List of language configure and makefile fragments.
7193 all_lang_configurefrags=
7194 all_lang_makefrags=
7195 # Additional files for gengtype
7196 all_gtfiles="$target_gtfiles"
7198 # These are the languages that are set in --enable-languages,
7199 # and are available in the GCC tree.
7200 all_selected_languages=
7202 # Add the language fragments.
7203 # Languages are added via two mechanisms.  Some information must be
7204 # recorded in makefile variables, these are defined in config-lang.in.
7205 # We accumulate them and plug them into the main Makefile.
7206 # The other mechanism is a set of hooks for each of the main targets
7207 # like `clean', `install', etc.
7209 language_hooks="Make-hooks"
7211 for lang in ${srcdir}/*/config-lang.in
7213 changequote(,)dnl
7214         test "$lang" = "${srcdir}/*/config-lang.in" && continue
7216         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
7217         if test "x$lang_alias" = x
7218         then
7219               echo "$lang doesn't set \$language." 1>&2
7220               exit 1
7221         fi
7222         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
7223         subdirs="$subdirs $subdir"
7225         # $gcc_subdir is where the gcc integration files are to be found
7226         # for a language, both for internal compiler purposes (compiler
7227         # sources implementing front-end to GCC tree converters), and for
7228         # build infrastructure purposes (Make-lang.in, etc.)
7229         #
7230         # This will be <subdir> (relative to $srcdir) if a line like 
7231         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
7232         # is found in <langdir>/config-lang.in, and will remain <langdir>
7233         # otherwise.
7234         #
7235         # Except for the language alias (fetched above), the regular
7236         # "config-lang.in" contents are always retrieved from $gcc_subdir,
7237         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
7238         # only this and the language alias.
7240         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
7241         if [ "$gcc_subdir" = "" ]; then
7242            gcc_subdir="$subdir"
7243         fi
7245         case ",$enable_languages," in
7246         *,$lang_alias,*)
7247             all_selected_languages="$all_selected_languages $lang_alias"
7248             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
7249                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
7250             fi
7251             ;;
7252         esac
7253 changequote([,])dnl
7255         language=
7256         boot_language=
7257         compilers=
7258         outputs=
7259         gtfiles=
7260         subdir_requires=
7261         . ${srcdir}/$gcc_subdir/config-lang.in
7262         if test "x$language" = x
7263         then
7264                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
7265                 exit 1
7266         fi
7268         ok=:
7269         case ",$enable_languages," in
7270                 *,$lang_alias,*) ;;
7271                 *)
7272                         for i in $subdir_requires; do
7273                                 test -f "${srcdir}/$i/config-lang.in" && continue
7274                                 ok=false
7275                                 break
7276                         done
7277                 ;;
7278         esac
7279         $ok || continue
7281         all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
7282         if test "x$language" = xc && test -n "$all_lang_makefrags"; then
7283             # Put c/Make-lang.in fragment first to match serialization languages order.
7284             all_lang_makefrags="\$(srcdir)/$gcc_subdir/Make-lang.in $all_lang_makefrags"
7285         else
7286             all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
7287         fi
7288         if test -f $srcdir/$gcc_subdir/lang.opt; then
7289             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
7290             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
7291         fi
7292         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
7293             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
7294         fi
7295         all_languages="$all_languages $language"
7296         all_compilers="$all_compilers $compilers"
7297         all_outputs="$all_outputs $outputs"
7298         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
7299         case ",$enable_languages," in
7300                 *,lto,*)
7301                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
7302                     enable_lto=yes
7303                     AC_SUBST(enable_lto)
7304                     ;;
7305                 *) ;;
7306         esac
7307 done
7309 check_languages=
7310 for language in $all_selected_languages
7312         check_languages="$check_languages check-$language"
7313 done
7315 selftest_languages=
7316 for language in $all_selected_languages
7318         selftest_languages="$selftest_languages selftest-$language"
7319 done
7321 # We link each language in with a set of hooks, reached indirectly via
7322 # lang.${target}.  Only do so for selected languages.
7324 rm -f Make-hooks
7325 touch Make-hooks
7326 target_list="all.cross start.encap rest.encap tags \
7327         install-common install-man install-info install-dvi install-pdf \
7328         install-html dvi pdf html uninstall info man srcextra srcman srcinfo \
7329         mostlyclean clean distclean maintainer-clean install-plugin"
7331 for t in $target_list
7333         x=
7334         for lang in $all_selected_languages
7335         do
7336                 x="$x $lang.$t"
7337         done
7338         echo "lang.$t: $x" >> Make-hooks
7339 done
7341 echo "ifeq (\$(DO_LINK_SERIALIZATION),)" >> Make-hooks
7342 echo "SERIAL_LIST =" >> Make-hooks
7343 echo else >> Make-hooks
7344 lang_cnt=0
7345 lang_list=
7346 prev=c
7347 serialization_languages=c
7348 for lang in $all_selected_languages
7350         test $lang = c && continue
7351         if test $lang = lto; then
7352                 serialization_languages="$serialization_languages lto1 lto2"
7353         else
7354                 serialization_languages="$serialization_languages $lang"
7355         fi
7356 done
7357 for lang in $serialization_languages
7359         test $lang = c && continue
7360         lang_cnt=`expr $lang_cnt + 1`
7361         lang_list=" $prev$lang_list"
7362         prev=${lang}
7363 done
7364 echo "SERIAL_LIST = \$(wordlist \$(DO_LINK_SERIALIZATION),$lang_cnt,$lang_list)" >> Make-hooks
7365 echo endif >> Make-hooks
7366 echo "SERIAL_COUNT = `expr $lang_cnt + 1`" >> Make-hooks
7367 echo "INDEX.c = 0" >> Make-hooks
7368 lang_idx=1
7369 for lang in $serialization_languages
7371         test $lang = c && continue
7372         echo "$lang.prev = \$(if \$(word $lang_cnt,\$(SERIAL_LIST)),\$(\$(word $lang_cnt,\$(SERIAL_LIST)).serial))" >> Make-hooks
7373         echo "INDEX.$lang = $lang_idx" >> Make-hooks
7374         lang_cnt=`expr $lang_cnt - 1`
7375         lang_idx=`expr $lang_idx + 1`
7376 done
7378 # --------
7379 # Option include files
7380 # --------
7382 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
7383 option_includes="option-includes.mk"
7384 AC_SUBST_FILE(option_includes)
7386 # --------
7387 # UNSORTED
7388 # --------
7390 # Create .gdbinit.
7392 echo "dir ." > .gdbinit
7393 echo "dir ${srcdir}" >> .gdbinit
7394 if test x$gdb_needs_out_file_path = xyes
7395 then
7396         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
7398 if test "x$subdirs" != x; then
7399         for s in $subdirs
7400         do
7401                 echo "dir ${srcdir}/$s" >> .gdbinit
7402         done
7404 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
7405 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
7407 # Put a breakpoint on __asan_report_error to help with debugging buffer
7408 # overflow.
7409 case "$CFLAGS" in
7410 *-fsanitize=address*)
7411   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
7412   ;;
7413 esac
7415 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
7416 AC_SUBST(gcc_tooldir)
7417 AC_SUBST(dollar)
7419 # Find a directory in which to install a shared libgcc.
7421 AC_ARG_ENABLE(version-specific-runtime-libs,
7422 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
7423                 [specify that runtime libraries should be
7424                  installed in a compiler-specific directory])])
7426 # Substitute configuration variables
7427 AC_SUBST(subdirs)
7428 AC_SUBST(srcdir)
7429 AC_SUBST(all_compilers)
7430 AC_SUBST(all_gtfiles)
7431 AC_SUBST(all_lang_configurefrags)
7432 AC_SUBST(all_lang_makefrags)
7433 AC_SUBST(all_languages)
7434 AC_SUBST(all_selected_languages)
7435 AC_SUBST(build_exeext)
7436 AC_SUBST(build_install_headers_dir)
7437 AC_SUBST(build_xm_file_list)
7438 AC_SUBST(build_xm_include_list)
7439 AC_SUBST(build_xm_defines)
7440 AC_SUBST(build_file_translate)
7441 AC_SUBST(check_languages)
7442 AC_SUBST(selftest_languages)
7443 AC_SUBST(cpp_install_dir)
7444 AC_SUBST(xmake_file)
7445 AC_SUBST(tmake_file)
7446 AC_SUBST(TM_ENDIAN_CONFIG)
7447 AC_SUBST(TM_MULTILIB_CONFIG)
7448 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
7449 AC_SUBST(extra_gcc_objs)
7450 AC_SUBST(user_headers_inc_next_pre)
7451 AC_SUBST(user_headers_inc_next_post)
7452 AC_SUBST(extra_headers_list)
7453 AC_SUBST(extra_objs)
7454 AC_SUBST(extra_programs)
7455 AC_SUBST(float_h_file)
7456 AC_SUBST(gcc_config_arguments)
7457 AC_SUBST(gcc_gxx_include_dir)
7458 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
7459 AC_SUBST(gcc_gxx_libcxx_include_dir)
7460 AC_SUBST(gcc_gxx_libcxx_include_dir_add_sysroot)
7461 AC_SUBST(host_exeext)
7462 AC_SUBST(host_xm_file_list)
7463 AC_SUBST(host_xm_include_list)
7464 AC_SUBST(host_xm_defines)
7465 AC_SUBST(out_host_hook_obj)
7466 AC_SUBST(install)
7467 AC_SUBST(lang_opt_files)
7468 AC_SUBST(lang_specs_files)
7469 AC_SUBST(lang_tree_files)
7470 AC_SUBST(local_prefix)
7471 AC_SUBST(md_file)
7472 AC_SUBST(objc_boehm_gc)
7473 AC_SUBST(out_file)
7474 AC_SUBST(out_object_file)
7475 AC_SUBST(common_out_file)
7476 AC_SUBST(common_out_object_file)
7477 AC_SUBST(tm_file_list)
7478 AC_SUBST(tm_include_list)
7479 AC_SUBST(tm_defines)
7480 AC_SUBST(tm_p_file_list)
7481 AC_SUBST(tm_p_include_list)
7482 AC_SUBST(tm_d_file_list)
7483 AC_SUBST(tm_d_include_list)
7484 AC_SUBST(xm_file_list)
7485 AC_SUBST(xm_include_list)
7486 AC_SUBST(xm_defines)
7487 AC_SUBST(use_gcc_stdint)
7488 AC_SUBST(c_target_objs)
7489 AC_SUBST(cxx_target_objs)
7490 AC_SUBST(fortran_target_objs)
7491 AC_SUBST(d_target_objs)
7492 AC_SUBST(target_cpu_default)
7494 AC_SUBST_FILE(language_hooks)
7496 # Echo link setup.
7497 if test x${build} = x${host} ; then
7498   if test x${host} = x${target} ; then
7499     echo "Links are now set up to build a native compiler for ${target}." 1>&2
7500   else
7501     echo "Links are now set up to build a cross-compiler" 1>&2
7502     echo " from ${host} to ${target}." 1>&2
7503   fi
7504 else
7505   if test x${host} = x${target} ; then
7506     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
7507     echo " for ${target}." 1>&2
7508   else
7509     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
7510     echo " from ${host} to ${target}." 1>&2
7511   fi
7514 AC_ARG_VAR(GMPLIBS,[How to link GMP])
7515 AC_ARG_VAR(GMPINC,[How to find GMP include files])
7517 AC_ARG_VAR(ISLLIBS,[How to link isl])
7518 AC_ARG_VAR(ISLINC,[How to find isl include files])
7519 if test "x${ISLLIBS}" != "x" ; then 
7520    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
7523 # SDCC GCC_ENABLE_PLUGINS
7524 AC_SUBST(pluginlibs)
7525 AC_SUBST(enable_plugin)
7526 if test x"$enable_plugin" = x"yes"; then
7527   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
7531 # Enable --enable-host-shared
7532 AC_ARG_ENABLE(host-shared,
7533 [AS_HELP_STRING([--enable-host-shared],
7534                 [build host code as shared libraries])],
7535 [PICFLAG=-fPIC], [PICFLAG=])
7536 AC_SUBST(enable_host_shared)
7537 AC_SUBST(PICFLAG)
7540 AC_ARG_ENABLE(libquadmath-support,
7541 [AS_HELP_STRING([--disable-libquadmath-support],
7542   [disable libquadmath support for Fortran])],
7543 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
7544 ENABLE_LIBQUADMATH_SUPPORT=yes)
7545 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
7546   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
7547             [Define to 1 to enable libquadmath support])
7551 # Specify what hash style to use by default.
7552 AC_ARG_WITH([linker-hash-style],
7553 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
7554                 [specify the linker hash style])],
7555 [case x"$withval" in
7556    xsysv)
7557      LINKER_HASH_STYLE=sysv
7558      ;;
7559    xgnu)
7560      LINKER_HASH_STYLE=gnu
7561      ;;
7562    xboth)
7563      LINKER_HASH_STYLE=both
7564      ;;
7565    *)
7566      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
7567      ;;
7568  esac],
7569 [LINKER_HASH_STYLE=''])
7570 if test x"${LINKER_HASH_STYLE}" != x; then
7571   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
7572                                          [The linker hash style])
7575 # Specify what should be the default of -fdiagnostics-color option.
7576 AC_ARG_WITH([diagnostics-color],
7577 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
7578                 [specify the default of -fdiagnostics-color option
7579                  auto-if-env stands for -fdiagnostics-color=auto if
7580                  GCC_COLOR environment variable is present and
7581                  -fdiagnostics-color=never otherwise])],
7582 [case x"$withval" in
7583    xnever)
7584      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
7585      ;;
7586    xauto)
7587      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
7588      ;;
7589    xauto-if-env)
7590      DIAGNOSTICS_COLOR_DEFAULT=-1
7591      ;;
7592    xalways)
7593      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
7594      ;;
7595    *)
7596      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
7597      ;;
7598  esac],
7599 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
7600 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
7601                    [The default for -fdiagnostics-color option])
7603 # Specify what should be the default of -fdiagnostics-urls option.
7604 AC_ARG_WITH([diagnostics-urls],
7605 [AC_HELP_STRING([--with-diagnostics-urls={never,auto,auto-if-env,always}],
7606                 [specify the default of -fdiagnostics-urls option
7607                  auto-if-env stands for -fdiagnostics-urls=auto if
7608                  GCC_URLS or TERM_URLS environment variable is present and
7609                  -fdiagnostics-urls=never otherwise])],
7610 [case x"$withval" in
7611    xnever)
7612      DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_NO
7613      ;;
7614    xauto)
7615      DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO
7616      ;;
7617    xauto-if-env)
7618      DIAGNOSTICS_URLS_DEFAULT=-1
7619      ;;
7620    xalways)
7621      DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_YES
7622      ;;
7623    *)
7624      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-urls])
7625      ;;
7626  esac],
7627 [DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO])
7628 AC_DEFINE_UNQUOTED(DIAGNOSTICS_URLS_DEFAULT, $DIAGNOSTICS_URLS_DEFAULT,
7629                    [The default for -fdiagnostics-urls option])
7631 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
7632 # of jit/jit-playback.cc.
7633 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
7634 echo "gcc_driver_version: ${gcc_driver_version}"
7635 cat > gcc-driver-name.h <<EOF
7636 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
7639 # Check whether --enable-default-pie was given.
7640 AC_ARG_ENABLE(default-pie,
7641 [AS_HELP_STRING([--enable-default-pie],
7642   [enable Position Independent Executable as default])],
7643 enable_default_pie=$enableval,
7644 enable_default_pie=no)
7645 if test x$enable_default_pie = xyes ; then
7646   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
7647       [Define if your target supports default PIE and it is enabled.])
7649 AC_SUBST([enable_default_pie])
7651 # Check if -fno-PIE works.
7652 AC_CACHE_CHECK([for -fno-PIE option],
7653   [gcc_cv_c_no_fpie],
7654   [saved_CXXFLAGS="$CXXFLAGS"
7655    CXXFLAGS="$CXXFLAGS -fno-PIE"
7656    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7657      [gcc_cv_c_no_fpie=yes],
7658      [gcc_cv_c_no_fpie=no])
7659    CXXFLAGS="$saved_CXXFLAGS"])
7660 if test "$gcc_cv_c_no_fpie" = "yes"; then
7661   NO_PIE_CFLAGS="-fno-PIE"
7663 AC_SUBST([NO_PIE_CFLAGS])
7665 # Check if -no-pie works.
7666 AC_CACHE_CHECK([for -no-pie option],
7667   [gcc_cv_no_pie],
7668   [saved_LDFLAGS="$LDFLAGS"
7669    LDFLAGS="$LDFLAGS -no-pie"
7670    AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7671      [gcc_cv_no_pie=yes],
7672      [gcc_cv_no_pie=no])
7673    LDFLAGS="$saved_LDFLAGS"])
7674 if test "$gcc_cv_no_pie" = "yes"; then
7675   NO_PIE_FLAG="-no-pie"
7677 AC_SUBST([NO_PIE_FLAG])
7679 # Enable Intel CET on Intel CET enabled host if jit is enabled.
7680 GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
7681 case x$enable_languages in
7682 *jit*)
7683   ;;
7685   CET_HOST_FLAGS=
7686   ;;
7687 esac
7688 AC_SUBST(CET_HOST_FLAGS)
7690 # Check linker supports '-z bndplt'
7691 ld_bndplt_support=no
7692 AC_MSG_CHECKING(linker -z bndplt option)
7693 if test x"$ld_is_gold" = xno; then
7694   if test $in_tree_ld = yes ; then
7695     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
7696       ld_bndplt_support=yes
7697     fi
7698   elif test x$gcc_cv_ld != x; then
7699     # Check if linker supports -a bndplt option
7700     if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
7701       ld_bndplt_support=yes
7702     fi
7703   fi
7705 if test x"$ld_bndplt_support" = xyes; then
7706   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
7707         [Define if your linker supports -z bndplt])
7709 AC_MSG_RESULT($ld_bndplt_support)
7711 # Check linker supports '--push-state'/'--pop-state'
7712 ld_pushpopstate_support=no
7713 AC_MSG_CHECKING(linker --push-state/--pop-state options)
7714 if test x"$ld_is_gold" = xno; then
7715   if test $in_tree_ld = yes ; then
7716     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
7717       ld_pushpopstate_support=yes
7718     fi
7719   elif test x$gcc_cv_ld != x; then
7720     # Check if linker supports --push-state/--pop-state options
7721     if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
7722       ld_pushpopstate_support=yes
7723     fi
7724   fi
7726 if test x"$ld_pushpopstate_support" = xyes; then
7727   AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
7728         [Define if your linker supports --push-state/--pop-state])
7730 AC_MSG_RESULT($ld_pushpopstate_support)
7732 # On s390, float_t has historically been statically defined as double for no
7733 # good reason. To comply with the C standard in the light of this definition,
7734 # gcc has evaluated float expressions in double precision when in
7735 # standards-compatible mode or when given -fexcess-precision=standard. To enable
7736 # a smooth transition towards the new model used by most architectures, where
7737 # gcc describes its behavior via the macro __FLT_EVAL_METHOD__ and glibc derives
7738 # float_t from that, this behavior can be configured with
7739 # --enable-s390-excess-float-precision. When given as enabled, that flag selects
7740 # the old model. When omitted, native builds and cross compiles that have target
7741 # libc headers will detect whether libc clamps float_t to double and in that
7742 # case maintain the old model. Otherwise, they will default to the new model.
7743 AC_ARG_ENABLE(s390-excess-float-precision,
7744   [AS_HELP_STRING([--enable-s390-excess-float-precision],
7745                   [on s390 targets, evaluate float with double precision
7746                    when in standards-conforming mode])],
7747   [],[enable_s390_excess_float_precision=auto])
7749 case $target in
7750   s390*-linux*)
7751   if test x"$enable_s390_excess_float_precision" = xauto; then
7752     # Can we autodetect the behavior of the target libc?
7753     if test "$target" = "$host" -a "$host" = "$build"; then
7754       enable_s390_excess_float_precision=autodetect
7755     elif test "x$with_headers" != xno; then
7756       # cross build. are target headers available?
7757       # carefully coerce the build-system compiler to use target headers
7758       saved_CXXFLAGS="$CXXFLAGS"
7759       fixed_XGCC_FLAGS_FOR_TARGET=`echo "$XGCC_FLAGS_FOR_TARGET" | sed 's/-B/-idirafter/g'`
7760       CROSS_TEST_CXXFLAGS="-nostdinc $fixed_XGCC_FLAGS_FOR_TARGET"
7761       CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7762       AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7763 #include <math.h>
7764 ]])], [enable_s390_excess_float_precision=autodetect], [])
7765       CXXFLAGS="$saved_CXXFLAGS"
7766     fi
7768     if test x"$enable_s390_excess_float_precision" = xautodetect; then
7769       saved_CXXFLAGS="$CXXFLAGS"
7770       if ! test "$target" = "$host" -a "$host" = "$build"; then
7771         CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7772         unset CROSS_TEST_CXXFLAGS
7773       fi
7774       AC_CACHE_CHECK([for glibc clamping float_t to double],
7775         gcc_cv_float_t_clamped_to_double, [
7776         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7777 #define __FLT_EVAL_METHOD__ 0
7778 #include <math.h>
7779 int dummy[sizeof(float_t) == sizeof(double) ? 1 : -1];
7780 ]])],
7781           [gcc_cv_float_t_clamped_to_double=yes],
7782           [gcc_cv_float_t_clamped_to_double=no])])
7783       CXXFLAGS="$saved_CXXFLAGS"
7784       enable_s390_excess_float_precision="$gcc_cv_float_t_clamped_to_double"
7785     else
7786       # no way to detect behavior of target libc, default to new model
7787       enable_s390_excess_float_precision=no
7788     fi
7789   fi
7791   GCC_TARGET_TEMPLATE(ENABLE_S390_EXCESS_FLOAT_PRECISION)
7792   if test x"$enable_s390_excess_float_precision" = xyes; then
7793     AC_DEFINE(ENABLE_S390_EXCESS_FLOAT_PRECISION, 1,
7794 [Define to enable evaluating float expressions with double precision in
7795 standards-compatible mode on s390 targets.])
7796   fi
7797   ;;
7798 esac
7800 # Configure the subdirectories
7801 # AC_CONFIG_SUBDIRS($subdirs)
7803 # Create the Makefile
7804 # and configure language subdirectories
7805 AC_CONFIG_FILES($all_outputs)
7807 AC_CONFIG_COMMANDS([default],
7809 case ${CONFIG_HEADERS} in
7810   *auto-host.h:config.in*)
7811   echo > cstamp-h ;;
7812 esac
7813 # Make sure all the subdirs exist.
7814 for d in $subdirs doc build common c-family
7816     test -d $d || mkdir $d
7817 done
7818 ], 
7819 [subdirs='$subdirs'])
7820 AC_OUTPUT