2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2024 Free Software Foundation, Inc.
6 #This file is part of GCC.
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 3, or (at your option) any later
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
27 AC_CONFIG_SRCDIR(tree.cc)
28 AC_CONFIG_MACRO_DIRS([../config] [..])
29 AC_CONFIG_HEADER(auto-host.h:config.in)
31 gcc_version=`cat $srcdir/BASE-VER`
33 # Determine the host, build, and target systems
38 # Determine the noncanonical host name, for Ada.
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}
48 # Determine the target- and build-specific subdirectories
51 # Set program_transform_name
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
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)
64 case ${LIBRARY_PATH} in
65 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
66 library_path_setting="contains current directory"
69 library_path_setting="ok"
73 AC_MSG_RESULT($library_path_setting)
74 if test "$library_path_setting" != "ok"; then
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
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)
90 case ${GCC_EXEC_PREFIX} in
91 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
92 gcc_exec_prefix_setting="contains current directory"
95 gcc_exec_prefix_setting="ok"
99 AC_MSG_RESULT($gcc_exec_prefix_setting)
100 if test "$gcc_exec_prefix_setting" != "ok"; then
102 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
103 *** building gcc. Please change the environment variable
104 *** and run configure again.])
111 # Specify the 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) ;;
119 *) local_prefix=$with_local_prefix ;;
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]) ;;
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"
146 [SYSROOT_CFLAGS_FOR_TARGET=])
147 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
149 if test "x$prefix" = xNONE; then
150 test_prefix=/usr/local
154 if test "x$exec_prefix" = xNONE; then
155 test_exec_prefix=$test_prefix
157 test_exec_prefix=$exec_prefix
161 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
162 [search for usr/lib, usr/include, et al, within DIR])],
164 case ${with_sysroot} in
166 */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
168 case ${with_sysroot} in
169 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
170 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
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)'
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"
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.
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) ;;
205 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
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++'
218 libstdcxx_incdir='include/c++/$(version)'
219 if test x$host != x$target; then
220 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
222 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
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
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 *) gcc_gxx_libcxx_include_dir=$with_gxx_libcxx_include_dir ;;
243 # --with-gxx-libcxx-include-dir controls the enabling of the -stdlib option.
244 # if --with-gxx-libcxx-include-dir is 'no' we disable the stdlib option.
245 # if --with-gxx-libcxx-include-dir is unset we enable the stdlib option
246 # based on the platform (to be available on platform versions where it is the
247 # default for the system tools). We also use a default path within the compiler
249 # Otherwise, we use the path provided and enable the stdlib option.
250 # If both --with-sysroot and --with-gxx-libcxx-include-dir are passed, we
251 # check to see if the latter starts with the former and, upon success, compute
252 # gcc_gxx_libcxx_include_dir as relative to the sysroot.
253 gcc_gxx_libcxx_include_dir_add_sysroot=0
254 gcc_enable_stdlib_opt=0
255 if test x${gcc_gxx_libcxx_include_dir} != x; then
256 if test x${gcc_gxx_libcxx_include_dir} = xno; then
257 # set defaults for the dir, but the option is disabled anyway.
258 gcc_gxx_libcxx_include_dir=
260 gcc_enable_stdlib_opt=1
264 *-darwin1[[1-9]]* | *-darwin2*)
265 # Default this on for Darwin versions which default to libcxx,
266 # and embed the path in the compiler install so that we get a
267 # self-contained toolchain.
268 gcc_enable_stdlib_opt=1
273 AC_DEFINE_UNQUOTED(ENABLE_STDLIB_OPTION, $gcc_enable_stdlib_opt,
274 [Define if the -stdlib= option should be enabled.])
276 # Sysroot behaviour as for gxx-include-dir
277 if test x${gcc_gxx_libcxx_include_dir} = x; then
278 # default path,embedded in the compiler tree.
279 libcxx_incdir='include/c++/v1'
280 if test x${enable_version_specific_runtime_libs} = xyes; then
281 gcc_gxx_libcxx_include_dir='${libsubdir}/$libcxx_incdir'
283 if test x$host != x$target; then
284 libcxx_incdir="$target_alias/$libcxx_incdir"
286 gcc_gxx_libcxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libcxx_incdir"
288 elif test "${with_sysroot+set}" = set; then
289 gcc_gxx_libcxx_without_sysroot=`expr "${gcc_gxx_libcxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
290 if test "${gcc_gxx_libcxx_without_sysroot}"; then
291 gcc_gxx_libcxx_include_dir="${gcc_gxx_libcxx_without_sysroot}"
292 gcc_gxx_libcxx_include_dir_add_sysroot=1
296 AC_ARG_WITH(cpp_install_dir,
297 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
298 [install the user visible C preprocessor in DIR
299 (relative to PREFIX) as well as PREFIX/bin])],
300 [if test x$withval = xyes; then
301 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
302 elif test x$withval != xno; then
303 cpp_install_dir=$withval
306 # We would like to our source tree to be readonly. However when releases or
307 # pre-releases are generated, the flex/bison generated files as well as the
308 # various formats of manuals need to be included along with the rest of the
309 # sources. Therefore we have --enable-generated-files-in-srcdir to do
312 AC_MSG_CHECKING([whether to place generated files in the source directory])
313 dnl generated-files-in-srcdir is disabled by default
314 AC_ARG_ENABLE(generated-files-in-srcdir,
315 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
316 [put copies of generated files in source dir
317 intended for creating source tarballs for users
318 without texinfo bison or flex])],
319 generated_files_in_srcdir=$enableval,
320 generated_files_in_srcdir=no)
322 AC_MSG_RESULT($generated_files_in_srcdir)
324 if test "$generated_files_in_srcdir" = "yes"; then
331 # -------------------
332 # Find default linker
333 # -------------------
337 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
338 gnu_ld_flag="$with_gnu_ld",
343 ld64_flag=yes # Darwin can only use a ld64-compatible linker.
344 dsymutil_flag=yes # Darwin uses dsymutil to link debug.
352 # With pre-defined ld
354 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
355 DEFAULT_LINKER="$with_ld")
356 if test x"${DEFAULT_LINKER+set}" = x"set"; then
357 if test ! -x "$DEFAULT_LINKER"; then
358 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
359 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
361 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
364 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
365 [Define to enable the use of a default linker.])
368 AC_MSG_CHECKING([whether a default linker was specified])
369 if test x"${DEFAULT_LINKER+set}" = x"set"; then
370 if test x"$gnu_ld_flag" = x"no"; then
371 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
373 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
379 # With demangler in GNU ld
380 AC_ARG_WITH(demangler-in-ld,
381 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
382 demangler_in_ld="$with_demangler_in_ld",
385 # Allow the user to specify a dsymutil executable (used on Darwin only, so far)
386 AC_ARG_WITH(dsymutil,
387 [AS_HELP_STRING([--with-dsymutil], [arrange to use the specified dsymutil (full pathname)])],
388 DEFAULT_DSYMUTIL="$with_dsymutil")
391 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
392 if test ! -x "$DEFAULT_DSYMUTIL"; then
393 AC_MSG_ERROR([cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL])
395 if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
399 AC_DEFINE_UNQUOTED(DEFAULT_DSYMUTIL,"$DEFAULT_DSYMUTIL",
400 [Define to enable the use of a default debug linker.])
403 AC_MSG_CHECKING([whether a default dsymutil was specified])
404 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
405 AC_MSG_RESULT([yes ($DEFAULT_DSYMUTIL)])
410 # ----------------------
411 # Find default assembler
412 # ----------------------
416 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
417 gas_flag="$with_gnu_as",
421 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
422 DEFAULT_ASSEMBLER="$with_as")
423 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
424 if test ! -x "$DEFAULT_ASSEMBLER"; then
425 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
426 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
429 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
430 [Define to enable the use of a default assembler.])
433 AC_MSG_CHECKING([whether a default assembler was specified])
434 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
435 if test x"$gas_flag" = x"no"; then
436 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
438 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
448 # If a non-executable a.out is present (e.g. created by GNU as above even if
449 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
450 # file, even when creating an executable, so an execution test fails.
451 # Remove possible default executable files to avoid this.
453 # FIXME: This really belongs into AC_PROG_CC and can be removed once
454 # Autoconf includes it.
455 rm -f a.out a.exe b.out
457 # Find the native compiler
460 ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
461 ACX_PROG_GDC([-I"$srcdir"/d])
463 # Do configure tests with the C++ compiler, since that's what we build with.
466 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
467 # optimizations to be activated explicitly by the toplevel.
470 *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" `
471 CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" ` ;;
477 # Determine PICFLAG for target gnatlib.
478 GCC_PICFLAG_FOR_TARGET
479 AC_SUBST(PICFLAG_FOR_TARGET)
481 # -------------------------
482 # Check C compiler features
483 # -------------------------
485 AC_USE_SYSTEM_EXTENSIONS
491 AC_CHECK_SIZEOF(ino_t)
492 AC_CHECK_SIZEOF(dev_t)
494 # Select the right stat being able to handle 64bit inodes, if needed.
495 if test "$enable_largefile" != no; then
496 case "$host, $build" in
497 *-*-aix*,*|*,*-*-aix*)
498 if test "$ac_cv_sizeof_ino_t" = "4" -a "$ac_cv_sizeof_dev_t" = 4; then
499 AC_DEFINE(HOST_STAT_FOR_64BIT_INODES, stat64x,
500 [Define which stat syscall is able to handle 64bit indodes.])
506 # sizeof(char) is 1 by definition.
507 AC_CHECK_SIZEOF(void *)
508 AC_CHECK_SIZEOF(short)
510 AC_CHECK_SIZEOF(long)
511 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
513 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
514 AC_MSG_ERROR([uint64_t or int64_t not found])
517 # check what underlying integer type int64_t uses
518 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
519 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
523 template <typename T> struct X { };
525 struct X<long> { typedef long t; };
526 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
527 if test "$ac_cv_int64_t_type" = "long"; then
528 AC_DEFINE(INT64_T_IS_LONG, 1,
529 [Define if int64_t uses long as underlying type.])
531 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
535 template <typename T> struct X { };
537 struct X<long long> { typedef long long t; };
538 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
541 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
542 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
544 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
545 if test $ac_cv_std_swap_in_utility = yes; then
546 AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
547 [Define if <utility> defines std::swap.])
550 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
551 # If the host compiler is affected by the bug, and we build with optimization
552 # enabled (which happens e.g. when cross-compiling), the pool allocator may
553 # get miscompiled. Use -fno-strict-aliasing to work around this problem.
554 # Since there is no reliable feature check for the presence of this bug,
555 # we simply use a GCC version number check. (This should never trigger for
556 # stages 2 or 3 of a native bootstrap.)
558 if test "$GCC" = yes; then
559 saved_CXXFLAGS="$CXXFLAGS"
561 # The following test compilation will succeed if and only if $CXX accepts
562 # -fno-strict-aliasing *and* is older than GCC 4.3.
563 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
564 AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
565 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
566 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
567 #error compiler not affected by placement new aliasing bug
570 [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
571 [AC_MSG_RESULT([no])])
573 CXXFLAGS="$saved_CXXFLAGS"
575 AC_SUBST(aliasing_flags)
579 # ---------------------
580 # Warnings and checking
581 # ---------------------
583 # Check $CC warning features (if it's GCC).
584 # We want to use -pedantic, but we don't want warnings about
588 # So, we only use -pedantic if we can disable those warnings.
590 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
591 AC_ARG_ENABLE(build-format-warnings,
592 AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
593 [],[enable_build_format_warnings=yes])
594 AS_IF([test $enable_build_format_warnings = no],
595 [wf_opt=-Wno-format],[wf_opt=])
596 ACX_PROG_CXX_WARNING_OPTS(
597 m4_quote(m4_do([-W -Wall -Wno-error=narrowing -Wwrite-strings ],
598 [-Wcast-qual $wf_opt])),
600 ACX_PROG_CC_WARNING_OPTS(
601 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
602 [])), [c_loose_warn])
603 ACX_PROG_CXX_WARNING_OPTS(
604 m4_quote(m4_do([-Wmissing-format-attribute ], [-Wconditionally-supported ],
605 [-Woverloaded-virtual])), [strict_warn])
606 ACX_PROG_CC_WARNING_OPTS(
607 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
608 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
609 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
610 [-Wno-overlength-strings])), [strict_warn])
611 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
613 # The above macros do nothing if the compiler is not GCC. However, the
614 # Makefile has more goo to add other flags, so these variables are used
615 # to enable warnings only for GCC.
618 if test "x$GCC" = "xyes"; then
619 warn_cflags='$(GCC_WARN_CFLAGS)'
620 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
622 AC_SUBST(warn_cflags)
623 AC_SUBST(warn_cxxflags)
625 # Disable exceptions and RTTI if building with g++
626 ACX_PROG_CC_WARNING_OPTS(
627 m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
630 # Enable expensive internal checks
632 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
636 AC_ARG_ENABLE(checking,
637 [AS_HELP_STRING([[--enable-checking[=LIST]]],
638 [enable expensive run-time checks. With LIST,
639 enable only specific categories of checks.
640 Categories are: yes,no,all,none,release.
641 Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
642 rtlflag,rtl,runtime,tree,valgrind,types])],
643 [ac_checking_flags="${enableval}"],[
644 # Determine the default checks.
645 if test x$is_release = x ; then
646 ac_checking_flags=yes,extra
648 ac_checking_flags=release
650 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
651 for check in release $ac_checking_flags
654 # these set all the flags to specific states
655 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
656 ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
657 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
658 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
659 ac_tree_checking=1 ; ac_valgrind_checking= ;
660 ac_types_checking=1 ;;
661 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
662 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
663 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
664 ac_rtlflag_checking= ; ac_runtime_checking= ;
665 ac_tree_checking= ; ac_valgrind_checking= ;
666 ac_types_checking= ;;
667 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
668 ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
669 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
670 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
671 ac_tree_checking=1 ; ac_valgrind_checking= ;
672 ac_types_checking=1 ;;
673 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
674 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
675 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
676 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
677 ac_tree_checking= ; ac_valgrind_checking= ;
678 ac_types_checking= ;;
679 # these enable particular checks
680 assert) ac_assert_checking=1 ;;
681 df) ac_df_checking=1 ;;
682 extra) ac_extra_checking=1 ;;
683 fold) ac_fold_checking=1 ;;
684 gc) ac_gc_checking=1 ;;
685 gcac) ac_gc_always_collect=1 ;;
686 gimple) ac_gimple_checking=1 ;;
687 misc) ac_checking=1 ;;
688 rtl) ac_rtl_checking=1 ;;
689 rtlflag) ac_rtlflag_checking=1 ;;
690 runtime) ac_runtime_checking=1 ;;
691 tree) ac_tree_checking=1 ;;
692 types) ac_types_checking=1 ;;
693 valgrind) ac_valgrind_checking=1 ;;
694 *) AC_MSG_ERROR(unknown check category $check) ;;
699 if test x$ac_checking != x ; then
700 AC_DEFINE(CHECKING_P, 1,
701 [Define to 0/1 if you want more run-time sanity checks. This one gets a grab
702 bag of miscellaneous but relatively cheap checks.])
704 AC_DEFINE(CHECKING_P, 0)
706 if test x$ac_extra_checking != x ; then
707 AC_DEFINE(ENABLE_EXTRA_CHECKING, 1,
708 [Define to 0/1 if you want extra run-time checking that might affect code
711 AC_DEFINE(ENABLE_EXTRA_CHECKING, 0)
713 if test x$ac_df_checking != x ; then
714 AC_DEFINE(ENABLE_DF_CHECKING, 1,
715 [Define if you want more run-time sanity checks for dataflow.])
717 if test x$ac_assert_checking != x ; then
718 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
719 [Define if you want assertions enabled. This is a cheap check.])
721 if test x$ac_gimple_checking != x ; then
722 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
723 [Define if you want operations on GIMPLE (the basic data structure of
724 the high-level optimizers) to be checked for dynamic type safety at
725 runtime. This is moderately expensive.])
727 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
728 if test x$ac_runtime_checking != x ; then
729 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
730 [Define if you want runtime assertions enabled. This is a cheap check.])
732 if test x$ac_tree_checking != x ; then
733 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
734 [Define if you want all operations on trees (the basic data
735 structure of the front ends) to be checked for dynamic type safety
736 at runtime. This is moderately expensive.
740 if test x$ac_types_checking != x ; then
741 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
742 [Define if you want all gimple types to be verified after gimplifiation.
746 AC_SUBST(TREECHECKING)
747 if test x$ac_rtl_checking != x ; then
748 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
749 [Define if you want all operations on RTL (the basic data structure
750 of the optimizer and back end) to be checked for dynamic type safety
751 at runtime. This is quite expensive.])
753 if test x$ac_rtlflag_checking != x ; then
754 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
755 [Define if you want RTL flag accesses to be checked against the RTL
756 codes that are supported for each access macro. This is relatively
759 if test x$ac_gc_checking != x ; then
760 AC_DEFINE(ENABLE_GC_CHECKING, 1,
761 [Define if you want the garbage collector to do object poisoning and
762 other memory allocation checks. This is quite expensive.])
764 if test x$ac_gc_always_collect != x ; then
765 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
766 [Define if you want the garbage collector to operate in maximally
767 paranoid mode, validating the entire heap and collecting garbage at
768 every opportunity. This is extremely expensive.])
770 if test x$ac_fold_checking != x ; then
771 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
772 [Define if you want fold checked that it never destructs its argument.
773 This is quite expensive.])
775 valgrind_path_defines=
777 if test x$ac_valgrind_checking != x ; then
778 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
779 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
780 if test "x$valgrind_path" = "x"; then
781 AC_MSG_ERROR([*** Cannot find valgrind])
783 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
784 valgrind_command="$valgrind_path -q"
785 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
786 [Define if you want to run subprograms and generated programs
787 through valgrind (a memory checker). This is extremely expensive.])
789 AC_SUBST(valgrind_path_defines)
790 AC_SUBST(valgrind_command)
792 # Enable code coverage collection
793 AC_ARG_ENABLE(coverage,
794 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
795 [enable compiler's code coverage collection.
796 Use to measure compiler performance and locate
797 unused parts of the compiler. With LEVEL, specify
798 optimization. Values are opt, noopt,
800 [case "${enableval}" in
802 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0 -fkeep-static-functions"
805 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2 -fkeep-static-functions"
808 # a.k.a. --disable-coverage
812 AC_MSG_ERROR(unknown coverage setting $enableval)
816 AC_SUBST(coverage_flags)
818 AC_ARG_ENABLE(gather-detailed-mem-stats,
819 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
820 [enable detailed memory allocation stats gathering])], [],
821 [enable_gather_detailed_mem_stats=no])
822 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
823 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
824 [Define to enable detailed memory allocation stats gathering.])
826 AC_ARG_ENABLE(valgrind-annotations,
827 [AS_HELP_STRING([--enable-valgrind-annotations],
828 [enable valgrind runtime interaction])], [],
829 [enable_valgrind_annotations=no])
830 AC_CHECK_HEADER(valgrind/memcheck.h)
831 if test x$enable_valgrind_annotations != xno \
832 || test x$ac_valgrind_checking != x; then
833 if test $ac_cv_header_valgrind_memcheck_h = no; then
834 AC_MSG_ERROR([*** Cannot find valgrind/memcheck.h])
836 AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
837 [Define to get calls to the valgrind runtime enabled.])
840 # -------------------------------
841 # Miscenalleous configure options
842 # -------------------------------
844 # Determine whether or not multilibs are enabled.
845 AC_ARG_ENABLE(multilib,
846 [AS_HELP_STRING([--enable-multilib],
847 [enable library support for multiple ABIs])],
848 [], [enable_multilib=yes])
849 AC_SUBST(enable_multilib)
851 # Determine whether or not multiarch is enabled.
852 AC_ARG_ENABLE(multiarch,
853 [AS_HELP_STRING([--enable-multiarch],
854 [enable support for multiarch paths])],
855 [case "${enableval}" in
856 yes|no|auto) enable_multiarch=$enableval;;
857 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
858 esac], [enable_multiarch=auto])
859 if test x${enable_multiarch} = xauto; then
860 if test x${with_native_system_header_dir} != x; then
861 ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
864 if test x$host != x$target && test "x$with_sysroot" = x; then
865 ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
869 if test x${enable_multiarch} = xyes; then
870 AC_DEFINE(ENABLE_MULTIARCH, 1, [If --with-multiarch option is used])
872 AC_MSG_CHECKING(for multiarch configuration)
873 AC_SUBST(enable_multiarch)
874 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
876 # needed for setting the multiarch name for soft-float/hard-float ABIs
880 # default stack clash protection guard size as power of twos in bytes.
881 # Please keep these in sync with params.def.
885 # Keep the default value when the option is not used to 0, this allows us to
886 # distinguish between the cases where the user specifially set a value via
887 # configure and when the normal default value is used.
888 AC_ARG_WITH(stack-clash-protection-guard-size,
889 [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
890 [Set the default stack clash protection guard size for specific targets as a power of two in bytes.])],
891 [DEFAULT_STK_CLASH_GUARD_SIZE="$with_stack_clash_protection_guard_size"], [DEFAULT_STK_CLASH_GUARD_SIZE=0])
892 if test $DEFAULT_STK_CLASH_GUARD_SIZE -ne 0 \
893 && (test $DEFAULT_STK_CLASH_GUARD_SIZE -lt $stk_clash_min \
894 || test $DEFAULT_STK_CLASH_GUARD_SIZE -gt $stk_clash_max); then
895 AC_MSG_ERROR(m4_normalize([
896 Invalid value $DEFAULT_STK_CLASH_GUARD_SIZE for --with-stack-clash-protection-guard-size. \
897 Must be between $stk_clash_min and $stk_clash_max.]))
900 AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
901 [Define to larger than zero set the default stack clash protector size.])
903 # Specify the number of splits of match.pd to generate.
904 AC_ARG_WITH(matchpd-partitions,
905 [AS_HELP_STRING([--with-matchpd-partitions=num],
906 [Set the number of partitions to make for gimple and generic when splitting match.pd. [default=10]])],
907 [DEFAULT_MATCHPD_PARTITIONS="$with_matchpd_partitions"], [DEFAULT_MATCHPD_PARTITIONS=10])
908 if (test $DEFAULT_MATCHPD_PARTITIONS -lt 1); then
909 AC_MSG_ERROR(m4_normalize([
910 Invalid value $DEFAULT_MATCHPD_PARTITIONS for --with-matchpd-partitions. \
911 Cannot be negative.]))
914 AC_SUBST(DEFAULT_MATCHPD_PARTITIONS)
916 # Specify the number of splits of insn-emit.cc to generate.
917 AC_ARG_WITH(insnemit-partitions,
918 [AS_HELP_STRING([--with-insnemit-partitions=num],
919 [Set the number of partitions of insn-emit.cc for genemit to create. [default=10]])],
920 [DEFAULT_INSNEMIT_PARTITIONS="$with_insnemit_partitions"], [DEFAULT_INSNEMIT_PARTITIONS=10])
921 if (test $DEFAULT_INSNEMIT_PARTITIONS -lt 1); then
922 AC_MSG_ERROR(m4_normalize([
923 Invalid value $DEFAULT_INSNEMIT_PARTITIONS for --with-insnemit-partitions. \
924 Cannot be negative.]))
927 AC_SUBST(DEFAULT_INSNEMIT_PARTITIONS)
929 # Enable __cxa_atexit for C++.
930 AC_ARG_ENABLE(__cxa_atexit,
931 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
934 # Enable C extension for decimal float if target supports it.
935 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
937 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
938 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
939 [Define to 1 to enable decimal float extension to C.])
941 # Use default_decimal_float for dependency.
942 enable_decimal_float=$default_decimal_float
944 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
945 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
946 [Define to 1 to specify that we are using the BID decimal floating
947 point format instead of DPD])
949 # Enable C extension for fixed-point arithmetic.
950 AC_ARG_ENABLE(fixed-point,
951 [AS_HELP_STRING([--enable-fixed-point],
952 [enable fixed-point arithmetic extension to C])],
957 enable_fixed_point=yes
961 enable_fixed_point=yes
964 enable_fixed_point=yes
967 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
968 enable_fixed_point=no
972 AC_SUBST(enable_fixed_point)
974 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
975 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
976 [Define to 1 to enable fixed-point arithmetic extension to C.])
979 # Pass with no value to take the default
980 # Pass with a value to specify a thread package
981 AC_ARG_ENABLE(threads,
982 [AS_HELP_STRING([[--enable-threads[=LIB]]],
983 [enable thread usage for target GCC,
984 using LIB thread package])],,
988 [AS_HELP_STRING([--enable-tls],
989 [enable or disable generation of tls code
990 overriding the assembler check for tls support])],
994 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
995 Valid choices are 'yes' and 'no'.]) ;;
999 AC_ARG_ENABLE(vtable-verify,
1000 [AS_HELP_STRING([--enable-vtable-verify],
1001 [enable vtable verification feature])],,
1002 [enable_vtable_verify=no])
1003 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
1004 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
1005 [Define 0/1 if vtable verification feature is enabled.])
1007 AC_ARG_ENABLE(analyzer,
1008 [AS_HELP_STRING([--disable-analyzer],
1009 [disable -fanalyzer static analyzer])],
1010 if test x$enable_analyzer = xno; then
1016 AC_DEFINE_UNQUOTED(ENABLE_ANALYZER, $analyzer,
1017 [Define 0/1 if static analyzer feature is enabled.])
1019 AC_ARG_ENABLE(objc-gc,
1020 [AS_HELP_STRING([--enable-objc-gc],
1021 [enable the use of Boehm's garbage collector with
1022 the GNU Objective-C runtime])],
1023 if test x$enable_objc_gc = xno; then
1031 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2 (or later)])],
1032 dwarf2="$with_dwarf2",
1035 AC_ARG_ENABLE(shared,
1036 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
1038 case $enable_shared in
1042 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
1043 for pkg in $enableval; do
1044 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
1051 ], [enable_shared=yes])
1052 AC_SUBST(enable_shared)
1055 [ --disable-gcov don't provide libgcov and related host tools],
1056 [], [case $target in
1065 AC_SUBST(enable_gcov)
1068 [AS_HELP_STRING([--with-specs=SPECS],
1069 [add SPECS to driver command-line processing])],
1070 [CONFIGURE_SPECS=$withval],
1073 AC_SUBST(CONFIGURE_SPECS)
1075 ACX_PKGVERSION([GCC])
1076 ACX_BUGURL([https://gcc.gnu.org/bugs/])
1078 # Allow overriding the default URL for documentation
1079 AC_ARG_WITH(documentation-root-url,
1080 AS_HELP_STRING([--with-documentation-root-url=URL],
1081 [Root for documentation URLs]),
1083 yes) AC_MSG_ERROR([documentation root URL not specified]) ;;
1084 no) AC_MSG_ERROR([documentation root URL not specified]) ;;
1085 */) DOCUMENTATION_ROOT_URL="$withval" ;;
1086 *) AC_MSG_ERROR([documentation root URL does not end with /]) ;;
1090 case "$gcc_version" in
1091 *.[123456].0) docroot_url_suffix="gcc-$gcc_version/";;
1092 *.[123456].1) docroot_url_suffix="gcc-`echo $gcc_version | sed 's/1$/0/'`/";;
1095 DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/$docroot_url_suffix"
1097 AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL",
1098 [Define to the root for documentation URLs.])
1100 # Allow overriding the default URL for GCC changes
1101 AC_ARG_WITH(changes-root-url,
1102 AS_HELP_STRING([--with-changes-root-url=URL],
1103 [Root for GCC changes URLs]),
1105 yes) AC_MSG_ERROR([changes root URL not specified]) ;;
1106 no) AC_MSG_ERROR([changes root URL not specified]) ;;
1107 */) CHANGES_ROOT_URL="$withval" ;;
1108 *) AC_MSG_ERROR([changes root URL does not end with /]) ;;
1110 CHANGES_ROOT_URL="https://gcc.gnu.org/"
1112 AC_DEFINE_UNQUOTED(CHANGES_ROOT_URL,"$CHANGES_ROOT_URL",
1113 [Define to the root for URLs about GCC changes.])
1115 # Sanity check enable_languages in case someone does not run the toplevel
1116 # configure # script.
1117 AC_ARG_ENABLE(languages,
1118 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
1119 [case ,${enable_languages}, in
1121 # go safe -- we cannot be much sure without the toplevel
1123 # analysis of which target libs are present and usable
1127 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
1132 enable_languages=c,${enable_languages}
1135 [enable_languages=c])
1137 # If top-level libada has been disabled, then wire in install-gnatlib
1138 # invocation with `make install', so that one can build and install
1139 # the library manually with `make -C gcc all gnatlib gnattools install'.
1140 if test x"$enable_libada" = xno; then
1141 gnat_install_lib=gnat-install-lib
1145 AC_SUBST(gnat_install_lib)
1147 if test x"$enable_as_accelerator_for" != x; then
1148 AC_DEFINE(ACCEL_COMPILER, 1,
1149 [Define if this compiler should be built as the offload target compiler.])
1150 enable_as_accelerator=yes
1151 sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
1152 program_transform_name=`echo $program_transform_name | sed $sedscript`
1153 accel_dir_suffix=/accel/${target_noncanonical}
1154 real_target_noncanonical=${enable_as_accelerator_for}
1156 AC_SUBST(enable_as_accelerator)
1157 AC_SUBST(real_target_noncanonical)
1158 AC_SUBST(accel_dir_suffix)
1160 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
1161 tgt=`echo $tgt | sed 's/=.*//'`
1166 omp_device_property=omp-device-properties-gcn
1167 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
1170 omp_device_property=omp-device-properties-nvptx
1171 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1174 AC_MSG_ERROR([unknown offload target specified])
1177 omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1178 omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1180 if test x"$offload_targets" = x; then
1181 offload_targets=$tgt
1183 offload_targets="$offload_targets,$tgt"
1186 AC_SUBST(omp_device_properties)
1187 AC_SUBST(omp_device_property_deps)
1189 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1190 [Define to offload targets, separated by commas.])
1191 if test x"$enable_offloading" != x; then
1192 AC_DEFINE(ENABLE_OFFLOADING, 1,
1193 [Define this to enable support for offloading.])
1195 AC_DEFINE(ENABLE_OFFLOADING, 0,
1196 [Define this to enable support for offloading.])
1199 if test "x$enable_offload_defaulted" = xyes; then
1200 AC_DEFINE(OFFLOAD_DEFAULTED, 1,
1201 [Define to 1 to if -foffload is defaulted])
1204 AC_ARG_WITH(multilib-list,
1205 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, AVR, OR1K, RISC-V, SH and x86-64 only)])],
1207 with_multilib_list=default)
1209 AC_ARG_WITH(multilib-generator,
1210 [AS_HELP_STRING([--with-multilib-generator], [Multi-libs configuration string (RISC-V only)])],
1212 with_multilib_generator=default)
1214 # -------------------------
1215 # Checks for other programs
1216 # -------------------------
1220 # Find some useful tools
1222 # We need awk to create options.cc and options.h.
1223 # Bail out if it's missing.
1225 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1232 AC_SUBST(ranlib_flags)
1236 # See if cmp has --ignore-initial.
1237 gcc_AC_PROG_CMP_IGNORE_INITIAL
1239 # See if we have the mktemp command.
1240 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1242 # See if makeinfo has been installed and is modern enough
1243 # that we can use it.
1244 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1245 [GNU texinfo.* \([0-9][0-9.]*\)],
1246 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1247 if test $gcc_cv_prog_makeinfo_modern = no; then
1249 *** Makeinfo is missing or too old.
1250 *** Info documentation will not be built.])
1255 AC_SUBST(BUILD_INFO)
1257 # Determine whether makeinfo supports the CONTENTS_OUTPUT_LOCATION variable.
1258 # If it does, we want to pass it to makeinfo in order to restore the old
1259 # behavior of @{summary,}contents placement.
1260 MAKEINFO_TOC_INLINE_FLAG=
1261 AS_IF([test x"$MAKEINFO" != x], [
1262 AC_CACHE_CHECK([for CONTENTS_OUTPUT_LOCATION support in $MAKEINFO],
1263 [gcc_cv_texi_add_toc_inline_flags], [
1264 # Detect the unknown variable CONTENTS_OUTPUT_LOCATION warning
1265 if "$MAKEINFO" -c CONTENTS_OUTPUT_LOCATION=inline </dev/null 2>&1 \
1266 | grep CONTENTS_OUTPUT_LOCATION >/dev/null; then
1267 gcc_cv_texi_add_toc_inline_flags=no
1269 gcc_cv_texi_add_toc_inline_flags=yes
1272 if test x"$gcc_cv_texi_add_toc_inline_flags" = xyes; then
1273 MAKEINFO_TOC_INLINE_FLAG='-c CONTENTS_OUTPUT_LOCATION=inline'
1276 AC_SUBST([MAKEINFO_TOC_INLINE_FLAG])
1278 # Is pod2man recent enough to regenerate manpages?
1279 AC_MSG_CHECKING([for recent Pod::Man])
1280 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1282 GENERATED_MANPAGES=generated-manpages
1287 AC_SUBST(GENERATED_MANPAGES)
1289 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1292 dnl Don't use AC_PROG_LEX; we insist on flex.
1293 dnl LEXLIB is not useful in gcc.
1294 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1297 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1300 ACX_CHECK_PROG_VER(PYTHON, python3, --version,
1301 [Python.* \([0-9][0-9.]*\)],
1302 [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*])
1303 if test $gcc_cv_prog_python3_modern = no; then
1305 *** Python3 is missing.
1306 *** Documentation for modula-2 will not include the target SYSTEM module.])
1311 AC_SUBST(HAVE_PYTHON)
1313 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
1314 # check for build == host before using them.
1317 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1318 && test -d ../binutils ; then
1319 NM='../binutils/nm-new'
1321 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1325 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1326 && test -d ../binutils ; then
1329 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1332 # The jit documentation looks better if built with sphinx, but can be
1333 # built with texinfo if sphinx is not available.
1334 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1335 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1337 # --------------------
1338 # Checks for C headers
1339 # --------------------
1341 # Need to reject headers which give warnings, so that the -Werror bootstrap
1342 # works later. *sigh* This needs to come before all header checks.
1349 AC_HEADER_TIOCGWINSZ
1350 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1351 fcntl.h ftw.h unistd.h sys/auxv.h sys/file.h sys/time.h sys/mman.h \
1352 sys/resource.h sys/param.h sys/times.h sys/stat.h sys/locking.h \
1353 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1355 # Check for thread headers.
1356 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1357 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1359 # These tests can't be done till we know if we have limits.h.
1363 # ----------------------
1364 # Checks for C++ headers
1365 # ----------------------
1367 dnl Autoconf will give an error in the configure script if there is no
1368 dnl C++ preprocessor. Hack to prevent that.
1369 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1371 m4_popdef([AC_MSG_ERROR])[]dnl
1373 AC_CHECK_HEADERS(unordered_map)
1374 AC_CHECK_HEADERS(tr1/unordered_map)
1375 AC_CHECK_HEADERS(ext/hash_map)
1378 # Dependency checking.
1382 AC_CONFIG_COMMANDS([gccdepdir],[
1383 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1384 for lang in $subdirs c-family common analyzer text-art rtl-ssa
1386 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1387 done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1389 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1396 # These libraries may be used by collect2.
1397 # We may need a special search path to get them linked.
1398 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1400 for libs in '' -lld -lmld \
1401 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1402 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1405 AC_TRY_LINK_FUNC(ldopen,
1406 [gcc_cv_collect2_libs="$libs"; break])
1409 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1410 case $gcc_cv_collect2_libs in
1412 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1414 AC_SUBST(COLLECT2_LIBS)
1416 # When building Ada code on Alpha, we need exc_resume which is usually in
1417 # -lexc. So test for it.
1420 AC_SEARCH_LIBS(exc_resume, exc)
1423 AC_SUBST(GNAT_LIBEXC)
1425 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1428 AC_SEARCH_LIBS(kstat_open, kstat)
1429 EXTRA_GCC_LIBS="$LIBS"
1431 AC_SUBST(EXTRA_GCC_LIBS)
1433 # Some systems put ldexp and frexp in libm instead of libc; assume
1434 # they're both in the same place. jcf-dump needs them.
1437 AC_SEARCH_LIBS(ldexp, m)
1442 # Some systems need dlopen
1445 AC_SEARCH_LIBS(dlopen, dl)
1450 # Use <inttypes.h> only if it exists,
1451 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1453 AC_MSG_CHECKING(for inttypes.h)
1454 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1455 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1456 [[#define __STDC_FORMAT_MACROS
1457 #include <sys/types.h>
1458 #include <inttypes.h>]],
1463 [gcc_cv_header_inttypes_h=yes],
1464 [gcc_cv_header_inttypes_h=no])])
1465 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1466 if test $gcc_cv_header_inttypes_h = yes; then
1467 AC_DEFINE(HAVE_INTTYPES_H, 1,
1468 [Define if you have a working <inttypes.h> header file.])
1471 # Look for the ZSTD package.
1474 AC_SUBST(ZSTD_INCLUDE)
1478 AC_SUBST(ZSTD_CPPFLAGS)
1479 AC_SUBST(ZSTD_LDFLAGS)
1481 [AS_HELP_STRING([--with-zstd=PATH],
1482 [specify prefix directory for installed zstd library.
1483 Equivalent to --with-zstd-include=PATH/include
1484 plus --with-zstd-lib=PATH/lib])])
1485 AC_ARG_WITH(zstd-include,
1486 [AS_HELP_STRING([--with-zstd-include=PATH],
1487 [specify directory for installed zstd include files])])
1488 AC_ARG_WITH(zstd-lib,
1489 [AS_HELP_STRING([--with-zstd-lib=PATH],
1490 [specify directory for the installed zstd library])])
1491 case "x$with_zstd" in
1497 *) ZSTD_INCLUDE=$with_zstd/include
1498 ZSTD_LIB=$with_zstd/lib
1502 if test "x$with_zstd" != xno; then
1503 if test "x$with_zstd_include" != x; then
1504 ZSTD_INCLUDE=$with_zstd_include
1506 if test "x$with_zstd_lib" != x; then
1507 ZSTD_LIB=$with_zstd_lib
1509 if test "x$ZSTD_INCLUDE" != x \
1510 && test "x$ZSTD_INCLUDE" != xno; then
1511 ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1513 if test "x$ZSTD_LIB" != x \
1514 && test "x$ZSTD_LIB" != xno; then
1515 ZSTD_LDFLAGS=-L$ZSTD_LIB
1518 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1519 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1521 # LTO can use zstd compression algorithm
1524 AC_SEARCH_LIBS(ZSTD_compress, zstd,, gcc_cv_header_zstd_h=no)
1529 AC_MSG_CHECKING(for zstd.h)
1530 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1531 # We require version 1.3.0 or later. This is the first version that has
1532 # ZSTD_getFrameContentSize.
1533 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1535 #if ZSTD_VERSION_NUMBER < 10300
1536 #error "need zstd 1.3.0 or better"
1538 [gcc_cv_header_zstd_h=yes],
1539 [gcc_cv_header_zstd_h=no])])
1540 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1541 if test $gcc_cv_header_zstd_h = yes; then
1542 AC_DEFINE(HAVE_ZSTD_H, 1,
1543 [Define if you have a working <zstd.h> header file.])
1544 elif test "x$with_zstd" != x; then
1545 as_fn_error $? "Unable to find zstd.h. See config.log for details." "$LINENO" 5
1549 dnl Disabled until we have a complete test for buggy enum bitfields.
1550 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1552 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1553 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1554 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1555 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1556 putchar_unlocked putc_unlocked)
1557 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1558 popen sysconf strsignal getrusage nl_langinfo \
1559 gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
1560 gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat getauxval)
1562 if test x$ac_cv_func_mbstowcs = xyes; then
1563 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1564 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1570 [gcc_cv_func_mbstowcs_works=yes],
1571 [gcc_cv_func_mbstowcs_works=no],
1572 [gcc_cv_func_mbstowcs_works=yes])])
1573 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1574 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1575 [Define this macro if mbstowcs does not crash when its
1576 first argument is NULL.])
1580 AC_CHECK_TYPE(ssize_t, int)
1581 AC_CHECK_TYPE(caddr_t, char *)
1582 AC_CHECK_TYPE(sighander_t,
1583 AC_DEFINE(HAVE_SIGHANDLER_T, 1,
1584 [Define if <sys/signal.h> defines sighandler_t]),
1587 GCC_AC_FUNC_MMAP_BLACKLIST
1591 # Under VMS, vfork works very differently than on Unix. The standard test
1592 # won't work, and it isn't easily adaptable. It makes more sense to
1594 ac_cv_func_vfork_works=yes
1601 # Until we have in-tree GNU iconv:
1603 if test -f "$LTLIBICONV"; then
1604 LIBICONV_DEP=$LTLIBICONV
1606 AC_SUBST(LIBICONV_DEP)
1612 # We will need to find libiberty.h and ansidecl.h
1613 saved_CFLAGS="$CFLAGS"
1614 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1615 saved_CXXFLAGS="$CXXFLAGS"
1616 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1618 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1619 # normal autoconf function for these. But force definition of
1620 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1621 # basename handling in libiberty.h.
1622 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1623 #undef HAVE_DECL_BASENAME
1624 #define HAVE_DECL_BASENAME 1
1625 #include "ansidecl.h"
1626 #include "system.h"])
1628 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1629 madvise stpcpy strnlen strsignal strverscmp \
1630 strtol strtoul strtoll strtoull setenv unsetenv \
1631 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1632 free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1633 #include "ansidecl.h"
1634 #include "system.h"])
1636 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1637 #include "ansidecl.h"
1639 #ifdef HAVE_SYS_RESOURCE_H
1640 #include <sys/resource.h>
1644 gcc_AC_CHECK_DECLS(mallinfo mallinfo2, , ,[
1645 #include "ansidecl.h"
1647 #ifdef HAVE_MALLOC_H
1652 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1653 #include "ansidecl.h"
1655 #ifdef HAVE_SYS_RESOURCE_H
1656 #include <sys/resource.h>
1658 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1659 [Define to `long' if <sys/resource.h> doesn't define.])])
1661 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1662 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1663 # in collect2.cc, <fcntl.h> isn't visible, but the configure test below needs
1664 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1665 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1666 #include "ansidecl.h"
1675 gcc_AC_CHECK_DECLS(times, , ,[
1676 #include "ansidecl.h"
1678 #ifdef HAVE_SYS_TIMES_H
1679 #include <sys/times.h>
1683 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1684 #include "ansidecl.h"
1689 # More time-related stuff.
1690 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1691 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1692 #include "ansidecl.h"
1694 #ifdef HAVE_SYS_TIMES_H
1695 #include <sys/times.h>
1697 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1698 if test $ac_cv_struct_tms = yes; then
1699 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1700 [Define if <sys/times.h> defines struct tms.])
1703 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1704 # revisit after autoconf 2.50.
1705 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1706 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1707 #include "ansidecl.h"
1709 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1710 if test $gcc_cv_type_clock_t = yes; then
1711 AC_DEFINE(HAVE_CLOCK_T, 1,
1712 [Define if <time.h> defines clock_t.])
1715 # Check if F_SETLKW is supported by fcntl.
1716 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1717 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1718 #include <fcntl.h>]], [[
1724 return fcntl (1, F_SETLKW, &fl);]])],
1725 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1726 if test $ac_cv_f_setlkw = yes; then
1727 AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1728 [Define if F_SETLKW supported by fcntl.])
1731 # Check if O_CLOEXEC is defined by fcntl
1732 AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
1733 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1734 #include <fcntl.h>]], [[
1735 return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
1736 [ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
1737 if test $ac_cv_o_cloexec = yes; then
1738 AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
1739 [Define if O_CLOEXEC supported by fcntl.])
1742 # Check if O_NONBLOCK is defined by fcntl
1743 AC_CHECK_HEADERS([fcntl.h])
1744 AC_CHECK_DECL(O_NONBLOCK,,,[#include <fcntl.h>])
1745 if test $ac_cv_have_decl_O_NONBLOCK = yes; then
1746 AC_DEFINE(HOST_HAS_O_NONBLOCK, 1,
1747 [Define if O_NONBLOCK supported by fcntl.])
1751 # C++ Modules would like some networking features to provide the mapping
1752 # server. You can still use modules without them though.
1753 # The following network-related checks could probably do with some
1754 # Windows and other non-linux defenses and checking.
1756 # Local socket connectivity wants AF_UNIX networking
1757 # Check for AF_UNIX networking
1758 AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
1759 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1760 #include <sys/types.h>
1761 #include <sys/socket.h>
1763 #include <netinet/in.h>]],[[
1765 un.sun_family = AF_UNSPEC;
1766 int fd = socket (AF_UNIX, SOCK_STREAM, 0);
1767 connect (fd, (sockaddr *)&un, sizeof (un));]])],
1768 [ac_cv_af_unix=yes],
1769 [ac_cv_af_unix=no])])
1770 if test $ac_cv_af_unix = yes; then
1771 AC_DEFINE(HAVE_AF_UNIX, 1,
1772 [Define if AF_UNIX supported.])
1775 # Remote socket connectivity wants AF_INET6 networking
1776 # Check for AF_INET6 networking
1777 AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
1778 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1779 #include <sys/types.h>
1780 #include <sys/socket.h>
1781 #include <netinet/in.h>
1782 #include <netdb.h>]],[[
1784 in6.sin6_family = AF_UNSPEC;
1785 struct addrinfo *addrs = 0;
1786 struct addrinfo hints;
1788 hints.ai_family = AF_INET6;
1789 hints.ai_socktype = SOCK_STREAM;
1790 hints.ai_protocol = 0;
1791 hints.ai_canonname = 0;
1794 int e = getaddrinfo ("localhost", 0, &hints, &addrs);
1795 const char *str = gai_strerror (e);
1796 freeaddrinfo (addrs);
1797 int fd = socket (AF_INET6, SOCK_STREAM, 0);
1798 connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
1799 [ac_cv_af_inet6=yes],
1800 [ac_cv_af_inet6=no])])
1801 if test $ac_cv_af_inet6 = yes; then
1802 AC_DEFINE(HAVE_AF_INET6, 1,
1803 [Define if AF_INET6 supported.])
1806 # Check if _LK_LOCK is supported by _locking
1807 AC_CACHE_CHECK(for _LK_LOCK, ac_cv_lk_lock, [
1808 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1810 #include <sys/locking.h>]], [[
1812 return _locking (fd, _LK_LOCK, 0);]])],
1813 [ac_cv_lk_lock=yes],[ac_cv_lk_lock=no])])
1814 if test $ac_cv_lk_lock = yes; then
1815 AC_DEFINE(HOST_HAS_LK_LOCK, 1,
1816 [Define if _LK_LOC supported by _locking.])
1819 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1820 CFLAGS="$saved_CFLAGS"
1821 CXXFLAGS="$saved_CXXFLAGS"
1823 # mkdir takes a single argument on some systems.
1824 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1832 # With Setjmp/Longjmp based exception handling.
1833 AC_ARG_ENABLE(sjlj-exceptions,
1834 [AS_HELP_STRING([--enable-sjlj-exceptions],
1835 [arrange to use setjmp/longjmp exception handling])],
1836 [force_sjlj_exceptions=yes],
1839 force_sjlj_exceptions=yes
1843 force_sjlj_exceptions=no
1846 if test $force_sjlj_exceptions = yes; then
1847 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1848 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1849 [Define 0/1 to force the choice for exception handling model.])
1852 # Windows32 UTF-8 manifest support for running the driver and compiler
1853 # executables with the UTF-8 active code page on mingw hosts.
1854 # Non-mingw hosts ignore this option.
1855 # The shell variables this sets are picked up from the mingw branches
1856 # of config.host so they have to be set before it gets sourced.
1857 AC_ARG_ENABLE(win32-utf8-manifest,
1858 [AS_HELP_STRING([--disable-win32-utf8-manifest],
1859 [disable embedding a utf8 manifest on mingw hosts])
1860 AS_HELP_STRING([--enable-win32-utf8-manifest],
1861 [enable embedding a utf8 manifest on mingw hosts (default)])],,)
1863 if test "x$enable_win32_utf8_manifest" != xno; then
1864 host_xmake_mingw=i386/x-mingw32-utf8
1865 host_extra_gcc_objs_mingw=utf8rc-mingw32.o
1866 host_extra_objs_mingw=utf8-mingw32.o
1869 # --------------------------------------------------------
1870 # Build, host, and target specific configuration fragments
1871 # --------------------------------------------------------
1873 # Collect build-machine-specific information.
1874 . ${srcdir}/config.build || exit 1
1876 # Collect host-machine-specific information.
1877 . ${srcdir}/config.host || exit 1
1881 # Collect target-machine-specific information.
1882 . ${srcdir}/config.gcc || exit 1
1884 extra_objs="${host_extra_objs} ${extra_objs}"
1885 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1887 # Default the target-machine variables that were not explicitly set.
1888 if test x"$tm_file" = x
1889 then tm_file=$cpu_type/$cpu_type.h; fi
1891 if test x"$extra_headers" = x
1892 then extra_headers=; fi
1894 if test x$md_file = x
1895 then md_file=$cpu_type/$cpu_type.md; fi
1897 if test x$out_file = x
1898 then out_file=$cpu_type/$cpu_type.cc; fi
1900 if test x"$tmake_file" = x
1901 then tmake_file=$cpu_type/t-$cpu_type
1904 # Support --enable-initfini-array.
1905 if test x$enable_initfini_array != xno; then
1906 tm_file="${tm_file} initfini-array.h"
1909 if test x"$dwarf2" = xyes
1910 then tm_file="$tm_file tm-dwarf2.h"
1913 # Say what files are being used for the output code and MD file.
1914 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1915 echo "Using \`$srcdir/config/$md_file' as machine description file."
1917 # If any of the xm_file variables contain nonexistent files, warn
1918 # about them and drop them.
1921 for x in $build_xm_file; do
1922 if test -f $srcdir/config/$x
1924 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1930 for x in $host_xm_file; do
1931 if test -f $srcdir/config/$x
1933 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1939 for x in $xm_file; do
1940 if test -f $srcdir/config/$x
1942 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1948 for f in $tm_file; do
1951 if test $count = ax; then
1952 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1954 echo "Using the following target machine macro files:"
1955 for f in $tm_file; do
1956 echo " $srcdir/config/$f"
1960 if test x$use_long_long_for_widest_fast_int = xyes; then
1961 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1962 [Define to 1 if the 'long long' type is wider than 'long' but still
1963 efficiently supported by the host hardware.])
1966 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1967 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1969 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1970 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1973 for f in $host_xm_file; do
1976 if test $count = a; then
1978 elif test $count = ax; then
1979 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1981 echo "Using the following host machine macro files:"
1982 for f in $host_xm_file; do
1983 echo " $srcdir/config/$f"
1986 echo "Using ${out_host_hook_obj} for host machine hooks."
1988 if test "$host_xm_file" != "$build_xm_file"; then
1990 for f in $build_xm_file; do
1993 if test $count = a; then
1995 elif test $count = ax; then
1996 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1998 echo "Using the following build machine macro files:"
1999 for f in $build_xm_file; do
2000 echo " $srcdir/config/$f"
2005 if test -n "$configured_native_system_header_dir"; then
2006 native_system_header_dir=$configured_native_system_header_dir
2008 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
2009 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
2013 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
2014 gcc_cv_mcontext_underscores,
2015 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
2016 #include <sys/cdefs.h>
2017 #include <sys/signal.h>
2018 #include <ucontext.h>
2019 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
2021 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
2022 if test $gcc_cv_mcontext_underscores = yes; then
2023 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
2024 [mcontext_t fields start with __])
2033 # Check if a valid thread package
2034 case ${enable_threads} in
2037 target_thread_file='single'
2041 target_thread_file='single'
2043 aix | dce | lynx | mipssde | posix | rtems | \
2044 single | tpf | vxworks | win32 | mcf)
2045 target_thread_file=${enable_threads}
2048 echo "${enable_threads} is an unknown thread package" 1>&2
2053 if test x${thread_file} = x; then
2054 # No thread file set by target-specific clauses in config.gcc,
2055 # so use file chosen by default logic above
2056 thread_file=${target_thread_file}
2064 if test x$enable___cxa_atexit = xyes || \
2065 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
2066 if test x$host = x$target; then
2068 # mingw32 doesn't have __cxa_atexit but uses atexit registration
2069 # keyed to flag_use_cxa_atexit
2077 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
2078 [echo "__cxa_atexit can't be enabled on this target"])
2082 # We can't check for __cxa_atexit when building a cross, so assume
2086 if test x$use_cxa_atexit = xyes; then
2087 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
2088 [Define if you want to use __cxa_atexit, rather than atexit, to
2089 register C++ destructors for local statics and global objects.
2090 This is essential for fully standards-compliant handling of
2091 destructors, but requires __cxa_atexit in libc.])
2095 # Look for a file containing extra machine modes.
2096 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
2097 extra_modes_file='$(srcdir)'/config/${extra_modes}
2098 AC_SUBST(extra_modes_file)
2099 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
2100 [Define to the name of a file containing a list of extra machine modes
2101 for this architecture.])
2104 # Convert extra_options into a form suitable for Makefile use.
2107 for f in $extra_options; do
2108 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
2109 all_opt_files="$all_opt_files $srcdir/config/$f"
2111 AC_SUBST(extra_opt_files)
2113 # auto-host.h is the file containing items generated by autoconf and is
2114 # the first file included by config.h.
2115 # If host=build, it is correct to have bconfig include auto-host.h
2116 # as well. If host!=build, we are in error and need to do more
2117 # work to find out the build config parameters.
2118 if test x$host = x$build
2120 build_auto=auto-host.h
2121 HAVE_AUTO_BUILD='# '
2123 # We create a subdir, then run autoconf in the subdir.
2124 # To prevent recursion we set host and build for the new
2125 # invocation of configure to the build for this invocation
2132 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
2133 *) realsrcdir=../${srcdir};;
2135 # Clearing GMPINC is necessary to prevent host headers being
2136 # used by the build compiler. Defining GENERATOR_FILE stops
2137 # system.h from including gmp.h.
2138 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
2139 CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
2140 LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
2141 GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
2142 ${realsrcdir}/configure \
2143 --enable-languages=${enable_languages-all} \
2144 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
2145 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
2146 --target=$target_alias --host=$build_alias \
2147 --build=$build_alias || exit # retaining $tempdir
2149 # We just finished tests for the build machine, so rename
2150 # the file auto-build.h in the gcc directory.
2151 mv auto-host.h ../auto-build.h
2154 build_auto=auto-build.h
2157 AC_SUBST(build_subdir)
2158 AC_SUBST(HAVE_AUTO_BUILD)
2160 tm_file="${tm_file} defaults.h"
2161 tm_p_file="${tm_p_file} tm-preds.h"
2162 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
2163 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
2164 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
2165 # put this back in temporarily.
2166 xm_file="auto-host.h ansidecl.h ${xm_file}"
2173 # Compile in configure arguments.
2174 if test -f configargs.h ; then
2175 # Being re-configured.
2176 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
2177 gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
2178 if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
2179 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
2182 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
2185 # Double all backslashes and backslash all quotes to turn
2186 # gcc_config_arguments into a C string.
2187 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
2188 $gcc_config_arguments
2190 gcc_config_arguments_str=`cat conftest.out`
2193 cat > configargs.h <<EOF
2194 /* Generated automatically. */
2195 static const char configuration_arguments[] = "$gcc_config_arguments_str";
2196 static const char thread_model[] = "$thread_file";
2198 static const struct {
2199 const char *name, *value;
2200 } configure_default_options[] = $configure_default_options;
2205 gcc_BASEVER=`cat $srcdir/BASE-VER`
2206 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
2207 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
2208 if test -f $srcdir/REVISION ; then
2209 gcc_REVISION=`cat $srcdir/REVISION`
2213 cat > plugin-version.h <<EOF
2214 #include "configargs.h"
2216 #define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
2217 #define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
2218 #define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
2219 #define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
2221 static char basever[] = "$gcc_BASEVER";
2222 static char datestamp[] = "$gcc_DATESTAMP";
2223 static char devphase[] = "$gcc_DEVPHASE";
2224 static char revision[] = "$gcc_REVISION";
2226 /* FIXME plugins: We should make the version information more precise.
2227 One way to do is to add a checksum. */
2229 static struct plugin_gcc_version gcc_version = {basever, datestamp,
2231 configuration_arguments};
2235 # Determine what GCC version number to use in filesystem paths.
2238 # Internationalization
2239 ZW_GNU_GETTEXT_SISTER_DIR
2241 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
2242 # -liconv on the link line twice.
2243 case "$LIBINTL" in *$LIBICONV*)
2247 AC_ARG_ENABLE(secureplt,
2248 [AS_HELP_STRING([--enable-secureplt],
2249 [enable -msecure-plt by default for PowerPC])],
2252 AC_ARG_ENABLE(mingw-wildcard,
2253 [AS_HELP_STRING([--enable-mingw-wildcard],
2254 [Set whether to expand wildcard on command-line.
2255 Default to platform configuration])],
2256 [],[enable_mingw_wildcard=platform])
2257 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
2258 [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
2259 $(test x"$enable_mingw_wildcard" = xno; echo $?),
2260 [Value to set mingw's _dowildcard to.])])
2262 AC_ARG_ENABLE(large-address-aware,
2263 [AS_HELP_STRING([--enable-large-address-aware],
2264 [Link mingw executables with --large-address-aware])])
2265 AS_IF([test x"$enable_large_address_aware" = xyes],
2266 [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
2267 [Define if we should link mingw executables with --large-address-aware])])
2269 AC_ARG_ENABLE(leading-mingw64-underscores,
2270 AS_HELP_STRING([--enable-leading-mingw64-underscores],
2271 [enable leading underscores on 64 bit mingw targets]),
2273 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
2274 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
2275 [Define if we should use leading underscore on 64 bit mingw targets])])
2278 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2281 AC_ARG_ENABLE(frame-pointer,
2282 [AS_HELP_STRING([--enable-frame-pointer],
2283 [enable -fno-omit-frame-pointer by default for x86])], [],
2286 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2287 # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2288 enable_frame_pointer=no
2291 enable_frame_pointer=yes
2297 i[[34567]]86-*-* | x86_64-*-*)
2298 if test "x$enable_cld" = xyes; then
2299 tm_defines="${tm_defines} USE_IX86_CLD=1"
2301 if test "x$enable_frame_pointer" = xyes; then
2302 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2307 # Windows32 Registry support for specifying GCC installation paths.
2308 AC_ARG_ENABLE(win32-registry,
2309 [AS_HELP_STRING([--disable-win32-registry],
2310 [disable lookup of installation paths in the
2311 Registry on Windows hosts])
2312 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2313 AS_HELP_STRING([--enable-win32-registry=KEY],
2314 [use KEY instead of GCC version as the last portion
2315 of the registry key])],,)
2318 win32 | pe | cygwin* | mingw32*)
2319 if test "x$enable_win32_registry" != xno; then
2320 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2323 if test "x$enable_win32_registry" != xno; then
2324 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2325 [Define to 1 if installation paths should be looked up in the Windows
2326 Registry. Ignored on non-Windows hosts.])
2328 if test "x$enable_win32_registry" != xyes \
2329 && test "x$enable_win32_registry" != x; then
2330 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2331 [Define to be the last component of the Windows registry key under which
2332 to look for installation paths. The full key used will be
2333 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2334 The default is the GCC version number.])
2340 # Get an absolute path to the GCC top-level source directory
2341 holddir=`${PWDCMD-pwd}`
2343 topdir=`${PWDCMD-pwd}`
2346 # Conditionalize the makefile for this host machine.
2348 for f in ${host_xmake_file}
2350 if test -f ${srcdir}/config/$f
2352 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2356 # Conditionalize the makefile for this target machine.
2358 for f in ${tmake_file}
2360 if test -f ${srcdir}/config/$f
2362 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2365 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2367 out_object_file=`basename $out_file .cc`.o
2368 common_out_object_file=`basename $common_out_file .cc`.o
2370 tm_file_list="options.h"
2371 tm_include_list="options.h insn-constants.h"
2372 for f in $tm_file; do
2375 f=`echo $f | sed 's/^..//'`
2376 tm_file_list="${tm_file_list} $f"
2377 tm_include_list="${tm_include_list} $f"
2380 tm_file_list="${tm_file_list} \$(srcdir)/$f"
2381 tm_include_list="${tm_include_list} $f"
2384 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2385 tm_include_list="${tm_include_list} config/$f"
2392 for f in $tm_p_file; do
2395 tm_p_file_list="${tm_p_file_list} $f"
2396 tm_p_include_list="${tm_p_include_list} $f"
2399 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2400 tm_p_include_list="${tm_p_include_list} config/$f"
2406 for f in $tm_d_file; do
2409 tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2410 tm_d_include_list="${tm_d_include_list} config/$f"
2416 tm_rust_include_list=
2417 for f in $tm_rust_file; do
2420 tm_rust_file_list="${tm_rust_file_list} \$(srcdir)/config/$f"
2421 tm_rust_include_list="${tm_rust_include_list} config/$f"
2428 for f in $xm_file; do
2431 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2432 xm_include_list="${xm_include_list} $f"
2435 xm_file_list="${xm_file_list} $f"
2436 xm_include_list="${xm_include_list} $f"
2439 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2440 xm_include_list="${xm_include_list} config/$f"
2446 host_xm_include_list=
2447 for f in $host_xm_file; do
2450 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2451 host_xm_include_list="${host_xm_include_list} $f"
2454 host_xm_file_list="${host_xm_file_list} $f"
2455 host_xm_include_list="${host_xm_include_list} $f"
2458 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2459 host_xm_include_list="${host_xm_include_list} config/$f"
2465 for f in $build_xm_file; do
2468 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2469 build_xm_include_list="${build_xm_include_list} $f"
2471 auto-build.h | auto-host.h )
2472 build_xm_file_list="${build_xm_file_list} $f"
2473 build_xm_include_list="${build_xm_include_list} $f"
2476 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2477 build_xm_include_list="${build_xm_include_list} config/$f"
2482 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2483 # cross-compiler which does not use the native headers and libraries.
2484 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2485 CROSS= AC_SUBST(CROSS)
2486 ALL=all.internal AC_SUBST(ALL)
2487 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2488 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2490 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2491 test x$build != x$host || test "x$with_build_sysroot" != x; then
2492 if test "x$with_build_sysroot" != x; then
2493 BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2495 BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2498 if test x$host != x$target
2500 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2502 SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2503 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2504 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2507 if test "x$with_build_sysroot" != "x"; then
2508 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2509 elif test "x$with_sysroot" = x; then
2510 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2511 elif test "x$with_sysroot" = xyes; then
2512 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2514 target_header_dir="${with_sysroot}${native_system_header_dir}"
2517 target_header_dir=${native_system_header_dir}
2520 # If this is a cross-compiler that does not
2521 # have its own set of headers then define
2524 # If this is using newlib, without having the headers available now,
2525 # then define inhibit_libc in LIBGCC2_CFLAGS.
2526 # This prevents libgcc2 from containing any code which requires libc
2528 : ${inhibit_libc=false}
2529 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2530 test x$with_newlib = xyes ; } &&
2531 { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2534 AC_SUBST(inhibit_libc)
2536 # When building gcc with a cross-compiler, we need to adjust things so
2537 # that the generator programs are still built with the native compiler.
2538 # Also, we cannot run fixincludes.
2540 # These are the normal (build=host) settings:
2541 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
2542 CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
2543 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
2544 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2545 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
2546 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
2548 # And these apply if build != host, or we are generating coverage data
2549 if test x$build != x$host || test "x$coverage_flags" != x
2551 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CFLAGS_FOR_BUILD)'
2552 BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS_FOR_BUILD)'
2553 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2557 if test x$enable_fixincludes = xno;
2562 # Expand extra_headers to include complete path.
2563 # This substitutes for lots of t-* files.
2565 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2566 for file in ${extra_headers} ; do
2567 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2570 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2571 if test x"$use_gcc_tgmath" = xyes
2572 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2575 # Define collect2 in Makefile.
2576 case $host_can_use_collect2 in
2578 *) collect2='collect2$(exeext)' ;;
2580 AC_SUBST([collect2])
2582 # Add a definition of USE_COLLECT2 if system wants one.
2583 case $use_collect2 in
2584 no) use_collect2= ;;
2587 host_xm_defines="${host_xm_defines} USE_COLLECT2"
2588 xm_defines="${xm_defines} USE_COLLECT2"
2589 case $host_can_use_collect2 in
2591 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2597 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2598 [Define to the name of the LTO plugin DSO that must be
2599 passed to the linker's -plugin=LIB option.])
2601 # ---------------------------
2602 # Assembler & linker features
2603 # ---------------------------
2605 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2606 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2607 # However when ld-new is first executed from the build tree, libtool will
2608 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2609 # to the build tree. While doing this we need to use the previous-stage
2610 # linker, or we have an infinite loop. The presence of a shell script as
2611 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2612 # the gcc/collect-ld script. So we need to know how libtool works, or
2613 # exec-tool will fail.
2615 m4_defun([_LT_CONFIG_COMMANDS], [])
2618 AC_SUBST(enable_fast_install)
2620 AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes])
2621 DARWIN_DO_EXTRA_RPATH=0
2622 AC_ARG_WITH(darwin-extra-rpath,
2624 [[--with-darwin-extra-rpath=[ARG]]],
2625 [Specify a runpath directory, additional to those provided by the compiler])],
2626 [if test x"$withval" != x; then
2627 DARWIN_ADD_RPATH="$withval"
2628 DARWIN_DO_EXTRA_RPATH=1
2630 AC_DEFINE_UNQUOTED(DARWIN_DO_EXTRA_RPATH, $DARWIN_DO_EXTRA_RPATH,
2631 [Should add an extra runpath directory])
2632 AC_DEFINE_UNQUOTED(DARWIN_ADD_RPATH, "$DARWIN_ADD_RPATH",
2633 [Specify a runpath directory, additional to those provided by the compiler])
2635 # Identify the assembler which will work hand-in-glove with the newly
2636 # built GCC, so that we can examine its features. This is the assembler
2637 # which will be driven by the driver program.
2639 # If build != host, and we aren't building gas in-tree, we identify a
2640 # build->target assembler and hope that it will have the same features
2641 # as the host->target assembler we'll be using.
2642 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2644 m4_pattern_allow([AS_FOR_TARGET])dnl
2645 AS_VAR_SET_IF(gcc_cv_as,, [
2646 if test -x "$DEFAULT_ASSEMBLER"; then
2647 gcc_cv_as="$DEFAULT_ASSEMBLER"
2648 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2649 && test -f ../gas/Makefile \
2650 && test x$build = x$host; then
2651 gcc_cv_as=../gas/as-new$build_exeext
2652 elif test -x as$build_exeext; then
2653 # Build using assembler in the current directory.
2654 gcc_cv_as=./as$build_exeext
2655 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2656 gcc_cv_as="$AS_FOR_TARGET"
2658 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2661 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2662 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2663 case "$ORIGINAL_AS_FOR_TARGET" in
2664 ./as | ./as$build_exeext) ;;
2665 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2670 [[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
2671 [case "${enableval}" in
2677 install_gold_as_default=no
2679 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
2680 [case "${enableval}" in
2682 install_gold_as_default=yes
2685 if test x${default_ld} != x; then
2686 install_gold_as_default=yes
2692 AC_MSG_ERROR([invalid --enable-gold argument])
2696 # Identify the linker which will work hand-in-glove with the newly
2697 # built GCC, so that we can examine its features. This is the linker
2698 # which will be driven by the driver program.
2700 # If build != host, and we aren't building gas in-tree, we identify a
2701 # build->target linker and hope that it will have the same features
2702 # as the host->target linker we'll be using.
2703 gcc_cv_gld_major_version=
2704 gcc_cv_gld_minor_version=
2705 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2706 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2707 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2709 AS_VAR_SET_IF(gcc_cv_ld,, [
2710 if test -x "$DEFAULT_LINKER"; then
2711 gcc_cv_ld="$DEFAULT_LINKER"
2712 elif test $install_gold_as_default = yes \
2713 && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2714 && test -f ../gold/Makefile \
2715 && test x$build = x$host; then
2716 gcc_cv_ld=../gold/ld-new$build_exeext
2717 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2718 && test -f ../ld/Makefile \
2719 && test x$build = x$host; then
2720 gcc_cv_ld=../ld/ld-new$build_exeext
2721 elif test -x collect-ld$build_exeext; then
2722 # Build using linker in the current directory.
2723 gcc_cv_ld=./collect-ld$build_exeext
2724 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2725 gcc_cv_ld="$LD_FOR_TARGET"
2727 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2730 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2731 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2732 # if the PLUGIN_LD is set ld-new, just have it as ld
2733 # as that is the installed named.
2734 if test x$PLUGIN_LD_SUFFIX = xld-new \
2735 || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2738 AC_ARG_WITH(plugin-ld,
2739 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2740 [if test x"$withval" != x; then
2741 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2742 PLUGIN_LD_SUFFIX="$withval"
2744 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2745 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2747 # Check to see if we are using gold instead of ld
2748 AC_MSG_CHECKING(whether we are using gold)
2750 if test x$gcc_cv_ld != x; then
2751 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2752 | grep "GNU gold" > /dev/null; then
2756 AC_MSG_RESULT($ld_is_gold)
2758 # Check to see if we are using mold instead of ld
2759 AC_MSG_CHECKING(whether we are using mold)
2761 if test x$gcc_cv_ld != x; then
2762 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2763 | grep "mold" > /dev/null; then
2767 AC_MSG_RESULT($ld_is_mold)
2770 AC_MSG_CHECKING(gold linker with split stack support as non default)
2771 # Check to see if default ld is not gold, but gold is
2772 # available and has support for split stack. If gcc was configured
2773 # with gold then no checking is done.
2775 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2777 # For platforms other than powerpc64*, enable as appropriate.
2780 ld_gold=`which ${gcc_cv_ld}.gold`
2781 # Make sure this gold has minimal split stack support
2782 if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2783 ld_vers=`$ld_gold --version | sed 1q`
2784 gold_vers=`echo $ld_vers | sed -n \
2785 -e 's,^[[^)]]*[[ ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2787 # check that the gold version contains the complete split stack support
2788 # on powerpc64 big and little endian
2790 case "$gold_vers" in
2791 2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2793 *) gold_non_default=no
2799 if test $gold_non_default = yes; then
2800 AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2801 [Define if the gold linker supports split stack and is available as a non-default])
2804 AC_MSG_RESULT($gold_non_default)
2806 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2807 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2808 case "$ORIGINAL_LD_FOR_TARGET" in
2809 ./collect-ld | ./collect-ld$build_exeext) ;;
2810 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2813 AC_MSG_CHECKING(what linker to use)
2814 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2815 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2816 # Single tree build which includes ld. We want to prefer it
2817 # over whatever linker top-level may have detected, since
2818 # we'll use what we're building after installation anyway.
2819 AC_MSG_RESULT(newly built ld)
2821 in_tree_ld_is_elf=no
2822 if (grep 'EMUL = .*elf' ../ld/Makefile \
2823 || grep 'EMUL = .*linux' ../ld/Makefile \
2824 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2825 in_tree_ld_is_elf=yes
2826 elif test "$ld_is_gold" = yes; then
2827 in_tree_ld_is_elf=yes
2829 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
2832 gcc_cv_gld_version=`sed -n -e 's/^[ ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2833 if test x$gcc_cv_gld_version != x; then
2837 case $gcc_cv_gld_version in
2840 *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2843 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2844 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2846 ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2847 ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2849 AC_MSG_RESULT($gcc_cv_ld)
2851 gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2852 ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2853 ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2856 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2857 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2859 # Figure out what nm we will be using.
2860 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2861 AS_VAR_SET_IF(gcc_cv_nm,, [
2862 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2863 && test -f ../binutils/Makefile \
2864 && test x$build = x$host; then
2865 gcc_cv_nm=../binutils/nm-new$build_exeext
2866 elif test -x nm$build_exeext; then
2867 gcc_cv_nm=./nm$build_exeext
2868 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2869 gcc_cv_nm="$NM_FOR_TARGET"
2871 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2874 AC_MSG_CHECKING(what nm to use)
2875 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2876 # Single tree build which includes binutils.
2877 AC_MSG_RESULT(newly built nm)
2880 AC_MSG_RESULT($gcc_cv_nm)
2884 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2885 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2886 case "$ORIGINAL_NM_FOR_TARGET" in
2887 ./nm | ./nm$build_exeext) ;;
2888 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2892 # Figure out what objdump we will be using.
2893 AS_VAR_SET_IF(gcc_cv_objdump,, [
2894 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2895 && test -f ../binutils/Makefile \
2896 && test x$build = x$host; then
2897 # Single tree build which includes binutils.
2898 gcc_cv_objdump=../binutils/objdump$build_exeext
2899 elif test -x objdump$build_exeext; then
2900 gcc_cv_objdump=./objdump$build_exeext
2901 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2902 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2904 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2907 AC_MSG_CHECKING(what objdump to use)
2908 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2909 # Single tree build which includes binutils.
2910 AC_MSG_RESULT(newly built objdump)
2911 elif test x$gcc_cv_objdump = x; then
2912 AC_MSG_RESULT(not found)
2914 AC_MSG_RESULT($gcc_cv_objdump)
2917 # Figure out what readelf we will be using.
2918 AS_VAR_SET_IF(gcc_cv_readelf,, [
2919 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2920 && test -f ../binutils/Makefile \
2921 && test x$build = x$host; then
2922 # Single tree build which includes binutils.
2923 gcc_cv_readelf=../binutils/readelf$build_exeext
2924 elif test -x readelf$build_exeext; then
2925 gcc_cv_readelf=./readelf$build_exeext
2926 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2927 gcc_cv_readelf="$READELF_FOR_TARGET"
2929 AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2932 AC_MSG_CHECKING(what readelf to use)
2933 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2934 # Single tree build which includes binutils.
2935 AC_MSG_RESULT(newly built readelf)
2936 elif test x$gcc_cv_readelf = x; then
2937 AC_MSG_RESULT(not found)
2939 AC_MSG_RESULT($gcc_cv_readelf)
2942 # Figure out what otool we will be using.
2943 AS_VAR_SET_IF(gcc_cv_otool,, [
2944 if test -x otool$build_exeext; then
2945 gcc_cv_otool=./otool$build_exeext
2946 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2947 gcc_cv_otool="$OTOOL_FOR_TARGET"
2949 AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2952 AC_MSG_CHECKING(what otool to use)
2953 if test x$gcc_cv_otool = x; then
2954 AC_MSG_RESULT(not found)
2956 AC_MSG_RESULT($gcc_cv_otool)
2959 # Figure out the dsymutil we will use.
2960 AS_VAR_SET_IF(gcc_cv_dsymutil,, [
2961 if test -x "$DEFAULT_DSYMUTIL"; then
2962 gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
2963 elif test -x dsymutil$build_exeext; then
2964 gcc_cv_dsymutil=./dsymutil$build_exeext
2965 elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $[2] ); then
2966 gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
2967 elif ( set dummy $DSYMUTIL; test -x $[2] ); then
2968 gcc_cv_dsymutil=$DSYMUTIL
2970 AC_PATH_PROG(gcc_cv_dsymutil, $DSYMUTIL_FOR_TARGET)
2973 ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
2974 AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
2975 case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
2976 ./dsymutil | ./dsymutil$build_exeext) ;;
2977 *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
2980 # Figure out what assembler alignment features are present.
2981 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,,
2984 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2985 [Define if your assembler supports .balign and .p2align.])])
2987 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,,
2989 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2990 [Define if your assembler supports specifying the maximum number
2991 of bytes to skip when using the GAS .p2align command.])])
2993 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,,
2995 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2996 [Define if your assembler supports .literal16.])])
2998 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,,
2999 [conftest_label1: .word 0
3001 conftest_label2: .word 0
3003 [if test x$gcc_cv_nm != x; then
3004 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
3005 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
3006 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
3008 else gcc_cv_as_subsection_m1=yes
3010 rm -f conftest.nm1 conftest.nm2
3012 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
3013 [Define if your assembler supports .subsection and .subsection -1 starts
3014 emitting at the beginning of your section.])])
3016 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,,
3018 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
3020 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,,
3021 [ .weakref foobar, barfnot],,
3022 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
3024 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,,
3026 .NSUBSPA $CODE$,COMDAT],,
3027 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
3029 # .hidden needs to be supported in both the assembler and the linker,
3030 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
3031 # This is irritatingly difficult to feature test for; we have to check the
3032 # date string after the version number. If we've got an in-tree
3033 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
3035 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
3038 conftest_s=' .globl foobar,hidden'
3041 conftest_s=' .hidden foobar
3045 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,, [$conftest_s])
3048 # Darwin as has some visibility support, though with a different syntax.
3049 gcc_cv_as_hidden=yes
3053 gcc_GAS_CHECK_FEATURE([.base64], gcc_cv_as_base64,,
3055 .base64 "Tm9uIHB1ZG9yIGVzdCBuaWwgc2NpcmUsIHB1ZG9yIG5pbCBkaXNjZXJlIHZlbGxlLgo="],,
3056 [AC_DEFINE(HAVE_GAS_BASE64, 1, [Define if your assembler supports .base64.])])
3058 # gnu_indirect_function type is an extension proposed at
3059 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
3060 # selection of function implementation
3061 AC_ARG_ENABLE(gnu-indirect-function,
3062 [AS_HELP_STRING([--enable-gnu-indirect-function],
3063 [enable the use of the @gnu_indirect_function to glibc systems])],
3064 [case $enable_gnu_indirect_function in
3066 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
3067 Valid choices are 'yes' and 'no'.]) ;;
3069 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
3073 AC_MSG_CHECKING(linker ifunc IRELATIVE support)
3074 cat > conftest.s <<EOF
3076 .type foo_resolver, @function
3079 .size foo_resolver, .-foo_resolver
3082 .type foo, %gnu_indirect_function
3083 .set foo, foo_resolver
3086 .type bar, @function
3092 if test x$gcc_cv_as != x \
3093 && test x$gcc_cv_ld != x \
3094 && test x$gcc_cv_readelf != x \
3095 && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
3096 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
3097 && $gcc_cv_readelf --relocs --wide conftest \
3098 | grep R_RISCV_IRELATIVE > /dev/null 2>&1; then
3099 enable_gnu_indirect_function=yes
3101 rm -f conftest conftest.o conftest.s
3102 AC_MSG_RESULT($enable_gnu_indirect_function)
3106 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
3107 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
3108 [Define if your system supports gnu indirect functions.])
3112 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
3113 if test $in_tree_ld != yes ; then
3114 if echo "$ld_ver" | grep GNU > /dev/null; then
3115 if test x"$ld_is_gold" = xyes; then
3116 # GNU gold --version looks like this:
3118 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
3120 # We extract the binutils version which is more familiar and specific
3121 # than the gold version.
3122 ld_vers=`echo $ld_ver | sed -n \
3123 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3125 # GNU ld --version looks like this:
3127 # GNU ld (GNU Binutils) 2.21.51.20110225
3128 ld_vers=`echo $ld_ver | sed -n \
3129 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3131 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'`
3132 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3133 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3134 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
3138 # Solaris 2 ld -V output looks like this for a regular version:
3140 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
3142 # but test versions add stuff at the end:
3144 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
3146 # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
3147 # numbers can be used in ld.so.1 feature checks even if a different
3148 # linker is configured.
3149 ld_ver=`$gcc_cv_ld -V 2>&1`
3150 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
3151 ld_vers=`echo $ld_ver | sed -n \
3152 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
3153 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3154 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3162 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
3163 [[if test $in_tree_ld = yes ; then
3165 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 \
3166 && test $in_tree_ld_is_elf = yes; then
3167 gcc_cv_ld_hidden=yes
3170 gcc_cv_ld_hidden=yes
3171 if test x"$ld_is_gold" = xyes; then
3173 elif test x"$ld_is_mold" = xyes; then
3175 elif echo "$ld_ver" | grep GNU > /dev/null; then
3176 if test 0"$ld_date" -lt 20020404; then
3177 if test -n "$ld_date"; then
3178 # If there was date string, but was earlier than 2002-04-04, fail
3180 elif test -z "$ld_vers"; then
3181 # If there was no date string nor ld version number, something is wrong
3184 test -z "$ld_vers_patch" && ld_vers_patch=0
3185 if test "$ld_vers_major" -lt 2; then
3187 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
3188 gcc_cv_ld_hidden="no"
3189 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
3197 gcc_cv_ld_hidden=yes
3200 # Darwin ld has some visibility support.
3201 gcc_cv_ld_hidden=yes
3203 hppa64*-*-hpux* | ia64*-*-hpux*)
3204 gcc_cv_ld_hidden=yes
3207 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
3208 # .symbolic was only added in Solaris 9 12/02.
3209 gcc_cv_ld_hidden=yes
3217 libgcc_visibility=no
3218 AC_SUBST(libgcc_visibility)
3219 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
3220 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
3221 libgcc_visibility=yes
3222 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
3223 [Define if your assembler and linker support .hidden.])
3226 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3227 gcc_cv_ld_ro_rw_mix=unknown
3228 if test $in_tree_ld = yes ; then
3229 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 \
3230 && test $in_tree_ld_is_elf = yes; then
3231 gcc_cv_ld_ro_rw_mix=read-write
3233 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3234 echo '.section myfoosect, "a"' > conftest1.s
3235 echo '.section myfoosect, "aw"' > conftest2.s
3236 echo '.byte 1' >> conftest2.s
3237 echo '.section myfoosect, "a"' > conftest3.s
3238 echo '.byte 0' >> conftest3.s
3239 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3240 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3241 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
3242 if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3243 conftest2.o conftest3.o > /dev/null 2>&1 \
3244 || $gcc_cv_ld -r -o conftest1.so conftest1.o \
3245 conftest2.o conftest3.o > /dev/null 2>&1; then
3246 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3247 | sed -e '/myfoosect/!d' -e N`
3248 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3249 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3250 gcc_cv_ld_ro_rw_mix=read-only
3252 gcc_cv_ld_ro_rw_mix=read-write
3258 rm -f conftest.* conftest[123].*
3261 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3262 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3263 [Define if your linker links a mix of read-only
3264 and read-write sections into a read-write section.])
3266 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3268 gcc_AC_INITFINI_ARRAY
3270 # Some assemblers (GNU as for LoongArch) generates relocations for
3271 # leb128 symbol arithmetic for relaxation, we need to disable relaxation
3272 # probing leb128 support then.
3275 gcc_GAS_CHECK_FEATURE([-mno-relax support],
3276 gcc_cv_as_mno_relax,[-mno-relax],[.text],,
3277 [check_leb128_asflags=-mno-relax])
3280 check_leb128_asflags=
3284 # Check if we have .[us]leb128, and support symbol arithmetic with it.
3285 # Older versions of GAS and some non-GNU assemblers, have a bugs handling
3286 # these directives, even when they appear to accept them.
3287 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
3288 [$check_leb128_asflags],
3295 .uleb128 0x8000000000000000
3298 if test "x$gcc_cv_objdump" != x; then
3299 if $gcc_cv_objdump -s conftest.o 2>/dev/null \
3300 | grep '04800a8e 78808080 80808080 808001' >/dev/null; then
3301 gcc_cv_as_leb128=yes
3303 elif test "x$gcc_cv_otool" != x; then
3304 if $gcc_cv_otool -d conftest.o 2>/dev/null \
3305 | grep '04 80 0a 8e 78 80 80 80 80 80 80 80 80 80 01' >/dev/null; then
3306 gcc_cv_as_leb128=yes
3309 # play safe, assume the assembler is broken.
3313 [AC_DEFINE(HAVE_AS_LEB128, 1,
3314 [Define if your assembler supports .sleb128 and .uleb128.])],
3315 [AC_DEFINE(HAVE_AS_LEB128, 0,
3316 [Define if your assembler supports .sleb128 and .uleb128.])])
3318 # Determine if an .eh_frame section is read-only.
3319 gcc_fn_eh_frame_ro () {
3320 $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
3321 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
3322 sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
3325 # Check if we have assembler support for unwind directives.
3326 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,,
3332 .cfi_escape 1, 2, 3, 4, 5
3336 # If the linker used on Solaris (like Sun ld) isn't capable of merging
3337 # read-only and read-write sections, we need to make sure that the
3338 # assembler used emits read-write .eh_frame sections.
3339 if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
3340 gcc_cv_as_cfi_directive=yes
3341 elif test "x$gcc_cv_objdump" = x; then
3342 # No objdump, err on the side of caution.
3343 gcc_cv_as_cfi_directive=no
3345 if test x$gas = xyes; then
3353 sparc*-*-solaris2.*)
3354 # On Solaris/SPARC, .eh_frame sections should always be read-write.
3355 if gcc_fn_eh_frame_ro $as_32_opt \
3356 || gcc_fn_eh_frame_ro $as_64_opt; then
3357 gcc_cv_as_cfi_directive=no
3359 gcc_cv_as_cfi_directive=yes
3362 i?86-*-solaris2.* | x86_64-*-solaris2.*)
3363 # On Solaris/x86, make sure that GCC and assembler agree on using
3364 # read-only .eh_frame sections for 64-bit.
3365 if gcc_fn_eh_frame_ro $as_32_opt; then
3366 gcc_cv_as_cfi_directive=no
3367 elif gcc_fn_eh_frame_ro $as_64_opt; then
3368 gcc_cv_as_cfi_directive=yes
3370 gcc_cv_as_cfi_directive=no
3377 gcc_cv_as_cfi_directive=yes
3380 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3381 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,,
3384 .cfi_adjust_cfa_offset 64
3386 .cfi_adjust_cfa_offset 128
3389 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3390 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
3391 gcc_cv_as_cfi_advance_working=yes
3395 # no objdump, err on the side of caution
3396 gcc_cv_as_cfi_advance_working=no
3398 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3399 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3400 [`if test $gcc_cv_as_cfi_directive = yes \
3401 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3402 [Define 0/1 if your assembler supports CFI directives.])
3404 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3405 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3406 gcc_cv_as_cfi_personality_directive,,
3409 .cfi_personality 0, symbol
3411 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3412 [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3413 [Define 0/1 if your assembler supports .cfi_personality.])
3415 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3416 gcc_cv_as_cfi_sections_directive,,
3418 .cfi_sections .debug_frame, .eh_frame
3422 win32 | pe | cygwin* | mingw32*)
3423 # Need to check that we generated the correct relocation for the
3424 # .debug_frame section. This was fixed for binutils 2.21.
3425 gcc_cv_as_cfi_sections_directive=no
3426 if test "x$gcc_cv_objdump" != x; then
3427 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3428 grep -i secrel > /dev/null; then
3429 gcc_cv_as_cfi_sections_directive=yes
3434 gcc_cv_as_cfi_sections_directive=yes
3437 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3438 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3439 [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3440 [Define 0/1 if your assembler supports .cfi_sections.])
3442 # GAS versions up to and including 2.11.0 may mis-optimize
3444 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,,
3451 .section .eh_frame,"aw",@progbits
3453 .4byte .LECIE1-.LSCIE1
3467 .4byte .LEFDE1-.LASFDE1
3469 .4byte .LASFDE1-__FRAME_BEGIN__
3477 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3478 cat > conftest.lit <<EOF
3479 0000 10000000 00000000 017a0001 781a0004 .........z..x...
3480 0010 01000000 12000000 18000000 00000000 ................
3481 0020 08000000 04080000 0044 .........D @&t@
3483 cat > conftest.big <<EOF
3484 0000 00000010 00000000 017a0001 781a0004 .........z..x...
3485 0010 00000001 00000012 00000018 00000000 ................
3486 0020 00000008 04000000 0844 .........D @&t@
3488 # If the assembler didn't choke, and we can objdump,
3489 # and we got the correct data, then succeed.
3490 # The text in the here-document typically retains its unix-style line
3491 # endings, while the output of objdump will use host line endings.
3492 # Therefore, use diff -b for the comparisons.
3493 if test x$gcc_cv_objdump != x \
3494 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3495 | tail -3 > conftest.got \
3496 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3497 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3499 gcc_cv_as_eh_frame=yes
3500 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3501 gcc_cv_as_eh_frame=buggy
3503 # Uh oh, what do we do now?
3504 gcc_cv_as_eh_frame=no
3507 if test $gcc_cv_as_eh_frame = buggy; then
3508 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3509 [Define if your assembler mis-optimizes .eh_frame data.])
3512 # Test if the assembler supports the section flag 'e' or #exclude for
3513 # specifying an excluded section.
3514 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3518 if test $gcc_cv_as_section_exclude_e = no; then
3520 # Solaris as uses #exclude instead.
3524 conftest_s='.section "foo1", #exclude'
3526 i?86-*-solaris2* | x86_64-*-solaris2*)
3527 conftest_s='.section foo1, #exclude'
3532 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,
3536 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3537 [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3538 [Define if your assembler supports specifying the exclude section flag.])
3540 # Test if the assembler supports the section flag 'R' for specifying
3541 # section with SHF_GNU_RETAIN.
3543 # Solaris may use GNU assembler with Solairs ld. Even if GNU
3544 # assembler supports the section flag 'R', it doesn't mean that
3545 # Solairs ld supports it.
3547 gcc_cv_as_shf_gnu_retain=no
3550 gcc_GAS_CHECK_FEATURE([section 'R' flag], gcc_cv_as_shf_gnu_retain,
3552 [.section .foo,"awR",%progbits
3556 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_GNU_RETAIN,
3557 [`if test $gcc_cv_as_shf_gnu_retain = yes; then echo 1; else echo 0; fi`],
3558 [Define 0/1 if your assembler supports marking sections with SHF_GNU_RETAIN flag.])
3560 # Test if the assembler supports the section flag 'o' for specifying
3561 # section with link-order.
3563 # Solaris may use GNU assembler with Solairs ld. Even if GNU
3564 # assembler supports the section flag 'o', it doesn't mean that
3565 # Solairs ld supports it.
3567 gcc_cv_as_section_link_order=no
3570 gcc_GAS_CHECK_FEATURE([section 'o' flag], gcc_cv_as_section_link_order,
3574 .section __patchable_function_entries,"awo",%progbits,.foo
3578 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_LINK_ORDER,
3579 [`if test $gcc_cv_as_section_link_order = yes; then echo 1; else echo 0; fi`],
3580 [Define 0/1 if your assembler supports 'o' flag in .section directive.])
3582 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3584 [.section .rodata.str, "aMS", @progbits, 1])
3585 if test $gcc_cv_as_shf_merge = no; then
3586 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3588 [.section .rodata.str, "aMS", %progbits, 1])
3590 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3591 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3592 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3594 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3595 gcc_cv_as_comdat_group,
3597 [.section .text,"axG",@progbits,.foo,comdat])
3598 if test $gcc_cv_as_comdat_group = yes; then
3599 gcc_cv_as_comdat_group_percent=no
3600 gcc_cv_as_comdat_group_group=no
3602 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3603 gcc_cv_as_comdat_group_percent,
3605 [.section .text,"axG",%progbits,.foo,comdat])
3606 if test $gcc_cv_as_comdat_group_percent = yes; then
3607 gcc_cv_as_comdat_group_group=no
3610 # Sun as uses a completely different syntax.
3615 .group foo,".text%foo",#comdat
3616 .section ".text%foo", #alloc,#execinstr,#progbits
3621 i?86-*-solaris2* | x86_64-*-solaris2*)
3623 .group foo,.text%foo,#comdat
3624 .section .text%foo, "ax", @progbits
3630 gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3631 gcc_cv_as_comdat_group_group,
3635 if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3636 gcc_cv_as_comdat_group_group=no
3640 if test x"$ld_is_gold" = xyes; then
3642 elif test x"$ld_is_mold" = xyes; then
3644 elif test $in_tree_ld = yes ; then
3646 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 \
3647 && test $in_tree_ld_is_elf = yes; then
3650 elif echo "$ld_ver" | grep GNU > /dev/null; then
3652 if test 0"$ld_date" -lt 20050308; then
3653 if test -n "$ld_date"; then
3654 # If there was date string, but was earlier than 2005-03-08, fail
3656 elif test "$ld_vers_major" -lt 2; then
3658 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3665 *-*-solaris2.1[1-9]*)
3667 # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3668 # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3671 # If using Sun as for COMDAT group as emitted by GCC, one needs at
3672 # least ld version 1.2267.
3673 if test "$ld_vers_major" -gt 1; then
3675 elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3677 elif test "$ld_vers_minor" -ge 2267; then
3682 # Assume linkers other than GNU ld don't support COMDAT group.
3688 # Allow overriding the automatic COMDAT group tests above.
3689 AC_ARG_ENABLE(comdat,
3690 [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3691 [comdat_group="$enable_comdat"])
3692 if test $comdat_group = no; then
3693 gcc_cv_as_comdat_group=no
3694 gcc_cv_as_comdat_group_percent=no
3695 gcc_cv_as_comdat_group_group=no
3697 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3698 [`if test $gcc_cv_as_comdat_group = yes \
3699 || test $gcc_cv_as_comdat_group_percent = yes \
3700 || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3701 [Define 0/1 if your assembler and linker support COMDAT groups.])
3703 gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3707 .loc 1 1 0 is_stmt 1],,
3708 [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3709 [Define if your assembler supports the .loc is_stmt sub-directive.])])
3711 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3712 gcc_cv_as_discriminator,,
3715 .loc 1 1 0 discriminator 1],,
3716 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3717 [Define if your assembler supports the .loc discriminator sub-directive.])])
3719 # Catch the newlib flag of the same name so we can gate GCC features on it.
3720 AC_ARG_ENABLE(newlib-nano-formatted-io,
3721 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3723 [case "${enableval}" in
3727 AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3731 # Thread-local storage - the check is heavily parameterized.
3738 .section ".tdata","awT",@progbits
3741 ldq $27,__tls_get_addr($29) !literal!1
3742 lda $16,foo($29) !tlsgd!1
3743 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
3744 ldq $27,__tls_get_addr($29) !literal!2
3745 lda $16,foo($29) !tlsldm!2
3746 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
3747 ldq $1,foo($29) !gotdtprel
3748 ldah $2,foo($29) !dtprelhi
3749 lda $3,foo($2) !dtprello
3750 lda $4,foo($29) !dtprel
3751 ldq $1,foo($29) !gottprel
3752 ldah $2,foo($29) !tprelhi
3753 lda $3,foo($2) !tprello
3754 lda $4,foo($29) !tprel'
3755 tls_as_opt=--fatal-warnings
3759 add_s r0,r0, @foo@tpoff'
3761 cris-*-*|crisv32-*-*)
3763 .section ".tdata","awT",@progbits
3768 tls_as_opt=--fatal-warnings
3772 .section ".tdata","awT",@progbits
3782 .section ".tdata","awT",@progbits
3786 addil LT%foo-$tls_gdidx$,gp
3787 ldo RT%foo-$tls_gdidx$(%r1),%arg0
3790 addil LT%foo-$tls_ldidx$,gp
3792 ldo RT%foo-$tls_ldidx$(%r1),%arg0
3793 addil LR%foo-$tls_dtpoff$,%ret0
3794 ldo RR%foo-$tls_dtpoff$(%r1),%t1
3796 addil LT%foo-$tls_ieoff$,gp
3797 ldw RT%foo-$tls_ieoff$(%r1),%t2
3800 addil LR%foo-$tls_leoff$,%t1
3801 ldo RR%foo-$tls_leoff$(%r1),%t2'
3802 tls_as_opt=--fatal-warnings
3806 .section ".tdata","awT",%progbits
3815 i[34567]86-*-* | x86_64-*-*)
3817 i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3824 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3826 .section .tdata,"awt",@progbits'
3829 AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3830 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3834 .section ".tdata","awT",@progbits'
3836 tls_as_opt="--fatal-warnings"
3840 if test x$on_solaris = xyes; then
3842 yes) tls_as_opt="$tls_as_opt --32" ;;
3845 conftest_s="$conftest_s
3849 leal foo@tlsgd(,%ebx,1), %eax
3850 leal foo@tlsldm(%ebx), %eax
3851 leal foo@dtpoff(%eax), %edx
3852 movl foo@gottpoff(%ebx), %eax
3853 subl foo@gottpoff(%ebx), %eax
3854 addl foo@gotntpoff(%ebx), %eax
3855 movl foo@indntpoff, %eax
3856 movl \$foo@tpoff, %eax
3857 subl \$foo@tpoff, %eax
3858 leal foo@ntpoff(%ecx), %eax"
3861 if test x$on_solaris = xyes; then
3863 yes) tls_as_opt="$tls_as_opt --64" ;;
3864 no) tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3867 conftest_s="$conftest_s
3871 leaq foo@tlsgd(%rip), %rdi
3872 leaq foo@tlsld(%rip), %rdi
3873 leaq foo@dtpoff(%rax), %rdx
3874 movq foo@gottpoff(%rip), %rax
3875 movq \$foo@tpoff, %rax"
3881 .section ".tdata","awT",@progbits
3884 addl r16 = @ltoff(@dtpmod(foo#)), gp
3885 addl r17 = @ltoff(@dtprel(foo#)), gp
3886 addl r18 = @ltoff(@tprel(foo#)), gp
3887 addl r19 = @dtprel(foo#), gp
3888 adds r21 = @dtprel(foo#), r13
3889 movl r23 = @dtprel(foo#)
3890 addl r20 = @tprel(foo#), gp
3891 adds r22 = @tprel(foo#), r13
3892 movl r24 = @tprel(foo#)'
3893 tls_as_opt=--fatal-warnings
3897 .section .tdata,"awT",@progbits
3904 tls_as_opt='--fatal-warnings'
3908 .section .tdata,"awT",@progbits
3912 addik r5,r20,x@TLSGD
3913 addik r5,r20,x@TLSLDM'
3914 tls_as_opt='--fatal-warnings'
3918 .section .tdata,"awT",@progbits
3922 addiu $4, $28, %tlsgd(x)
3923 addiu $4, $28, %tlsldm(x)
3924 lui $4, %dtprel_hi(x)
3925 addiu $4, $4, %dtprel_lo(x)
3926 lw $4, %gottprel(x)($28)
3927 lui $4, %tprel_hi(x)
3928 addiu $4, $4, %tprel_lo(x)'
3929 tls_as_opt='-32 --fatal-warnings'
3933 .section .tdata,"awT",@progbits
3938 move.l x@TLSGD(%a5),%a0
3939 move.l x@TLSLDM(%a5),%a0
3940 move.l x@TLSLDO(%a5),%a0
3941 move.l x@TLSIE(%a5),%a0
3942 move.l x@TLSLE(%a5),%a0'
3943 tls_as_opt='--fatal-warnings'
3947 .section ".tdata","awT",@progbits'
3948 tls_as_opt="--fatal-warnings"
3952 .section ".tdata","awT",%progbits
3956 add x0, x0, #:tlsgd_lo12:x
3959 tls_as_opt='--fatal-warnings'
3963 .section ".tdata","awT",@progbits
3966 l.movhi r3, tpoffha(foo)
3968 l.lwz r4, tpofflo(foo)(r3)'
3969 tls_as_opt=--fatal-warnings
3973 .extern __get_tpointer
3989 .section ".tdata","awT",@progbits
3997 addi 3,2,ld0@got@tlsgd
4003 addi 3,2,x1@got@tlsld
4009 addis 9,3,x2@dtprel@ha
4010 addi 9,9,x2@dtprel@l
4013 ld 9,x3@got@dtprel(2)
4017 tls_as_opt="-a64 --fatal-warnings"
4021 .section ".tdata","awT",@progbits
4029 addi 3,31,ld0@got@tlsgd
4031 addi 3,31,x1@got@tlsld
4034 addis 9,3,x2@dtprel@ha
4035 addi 9,9,x2@dtprel@l
4036 lwz 9,x3@got@tprel(31)
4039 addis 9,2,x2@tprel@ha
4040 addi 9,9,x2@tprel@l'
4041 tls_as_opt="-a32 --fatal-warnings"
4045 .section .tdata,"awT",@progbits
4049 call __tls_get_addr'
4050 tls_as_opt='--fatal-warnings'
4054 .section ".tdata","awT",@progbits
4063 l %r1,foo@GOTNTPOFF(%r12)
4064 l %r1,0(%r1):tls_load:foo
4065 bas %r14,0(%r1,%r13):tls_gdcall:foo
4066 bas %r14,0(%r1,%r13):tls_ldcall:foo'
4067 tls_as_opt="-m31 --fatal-warnings"
4071 .section ".tdata","awT",@progbits
4079 lg %r1,foo@GOTNTPOFF(%r12)
4080 larl %r1,foo@INDNTPOFF
4081 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
4082 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
4083 tls_as_opt="-m64 -Aesame --fatal-warnings"
4085 sh-*-* | sh[123456789lbe]*-*-*)
4087 .section ".tdata","awT",@progbits
4095 tls_as_opt=--fatal-warnings
4099 sparc*-sun-solaris2.*)
4106 if test x$on_solaris = xyes && test x$gas_flag = xno; then
4108 .section ".tdata",#alloc,#write,#tls'
4111 .section ".tdata","awT",@progbits'
4112 tls_as_opt="-32 --fatal-warnings"
4114 conftest_s="$conftest_s
4117 sethi %tgd_hi22(foo), %o0
4118 add %o0, %tgd_lo10(foo), %o1
4119 add %l7, %o1, %o0, %tgd_add(foo)
4120 call __tls_get_addr, %tgd_call(foo)
4121 sethi %tldm_hi22(foo), %l1
4122 add %l1, %tldm_lo10(foo), %l2
4123 add %l7, %l2, %o0, %tldm_add(foo)
4124 call __tls_get_addr, %tldm_call(foo)
4125 sethi %tldo_hix22(foo), %l3
4126 xor %l3, %tldo_lox10(foo), %l4
4127 add %o0, %l4, %l5, %tldo_add(foo)
4128 sethi %tie_hi22(foo), %o3
4129 add %o3, %tie_lo10(foo), %o3
4130 ld [%l7 + %o3], %o2, %tie_ld(foo)
4131 add %g7, %o2, %o4, %tie_add(foo)
4132 sethi %tle_hix22(foo), %l1
4133 xor %l1, %tle_lox10(foo), %o5
4134 ld [%g7 + %o5], %o1"
4138 .section ".tdata","awT",@progbits
4141 movi a8, foo@TLSFUNC
4142 movi a10, foo@TLSARG
4143 callx8.tls a8, foo@TLSCALL'
4148 if test "x$enable_tls" = xno ; then
4149 : # TLS explicitly disabled.
4150 elif test "x$enable_tls" = xyes ; then
4151 set_have_as_tls=yes # TLS explicitly enabled.
4152 elif test -z "$conftest_s"; then
4153 : # If we don't have a check, assume no support.
4155 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
4156 [$tls_as_opt], [$conftest_s],,
4157 [set_have_as_tls=yes])
4159 if test $set_have_as_tls = yes ; then
4160 AC_DEFINE(HAVE_AS_TLS, 1,
4161 [Define if your assembler and linker support thread-local storage.])
4164 # Target-specific assembler checks.
4166 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
4167 gcc_cv_ld_static_dynamic=no
4168 gcc_cv_ld_static_option='-Bstatic'
4169 gcc_cv_ld_dynamic_option='-Bdynamic'
4170 if test $in_tree_ld = yes ; then
4171 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
4172 gcc_cv_ld_static_dynamic=yes
4174 elif test x$gcc_cv_ld != x; then
4175 # Check if linker supports -Bstatic/-Bdynamic option
4176 if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
4177 && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
4178 gcc_cv_ld_static_dynamic=yes
4181 # AIX ld uses -b flags
4182 *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
4183 gcc_cv_ld_static_dynamic=yes
4184 gcc_cv_ld_static_option="-bstatic"
4185 gcc_cv_ld_dynamic_option="-bdynamic"
4187 # HP-UX ld uses -a flags to select between shared and archive.
4189 if test x"$gnu_ld" = xno; then
4190 gcc_cv_ld_static_dynamic=yes
4191 gcc_cv_ld_static_option="-aarchive_shared"
4192 gcc_cv_ld_dynamic_option="-adefault"
4195 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
4197 gcc_cv_ld_static_dynamic=yes
4202 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
4203 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
4204 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
4205 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
4206 [Define to the linker option to disable use of shared objects.])
4207 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
4208 [Define to the linker option to enable use of shared objects.])
4210 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
4212 AC_MSG_CHECKING(linker --version-script option)
4213 gcc_cv_ld_version_script=no
4214 ld_version_script_option=''
4215 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4216 gcc_cv_ld_version_script=yes
4217 ld_version_script_option='--version-script'
4218 elif test x$gcc_cv_ld != x; then
4220 # Solaris 2 ld always supports -M. It also supports a subset of
4221 # --version-script since Solaris 11.4, but requires
4222 # -z gnu-version-script-compat to activate.
4224 gcc_cv_ld_version_script=yes
4225 ld_version_script_option='-M'
4229 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4230 AC_MSG_RESULT($gcc_cv_ld_version_script)
4231 AC_SUBST(ld_version_script_option)
4233 AC_MSG_CHECKING(linker soname option)
4235 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4236 gcc_cv_ld_soname=yes
4237 ld_soname_option='-soname'
4238 elif test x$gcc_cv_ld != x; then
4241 gcc_cv_ld_soname=yes
4242 ld_soname_option='-install_name'
4244 # Solaris 2 ld always supports -h. It also supports --soname for GNU
4245 # ld compatiblity since some Solaris 10 update.
4247 gcc_cv_ld_soname=yes
4248 ld_soname_option='-h'
4252 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4253 AC_MSG_RESULT($gcc_cv_ld_soname)
4254 AC_SUBST(ld_soname_option)
4256 if test x"$demangler_in_ld" = xyes; then
4257 AC_MSG_CHECKING(linker --demangle support)
4258 gcc_cv_ld_demangle=no
4259 if test $in_tree_ld = yes; then
4260 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 \
4261 gcc_cv_ld_demangle=yes
4263 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
4264 # Check if the GNU linker supports --demangle option
4265 if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
4266 gcc_cv_ld_demangle=yes
4269 if test x"$gcc_cv_ld_demangle" = xyes; then
4270 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
4271 [Define if your linker supports --demangle option.])
4273 AC_MSG_RESULT($gcc_cv_ld_demangle)
4276 AC_MSG_CHECKING(linker plugin support)
4278 if test -f liblto_plugin.la; then
4279 save_ld_ver="$ld_ver"
4280 save_ld_vers_major="$ld_vers_major"
4281 save_ld_vers_minor="$ld_vers_minor"
4282 save_ld_is_gold="$ld_is_gold"
4286 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4288 # FIXME: ld_is_gold?
4289 ld_vers_major="$gcc_cv_gld_major_version"
4290 ld_vers_minor="$gcc_cv_gld_minor_version"
4292 # Determine plugin linker version.
4293 # FIXME: Partial duplicate from above, generalize.
4295 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4296 if echo "$ld_ver" | grep GNU > /dev/null; then
4297 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4299 ld_vers=`echo $ld_ver | sed -n \
4300 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4302 ld_vers=`echo $ld_ver | sed -n \
4303 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4305 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4306 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4311 # Determine plugin support.
4312 if echo "$ld_ver" | grep GNU > /dev/null; then
4313 # Require GNU ld or gold 2.21+ for plugin support by default.
4314 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4316 elif test "$ld_is_mold" = yes; then
4318 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4319 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4324 ld_ver="$save_ld_ver"
4325 ld_vers_major="$save_ld_vers_major"
4326 ld_vers_minor="$save_ld_vers_minor"
4327 ld_is_gold="$save_ld_is_gold"
4329 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4330 [Define to the level of your linker's plugin support.])
4331 AC_MSG_RESULT($gcc_cv_lto_plugin)
4333 # Target OS-specific assembler checks.
4335 case "$target_os" in
4337 gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4338 gcc_cv_as_mmacosx_version_min,
4339 [-mmacosx-version-min=10.1], [.text],,
4340 [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4341 [Define if your macOS assembler supports the -mmacos-version-min option.])])
4342 if test x$gcc_cv_as_mmacosx_version_min = "xyes"; then
4343 gcc_GAS_CHECK_FEATURE([.build_version],
4344 gcc_cv_as_darwin_build_version,
4345 [-mmacosx-version-min=10.14],
4346 [ .build_version macos, 10, 14 sdk_version 10, 14],,
4347 [AC_DEFINE(HAVE_AS_MACOS_BUILD_VERSION, 1,
4348 [Define if your macOS assembler supports .build_version directives])])
4353 # Target CPU-specific assembler checks.
4357 gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,
4358 [-mabi=lp64], [.text],,,)
4359 if test x$gcc_cv_as_aarch64_mabi = xyes; then
4360 AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4361 [Define if your assembler supports the -mabi option.])
4363 if test x$with_abi = xilp32; then
4364 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4365 Upgrade the Assembler.])
4367 if test x"$with_multilib_list" = xdefault; then
4368 TM_MULTILIB_CONFIG=lp64
4370 aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4371 for aarch64_multilib in ${aarch64_multilibs}; do
4372 case ${aarch64_multilib} in
4374 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4375 Upgrade the Assembler.])
4383 # Check if we have binutils support for relocations types needed by -fpic
4384 gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,
4387 ldr x0, [[x2, #:gotpage_lo15:globalsym]]
4388 ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4389 [Define if your assembler supports relocs needed by -fpic.])])
4390 # Enable Branch Target Identification Mechanism and Return Address
4391 # Signing by default.
4392 AC_ARG_ENABLE(standard-branch-protection,
4394 AS_HELP_STRING([--enable-standard-branch-protection],
4395 [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4396 AS_HELP_STRING([--disable-standard-branch-protection],
4397 [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4402 tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4407 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4408 Valid choices are 'yes' and 'no'.])
4413 # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4414 AC_ARG_ENABLE(fix-cortex-a53-835769,
4416 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4417 [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4418 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4419 [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4424 tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4429 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4430 Valid choices are 'yes' and 'no'.])
4436 # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4437 AC_ARG_ENABLE(fix-cortex-a53-843419,
4439 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4440 [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4441 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4442 [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4447 tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4452 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4453 Valid choices are 'yes' and 'no'.])
4461 # All TARGET_ABI_OSF targets.
4462 alpha*-*-linux* | alpha*-*-*bsd*)
4463 gcc_GAS_CHECK_FEATURE([explicit relocation support],
4464 gcc_cv_as_alpha_explicit_relocs,,
4467 extbl $3, $2, $3 !lituse_bytoff!1
4468 ldq $2, a($29) !literal!1
4469 ldq $4, b($29) !literal!2
4470 ldq_u $3, 0($2) !lituse_base!1
4471 ldq $27, f($29) !literal!5
4472 jsr $26, ($27), f !lituse_jsr!5
4473 ldah $29, 0($26) !gpdisp!3
4474 lda $0, c($29) !gprel
4475 ldah $1, d($29) !gprelhigh
4476 lda $1, d($1) !gprellow
4477 lda $29, 0($29) !gpdisp!3],,
4478 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4479 [Define if your assembler supports explicit relocations.])])
4480 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4481 gcc_cv_as_alpha_jsrdirect_relocs,,
4484 ldq $27, a($29) !literal!1
4485 jsr $26, ($27), a !lituse_jsrdirect!1],,
4486 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4487 [Define if your assembler supports the lituse_jsrdirect relocation.])])
4491 gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,
4492 [--mlink-relax], [.text],,
4493 [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4494 [Define if your avr assembler supports --mlink-relax option.])])
4496 gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,
4498 [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4499 [Define if your avr assembler supports -mrmw option.])])
4501 gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4502 gcc_cv_as_avr_mgccisr,
4508 [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4509 [Define if your avr assembler supports -mgcc-isr option.])])
4511 avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4512 # Check how default linker description file implements .rodata for
4513 # avrxmega3 (PR21472). avr-gcc assumes .rodata is *not* loaded to
4514 # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4515 AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4516 cat > conftest.s <<EOF
4517 .section .rodata,"a",@progbits
4519 ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4524 AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4525 AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4526 AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4527 if test -s conftest.nm
4529 if grep ' R xxvaryy' conftest.nm > /dev/null; then
4531 AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4532 [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4534 AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4535 echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4536 cat conftest.nm >&AS_MESSAGE_LOG_FD
4537 AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4540 AC_MSG_RESULT(test failed)
4541 echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4542 cat conftest.s >&AS_MESSAGE_LOG_FD
4543 AC_MSG_WARN([[see `config.log' for details]])
4545 rm -f conftest.s conftest.o conftest.elf conftest.nm
4547 # Check for emulation avrxmega2_flmap.
4548 AC_MSG_CHECKING(binutils for avrxmega2_flmap support (PR31124))
4549 cat > conftest.s <<EOF
4550 .section .text,"ax",@progbits
4551 ldi r16, __flmap_value_with_lock
4553 AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega2 conftest.s -o conftest.o])
4554 AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega2_flmap conftest.o -o conftest.elf])
4555 if test -s conftest.elf
4558 AC_DEFINE(HAVE_LD_AVR_AVRXMEGA2_FLMAP, 1,
4559 [Define if your linker supports emulation avrxmega2_flmap.])
4562 AC_MSG_WARN([[support for avrxmega2_flmap requires Binutils 2.42 or higher (have $avr_ld_ver)]])
4563 AC_MSG_WARN([[see `config.log' for details]])
4565 rm -f conftest.o conftest.elf
4567 # Check for emulation avrxmega4_flmap.
4568 AC_MSG_CHECKING(binutils for avrxmega4_flmap support (PR31124))
4569 AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega4 conftest.s -o conftest.o])
4570 AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega4_flmap conftest.o -o conftest.elf])
4571 if test -s conftest.elf
4574 AC_DEFINE(HAVE_LD_AVR_AVRXMEGA4_FLMAP, 1,
4575 [Define if your linker supports emulation avrxmega4_flmap.])
4578 AC_MSG_WARN([[support for avrxmega4_flmap requires Binutils 2.42 or higher (have $avr_ld_ver)]])
4579 AC_MSG_WARN([[see `config.log' for details]])
4581 rm -f conftest.s conftest.o conftest.elf
4585 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4586 gcc_cv_as_cris_no_mul_bug,
4587 [-no-mul-bug-abort], [.text],,
4588 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4589 [Define if your assembler supports the -no-mul-bug-abort option.])])
4593 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,
4595 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4596 [Define if your assembler supports -relax option.])])
4598 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4599 gcc_cv_as_sparc_gotdata_op,
4606 sethi %gdop_hix22(foo), %g1
4607 xor %g1, %gdop_lox10(foo), %g1
4608 ld [[%l7 + %g1]], %g2, %gdop(foo)],
4609 [if test x$gcc_cv_ld != x \
4610 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4611 if test x$gcc_cv_objdump != x; then
4612 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4613 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4614 gcc_cv_as_sparc_gotdata_op=no
4616 gcc_cv_as_sparc_gotdata_op=yes
4621 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4622 [Define if your assembler and linker support GOTDATA_OP relocs.])])
4624 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4625 gcc_cv_as_sparc_ua_pcrel,
4633 .uaword %r_disp32(foo)],
4634 [if test x$gcc_cv_ld != x \
4635 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4636 gcc_cv_as_sparc_ua_pcrel=yes
4639 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4640 [Define if your assembler and linker support unaligned PC relative relocs.])
4642 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4643 gcc_cv_as_sparc_ua_pcrel_hidden,
4648 .uaword %r_disp32(foo)
4649 .byte 0x32, 0x33, 0x34
4654 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4655 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4656 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4657 | grep ' 31000000 07323334' > /dev/null 2>&1; then
4658 if $gcc_cv_objdump -R conftest 2> /dev/null \
4659 | grep 'DISP32' > /dev/null 2>&1; then
4662 gcc_cv_as_sparc_ua_pcrel_hidden=yes
4666 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4667 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4668 ]) # unaligned pcrel relocs
4670 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4671 gcc_cv_as_sparc_offsetable_lo10,
4674 or %g1, %lo(ab) + 12, %g1
4675 or %g1, %lo(ab + 12), %g1],
4676 [if test x$gcc_cv_objdump != x \
4677 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4678 | grep ' 82106000 82106000' > /dev/null 2>&1; then
4679 gcc_cv_as_sparc_offsetable_lo10=yes
4681 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4682 [Define if your assembler supports offsetable %lo().])])
4684 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4685 gcc_cv_as_sparc_fmaf,
4688 .register %g2, #scratch
4689 .register %g3, #scratch
4691 fmaddd %f0, %f2, %f4, %f6
4692 addxccc %g1, %g2, %g3
4693 fsrl32 %f2, %f4, %f8
4694 fnaddd %f10, %f12, %f14],,
4695 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4696 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4698 gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4699 gcc_cv_as_sparc_sparc4,
4702 .register %g2, #scratch
4703 .register %g3, #scratch
4706 1: cwbneg %g2, %g3, 1f
4709 aes_kexpand0 %f4, %f6, %f8
4710 des_round %f38, %f40, %f42, %f44
4711 camellia_f %f54, %f56, %f58, %f60
4712 kasumi_fi_xor %f46, %f48, %f50, %f52],,
4713 [AC_DEFINE(HAVE_AS_SPARC4, 1,
4714 [Define if your assembler supports SPARC4 instructions.])])
4716 gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4717 gcc_cv_as_sparc_sparc5,
4720 .register %g2, #scratch
4721 .register %g3, #scratch
4724 fpadd8 %f0, %f2, %f4],,
4725 [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4726 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4728 gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4729 gcc_cv_as_sparc_sparc6,
4732 .register %g2, #scratch
4733 .register %g3, #scratch
4736 fpsll64x %f0, %f2, %f4],,
4737 [AC_DEFINE(HAVE_AS_SPARC6, 1,
4738 [Define if your assembler supports SPARC6 instructions.])])
4740 gcc_GAS_CHECK_FEATURE([LEON instructions],
4741 gcc_cv_as_sparc_leon,
4744 .register %g2, #scratch
4745 .register %g3, #scratch
4749 casa [[%g2]] 0xb, %g3, %g1],,
4750 [AC_DEFINE(HAVE_AS_LEON, 1,
4751 [Define if your assembler supports LEON instructions.])])
4755 i[34567]86-*-* | x86_64-*-*)
4759 # Full C++ conformance when using a shared libstdc++-v3 requires some
4760 # support from the Cygwin DLL, which in more recent versions exports
4761 # wrappers to aid in interposing and redirecting operators new, delete,
4762 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
4763 # are configuring for a version of Cygwin that exports the wrappers.
4764 if test x$host = x$target && test x$host_cpu = xi686; then
4765 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4767 # Can't check presence of libc functions during cross-compile, so
4768 # we just have to assume we're building for an up-to-date target.
4769 gcc_ac_cygwin_dll_wrappers=yes
4771 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4772 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4773 [Define if you want to generate code by default that assumes that the
4774 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4777 cygwin* | pe | mingw32*)
4778 # Recent binutils allows the three-operand form of ".comm" on PE. This
4779 # definition is used unconditionally to initialise the default state of
4780 # the target option variable that governs usage of the feature.
4781 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,,
4783 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4784 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4785 [Define if your assembler supports specifying the alignment
4786 of objects allocated using the GAS .comm command.])
4787 # Used for DWARF 2 in PE
4788 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4789 gcc_cv_as_ix86_pe_secrel32,,
4794 [if test x$gcc_cv_ld != x \
4795 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4796 gcc_cv_as_ix86_pe_secrel32=yes
4799 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4800 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4801 # Test if the assembler supports the extended form of the .section
4802 # directive that specifies section alignment. LTO support uses this,
4803 # but normally only after installation, so we warn but don't fail the
4804 # configure if LTO is enabled but the assembler does not support it.
4805 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4806 -fatal-warnings,[.section lto_test,"dr0"])
4807 if test x$gcc_cv_as_section_has_align != xyes; then
4808 case ",$enable_languages," in
4810 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4817 darwin2* | darwin19*)
4818 gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
4819 gcc_cv_as_mllvm_x86_pad_for_align,
4820 [-mllvm -x86-pad-for-align=false], [.text],,
4821 [AC_DEFINE(HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN, 1,
4822 [Define if your macOS assembler supports -mllvm -x86-pad-for-align=false.])])
4826 gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,
4827 [-xbrace_comment=no], [.text],,
4828 [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4829 [Define if your assembler supports -xbrace_comment option.])])
4831 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4832 gcc_cv_as_ix86_filds,,
4833 [filds (%ebp); fists (%ebp)],,
4834 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4835 [Define if your assembler uses filds and fists mnemonics.])])
4837 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4838 gcc_cv_as_ix86_fildq,,
4839 [fildq (%ebp); fistpq (%ebp)],,
4840 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4841 [Define if your assembler uses fildq and fistq mnemonics.])])
4843 gcc_GAS_CHECK_FEATURE([cmov syntax],
4844 gcc_cv_as_ix86_cmov_sun_syntax,,
4845 [cmovl.l %edx, %eax],,
4846 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4847 [Define if your assembler supports the Sun syntax for cmov.])])
4849 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4850 gcc_cv_as_ix86_ffreep,,
4852 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4853 [Define if your assembler supports the ffreep mnemonic.])])
4855 gcc_GAS_CHECK_FEATURE([.quad directive],
4856 gcc_cv_as_ix86_quad,,
4858 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4859 [Define if your assembler supports the .quad directive.])])
4861 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4862 gcc_cv_as_ix86_sahf,,
4865 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4866 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4868 gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4869 gcc_cv_as_ix86_interunit_movq,,
4873 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4874 [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4875 [Define if your assembler supports interunit movq mnemonic.])
4877 gcc_GAS_CHECK_FEATURE([hle prefixes],
4878 gcc_cv_as_ix86_hle,,
4879 [lock xacquire cmpxchg %esi, (%ecx)],,
4880 [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4881 [Define if your assembler supports HLE prefixes.])])
4883 gcc_GAS_CHECK_FEATURE([swap suffix],
4884 gcc_cv_as_ix86_swap,,
4885 [movl.s %esp, %ebp],,
4886 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4887 [Define if your assembler supports the swap suffix.])])
4889 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4890 gcc_cv_as_ix86_diff_sect_delta,,
4898 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4899 [Define if your assembler supports the subtraction of symbols in different sections.])])
4901 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4902 gcc_cv_as_ix86_rep_lock_prefix,,
4908 lock addl %edi, (%eax,%esi)
4909 lock orl $0, (%esp)],,
4910 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4911 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4913 gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4914 gcc_cv_as_ix86_ud2,,
4916 [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4917 [Define if your assembler supports the 'ud2' mnemonic.])])
4919 # Enforce 32-bit output with gas and gld.
4920 if test x$gas = xyes; then
4921 as_ix86_gas_32_opt="--32"
4923 if echo "$ld_ver" | grep GNU > /dev/null; then
4924 if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4925 ld_ix86_gld_32_opt="-melf_i386_sol2"
4927 ld_ix86_gld_32_opt="-melf_i386"
4931 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4932 gcc_cv_as_ix86_tlsgdplt,
4933 [$as_ix86_gas_32_opt],
4934 [call tls_gd@tlsgdplt],
4935 [if test x$gcc_cv_ld != x \
4936 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4937 gcc_cv_as_ix86_tlsgdplt=yes
4940 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4941 [Define if your assembler and linker support @tlsgdplt.])])
4944 .section .tdata,"aw'$tls_section_flag'",@progbits
4946 .section .text,"ax",@progbits
4947 call tls_ld@tlsldmplt'
4949 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4950 gcc_cv_as_ix86_tlsldmplt,
4951 [$as_ix86_gas_32_opt],
4953 [if test x$gcc_cv_ld != x \
4954 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4955 gcc_cv_as_ix86_tlsldmplt=yes
4958 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4959 [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4960 [Define to 1 if your assembler and linker support @tlsldmplt.])
4963 .section .text,"ax",@progbits
4965 .type _start, @function
4967 leal value@tlsldm(%ebx), %eax
4968 call ___tls_get_addr@plt
4970 .section .tdata,"aw'$tls_section_flag'",@progbits
4971 .type value, @object
4973 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4974 gcc_cv_as_ix86_tlsldm,
4975 [$as_ix86_gas_32_opt],
4977 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4978 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4979 if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4980 || dis conftest 2>/dev/null | grep nop > /dev/null; then
4981 gcc_cv_as_ix86_tlsldm=yes
4985 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4986 [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4987 [Define to 1 if your assembler and linker support @tlsldm.])
4998 gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4999 gcc_cv_as_ix86_got32x,
5000 [$as_ix86_gas_32_opt],
5002 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
5003 && test x$gcc_cv_readelf != x \
5004 && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
5005 | grep R_386_GOT32X > /dev/null 2>&1 \
5006 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
5007 if $gcc_cv_objdump -dw conftest 2>&1 \
5008 | grep 0xffffff > /dev/null 2>&1; then
5009 gcc_cv_as_ix86_got32x=no
5011 gcc_cv_as_ix86_got32x=yes
5015 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
5016 [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
5017 [Define 0/1 if your assembler and linker support @GOT.])
5019 # Check if gas and gld support "addq %r23,foo@GOTTPOFF(%rip), %r15"
5020 # with R_X86_64_CODE_6_GOTTPOFF relocation.
5021 if echo "$ld_ver" | grep GNU > /dev/null; then
5022 if $gcc_cv_ld -V 2>/dev/null | grep elf_x86_64_sol2 > /dev/null; then
5023 ld_ix86_gld_64_opt="-melf_x86_64_sol2"
5025 ld_ix86_gld_64_opt="-melf_x86_64"
5028 # Enforce 64-bit output with gas and gld.
5029 if test x$gas = xyes; then
5030 as_ix86_gas_64_opt="--64"
5035 .type _start, @function
5037 addq %r23,foo@GOTTPOFF(%rip), %r15
5038 .section .tdata,"awT",@progbits
5042 gcc_GAS_CHECK_FEATURE([R_X86_64_CODE_6_GOTTPOFF reloc],
5043 gcc_cv_as_x86_64_code_6_gottpoff,
5044 [$as_ix86_gas_64_opt],
5046 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
5047 && test x$gcc_cv_readelf != x \
5048 && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
5049 | grep R_X86_64_CODE_6_GOTTPOFF > /dev/null 2>&1 \
5050 && $gcc_cv_ld $ld_ix86_gld_64_opt -o conftest conftest.o > /dev/null 2>&1; then
5051 if $gcc_cv_objdump -dw conftest 2>&1 \
5052 | grep "add \+\$0xf\+8,%r23,%r15" > /dev/null 2>&1; then
5053 gcc_cv_as_x86_64_code_6_gottpoff=yes
5055 gcc_cv_as_x86_64_code_6_gottpoff=no
5059 AC_DEFINE_UNQUOTED(HAVE_AS_R_X86_64_CODE_6_GOTTPOFF,
5060 [`if test x"$gcc_cv_as_x86_64_code_6_gottpoff" = xyes; then echo 1; else echo 0; fi`],
5061 [Define 0/1 if your assembler and linker support R_X86_64_CODE_6_GOTTPOFF.])
5063 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
5064 gcc_cv_as_ix86_gotoff_in_data,
5065 [$as_ix86_gas_32_opt],
5071 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
5072 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
5073 [Define true if the assembler supports '.long foo@GOTOFF'.])
5076 .section .text,"ax",@progbits
5078 .type _start, @function
5080 leal ld@tlsldm(%ecx), %eax
5081 call *___tls_get_addr@GOT(%ecx)
5082 leal gd@tlsgd(%ecx), %eax
5083 call *___tls_get_addr@GOT(%ecx)
5085 .section .tdata,"aw'$tls_section_flag'",@progbits
5093 gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
5094 gcc_cv_as_ix86_tls_get_addr_via_got,
5095 [$as_ix86_gas_32_opt],
5097 [if test x$gcc_cv_ld != x \
5098 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
5099 gcc_cv_as_ix86_tls_get_addr_via_got=yes
5102 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
5103 [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
5104 [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
5108 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
5109 gcc_cv_as_ia64_ltoffx_ldxmov_relocs,,
5111 addl r15 = @ltoffx(x#), gp
5113 ld8.mov r16 = [[r15]], x#
5115 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
5116 [Define if your assembler supports ltoffx and ldxmov relocations.])])
5124 gcc_GAS_CHECK_FEATURE([.machine directive support],
5125 gcc_cv_as_machine_directive,,
5126 [ .machine ppc7400])
5127 if test x$gcc_cv_as_machine_directive != xyes; then
5128 echo "*** This target requires an assembler supporting \".machine\"" >&2
5129 echo you can get it from: https://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
5130 test x$build = x$target && exit 1
5136 *-*-aix*) conftest_s=' .machine "pwr5"
5139 *-*-darwin*) conftest_s=' .text
5141 *) conftest_s=' .machine power4
5146 gcc_GAS_CHECK_FEATURE([mfcr field support],
5147 gcc_cv_as_powerpc_mfcrf,,
5149 [AC_DEFINE(HAVE_AS_MFCRF, 1,
5150 [Define if your assembler supports mfcr field.])])
5153 *-*-aix*) conftest_s=' .machine "pwr10"
5156 *-*-darwin*) conftest_s=' .text
5158 *) conftest_s=' .machine power10
5163 gcc_GAS_CHECK_FEATURE([htm support on Power10],
5164 gcc_cv_as_power10_htm,,
5166 [AC_DEFINE(HAVE_AS_POWER10_HTM, 1,
5167 [Define if your assembler supports htm insns on power10.])])
5170 *-*-aix*) conftest_s=' .csect .text[[PR]]
5172 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
5176 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
5177 *) conftest_s=' .text
5179 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
5182 gcc_GAS_CHECK_FEATURE([rel16 relocs],
5183 gcc_cv_as_powerpc_rel16, -a32,
5185 [AC_DEFINE(HAVE_AS_REL16, 1,
5186 [Define if your assembler supports R_PPC_REL16 relocs.])])
5189 *-*-aix*) conftest_s=' .machine "pwr7"
5192 *) conftest_s=' .machine power7
5197 gcc_GAS_CHECK_FEATURE([vector-scalar support],
5198 gcc_cv_as_powerpc_vsx, -a32,
5200 [AC_DEFINE(HAVE_AS_VSX, 1,
5201 [Define if your assembler supports VSX instructions.])])
5203 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5204 gcc_cv_as_powerpc_gnu_attribute,,
5205 [.gnu_attribute 4,1],,
5206 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5207 [Define if your assembler supports .gnu_attribute.])])
5209 gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
5210 gcc_cv_as_powerpc_entry_markers,-a64 --fatal-warnings,
5211 [ .reloc .,R_PPC64_ENTRY; nop],,
5212 [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
5213 [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
5215 gcc_GAS_CHECK_FEATURE([plt sequence marker support],
5216 gcc_cv_as_powerpc_pltseq_markers,-a32 --fatal-warnings,
5217 [ .reloc .,R_PPC_PLTSEQ; nop],,
5218 [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
5219 [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
5223 gcc_GAS_CHECK_FEATURE([AIX .ref support],
5225 [ .csect stuff[[rw]]
5231 [AC_DEFINE(HAVE_AS_REF, 1,
5232 [Define if your assembler supports .ref])])
5234 gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
5235 gcc_cv_as_aix_dwloc,,
5240 [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
5241 [Define if your assembler supports AIX debug frame section label reference.])])
5247 gcc_GAS_CHECK_FEATURE([explicit relocation support: %pcrel_hi/%pcrel_lo],
5248 gcc_cv_as_mips_explicit_relocs_pcrel,,
5249 [ lui $4,%pcrel_hi(foo)],,
5250 [AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_PCREL,
5251 [Define if assembler supports %pcrel_hi/%pcrel_lo.])])
5253 if test x$gcc_cv_as_mips_explicit_relocs_pcrel = xno; then \
5254 gcc_GAS_CHECK_FEATURE([explicit relocation support: %gp_rel],
5255 gcc_cv_as_mips_explicit_relocs,,
5256 [ lw $4,%gp_rel(foo)($4)],,
5257 [AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_BASE,
5258 [Define if assembler supports %reloc.])])
5260 gcc_cv_as_mips_explicit_relocs=yes
5263 if test x$gcc_cv_as_mips_explicit_relocs = xno; then \
5264 AC_DEFINE(MIPS_EXPLICIT_RELOCS, MIPS_EXPLICIT_RELOCS_NONE,
5265 [Define if assembler supports %reloc.])
5268 gcc_GAS_CHECK_FEATURE([-mno-shared support],
5269 gcc_cv_as_mips_no_shared,[-mno-shared], [nop],,
5270 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
5271 [Define if the assembler understands -mno-shared.])])
5273 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5274 gcc_cv_as_mips_gnu_attribute,,
5275 [.gnu_attribute 4,1],,
5276 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5277 [Define if your assembler supports .gnu_attribute.])])
5279 gcc_GAS_CHECK_FEATURE([.module support],
5280 gcc_cv_as_mips_dot_module,[-32],
5283 [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
5284 [Define if your assembler supports .module.])])
5285 if test x$gcc_cv_as_mips_dot_module = xno \
5286 && test x$with_fp_32 != x; then
5288 [Requesting --with-fp-32= requires assembler support for .module.])
5291 gcc_GAS_CHECK_FEATURE([.micromips support],
5292 gcc_cv_as_micromips_support,[--fatal-warnings],
5294 [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
5295 [Define if your assembler supports the .set micromips directive])])
5297 gcc_GAS_CHECK_FEATURE([.dtprelword support],
5298 gcc_cv_as_mips_dtprelword,,
5299 [.section .tdata,"awT",@progbits
5303 .dtprelword x+0x8000],,
5304 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5305 [Define if your assembler supports .dtprelword.])])
5307 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
5308 gcc_cv_as_mips_dspr1_mult,,
5318 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
5319 [Define if your assembler supports DSPR1 mult.])])
5321 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
5322 gcc_cv_as_ld_jalr_reloc=no
5323 if test $gcc_cv_as_mips_explicit_relocs = yes; then
5324 if test $in_tree_ld = yes ; then
5325 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
5326 && test $in_tree_ld_is_elf = yes; then
5327 gcc_cv_as_ld_jalr_reloc=yes
5329 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
5330 echo ' .ent x' > conftest.s
5331 echo 'x: lw $2,%got_disp(y)($3)' >> conftest.s
5332 echo ' lw $25,%call16(y)($28)' >> conftest.s
5333 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
5334 echo '1: jalr $25' >> conftest.s
5335 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
5336 echo '1: jalr $25' >> conftest.s
5337 echo ' .end x' >> conftest.s
5338 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
5339 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
5340 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
5341 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
5342 gcc_cv_as_ld_jalr_reloc=yes
5348 if test $gcc_cv_as_ld_jalr_reloc = yes; then
5349 if test x$target_cpu_default = x; then
5350 target_cpu_default=MASK_RELAX_PIC_CALLS
5352 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
5355 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
5357 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
5358 [gcc_cv_ld_mips_personality_relaxation],
5359 [gcc_cv_ld_mips_personality_relaxation=no
5360 if test $in_tree_ld = yes ; then
5361 if test "$gcc_cv_gld_major_version" -eq 2 \
5362 -a "$gcc_cv_gld_minor_version" -ge 21 \
5363 -o "$gcc_cv_gld_major_version" -gt 2; then
5364 gcc_cv_ld_mips_personality_relaxation=yes
5366 elif test x$gcc_cv_as != x \
5367 -a x$gcc_cv_ld != x \
5368 -a x$gcc_cv_readelf != x ; then
5369 cat > conftest.s <<EOF
5371 .cfi_personality 0x80,indirect_ptr
5378 .section .data,"aw",@progbits
5382 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
5383 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
5384 if $gcc_cv_readelf -d conftest 2>&1 \
5385 | grep TEXTREL > /dev/null 2>&1; then
5387 elif $gcc_cv_readelf --relocs conftest 2>&1 \
5388 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
5391 gcc_cv_ld_mips_personality_relaxation=yes
5395 rm -f conftest.s conftest.o conftest])
5396 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
5397 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
5398 [Define if your linker can relax absolute .eh_frame personality
5399 pointers into PC-relative form.])
5402 gcc_GAS_CHECK_FEATURE([-mnan= support],
5405 [AC_DEFINE(HAVE_AS_NAN, 1,
5406 [Define if the assembler understands -mnan=.])])
5407 if test x$gcc_cv_as_mips_nan = xno \
5408 && test x$with_nan != x; then
5410 [Requesting --with-nan= requires assembler support for -mnan=])
5414 # Earlier GAS versions generically support .gnu_attribute, but the
5415 # msp430 assembler will not do anything with it.
5416 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5417 gcc_cv_as_msp430_gnu_attribute,,
5418 [.gnu_attribute 4,1],,
5419 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5420 [Define if your assembler supports .gnu_attribute.])])
5421 gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5422 gcc_cv_as_msp430_mspabi_attribute,,
5423 [.mspabi_attribute 4,2],,
5424 [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5425 [Define if your assembler supports .mspabi_attribute.])])
5426 if test x$enable_newlib_nano_formatted_io = xyes; then
5427 AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5428 configured with --enable-newlib-nano-formatted-io.])
5432 # Versions 2.33 and earlier lacked support for the %gotoff relocation
5433 # syntax that is documented in the ABI specification.
5434 gcc_GAS_CHECK_FEATURE([support for %gotoff relocations in constant data],
5435 gcc_cv_as_nios2_gotoff_relocation,,
5438 .long %gotoff(foo)],,
5439 [AC_DEFINE(HAVE_AS_NIOS2_GOTOFF_RELOCATION, 1,
5440 [Define if your assembler supports %gotoff relocation syntax.])])
5443 gcc_GAS_CHECK_FEATURE([.attribute support],
5444 gcc_cv_as_riscv_attribute,,
5445 [.attribute stack_align,4],,
5446 [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5447 [Define if your assembler supports .attribute.])])
5448 gcc_GAS_CHECK_FEATURE([-misa-spec= support],
5449 gcc_cv_as_riscv_isa_spec,
5451 [AC_DEFINE(HAVE_AS_MISA_SPEC, 1,
5452 [Define if the assembler understands -misa-spec=.])])
5453 gcc_GAS_CHECK_FEATURE([-march=rv32i_zifencei support],
5454 gcc_cv_as_riscv_march_zifencei,
5455 [-march=rv32i_zifencei2p0],,,
5456 [AC_DEFINE(HAVE_AS_MARCH_ZIFENCEI, 1,
5457 [Define if the assembler understands -march=rv*_zifencei.])])
5458 gcc_GAS_CHECK_FEATURE([-march=rv32i_zaamo_zalrsc support],
5459 gcc_cv_as_riscv_march_zaamo_zalrsc,
5460 [-march=rv32i_zaamo_zalrsc],,,
5461 [AC_DEFINE(HAVE_AS_MARCH_ZAAMO_ZALRSC, 1,
5462 [Define if the assembler understands -march=rv*_zaamo_zalrsc.])])
5463 gcc_GAS_CHECK_FEATURE([-march=rv32i_b support],
5464 gcc_cv_as_riscv_march_b,
5466 [AC_DEFINE(HAVE_AS_MARCH_B, 1,
5467 [Define if the assembler understands -march=rv*_b.])])
5470 gcc_GAS_CHECK_FEATURE([.dtprelword support],
5471 gcc_cv_as_loongarch_dtprelword, [2,18,0],,
5472 [.section .tdata,"awT",@progbits
5476 .dtprelword x+0x8000],,
5477 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5478 [Define if your assembler supports .dtprelword.])])
5479 gcc_GAS_CHECK_FEATURE([explicit relocation support],
5480 gcc_cv_as_loongarch_explicit_relocs,,
5481 [a:pcalau12i $t0,%pc_hi20(a)],,
5482 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
5483 [Define if your assembler supports explicit relocation.])])
5484 gcc_GAS_CHECK_FEATURE([call36 relocation support],
5485 gcc_cv_as_loongarch_call36,,
5486 [pcaddu18i $r1, %call36(a)
5488 [AC_DEFINE(HAVE_AS_SUPPORT_CALL36, 1,
5489 [Define if your assembler supports call36 relocation.])])
5490 gcc_GAS_CHECK_FEATURE([eh_frame pcrel encoding support],
5491 gcc_cv_as_loongarch_eh_frame_pcrel_encoding_support,,
5493 .cfi_personality 0x9b,a
5496 [AC_DEFINE(HAVE_AS_EH_FRAME_PCREL_ENCODING_SUPPORT, 1,
5497 [Define if your assembler supports eh_frame pcrel encoding.])])
5498 gcc_GAS_CHECK_FEATURE([-mrelax option], gcc_cv_as_loongarch_relax,
5499 [-mrelax], [.text],,
5500 [AC_DEFINE(HAVE_AS_MRELAX_OPTION, 1,
5501 [Define if your assembler supports -mrelax option.])])
5502 gcc_GAS_CHECK_FEATURE([conditional branch relaxation support],
5503 gcc_cv_as_loongarch_cond_branch_relax,
5510 [AC_DEFINE(HAVE_AS_COND_BRANCH_RELAXATION, 1,
5511 [Define if your assembler supports conditional branch relaxation.])])
5512 gcc_GAS_CHECK_FEATURE([tls le relaxation support],
5513 gcc_cv_as_loongarch_tls_le_relaxation_support,,
5514 [lu12i.w $t0,%le_hi20_r(a)],,
5515 [AC_DEFINE(HAVE_AS_TLS_LE_RELAXATION, 1,
5516 [Define if your assembler supports tls le relocation.])])
5519 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5520 gcc_cv_as_s390_gnu_attribute,,
5521 [.gnu_attribute 8,1],,
5522 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5523 [Define if your assembler supports .gnu_attribute.])])
5524 gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5525 gcc_cv_as_s390_machine_machinemode,,
5530 [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5531 [Define if your assembler supports .machine and .machinemode.])])
5532 gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5533 gcc_cv_as_s390_architecture_modifiers,,
5534 [ .machine z13+vx ],,
5535 [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5536 [Define if your assembler supports architecture modifiers.])])
5537 gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5538 gcc_cv_as_s390_vector_loadstore_alignment_hints,,
5539 [ vl %v24,0(%r15),3 ],,
5540 [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5541 [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5542 gcc_GAS_CHECK_FEATURE([vector load/store alignment hints on z13],
5543 gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13, [-mzarch -march=z13],
5544 [ vl %v24,0(%r15),3 ],,
5545 [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13, 1,
5546 [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument on z13.])])
5551 # Mips, LoongArch and HP-UX need the GNU assembler.
5552 # Linux on IA64 might be able to use the Intel assembler.
5555 mips*-*-* | loongarch*-*-* | *-*-hpux* )
5556 if test x$gas_flag = xyes \
5557 || test x"$host" != x"$build" \
5558 || test ! -x "$gcc_cv_as" \
5559 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5562 echo "*** This configuration requires the GNU assembler" >&2
5568 # AMD GCN needs the LLVM assembler and linker.
5569 # Test that LLVM is at least 13.0.1.
5572 AC_MSG_CHECKING(llvm assembler version)
5573 gcc_cv_as_version="unknown"
5574 if test x$gcc_cv_as != x; then
5575 gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([[0-9]]\)/\1/p' || echo error`
5576 case "$gcc_cv_as_version" in
5577 13.0.[[1-9]]*) ;; # 13.0.1+
5578 13.[[1-9]]*) ;; # 13.1+
5579 1[[4-9]]*) ;; # 14..19
5580 [[2-9]][[0-9]]*) ;; # 20..99
5581 [[1-9]][[0-9]][[0-9]]*) ;; # 100+
5582 error) AC_MSG_ERROR([cannot determine LLVM version]) ;;
5583 *) AC_MSG_ERROR([LLVM 13.0.1 or later is required (found LLVM $gcc_cv_as_version)]) ;;
5586 AC_MSG_RESULT([$gcc_cv_as_version, ok])
5592 gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions],
5593 gcc_cv_as_arm_option_extensions,
5594 [-march=armv8.1-m.main+mve],
5599 [AC_DEFINE(HAVE_GAS_ARM_EXTENDED_ARCH, 1,
5600 [Define if your Arm assembler permits context-specific feature extensions.])])
5603 # ??? Not all targets support dwarf2 debug_line, even within a version
5604 # of gas. Moreover, we need to emit a valid instruction to trigger any
5605 # info to the output file. So, as supported targets are added to gas 2.11,
5606 # add some instruction here to (also) show we expect this might work.
5607 # ??? Once 2.11 is released, probably need to add first known working
5608 # version to the per-target configury.
5610 aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | loongarch | m32c \
5611 | m68k | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5612 | visium | xstormy16 | xtensa | ft32)
5622 if test x"$insn" != x; then
5624 .file 1 \"conftest.s\"
5627 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5628 gcc_cv_as_dwarf2_debug_line,,
5630 [if test x$gcc_cv_objdump != x \
5631 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5632 | grep debug_line > /dev/null 2>&1; then
5633 gcc_cv_as_dwarf2_debug_line=yes
5634 elif test x$gcc_cv_otool != x \
5635 && $gcc_cv_otool -l conftest.o 2> /dev/null \
5636 | grep debug_line > /dev/null 2>&1; then
5637 gcc_cv_as_dwarf2_debug_line=yes
5640 # The .debug_line file table must be in the exact order that
5641 # we specified the files, since these indices are also used
5642 # by DW_AT_decl_file. Approximate this test by testing if
5643 # the assembler bitches if the same index is assigned twice.
5644 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5645 gcc_cv_as_dwarf2_file_buggy,,
5649 if test $gcc_cv_as_dwarf2_debug_line = yes \
5650 && test $gcc_cv_as_dwarf2_file_buggy = no; then
5651 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5652 [Define if your assembler supports dwarf2 .file/.loc directives,
5653 and preserves file table indices exactly as given.])
5655 if test $gcc_cv_as_leb128 = yes; then
5657 .file 1 \"conftest.s\"
5658 .loc 1 3 0 view .LVU1
5664 gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5665 gcc_cv_as_dwarf2_debug_view,,
5667 [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5668 [Define if your assembler supports views in dwarf2 .loc directives.])])
5672 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5673 gcc_cv_as_gdwarf2_flag,
5674 [--gdwarf2], [$insn],,
5675 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5676 [Define if your assembler supports the --gdwarf2 option.])])
5678 gcc_GAS_CHECK_FEATURE([--gdwarf-5 option],
5679 gcc_cv_as_gdwarf_5_flag,
5680 [--gdwarf-5], [$insn],
5681 [if test x$gcc_cv_objdump != x \
5682 && $gcc_cv_objdump -Wi conftest.o 2>&1 \
5683 | grep DW_TAG_compile_unit > /dev/null 2>&1; then
5684 gcc_cv_as_gdwarf_5_flag=yes;
5685 fi],[AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
5686 [Define if your assembler supports the --gdwarf-5 option.])])
5689 win32 | pe | cygwin* | mingw32*)
5690 section_flags=\"dr\"
5691 function_type=".def foo; .scl 2; .type 32; .endef"
5694 section_flags=\"\",%progbits
5695 function_type=".type foo, %function"
5696 function_size=".size foo, .-foo";;
5698 dwarf4_debug_info_size=0x46
5699 dwarf4_high_pc_form=7
5700 dwarf4_debug_aranges_size=0x2c
5702 for dwarf4_addr_size in 8 4; do
5718 .section .debug_info,$section_flags
5720 .4byte $dwarf4_debug_info_size
5722 .4byte .Ldebug_abbrev0
5723 .byte 0x$dwarf4_addr_size
5725 .ascii \"GNU C17\\0\"
5729 .${dwarf4_addr_size}byte .Ltext0
5730 .${dwarf4_addr_size}byte .Letext0-.Ltext0
5731 .4byte .Ldebug_line0
5737 .${dwarf4_addr_size}byte .LFB0
5738 .${dwarf4_addr_size}byte .LFE0-.LFB0
5742 .section .debug_abbrev,$section_flags
5758 .byte 0x$dwarf4_high_pc_form
5779 .byte 0x$dwarf4_high_pc_form
5785 .section .debug_aranges,$section_flags
5786 .4byte $dwarf4_debug_aranges_size
5788 .4byte .Ldebug_info0
5793 .${dwarf4_addr_size}byte .Ltext0
5794 .${dwarf4_addr_size}byte .Letext0-.Ltext0
5795 .${dwarf4_addr_size}byte 0
5796 .${dwarf4_addr_size}byte 0
5797 .section .debug_line,$section_flags
5799 .4byte .LELT0-.LSLT0
5802 .4byte .LELTP0-.LASLTP0
5830 .byte 0x$dwarf4_line_sz
5832 .${dwarf4_addr_size}byte .LM1
5837 .byte 0x$dwarf4_line_sz
5839 .${dwarf4_addr_size}byte .LM2
5844 .byte 0x$dwarf4_line_sz
5846 .${dwarf4_addr_size}byte .Letext0
5851 .section .debug_str,$section_flags
5855 if test $dwarf4_addr_size = 4; then
5856 gcc_GAS_CHECK_FEATURE([assembly of compiler generated 32-bit .debug_line],
5857 gcc_cv_as_debug_line_32_flag,,
5859 [dwarf4_success=yes])
5861 gcc_GAS_CHECK_FEATURE([assembly of compiler generated 64-bit .debug_line],
5862 gcc_cv_as_debug_line_64_flag,,
5864 [dwarf4_success=yes])
5866 if test $dwarf4_success = yes; then
5868 gcc_GAS_CHECK_FEATURE([--gdwarf-4 not refusing compiler generated .debug_line],
5869 gcc_cv_as_dwarf_4_debug_line_flag,
5870 [--gdwarf-4], [$conftest_s],,
5871 [dwarf4_success=yes])
5874 dwarf4_debug_info_size=0x36
5875 dwarf4_high_pc_form=6
5876 dwarf4_debug_aranges_size=0x1c
5880 if test $dwarf4_success = yes; then
5898 gcc_GAS_CHECK_FEATURE([--gdwarf-4 with the APP marker],
5899 gcc_cv_as_dwarf_4_app_flag,
5900 [--gdwarf-4], [$conftest_s],, [dwarf4_success=yes])
5903 if test $dwarf4_success = yes; then
5913 gcc_GAS_CHECK_FEATURE([working --gdwarf-4/--gdwarf-5 for all sources],
5914 gcc_cv_as_working_gdwarf_n_flag,
5918 if test x$gcc_cv_objdump != x \
5919 && $gcc_cv_objdump -W conftest.o 2>&1 \
5920 | grep conftest.s > /dev/null 2>&1; then
5921 gcc_cv_as_working_gdwarf_n_flag=no
5923 gcc_cv_as_working_gdwarf_n_flag=yes
5925 changequote([,])dnl])
5926 if test $gcc_cv_as_working_gdwarf_n_flag = yes; then
5927 AC_DEFINE(HAVE_AS_WORKING_DWARF_N_FLAG, 1,
5928 [Define if your assembler supports --gdwarf-4/--gdwarf-5 even with
5929 compiler generated .debug_line.])
5933 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5934 gcc_cv_as_debug_prefix_map_flag,
5935 [--debug-prefix-map /a=/b], [$insn],,
5936 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5937 [Define if your assembler supports the --debug-prefix-map option.])])
5940 gcc_GAS_CHECK_FEATURE([compressed debug sections],
5941 gcc_cv_as_compress_debug,,,
5942 [# gas compiled without zlib cannot compress debug sections and warns
5943 # about it, but still exits successfully. So check for this, too.
5944 if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5946 gcc_cv_as_compress_debug=0
5947 elif $gcc_cv_as --compress-debug-sections=zlib -o conftest.o conftest.s > /dev/null 2>&1
5949 gcc_cv_as_compress_debug=1
5950 gcc_cv_as_compress_debug_option="--compress-debug-sections"
5951 gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5952 # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
5953 if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
5955 gcc_cv_as_compress_debug=2
5958 gcc_cv_as_compress_debug=0
5960 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5961 [Define to the level of your assembler's compressed debug section support.])
5962 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5963 [Define to the assembler option to enable compressed debug sections.])
5964 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5965 [Define to the assembler option to disable compressed debug sections.])
5967 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,,
5969 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5970 [Define if your assembler supports .lcomm with an alignment field.])])
5972 if test x$with_sysroot = x && test x$host = x$target \
5973 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5974 && test "$prefix" != "NONE"; then
5975 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5976 [Define to PREFIX/include if cpp should also search that directory.])
5979 # Determine the version of glibc, if any, used on the target.
5980 AC_MSG_CHECKING([for target glibc version])
5981 AC_ARG_WITH([glibc-version],
5982 [AS_HELP_STRING([--with-glibc-version=M.N],
5983 [assume GCC used with glibc version M.N or later])], [
5984 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5985 glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5986 glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5988 AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5990 glibc_version_major=0
5991 glibc_version_minor=0
5992 [if test -f $target_header_dir/features.h \
5993 && glibc_version_major_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+[0-9]' $target_header_dir/features.h` \
5994 && glibc_version_minor_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+[0-9]' $target_header_dir/features.h`; then
5995 glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[ ]*//'`
5996 glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[ ]*//'`
5998 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5999 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
6000 [GNU C Library major version number used on the target, or 0.])
6001 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
6002 [GNU C Library minor version number used on the target, or 0.])
6004 AC_ARG_ENABLE(gnu-unique-object,
6005 [AS_HELP_STRING([--enable-gnu-unique-object],
6006 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
6007 [case $enable_gnu_unique_object in
6009 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
6010 Valid choices are 'yes' and 'no'.]) ;;
6012 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,,
6013 [.type foo, '$target_type_format_char'gnu_unique_object],,
6014 # We need to unquote above to to use the definition from config.gcc.
6015 # Also check for ld.so support, i.e. glibc 2.11 or higher.
6016 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
6018 if test x$enable_gnu_unique_object = xyes; then
6019 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
6020 [Define if your assembler supports @gnu_unique_object.])
6023 AC_CACHE_CHECK([assembler for tolerance to line number 0],
6024 [gcc_cv_as_line_zero],
6025 [gcc_cv_as_line_zero=no
6026 if test "x$gcc_cv_as" != x; then
6027 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
6028 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
6029 test "x`cat conftest.out`" = x
6031 gcc_cv_as_line_zero=yes
6033 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
6034 cat conftest.s >&AS_MESSAGE_LOG_FD
6035 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
6036 cat conftest.out >&AS_MESSAGE_LOG_FD
6038 rm -f conftest.o conftest.s conftest.out
6040 if test "x$gcc_cv_as_line_zero" = xyes; then
6041 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
6042 [Define if the assembler won't complain about a line such as # 0 "" 2.])
6045 AC_MSG_CHECKING(support for thin archives)
6046 thin_archive_support=no
6047 echo 'int main (void) { return 0; }' > conftest.c
6048 if ($AR --version | sed 1q | grep "GNU ar" \
6049 && $CC $CFLAGS -c conftest.c \
6050 && $AR rcT conftest.a conftest.o \
6051 && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
6052 thin_archive_support=yes
6054 rm -f conftest.c conftest.o conftest.a conftest
6055 AC_MSG_RESULT($thin_archive_support)
6056 AC_SUBST(thin_archive_support)
6058 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
6059 gcc_cv_ld_eh_frame_hdr=no
6060 if test $in_tree_ld = yes ; then
6061 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 \
6062 && test $in_tree_ld_is_elf = yes; then
6063 gcc_cv_ld_eh_frame_hdr=yes
6065 elif test x$gcc_cv_ld != x; then
6066 if echo "$ld_ver" | grep GNU > /dev/null; then
6067 # Check if linker supports --eh-frame-hdr option
6068 if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
6069 gcc_cv_ld_eh_frame_hdr=yes
6074 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
6075 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
6076 gcc_cv_ld_eh_frame_hdr=yes
6082 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
6083 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
6084 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
6085 [Define if your linker supports .eh_frame_hdr.])
6087 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
6089 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
6090 gcc_cv_ld_eh_frame_ciev3=no
6091 if test $in_tree_ld = yes ; then
6092 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 \
6093 && test $in_tree_ld_is_elf = yes; then
6094 gcc_cv_ld_eh_frame_ciev3=yes
6096 elif test x$gcc_cv_ld != x; then
6097 if echo "$ld_ver" | grep GNU > /dev/null; then
6098 gcc_cv_ld_eh_frame_ciev3=yes
6099 if test 0"$ld_date" -lt 20040513; then
6100 if test -n "$ld_date"; then
6101 # If there was date string, but was earlier than 2004-05-13, fail
6102 gcc_cv_ld_eh_frame_ciev3=no
6103 elif test "$ld_vers_major" -lt 2; then
6104 gcc_cv_ld_eh_frame_ciev3=no
6105 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
6106 gcc_cv_ld_eh_frame_ciev3=no
6112 # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
6113 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
6114 gcc_cv_ld_eh_frame_ciev3=yes
6120 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
6121 [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
6122 [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
6123 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
6125 AC_MSG_CHECKING(linker position independent executable support)
6127 if test $in_tree_ld = yes ; then
6129 # Full PIE support on Solaris was only introduced in gld 2.26.
6130 *-*-solaris2*) gcc_gld_pie_min_version=26 ;;
6131 *) gcc_gld_pie_min_version=15 ;;
6133 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 \
6134 && test $in_tree_ld_is_elf = yes; then
6137 elif test x$gcc_cv_ld != x; then
6138 # Check if linker supports -pie option
6139 if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
6143 if echo "$ld_ver" | grep GNU > /dev/null \
6144 && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
6151 *-*-solaris2.1[[1-9]]*)
6152 # Solaris 11.3 added PIE support.
6153 if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
6160 if test x"$gcc_cv_ld_pie" = xyes; then
6161 AC_DEFINE(HAVE_LD_PIE, 1,
6162 [Define if your linker supports PIE option.])
6164 AC_MSG_RESULT($gcc_cv_ld_pie)
6166 AC_MSG_CHECKING(linker PIE support with copy reloc)
6167 gcc_cv_ld_pie_copyreloc=no
6168 if test $gcc_cv_ld_pie = yes ; then
6169 if test $in_tree_ld = yes ; then
6170 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
6171 gcc_cv_ld_pie_copyreloc=yes
6173 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6174 # Check if linker supports -pie option with copy reloc
6176 i?86-*-linux* | x86_64-*-linux*)
6177 cat > conftest1.s <<EOF
6180 .type a_glob, @object
6185 cat > conftest2.s <<EOF
6188 .type main, @function
6190 movl %eax, a_glob(%rip)
6193 .section .data.rel,"aw",@progbits
6198 if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6199 && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
6200 && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6201 && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
6202 gcc_cv_ld_pie_copyreloc=yes
6204 rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
6209 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
6210 [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
6211 [Define 0/1 if your linker supports -pie option with copy reloc.])
6212 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
6214 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
6215 gcc_cv_ld_eh_gc_sections=no
6216 if test $in_tree_ld = yes ; then
6217 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 \
6218 && test $in_tree_ld_is_elf = yes; then
6219 gcc_cv_ld_eh_gc_sections=yes
6221 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
6222 cat > conftest.s <<EOF
6225 .type _start, @function
6228 .size _start, .-_start
6229 .section .text.foo,"ax",@progbits
6230 .type foo, @function
6234 .section .gcc_except_table.foo,"a",@progbits
6237 .section .eh_frame,"a",@progbits
6240 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6241 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6242 | grep "gc-sections option ignored" > /dev/null; then
6243 gcc_cv_ld_eh_gc_sections=no
6244 elif $gcc_cv_objdump -h conftest 2> /dev/null \
6245 | grep gcc_except_table > /dev/null; then
6246 gcc_cv_ld_eh_gc_sections=yes
6247 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
6248 if test x$gcc_cv_as_comdat_group != xyes; then
6249 gcc_cv_ld_eh_gc_sections=no
6250 cat > conftest.s <<EOF
6253 .type _start, @function
6256 .size _start, .-_start
6257 .section .gnu.linkonce.t.foo,"ax",@progbits
6258 .type foo, @function
6262 .section .gcc_except_table.foo,"a",@progbits
6265 .section .eh_frame,"a",@progbits
6268 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6269 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6270 | grep "gc-sections option ignored" > /dev/null; then
6271 gcc_cv_ld_eh_gc_sections=no
6272 elif $gcc_cv_objdump -h conftest 2> /dev/null \
6273 | grep gcc_except_table > /dev/null; then
6274 gcc_cv_ld_eh_gc_sections=yes
6280 rm -f conftest.s conftest.o conftest
6284 # ??? This apparently exposes a binutils bug with PC-relative relocations.
6285 gcc_cv_ld_eh_gc_sections=no
6288 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
6289 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
6290 [Define if your linker supports garbage collection of
6291 sections in presence of EH frames.])
6293 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
6295 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
6296 gcc_cv_ld_eh_gc_sections_bug=no
6297 if test $in_tree_ld = yes ; then
6298 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 \
6299 && test $in_tree_ld_is_elf = yes; then
6300 gcc_cv_ld_eh_gc_sections_bug=yes
6302 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
6303 gcc_cv_ld_eh_gc_sections_bug=yes
6304 cat > conftest.s <<EOF
6307 .type _start, @function
6310 .size _start, .-_start
6311 .section .text.startup.foo,"ax",@progbits
6312 .type foo, @function
6316 .section .gcc_except_table.foo,"a",@progbits
6319 .section .eh_frame,"a",@progbits
6322 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6323 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6324 | grep "gc-sections option ignored" > /dev/null; then
6326 elif $gcc_cv_objdump -h conftest 2> /dev/null \
6327 | grep gcc_except_table > /dev/null; then
6328 gcc_cv_ld_eh_gc_sections_bug=no
6331 rm -f conftest.s conftest.o conftest
6333 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
6334 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
6335 [Define if your linker has buggy garbage collection of
6336 sections support when .text.startup.foo like sections are used.])
6338 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
6340 AC_MSG_CHECKING(linker for compressed debug sections)
6341 # GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26.
6342 if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
6343 gcc_cv_ld_compress_debug=1
6344 gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6345 # Detect zstd debug section compression support
6346 if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
6347 gcc_cv_ld_compress_debug=2
6353 # Introduced in Solaris 11.2.
6354 if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
6355 gcc_cv_ld_compress_debug=1
6356 gcc_cv_ld_compress_debug_option="-z compress-sections"
6358 gcc_cv_ld_compress_debug=0
6362 # Assume linkers other than GNU ld don't support compessed debug
6364 gcc_cv_ld_compress_debug=0
6369 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
6370 [Define to the level of your linker's compressed debug section support.])
6371 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
6372 [Define to the linker option to enable compressed debug sections.])
6373 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
6375 if test x"$ld64_flag" = x"yes"; then
6377 # Set defaults for possibly untestable items.
6378 gcc_cv_ld64_export_dynamic=0
6379 gcc_cv_ld64_platform_version=0
6380 gcc_cv_ld64_demangle=0
6382 if test "$build" = "$host"; then
6388 # On Darwin, because of FAT library support, it is often possible to execute
6389 # exes from compatible archs even when the host differs from the build system.
6390 case "$build","$host" in
6391 x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
6396 # If the configurer specified a minimum ld64 version to be supported, then use
6397 # that to determine feature support.
6398 if test x"${gcc_cv_ld64_version}" != x; then
6399 AC_MSG_CHECKING(ld64 specified version)
6400 gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
6401 AC_MSG_RESULT($gcc_cv_ld64_major)
6402 if test "$gcc_cv_ld64_major" -ge 97; then
6403 gcc_cv_ld64_demangle=1
6405 if test "$gcc_cv_ld64_major" -ge 236; then
6406 gcc_cv_ld64_export_dynamic=1
6408 if test "$gcc_cv_ld64_major" -ge 512; then
6409 gcc_cv_ld64_platform_version=1
6411 elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
6412 # If the version was not specified, try to find it.
6413 AC_MSG_CHECKING(linker version)
6414 if test x"${gcc_cv_ld64_version}" = x; then
6415 gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | $EGREP 'ld64|dyld' \
6416 | sed -e 's/.*ld64-//' -e 's/.*dyld-//'| awk '{print $1}'`
6418 AC_MSG_RESULT($gcc_cv_ld64_version)
6420 AC_MSG_CHECKING(linker for -demangle support)
6421 gcc_cv_ld64_demangle=1
6422 if $gcc_cv_ld -demangle < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6423 gcc_cv_ld64_demangle=0
6425 AC_MSG_RESULT($gcc_cv_ld64_demangle)
6427 AC_MSG_CHECKING(linker for -export_dynamic support)
6428 gcc_cv_ld64_export_dynamic=1
6429 if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6430 gcc_cv_ld64_export_dynamic=0
6432 AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
6434 AC_MSG_CHECKING(linker for -platform_version support)
6435 gcc_cv_ld64_platform_version=1
6436 if $gcc_cv_ld -platform_version macos 10.5 0.0 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6437 gcc_cv_ld64_platform_version=0
6439 AC_MSG_RESULT($gcc_cv_ld64_platform_version)
6442 if test x"${gcc_cv_ld64_version}" != x; then
6443 AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
6444 [Define to ld64 version.])
6447 AC_DEFINE_UNQUOTED(LD64_HAS_DEMANGLE, $gcc_cv_ld64_demangle,
6448 [Define to 1 if ld64 supports '-demangle'.])
6450 AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
6451 [Define to 1 if ld64 supports '-export_dynamic'.])
6453 AC_DEFINE_UNQUOTED(LD64_HAS_PLATFORM_VERSION, $gcc_cv_ld64_platform_version,
6454 [Define to 1 if ld64 supports '-platform_version'.])
6457 if test x"$dsymutil_flag" = x"yes"; then
6459 # If the user specified a dsymutil path, then we will already have the
6460 # version string, otherwise, pick it up.
6461 if test x"$gcc_cv_dsymutil" = x; then
6462 AC_MSG_WARN([dsymutil is a required tool for this system, but not found])
6463 dsymutil_vers="tool unspecified"
6464 elif test x"$dsymutil_vers" = x; then
6465 dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
6468 dsymutil_temp=`echo $dsymutil_vers | sed 1q`
6469 AC_MSG_CHECKING(dsymutil version "$dsymutil_temp")
6470 if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
6471 dsymutil_kind=DWARFUTILS
6472 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([[0-9\.]]*\).*/\1/'`
6473 elif echo $dsymutil_temp | grep clang- > /dev/null; then
6475 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([[0-9\.]]*\).*/\1/'`
6476 elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
6478 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([[0-9\.]]*\).*/\1/'`
6480 dsymutil_kind=DET_UNKNOWN
6483 dsymutil_major=`expr "$dsymutil_vers" : '\([[0-9]]*\)'`
6484 dsymutil_minor=`expr "$dsymutil_vers" : '[[0-9]]*\.\([[0-9]]*\)'`
6485 dsymutil_tiny=`expr "$dsymutil_vers" : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
6486 if test x"${dsymutil_minor}" = x; then
6489 if test x"${dsymutil_tiny}" = x; then
6492 AC_DEFINE_UNQUOTED(DSYMUTIL_VERSION, [$dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}],
6493 [Define to the dsymutil version.])
6494 AC_MSG_RESULT($dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} )
6498 win32 | pe | cygwin* | mingw32*)
6499 AC_MSG_CHECKING(broken PE linker dwarf5 support)
6500 gcc_cv_ld_broken_pe_dwarf5=yes
6501 if test $in_tree_ld = yes ; then
6502 if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6503 $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
6504 && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6505 $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
6506 gcc_cv_ld_broken_pe_dwarf5=no
6509 if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6510 && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
6511 gcc_cv_ld_broken_pe_dwarf5=no
6514 if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
6515 AC_DEFINE(HAVE_LD_BROKEN_PE_DWARF5, 1,
6516 [Define if the PE linker has broken DWARF 5 support.])
6518 AC_MSG_RESULT($gcc_cv_ld_broken_pe_dwarf5)
6520 AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
6521 gcc_cv_ld_disable_dynamicbase=no
6522 if test $in_tree_ld = yes; then
6523 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 \
6524 gcc_cv_ld_disable_dynamicbase=yes
6527 if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
6528 gcc_cv_ld_disable_dynamicbase=yes
6531 if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
6532 AC_DEFINE(HAVE_LD_PE_DISABLE_DYNAMICBASE, 1,
6533 [Define if the PE linker supports --disable-dynamicbase option.])
6535 AC_MSG_RESULT($gcc_cv_ld_disable_dynamicbase)
6543 AC_CACHE_CHECK(linker --as-needed support,
6544 gcc_cv_ld_as_needed,
6545 [gcc_cv_ld_as_needed=no
6546 gcc_cv_ld_as_needed_option='--as-needed'
6547 gcc_cv_ld_no_as_needed_option='--no-as-needed'
6548 if test $in_tree_ld = yes ; then
6549 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 \
6550 && test $in_tree_ld_is_elf = yes; then
6551 gcc_cv_ld_as_needed=yes
6552 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
6553 gcc_cv_ld_as_needed_option='--push-state --as-needed'
6554 gcc_cv_ld_no_as_needed_option='--pop-state'
6557 elif test x$gcc_cv_ld != x; then
6558 # Check if linker supports --as-needed and --no-as-needed options
6559 if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
6560 gcc_cv_ld_as_needed=yes
6561 if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
6562 && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
6563 && echo "$ld_ver" | grep GNU > /dev/null \
6564 && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
6565 # Use these options only when both ld.bfd and ld.gold support
6566 # --push-state/--pop-state, which unfortunately wasn't added
6568 gcc_cv_ld_as_needed_option='--push-state --as-needed'
6569 gcc_cv_ld_no_as_needed_option='--pop-state'
6572 case "$target:$gnu_ld" in
6574 # Solaris 2 ld always supports -z ignore/-z record. Prefer the native
6576 gcc_cv_ld_as_needed=yes
6577 gcc_cv_ld_as_needed_option="-z ignore"
6578 gcc_cv_ld_no_as_needed_option="-z record"
6582 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
6583 # dl_iterate_phdr, i.e. since Solaris 11.
6585 *-*-solaris2.1[[1-9]]*)
6587 i?86-*-* | x86_64-*-*)
6588 if echo "$ld_ver" | grep GNU > /dev/null; then
6589 # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
6590 gcc_cv_ld_as_needed=no
6596 gcc_cv_ld_as_needed=no
6600 if test x"$gcc_cv_ld_as_needed" = xyes; then
6601 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
6602 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
6603 AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
6604 [Define to the linker option to ignore unused dependencies.])
6605 AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
6606 [Define to the linker option to keep unused dependencies.])
6609 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
6610 saved_LDFLAGS="$LDFLAGS"
6611 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
6612 LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
6613 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6614 [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
6616 LDFLAGS="$saved_LDFLAGS"
6617 if test "x$gcc_cv_ld_clearcap" = xyes; then
6618 AC_DEFINE([HAVE_LD_CLEARCAP], 1,
6619 [Define if the linker supports clearing hardware capabilities via mapfile.])
6620 AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
6622 AC_MSG_RESULT($gcc_cv_ld_clearcap)
6628 emul_name="-melf32lppc"
6631 emul_name="-melf32ppc"
6634 AC_CACHE_CHECK(linker .gnu.attributes long double support,
6636 [gcc_cv_ld_ppc_attr=no
6637 if test x"$ld_is_gold" = xyes; then
6638 gcc_cv_ld_ppc_attr=yes
6639 elif test $in_tree_ld = yes ; then
6640 if test "$gcc_cv_gld_major_version" -eq 2 \
6641 -a "$gcc_cv_gld_minor_version" -ge 28 \
6642 -o "$gcc_cv_gld_major_version" -gt 2; then
6643 gcc_cv_ld_ppc_attr=yes
6645 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6646 # check that merging the long double .gnu_attribute doesn't warn
6647 cat > conftest1.s <<EOF
6650 cat > conftest2.s <<EOF
6653 if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6654 && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6655 && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
6656 && test ! -s conftest.err; then
6657 gcc_cv_ld_ppc_attr=yes
6659 rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
6662 if test x$gcc_cv_ld_ppc_attr = xyes; then
6663 AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
6664 [Define if your PowerPC linker has .gnu.attributes long double support.])
6669 case "$target:$tm_file" in
6670 powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
6673 emul_name="-melf64lppc"
6676 emul_name="-melf64ppc"
6679 emul_name="-melf64lppc_fbsd"
6682 emul_name="-melf64ppc_fbsd"
6685 AC_CACHE_CHECK(linker support for omitting dot symbols,
6686 gcc_cv_ld_no_dot_syms,
6687 [gcc_cv_ld_no_dot_syms=no
6688 if test x"$ld_is_gold" = xyes; then
6689 gcc_cv_ld_no_dot_syms=yes
6690 elif test $in_tree_ld = yes ; then
6691 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
6692 gcc_cv_ld_no_dot_syms=yes
6694 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6695 cat > conftest1.s <<EOF
6699 cat > conftest2.s <<EOF
6700 .section ".opd","aw"
6705 .quad .LEfoo,.TOC.@tocbase,0
6711 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6712 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6713 && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
6714 gcc_cv_ld_no_dot_syms=yes
6716 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
6719 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
6720 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
6721 [Define if your PowerPC64 linker only needs function descriptor syms.])
6724 AC_CACHE_CHECK(linker large toc support,
6725 gcc_cv_ld_large_toc,
6726 [gcc_cv_ld_large_toc=no
6727 if test x"$ld_is_gold" = xyes; then
6728 gcc_cv_ld_large_toc=yes
6729 elif test $in_tree_ld = yes ; then
6730 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
6731 gcc_cv_ld_large_toc=yes
6733 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6734 cat > conftest.s <<EOF
6735 .section ".tbss","awT",@nobits
6741 addis 9,13,ie0@got@tprel@ha
6742 ld 9,ie0@got@tprel@l(9)
6744 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6745 && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
6746 gcc_cv_ld_large_toc=yes
6748 rm -f conftest conftest.o conftest.s
6751 if test x"$gcc_cv_ld_large_toc" = xyes; then
6752 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6753 [Define if your PowerPC64 linker supports a large TOC.])
6756 AC_CACHE_CHECK(linker toc pointer alignment,
6757 gcc_cv_ld_toc_align,
6758 [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
6759 cat > conftest.s <<EOF
6764 .section .data.rel.ro,"aw",@progbits
6769 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6770 && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
6771 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)) }'`
6773 rm -f conftest conftest.o conftest.s
6776 if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
6777 AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
6778 [Define to .TOC. alignment forced by your linker.])
6785 AC_CACHE_CHECK(linker large toc support,
6786 gcc_cv_ld_large_toc,
6787 [gcc_cv_ld_large_toc=no
6788 if test x$gcc_cv_as != x ; then
6789 cat > conftest.s <<EOF
6799 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
6800 gcc_cv_ld_large_toc=yes
6802 rm -f conftest conftest.o conftest.s
6805 if test x"$gcc_cv_ld_large_toc" = xyes; then
6806 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6807 [Define if your PowerPC64 linker supports a large TOC.])
6812 AC_CACHE_CHECK(linker --build-id support,
6814 [gcc_cv_ld_buildid=no
6815 if test $in_tree_ld = yes ; then
6816 if test "$gcc_cv_gld_major_version" -eq 2 -a \
6817 "$gcc_cv_gld_minor_version" -ge 18 -o \
6818 "$gcc_cv_gld_major_version" -gt 2 \
6819 && test $in_tree_ld_is_elf = yes; then
6820 gcc_cv_ld_buildid=yes
6822 elif test x$gcc_cv_ld != x; then
6823 if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
6824 gcc_cv_ld_buildid=yes
6827 if test x"$gcc_cv_ld_buildid" = xyes; then
6828 AC_DEFINE(HAVE_LD_BUILDID, 1,
6829 [Define if your linker supports --build-id.])
6832 AC_ARG_ENABLE(linker-build-id,
6833 [AS_HELP_STRING([--enable-linker-build-id],
6834 [compiler will always pass --build-id to linker])],
6836 enable_linker_build_id=no)
6838 if test x"$enable_linker_build_id" = xyes; then
6839 if test x"$gcc_cv_ld_buildid" = xyes; then
6840 AC_DEFINE(ENABLE_LD_BUILDID, 1,
6841 [Define if gcc should always pass --build-id to linker.])
6843 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
6847 # In binutils 2.21, GNU ld gained support for new emulations fully
6848 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
6849 AC_CACHE_CHECK(linker *_sol2 emulation support,
6850 gcc_cv_ld_sol2_emulation,
6851 [gcc_cv_ld_sol2_emulation=no
6852 if test $in_tree_ld = yes ; then
6853 if test "$gcc_cv_gld_major_version" -eq 2 -a \
6854 "$gcc_cv_gld_minor_version" -ge 21 -o \
6855 "$gcc_cv_gld_major_version" -gt 2 \
6856 && test $in_tree_ld_is_elf = yes; then
6857 gcc_cv_ld_sol2_emulation=yes
6859 elif test x$gcc_cv_ld != x; then
6860 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6861 grep _sol2 > /dev/null; then
6862 gcc_cv_ld_sol2_emulation=yes
6865 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6866 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6867 [Define if your linker supports the *_sol2 emulations.])
6870 AC_CACHE_CHECK(linker --sysroot support,
6872 [gcc_cv_ld_sysroot=no
6873 if test $in_tree_ld = yes ; then
6874 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
6875 gcc_cv_ld_sysroot=yes
6877 elif test x$gcc_cv_ld != x; then
6878 if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6879 gcc_cv_ld_sysroot=yes
6882 if test x"$gcc_cv_ld_sysroot" = xyes; then
6883 AC_DEFINE(HAVE_LD_SYSROOT, 1,
6884 [Define if your linker supports --sysroot.])
6889 # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6890 AC_CACHE_CHECK([system-provided CRTs on Solaris],
6891 gcc_cv_solaris_crts,
6892 [gcc_cv_solaris_crts=no
6893 if test x$host != x$target; then
6894 if test "x$with_sysroot" = xyes; then
6895 target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6897 target_sysroot="${with_sysroot}"
6900 target_libdir="$target_sysroot/usr/lib"
6901 # At the time they were added, gcrt1.o became a symlink for backwards
6902 # compatibility on x86, while crt1.o was added on sparc, so check for that.
6904 i?86-*-solaris2* | x86_64-*-solaris2*)
6905 if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6908 if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6913 if test x$gcc_cv_solaris_crts = xyes; then
6914 AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6915 [Define if the system-provided CRTs are present on Solaris.])
6918 AC_ARG_ENABLE(libssp,
6919 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6920 [case "${enableval}" in
6924 AC_MSG_ERROR([unknown libssp setting $enableval])
6928 # Test for stack protector support in target C library.
6929 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6930 gcc_cv_libc_provides_ssp,
6931 [gcc_cv_libc_provides_ssp=no
6932 if test "x$enable_libssp" = "xno"; then
6933 gcc_cv_libc_provides_ssp=yes
6934 elif test "x$enable_libssp" = "xyes"; then
6935 gcc_cv_libc_provides_ssp=no
6939 # All versions of musl provide stack protector
6940 gcc_cv_libc_provides_ssp=yes;;
6941 *-*-linux* | *-*-kfreebsd*-gnu)
6942 # glibc 2.4 and later provides __stack_chk_fail and
6943 # either __stack_chk_guard, or TLS access to stack guard canary.
6944 GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6945 [if test -f $target_header_dir/features.h \
6946 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
6947 $target_header_dir/features.h > /dev/null; then
6948 if $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
6949 $target_header_dir/features.h > /dev/null && \
6950 test -f $target_header_dir/bits/uClibc_config.h && \
6951 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
6952 $target_header_dir/bits/uClibc_config.h > /dev/null; then
6953 gcc_cv_libc_provides_ssp=yes
6955 # all versions of Bionic support stack protector
6956 elif test -f $target_header_dir/sys/cdefs.h \
6957 && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
6958 $target_header_dir/sys/cdefs.h > /dev/null; then
6959 gcc_cv_libc_provides_ssp=yes
6963 # Avoid complicated tests (see
6964 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6965 # simply assert that glibc does provide this, which is true for all
6966 # realistically usable GNU/Hurd configurations.
6967 # All supported versions of musl provide it as well
6968 gcc_cv_libc_provides_ssp=yes;;
6969 *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6970 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6971 [echo "no __stack_chk_fail on this target"])
6973 *) gcc_cv_libc_provides_ssp=no ;;
6977 if test x$gcc_cv_libc_provides_ssp = xyes; then
6978 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6979 [Define if your target C library provides stack protector support])
6982 # Check whether --enable-default-ssp was given.
6983 AC_ARG_ENABLE(default-ssp,
6984 [AS_HELP_STRING([--enable-default-ssp],
6985 [enable Stack Smashing Protection as default])],[
6986 if test x$gcc_cv_libc_provides_ssp = xyes; then
6988 ia64*-*-*) enable_default_ssp=no ;;
6989 *) enable_default_ssp=$enableval ;;
6992 enable_default_ssp=no
6994 enable_default_ssp=no)
6995 if test x$enable_default_ssp = xyes ; then
6996 AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6997 [Define if your target supports default stack protector and it is enabled.])
6999 AC_SUBST([enable_default_ssp])
7001 # Test for <sys/sdt.h> on the target.
7002 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
7003 AC_CACHE_CHECK([sys/sdt.h in the target C library], [gcc_cv_sys_sdt_h], [
7005 if test -f $target_header_dir/sys/sdt.h; then
7006 gcc_cv_sys_sdt_h=yes
7009 AS_IF([test x$gcc_cv_sys_sdt_h = xyes], [
7010 AC_DEFINE([HAVE_SYS_SDT_H], [1],
7011 [Define if your target C library provides sys/sdt.h])
7014 # Check if TFmode long double should be used by default or not.
7015 # Some glibc targets used DFmode long double, but with glibc 2.4
7016 # and later they can use TFmode.
7018 powerpc*-*-linux* | \
7022 AC_ARG_WITH(long-double-128,
7023 [AS_HELP_STRING([--with-long-double-128],
7024 [use 128-bit long double by default])],
7025 gcc_cv_target_ldbl128="$with_long_double_128", [
7027 s390*-*-linux-musl*)
7028 gcc_cv_target_ldbl128=yes
7030 powerpc*-*-linux-musl*)
7031 gcc_cv_target_ldbl128=no
7034 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
7035 [gcc_cv_target_ldbl128=no
7036 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
7037 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
7038 && gcc_cv_target_ldbl128=yes
7046 if test x$gcc_cv_target_ldbl128 = xyes; then
7047 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
7048 [Define if TFmode long double should be the default])
7051 # Check if TFmode long double target should use the IBM extended double or IEEE
7052 # 128-bit floating point formats if long doubles are 128-bits long. The long
7053 # double type can only be switched on powerpc64 bit Linux systems where VSX is
7054 # supported. Other PowerPC systems do not build the IEEE 128-bit emulator in
7056 AC_ARG_WITH([long-double-format],
7057 [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
7058 [Specify whether PowerPC long double uses IEEE or IBM format])],[
7059 case "$target:$with_long_double_format" in
7060 powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
7063 powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
7064 # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
7066 power7 | power8 | power9 | power1*)
7070 AC_MSG_ERROR([Configuration option --with-long-double-format is only \
7071 supported if the default cpu is power7 or newer])
7072 with_long_double_format=""
7076 powerpc64*-*-linux*:*)
7077 AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
7078 with_long_double_format=""
7081 AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
7082 on 64-bit PowerPC VSX Linux systems])
7083 with_long_double_format=""
7088 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
7089 # values in the TCB. Currently, only GLIBC 2.23 and later support this.
7090 gcc_cv_libc_provides_hwcap_in_tcb=no
7093 GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
7096 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
7097 AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
7098 [Define if your target C Library provides the AT_HWCAP value in the TCB])
7101 # Check if the target LIBC handles PT_GNU_STACK.
7102 gcc_cv_libc_gnustack=unknown
7104 mips*-*-linux-musl*)
7105 gcc_cv_libc_gnustack=yes
7108 GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
7111 if test x$gcc_cv_libc_gnustack = xyes; then
7112 AC_DEFINE(TARGET_LIBC_GNUSTACK, 1,
7113 [Define if your target C Library properly handles PT_GNU_STACK])
7116 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
7117 gcc_cv_target_dl_iterate_phdr=unknown
7120 gcc_cv_target_dl_iterate_phdr=yes
7122 *-*-dragonfly* | *-*-freebsd*)
7123 if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
7124 gcc_cv_target_dl_iterate_phdr=yes
7126 gcc_cv_target_dl_iterate_phdr=no
7130 gcc_cv_target_dl_iterate_phdr=yes
7133 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
7134 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
7135 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
7136 [Define if your target C library provides the `dl_iterate_phdr' function.])
7138 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
7140 # We no longer support different GC mechanisms. Emit an error if
7141 # the user configures with --with-gc.
7143 [AS_HELP_STRING([--with-gc={page,zone}],
7144 [this option is not supported anymore. It used to choose
7145 the garbage collection mechanism to use with the compiler])],
7146 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
7149 # Libraries to use on the host. This will normally be set by the top
7150 # level Makefile. Here we simply capture the value for our Makefile.
7151 if test -z "${HOST_LIBS+set}"; then
7156 # Use the system's zlib library.
7159 dnl Very limited version of automake's enable-maintainer-mode
7161 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
7162 dnl maintainer-mode is disabled by default
7163 AC_ARG_ENABLE(maintainer-mode,
7164 [AS_HELP_STRING([--enable-maintainer-mode],
7165 [enable make rules and dependencies not useful
7166 (and sometimes confusing) to the casual installer])],
7167 maintainer_mode=$enableval,
7170 AC_MSG_RESULT($maintainer_mode)
7172 if test "$maintainer_mode" = "yes"; then
7179 dnl Variables for tags utilities; copied from automake 1.16.4+'s init.m4
7180 if test -z "$CTAGS"; then
7184 if test -z "$ETAGS"; then
7188 if test -z "$CSCOPE"; then
7193 dnl Whether to prevent multiple front-ends from linking at the same time
7195 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
7196 AC_ARG_ENABLE(link-mutex,
7197 [AS_HELP_STRING([--enable-link-mutex],
7198 [avoid linking multiple front-ends at once to avoid thrashing
7199 on the build machine])],
7200 do_link_mutex=$enableval,
7202 AC_MSG_RESULT($do_link_mutex)
7204 if test "$do_link_mutex" = "yes"; then
7206 AC_MSG_WARN([--enable-link-mutex is deprecated and will be removed in the next release, use --enable-link-serialization instead])
7210 AC_SUBST(DO_LINK_MUTEX)
7212 dnl Whether to prevent multiple GCC front-ends from linking at the same time
7214 AC_MSG_CHECKING([whether to serialize linking of multiple front-ends])
7215 AC_ARG_ENABLE(link-serialization,
7216 [AS_HELP_STRING([--enable-link-serialization],
7217 [avoid linking multiple GCC front-ends at once using make
7218 dependencies to avoid thrashing on the build machine])],
7219 do_link_serialization=$enableval,
7220 do_link_serialization=no)
7221 AC_MSG_RESULT($do_link_serialization)
7223 case "$do_link_serialization" in
7225 DO_LINK_SERIALIZATION=1;;
7226 [[1-9]] | [[1-9]][[0-9]] | [[1-9]][[0-9]][[0-9]])
7227 DO_LINK_SERIALIZATION=$do_link_serialization;;
7229 DO_LINK_SERIALIZATION=;;
7231 AC_MSG_ERROR(bad value ${do_link_serialization} given for --enable-link-serialization) ;;
7233 AC_SUBST(DO_LINK_SERIALIZATION)
7239 # Make empty files to contain the specs and options for each language.
7240 # Then add #include lines to for a compiler that has specs and/or options.
7246 # These (without "all_") are set in each config-lang.in.
7247 # `language' must be a single word so is spelled singularly.
7250 all_outputs='Makefile'
7251 # List of language configure and makefile fragments.
7252 all_lang_configurefrags=
7254 # Additional files for gengtype
7255 all_gtfiles="$target_gtfiles"
7257 # These are the languages that are set in --enable-languages,
7258 # and are available in the GCC tree.
7259 all_selected_languages=
7261 # Add the language fragments.
7262 # Languages are added via two mechanisms. Some information must be
7263 # recorded in makefile variables, these are defined in config-lang.in.
7264 # We accumulate them and plug them into the main Makefile.
7265 # The other mechanism is a set of hooks for each of the main targets
7266 # like `clean', `install', etc.
7268 language_hooks="Make-hooks"
7270 for lang in ${srcdir}/*/config-lang.in
7273 test "$lang" = "${srcdir}/*/config-lang.in" && continue
7275 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
7276 if test "x$lang_alias" = x
7278 echo "$lang doesn't set \$language." 1>&2
7281 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
7282 subdirs="$subdirs $subdir"
7284 # $gcc_subdir is where the gcc integration files are to be found
7285 # for a language, both for internal compiler purposes (compiler
7286 # sources implementing front-end to GCC tree converters), and for
7287 # build infrastructure purposes (Make-lang.in, etc.)
7289 # This will be <subdir> (relative to $srcdir) if a line like
7290 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
7291 # is found in <langdir>/config-lang.in, and will remain <langdir>
7294 # Except for the language alias (fetched above), the regular
7295 # "config-lang.in" contents are always retrieved from $gcc_subdir,
7296 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
7297 # only this and the language alias.
7299 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
7300 if [ "$gcc_subdir" = "" ]; then
7301 gcc_subdir="$subdir"
7304 case ",$enable_languages," in
7306 all_selected_languages="$all_selected_languages $lang_alias"
7307 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
7308 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
7320 . ${srcdir}/$gcc_subdir/config-lang.in
7321 if test "x$language" = x
7323 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
7328 case ",$enable_languages," in
7331 for i in $subdir_requires; do
7332 test -f "${srcdir}/$i/config-lang.in" && continue
7340 all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
7341 if test "x$language" = xc && test -n "$all_lang_makefrags"; then
7342 # Put c/Make-lang.in fragment first to match serialization languages order.
7343 all_lang_makefrags="\$(srcdir)/$gcc_subdir/Make-lang.in $all_lang_makefrags"
7345 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
7347 if test -f $srcdir/$gcc_subdir/lang.opt; then
7348 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
7349 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
7351 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
7352 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
7354 all_languages="$all_languages $language"
7355 all_compilers="$all_compilers $compilers"
7356 all_outputs="$all_outputs $outputs"
7357 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
7358 case ",$enable_languages," in
7360 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
7362 AC_SUBST(enable_lto)
7369 for language in $all_selected_languages
7371 check_languages="$check_languages check-$language"
7375 for language in $all_selected_languages
7377 selftest_languages="$selftest_languages selftest-$language"
7380 # We link each language in with a set of hooks, reached indirectly via
7381 # lang.${target}. Only do so for selected languages.
7385 target_list="all.cross start.encap rest.encap tags \
7386 install-common install-man install-info install-dvi install-pdf \
7387 install-html dvi pdf html uninstall info man srcextra srcman srcinfo \
7388 mostlyclean clean distclean maintainer-clean install-plugin"
7390 for t in $target_list
7393 for lang in $all_selected_languages
7397 echo "lang.$t: $x" >> Make-hooks
7400 echo "ifeq (\$(DO_LINK_SERIALIZATION),)" >> Make-hooks
7401 echo "SERIAL_LIST =" >> Make-hooks
7402 echo else >> Make-hooks
7406 serialization_languages=c
7407 for lang in $all_selected_languages
7409 test $lang = c && continue
7410 if test $lang = lto; then
7411 serialization_languages="$serialization_languages lto1 lto2"
7413 serialization_languages="$serialization_languages $lang"
7416 for lang in $serialization_languages
7418 test $lang = c && continue
7419 lang_cnt=`expr $lang_cnt + 1`
7420 lang_list=" $prev$lang_list"
7423 echo "SERIAL_LIST = \$(wordlist \$(DO_LINK_SERIALIZATION),$lang_cnt,$lang_list)" >> Make-hooks
7424 echo endif >> Make-hooks
7425 echo "SERIAL_COUNT = `expr $lang_cnt + 1`" >> Make-hooks
7426 echo "INDEX.c = 0" >> Make-hooks
7428 for lang in $serialization_languages
7430 test $lang = c && continue
7431 echo "$lang.prev = \$(if \$(word $lang_cnt,\$(SERIAL_LIST)),\$(\$(word $lang_cnt,\$(SERIAL_LIST)).serial))" >> Make-hooks
7432 echo "INDEX.$lang = $lang_idx" >> Make-hooks
7433 lang_cnt=`expr $lang_cnt - 1`
7434 lang_idx=`expr $lang_idx + 1`
7438 # Option include files
7441 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
7442 option_includes="option-includes.mk"
7443 AC_SUBST_FILE(option_includes)
7451 echo "dir ." > .gdbinit
7452 echo "dir ${srcdir}" >> .gdbinit
7453 if test x$gdb_needs_out_file_path = xyes
7455 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
7457 if test "x$subdirs" != x; then
7460 echo "dir ${srcdir}/$s" >> .gdbinit
7463 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
7464 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
7466 # Put a breakpoint on __asan_report_error to help with debugging buffer
7469 *-fsanitize=address*)
7470 echo "source ${srcdir}/gdbasan.in" >> .gdbinit
7474 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
7475 AC_SUBST(gcc_tooldir)
7478 # Find a directory in which to install a shared libgcc.
7480 AC_ARG_ENABLE(version-specific-runtime-libs,
7481 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
7482 [specify that runtime libraries should be
7483 installed in a compiler-specific directory])])
7485 # Substitute configuration variables
7488 AC_SUBST(all_compilers)
7489 AC_SUBST(all_gtfiles)
7490 AC_SUBST(all_lang_configurefrags)
7491 AC_SUBST(all_lang_makefrags)
7492 AC_SUBST(all_languages)
7493 AC_SUBST(all_selected_languages)
7494 AC_SUBST(build_exeext)
7495 AC_SUBST(build_install_headers_dir)
7496 AC_SUBST(build_xm_file_list)
7497 AC_SUBST(build_xm_include_list)
7498 AC_SUBST(build_xm_defines)
7499 AC_SUBST(build_file_translate)
7500 AC_SUBST(check_languages)
7501 AC_SUBST(selftest_languages)
7502 AC_SUBST(cpp_install_dir)
7503 AC_SUBST(xmake_file)
7504 AC_SUBST(tmake_file)
7505 AC_SUBST(TM_ENDIAN_CONFIG)
7506 AC_SUBST(TM_MULTILIB_CONFIG)
7507 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
7508 AC_SUBST(extra_gcc_objs)
7509 AC_SUBST(user_headers_inc_next_pre)
7510 AC_SUBST(user_headers_inc_next_post)
7511 AC_SUBST(extra_headers_list)
7512 AC_SUBST(extra_objs)
7513 AC_SUBST(extra_programs)
7514 AC_SUBST(float_h_file)
7515 AC_SUBST(gcc_config_arguments)
7516 AC_SUBST(gcc_gxx_include_dir)
7517 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
7518 AC_SUBST(gcc_gxx_libcxx_include_dir)
7519 AC_SUBST(gcc_gxx_libcxx_include_dir_add_sysroot)
7520 AC_SUBST(host_exeext)
7521 AC_SUBST(host_xm_file_list)
7522 AC_SUBST(host_xm_include_list)
7523 AC_SUBST(host_xm_defines)
7524 AC_SUBST(out_host_hook_obj)
7526 AC_SUBST(lang_opt_files)
7527 AC_SUBST(lang_specs_files)
7528 AC_SUBST(lang_tree_files)
7529 AC_SUBST(local_prefix)
7531 AC_SUBST(objc_boehm_gc)
7533 AC_SUBST(out_object_file)
7534 AC_SUBST(common_out_file)
7535 AC_SUBST(common_out_object_file)
7536 AC_SUBST(tm_file_list)
7537 AC_SUBST(tm_include_list)
7538 AC_SUBST(tm_defines)
7539 AC_SUBST(tm_p_file_list)
7540 AC_SUBST(tm_p_include_list)
7541 AC_SUBST(tm_d_file_list)
7542 AC_SUBST(tm_d_include_list)
7543 AC_SUBST(tm_rust_file_list)
7544 AC_SUBST(tm_rust_include_list)
7545 AC_SUBST(xm_file_list)
7546 AC_SUBST(xm_include_list)
7547 AC_SUBST(xm_defines)
7548 AC_SUBST(use_gcc_stdint)
7549 AC_SUBST(c_target_objs)
7550 AC_SUBST(cxx_target_objs)
7551 AC_SUBST(fortran_target_objs)
7552 AC_SUBST(d_target_objs)
7553 AC_SUBST(rust_target_objs)
7554 AC_SUBST(target_cpu_default)
7556 AC_SUBST_FILE(language_hooks)
7559 if test x${build} = x${host} ; then
7560 if test x${host} = x${target} ; then
7561 echo "Links are now set up to build a native compiler for ${target}." 1>&2
7563 echo "Links are now set up to build a cross-compiler" 1>&2
7564 echo " from ${host} to ${target}." 1>&2
7567 if test x${host} = x${target} ; then
7568 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
7569 echo " for ${target}." 1>&2
7571 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
7572 echo " from ${host} to ${target}." 1>&2
7576 AC_ARG_VAR(GMPLIBS,[How to link GMP])
7577 AC_ARG_VAR(GMPINC,[How to find GMP include files])
7579 AC_ARG_VAR(ISLLIBS,[How to link isl])
7580 AC_ARG_VAR(ISLINC,[How to find isl include files])
7581 if test "x${ISLLIBS}" != "x" ; then
7582 AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
7586 AC_SUBST(pluginlibs)
7587 AC_SUBST(enable_plugin)
7588 if test x"$enable_plugin" = x"yes"; then
7589 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
7593 # Enable --enable-host-shared
7594 AC_ARG_ENABLE(host-shared,
7595 [AS_HELP_STRING([--enable-host-shared],
7596 [build host code as shared libraries])])
7597 AC_SUBST(enable_host_shared)
7599 # Enable --enable-host-pie
7600 AC_ARG_ENABLE(host-pie,
7601 [AS_HELP_STRING([--enable-host-pie],
7602 [build host code as PIE])])
7603 AC_SUBST(enable_host_pie)
7605 # Enable --enable-host-bind-now
7606 AC_ARG_ENABLE(host-bind-now,
7607 [AS_HELP_STRING([--enable-host-bind-now],
7608 [link host code as BIND_NOW])])
7609 AC_SUBST(enable_host_bind_now)
7611 AC_ARG_ENABLE(libquadmath-support,
7612 [AS_HELP_STRING([--disable-libquadmath-support],
7613 [disable libquadmath support for Fortran])],
7614 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
7615 ENABLE_LIBQUADMATH_SUPPORT=yes)
7616 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
7617 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
7618 [Define to 1 to enable libquadmath support])
7622 # Specify what hash style to use by default.
7623 AC_ARG_WITH([linker-hash-style],
7624 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
7625 [specify the linker hash style])],
7626 [case x"$withval" in
7628 LINKER_HASH_STYLE=sysv
7631 LINKER_HASH_STYLE=gnu
7634 LINKER_HASH_STYLE=both
7637 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
7640 [LINKER_HASH_STYLE=''])
7641 if test x"${LINKER_HASH_STYLE}" != x; then
7642 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
7643 [The linker hash style])
7646 # Specify what should be the default of -fdiagnostics-color option.
7647 AC_ARG_WITH([diagnostics-color],
7648 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
7649 [specify the default of -fdiagnostics-color option
7650 auto-if-env stands for -fdiagnostics-color=auto if
7651 GCC_COLOR environment variable is present and
7652 -fdiagnostics-color=never otherwise])],
7653 [case x"$withval" in
7655 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
7658 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
7661 DIAGNOSTICS_COLOR_DEFAULT=-1
7664 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
7667 AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
7670 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
7671 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
7672 [The default for -fdiagnostics-color option])
7674 # Specify what should be the default of -fdiagnostics-urls option.
7675 AC_ARG_WITH([diagnostics-urls],
7676 [AC_HELP_STRING([--with-diagnostics-urls={never,auto,auto-if-env,always}],
7677 [specify the default of -fdiagnostics-urls option
7678 auto-if-env stands for -fdiagnostics-urls=auto if
7679 GCC_URLS or TERM_URLS environment variable is present and
7680 -fdiagnostics-urls=never otherwise])],
7681 [case x"$withval" in
7683 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_NO
7686 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO
7689 DIAGNOSTICS_URLS_DEFAULT=-1
7692 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_YES
7695 AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-urls])
7698 [DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO])
7699 AC_DEFINE_UNQUOTED(DIAGNOSTICS_URLS_DEFAULT, $DIAGNOSTICS_URLS_DEFAULT,
7700 [The default for -fdiagnostics-urls option])
7702 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
7703 # of jit/jit-playback.cc.
7704 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
7705 echo "gcc_driver_version: ${gcc_driver_version}"
7706 cat > gcc-driver-name.h <<EOF
7707 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
7710 # Check whether --enable-default-pie was given.
7711 AC_ARG_ENABLE(default-pie,
7712 [AS_HELP_STRING([--enable-default-pie],
7713 [enable Position Independent Executable as default])],
7714 enable_default_pie=$enableval,
7715 enable_default_pie=no)
7716 if test x$enable_default_pie = xyes ; then
7717 AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
7718 [Define if your target supports default PIE and it is enabled.])
7720 AC_SUBST([enable_default_pie])
7722 # Check if -fno-PIE works.
7723 AC_CACHE_CHECK([for -fno-PIE option],
7725 [saved_CXXFLAGS="$CXXFLAGS"
7726 CXXFLAGS="$CXXFLAGS -fno-PIE"
7727 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7728 [gcc_cv_c_no_fpie=yes],
7729 [gcc_cv_c_no_fpie=no])
7730 CXXFLAGS="$saved_CXXFLAGS"])
7732 # Check if -no-pie works.
7733 AC_CACHE_CHECK([for -no-pie option],
7735 [saved_LDFLAGS="$LDFLAGS"
7736 LDFLAGS="$LDFLAGS -no-pie"
7737 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7738 [gcc_cv_no_pie=yes],
7740 LDFLAGS="$saved_LDFLAGS"])
7742 if test x$enable_host_shared = xyes; then
7744 elif test x$enable_host_pie = xyes; then
7746 elif test x$gcc_cv_c_no_fpie = xyes; then
7754 if test x$enable_host_pie = xyes; then
7756 elif test x$gcc_cv_no_pie = xyes; then
7762 if test x$enable_host_bind_now = xyes; then
7763 LD_PICFLAG="$LD_PICFLAG -Wl,-z,now"
7766 AC_SUBST([LD_PICFLAG])
7768 # Enable Intel CET on Intel CET enabled host if jit is enabled.
7769 GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
7770 case x$enable_languages in
7777 AC_SUBST(CET_HOST_FLAGS)
7779 # Check linker supports '-z bndplt'
7780 ld_bndplt_support=no
7781 AC_MSG_CHECKING(linker -z bndplt option)
7782 if test x"$ld_is_gold" = xno; then
7783 if test $in_tree_ld = yes ; then
7784 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
7785 ld_bndplt_support=yes
7787 elif test x$gcc_cv_ld != x; then
7788 # Check if linker supports -z bndplt option
7789 if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
7790 ld_bndplt_support=yes
7794 if test x"$ld_bndplt_support" = xyes; then
7795 AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
7796 [Define if your linker supports -z bndplt])
7798 AC_MSG_RESULT($ld_bndplt_support)
7800 # Check linker supports '--push-state'/'--pop-state'
7801 ld_pushpopstate_support=no
7802 AC_MSG_CHECKING(linker --push-state/--pop-state options)
7803 if test x"$ld_is_gold" = xno; then
7804 if test $in_tree_ld = yes ; then
7805 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
7806 ld_pushpopstate_support=yes
7808 elif test x$gcc_cv_ld != x; then
7809 # Check if linker supports --push-state/--pop-state options
7810 if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
7811 ld_pushpopstate_support=yes
7815 if test x"$ld_pushpopstate_support" = xyes; then
7816 AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
7817 [Define if your linker supports --push-state/--pop-state])
7819 AC_MSG_RESULT($ld_pushpopstate_support)
7821 # On s390, float_t has historically been statically defined as double for no
7822 # good reason. To comply with the C standard in the light of this definition,
7823 # gcc has evaluated float expressions in double precision when in
7824 # standards-compatible mode or when given -fexcess-precision=standard. To enable
7825 # a smooth transition towards the new model used by most architectures, where
7826 # gcc describes its behavior via the macro __FLT_EVAL_METHOD__ and glibc derives
7827 # float_t from that, this behavior can be configured with
7828 # --enable-s390-excess-float-precision. When given as enabled, that flag selects
7829 # the old model. When omitted, native builds and cross compiles that have target
7830 # libc headers will detect whether libc clamps float_t to double and in that
7831 # case maintain the old model. Otherwise, they will default to the new model.
7832 AC_ARG_ENABLE(s390-excess-float-precision,
7833 [AS_HELP_STRING([--enable-s390-excess-float-precision],
7834 [on s390 targets, evaluate float with double precision
7835 when in standards-conforming mode])],
7836 [],[enable_s390_excess_float_precision=auto])
7840 if test x"$enable_s390_excess_float_precision" = xauto; then
7841 # Can we autodetect the behavior of the target libc?
7842 if test "$target" = "$host" -a "$host" = "$build"; then
7843 enable_s390_excess_float_precision=autodetect
7844 elif test "x$with_headers" != xno; then
7845 # cross build. are target headers available?
7846 # carefully coerce the build-system compiler to use target headers
7847 saved_CXXFLAGS="$CXXFLAGS"
7848 fixed_XGCC_FLAGS_FOR_TARGET=`echo "$XGCC_FLAGS_FOR_TARGET" | sed 's/-B/-idirafter/g'`
7849 CROSS_TEST_CXXFLAGS="-nostdinc $fixed_XGCC_FLAGS_FOR_TARGET"
7850 CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7851 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7853 ]])], [enable_s390_excess_float_precision=autodetect], [])
7854 CXXFLAGS="$saved_CXXFLAGS"
7857 if test x"$enable_s390_excess_float_precision" = xautodetect; then
7858 saved_CXXFLAGS="$CXXFLAGS"
7859 if ! test "$target" = "$host" -a "$host" = "$build"; then
7860 CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7861 unset CROSS_TEST_CXXFLAGS
7863 AC_CACHE_CHECK([for glibc clamping float_t to double],
7864 gcc_cv_float_t_clamped_to_double, [
7865 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7866 #define __FLT_EVAL_METHOD__ 0
7868 int dummy[sizeof(float_t) == sizeof(double) ? 1 : -1];
7870 [gcc_cv_float_t_clamped_to_double=yes],
7871 [gcc_cv_float_t_clamped_to_double=no])])
7872 CXXFLAGS="$saved_CXXFLAGS"
7873 enable_s390_excess_float_precision="$gcc_cv_float_t_clamped_to_double"
7875 # no way to detect behavior of target libc, default to new model
7876 enable_s390_excess_float_precision=no
7880 GCC_TARGET_TEMPLATE(ENABLE_S390_EXCESS_FLOAT_PRECISION)
7881 if test x"$enable_s390_excess_float_precision" = xyes; then
7882 AC_DEFINE(ENABLE_S390_EXCESS_FLOAT_PRECISION, 1,
7883 [Define to enable evaluating float expressions with double precision in
7884 standards-compatible mode on s390 targets.])
7889 # Check if the linker supports '-z now'
7891 AC_MSG_CHECKING(linker -z now option)
7892 if test x"$ld_is_gold" = xyes; then
7894 elif test $in_tree_ld = yes ; then
7895 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
7898 elif test x$gcc_cv_ld != x; then
7899 # Check if linker supports -z now
7900 if $gcc_cv_ld --help 2>&1 | grep -- '-z now' > /dev/null; then
7904 AC_DEFINE_UNQUOTED(HAVE_LD_NOW_SUPPORT,
7905 [`if test x"$ld_now_support" = xyes; then echo 1; else echo 0; fi`],
7906 [Define 0/1 if your linker supports -z now])
7907 AC_MSG_RESULT($ld_now_support)
7909 # Check if the linker supports '-z relro'
7911 AC_MSG_CHECKING(linker -z relro option)
7912 if test x"$ld_is_gold" = xyes; then
7913 ld_relro_support=yes
7914 elif test $in_tree_ld = yes ; then
7915 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2; then
7916 ld_relro_support=yes
7918 elif test x$gcc_cv_ld != x; then
7919 # Check if linker supports -z relro
7920 if $gcc_cv_ld --help 2>&1 | grep -- '-z relro' > /dev/null; then
7921 ld_relro_support=yes
7924 AC_DEFINE_UNQUOTED(HAVE_LD_RELRO_SUPPORT,
7925 [`if test x"$ld_relro_support" = xyes; then echo 1; else echo 0; fi`],
7926 [Define 0/1 if your linker supports -z relro])
7927 AC_MSG_RESULT($ld_relro_support)
7931 # -fhardened is only supported on GNU/Linux.
7932 fhardened_support=yes
7935 fhardened_support=no
7939 AC_DEFINE_UNQUOTED(HAVE_FHARDENED_SUPPORT,
7940 [`if test x"$fhardened_support" = xyes; then echo 1; else echo 0; fi`],
7941 [Define 0/1 if -fhardened is supported])
7942 AC_MSG_RESULT($fhardened_support)
7944 # Configure the subdirectories
7945 # AC_CONFIG_SUBDIRS($subdirs)
7947 # Create the Makefile
7948 # and configure language subdirectories
7949 AC_CONFIG_FILES($all_outputs)
7951 AC_CONFIG_COMMANDS([default],
7953 case ${CONFIG_HEADERS} in
7954 *auto-host.h:config.in*)
7957 # Make sure all the subdirs exist.
7958 for d in $subdirs doc build common c-family
7960 test -d $d || mkdir $d
7963 [subdirs='$subdirs'])