2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2022 Free Software Foundation, Inc.
6 #This file is part of GCC.
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3. If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
28 AC_CONFIG_SRCDIR(gcc.cc)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
31 gcc_version=`cat $srcdir/BASE-VER`
33 # Determine the host, build, and target systems
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) ;;
241 *) gcc_gxx_libcxx_include_dir=$with_gxx_libcxx_include_dir ;;
244 # If both --with-sysroot and --with-gxx-libcxx-include-dir are passed, we
245 # check to see if the latter starts with the former and, upon success, compute
246 # gcc_gxx_libcxx_include_dir as relative to the sysroot.
247 gcc_gxx_libcxx_include_dir_add_sysroot=0
249 if test x${gcc_gxx_libcxx_include_dir} != x; then
250 AC_DEFINE(ENABLE_STDLIB_OPTION, 1,
251 [Define if the -stdlib= option should be enabled.])
253 AC_DEFINE(ENABLE_STDLIB_OPTION, 0)
255 # ??? This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
256 if test x${gcc_gxx_libcxx_include_dir} = x; then
257 if test x${enable_version_specific_runtime_libs} = xyes; then
258 gcc_gxx_libcxx_include_dir='${libsubdir}/libc++_include/c++/v1'
260 libcxx_incdir='libc++_include/c++/$(version)/v1'
261 if test x$host != x$target; then
262 libcxx_incdir="$target_alias/$libcxx_incdir"
264 gcc_gxx_libcxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libcxx_incdir"
266 elif test "${with_sysroot+set}" = set; then
267 gcc_gxx_libcxx_without_sysroot=`expr "${gcc_gxx_libcxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
268 if test "${gcc_gxx_libcxx_without_sysroot}"; then
269 gcc_gxx_libcxx_include_dir="${gcc_gxx_libcxx_without_sysroot}"
270 gcc_gxx_libcxx_include_dir_add_sysroot=1
274 AC_ARG_WITH(cpp_install_dir,
275 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
276 [install the user visible C preprocessor in DIR
277 (relative to PREFIX) as well as PREFIX/bin])],
278 [if test x$withval = xyes; then
279 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
280 elif test x$withval != xno; then
281 cpp_install_dir=$withval
284 # We would like to our source tree to be readonly. However when releases or
285 # pre-releases are generated, the flex/bison generated files as well as the
286 # various formats of manuals need to be included along with the rest of the
287 # sources. Therefore we have --enable-generated-files-in-srcdir to do
290 AC_MSG_CHECKING([whether to place generated files in the source directory])
291 dnl generated-files-in-srcdir is disabled by default
292 AC_ARG_ENABLE(generated-files-in-srcdir,
293 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
294 [put copies of generated files in source dir
295 intended for creating source tarballs for users
296 without texinfo bison or flex])],
297 generated_files_in_srcdir=$enableval,
298 generated_files_in_srcdir=no)
300 AC_MSG_RESULT($generated_files_in_srcdir)
302 if test "$generated_files_in_srcdir" = "yes"; then
309 # -------------------
310 # Find default linker
311 # -------------------
315 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
316 gnu_ld_flag="$with_gnu_ld",
321 ld64_flag=yes # Darwin can only use a ld64-compatible linker.
322 dsymutil_flag=yes # Darwin uses dsymutil to link debug.
330 # With pre-defined ld
332 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
333 DEFAULT_LINKER="$with_ld")
334 if test x"${DEFAULT_LINKER+set}" = x"set"; then
335 if test ! -x "$DEFAULT_LINKER"; then
336 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
337 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
339 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
342 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
343 [Define to enable the use of a default linker.])
346 AC_MSG_CHECKING([whether a default linker was specified])
347 if test x"${DEFAULT_LINKER+set}" = x"set"; then
348 if test x"$gnu_ld_flag" = x"no"; then
349 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
351 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
357 # With demangler in GNU ld
358 AC_ARG_WITH(demangler-in-ld,
359 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
360 demangler_in_ld="$with_demangler_in_ld",
363 # Allow the user to specify a dsymutil executable (used on Darwin only, so far)
364 AC_ARG_WITH(dsymutil,
365 [AS_HELP_STRING([--with-dsymutil], [arrange to use the specified dsymutil (full pathname)])],
366 DEFAULT_DSYMUTIL="$with_dsymutil")
369 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
370 if test ! -x "$DEFAULT_DSYMUTIL"; then
371 AC_MSG_ERROR([cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL])
373 if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
377 AC_DEFINE_UNQUOTED(DEFAULT_DSYMUTIL,"$DEFAULT_DSYMUTIL",
378 [Define to enable the use of a default debug linker.])
381 AC_MSG_CHECKING([whether a default dsymutil was specified])
382 if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
383 AC_MSG_RESULT([yes ($DEFAULT_DSYMUTIL)])
388 # ----------------------
389 # Find default assembler
390 # ----------------------
394 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
395 gas_flag="$with_gnu_as",
399 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
400 DEFAULT_ASSEMBLER="$with_as")
401 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
402 if test ! -x "$DEFAULT_ASSEMBLER"; then
403 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
404 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
407 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
408 [Define to enable the use of a default assembler.])
411 AC_MSG_CHECKING([whether a default assembler was specified])
412 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
413 if test x"$gas_flag" = x"no"; then
414 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
416 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
426 # If a non-executable a.out is present (e.g. created by GNU as above even if
427 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
428 # file, even when creating an executable, so an execution test fails.
429 # Remove possible default executable files to avoid this.
431 # FIXME: This really belongs into AC_PROG_CC and can be removed once
432 # Autoconf includes it.
433 rm -f a.out a.exe b.out
435 # Find the native compiler
438 # ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
439 # ACX_PROG_GDC([-I"$srcdir"/d])
441 # Do configure tests with the C++ compiler, since that's what we build with.
444 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
445 # optimizations to be activated explicitly by the toplevel.
448 *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" `
449 CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" ` ;;
455 # Determine PICFLAG for target gnatlib.
456 GCC_PICFLAG_FOR_TARGET
457 AC_SUBST(PICFLAG_FOR_TARGET)
459 # -------------------------
460 # Check C compiler features
461 # -------------------------
463 AC_USE_SYSTEM_EXTENSIONS
469 AC_CHECK_SIZEOF(ino_t)
470 AC_CHECK_SIZEOF(dev_t)
472 # Select the right stat being able to handle 64bit inodes, if needed.
473 if test "$enable_largefile" != no; then
474 case "$host, $build" in
475 *-*-aix*,*|*,*-*-aix*)
476 if test "$ac_cv_sizeof_ino_t" == "4" -a "$ac_cv_sizeof_dev_t" == 4; then
477 AC_DEFINE(HOST_STAT_FOR_64BIT_INODES, stat64x,
478 [Define which stat syscall is able to handle 64bit indodes.])
484 # sizeof(char) is 1 by definition.
485 AC_CHECK_SIZEOF(void *)
486 AC_CHECK_SIZEOF(short)
488 AC_CHECK_SIZEOF(long)
489 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
491 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
492 AC_MSG_ERROR([uint64_t or int64_t not found])
495 # check what underlying integer type int64_t uses
496 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
497 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
501 template <typename T> struct X { };
503 struct X<long> { typedef long t; };
504 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
505 if test "$ac_cv_int64_t_type" = "long"; then
506 AC_DEFINE(INT64_T_IS_LONG, 1,
507 [Define if int64_t uses long as underlying type.])
509 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
513 template <typename T> struct X { };
515 struct X<long long> { typedef long long t; };
516 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
519 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
520 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
522 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
523 if test $ac_cv_std_swap_in_utility = yes; then
524 AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
525 [Define if <utility> defines std::swap.])
528 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
529 # If the host compiler is affected by the bug, and we build with optimization
530 # enabled (which happens e.g. when cross-compiling), the pool allocator may
531 # get miscompiled. Use -fno-strict-aliasing to work around this problem.
532 # Since there is no reliable feature check for the presence of this bug,
533 # we simply use a GCC version number check. (This should never trigger for
534 # stages 2 or 3 of a native bootstrap.)
536 if test "$GCC" = yes; then
537 saved_CXXFLAGS="$CXXFLAGS"
539 # The following test compilation will succeed if and only if $CXX accepts
540 # -fno-strict-aliasing *and* is older than GCC 4.3.
541 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
542 AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
543 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
544 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
545 #error compiler not affected by placement new aliasing bug
548 [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
549 [AC_MSG_RESULT([no])])
551 CXXFLAGS="$saved_CXXFLAGS"
553 AC_SUBST(aliasing_flags)
557 # ---------------------
558 # Warnings and checking
559 # ---------------------
561 # Check $CC warning features (if it's GCC).
562 # We want to use -pedantic, but we don't want warnings about
566 # * C++11 narrowing conversions in { }
567 # So, we only use -pedantic if we can disable those warnings.
569 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
570 AC_ARG_ENABLE(build-format-warnings,
571 AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
572 [],[enable_build_format_warnings=yes])
573 AS_IF([test $enable_build_format_warnings = no],
574 [wf_opt=-Wno-format],[wf_opt=])
575 ACX_PROG_CXX_WARNING_OPTS(
576 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
577 [-Wcast-qual $wf_opt])),
579 ACX_PROG_CC_WARNING_OPTS(
580 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
581 [])), [c_loose_warn])
582 ACX_PROG_CXX_WARNING_OPTS(
583 m4_quote(m4_do([-Wmissing-format-attribute ],
584 [-Woverloaded-virtual])), [strict_warn])
585 ACX_PROG_CC_WARNING_OPTS(
586 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
587 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
588 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
589 [-Wno-overlength-strings])), [strict_warn])
590 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
592 # The above macros do nothing if the compiler is not GCC. However, the
593 # Makefile has more goo to add other flags, so these variables are used
594 # to enable warnings only for GCC.
597 if test "x$GCC" = "xyes"; then
598 warn_cflags='$(GCC_WARN_CFLAGS)'
599 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
601 AC_SUBST(warn_cflags)
602 AC_SUBST(warn_cxxflags)
604 # Disable exceptions and RTTI if building with g++
605 ACX_PROG_CC_WARNING_OPTS(
606 m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
609 # Enable expensive internal checks
611 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
615 AC_ARG_ENABLE(checking,
616 [AS_HELP_STRING([[--enable-checking[=LIST]]],
617 [enable expensive run-time checks. With LIST,
618 enable only specific categories of checks.
619 Categories are: yes,no,all,none,release.
620 Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
621 rtlflag,rtl,runtime,tree,valgrind,types])],
622 [ac_checking_flags="${enableval}"],[
623 # Determine the default checks.
624 if test x$is_release = x ; then
625 ac_checking_flags=yes,extra
627 ac_checking_flags=release
629 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
630 for check in release $ac_checking_flags
633 # these set all the flags to specific states
634 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
635 ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
636 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
637 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
638 ac_tree_checking=1 ; ac_valgrind_checking= ;
639 ac_types_checking=1 ;;
640 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
641 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
642 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
643 ac_rtlflag_checking= ; ac_runtime_checking= ;
644 ac_tree_checking= ; ac_valgrind_checking= ;
645 ac_types_checking= ;;
646 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
647 ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
648 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
649 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
650 ac_tree_checking=1 ; ac_valgrind_checking= ;
651 ac_types_checking=1 ;;
652 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
653 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
654 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
655 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
656 ac_tree_checking= ; ac_valgrind_checking= ;
657 ac_types_checking= ;;
658 # these enable particular checks
659 assert) ac_assert_checking=1 ;;
660 df) ac_df_checking=1 ;;
661 extra) ac_extra_checking=1 ;;
662 fold) ac_fold_checking=1 ;;
663 gc) ac_gc_checking=1 ;;
664 gcac) ac_gc_always_collect=1 ;;
665 gimple) ac_gimple_checking=1 ;;
666 misc) ac_checking=1 ;;
667 rtl) ac_rtl_checking=1 ;;
668 rtlflag) ac_rtlflag_checking=1 ;;
669 runtime) ac_runtime_checking=1 ;;
670 tree) ac_tree_checking=1 ;;
671 types) ac_types_checking=1 ;;
672 valgrind) ac_valgrind_checking=1 ;;
673 *) AC_MSG_ERROR(unknown check category $check) ;;
679 if test x$ac_checking != x ; then
680 AC_DEFINE(CHECKING_P, 1,
681 [Define to 0/1 if you want more run-time sanity checks. This one gets a grab
682 bag of miscellaneous but relatively cheap checks.])
683 nocommon_flag=-fno-common
685 AC_DEFINE(CHECKING_P, 0)
687 AC_SUBST(nocommon_flag)
688 if test x$ac_extra_checking != x ; then
689 AC_DEFINE(ENABLE_EXTRA_CHECKING, 1,
690 [Define to 0/1 if you want extra run-time checking that might affect code
693 AC_DEFINE(ENABLE_EXTRA_CHECKING, 0)
695 if test x$ac_df_checking != x ; then
696 AC_DEFINE(ENABLE_DF_CHECKING, 1,
697 [Define if you want more run-time sanity checks for dataflow.])
699 if test x$ac_assert_checking != x ; then
700 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
701 [Define if you want assertions enabled. This is a cheap check.])
703 if test x$ac_gimple_checking != x ; then
704 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
705 [Define if you want operations on GIMPLE (the basic data structure of
706 the high-level optimizers) to be checked for dynamic type safety at
707 runtime. This is moderately expensive.])
709 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
710 if test x$ac_runtime_checking != x ; then
711 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
712 [Define if you want runtime assertions enabled. This is a cheap check.])
714 if test x$ac_tree_checking != x ; then
715 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
716 [Define if you want all operations on trees (the basic data
717 structure of the front ends) to be checked for dynamic type safety
718 at runtime. This is moderately expensive.
722 if test x$ac_types_checking != x ; then
723 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
724 [Define if you want all gimple types to be verified after gimplifiation.
728 AC_SUBST(TREECHECKING)
729 if test x$ac_rtl_checking != x ; then
730 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
731 [Define if you want all operations on RTL (the basic data structure
732 of the optimizer and back end) to be checked for dynamic type safety
733 at runtime. This is quite expensive.])
735 if test x$ac_rtlflag_checking != x ; then
736 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
737 [Define if you want RTL flag accesses to be checked against the RTL
738 codes that are supported for each access macro. This is relatively
741 if test x$ac_gc_checking != x ; then
742 AC_DEFINE(ENABLE_GC_CHECKING, 1,
743 [Define if you want the garbage collector to do object poisoning and
744 other memory allocation checks. This is quite expensive.])
746 if test x$ac_gc_always_collect != x ; then
747 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
748 [Define if you want the garbage collector to operate in maximally
749 paranoid mode, validating the entire heap and collecting garbage at
750 every opportunity. This is extremely expensive.])
752 if test x$ac_fold_checking != x ; then
753 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
754 [Define if you want fold checked that it never destructs its argument.
755 This is quite expensive.])
757 valgrind_path_defines=
760 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
761 dnl # an if statement. This was the source of very frustrating bugs
762 dnl # in converting to autoconf 2.5x!
763 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
765 # It is certainly possible that there's valgrind but no valgrind.h.
766 # GCC relies on making annotations so we must have both.
767 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
768 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
769 [[#include <valgrind/memcheck.h>
770 #ifndef VALGRIND_DISCARD
771 #error VALGRIND_DISCARD not defined
773 [gcc_cv_header_valgrind_memcheck_h=yes],
774 [gcc_cv_header_valgrind_memcheck_h=no])
775 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
776 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
777 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
778 [[#include <memcheck.h>
779 #ifndef VALGRIND_DISCARD
780 #error VALGRIND_DISCARD not defined
782 [gcc_cv_header_memcheck_h=yes],
783 [gcc_cv_header_memcheck_h=no])
784 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
785 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
786 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
787 [Define if valgrind's valgrind/memcheck.h header is installed.])
789 if test $gcc_cv_header_memcheck_h = yes; then
790 AC_DEFINE(HAVE_MEMCHECK_H, 1,
791 [Define if valgrind's memcheck.h header is installed.])
794 if test x$ac_valgrind_checking != x ; then
795 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
796 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
797 if test "x$valgrind_path" = "x" \
798 || (test $have_valgrind_h = no \
799 && test $gcc_cv_header_memcheck_h = no \
800 && test $gcc_cv_header_valgrind_memcheck_h = no); then
801 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
803 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
804 valgrind_command="$valgrind_path -q"
805 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
806 [Define if you want to run subprograms and generated programs
807 through valgrind (a memory checker). This is extremely expensive.])
809 AC_SUBST(valgrind_path_defines)
810 AC_SUBST(valgrind_command)
812 # Enable code coverage collection
813 AC_ARG_ENABLE(coverage,
814 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
815 [enable compiler's code coverage collection.
816 Use to measure compiler performance and locate
817 unused parts of the compiler. With LEVEL, specify
818 optimization. Values are opt, noopt,
820 [case "${enableval}" in
822 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0 -fkeep-static-functions"
825 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2 -fkeep-static-functions"
828 # a.k.a. --disable-coverage
832 AC_MSG_ERROR(unknown coverage setting $enableval)
836 AC_SUBST(coverage_flags)
838 AC_ARG_ENABLE(gather-detailed-mem-stats,
839 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
840 [enable detailed memory allocation stats gathering])], [],
841 [enable_gather_detailed_mem_stats=no])
842 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
843 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
844 [Define to enable detailed memory allocation stats gathering.])
846 AC_ARG_ENABLE(valgrind-annotations,
847 [AS_HELP_STRING([--enable-valgrind-annotations],
848 [enable valgrind runtime interaction])], [],
849 [enable_valgrind_annotations=no])
850 if test x$enable_valgrind_annotations != xno \
851 || test x$ac_valgrind_checking != x; then
852 if (test $have_valgrind_h = no \
853 && test $gcc_cv_header_memcheck_h = no \
854 && test $gcc_cv_header_valgrind_memcheck_h = no); then
855 AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h])
857 AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
858 [Define to get calls to the valgrind runtime enabled.])
861 # -------------------------------
862 # Miscenalleous configure options
863 # -------------------------------
865 # Determine whether or not multilibs are enabled.
866 AC_ARG_ENABLE(multilib,
867 [AS_HELP_STRING([--enable-multilib],
868 [enable library support for multiple ABIs])],
869 [], [enable_multilib=yes])
870 AC_SUBST(enable_multilib)
872 # Determine whether or not multiarch is enabled.
873 AC_ARG_ENABLE(multiarch,
874 [AS_HELP_STRING([--enable-multiarch],
875 [enable support for multiarch paths])],
876 [case "${enableval}" in
877 yes|no|auto) enable_multiarch=$enableval;;
878 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
879 esac], [enable_multiarch=auto])
880 if test x${enable_multiarch} = xauto; then
881 if test x${with_native_system_header_dir} != x; then
882 ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
885 if test x$host != x$target && test "x$with_sysroot" = x; then
886 ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
890 AC_MSG_CHECKING(for multiarch configuration)
891 AC_SUBST(enable_multiarch)
892 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
894 # needed for setting the multiarch name for soft-float/hard-float ABIs
898 # default stack clash protection guard size as power of twos in bytes.
899 # Please keep these in sync with params.def.
903 # Keep the default value when the option is not used to 0, this allows us to
904 # distinguish between the cases where the user specifially set a value via
905 # configure and when the normal default value is used.
906 AC_ARG_WITH(stack-clash-protection-guard-size,
907 [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
908 [Set the default stack clash protection guard size for specific targets as a power of two in bytes.])],
909 [DEFAULT_STK_CLASH_GUARD_SIZE="$with_stack_clash_protection_guard_size"], [DEFAULT_STK_CLASH_GUARD_SIZE=0])
910 if test $DEFAULT_STK_CLASH_GUARD_SIZE -ne 0 \
911 && (test $DEFAULT_STK_CLASH_GUARD_SIZE -lt $stk_clash_min \
912 || test $DEFAULT_STK_CLASH_GUARD_SIZE -gt $stk_clash_max); then
913 AC_MSG_ERROR(m4_normalize([
914 Invalid value $DEFAULT_STK_CLASH_GUARD_SIZE for --with-stack-clash-protection-guard-size. \
915 Must be between $stk_clash_min and $stk_clash_max.]))
918 AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
919 [Define to larger than zero set the default stack clash protector size.])
921 # Enable __cxa_atexit for C++.
922 AC_ARG_ENABLE(__cxa_atexit,
923 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
926 # Enable C extension for decimal float if target supports it.
927 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
929 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
930 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
931 [Define to 1 to enable decimal float extension to C.])
933 # Use default_decimal_float for dependency.
934 enable_decimal_float=$default_decimal_float
936 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
937 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
938 [Define to 1 to specify that we are using the BID decimal floating
939 point format instead of DPD])
941 # Enable C extension for fixed-point arithmetic.
942 AC_ARG_ENABLE(fixed-point,
943 [AS_HELP_STRING([--enable-fixed-point],
944 [enable fixed-point arithmetic extension to C])],
949 enable_fixed_point=yes
953 enable_fixed_point=yes
956 enable_fixed_point=yes
959 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
960 enable_fixed_point=no
964 AC_SUBST(enable_fixed_point)
966 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
967 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
968 [Define to 1 to enable fixed-point arithmetic extension to C.])
971 # Pass with no value to take the default
972 # Pass with a value to specify a thread package
973 AC_ARG_ENABLE(threads,
974 [AS_HELP_STRING([[--enable-threads[=LIB]]],
975 [enable thread usage for target GCC,
976 using LIB thread package])],,
980 [AS_HELP_STRING([--enable-tls],
981 [enable or disable generation of tls code
982 overriding the assembler check for tls support])],
986 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
987 Valid choices are 'yes' and 'no'.]) ;;
991 AC_ARG_ENABLE(vtable-verify,
992 [AS_HELP_STRING([--enable-vtable-verify],
993 [enable vtable verification feature])],,
994 [enable_vtable_verify=no])
995 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
996 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
997 [Define 0/1 if vtable verification feature is enabled.])
999 AC_ARG_ENABLE(analyzer,
1000 [AS_HELP_STRING([--disable-analyzer],
1001 [disable -fanalyzer static analyzer])],
1002 if test x$enable_analyzer = xno; then
1008 AC_DEFINE_UNQUOTED(ENABLE_ANALYZER, $analyzer,
1009 [Define 0/1 if static analyzer feature is enabled.])
1011 AC_ARG_ENABLE(objc-gc,
1012 [AS_HELP_STRING([--enable-objc-gc],
1013 [enable the use of Boehm's garbage collector with
1014 the GNU Objective-C runtime])],
1015 if test x$enable_objc_gc = xno; then
1023 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
1024 dwarf2="$with_dwarf2",
1027 AC_ARG_ENABLE(shared,
1028 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
1030 case $enable_shared in
1034 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
1035 for pkg in $enableval; do
1036 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
1043 ], [enable_shared=yes])
1044 AC_SUBST(enable_shared)
1047 [ --disable-gcov don't provide libgcov and related host tools],
1048 [], [case $target in
1057 AC_SUBST(enable_gcov)
1060 [AS_HELP_STRING([--with-specs=SPECS],
1061 [add SPECS to driver command-line processing])],
1062 [CONFIGURE_SPECS=$withval],
1065 AC_SUBST(CONFIGURE_SPECS)
1067 ACX_PKGVERSION([GCC])
1068 ACX_BUGURL([http://sourceforge.net/tracker/?atid=100599&group_id=599&func=browse])
1070 # Allow overriding the default URL for documentation
1071 AC_ARG_WITH(documentation-root-url,
1072 AS_HELP_STRING([--with-documentation-root-url=URL],
1073 [Root for documentation URLs]),
1075 yes) AC_MSG_ERROR([documentation root URL not specified]) ;;
1076 no) AC_MSG_ERROR([documentation root URL not specified]) ;;
1077 */) DOCUMENTATION_ROOT_URL="$withval" ;;
1078 *) AC_MSG_ERROR([documentation root URL does not end with /]) ;;
1080 DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/"
1082 AC_DEFINE_UNQUOTED(DOCUMENTATION_ROOT_URL,"$DOCUMENTATION_ROOT_URL",
1083 [Define to the root for documentation URLs.])
1085 # Allow overriding the default URL for GCC changes
1086 AC_ARG_WITH(changes-root-url,
1087 AS_HELP_STRING([--with-changes-root-url=URL],
1088 [Root for GCC changes URLs]),
1090 yes) AC_MSG_ERROR([changes root URL not specified]) ;;
1091 no) AC_MSG_ERROR([changes root URL not specified]) ;;
1092 */) CHANGES_ROOT_URL="$withval" ;;
1093 *) AC_MSG_ERROR([changes root URL does not end with /]) ;;
1095 CHANGES_ROOT_URL="https://gcc.gnu.org/"
1097 AC_DEFINE_UNQUOTED(CHANGES_ROOT_URL,"$CHANGES_ROOT_URL",
1098 [Define to the root for URLs about GCC changes.])
1100 # Sanity check enable_languages in case someone does not run the toplevel
1101 # configure # script.
1102 AC_ARG_ENABLE(languages,
1103 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
1104 [case ,${enable_languages}, in
1106 # go safe -- we cannot be much sure without the toplevel
1108 # analysis of which target libs are present and usable
1112 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
1117 enable_languages=c,${enable_languages}
1120 [enable_languages=c])
1122 # If top-level libada has been disabled, then wire in install-gnatlib
1123 # invocation with `make install', so that one can build and install
1124 # the library manually with `make -C gcc all gnatlib gnattools install'.
1125 if test x"$enable_libada" = xno; then
1126 gnat_install_lib=gnat-install-lib
1130 AC_SUBST(gnat_install_lib)
1132 if test x"$enable_as_accelerator_for" != x; then
1133 AC_DEFINE(ACCEL_COMPILER, 1,
1134 [Define if this compiler should be built as the offload target compiler.])
1135 enable_as_accelerator=yes
1138 # In this case we expect offload compiler to be built as native, so we
1139 # need to rename the driver to avoid clashes with host's drivers.
1140 program_transform_name="s&^&${target}-&" ;;
1142 sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
1143 program_transform_name=`echo $program_transform_name | sed $sedscript`
1144 accel_dir_suffix=/accel/${target_noncanonical}
1145 real_target_noncanonical=${enable_as_accelerator_for}
1147 AC_SUBST(enable_as_accelerator)
1148 AC_SUBST(real_target_noncanonical)
1149 AC_SUBST(accel_dir_suffix)
1151 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
1152 tgt=`echo $tgt | sed 's/=.*//'`
1156 *-intelmic-* | *-intelmicemul-*)
1157 omp_device_property=omp-device-properties-i386
1158 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
1161 omp_device_property=omp-device-properties-gcn
1162 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
1165 omp_device_property=omp-device-properties-nvptx
1166 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1169 AC_MSG_ERROR([unknown offload target specified])
1172 omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1173 omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1175 if test x"$offload_targets" = x; then
1176 offload_targets=$tgt
1178 offload_targets="$offload_targets,$tgt"
1181 AC_SUBST(omp_device_properties)
1182 AC_SUBST(omp_device_property_deps)
1184 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1185 [Define to offload targets, separated by commas.])
1186 if test x"$enable_offloading" != x; then
1187 AC_DEFINE(ENABLE_OFFLOADING, 1,
1188 [Define this to enable support for offloading.])
1190 AC_DEFINE(ENABLE_OFFLOADING, 0,
1191 [Define this to enable support for offloading.])
1194 if test "x$enable_offload_defaulted" = xyes; then
1195 AC_DEFINE(OFFLOAD_DEFAULTED, 1,
1196 [Define to 1 to if -foffload is defaulted])
1199 AC_ARG_WITH(multilib-list,
1200 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, AVR, OR1K, RISC-V, SH and x86-64 only)])],
1202 with_multilib_list=default)
1204 AC_ARG_WITH(multilib-generator,
1205 [AS_HELP_STRING([--with-multilib-generator], [Multi-libs configuration string (RISC-V only)])],
1207 with_multilib_generator=default)
1209 # -------------------------
1210 # Checks for other programs
1211 # -------------------------
1215 # Find some useful tools
1217 # We need awk to create options.cc and options.h.
1218 # Bail out if it's missing.
1220 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1227 AC_SUBST(ranlib_flags)
1231 # See if cmp has --ignore-initial.
1232 gcc_AC_PROG_CMP_IGNORE_INITIAL
1234 # See if we have the mktemp command.
1235 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1237 # See if makeinfo has been installed and is modern enough
1238 # that we can use it.
1239 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1240 [GNU texinfo.* \([0-9][0-9.]*\)],
1241 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1242 if test $gcc_cv_prog_makeinfo_modern = no; then
1244 *** Makeinfo is missing or too old.
1245 *** Info documentation will not be built.])
1250 AC_SUBST(BUILD_INFO)
1252 # Is pod2man recent enough to regenerate manpages?
1253 AC_MSG_CHECKING([for recent Pod::Man])
1254 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1256 GENERATED_MANPAGES=generated-manpages
1261 AC_SUBST(GENERATED_MANPAGES)
1263 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1266 dnl Don't use AC_PROG_LEX; we insist on flex.
1267 dnl LEXLIB is not useful in gcc.
1268 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1271 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1273 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
1274 # check for build == host before using them.
1277 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1278 && test -d ../binutils ; then
1279 NM='${objdir}/../binutils/nm-new'
1281 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1285 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1286 && test -d ../binutils ; then
1287 AR='${objdir}/../binutils/ar'
1289 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1292 # The jit documentation looks better if built with sphinx, but can be
1293 # built with texinfo if sphinx is not available.
1294 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1295 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1297 # --------------------
1298 # Checks for C headers
1299 # --------------------
1301 # Need to reject headers which give warnings, so that the -Werror bootstrap
1302 # works later. *sigh* This needs to come before all header checks.
1309 AC_HEADER_TIOCGWINSZ
1310 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1311 fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1312 sys/resource.h sys/param.h sys/times.h sys/stat.h sys/locking.h \
1313 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1315 # Check for thread headers.
1316 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1317 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1319 # These tests can't be done till we know if we have limits.h.
1323 # ----------------------
1324 # Checks for C++ headers
1325 # ----------------------
1327 dnl Autoconf will give an error in the configure script if there is no
1328 dnl C++ preprocessor. Hack to prevent that.
1329 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1331 m4_popdef([AC_MSG_ERROR])[]dnl
1333 AC_CHECK_HEADERS(unordered_map)
1334 AC_CHECK_HEADERS(tr1/unordered_map)
1335 AC_CHECK_HEADERS(ext/hash_map)
1338 # Dependency checking.
1342 AC_CONFIG_COMMANDS([gccdepdir],[
1343 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1344 for lang in $subdirs c-family common analyzer rtl-ssa
1346 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1347 done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1349 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1356 # These libraries may be used by collect2.
1357 # We may need a special search path to get them linked.
1358 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1360 for libs in '' -lld -lmld \
1361 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1362 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1365 AC_TRY_LINK_FUNC(ldopen,
1366 [gcc_cv_collect2_libs="$libs"; break])
1369 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1370 case $gcc_cv_collect2_libs in
1372 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1374 AC_SUBST(COLLECT2_LIBS)
1376 # When building Ada code on Alpha, we need exc_resume which is usually in
1377 # -lexc. So test for it.
1380 AC_SEARCH_LIBS(exc_resume, exc)
1383 AC_SUBST(GNAT_LIBEXC)
1385 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1388 AC_SEARCH_LIBS(kstat_open, kstat)
1389 EXTRA_GCC_LIBS="$LIBS"
1391 AC_SUBST(EXTRA_GCC_LIBS)
1393 # Solaris needs libsocket and libnsl for socket functions before 11.4.
1394 # C++ needs those for libcody.
1402 # Some systems put ldexp and frexp in libm instead of libc; assume
1403 # they're both in the same place. jcf-dump needs them.
1406 AC_SEARCH_LIBS(ldexp, m)
1411 # Some systems need dlopen
1414 AC_SEARCH_LIBS(dlopen, dl)
1419 # Use <inttypes.h> only if it exists,
1420 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1422 AC_MSG_CHECKING(for inttypes.h)
1423 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1424 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1425 [[#define __STDC_FORMAT_MACROS
1426 #include <sys/types.h>
1427 #include <inttypes.h>]],
1432 [gcc_cv_header_inttypes_h=yes],
1433 [gcc_cv_header_inttypes_h=no])])
1434 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1435 if test $gcc_cv_header_inttypes_h = yes; then
1436 AC_DEFINE(HAVE_INTTYPES_H, 1,
1437 [Define if you have a working <inttypes.h> header file.])
1440 # Look for the ZSTD package.
1443 AC_SUBST(ZSTD_INCLUDE)
1447 AC_SUBST(ZSTD_CPPFLAGS)
1448 AC_SUBST(ZSTD_LDFLAGS)
1450 [AS_HELP_STRING([--with-zstd=PATH],
1451 [specify prefix directory for installed zstd library.
1452 Equivalent to --with-zstd-include=PATH/include
1453 plus --with-zstd-lib=PATH/lib])])
1454 AC_ARG_WITH(zstd-include,
1455 [AS_HELP_STRING([--with-zstd-include=PATH],
1456 [specify directory for installed zstd include files])])
1457 AC_ARG_WITH(zstd-lib,
1458 [AS_HELP_STRING([--with-zstd-lib=PATH],
1459 [specify directory for the installed zstd library])])
1460 case "x$with_zstd" in
1466 *) ZSTD_INCLUDE=$with_zstd/include
1467 ZSTD_LIB=$with_zstd/lib
1471 if test "x$with_zstd" != xno; then
1472 if test "x$with_zstd_include" != x; then
1473 ZSTD_INCLUDE=$with_zstd_include
1475 if test "x$with_zstd_lib" != x; then
1476 ZSTD_LIB=$with_zstd_lib
1478 if test "x$ZSTD_INCLUDE" != x \
1479 && test "x$ZSTD_INCLUDE" != xno; then
1480 ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1482 if test "x$ZSTD_LIB" != x \
1483 && test "x$ZSTD_LIB" != xno; then
1484 ZSTD_LDFLAGS=-L$ZSTD_LIB
1487 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1488 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1490 AC_MSG_CHECKING(for zstd.h)
1491 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1492 # We require version 1.3.0 or later. This is the first version that has
1493 # ZSTD_getFrameContentSize.
1494 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1496 #if ZSTD_VERSION_NUMBER < 10300
1497 #error "need zstd 1.3.0 or better"
1499 [gcc_cv_header_zstd_h=yes],
1500 [gcc_cv_header_zstd_h=no])])
1501 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1502 if test $gcc_cv_header_zstd_h = yes; then
1503 AC_DEFINE(HAVE_ZSTD_H, 1,
1504 [Define if you have a working <zstd.h> header file.])
1505 elif test "x$with_zstd" != x; then
1506 as_fn_error $? "Unable to find zstd.h. See config.log for details." "$LINENO" 5
1509 # LTO can use zstd compression algorithm
1512 AC_SEARCH_LIBS(ZSTD_compress, zstd)
1518 dnl Disabled until we have a complete test for buggy enum bitfields.
1519 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1521 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1522 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1523 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1524 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1525 putchar_unlocked putc_unlocked)
1526 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1527 popen sysconf strsignal getrusage nl_langinfo \
1528 gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
1529 gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat)
1531 if test x$ac_cv_func_mbstowcs = xyes; then
1532 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1533 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1539 [gcc_cv_func_mbstowcs_works=yes],
1540 [gcc_cv_func_mbstowcs_works=no],
1541 [gcc_cv_func_mbstowcs_works=yes])])
1542 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1543 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1544 [Define this macro if mbstowcs does not crash when its
1545 first argument is NULL.])
1549 AC_CHECK_TYPE(ssize_t, int)
1550 AC_CHECK_TYPE(caddr_t, char *)
1551 AC_CHECK_TYPE(sighander_t,
1552 AC_DEFINE(HAVE_SIGHANDLER_T, 1,
1553 [Define if <sys/signal.h> defines sighandler_t]),
1556 GCC_AC_FUNC_MMAP_BLACKLIST
1560 # Under VMS, vfork works very differently than on Unix. The standard test
1561 # won't work, and it isn't easily adaptable. It makes more sense to
1563 ac_cv_func_vfork_works=yes
1570 # Until we have in-tree GNU iconv:
1572 if test -f "$LTLIBICONV"; then
1573 LIBICONV_DEP=$LTLIBICONV
1575 AC_SUBST(LIBICONV_DEP)
1581 # We will need to find libiberty.h and ansidecl.h
1582 saved_CFLAGS="$CFLAGS"
1583 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC -I${top_srcdir}/../../sdbinutils/include"
1584 saved_CXXFLAGS="$CXXFLAGS"
1585 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC -I${srcdir}/../../sdbinutils/include"
1587 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1588 # normal autoconf function for these. But force definition of
1589 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1590 # basename handling in libiberty.h.
1591 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1592 #undef HAVE_DECL_BASENAME
1593 #define HAVE_DECL_BASENAME 1
1594 #include "ansidecl.h"
1595 #include "system.h"])
1597 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1598 madvise stpcpy strnlen strsignal strverscmp \
1599 strtol strtoul strtoll strtoull setenv unsetenv \
1600 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1601 free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1602 #include "ansidecl.h"
1603 #include "system.h"])
1605 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1606 #include "ansidecl.h"
1608 #ifdef HAVE_SYS_RESOURCE_H
1609 #include <sys/resource.h>
1613 gcc_AC_CHECK_DECLS(mallinfo mallinfo2, , ,[
1614 #include "ansidecl.h"
1616 #ifdef HAVE_MALLOC_H
1621 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1622 #include "ansidecl.h"
1624 #ifdef HAVE_SYS_RESOURCE_H
1625 #include <sys/resource.h>
1627 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1628 [Define to `long' if <sys/resource.h> doesn't define.])])
1630 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1631 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1632 # in collect2.cc, <fcntl.h> isn't visible, but the configure test below needs
1633 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1634 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1635 #include "ansidecl.h"
1644 gcc_AC_CHECK_DECLS(times, , ,[
1645 #include "ansidecl.h"
1647 #ifdef HAVE_SYS_TIMES_H
1648 #include <sys/times.h>
1652 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1653 #include "ansidecl.h"
1658 # More time-related stuff.
1659 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1660 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1661 #include "ansidecl.h"
1663 #ifdef HAVE_SYS_TIMES_H
1664 #include <sys/times.h>
1666 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1667 if test $ac_cv_struct_tms = yes; then
1668 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1669 [Define if <sys/times.h> defines struct tms.])
1672 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1673 # revisit after autoconf 2.50.
1674 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1675 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1676 #include "ansidecl.h"
1678 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1679 if test $gcc_cv_type_clock_t = yes; then
1680 AC_DEFINE(HAVE_CLOCK_T, 1,
1681 [Define if <time.h> defines clock_t.])
1684 # Check if F_SETLKW is supported by fcntl.
1685 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1686 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1687 #include <fcntl.h>]], [[
1693 return fcntl (1, F_SETLKW, &fl);]])],
1694 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1695 if test $ac_cv_f_setlkw = yes; then
1696 AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1697 [Define if F_SETLKW supported by fcntl.])
1700 # Check if O_CLOEXEC is defined by fcntl
1701 AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
1702 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1703 #include <fcntl.h>]], [[
1704 return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
1705 [ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
1706 if test $ac_cv_o_cloexec = yes; then
1707 AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
1708 [Define if O_CLOEXEC supported by fcntl.])
1711 # C++ Modules would like some networking features to provide the mapping
1712 # server. You can still use modules without them though.
1713 # The following network-related checks could probably do with some
1714 # Windows and other non-linux defenses and checking.
1716 # Local socket connectivity wants AF_UNIX networking
1717 # Check for AF_UNIX networking
1718 AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
1719 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1720 #include <sys/types.h>
1721 #include <sys/socket.h>
1723 #include <netinet/in.h>]],[[
1725 un.sun_family = AF_UNSPEC;
1726 int fd = socket (AF_UNIX, SOCK_STREAM, 0);
1727 connect (fd, (sockaddr *)&un, sizeof (un));]])],
1728 [ac_cv_af_unix=yes],
1729 [ac_cv_af_unix=no])])
1730 if test $ac_cv_af_unix = yes; then
1731 AC_DEFINE(HAVE_AF_UNIX, 1,
1732 [Define if AF_UNIX supported.])
1735 # Remote socket connectivity wants AF_INET6 networking
1736 # Check for AF_INET6 networking
1737 AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
1738 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1739 #include <sys/types.h>
1740 #include <sys/socket.h>
1741 #include <netinet/in.h>
1742 #include <netdb.h>]],[[
1744 in6.sin6_family = AF_UNSPEC;
1745 struct addrinfo *addrs = 0;
1746 struct addrinfo hints;
1748 hints.ai_family = AF_INET6;
1749 hints.ai_socktype = SOCK_STREAM;
1750 hints.ai_protocol = 0;
1751 hints.ai_canonname = 0;
1754 int e = getaddrinfo ("localhost", 0, &hints, &addrs);
1755 const char *str = gai_strerror (e);
1756 freeaddrinfo (addrs);
1757 int fd = socket (AF_INET6, SOCK_STREAM, 0);
1758 connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
1759 [ac_cv_af_inet6=yes],
1760 [ac_cv_af_inet6=no])])
1761 if test $ac_cv_af_inet6 = yes; then
1762 AC_DEFINE(HAVE_AF_INET6, 1,
1763 [Define if AF_INET6 supported.])
1766 # Check if _LK_LOCK is supported by _locking
1767 AC_CACHE_CHECK(for _LK_LOCK, ac_cv_lk_lock, [
1768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1770 #include <sys/locking.h>]], [[
1772 return _locking (fd, _LK_LOCK, 0);]])],
1773 [ac_cv_lk_lock=yes],[ac_cv_lk_lock=no])])
1774 if test $ac_cv_lk_lock = yes; then
1775 AC_DEFINE(HOST_HAS_LK_LOCK, 1,
1776 [Define if _LK_LOC supported by _locking.])
1779 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1780 CFLAGS="$saved_CFLAGS"
1781 CXXFLAGS="$saved_CXXFLAGS"
1783 # mkdir takes a single argument on some systems.
1784 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1792 # With Setjmp/Longjmp based exception handling.
1793 AC_ARG_ENABLE(sjlj-exceptions,
1794 [AS_HELP_STRING([--enable-sjlj-exceptions],
1795 [arrange to use setjmp/longjmp exception handling])],
1798 if test $enableval != yes; then
1799 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1804 force_sjlj_exceptions=yes],
1807 force_sjlj_exceptions=yes
1811 force_sjlj_exceptions=yes
1815 force_sjlj_exceptions=no
1818 if test $force_sjlj_exceptions = yes; then
1819 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1820 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1821 [Define 0/1 to force the choice for exception handling model.])
1824 # --------------------------------------------------------
1825 # Build, host, and target specific configuration fragments
1826 # --------------------------------------------------------
1828 # Collect build-machine-specific information.
1829 . ${srcdir}/config.build || exit 1
1831 # Collect host-machine-specific information.
1832 . ${srcdir}/config.host || exit 1
1836 # Collect target-machine-specific information.
1837 . ${srcdir}/config.gcc || exit 1
1839 extra_objs="${host_extra_objs} ${extra_objs}"
1840 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1842 # Default the target-machine variables that were not explicitly set.
1843 if test x"$tm_file" = x
1844 then tm_file=$cpu_type/$cpu_type.h; fi
1846 if test x"$extra_headers" = x
1847 then extra_headers=; fi
1849 if test x$md_file = x
1850 then md_file=$cpu_type/$cpu_type.md; fi
1852 if test x$out_file = x
1853 then out_file=$cpu_type/$cpu_type.cc; fi
1855 if test x"$tmake_file" = x
1856 then tmake_file=$cpu_type/t-$cpu_type
1859 # Support --enable-initfini-array.
1860 if test x$enable_initfini_array != xno; then
1861 tm_file="${tm_file} initfini-array.h"
1864 if test x"$dwarf2" = xyes
1865 then tm_file="$tm_file tm-dwarf2.h"
1868 # Say what files are being used for the output code and MD file.
1869 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1870 echo "Using \`$srcdir/config/$md_file' as machine description file."
1872 # If any of the xm_file variables contain nonexistent files, warn
1873 # about them and drop them.
1876 for x in $build_xm_file; do
1877 if test -f $srcdir/config/$x
1879 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1885 for x in $host_xm_file; do
1886 if test -f $srcdir/config/$x
1888 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1894 for x in $xm_file; do
1895 if test -f $srcdir/config/$x
1897 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1903 for f in $tm_file; do
1906 if test $count = ax; then
1907 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1909 echo "Using the following target machine macro files:"
1910 for f in $tm_file; do
1911 echo " $srcdir/config/$f"
1915 if test x$use_long_long_for_widest_fast_int = xyes; then
1916 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1917 [Define to 1 if the 'long long' type is wider than 'long' but still
1918 efficiently supported by the host hardware.])
1921 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1922 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1924 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1925 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1928 for f in $host_xm_file; do
1931 if test $count = a; then
1933 elif test $count = ax; then
1934 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1936 echo "Using the following host machine macro files:"
1937 for f in $host_xm_file; do
1938 echo " $srcdir/config/$f"
1941 echo "Using ${out_host_hook_obj} for host machine hooks."
1943 if test "$host_xm_file" != "$build_xm_file"; then
1945 for f in $build_xm_file; do
1948 if test $count = a; then
1950 elif test $count = ax; then
1951 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1953 echo "Using the following build machine macro files:"
1954 for f in $build_xm_file; do
1955 echo " $srcdir/config/$f"
1960 if test -n "$configured_native_system_header_dir"; then
1961 native_system_header_dir=$configured_native_system_header_dir
1963 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1964 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1968 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1969 gcc_cv_mcontext_underscores,
1970 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1971 #include <sys/cdefs.h>
1972 #include <sys/signal.h>
1973 #include <ucontext.h>
1974 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1976 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1977 if test $gcc_cv_mcontext_underscores = yes; then
1978 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1979 [mcontext_t fields start with __])
1988 # Check if a valid thread package
1989 case ${enable_threads} in
1992 target_thread_file='single'
1996 target_thread_file='single'
1998 aix | dce | lynx | mipssde | posix | rtems | \
1999 single | tpf | vxworks | win32)
2000 target_thread_file=${enable_threads}
2003 echo "${enable_threads} is an unknown thread package" 1>&2
2008 if test x${thread_file} = x; then
2009 # No thread file set by target-specific clauses in config.gcc,
2010 # so use file chosen by default logic above
2011 thread_file=${target_thread_file}
2019 if test x$enable___cxa_atexit = xyes || \
2020 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
2021 if test x$host = x$target; then
2023 # mingw32 doesn't have __cxa_atexit but uses atexit registration
2024 # keyed to flag_use_cxa_atexit
2032 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
2033 [echo "__cxa_atexit can't be enabled on this target"])
2037 # We can't check for __cxa_atexit when building a cross, so assume
2041 if test x$use_cxa_atexit = xyes; then
2042 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
2043 [Define if you want to use __cxa_atexit, rather than atexit, to
2044 register C++ destructors for local statics and global objects.
2045 This is essential for fully standards-compliant handling of
2046 destructors, but requires __cxa_atexit in libc.])
2050 # Look for a file containing extra machine modes.
2051 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
2052 extra_modes_file='$(srcdir)'/config/${extra_modes}
2053 AC_SUBST(extra_modes_file)
2054 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
2055 [Define to the name of a file containing a list of extra machine modes
2056 for this architecture.])
2059 # Convert extra_options into a form suitable for Makefile use.
2062 for f in $extra_options; do
2063 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
2064 all_opt_files="$all_opt_files $srcdir/config/$f"
2066 AC_SUBST(extra_opt_files)
2068 # auto-host.h is the file containing items generated by autoconf and is
2069 # the first file included by config.h.
2070 # If host=build, it is correct to have bconfig include auto-host.h
2071 # as well. If host!=build, we are in error and need to do more
2072 # work to find out the build config parameters.
2073 if test x$host = x$build
2075 build_auto=auto-host.h
2076 HAVE_AUTO_BUILD='# '
2078 # We create a subdir, then run autoconf in the subdir.
2079 # To prevent recursion we set host and build for the new
2080 # invocation of configure to the build for this invocation
2087 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
2088 *) realsrcdir=../${srcdir};;
2090 # Clearing GMPINC is necessary to prevent host headers being
2091 # used by the build compiler. Defining GENERATOR_FILE stops
2092 # system.h from including gmp.h.
2093 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
2094 CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
2095 LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
2096 GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
2097 ${realsrcdir}/configure \
2098 --enable-languages=${enable_languages-all} \
2099 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
2100 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
2101 --target=$target_alias --host=$build_alias \
2102 --build=$build_alias || exit # retaining $tempdir
2104 # We just finished tests for the build machine, so rename
2105 # the file auto-build.h in the gcc directory.
2106 mv auto-host.h ../auto-build.h
2109 build_auto=auto-build.h
2112 AC_SUBST(build_subdir)
2113 AC_SUBST(HAVE_AUTO_BUILD)
2115 tm_file="${tm_file} defaults.h"
2116 tm_p_file="${tm_p_file} tm-preds.h"
2117 tm_d_file="${tm_d_file} defaults.h"
2118 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
2119 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
2120 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
2121 # put this back in temporarily.
2122 xm_file="auto-host.h ansidecl.h ${xm_file}"
2129 # Compile in configure arguments.
2130 if test -f configargs.h ; then
2131 # Being re-configured.
2132 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
2133 gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
2134 if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
2135 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
2138 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
2141 # Double all backslashes and backslash all quotes to turn
2142 # gcc_config_arguments into a C string.
2143 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
2144 $gcc_config_arguments
2146 gcc_config_arguments_str=`cat conftest.out`
2149 cat > configargs.h <<EOF
2150 /* Generated automatically. */
2151 static const char configuration_arguments[] = "$gcc_config_arguments_str";
2152 static const char thread_model[] = "$thread_file";
2154 static const struct {
2155 const char *name, *value;
2156 } configure_default_options[] = $configure_default_options;
2161 gcc_BASEVER=`cat $srcdir/BASE-VER`
2162 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
2163 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
2164 if test -f $srcdir/REVISION ; then
2165 gcc_REVISION=`cat $srcdir/REVISION`
2169 cat > plugin-version.h <<EOF
2170 #include "configargs.h"
2172 #define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
2173 #define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
2174 #define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
2175 #define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
2177 static char basever[] = "$gcc_BASEVER";
2178 static char datestamp[] = "$gcc_DATESTAMP";
2179 static char devphase[] = "$gcc_DEVPHASE";
2180 static char revision[] = "$gcc_REVISION";
2182 /* FIXME plugins: We should make the version information more precise.
2183 One way to do is to add a checksum. */
2185 static struct plugin_gcc_version gcc_version = {basever, datestamp,
2187 configuration_arguments};
2191 # Determine what GCC version number to use in filesystem paths.
2194 # Internationalization
2195 ZW_GNU_GETTEXT_SISTER_DIR
2197 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
2198 # -liconv on the link line twice.
2199 case "$LIBINTL" in *$LIBICONV*)
2203 AC_ARG_ENABLE(secureplt,
2204 [AS_HELP_STRING([--enable-secureplt],
2205 [enable -msecure-plt by default for PowerPC])],
2208 AC_ARG_ENABLE(mingw-wildcard,
2209 [AS_HELP_STRING([--enable-mingw-wildcard],
2210 [Set whether to expand wildcard on command-line.
2211 Default to platform configuration])],
2212 [],[enable_mingw_wildcard=platform])
2213 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
2214 [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
2215 $(test x"$enable_mingw_wildcard" = xno; echo $?),
2216 [Value to set mingw's _dowildcard to.])])
2218 AC_ARG_ENABLE(large-address-aware,
2219 [AS_HELP_STRING([--enable-large-address-aware],
2220 [Link mingw executables with --large-address-aware])])
2221 AS_IF([test x"$enable_large_address_aware" = xyes],
2222 [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
2223 [Define if we should link mingw executables with --large-address-aware])])
2225 AC_ARG_ENABLE(leading-mingw64-underscores,
2226 AS_HELP_STRING([--enable-leading-mingw64-underscores],
2227 [enable leading underscores on 64 bit mingw targets]),
2229 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
2230 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
2231 [Define if we should use leading underscore on 64 bit mingw targets])])
2234 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2237 AC_ARG_ENABLE(frame-pointer,
2238 [AS_HELP_STRING([--enable-frame-pointer],
2239 [enable -fno-omit-frame-pointer by default for x86])], [],
2242 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2243 # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2244 enable_frame_pointer=no
2247 enable_frame_pointer=yes
2253 i[[34567]]86-*-* | x86_64-*-*)
2254 if test "x$enable_cld" = xyes; then
2255 tm_defines="${tm_defines} USE_IX86_CLD=1"
2257 if test "x$enable_frame_pointer" = xyes; then
2258 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2263 # Windows32 Registry support for specifying GCC installation paths.
2264 AC_ARG_ENABLE(win32-registry,
2265 [AS_HELP_STRING([--disable-win32-registry],
2266 [disable lookup of installation paths in the
2267 Registry on Windows hosts])
2268 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2269 AS_HELP_STRING([--enable-win32-registry=KEY],
2270 [use KEY instead of GCC version as the last portion
2271 of the registry key])],,)
2274 win32 | pe | cygwin* | mingw32*)
2275 if test "x$enable_win32_registry" != xno; then
2276 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2279 if test "x$enable_win32_registry" != xno; then
2280 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2281 [Define to 1 if installation paths should be looked up in the Windows
2282 Registry. Ignored on non-Windows hosts.])
2284 if test "x$enable_win32_registry" != xyes \
2285 && test "x$enable_win32_registry" != x; then
2286 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2287 [Define to be the last component of the Windows registry key under which
2288 to look for installation paths. The full key used will be
2289 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2290 The default is the GCC version number.])
2296 # Get an absolute path to the GCC top-level source directory
2297 holddir=`${PWDCMD-pwd}`
2299 topdir=`${PWDCMD-pwd}`
2302 # Conditionalize the makefile for this host machine.
2304 for f in ${host_xmake_file}
2306 if test -f ${srcdir}/config/$f
2308 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2312 # Conditionalize the makefile for this target machine.
2314 for f in ${tmake_file}
2316 if test -f ${srcdir}/config/$f
2318 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2321 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2323 out_object_file=`basename $out_file .cc`.o
2324 common_out_file=default-common.cc
2325 common_out_object_file=`basename $common_out_file .cc`.o
2327 tm_file_list="options.h"
2328 tm_include_list="options.h insn-constants.h"
2329 for f in $tm_file; do
2332 f=`echo $f | sed 's/^..//'`
2333 tm_file_list="${tm_file_list} $f"
2334 tm_include_list="${tm_include_list} $f"
2337 tm_file_list="${tm_file_list} \$(srcdir)/$f"
2338 tm_include_list="${tm_include_list} $f"
2341 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2342 tm_include_list="${tm_include_list} config/$f"
2349 for f in $tm_p_file; do
2352 tm_p_file_list="${tm_p_file_list} $f"
2353 tm_p_include_list="${tm_p_include_list} $f"
2356 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2357 tm_p_include_list="${tm_p_include_list} config/$f"
2362 tm_d_include_list="options.h insn-constants.h"
2363 for f in $tm_d_file; do
2366 tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
2367 tm_d_include_list="${tm_d_include_list} $f"
2370 tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2371 tm_d_include_list="${tm_d_include_list} config/$f"
2378 for f in $xm_file; do
2381 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2382 xm_include_list="${xm_include_list} $f"
2385 xm_file_list="${xm_file_list} $f"
2386 xm_include_list="${xm_include_list} $f"
2389 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2390 xm_include_list="${xm_include_list} config/$f"
2396 host_xm_include_list=
2397 for f in $host_xm_file; do
2400 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2401 host_xm_include_list="${host_xm_include_list} $f"
2404 host_xm_file_list="${host_xm_file_list} $f"
2405 host_xm_include_list="${host_xm_include_list} $f"
2408 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2409 host_xm_include_list="${host_xm_include_list} config/$f"
2415 for f in $build_xm_file; do
2418 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2419 build_xm_include_list="${build_xm_include_list} $f"
2421 auto-build.h | auto-host.h )
2422 build_xm_file_list="${build_xm_file_list} $f"
2423 build_xm_include_list="${build_xm_include_list} $f"
2426 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2427 build_xm_include_list="${build_xm_include_list} config/$f"
2432 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2433 # cross-compiler which does not use the native headers and libraries.
2434 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2435 CROSS= AC_SUBST(CROSS)
2436 ALL=all.internal AC_SUBST(ALL)
2437 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2438 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2440 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2441 test x$build != x$host || test "x$with_build_sysroot" != x; then
2442 if test "x$with_build_sysroot" != x; then
2443 BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2445 BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2448 if test x$host != x$target
2450 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2452 SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2453 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2454 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2457 if test "x$with_build_sysroot" != "x"; then
2458 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2459 elif test "x$with_sysroot" = x; then
2460 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2461 elif test "x$with_sysroot" = xyes; then
2462 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2464 target_header_dir="${with_sysroot}${native_system_header_dir}"
2467 target_header_dir=${native_system_header_dir}
2470 # If this is a cross-compiler that does not
2471 # have its own set of headers then define
2474 # If this is using newlib, without having the headers available now,
2475 # then define inhibit_libc in LIBGCC2_CFLAGS.
2476 # This prevents libgcc2 from containing any code which requires libc
2478 : ${inhibit_libc=false}
2479 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2480 test x$with_newlib = xyes ; } &&
2481 { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2484 AC_SUBST(inhibit_libc)
2486 # When building gcc with a cross-compiler, we need to adjust things so
2487 # that the generator programs are still built with the native compiler.
2488 # Also, we cannot run fixincludes.
2490 # These are the normal (build=host) settings:
2491 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
2492 CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
2493 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
2494 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2495 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
2496 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
2498 # And these apply if build != host, or we are generating coverage data
2499 if test x$build != x$host || test "x$coverage_flags" != x
2501 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CFLAGS_FOR_BUILD)'
2502 BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS_FOR_BUILD)'
2503 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2506 # Expand extra_headers to include complete path.
2507 # This substitutes for lots of t-* files.
2509 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2510 for file in ${extra_headers} ; do
2511 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2514 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2515 if test x"$use_gcc_tgmath" = xyes
2516 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2519 # Define collect2 in Makefile.
2520 case $host_can_use_collect2 in
2522 *) collect2='collect2$(exeext)' ;;
2524 AC_SUBST([collect2])
2526 # Add a definition of USE_COLLECT2 if system wants one.
2527 case $use_collect2 in
2528 no) use_collect2= ;;
2531 host_xm_defines="${host_xm_defines} USE_COLLECT2"
2532 xm_defines="${xm_defines} USE_COLLECT2"
2533 case $host_can_use_collect2 in
2535 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2541 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2542 [Define to the name of the LTO plugin DSO that must be
2543 passed to the linker's -plugin=LIB option.])
2545 # ---------------------------
2546 # Assembler & linker features
2547 # ---------------------------
2549 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2550 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2551 # However when ld-new is first executed from the build tree, libtool will
2552 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2553 # to the build tree. While doing this we need to use the previous-stage
2554 # linker, or we have an infinite loop. The presence of a shell script as
2555 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2556 # the gcc/collect-ld script. So we need to know how libtool works, or
2557 # exec-tool will fail.
2559 m4_defun([_LT_CONFIG_COMMANDS], [])
2562 AC_SUBST(enable_fast_install)
2564 # Identify the assembler which will work hand-in-glove with the newly
2565 # built GCC, so that we can examine its features. This is the assembler
2566 # which will be driven by the driver program.
2568 # If build != host, and we aren't building gas in-tree, we identify a
2569 # build->target assembler and hope that it will have the same features
2570 # as the host->target assembler we'll be using.
2571 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2573 m4_pattern_allow([AS_FOR_TARGET])dnl
2574 AS_VAR_SET_IF(gcc_cv_as,, [
2575 if test -x "$DEFAULT_ASSEMBLER"; then
2576 gcc_cv_as="$DEFAULT_ASSEMBLER"
2577 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2578 && test -f ../gas/Makefile \
2579 && test x$build = x$host; then
2580 gcc_cv_as=../gas/as-new$build_exeext
2581 elif test -x as$build_exeext; then
2582 # Build using assembler in the current directory.
2583 gcc_cv_as=./as$build_exeext
2584 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2585 gcc_cv_as="$AS_FOR_TARGET"
2587 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2590 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2591 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2592 case "$ORIGINAL_AS_FOR_TARGET" in
2593 ./as | ./as$build_exeext) ;;
2594 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2599 [[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
2600 [case "${enableval}" in
2606 install_gold_as_default=no
2608 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
2609 [case "${enableval}" in
2611 install_gold_as_default=yes
2614 if test x${default_ld} != x; then
2615 install_gold_as_default=yes
2621 AC_MSG_ERROR([invalid --enable-gold argument])
2625 # Identify the linker which will work hand-in-glove with the newly
2626 # built GCC, so that we can examine its features. This is the linker
2627 # which will be driven by the driver program.
2629 # If build != host, and we aren't building gas in-tree, we identify a
2630 # build->target linker and hope that it will have the same features
2631 # as the host->target linker we'll be using.
2632 gcc_cv_gld_major_version=
2633 gcc_cv_gld_minor_version=
2634 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2635 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2636 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2638 AS_VAR_SET_IF(gcc_cv_ld,, [
2639 if test -x "$DEFAULT_LINKER"; then
2640 gcc_cv_ld="$DEFAULT_LINKER"
2641 elif test $install_gold_as_default = yes \
2642 && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2643 && test -f ../gold/Makefile \
2644 && test x$build = x$host; then
2645 gcc_cv_ld=../gold/ld-new$build_exeext
2646 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2647 && test -f ../ld/Makefile \
2648 && test x$build = x$host; then
2649 gcc_cv_ld=../ld/ld-new$build_exeext
2650 elif test -x collect-ld$build_exeext; then
2651 # Build using linker in the current directory.
2652 gcc_cv_ld=./collect-ld$build_exeext
2653 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2654 gcc_cv_ld="$LD_FOR_TARGET"
2656 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2659 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2660 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2661 # if the PLUGIN_LD is set ld-new, just have it as ld
2662 # as that is the installed named.
2663 if test x$PLUGIN_LD_SUFFIX = xld-new \
2664 || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2667 AC_ARG_WITH(plugin-ld,
2668 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2669 [if test x"$withval" != x; then
2670 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2671 PLUGIN_LD_SUFFIX="$withval"
2673 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2674 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2676 # Check to see if we are using gold instead of ld
2677 AC_MSG_CHECKING(whether we are using gold)
2679 if test x$gcc_cv_ld != x; then
2680 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2681 | grep "GNU gold" > /dev/null; then
2685 AC_MSG_RESULT($ld_is_gold)
2687 # Check to see if we are using mold instead of ld
2688 AC_MSG_CHECKING(whether we are using mold)
2690 if test x$gcc_cv_ld != x; then
2691 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2692 | grep "mold" > /dev/null; then
2696 AC_MSG_RESULT($ld_is_mold)
2699 AC_MSG_CHECKING(gold linker with split stack support as non default)
2700 # Check to see if default ld is not gold, but gold is
2701 # available and has support for split stack. If gcc was configured
2702 # with gold then no checking is done.
2704 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2706 # For platforms other than powerpc64*, enable as appropriate.
2709 ld_gold=`which ${gcc_cv_ld}.gold`
2710 # Make sure this gold has minimal split stack support
2711 if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2712 ld_vers=`$ld_gold --version | sed 1q`
2713 gold_vers=`echo $ld_vers | sed -n \
2714 -e 's,^[[^)]]*[[ ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2716 # check that the gold version contains the complete split stack support
2717 # on powerpc64 big and little endian
2719 case "$gold_vers" in
2720 2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2722 *) gold_non_default=no
2728 if test $gold_non_default = yes; then
2729 AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2730 [Define if the gold linker supports split stack and is available as a non-default])
2733 AC_MSG_RESULT($gold_non_default)
2735 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2736 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2737 case "$ORIGINAL_LD_FOR_TARGET" in
2738 ./collect-ld | ./collect-ld$build_exeext) ;;
2739 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2742 AC_MSG_CHECKING(what linker to use)
2743 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2744 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2745 # Single tree build which includes ld. We want to prefer it
2746 # over whatever linker top-level may have detected, since
2747 # we'll use what we're building after installation anyway.
2748 AC_MSG_RESULT(newly built ld)
2750 in_tree_ld_is_elf=no
2751 if (grep 'EMUL = .*elf' ../ld/Makefile \
2752 || grep 'EMUL = .*linux' ../ld/Makefile \
2753 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2754 in_tree_ld_is_elf=yes
2755 elif test "$ld_is_gold" = yes; then
2756 in_tree_ld_is_elf=yes
2758 for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.ac $gcc_cv_ld_gld_srcdir/Makefile.in
2761 gcc_cv_gld_version=`sed -n -e 's/^[ ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2762 if test x$gcc_cv_gld_version != x; then
2766 case $gcc_cv_gld_version in
2769 *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2772 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2773 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2775 ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2776 ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2778 AC_MSG_RESULT($gcc_cv_ld)
2780 gcc_cvs_ld_program=false # `dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2781 ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2782 ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2785 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2786 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2788 # Figure out what nm we will be using.
2789 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2790 AS_VAR_SET_IF(gcc_cv_nm,, [
2791 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2792 && test -f ../binutils/Makefile \
2793 && test x$build = x$host; then
2794 gcc_cv_nm=../binutils/nm-new$build_exeext
2795 elif test -x nm$build_exeext; then
2796 gcc_cv_nm=./nm$build_exeext
2797 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2798 gcc_cv_nm="$NM_FOR_TARGET"
2800 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2803 AC_MSG_CHECKING(what nm to use)
2804 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2805 # Single tree build which includes binutils.
2806 AC_MSG_RESULT(newly built nm)
2809 AC_MSG_RESULT($gcc_cv_nm)
2813 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2814 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2815 case "$ORIGINAL_NM_FOR_TARGET" in
2816 ./nm | ./nm$build_exeext) ;;
2817 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2821 # Figure out what objdump we will be using.
2822 AS_VAR_SET_IF(gcc_cv_objdump,, [
2823 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2824 && test -f ../binutils/Makefile \
2825 && test x$build = x$host; then
2826 # Single tree build which includes binutils.
2827 gcc_cv_objdump=../binutils/objdump$build_exeext
2828 elif test -x objdump$build_exeext; then
2829 gcc_cv_objdump=./objdump$build_exeext
2830 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2831 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2833 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2836 AC_MSG_CHECKING(what objdump to use)
2837 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2838 # Single tree build which includes binutils.
2839 AC_MSG_RESULT(newly built objdump)
2840 elif test x$gcc_cv_objdump = x; then
2841 AC_MSG_RESULT(not found)
2843 AC_MSG_RESULT($gcc_cv_objdump)
2846 # Figure out what readelf we will be using.
2847 AS_VAR_SET_IF(gcc_cv_readelf,, [
2848 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2849 && test -f ../binutils/Makefile \
2850 && test x$build = x$host; then
2851 # Single tree build which includes binutils.
2852 gcc_cv_readelf=../binutils/readelf$build_exeext
2853 elif test -x readelf$build_exeext; then
2854 gcc_cv_readelf=./readelf$build_exeext
2855 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2856 gcc_cv_readelf="$READELF_FOR_TARGET"
2858 AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2861 AC_MSG_CHECKING(what readelf to use)
2862 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2863 # Single tree build which includes binutils.
2864 AC_MSG_RESULT(newly built readelf)
2865 elif test x$gcc_cv_readelf = x; then
2866 AC_MSG_RESULT(not found)
2868 AC_MSG_RESULT($gcc_cv_readelf)
2871 # Figure out what otool we will be using.
2872 AS_VAR_SET_IF(gcc_cv_otool,, [
2873 if test -x otool$build_exeext; then
2874 gcc_cv_otool=./otool$build_exeext
2875 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2876 gcc_cv_otool="$OTOOL_FOR_TARGET"
2878 AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2881 AC_MSG_CHECKING(what otool to use)
2882 if test x$gcc_cv_otool = x; then
2883 AC_MSG_RESULT(not found)
2885 AC_MSG_RESULT($gcc_cv_otool)
2888 # Figure out the dsymutil we will use.
2889 AS_VAR_SET_IF(gcc_cv_dsymutil,, [
2890 if test -x "$DEFAULT_DSYMUTIL"; then
2891 gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
2892 elif test -x dsymutil$build_exeext; then
2893 gcc_cv_dsymutil=./dsymutil$build_exeext
2894 elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $[2] ); then
2895 gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
2896 elif ( set dummy $DSYMUTIL; test -x $[2] ); then
2897 gcc_cv_dsymutil=$DSYMUTIL
2899 AC_PATH_PROG(gcc_cv_dsymutil, $DSYMUTIL_FOR_TARGET)
2902 ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
2903 AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
2904 case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
2905 ./dsymutil | ./dsymutil$build_exeext) ;;
2906 *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
2909 #~ # Figure out what assembler alignment features are present.
2910 #~ gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,,
2913 #~ [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2914 #~ [Define if your assembler supports .balign and .p2align.])])
2916 #~ gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,,
2917 #~ [.p2align 4,,7],,
2918 #~ [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2919 #~ [Define if your assembler supports specifying the maximum number
2920 #~ of bytes to skip when using the GAS .p2align command.])])
2922 #~ gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,,
2924 #~ [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2925 #~ [Define if your assembler supports .literal16.])])
2927 #~ gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,,
2928 #~ [conftest_label1: .word 0
2930 #~ conftest_label2: .word 0
2932 #~ [if test x$gcc_cv_nm != x; then
2933 #~ $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2934 #~ $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2935 #~ if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2937 #~ else gcc_cv_as_subsection_m1=yes
2939 #~ rm -f conftest.nm1 conftest.nm2
2941 #~ [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2942 #~ [Define if your assembler supports .subsection and .subsection -1 starts
2943 #~ emitting at the beginning of your section.])])
2945 #~ gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,,
2946 #~ [ .weak foobar],,
2947 #~ [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2949 #~ gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,,
2950 #~ [ .weakref foobar, barfnot],,
2951 #~ [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2953 #~ gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,,
2955 #~ .NSUBSPA $CODE$,COMDAT],,
2956 #~ [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2958 #~ # .hidden needs to be supported in both the assembler and the linker,
2959 #~ # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2960 #~ # This is irritatingly difficult to feature test for; we have to check the
2961 #~ # date string after the version number. If we've got an in-tree
2962 #~ # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2964 #~ # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2965 #~ case "${target}" in
2967 #~ conftest_s=' .globl foobar,hidden'
2970 #~ conftest_s=' .hidden foobar
2974 #~ gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,, [$conftest_s])
2975 #~ case "${target}" in
2977 #~ # Darwin as has some visibility support, though with a different syntax.
2978 #~ gcc_cv_as_hidden=yes
2982 # gnu_indirect_function type is an extension proposed at
2983 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2984 # selection of function implementation
2985 AC_ARG_ENABLE(gnu-indirect-function,
2986 [AS_HELP_STRING([--enable-gnu-indirect-function],
2987 [enable the use of the @gnu_indirect_function to glibc systems])],
2988 [case $enable_gnu_indirect_function in
2990 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2991 Valid choices are 'yes' and 'no'.]) ;;
2993 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2997 AC_MSG_CHECKING(linker ifunc IRELATIVE support)
2998 cat > conftest.s <<EOF
3000 .type foo_resolver, @function
3003 .size foo_resolver, .-foo_resolver
3006 .type foo, %gnu_indirect_function
3007 .set foo, foo_resolver
3010 .type bar, @function
3016 if test x$gcc_cv_as != x \
3017 && test x$gcc_cv_ld != x \
3018 && test x$gcc_cv_readelf != x \
3019 && $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
3020 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \
3021 && $gcc_cv_readelf --relocs --wide conftest \
3022 | grep R_RISCV_IRELATIVE > /dev/null 2>&1; then
3023 enable_gnu_indirect_function=yes
3025 rm -f conftest conftest.o conftest.s
3026 AC_MSG_RESULT($enable_gnu_indirect_function)
3030 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
3031 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
3032 [Define if your system supports gnu indirect functions.])
3036 if test $in_tree_ld != yes ; then
3037 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
3038 if echo "$ld_ver" | grep GNU > /dev/null; then
3039 if test x"$ld_is_gold" = xyes; then
3040 # GNU gold --version looks like this:
3042 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
3044 # We extract the binutils version which is more familiar and specific
3045 # than the gold version.
3046 ld_vers=`echo $ld_ver | sed -n \
3047 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3049 # GNU ld --version looks like this:
3051 # GNU ld (GNU Binutils) 2.21.51.20110225
3052 ld_vers=`echo $ld_ver | sed -n \
3053 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3055 ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)\(-*\)\([01][0-9]\)\2\([0-3][0-9]\).*$,\1\3\4,p'`
3056 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3057 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3058 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
3062 # Solaris 2 ld -V output looks like this for a regular version:
3064 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
3066 # but test versions add stuff at the end:
3068 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
3070 # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
3071 # numbers can be used in ld.so.1 feature checks even if a different
3072 # linker is configured.
3073 ld_ver=`$gcc_cv_ld -V 2>&1`
3074 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
3075 ld_vers=`echo $ld_ver | sed -n \
3076 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
3077 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3078 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3086 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
3087 [[if test $in_tree_ld = yes ; then
3089 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \
3090 && test $in_tree_ld_is_elf = yes; then
3091 gcc_cv_ld_hidden=yes
3094 gcc_cv_ld_hidden=yes
3095 if test x"$ld_is_gold" = xyes; then
3097 elif test x"$ld_is_mold" = xyes; then
3099 elif echo "$ld_ver" | grep GNU > /dev/null; then
3100 if test 0"$ld_date" -lt 20020404; then
3101 if test -n "$ld_date"; then
3102 # If there was date string, but was earlier than 2002-04-04, fail
3104 elif test -z "$ld_vers"; then
3105 # If there was no date string nor ld version number, something is wrong
3108 test -z "$ld_vers_patch" && ld_vers_patch=0
3109 if test "$ld_vers_major" -lt 2; then
3111 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
3112 gcc_cv_ld_hidden="no"
3113 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
3121 gcc_cv_ld_hidden=yes
3124 # Darwin ld has some visibility support.
3125 gcc_cv_ld_hidden=yes
3127 hppa64*-*-hpux* | ia64*-*-hpux*)
3128 gcc_cv_ld_hidden=yes
3131 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
3132 # .symbolic was only added in Solaris 9 12/02.
3133 gcc_cv_ld_hidden=yes
3141 libgcc_visibility=no
3142 AC_SUBST(libgcc_visibility)
3143 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
3144 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
3145 libgcc_visibility=yes
3146 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
3147 [Define if your assembler and linker support .hidden.])
3150 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3151 gcc_cv_ld_ro_rw_mix=unknown
3152 if test $in_tree_ld = yes ; then
3153 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \
3154 && test $in_tree_ld_is_elf = yes; then
3155 gcc_cv_ld_ro_rw_mix=read-write
3157 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3158 echo '.section myfoosect, "a"' > conftest1.s
3159 echo '.section myfoosect, "aw"' > conftest2.s
3160 echo '.byte 1' >> conftest2.s
3161 echo '.section myfoosect, "a"' > conftest3.s
3162 echo '.byte 0' >> conftest3.s
3163 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3164 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3165 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3166 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3167 conftest2.o conftest3.o > /dev/null 2>&1; then
3168 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3169 | sed -e '/myfoosect/!d' -e N`
3170 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3171 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3172 gcc_cv_ld_ro_rw_mix=read-only
3174 gcc_cv_ld_ro_rw_mix=read-write
3179 rm -f conftest.* conftest[123].*
3182 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3183 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3184 [Define if your linker links a mix of read-only
3185 and read-write sections into a read-write section.])
3187 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3189 gcc_AC_INITFINI_ARRAY
3191 # Check if we have .[us]leb128, and support symbol arithmetic with it.
3192 # Older versions of GAS and some non-GNU assemblers, have a bugs handling
3193 # these directives, even when they appear to accept them.
3194 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,,
3201 .uleb128 0x8000000000000000
3204 if test "x$gcc_cv_objdump" != x; then
3205 if $gcc_cv_objdump -s conftest.o 2>/dev/null \
3206 | grep '04800a8e 78808080 80808080 808001' >/dev/null; then
3207 gcc_cv_as_leb128=yes
3209 elif test "x$gcc_cv_otool" != x; then
3210 if $gcc_cv_otool -d conftest.o 2>/dev/null \
3211 | grep '04 80 0a 8e 78 80 80 80 80 80 80 80 80 80 01' >/dev/null; then
3212 gcc_cv_as_leb128=yes
3215 # play safe, assume the assembler is broken.
3219 [AC_DEFINE(HAVE_AS_LEB128, 1,
3220 [Define if your assembler supports .sleb128 and .uleb128.])],
3221 [AC_DEFINE(HAVE_AS_LEB128, 0,
3222 [Define if your assembler supports .sleb128 and .uleb128.])])
3224 # Determine if an .eh_frame section is read-only.
3225 gcc_fn_eh_frame_ro () {
3226 $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
3227 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
3228 sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
3231 # Check if we have assembler support for unwind directives.
3232 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,,
3238 .cfi_escape 1, 2, 3, 4, 5
3242 # If the linker used on Solaris (like Sun ld) isn't capable of merging
3243 # read-only and read-write sections, we need to make sure that the
3244 # assembler used emits read-write .eh_frame sections.
3245 if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
3246 gcc_cv_as_cfi_directive=yes
3247 elif test "x$gcc_cv_objdump" = x; then
3248 # No objdump, err on the side of caution.
3249 gcc_cv_as_cfi_directive=no
3251 if test x$gas = xyes; then
3259 sparc*-*-solaris2.*)
3260 # On Solaris/SPARC, .eh_frame sections should always be read-write.
3261 if gcc_fn_eh_frame_ro $as_32_opt \
3262 || gcc_fn_eh_frame_ro $as_64_opt; then
3263 gcc_cv_as_cfi_directive=no
3265 gcc_cv_as_cfi_directive=yes
3268 i?86-*-solaris2.* | x86_64-*-solaris2.*)
3269 # On Solaris/x86, make sure that GCC and assembler agree on using
3270 # read-only .eh_frame sections for 64-bit.
3271 if gcc_fn_eh_frame_ro $as_32_opt; then
3272 gcc_cv_as_cfi_directive=no
3273 elif gcc_fn_eh_frame_ro $as_64_opt; then
3274 gcc_cv_as_cfi_directive=yes
3276 gcc_cv_as_cfi_directive=no
3283 gcc_cv_as_cfi_directive=yes
3286 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3287 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,,
3290 .cfi_adjust_cfa_offset 64
3292 .cfi_adjust_cfa_offset 128
3295 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3296 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
3297 gcc_cv_as_cfi_advance_working=yes
3301 # no objdump, err on the side of caution
3302 gcc_cv_as_cfi_advance_working=no
3304 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3305 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3306 [`if test $gcc_cv_as_cfi_directive = yes \
3307 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3308 [Define 0/1 if your assembler supports CFI directives.])
3310 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3311 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3312 gcc_cv_as_cfi_personality_directive,,
3315 .cfi_personality 0, symbol
3317 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3318 [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3319 [Define 0/1 if your assembler supports .cfi_personality.])
3321 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3322 gcc_cv_as_cfi_sections_directive,,
3324 .cfi_sections .debug_frame, .eh_frame
3328 win32 | pe | cygwin* | mingw32*)
3329 # Need to check that we generated the correct relocation for the
3330 # .debug_frame section. This was fixed for binutils 2.21.
3331 gcc_cv_as_cfi_sections_directive=no
3332 if test "x$gcc_cv_objdump" != x; then
3333 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3334 grep secrel > /dev/null; then
3335 gcc_cv_as_cfi_sections_directive=yes
3340 gcc_cv_as_cfi_sections_directive=yes
3343 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3344 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3345 [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3346 [Define 0/1 if your assembler supports .cfi_sections.])
3348 # GAS versions up to and including 2.11.0 may mis-optimize
3350 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,,
3357 .section .eh_frame,"aw",@progbits
3359 .4byte .LECIE1-.LSCIE1
3373 .4byte .LEFDE1-.LASFDE1
3375 .4byte .LASFDE1-__FRAME_BEGIN__
3383 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3384 cat > conftest.lit <<EOF
3385 0000 10000000 00000000 017a0001 781a0004 .........z..x...
3386 0010 01000000 12000000 18000000 00000000 ................
3387 0020 08000000 04080000 0044 .........D @&t@
3389 cat > conftest.big <<EOF
3390 0000 00000010 00000000 017a0001 781a0004 .........z..x...
3391 0010 00000001 00000012 00000018 00000000 ................
3392 0020 00000008 04000000 0844 .........D @&t@
3394 # If the assembler didn't choke, and we can objdump,
3395 # and we got the correct data, then succeed.
3396 # The text in the here-document typically retains its unix-style line
3397 # endings, while the output of objdump will use host line endings.
3398 # Therefore, use diff -b for the comparisons.
3399 if test x$gcc_cv_objdump != x \
3400 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3401 | tail -3 > conftest.got \
3402 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3403 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3405 gcc_cv_as_eh_frame=yes
3406 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3407 gcc_cv_as_eh_frame=buggy
3409 # Uh oh, what do we do now?
3410 gcc_cv_as_eh_frame=no
3413 if test $gcc_cv_as_eh_frame = buggy; then
3414 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3415 [Define if your assembler mis-optimizes .eh_frame data.])
3418 # Test if the assembler supports the section flag 'e' or #exclude for
3419 # specifying an excluded section.
3420 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3424 if test $gcc_cv_as_section_exclude_e = no; then
3426 # Solaris as uses #exclude instead.
3430 conftest_s='.section "foo1", #exclude'
3432 i?86-*-solaris2* | x86_64-*-solaris2*)
3433 conftest_s='.section foo1, #exclude'
3438 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,
3442 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3443 [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3444 [Define if your assembler supports specifying the exclude section flag.])
3446 #~ # Test if the assembler supports the section flag 'R' for specifying
3447 #~ # section with SHF_GNU_RETAIN.
3448 #~ case "${target}" in
3449 #~ # Solaris may use GNU assembler with Solairs ld. Even if GNU
3450 #~ # assembler supports the section flag 'R', it doesn't mean that
3451 #~ # Solairs ld supports it.
3453 #~ gcc_cv_as_shf_gnu_retain=no
3456 #~ gcc_GAS_CHECK_FEATURE([section 'R' flag], gcc_cv_as_shf_gnu_retain,
3457 #~ [--fatal-warnings],
3458 #~ [.section .foo,"awR",%progbits
3462 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_GNU_RETAIN,
3463 #~ [`if test $gcc_cv_as_shf_gnu_retain = yes; then echo 1; else echo 0; fi`],
3464 #~ [Define 0/1 if your assembler supports marking sections with SHF_GNU_RETAIN flag.])
3466 #~ # Test if the assembler supports the section flag 'o' for specifying
3467 #~ # section with link-order.
3468 #~ case "${target}" in
3469 #~ # Solaris may use GNU assembler with Solairs ld. Even if GNU
3470 #~ # assembler supports the section flag 'o', it doesn't mean that
3471 #~ # Solairs ld supports it.
3473 #~ gcc_cv_as_section_link_order=no
3476 #~ gcc_GAS_CHECK_FEATURE([section 'o' flag], gcc_cv_as_section_link_order,
3477 #~ [--fatal-warnings],
3478 #~ [.section .foo,"a"
3480 #~ .section __patchable_function_entries,"awo",%progbits,.foo
3484 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_LINK_ORDER,
3485 #~ [`if test $gcc_cv_as_section_link_order = yes; then echo 1; else echo 0; fi`],
3486 #~ [Define 0/1 if your assembler supports 'o' flag in .section directive.])
3488 #~ gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3489 #~ [--fatal-warnings],
3490 #~ [.section .rodata.str, "aMS", @progbits, 1])
3491 #~ if test $gcc_cv_as_shf_merge = no; then
3492 #~ gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3493 #~ [--fatal-warnings],
3494 #~ [.section .rodata.str, "aMS", %progbits, 1])
3496 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3497 #~ [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3498 #~ [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3500 #~ gcc_cv_ld_aligned_shf_merge=yes
3501 #~ case "$target" in
3502 #~ # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
3504 #~ sparc*-*-solaris2.11*)
3505 #~ if test x"$gnu_ld" = xno \
3506 #~ && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
3507 #~ gcc_cv_ld_aligned_shf_merge=no
3511 #~ AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
3512 #~ [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
3513 #~ [Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
3515 #~ gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive,,
3516 #~ [.stabs "gcc2_compiled.",60,0,0,0],,
3517 #~ [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
3518 #~ [Define if your assembler supports .stabs.])])
3520 #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3521 #~ gcc_cv_as_comdat_group,
3522 #~ [--fatal-warnings],
3523 #~ [.section .text,"axG",@progbits,.foo,comdat])
3524 #~ if test $gcc_cv_as_comdat_group = yes; then
3525 #~ gcc_cv_as_comdat_group_percent=no
3526 #~ gcc_cv_as_comdat_group_group=no
3528 #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3529 #~ gcc_cv_as_comdat_group_percent,
3530 #~ [--fatal-warnings],
3531 #~ [.section .text,"axG",%progbits,.foo,comdat])
3532 #~ if test $gcc_cv_as_comdat_group_percent = yes; then
3533 #~ gcc_cv_as_comdat_group_group=no
3535 #~ case "${target}" in
3536 #~ # Sun as uses a completely different syntax.
3538 #~ case "${target}" in
3539 #~ sparc*-*-solaris2*)
3541 #~ .group foo,".text%foo",#comdat
3542 #~ .section ".text%foo", #alloc,#execinstr,#progbits
3547 #~ i?86-*-solaris2* | x86_64-*-solaris2*)
3549 #~ .group foo,.text%foo,#comdat
3550 #~ .section .text%foo, "ax", @progbits
3556 #~ gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3557 #~ gcc_cv_as_comdat_group_group,
3561 #~ if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3562 #~ gcc_cv_as_comdat_group_group=no
3566 #~ if test x"$ld_is_gold" = xyes; then
3568 #~ elif test x"$ld_is_mold" = xyes; then
3570 #~ elif test $in_tree_ld = yes ; then
3572 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
3573 #~ && test $in_tree_ld_is_elf = yes; then
3576 #~ elif echo "$ld_ver" | grep GNU > /dev/null; then
3578 #~ if test 0"$ld_date" -lt 20050308; then
3579 #~ if test -n "$ld_date"; then
3580 #~ # If there was date string, but was earlier than 2005-03-08, fail
3582 #~ elif test "$ld_vers_major" -lt 2; then
3584 #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3589 #~ changequote(,)dnl
3590 #~ case "${target}" in
3591 #~ *-*-solaris2.1[1-9]*)
3593 #~ # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3594 #~ # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3597 #~ # If using Sun as for COMDAT group as emitted by GCC, one needs at
3598 #~ # least ld version 1.2267.
3599 #~ if test "$ld_vers_major" -gt 1; then
3601 #~ elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3603 #~ elif test "$ld_vers_minor" -ge 2267; then
3608 #~ # Assume linkers other than GNU ld don't support COMDAT group.
3612 #~ changequote([,])dnl
3614 #~ # Allow overriding the automatic COMDAT group tests above.
3615 #~ AC_ARG_ENABLE(comdat,
3616 #~ [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3617 #~ [comdat_group="$enable_comdat"])
3618 #~ if test $comdat_group = no; then
3619 #~ gcc_cv_as_comdat_group=no
3620 #~ gcc_cv_as_comdat_group_percent=no
3621 #~ gcc_cv_as_comdat_group_group=no
3623 #~ AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3624 #~ [`if test $gcc_cv_as_comdat_group = yes \
3625 #~ || test $gcc_cv_as_comdat_group_percent = yes \
3626 #~ || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3627 #~ [Define 0/1 if your assembler and linker support COMDAT groups.])
3629 #~ # Restrict this test to Solaris/x86: other targets define this statically.
3630 #~ case "${target}" in
3631 #~ i?86-*-solaris2* | x86_64-*-solaris2*)
3632 #~ AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
3633 #~ if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
3634 #~ hidden_linkonce=yes
3636 #~ case "${target}" in
3637 #~ # Full support for hidden thunks in linkonce sections only appeared in
3638 #~ # Solaris 11/OpenSolaris.
3639 #~ *-*-solaris2.1[[1-9]]*)
3640 #~ hidden_linkonce=yes
3643 #~ hidden_linkonce=no
3647 #~ AC_MSG_RESULT($hidden_linkonce)
3648 #~ AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
3649 #~ [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
3650 #~ [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
3654 #~ gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3655 #~ gcc_cv_as_is_stmt,,
3658 #~ .loc 1 1 0 is_stmt 1],,
3659 #~ [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3660 #~ [Define if your assembler supports the .loc is_stmt sub-directive.])])
3662 #~ gcc_GAS_CHECK_FEATURE([line table discriminator support],
3663 #~ gcc_cv_as_discriminator,,
3666 #~ .loc 1 1 0 discriminator 1],,
3667 #~ [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3668 #~ [Define if your assembler supports the .loc discriminator sub-directive.])])
3670 # Catch the newlib flag of the same name so we can gate GCC features on it.
3671 AC_ARG_ENABLE(newlib-nano-formatted-io,
3672 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3674 [case "${enableval}" in
3678 AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3682 #~ # Thread-local storage - the check is heavily parameterized.
3685 #~ case "$target" in
3686 #~ changequote(,)dnl
3689 #~ .section ".tdata","awT",@progbits
3692 #~ ldq $27,__tls_get_addr($29) !literal!1
3693 #~ lda $16,foo($29) !tlsgd!1
3694 #~ jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
3695 #~ ldq $27,__tls_get_addr($29) !literal!2
3696 #~ lda $16,foo($29) !tlsldm!2
3697 #~ jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
3698 #~ ldq $1,foo($29) !gotdtprel
3699 #~ ldah $2,foo($29) !dtprelhi
3700 #~ lda $3,foo($2) !dtprello
3701 #~ lda $4,foo($29) !dtprel
3702 #~ ldq $1,foo($29) !gottprel
3703 #~ ldah $2,foo($29) !tprelhi
3704 #~ lda $3,foo($2) !tprello
3705 #~ lda $4,foo($29) !tprel'
3706 #~ tls_as_opt=--fatal-warnings
3710 #~ add_s r0,r0, @foo@tpoff'
3712 #~ cris-*-*|crisv32-*-*)
3714 #~ .section ".tdata","awT",@progbits
3719 #~ tls_as_opt=--fatal-warnings
3723 #~ .section ".tdata","awT",@progbits
3726 #~ call #gettlsoff(x)'
3733 #~ .section ".tdata","awT",@progbits
3737 #~ addil LT%foo-$tls_gdidx$,gp
3738 #~ ldo RT%foo-$tls_gdidx$(%r1),%arg0
3741 #~ addil LT%foo-$tls_ldidx$,gp
3743 #~ ldo RT%foo-$tls_ldidx$(%r1),%arg0
3744 #~ addil LR%foo-$tls_dtpoff$,%ret0
3745 #~ ldo RR%foo-$tls_dtpoff$(%r1),%t1
3747 #~ addil LT%foo-$tls_ieoff$,gp
3748 #~ ldw RT%foo-$tls_ieoff$(%r1),%t2
3751 #~ addil LR%foo-$tls_leoff$,%t1
3752 #~ ldo RR%foo-$tls_leoff$(%r1),%t2'
3753 #~ tls_as_opt=--fatal-warnings
3757 #~ .section ".tdata","awT",%progbits
3760 #~ .word foo(gottpoff)
3763 #~ .word foo(tlsldm)
3764 #~ .word foo(tlsldo)'
3766 #~ i[34567]86-*-* | x86_64-*-*)
3767 #~ case "$target" in
3768 #~ i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3775 #~ if test x$on_solaris = xyes && test x$gas_flag = xno; then
3777 #~ .section .tdata,"awt",@progbits'
3778 #~ tls_section_flag=t
3779 #~ changequote([,])dnl
3780 #~ AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3781 #~ [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3782 #~ changequote(,)dnl
3785 #~ .section ".tdata","awT",@progbits'
3786 #~ tls_section_flag=T
3787 #~ tls_as_opt="--fatal-warnings"
3789 #~ case "$target" in
3791 #~ if test x$on_solaris = xyes; then
3792 #~ case $gas_flag in
3793 #~ yes) tls_as_opt="$tls_as_opt --32" ;;
3796 #~ conftest_s="$conftest_s
3800 #~ leal foo@tlsgd(,%ebx,1), %eax
3801 #~ leal foo@tlsldm(%ebx), %eax
3802 #~ leal foo@dtpoff(%eax), %edx
3803 #~ movl foo@gottpoff(%ebx), %eax
3804 #~ subl foo@gottpoff(%ebx), %eax
3805 #~ addl foo@gotntpoff(%ebx), %eax
3806 #~ movl foo@indntpoff, %eax
3807 #~ movl \$foo@tpoff, %eax
3808 #~ subl \$foo@tpoff, %eax
3809 #~ leal foo@ntpoff(%ecx), %eax"
3812 #~ if test x$on_solaris = xyes; then
3813 #~ case $gas_flag in
3814 #~ yes) tls_as_opt="$tls_as_opt --64" ;;
3815 #~ no) tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3818 #~ conftest_s="$conftest_s
3822 #~ leaq foo@tlsgd(%rip), %rdi
3823 #~ leaq foo@tlsld(%rip), %rdi
3824 #~ leaq foo@dtpoff(%rax), %rdx
3825 #~ movq foo@gottpoff(%rip), %rax
3826 #~ movq \$foo@tpoff, %rax"
3832 #~ .section ".tdata","awT",@progbits
3835 #~ addl r16 = @ltoff(@dtpmod(foo#)), gp
3836 #~ addl r17 = @ltoff(@dtprel(foo#)), gp
3837 #~ addl r18 = @ltoff(@tprel(foo#)), gp
3838 #~ addl r19 = @dtprel(foo#), gp
3839 #~ adds r21 = @dtprel(foo#), r13
3840 #~ movl r23 = @dtprel(foo#)
3841 #~ addl r20 = @tprel(foo#), gp
3842 #~ adds r22 = @tprel(foo#), r13
3843 #~ movl r24 = @tprel(foo#)'
3844 #~ tls_as_opt=--fatal-warnings
3848 #~ .section .tdata,"awT",@progbits
3852 #~ bl __tls_get_addr'
3853 #~ tls_first_major=0
3854 #~ tls_first_minor=0
3855 #~ tls_as_opt='--fatal-warnings'
3859 #~ .section .tdata,"awT",@progbits
3863 #~ addik r5,r20,x@TLSGD
3864 #~ addik r5,r20,x@TLSLDM'
3865 #~ tls_as_opt='--fatal-warnings'
3869 #~ .section .tdata,"awT",@progbits
3873 #~ addiu $4, $28, %tlsgd(x)
3874 #~ addiu $4, $28, %tlsldm(x)
3875 #~ lui $4, %dtprel_hi(x)
3876 #~ addiu $4, $4, %dtprel_lo(x)
3877 #~ lw $4, %gottprel(x)($28)
3878 #~ lui $4, %tprel_hi(x)
3879 #~ addiu $4, $4, %tprel_lo(x)'
3880 #~ tls_as_opt='-32 --fatal-warnings'
3884 #~ .section .tdata,"awT",@progbits
3889 #~ move.l x@TLSGD(%a5),%a0
3890 #~ move.l x@TLSLDM(%a5),%a0
3891 #~ move.l x@TLSLDO(%a5),%a0
3892 #~ move.l x@TLSIE(%a5),%a0
3893 #~ move.l x@TLSLE(%a5),%a0'
3894 #~ tls_as_opt='--fatal-warnings'
3898 #~ .section ".tdata","awT",@progbits'
3899 #~ tls_as_opt="--fatal-warnings"
3903 #~ .section ".tdata","awT",%progbits
3906 #~ adrp x0, :tlsgd:x
3907 #~ add x0, x0, #:tlsgd_lo12:x
3908 #~ bl __tls_get_addr
3910 #~ tls_as_opt='--fatal-warnings'
3914 #~ .section ".tdata","awT",@progbits
3917 #~ l.movhi r3, tpoffha(foo)
3918 #~ l.add r3, r3, r10
3919 #~ l.lwz r4, tpofflo(foo)(r3)'
3920 #~ tls_as_opt=--fatal-warnings
3922 #~ powerpc-ibm-aix*)
3924 #~ .extern __get_tpointer
3927 #~ .tc a[TC],a[TL]@le
3931 #~ bla __get_tpointer
3940 #~ .section ".tdata","awT",@progbits
3948 #~ addi 3,2,ld0@got@tlsgd
3949 #~ bl .__tls_get_addr
3952 #~ bl .__tls_get_addr
3954 #~ addi 3,2,x1@got@tlsld
3955 #~ bl .__tls_get_addr
3957 #~ addi 9,3,x1@dtprel
3958 #~ bl .__tls_get_addr
3960 #~ addis 9,3,x2@dtprel@ha
3961 #~ addi 9,9,x2@dtprel@l
3962 #~ bl .__tls_get_addr
3964 #~ ld 9,x3@got@dtprel(2)
3966 #~ bl .__tls_get_addr
3968 #~ tls_as_opt="-a64 --fatal-warnings"
3972 #~ .section ".tdata","awT",@progbits
3980 #~ addi 3,31,ld0@got@tlsgd
3981 #~ bl __tls_get_addr
3982 #~ addi 3,31,x1@got@tlsld
3983 #~ bl __tls_get_addr
3984 #~ addi 9,3,x1@dtprel
3985 #~ addis 9,3,x2@dtprel@ha
3986 #~ addi 9,9,x2@dtprel@l
3987 #~ lwz 9,x3@got@tprel(31)
3989 #~ addi 9,2,x1@tprel
3990 #~ addis 9,2,x2@tprel@ha
3991 #~ addi 9,9,x2@tprel@l'
3992 #~ tls_as_opt="-a32 --fatal-warnings"
3996 #~ .section .tdata,"awT",@progbits
4000 #~ call __tls_get_addr'
4001 #~ tls_as_opt='--fatal-warnings'
4005 #~ .section ".tdata","awT",@progbits
4012 #~ .long foo@GOTNTPOFF
4013 #~ .long foo@INDNTPOFF
4014 #~ l %r1,foo@GOTNTPOFF(%r12)
4015 #~ l %r1,0(%r1):tls_load:foo
4016 #~ bas %r14,0(%r1,%r13):tls_gdcall:foo
4017 #~ bas %r14,0(%r1,%r13):tls_ldcall:foo'
4018 #~ tls_as_opt="-m31 --fatal-warnings"
4022 #~ .section ".tdata","awT",@progbits
4029 #~ .quad foo@GOTNTPOFF
4030 #~ lg %r1,foo@GOTNTPOFF(%r12)
4031 #~ larl %r1,foo@INDNTPOFF
4032 #~ brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
4033 #~ brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
4034 #~ tls_as_opt="-m64 -Aesame --fatal-warnings"
4036 #~ sh-*-* | sh[123456789lbe]*-*-*)
4038 #~ .section ".tdata","awT",@progbits
4044 #~ .long foo@GOTTPOFF
4046 #~ tls_as_opt=--fatal-warnings
4049 #~ case "$target" in
4050 #~ sparc*-sun-solaris2.*)
4057 #~ if test x$on_solaris = xyes && test x$gas_flag = xno; then
4059 #~ .section ".tdata",#alloc,#write,#tls'
4062 #~ .section ".tdata","awT",@progbits'
4063 #~ tls_as_opt="-32 --fatal-warnings"
4065 #~ conftest_s="$conftest_s
4068 #~ sethi %tgd_hi22(foo), %o0
4069 #~ add %o0, %tgd_lo10(foo), %o1
4070 #~ add %l7, %o1, %o0, %tgd_add(foo)
4071 #~ call __tls_get_addr, %tgd_call(foo)
4072 #~ sethi %tldm_hi22(foo), %l1
4073 #~ add %l1, %tldm_lo10(foo), %l2
4074 #~ add %l7, %l2, %o0, %tldm_add(foo)
4075 #~ call __tls_get_addr, %tldm_call(foo)
4076 #~ sethi %tldo_hix22(foo), %l3
4077 #~ xor %l3, %tldo_lox10(foo), %l4
4078 #~ add %o0, %l4, %l5, %tldo_add(foo)
4079 #~ sethi %tie_hi22(foo), %o3
4080 #~ add %o3, %tie_lo10(foo), %o3
4081 #~ ld [%l7 + %o3], %o2, %tie_ld(foo)
4082 #~ add %g7, %o2, %o4, %tie_add(foo)
4083 #~ sethi %tle_hix22(foo), %l1
4084 #~ xor %l1, %tle_lox10(foo), %o5
4085 #~ ld [%g7 + %o5], %o1"
4089 #~ .section ".tdata","awT",@progbits
4092 #~ addli r0, zero, tls_gd(foo)
4093 #~ auli r0, zero, tls_gd_ha16(foo)
4094 #~ addli r0, r0, tls_gd_lo16(foo)
4095 #~ jal __tls_get_addr
4096 #~ addli r0, zero, tls_ie(foo)
4097 #~ auli r0, r0, tls_ie_ha16(foo)
4098 #~ addli r0, r0, tls_ie_lo16(foo)'
4099 #~ tls_as_opt="--fatal-warnings"
4103 #~ .section ".tdata","awT",@progbits
4106 #~ shl16insli r0, zero, hw0_last_tls_gd(foo)
4107 #~ shl16insli r0, zero, hw1_last_tls_gd(foo)
4108 #~ shl16insli r0, r0, hw0_tls_gd(foo)
4109 #~ jal __tls_get_addr
4110 #~ shl16insli r0, zero, hw1_last_tls_ie(foo)
4111 #~ shl16insli r0, r0, hw0_tls_ie(foo)'
4112 #~ tls_as_opt="--fatal-warnings"
4116 #~ .section ".tdata","awT",@progbits
4119 #~ movi a8, foo@TLSFUNC
4120 #~ movi a10, foo@TLSARG
4121 #~ callx8.tls a8, foo@TLSCALL'
4123 #~ changequote([,])dnl
4125 #~ set_have_as_tls=no
4126 #~ if test "x$enable_tls" = xno ; then
4127 #~ : # TLS explicitly disabled.
4128 #~ elif test "x$enable_tls" = xyes ; then
4129 #~ set_have_as_tls=yes # TLS explicitly enabled.
4130 #~ elif test -z "$conftest_s"; then
4131 #~ : # If we don't have a check, assume no support.
4133 #~ gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
4134 #~ [$tls_as_opt], [$conftest_s],,
4135 #~ [set_have_as_tls=yes])
4137 #~ if test $set_have_as_tls = yes ; then
4138 #~ AC_DEFINE(HAVE_AS_TLS, 1,
4139 #~ [Define if your assembler and linker support thread-local storage.])
4142 # Target-specific assembler checks.
4144 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
4145 gcc_cv_ld_static_dynamic=no
4146 gcc_cv_ld_static_option='-Bstatic'
4147 gcc_cv_ld_dynamic_option='-Bdynamic'
4148 if test $in_tree_ld = yes ; then
4149 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2; then
4150 gcc_cv_ld_static_dynamic=yes
4152 elif test x$gcc_cv_ld != x; then
4153 # Check if linker supports -Bstatic/-Bdynamic option
4154 if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
4155 && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
4156 gcc_cv_ld_static_dynamic=yes
4159 # AIX ld uses -b flags
4160 *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
4161 gcc_cv_ld_static_dynamic=yes
4162 gcc_cv_ld_static_option="-bstatic"
4163 gcc_cv_ld_dynamic_option="-bdynamic"
4165 # HP-UX ld uses -a flags to select between shared and archive.
4167 if test x"$gnu_ld" = xno; then
4168 gcc_cv_ld_static_dynamic=yes
4169 gcc_cv_ld_static_option="-aarchive_shared"
4170 gcc_cv_ld_dynamic_option="-adefault"
4173 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
4175 gcc_cv_ld_static_dynamic=yes
4180 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
4181 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
4182 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
4183 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
4184 [Define to the linker option to disable use of shared objects.])
4185 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
4186 [Define to the linker option to enable use of shared objects.])
4188 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
4190 AC_MSG_CHECKING(linker --version-script option)
4191 gcc_cv_ld_version_script=no
4192 ld_version_script_option=''
4193 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4194 gcc_cv_ld_version_script=yes
4195 ld_version_script_option='--version-script'
4196 elif test x$gcc_cv_ld != x; then
4198 # Solaris 2 ld always supports -M. It also supports a subset of
4199 # --version-script since Solaris 11.4, but requires
4200 # -z gnu-version-script-compat to activate.
4202 gcc_cv_ld_version_script=yes
4203 ld_version_script_option='-M'
4207 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4208 AC_MSG_RESULT($gcc_cv_ld_version_script)
4209 AC_SUBST(ld_version_script_option)
4211 AC_MSG_CHECKING(linker soname option)
4213 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
4214 gcc_cv_ld_soname=yes
4215 ld_soname_option='-soname'
4216 elif test x$gcc_cv_ld != x; then
4219 gcc_cv_ld_soname=yes
4220 ld_soname_option='-install_name'
4222 # Solaris 2 ld always supports -h. It also supports --soname for GNU
4223 # ld compatiblity since some Solaris 10 update.
4225 gcc_cv_ld_soname=yes
4226 ld_soname_option='-h'
4230 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
4231 AC_MSG_RESULT($gcc_cv_ld_soname)
4232 AC_SUBST(ld_soname_option)
4234 if test x"$demangler_in_ld" = xyes; then
4235 AC_MSG_CHECKING(linker --demangle support)
4236 gcc_cv_ld_demangle=no
4237 if test $in_tree_ld = yes; then
4238 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
4239 gcc_cv_ld_demangle=yes
4241 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
4242 # Check if the GNU linker supports --demangle option
4243 if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
4244 gcc_cv_ld_demangle=yes
4247 if test x"$gcc_cv_ld_demangle" = xyes; then
4248 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
4249 [Define if your linker supports --demangle option.])
4251 AC_MSG_RESULT($gcc_cv_ld_demangle)
4254 AC_MSG_CHECKING(linker plugin support)
4256 if test -f liblto_plugin.la; then
4257 save_ld_ver="$ld_ver"
4258 save_ld_vers_major="$ld_vers_major"
4259 save_ld_vers_minor="$ld_vers_minor"
4260 save_ld_is_gold="$ld_is_gold"
4264 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4266 # FIXME: ld_is_gold?
4267 ld_vers_major="$gcc_cv_gld_major_version"
4268 ld_vers_minor="$gcc_cv_gld_minor_version"
4270 # Determine plugin linker version.
4271 # FIXME: Partial duplicate from above, generalize.
4273 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4274 if echo "$ld_ver" | grep GNU > /dev/null; then
4275 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4277 ld_vers=`echo $ld_ver | sed -n \
4278 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4280 ld_vers=`echo $ld_ver | sed -n \
4281 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4283 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4284 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4289 # Determine plugin support.
4290 if echo "$ld_ver" | grep GNU > /dev/null; then
4291 # Require GNU ld or gold 2.21+ for plugin support by default.
4292 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4294 elif test "$ld_is_mold" = yes; then
4296 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4297 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4302 ld_ver="$save_ld_ver"
4303 ld_vers_major="$save_ld_vers_major"
4304 ld_vers_minor="$save_ld_vers_minor"
4305 ld_is_gold="$save_ld_is_gold"
4307 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4308 [Define to the level of your linker's plugin support.])
4309 AC_MSG_RESULT($gcc_cv_lto_plugin)
4311 # Target OS-specific assembler checks.
4313 #~ case "$target_os" in
4315 #~ gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4316 #~ gcc_cv_as_mmacosx_version_min,
4317 #~ [-mmacosx-version-min=10.1], [.text],,
4318 #~ [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4319 #~ [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
4323 # Target CPU-specific assembler checks.
4325 #~ case "$target" in
4327 #~ gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,
4328 #~ [-mabi=lp64], [.text],,,)
4329 #~ if test x$gcc_cv_as_aarch64_mabi = xyes; then
4330 #~ AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4331 #~ [Define if your assembler supports the -mabi option.])
4333 #~ if test x$with_abi = xilp32; then
4334 #~ AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4335 #~ Upgrade the Assembler.])
4337 #~ if test x"$with_multilib_list" = xdefault; then
4338 #~ TM_MULTILIB_CONFIG=lp64
4340 #~ aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4341 #~ for aarch64_multilib in ${aarch64_multilibs}; do
4342 #~ case ${aarch64_multilib} in
4344 #~ AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4345 #~ Upgrade the Assembler.])
4353 #~ # Check if we have binutils support for relocations types needed by -fpic
4354 #~ gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,
4357 #~ ldr x0, [[x2, #:gotpage_lo15:globalsym]]
4358 #~ ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4359 #~ [Define if your assembler supports relocs needed by -fpic.])])
4360 #~ # Enable Branch Target Identification Mechanism and Return Address
4361 #~ # Signing by default.
4362 #~ AC_ARG_ENABLE(standard-branch-protection,
4364 #~ AS_HELP_STRING([--enable-standard-branch-protection],
4365 #~ [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4366 #~ AS_HELP_STRING([--disable-standard-branch-protection],
4367 #~ [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4370 #~ case $enableval in
4372 #~ tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4377 #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4378 #~ Valid choices are 'yes' and 'no'.])
4383 #~ # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4384 #~ AC_ARG_ENABLE(fix-cortex-a53-835769,
4386 #~ AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4387 #~ [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4388 #~ AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4389 #~ [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4392 #~ case $enableval in
4394 #~ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4399 #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4400 #~ Valid choices are 'yes' and 'no'.])
4406 #~ # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4407 #~ AC_ARG_ENABLE(fix-cortex-a53-843419,
4409 #~ AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4410 #~ [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4411 #~ AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4412 #~ [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4415 #~ case $enableval in
4417 #~ tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4422 #~ AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4423 #~ Valid choices are 'yes' and 'no'.])
4431 #~ # All TARGET_ABI_OSF targets.
4432 #~ alpha*-*-linux* | alpha*-*-*bsd*)
4433 #~ gcc_GAS_CHECK_FEATURE([explicit relocation support],
4434 #~ gcc_cv_as_alpha_explicit_relocs,,
4437 #~ extbl $3, $2, $3 !lituse_bytoff!1
4438 #~ ldq $2, a($29) !literal!1
4439 #~ ldq $4, b($29) !literal!2
4440 #~ ldq_u $3, 0($2) !lituse_base!1
4441 #~ ldq $27, f($29) !literal!5
4442 #~ jsr $26, ($27), f !lituse_jsr!5
4443 #~ ldah $29, 0($26) !gpdisp!3
4444 #~ lda $0, c($29) !gprel
4445 #~ ldah $1, d($29) !gprelhigh
4446 #~ lda $1, d($1) !gprellow
4447 #~ lda $29, 0($29) !gpdisp!3],,
4448 #~ [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4449 #~ [Define if your assembler supports explicit relocations.])])
4450 #~ gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4451 #~ gcc_cv_as_alpha_jsrdirect_relocs,,
4454 #~ ldq $27, a($29) !literal!1
4455 #~ jsr $26, ($27), a !lituse_jsrdirect!1],,
4456 #~ [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4457 #~ [Define if your assembler supports the lituse_jsrdirect relocation.])])
4461 #~ gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,
4462 #~ [--mlink-relax], [.text],,
4463 #~ [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4464 #~ [Define if your avr assembler supports --mlink-relax option.])])
4466 #~ gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,
4467 #~ [-mrmw], [.text],,
4468 #~ [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4469 #~ [Define if your avr assembler supports -mrmw option.])])
4471 #~ gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4472 #~ gcc_cv_as_avr_mgccisr,
4473 #~ [-mgcc-isr], [.text
4478 #~ [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4479 #~ [Define if your avr assembler supports -mgcc-isr option.])])
4481 #~ # Check how default linker description file implements .rodata for
4482 #~ # avrxmega3 (PR21472). avr-gcc assumes .rodata is *not* loaded to
4483 #~ # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4484 #~ AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4485 #~ cat > conftest.s <<EOF
4486 #~ .section .rodata,"a",@progbits
4488 #~ ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4492 #~ rm -f conftest.nm
4493 #~ AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4494 #~ AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4495 #~ AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4496 #~ if test -s conftest.nm
4498 #~ if grep ' R xxvaryy' conftest.nm > /dev/null; then
4499 #~ AC_MSG_RESULT(yes)
4500 #~ AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4501 #~ [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4503 #~ AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4504 #~ echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4505 #~ cat conftest.nm >&AS_MESSAGE_LOG_FD
4506 #~ avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4507 #~ AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4510 #~ AC_MSG_RESULT(test failed)
4511 #~ echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4512 #~ cat conftest.s >&AS_MESSAGE_LOG_FD
4513 #~ AC_MSG_WARN([[see `config.log' for details]])
4515 #~ rm -f conftest.s conftest.o conftest.elf conftest.nm
4519 #~ gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4520 #~ gcc_cv_as_cris_no_mul_bug,
4521 #~ [-no-mul-bug-abort], [.text],,
4522 #~ [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4523 #~ [Define if your assembler supports the -no-mul-bug-abort option.])])
4527 #~ gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,
4528 #~ [-relax], [.text],,
4529 #~ [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4530 #~ [Define if your assembler supports -relax option.])])
4532 #~ gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4533 #~ gcc_cv_as_sparc_gotdata_op,
4540 #~ sethi %gdop_hix22(foo), %g1
4541 #~ xor %g1, %gdop_lox10(foo), %g1
4542 #~ ld [[%l7 + %g1]], %g2, %gdop(foo)],
4543 #~ [if test x$gcc_cv_ld != x \
4544 #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4545 #~ if test x$gcc_cv_objdump != x; then
4546 #~ if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4547 #~ | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4548 #~ gcc_cv_as_sparc_gotdata_op=no
4550 #~ gcc_cv_as_sparc_gotdata_op=yes
4555 #~ [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4556 #~ [Define if your assembler and linker support GOTDATA_OP relocs.])])
4558 #~ gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4559 #~ gcc_cv_as_sparc_ua_pcrel,
4567 #~ .uaword %r_disp32(foo)],
4568 #~ [if test x$gcc_cv_ld != x \
4569 #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4570 #~ gcc_cv_as_sparc_ua_pcrel=yes
4573 #~ [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4574 #~ [Define if your assembler and linker support unaligned PC relative relocs.])
4576 #~ gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4577 #~ gcc_cv_as_sparc_ua_pcrel_hidden,
4582 #~ .uaword %r_disp32(foo)
4583 #~ .byte 0x32, 0x33, 0x34
4588 #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4589 #~ && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4590 #~ && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4591 #~ | grep ' 31000000 07323334' > /dev/null 2>&1; then
4592 #~ if $gcc_cv_objdump -R conftest 2> /dev/null \
4593 #~ | grep 'DISP32' > /dev/null 2>&1; then
4596 #~ gcc_cv_as_sparc_ua_pcrel_hidden=yes
4600 #~ [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4601 #~ [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4602 #~ ]) # unaligned pcrel relocs
4604 #~ gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4605 #~ gcc_cv_as_sparc_offsetable_lo10,
4608 #~ or %g1, %lo(ab) + 12, %g1
4609 #~ or %g1, %lo(ab + 12), %g1],
4610 #~ [if test x$gcc_cv_objdump != x \
4611 #~ && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4612 #~ | grep ' 82106000 82106000' > /dev/null 2>&1; then
4613 #~ gcc_cv_as_sparc_offsetable_lo10=yes
4615 #~ [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4616 #~ [Define if your assembler supports offsetable %lo().])])
4618 #~ gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4619 #~ gcc_cv_as_sparc_fmaf,
4622 #~ .register %g2, #scratch
4623 #~ .register %g3, #scratch
4625 #~ fmaddd %f0, %f2, %f4, %f6
4626 #~ addxccc %g1, %g2, %g3
4627 #~ fsrl32 %f2, %f4, %f8
4628 #~ fnaddd %f10, %f12, %f14],,
4629 #~ [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4630 #~ [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4632 #~ gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4633 #~ gcc_cv_as_sparc_sparc4,
4636 #~ .register %g2, #scratch
4637 #~ .register %g3, #scratch
4639 #~ cxbe %g2, %g3, 1f
4640 #~ 1: cwbneg %g2, %g3, 1f
4643 #~ aes_kexpand0 %f4, %f6, %f8
4644 #~ des_round %f38, %f40, %f42, %f44
4645 #~ camellia_f %f54, %f56, %f58, %f60
4646 #~ kasumi_fi_xor %f46, %f48, %f50, %f52],,
4647 #~ [AC_DEFINE(HAVE_AS_SPARC4, 1,
4648 #~ [Define if your assembler supports SPARC4 instructions.])])
4650 #~ gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4651 #~ gcc_cv_as_sparc_sparc5,
4654 #~ .register %g2, #scratch
4655 #~ .register %g3, #scratch
4657 #~ subxc %g1, %g2, %g3
4658 #~ fpadd8 %f0, %f2, %f4],,
4659 #~ [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4660 #~ [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4662 #~ gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4663 #~ gcc_cv_as_sparc_sparc6,
4666 #~ .register %g2, #scratch
4667 #~ .register %g3, #scratch
4670 #~ fpsll64x %f0, %f2, %f4],,
4671 #~ [AC_DEFINE(HAVE_AS_SPARC6, 1,
4672 #~ [Define if your assembler supports SPARC6 instructions.])])
4674 #~ gcc_GAS_CHECK_FEATURE([LEON instructions],
4675 #~ gcc_cv_as_sparc_leon,
4678 #~ .register %g2, #scratch
4679 #~ .register %g3, #scratch
4681 #~ smac %g2, %g3, %g1
4682 #~ umac %g2, %g3, %g1
4683 #~ casa [[%g2]] 0xb, %g3, %g1],,
4684 #~ [AC_DEFINE(HAVE_AS_LEON, 1,
4685 #~ [Define if your assembler supports LEON instructions.])])
4688 #~ changequote(,)dnl
4689 #~ i[34567]86-*-* | x86_64-*-*)
4690 #~ changequote([,])dnl
4691 #~ case $target_os in
4693 #~ # Full C++ conformance when using a shared libstdc++-v3 requires some
4694 #~ # support from the Cygwin DLL, which in more recent versions exports
4695 #~ # wrappers to aid in interposing and redirecting operators new, delete,
4696 #~ # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
4697 #~ # are configuring for a version of Cygwin that exports the wrappers.
4698 #~ if test x$host = x$target && test x$host_cpu = xi686; then
4699 #~ AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4701 #~ # Can't check presence of libc functions during cross-compile, so
4702 #~ # we just have to assume we're building for an up-to-date target.
4703 #~ gcc_ac_cygwin_dll_wrappers=yes
4705 #~ AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4706 #~ [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4707 #~ [Define if you want to generate code by default that assumes that the
4708 #~ Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4710 #~ case $target_os in
4711 #~ cygwin* | pe | mingw32*)
4712 #~ # Recent binutils allows the three-operand form of ".comm" on PE. This
4713 #~ # definition is used unconditionally to initialise the default state of
4714 #~ # the target option variable that governs usage of the feature.
4715 #~ gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,,
4716 #~ [.comm foo,1,32])
4717 #~ AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4718 #~ [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4719 #~ [Define if your assembler supports specifying the alignment
4720 #~ of objects allocated using the GAS .comm command.])
4721 #~ # Used for DWARF 2 in PE
4722 #~ gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4723 #~ gcc_cv_as_ix86_pe_secrel32,,
4728 #~ [if test x$gcc_cv_ld != x \
4729 #~ && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4730 #~ gcc_cv_as_ix86_pe_secrel32=yes
4733 #~ [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4734 #~ [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4735 #~ # Test if the assembler supports the extended form of the .section
4736 #~ # directive that specifies section alignment. LTO support uses this,
4737 #~ # but normally only after installation, so we warn but don't fail the
4738 #~ # configure if LTO is enabled but the assembler does not support it.
4739 #~ gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4740 #~ -fatal-warnings,[.section lto_test,"dr0"])
4741 #~ if test x$gcc_cv_as_section_has_align != xyes; then
4742 #~ case ",$enable_languages," in
4744 #~ AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4750 #~ case $target_os in
4751 #~ darwin2* | darwin19*)
4752 #~ gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
4753 #~ gcc_cv_as_mllvm_x86_pad_for_align,
4754 #~ [-mllvm -x86-pad-for-align=false], [.text],,
4755 #~ [AC_DEFINE(HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN, 1,
4756 #~ [Define if your Mac OS X assembler supports -mllvm -x86-pad-for-align=false.])])
4760 #~ gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,
4761 #~ [-xbrace_comment=no], [.text],,
4762 #~ [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4763 #~ [Define if your assembler supports -xbrace_comment option.])])
4765 #~ gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4766 #~ gcc_cv_as_ix86_filds,,
4767 #~ [filds (%ebp); fists (%ebp)],,
4768 #~ [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4769 #~ [Define if your assembler uses filds and fists mnemonics.])])
4771 #~ gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4772 #~ gcc_cv_as_ix86_fildq,,
4773 #~ [fildq (%ebp); fistpq (%ebp)],,
4774 #~ [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4775 #~ [Define if your assembler uses fildq and fistq mnemonics.])])
4777 #~ gcc_GAS_CHECK_FEATURE([cmov syntax],
4778 #~ gcc_cv_as_ix86_cmov_sun_syntax,,
4779 #~ [cmovl.l %edx, %eax],,
4780 #~ [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4781 #~ [Define if your assembler supports the Sun syntax for cmov.])])
4783 #~ gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4784 #~ gcc_cv_as_ix86_ffreep,,
4785 #~ [ffreep %st(1)],,
4786 #~ [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4787 #~ [Define if your assembler supports the ffreep mnemonic.])])
4789 #~ gcc_GAS_CHECK_FEATURE([.quad directive],
4790 #~ gcc_cv_as_ix86_quad,,
4792 #~ [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4793 #~ [Define if your assembler supports the .quad directive.])])
4795 #~ gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4796 #~ gcc_cv_as_ix86_sahf,,
4799 #~ [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4800 #~ [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4802 #~ gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4803 #~ gcc_cv_as_ix86_interunit_movq,,
4806 #~ movq %rax, %xmm0])
4807 #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4808 #~ [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4809 #~ [Define if your assembler supports interunit movq mnemonic.])
4811 #~ gcc_GAS_CHECK_FEATURE([hle prefixes],
4812 #~ gcc_cv_as_ix86_hle,,
4813 #~ [lock xacquire cmpxchg %esi, (%ecx)],,
4814 #~ [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4815 #~ [Define if your assembler supports HLE prefixes.])])
4817 #~ gcc_GAS_CHECK_FEATURE([swap suffix],
4818 #~ gcc_cv_as_ix86_swap,,
4819 #~ [movl.s %esp, %ebp],,
4820 #~ [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4821 #~ [Define if your assembler supports the swap suffix.])])
4823 #~ gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4824 #~ gcc_cv_as_ix86_diff_sect_delta,,
4825 #~ [.section .rodata
4832 #~ [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4833 #~ [Define if your assembler supports the subtraction of symbols in different sections.])])
4835 #~ gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4836 #~ gcc_cv_as_ix86_rep_lock_prefix,,
4840 #~ rep bsf %ecx, %eax
4841 #~ rep bsr %ecx, %eax
4842 #~ lock addl %edi, (%eax,%esi)
4843 #~ lock orl $0, (%esp)],,
4844 #~ [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4845 #~ [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4847 #~ gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4848 #~ gcc_cv_as_ix86_ud2,,
4850 #~ [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4851 #~ [Define if your assembler supports the 'ud2' mnemonic.])])
4853 #~ # Enforce 32-bit output with gas and gld.
4854 #~ if test x$gas = xyes; then
4855 #~ as_ix86_gas_32_opt="--32"
4857 #~ if echo "$ld_ver" | grep GNU > /dev/null; then
4858 #~ if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4859 #~ ld_ix86_gld_32_opt="-melf_i386_sol2"
4861 #~ ld_ix86_gld_32_opt="-melf_i386"
4865 #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4866 #~ gcc_cv_as_ix86_tlsgdplt,
4867 #~ [$as_ix86_gas_32_opt],
4868 #~ [call tls_gd@tlsgdplt],
4869 #~ [if test x$gcc_cv_ld != x \
4870 #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4871 #~ gcc_cv_as_ix86_tlsgdplt=yes
4874 #~ [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4875 #~ [Define if your assembler and linker support @tlsgdplt.])])
4878 #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4880 #~ .section .text,"ax",@progbits
4881 #~ call tls_ld@tlsldmplt'
4883 #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4884 #~ gcc_cv_as_ix86_tlsldmplt,
4885 #~ [$as_ix86_gas_32_opt],
4887 #~ [if test x$gcc_cv_ld != x \
4888 #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4889 #~ gcc_cv_as_ix86_tlsldmplt=yes
4892 #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4893 #~ [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4894 #~ [Define to 1 if your assembler and linker support @tlsldmplt.])
4897 #~ .section .text,"ax",@progbits
4899 #~ .type _start, @function
4901 #~ leal value@tlsldm(%ebx), %eax
4902 #~ call ___tls_get_addr@plt
4904 #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4905 #~ .type value, @object
4907 #~ gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4908 #~ gcc_cv_as_ix86_tlsldm,
4909 #~ [$as_ix86_gas_32_opt],
4911 #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4912 #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4913 #~ if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4914 #~ || dis conftest 2>/dev/null | grep nop > /dev/null; then
4915 #~ gcc_cv_as_ix86_tlsldm=yes
4919 #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4920 #~ [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4921 #~ [Define to 1 if your assembler and linker support @tlsldm.])
4932 #~ gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4933 #~ gcc_cv_as_ix86_got32x,
4934 #~ [$as_ix86_gas_32_opt],
4936 #~ [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4937 #~ && test x$gcc_cv_readelf != x \
4938 #~ && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4939 #~ | grep R_386_GOT32X > /dev/null 2>&1 \
4940 #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4941 #~ if $gcc_cv_objdump -dw conftest 2>&1 \
4942 #~ | grep 0xffffff > /dev/null 2>&1; then
4943 #~ gcc_cv_as_ix86_got32x=no
4945 #~ gcc_cv_as_ix86_got32x=yes
4949 #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4950 #~ [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4951 #~ [Define 0/1 if your assembler and linker support @GOT.])
4953 #~ gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4954 #~ gcc_cv_as_ix86_gotoff_in_data,
4955 #~ [$as_ix86_gas_32_opt],
4960 #~ .long .L0@GOTOFF])
4961 #~ AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4962 #~ [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4963 #~ [Define true if the assembler supports '.long foo@GOTOFF'.])
4966 #~ .section .text,"ax",@progbits
4968 #~ .type _start, @function
4970 #~ leal ld@tlsldm(%ecx), %eax
4971 #~ call *___tls_get_addr@GOT(%ecx)
4972 #~ leal gd@tlsgd(%ecx), %eax
4973 #~ call *___tls_get_addr@GOT(%ecx)
4975 #~ .section .tdata,"aw'$tls_section_flag'",@progbits
4976 #~ .type ld, @object
4980 #~ .type gd, @object
4983 #~ gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4984 #~ gcc_cv_as_ix86_tls_get_addr_via_got,
4985 #~ [$as_ix86_gas_32_opt],
4987 #~ [if test x$gcc_cv_ld != x \
4988 #~ && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4989 #~ gcc_cv_as_ix86_tls_get_addr_via_got=yes
4992 #~ AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4993 #~ [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4994 #~ [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4998 #~ gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4999 #~ gcc_cv_as_ia64_ltoffx_ldxmov_relocs,,
5001 #~ addl r15 = @ltoffx(x#), gp
5003 #~ ld8.mov r16 = [[r15]], x#
5005 #~ [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
5006 #~ [Define if your assembler supports ltoffx and ldxmov relocations.])])
5014 #~ gcc_GAS_CHECK_FEATURE([.machine directive support],
5015 #~ gcc_cv_as_machine_directive,,
5016 #~ [ .machine ppc7400])
5017 #~ if test x$gcc_cv_as_machine_directive != xyes; then
5018 #~ echo "*** This target requires an assembler supporting \".machine\"" >&2
5019 #~ echo you can get it from: https://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
5020 #~ test x$build = x$target && exit 1
5026 #~ *-*-aix*) conftest_s=' .machine "pwr5"
5027 #~ .csect .text[[PR]]
5029 #~ *-*-darwin*) conftest_s=' .text
5031 #~ *) conftest_s=' .machine power4
5036 #~ gcc_GAS_CHECK_FEATURE([mfcr field support],
5037 #~ gcc_cv_as_powerpc_mfcrf,,
5039 #~ [AC_DEFINE(HAVE_AS_MFCRF, 1,
5040 #~ [Define if your assembler supports mfcr field.])])
5043 #~ *-*-aix*) conftest_s=' .csect .text[[PR]]
5045 #~ addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
5047 #~ conftest_s=' .text
5049 #~ addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
5050 #~ *) conftest_s=' .text
5052 #~ addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
5055 #~ gcc_GAS_CHECK_FEATURE([rel16 relocs],
5056 #~ gcc_cv_as_powerpc_rel16, -a32,
5058 #~ [AC_DEFINE(HAVE_AS_REL16, 1,
5059 #~ [Define if your assembler supports R_PPC_REL16 relocs.])])
5062 #~ *-*-aix*) conftest_s=' .machine "pwr7"
5063 #~ .csect .text[[PR]]
5065 #~ *) conftest_s=' .machine power7
5070 #~ gcc_GAS_CHECK_FEATURE([vector-scalar support],
5071 #~ gcc_cv_as_powerpc_vsx, -a32,
5073 #~ [AC_DEFINE(HAVE_AS_VSX, 1,
5074 #~ [Define if your assembler supports VSX instructions.])])
5076 #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5077 #~ gcc_cv_as_powerpc_gnu_attribute,,
5078 #~ [.gnu_attribute 4,1],,
5079 #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5080 #~ [Define if your assembler supports .gnu_attribute.])])
5082 #~ gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
5083 #~ gcc_cv_as_powerpc_entry_markers,-a64 --fatal-warnings,
5084 #~ [ .reloc .,R_PPC64_ENTRY; nop],,
5085 #~ [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
5086 #~ [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
5088 #~ gcc_GAS_CHECK_FEATURE([plt sequence marker support],
5089 #~ gcc_cv_as_powerpc_pltseq_markers,-a32 --fatal-warnings,
5090 #~ [ .reloc .,R_PPC_PLTSEQ; nop],,
5091 #~ [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
5092 #~ [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
5096 #~ gcc_GAS_CHECK_FEATURE([AIX .ref support],
5097 #~ gcc_cv_as_aix_ref,,
5098 #~ [ .csect stuff[[rw]]
5104 #~ [AC_DEFINE(HAVE_AS_REF, 1,
5105 #~ [Define if your assembler supports .ref])])
5107 #~ gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
5108 #~ gcc_cv_as_aix_dwloc,,
5109 #~ [ .dwsect 0xA0000
5111 #~ .vbyte 4,Lframe..0
5113 #~ [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
5114 #~ [Define if your assembler supports AIX debug frame section label reference.])])
5120 #~ gcc_GAS_CHECK_FEATURE([explicit relocation support],
5121 #~ gcc_cv_as_mips_explicit_relocs,,
5122 #~ [ lw $4,%gp_rel(foo)($4)],,
5123 #~ [if test x$target_cpu_default = x
5124 #~ then target_cpu_default=MASK_EXPLICIT_RELOCS
5125 #~ else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
5128 #~ gcc_GAS_CHECK_FEATURE([-mno-shared support],
5129 #~ gcc_cv_as_mips_no_shared,[-mno-shared], [nop],,
5130 #~ [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
5131 #~ [Define if the assembler understands -mno-shared.])])
5133 #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5134 #~ gcc_cv_as_mips_gnu_attribute,,
5135 #~ [.gnu_attribute 4,1],,
5136 #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5137 #~ [Define if your assembler supports .gnu_attribute.])])
5139 #~ gcc_GAS_CHECK_FEATURE([.module support],
5140 #~ gcc_cv_as_mips_dot_module,[-32],
5143 #~ [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
5144 #~ [Define if your assembler supports .module.])])
5145 #~ if test x$gcc_cv_as_mips_dot_module = xno \
5146 #~ && test x$with_fp_32 != x; then
5148 #~ [Requesting --with-fp-32= requires assembler support for .module.])
5151 #~ gcc_GAS_CHECK_FEATURE([.micromips support],
5152 #~ gcc_cv_as_micromips_support,[--fatal-warnings],
5153 #~ [.set micromips],,
5154 #~ [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
5155 #~ [Define if your assembler supports the .set micromips directive])])
5157 #~ gcc_GAS_CHECK_FEATURE([.dtprelword support],
5158 #~ gcc_cv_as_mips_dtprelword,,
5159 #~ [.section .tdata,"awT",@progbits
5163 #~ .dtprelword x+0x8000],,
5164 #~ [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5165 #~ [Define if your assembler supports .dtprelword.])])
5167 #~ gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
5168 #~ gcc_cv_as_mips_dspr1_mult,,
5177 #~ multu $ac3,$4,$5],,
5178 #~ [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
5179 #~ [Define if your assembler supports DSPR1 mult.])])
5181 #~ AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
5182 #~ gcc_cv_as_ld_jalr_reloc=no
5183 #~ if test $gcc_cv_as_mips_explicit_relocs = yes; then
5184 #~ if test $in_tree_ld = yes ; then
5185 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
5186 #~ && test $in_tree_ld_is_elf = yes; then
5187 #~ gcc_cv_as_ld_jalr_reloc=yes
5189 #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
5190 #~ echo ' .ent x' > conftest.s
5191 #~ echo 'x: lw $2,%got_disp(y)($3)' >> conftest.s
5192 #~ echo ' lw $25,%call16(y)($28)' >> conftest.s
5193 #~ echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
5194 #~ echo '1: jalr $25' >> conftest.s
5195 #~ echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
5196 #~ echo '1: jalr $25' >> conftest.s
5197 #~ echo ' .end x' >> conftest.s
5198 #~ if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
5199 #~ && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
5200 #~ if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
5201 #~ && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
5202 #~ gcc_cv_as_ld_jalr_reloc=yes
5208 #~ if test $gcc_cv_as_ld_jalr_reloc = yes; then
5209 #~ if test x$target_cpu_default = x; then
5210 #~ target_cpu_default=MASK_RELAX_PIC_CALLS
5212 #~ target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
5215 #~ AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
5217 #~ AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
5218 #~ [gcc_cv_ld_mips_personality_relaxation],
5219 #~ [gcc_cv_ld_mips_personality_relaxation=no
5220 #~ if test $in_tree_ld = yes ; then
5221 #~ if test "$gcc_cv_gld_major_version" -eq 2 \
5222 #~ -a "$gcc_cv_gld_minor_version" -ge 21 \
5223 #~ -o "$gcc_cv_gld_major_version" -gt 2; then
5224 #~ gcc_cv_ld_mips_personality_relaxation=yes
5226 #~ elif test x$gcc_cv_as != x \
5227 #~ -a x$gcc_cv_ld != x \
5228 #~ -a x$gcc_cv_readelf != x ; then
5229 #~ cat > conftest.s <<EOF
5231 #~ .cfi_personality 0x80,indirect_ptr
5238 #~ .section .data,"aw",@progbits
5240 #~ .dc.a personality
5242 #~ if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
5243 #~ && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
5244 #~ if $gcc_cv_readelf -d conftest 2>&1 \
5245 #~ | grep TEXTREL > /dev/null 2>&1; then
5247 #~ elif $gcc_cv_readelf --relocs conftest 2>&1 \
5248 #~ | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
5251 #~ gcc_cv_ld_mips_personality_relaxation=yes
5255 #~ rm -f conftest.s conftest.o conftest])
5256 #~ if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
5257 #~ AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
5258 #~ [Define if your linker can relax absolute .eh_frame personality
5259 #~ pointers into PC-relative form.])
5262 #~ gcc_GAS_CHECK_FEATURE([-mnan= support],
5263 #~ gcc_cv_as_mips_nan,
5265 #~ [AC_DEFINE(HAVE_AS_NAN, 1,
5266 #~ [Define if the assembler understands -mnan=.])])
5267 #~ if test x$gcc_cv_as_mips_nan = xno \
5268 #~ && test x$with_nan != x; then
5270 #~ [Requesting --with-nan= requires assembler support for -mnan=])
5274 #~ # Earlier GAS versions generically support .gnu_attribute, but the
5275 #~ # msp430 assembler will not do anything with it.
5276 #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5277 #~ gcc_cv_as_msp430_gnu_attribute,,
5278 #~ [.gnu_attribute 4,1],,
5279 #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5280 #~ [Define if your assembler supports .gnu_attribute.])])
5281 #~ gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5282 #~ gcc_cv_as_msp430_mspabi_attribute,,
5283 #~ [.mspabi_attribute 4,2],,
5284 #~ [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5285 #~ [Define if your assembler supports .mspabi_attribute.])])
5286 #~ if test x$enable_newlib_nano_formatted_io = xyes; then
5287 #~ AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5288 #~ configured with --enable-newlib-nano-formatted-io.])
5292 #~ # Versions 2.33 and earlier lacked support for the %gotoff relocation
5293 #~ # syntax that is documented in the ABI specification.
5294 #~ gcc_GAS_CHECK_FEATURE([support for %gotoff relocations in constant data],
5295 #~ gcc_cv_as_nios2_gotoff_relocation,,
5298 #~ .long %gotoff(foo)],,
5299 #~ [AC_DEFINE(HAVE_AS_NIOS2_GOTOFF_RELOCATION, 1,
5300 #~ [Define if your assembler supports %gotoff relocation syntax.])])
5303 #~ gcc_GAS_CHECK_FEATURE([.attribute support],
5304 #~ gcc_cv_as_riscv_attribute,,
5305 #~ [.attribute stack_align,4],,
5306 #~ [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5307 #~ [Define if your assembler supports .attribute.])])
5308 #~ gcc_GAS_CHECK_FEATURE([-misa-spec= support],
5309 #~ gcc_cv_as_riscv_isa_spec,
5310 #~ [-misa-spec=2.2],,,
5311 #~ [AC_DEFINE(HAVE_AS_MISA_SPEC, 1,
5312 #~ [Define if the assembler understands -misa-spec=.])])
5313 #~ gcc_GAS_CHECK_FEATURE([-march=rv32i_zifencei support],
5314 #~ gcc_cv_as_riscv_march_zifencei,
5315 #~ [-march=rv32i_zifencei2p0],,,
5316 #~ [AC_DEFINE(HAVE_AS_MARCH_ZIFENCEI, 1,
5317 #~ [Define if the assembler understands -march=rv*_zifencei.])])
5320 #~ gcc_GAS_CHECK_FEATURE([.dtprelword support],
5321 #~ gcc_cv_as_loongarch_dtprelword, [2,18,0],,
5322 #~ [.section .tdata,"awT",@progbits
5326 #~ .dtprelword x+0x8000],,
5327 #~ [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
5328 #~ [Define if your assembler supports .dtprelword.])])
5331 #~ gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5332 #~ gcc_cv_as_s390_gnu_attribute,,
5333 #~ [.gnu_attribute 8,1],,
5334 #~ [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5335 #~ [Define if your assembler supports .gnu_attribute.])])
5336 #~ gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5337 #~ gcc_cv_as_s390_machine_machinemode,,
5338 #~ [ .machinemode push
5342 #~ [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5343 #~ [Define if your assembler supports .machine and .machinemode.])])
5344 #~ gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5345 #~ gcc_cv_as_s390_architecture_modifiers,,
5346 #~ [ .machine z13+vx ],,
5347 #~ [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5348 #~ [Define if your assembler supports architecture modifiers.])])
5349 #~ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5350 #~ gcc_cv_as_s390_vector_loadstore_alignment_hints,,
5351 #~ [ vl %v24,0(%r15),3 ],,
5352 #~ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5353 #~ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5354 #~ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints on z13],
5355 #~ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13, [-mzarch -march=z13],
5356 #~ [ vl %v24,0(%r15),3 ],,
5357 #~ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13, 1,
5358 #~ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument on z13.])])
5363 #~ # Mips, LoongArch and HP-UX need the GNU assembler.
5364 #~ # Linux on IA64 might be able to use the Intel assembler.
5366 #~ case "$target" in
5367 #~ mips*-*-* | loongarch*-*-* | *-*-hpux* )
5368 #~ if test x$gas_flag = xyes \
5369 #~ || test x"$host" != x"$build" \
5370 #~ || test ! -x "$gcc_cv_as" \
5371 #~ || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5374 #~ echo "*** This configuration requires the GNU assembler" >&2
5380 #~ # This tests if the assembler supports two registers for global_load functions
5381 #~ # (like in LLVM versions <12) or one register (like in LLVM 12).
5382 #~ case "$target" in
5383 #~ amdgcn-* | gcn-*)
5384 #~ AC_MSG_CHECKING(assembler fix for global_load functions)
5385 #~ gcc_cv_as_gcn_global_load_fixed=yes
5386 #~ if test x$gcc_cv_as != x; then
5387 #~ cat > conftest.s <<EOF
5388 #~ global_store_dwordx2 v[[1:2]], v[[4:5]], s[[14:15]]
5390 #~ if $gcc_cv_as -triple=amdgcn--amdhsa -filetype=obj -mcpu=gfx900 -o conftest.o conftest.s > /dev/null 2>&1; then
5391 #~ gcc_cv_as_gcn_global_load_fixed=no
5393 #~ rm -f conftest.s conftest.o conftest
5395 #~ global_load_fixed=`if test x$gcc_cv_as_gcn_global_load_fixed = xyes; then echo 1; else echo 0; fi`
5396 #~ AC_DEFINE_UNQUOTED(HAVE_GCN_ASM_GLOBAL_LOAD_FIXED, $global_load_fixed,
5397 #~ [Define if your assembler has fixed global_load functions.])
5398 #~ AC_MSG_RESULT($gcc_cv_as_gcn_global_load_fixed)
5402 #~ case "$target" in
5403 #~ amdgcn-* | gcn-*)
5404 #~ # Test the LLVM assembler syntax dialect; they have made a number of
5405 #~ # changes between LLVM 12 & 13 without any backward compatibility.
5406 #~ gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v2/3 syntax],
5407 #~ gcc_cv_as_gcn_asm_v3_syntax,
5408 #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack],
5409 #~ [.amdgcn_target "amdgcn-unknown-amdhsa--gfx906+xnack"],,
5410 #~ [AC_DEFINE(HAVE_GCN_ASM_V3_SYNTAX, 1,
5411 #~ [Define if your assembler expects amdgcn_target gfx908+xnack syntax.])])
5412 #~ gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v4 syntax],
5413 #~ gcc_cv_as_gcn_asm_v4_syntax,
5414 #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack],
5415 #~ [.amdgcn_target "amdgcn-unknown-amdhsa--gfx908:xnack+"],,
5416 #~ [AC_DEFINE(HAVE_GCN_ASM_V4_SYNTAX, 1,
5417 #~ [Define if your assembler expects amdgcn_target gfx908:xnack+ syntax.])])
5419 #~ # Some attribute names changed in the move to v4 ...
5420 #~ if test $gcc_cv_as_gcn_asm_v3_syntax = yes; then
5421 #~ sramopt="+sram-ecc"
5422 #~ sramattr="+sram-ecc"
5423 #~ xnackattr="+xnack"
5424 #~ elif test $gcc_cv_as_gcn_asm_v4_syntax = yes; then
5425 #~ sramopt="+sramecc"
5426 #~ sramattr=":sramecc+"
5427 #~ xnackattr=":xnack+"
5429 #~ AC_MSG_ERROR([Unrecognised assembler version])
5432 #~ # Test whether the LLVM assembler accepts -mattr=+xnack without any
5433 #~ # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
5434 #~ # LLVM 12+ throws a warning for GPUs without support.
5435 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for fiji],
5436 #~ gcc_cv_as_gcn_xnack_ecc_fiji,
5437 #~ [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=+xnack 2>conftest.err], [],
5438 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5439 #~ || gcc_cv_as_gcn_xnack_ecc_fiji=yes],
5440 #~ [AC_DEFINE(HAVE_GCN_XNACK_FIJI, 1,
5441 #~ [Define if your assembler allows -mattr=+xnack for fiji.])])
5442 #~ rm -f conftest.err
5443 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx900],
5444 #~ gcc_cv_as_gcn_xnack_ecc_gfx900,
5445 #~ [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+xnack 2>conftest.err], [],
5446 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5447 #~ || gcc_cv_as_gcn_xnack_ecc_gfx900=yes],
5448 #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX900, 1,
5449 #~ [Define if your assembler allows -mattr=+xnack for gfx900.])])
5450 #~ rm -f conftest.err
5451 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx906],
5452 #~ gcc_cv_as_gcn_xnack_ecc_gfx906,
5453 #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack 2>conftest.err], [],
5454 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5455 #~ || gcc_cv_as_gcn_xnack_ecc_gfx906=yes],
5456 #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX906, 1,
5457 #~ [Define if your assembler allows -mattr=+xnack for gfx906.])])
5458 #~ rm -f conftest.err
5459 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx908],
5460 #~ gcc_cv_as_gcn_xnack_ecc_gfx908,
5461 #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack 2>conftest.err], [],
5462 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5463 #~ || gcc_cv_as_gcn_xnack_ecc_gfx908=yes],
5464 #~ [AC_DEFINE(HAVE_GCN_XNACK_GFX908, 1,
5465 #~ [Define if your assembler allows -mattr=+xnack for gfx908.])])
5466 #~ rm -f conftest.err
5468 #~ # Test whether the LLVM assembler accepts -mattr=+sramecc without any
5469 #~ # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
5470 #~ # (some?) LLVM 12 rejects it for all GPUs, and LLVM13 throws a warning
5471 #~ # for GPUs without support.
5472 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for fiji],
5473 #~ gcc_cv_as_gcn_sram_ecc_fiji,
5474 #~ [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=$sramopt 2>conftest.err], [],
5475 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5476 #~ || gcc_cv_as_gcn_sram_ecc_fiji=yes],
5477 #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_FIJI, 1,
5478 #~ [Define if your assembler allows -mattr=+sramecc for fiji.])])
5479 #~ rm -f conftest.err
5480 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx900],
5481 #~ gcc_cv_as_gcn_sram_ecc_gfx900,
5482 #~ [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=$sramopt 2>conftest.err], [],
5483 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5484 #~ || gcc_cv_as_gcn_sram_ecc_gfx900=yes],
5485 #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX900, 1,
5486 #~ [Define if your assembler allows -mattr=+sramecc for gfx900.])])
5487 #~ rm -f conftest.err
5488 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx906],
5489 #~ gcc_cv_as_gcn_sram_ecc_gfx906,
5490 #~ [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=$sramopt 2>conftest.err], [],
5491 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5492 #~ || gcc_cv_as_gcn_sram_ecc_gfx906=yes],
5493 #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX906, 1,
5494 #~ [Define if your assembler allows -mattr=+sramecc for gfx906.])])
5495 #~ rm -f conftest.err
5496 #~ gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx908],
5497 #~ gcc_cv_as_gcn_sram_ecc_gfx908,
5498 #~ [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=$sramopt 2>conftest.err], [],
5499 #~ [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
5500 #~ || gcc_cv_as_gcn_sram_ecc_gfx908=yes],
5501 #~ [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX908, 1,
5502 #~ [Define if your assembler allows -mattr=+sramecc for gfx908.])])
5503 #~ rm -f conftest.err
5506 #~ gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions],
5507 #~ gcc_cv_as_arm_option_extensions,
5508 #~ [-march=armv8.1-m.main+mve],
5512 #~ vmov.f32 s0, s1],,
5513 #~ [AC_DEFINE(HAVE_GAS_ARM_EXTENDED_ARCH, 1,
5514 #~ [Define if your Arm assembler permits context-specific feature extensions.])])
5517 #~ # ??? Not all targets support dwarf2 debug_line, even within a version
5518 #~ # of gas. Moreover, we need to emit a valid instruction to trigger any
5519 #~ # info to the output file. So, as supported targets are added to gas 2.11,
5520 #~ # add some instruction here to (also) show we expect this might work.
5521 #~ # ??? Once 2.11 is released, probably need to add first known working
5522 #~ # version to the per-target configury.
5523 #~ case "$cpu_type" in
5524 #~ aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | loongarch | m32c \
5525 #~ | m68k | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5526 #~ | tilegx | tilepro | visium | xstormy16 | xtensa)
5536 #~ if test x"$insn" != x; then
5538 #~ .file 1 \"conftest.s\"
5541 #~ gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5542 #~ gcc_cv_as_dwarf2_debug_line,,
5544 #~ [if test x$gcc_cv_objdump != x \
5545 #~ && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5546 #~ | grep debug_line > /dev/null 2>&1; then
5547 #~ gcc_cv_as_dwarf2_debug_line=yes
5548 #~ elif test x$gcc_cv_otool != x \
5549 #~ && $gcc_cv_otool -l conftest.o 2> /dev/null \
5550 #~ | grep debug_line > /dev/null 2>&1; then
5551 #~ gcc_cv_as_dwarf2_debug_line=yes
5554 #~ # The .debug_line file table must be in the exact order that
5555 #~ # we specified the files, since these indices are also used
5556 #~ # by DW_AT_decl_file. Approximate this test by testing if
5557 #~ # the assembler bitches if the same index is assigned twice.
5558 #~ gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5559 #~ gcc_cv_as_dwarf2_file_buggy,,
5560 #~ [ .file 1 "foo.s"
5561 #~ .file 1 "bar.s"])
5563 #~ if test $gcc_cv_as_dwarf2_debug_line = yes \
5564 #~ && test $gcc_cv_as_dwarf2_file_buggy = no; then
5565 #~ AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5566 #~ [Define if your assembler supports dwarf2 .file/.loc directives,
5567 #~ and preserves file table indices exactly as given.])
5569 #~ if test $gcc_cv_as_leb128 = yes; then
5571 #~ .file 1 \"conftest.s\"
5572 #~ .loc 1 3 0 view .LVU1
5578 #~ gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5579 #~ gcc_cv_as_dwarf2_debug_view,,
5581 #~ [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5582 #~ [Define if your assembler supports views in dwarf2 .loc directives.])])
5586 #~ gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5587 #~ gcc_cv_as_gdwarf2_flag,
5588 #~ [--gdwarf2], [$insn],,
5589 #~ [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5590 #~ [Define if your assembler supports the --gdwarf2 option.])])
5592 #~ gcc_GAS_CHECK_FEATURE([--gdwarf-5 option],
5593 #~ gcc_cv_as_gdwarf_5_flag,
5594 #~ [--gdwarf-5], [$insn],
5595 #~ [if test x$gcc_cv_objdump != x \
5596 #~ && $gcc_cv_objdump -Wi conftest.o 2>&1 \
5597 #~ | grep DW_TAG_compile_unit > /dev/null 2>&1; then
5598 #~ gcc_cv_as_gdwarf_5_flag=yes;
5599 #~ fi],[AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
5600 #~ [Define if your assembler supports the --gdwarf-5 option.])])
5602 #~ case $target_os in
5603 #~ win32 | pe | cygwin* | mingw32*)
5604 #~ section_flags=\"dr\"
5605 #~ function_type=".def foo; .scl 2; .type 32; .endef"
5606 #~ function_size="";;
5608 #~ section_flags=\"\",%progbits
5609 #~ function_type=".type foo, %function"
5610 #~ function_size=".size foo, .-foo";;
5612 #~ dwarf4_debug_info_size=0x46
5613 #~ dwarf4_high_pc_form=7
5614 #~ dwarf4_debug_aranges_size=0x2c
5616 #~ for dwarf4_addr_size in 8 4; do
5632 #~ .section .debug_info,$section_flags
5634 #~ .4byte $dwarf4_debug_info_size
5636 #~ .4byte .Ldebug_abbrev0
5637 #~ .byte 0x$dwarf4_addr_size
5639 #~ .ascii \"GNU C17\\0\"
5641 #~ .ascii \"a.c\\0\"
5643 #~ .${dwarf4_addr_size}byte .Ltext0
5644 #~ .${dwarf4_addr_size}byte .Letext0-.Ltext0
5645 #~ .4byte .Ldebug_line0
5647 #~ .ascii \"foo\\0\"
5651 #~ .${dwarf4_addr_size}byte .LFB0
5652 #~ .${dwarf4_addr_size}byte .LFE0-.LFB0
5656 #~ .section .debug_abbrev,$section_flags
5672 #~ .byte 0x$dwarf4_high_pc_form
5693 #~ .byte 0x$dwarf4_high_pc_form
5699 #~ .section .debug_aranges,$section_flags
5700 #~ .4byte $dwarf4_debug_aranges_size
5702 #~ .4byte .Ldebug_info0
5707 #~ .${dwarf4_addr_size}byte .Ltext0
5708 #~ .${dwarf4_addr_size}byte .Letext0-.Ltext0
5709 #~ .${dwarf4_addr_size}byte 0
5710 #~ .${dwarf4_addr_size}byte 0
5711 #~ .section .debug_line,$section_flags
5713 #~ .4byte .LELT0-.LSLT0
5716 #~ .4byte .LELTP0-.LASLTP0
5737 #~ .ascii \"a.c\\0\"
5744 #~ .byte 0x$dwarf4_line_sz
5746 #~ .${dwarf4_addr_size}byte .LM1
5751 #~ .byte 0x$dwarf4_line_sz
5753 #~ .${dwarf4_addr_size}byte .LM2
5758 #~ .byte 0x$dwarf4_line_sz
5760 #~ .${dwarf4_addr_size}byte .Letext0
5765 #~ .section .debug_str,$section_flags
5768 #~ dwarf4_success=no
5769 #~ if test $dwarf4_addr_size = 4; then
5770 #~ gcc_GAS_CHECK_FEATURE([assembly of compiler generated 32-bit .debug_line],
5771 #~ gcc_cv_as_debug_line_32_flag,,
5773 #~ [dwarf4_success=yes])
5775 #~ gcc_GAS_CHECK_FEATURE([assembly of compiler generated 64-bit .debug_line],
5776 #~ gcc_cv_as_debug_line_64_flag,,
5778 #~ [dwarf4_success=yes])
5780 #~ if test $dwarf4_success = yes; then
5781 #~ dwarf4_success=no
5782 #~ gcc_GAS_CHECK_FEATURE([--gdwarf-4 not refusing compiler generated .debug_line],
5783 #~ gcc_cv_as_dwarf_4_debug_line_flag,
5784 #~ [--gdwarf-4], [$conftest_s],,
5785 #~ [dwarf4_success=yes])
5788 #~ dwarf4_debug_info_size=0x36
5789 #~ dwarf4_high_pc_form=6
5790 #~ dwarf4_debug_aranges_size=0x1c
5794 #~ if test $dwarf4_success = yes; then
5806 #~ .file 1 \"foo.c\"
5808 #~ .file 2 \"foo.h\"
5811 #~ dwarf4_success=no
5812 #~ gcc_GAS_CHECK_FEATURE([--gdwarf-4 with the APP marker],
5813 #~ gcc_cv_as_dwarf_4_app_flag,
5814 #~ [--gdwarf-4], [$conftest_s],, [dwarf4_success=yes])
5817 #~ if test $dwarf4_success = yes; then
5825 #~ .file 1 \"foo.c\"
5827 #~ gcc_GAS_CHECK_FEATURE([working --gdwarf-4/--gdwarf-5 for all sources],
5828 #~ gcc_cv_as_working_gdwarf_n_flag,
5831 #~ [changequote(,)dnl
5832 #~ if test x$gcc_cv_objdump != x \
5833 #~ && $gcc_cv_objdump -W conftest.o 2>&1 \
5834 #~ | grep conftest.s > /dev/null 2>&1; then
5835 #~ gcc_cv_as_working_gdwarf_n_flag=no
5837 #~ gcc_cv_as_working_gdwarf_n_flag=yes
5839 #~ changequote([,])dnl])
5840 #~ if test $gcc_cv_as_working_gdwarf_n_flag = yes; then
5841 #~ AC_DEFINE(HAVE_AS_WORKING_DWARF_N_FLAG, 1,
5842 #~ [Define if your assembler supports --gdwarf-4/--gdwarf-5 even with
5843 #~ compiler generated .debug_line.])
5847 #~ gcc_GAS_CHECK_FEATURE([--gstabs option],
5848 #~ gcc_cv_as_gstabs_flag,
5849 #~ [--gstabs], [$insn],,
5850 #~ [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
5851 #~ [Define if your assembler supports the --gstabs option.])])
5853 #~ gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5854 #~ gcc_cv_as_debug_prefix_map_flag,
5855 #~ [--debug-prefix-map /a=/b], [$insn],,
5856 #~ [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5857 #~ [Define if your assembler supports the --debug-prefix-map option.])])
5860 #~ gcc_GAS_CHECK_FEATURE([compressed debug sections],
5861 #~ gcc_cv_as_compress_debug,,,
5862 #~ [# gas compiled without zlib cannot compress debug sections and warns
5863 #~ # about it, but still exits successfully. So check for this, too.
5864 #~ if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5866 #~ gcc_cv_as_compress_debug=0
5867 #~ # Since binutils 2.26, gas supports --compress-debug-sections=type,
5868 #~ # defaulting to the ELF gABI format.
5869 #~ elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
5871 #~ gcc_cv_as_compress_debug=2
5872 #~ gcc_cv_as_compress_debug_option="--compress-debug-sections"
5873 #~ gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5874 #~ # Before binutils 2.26, gas only supported --compress-debug-options and
5875 #~ # emitted the traditional GNU format.
5876 #~ elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
5878 #~ gcc_cv_as_compress_debug=1
5879 #~ gcc_cv_as_compress_debug_option="--compress-debug-sections"
5880 #~ gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5882 #~ gcc_cv_as_compress_debug=0
5884 #~ AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5885 #~ [Define to the level of your assembler's compressed debug section support.])
5886 #~ AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5887 #~ [Define to the assembler option to enable compressed debug sections.])
5888 #~ AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5889 #~ [Define to the assembler option to disable compressed debug sections.])
5891 #~ gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,,
5892 #~ [.lcomm bar,4,16],,
5893 #~ [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5894 #~ [Define if your assembler supports .lcomm with an alignment field.])])
5896 #~ if test x$with_sysroot = x && test x$host = x$target \
5897 #~ && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5898 #~ && test "$prefix" != "NONE"; then
5899 #~ AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5900 #~ [Define to PREFIX/include if cpp should also search that directory.])
5903 #~ # Determine the version of glibc, if any, used on the target.
5904 #~ AC_MSG_CHECKING([for target glibc version])
5905 #~ AC_ARG_WITH([glibc-version],
5906 #~ [AS_HELP_STRING([--with-glibc-version=M.N],
5907 #~ [assume GCC used with glibc version M.N or later])], [
5908 #~ if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5909 #~ glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5910 #~ glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5912 #~ AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5914 #~ glibc_version_major=0
5915 #~ glibc_version_minor=0
5916 #~ [if test -f $target_header_dir/features.h \
5917 #~ && glibc_version_major_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+[0-9]' $target_header_dir/features.h` \
5918 #~ && glibc_version_minor_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+[0-9]' $target_header_dir/features.h`; then
5919 #~ glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[ ]*//'`
5920 #~ glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[ ]*//'`
5922 #~ AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5923 #~ AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5924 #~ [GNU C Library major version number used on the target, or 0.])
5925 #~ AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5926 #~ [GNU C Library minor version number used on the target, or 0.])
5928 #~ AC_ARG_ENABLE(gnu-unique-object,
5929 #~ [AS_HELP_STRING([--enable-gnu-unique-object],
5930 #~ [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5931 #~ [case $enable_gnu_unique_object in
5933 #~ *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5934 #~ Valid choices are 'yes' and 'no'.]) ;;
5936 #~ [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,,
5937 #~ [.type foo, '$target_type_format_char'gnu_unique_object],,
5938 #~ # We need to unquote above to to use the definition from config.gcc.
5939 #~ # Also check for ld.so support, i.e. glibc 2.11 or higher.
5940 #~ [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5942 #~ if test x$enable_gnu_unique_object = xyes; then
5943 #~ AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5944 #~ [Define if your assembler supports @gnu_unique_object.])
5947 #~ AC_CACHE_CHECK([assembler for tolerance to line number 0],
5948 #~ [gcc_cv_as_line_zero],
5949 #~ [gcc_cv_as_line_zero=no
5950 #~ if test "x$gcc_cv_as" != x; then
5951 #~ { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5952 #~ if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5953 #~ test "x`cat conftest.out`" = x
5955 #~ gcc_cv_as_line_zero=yes
5957 #~ echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5958 #~ cat conftest.s >&AS_MESSAGE_LOG_FD
5959 #~ echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5960 #~ cat conftest.out >&AS_MESSAGE_LOG_FD
5962 #~ rm -f conftest.o conftest.s conftest.out
5964 #~ if test "x$gcc_cv_as_line_zero" = xyes; then
5965 #~ AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5966 #~ [Define if the assembler won't complain about a line such as # 0 "" 2.])
5969 #~ AC_MSG_CHECKING(support for thin archives)
5970 #~ thin_archive_support=no
5971 #~ echo 'int main (void) { return 0; }' > conftest.c
5972 #~ if ($AR --version | sed 1q | grep "GNU ar" \
5973 #~ && $CC $CFLAGS -c conftest.c \
5974 #~ && $AR rcT conftest.a conftest.o \
5975 #~ && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5976 #~ thin_archive_support=yes
5978 #~ rm -f conftest.c conftest.o conftest.a conftest
5979 #~ AC_MSG_RESULT($thin_archive_support)
5980 #~ AC_SUBST(thin_archive_support)
5982 #~ AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5983 #~ gcc_cv_ld_eh_frame_hdr=no
5984 #~ if test $in_tree_ld = yes ; then
5985 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \
5986 #~ && test $in_tree_ld_is_elf = yes; then
5987 #~ gcc_cv_ld_eh_frame_hdr=yes
5989 #~ elif test x$gcc_cv_ld != x; then
5990 #~ if echo "$ld_ver" | grep GNU > /dev/null; then
5991 #~ # Check if linker supports --eh-frame-hdr option
5992 #~ if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5993 #~ gcc_cv_ld_eh_frame_hdr=yes
5996 #~ case "$target" in
5998 #~ # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5999 #~ if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
6000 #~ gcc_cv_ld_eh_frame_hdr=yes
6006 #~ GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
6007 #~ if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
6008 #~ AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
6009 #~ [Define if your linker supports .eh_frame_hdr.])
6011 #~ AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
6013 #~ AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
6014 #~ gcc_cv_ld_eh_frame_ciev3=no
6015 #~ if test $in_tree_ld = yes ; then
6016 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
6017 #~ && test $in_tree_ld_is_elf = yes; then
6018 #~ gcc_cv_ld_eh_frame_ciev3=yes
6020 #~ elif test x$gcc_cv_ld != x; then
6021 #~ if echo "$ld_ver" | grep GNU > /dev/null; then
6022 #~ gcc_cv_ld_eh_frame_ciev3=yes
6023 #~ if test 0"$ld_date" -lt 20040513; then
6024 #~ if test -n "$ld_date"; then
6025 #~ # If there was date string, but was earlier than 2004-05-13, fail
6026 #~ gcc_cv_ld_eh_frame_ciev3=no
6027 #~ elif test "$ld_vers_major" -lt 2; then
6028 #~ gcc_cv_ld_eh_frame_ciev3=no
6029 #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
6030 #~ gcc_cv_ld_eh_frame_ciev3=no
6034 #~ case "$target" in
6036 #~ # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
6037 #~ if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
6038 #~ gcc_cv_ld_eh_frame_ciev3=yes
6044 #~ AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
6045 #~ [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
6046 #~ [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
6047 #~ AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
6049 #~ AC_MSG_CHECKING(linker position independent executable support)
6051 #~ if test $in_tree_ld = yes ; then
6052 #~ case "$target" in
6053 #~ # Full PIE support on Solaris was only introduced in gld 2.26.
6054 #~ *-*-solaris2*) gcc_gld_pie_min_version=26 ;;
6055 #~ *) gcc_gld_pie_min_version=15 ;;
6057 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
6058 #~ && test $in_tree_ld_is_elf = yes; then
6059 #~ gcc_cv_ld_pie=yes
6061 #~ elif test x$gcc_cv_ld != x; then
6062 #~ # Check if linker supports -pie option
6063 #~ if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
6064 #~ gcc_cv_ld_pie=yes
6065 #~ case "$target" in
6067 #~ if echo "$ld_ver" | grep GNU > /dev/null \
6068 #~ && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
6074 #~ case "$target" in
6075 #~ *-*-solaris2.1[[1-9]]*)
6076 #~ # Solaris 11.3 added PIE support.
6077 #~ if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
6078 #~ gcc_cv_ld_pie=yes
6084 #~ if test x"$gcc_cv_ld_pie" = xyes; then
6085 #~ AC_DEFINE(HAVE_LD_PIE, 1,
6086 #~ [Define if your linker supports PIE option.])
6088 #~ AC_MSG_RESULT($gcc_cv_ld_pie)
6090 #~ AC_MSG_CHECKING(linker PIE support with copy reloc)
6091 #~ gcc_cv_ld_pie_copyreloc=no
6092 #~ if test $gcc_cv_ld_pie = yes ; then
6093 #~ if test $in_tree_ld = yes ; then
6094 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6095 #~ gcc_cv_ld_pie_copyreloc=yes
6097 #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6098 #~ # Check if linker supports -pie option with copy reloc
6099 #~ case "$target" in
6100 #~ i?86-*-linux* | x86_64-*-linux*)
6101 #~ cat > conftest1.s <<EOF
6104 #~ .type a_glob, @object
6109 #~ cat > conftest2.s <<EOF
6112 #~ .type main, @function
6114 #~ movl %eax, a_glob(%rip)
6115 #~ .size main, .-main
6117 #~ .section .data.rel,"aw",@progbits
6118 #~ .type ptr, @object
6122 #~ if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6123 #~ && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
6124 #~ && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6125 #~ && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
6126 #~ gcc_cv_ld_pie_copyreloc=yes
6128 #~ rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
6133 #~ AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
6134 #~ [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
6135 #~ [Define 0/1 if your linker supports -pie option with copy reloc.])
6136 #~ AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
6138 #~ AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
6139 #~ gcc_cv_ld_eh_gc_sections=no
6140 #~ if test $in_tree_ld = yes ; then
6141 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
6142 #~ && test $in_tree_ld_is_elf = yes; then
6143 #~ gcc_cv_ld_eh_gc_sections=yes
6145 #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
6146 #~ cat > conftest.s <<EOF
6149 #~ .type _start, @function
6152 #~ .size _start, .-_start
6153 #~ .section .text.foo,"ax",@progbits
6154 #~ .type foo, @function
6158 #~ .section .gcc_except_table.foo,"a",@progbits
6161 #~ .section .eh_frame,"a",@progbits
6164 #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6165 #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6166 #~ | grep "gc-sections option ignored" > /dev/null; then
6167 #~ gcc_cv_ld_eh_gc_sections=no
6168 #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6169 #~ | grep gcc_except_table > /dev/null; then
6170 #~ gcc_cv_ld_eh_gc_sections=yes
6171 #~ # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
6172 #~ if test x$gcc_cv_as_comdat_group != xyes; then
6173 #~ gcc_cv_ld_eh_gc_sections=no
6174 #~ cat > conftest.s <<EOF
6177 #~ .type _start, @function
6180 #~ .size _start, .-_start
6181 #~ .section .gnu.linkonce.t.foo,"ax",@progbits
6182 #~ .type foo, @function
6186 #~ .section .gcc_except_table.foo,"a",@progbits
6189 #~ .section .eh_frame,"a",@progbits
6192 #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6193 #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6194 #~ | grep "gc-sections option ignored" > /dev/null; then
6195 #~ gcc_cv_ld_eh_gc_sections=no
6196 #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6197 #~ | grep gcc_except_table > /dev/null; then
6198 #~ gcc_cv_ld_eh_gc_sections=yes
6204 #~ rm -f conftest.s conftest.o conftest
6206 #~ case "$target" in
6208 #~ # ??? This apparently exposes a binutils bug with PC-relative relocations.
6209 #~ gcc_cv_ld_eh_gc_sections=no
6212 #~ if test x$gcc_cv_ld_eh_gc_sections = xyes; then
6213 #~ AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
6214 #~ [Define if your linker supports garbage collection of
6215 #~ sections in presence of EH frames.])
6217 #~ AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
6219 #~ AC_MSG_CHECKING(linker EH garbage collection of sections bug)
6220 #~ gcc_cv_ld_eh_gc_sections_bug=no
6221 #~ if test $in_tree_ld = yes ; then
6222 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
6223 #~ && test $in_tree_ld_is_elf = yes; then
6224 #~ gcc_cv_ld_eh_gc_sections_bug=yes
6226 #~ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x -a x$gcc_cv_as_comdat_group = xyes; then
6227 #~ gcc_cv_ld_eh_gc_sections_bug=yes
6228 #~ cat > conftest.s <<EOF
6231 #~ .type _start, @function
6234 #~ .size _start, .-_start
6235 #~ .section .text.startup.foo,"ax",@progbits
6236 #~ .type foo, @function
6240 #~ .section .gcc_except_table.foo,"a",@progbits
6243 #~ .section .eh_frame,"a",@progbits
6246 #~ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
6247 #~ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
6248 #~ | grep "gc-sections option ignored" > /dev/null; then
6250 #~ elif $gcc_cv_objdump -h conftest 2> /dev/null \
6251 #~ | grep gcc_except_table > /dev/null; then
6252 #~ gcc_cv_ld_eh_gc_sections_bug=no
6255 #~ rm -f conftest.s conftest.o conftest
6257 #~ if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
6258 #~ AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
6259 #~ [Define if your linker has buggy garbage collection of
6260 #~ sections support when .text.startup.foo like sections are used.])
6262 #~ AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
6264 #~ AC_MSG_CHECKING(linker for compressed debug sections)
6265 #~ # gold/gld support compressed debug sections since binutils 2.19/2.21
6266 #~ # In binutils 2.26, gld gained support for the ELF gABI format.
6267 #~ if test $in_tree_ld = yes ; then
6268 #~ gcc_cv_ld_compress_debug=0
6269 #~ if test $ld_is_mold = yes; then
6270 #~ gcc_cv_ld_compress_debug=3
6271 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6272 #~ elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \
6273 #~ && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
6274 #~ gcc_cv_ld_compress_debug=2
6275 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6276 #~ elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 26 -o "$gcc_cv_gld_major_version" -gt 2 \
6277 #~ && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
6278 #~ gcc_cv_ld_compress_debug=3
6279 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6280 #~ elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \
6281 #~ && test $in_tree_ld_is_elf = yes; then
6282 #~ gcc_cv_ld_compress_debug=1
6284 #~ elif echo "$ld_ver" | grep GNU > /dev/null; then
6285 #~ if test $ld_is_mold = yes; then
6286 #~ gcc_cv_ld_compress_debug=3
6287 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6288 #~ elif test "$ld_vers_major" -lt 2 \
6289 #~ || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
6290 #~ gcc_cv_ld_compress_debug=0
6291 #~ elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
6292 #~ gcc_cv_ld_compress_debug=1
6294 #~ gcc_cv_ld_compress_debug=3
6295 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6297 #~ if test $ld_is_gold = yes; then
6298 #~ gcc_cv_ld_compress_debug=2
6299 #~ gcc_cv_ld_compress_debug_option="--compress-debug-sections"
6302 #~ changequote(,)dnl
6303 #~ case "${target}" in
6305 #~ # Introduced in Solaris 11.2.
6306 #~ if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
6307 #~ gcc_cv_ld_compress_debug=3
6308 #~ gcc_cv_ld_compress_debug_option="-z compress-sections"
6310 #~ gcc_cv_ld_compress_debug=0
6314 #~ # Assume linkers other than GNU ld don't support compessed debug
6316 #~ gcc_cv_ld_compress_debug=0
6319 #~ changequote([,])dnl
6321 #~ AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
6322 #~ [Define to the level of your linker's compressed debug section support.])
6323 #~ AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
6324 #~ [Define to the linker option to enable compressed debug sections.])
6325 #~ AC_MSG_RESULT($gcc_cv_ld_compress_debug)
6327 if test x"$ld64_flag" = x"yes"; then
6329 # Set defaults for possibly untestable items.
6330 gcc_cv_ld64_export_dynamic=0
6331 gcc_cv_ld64_platform_version=0
6333 if test "$build" = "$host"; then
6339 # On Darwin, because of FAT library support, it is often possible to execute
6340 # exes from compatible archs even when the host differs from the build system.
6341 case "$build","$host" in
6342 x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
6347 # If the configurer specified a minimum ld64 version to be supported, then use
6348 # that to determine feature support.
6349 if test x"${gcc_cv_ld64_version}" != x; then
6350 AC_MSG_CHECKING(ld64 specified version)
6351 gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
6352 AC_MSG_RESULT($gcc_cv_ld64_major)
6353 if test "$gcc_cv_ld64_major" -ge 236; then
6354 gcc_cv_ld64_export_dynamic=1
6356 if test "$gcc_cv_ld64_major" -ge 512; then
6357 gcc_cv_ld64_platform_version=1
6359 elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
6360 # If the version was not specified, try to find it.
6361 AC_MSG_CHECKING(linker version)
6362 if test x"${gcc_cv_ld64_version}" = x; then
6363 gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
6365 AC_MSG_RESULT($gcc_cv_ld64_version)
6367 AC_MSG_CHECKING(linker for -export_dynamic support)
6368 gcc_cv_ld64_export_dynamic=1
6369 if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6370 gcc_cv_ld64_export_dynamic=0
6372 AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
6374 AC_MSG_CHECKING(linker for -platform_version support)
6375 gcc_cv_ld64_platform_version=1
6376 if $gcc_cv_ld -platform_version macos 10.5 0.0 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
6377 gcc_cv_ld64_platform_version=0
6379 AC_MSG_RESULT($gcc_cv_ld64_platform_version)
6382 if test x"${gcc_cv_ld64_version}" != x; then
6383 AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
6384 [Define to ld64 version.])
6387 AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
6388 [Define to 1 if ld64 supports '-export_dynamic'.])
6390 AC_DEFINE_UNQUOTED(LD64_HAS_PLATFORM_VERSION, $gcc_cv_ld64_platform_version,
6391 [Define to 1 if ld64 supports '-platform_version'.])
6394 if test x"$dsymutil_flag" = x"yes"; then
6396 # If the user specified a dsymutil path, then we will already have the
6397 # version string, otherwise, pick it up.
6398 if test x"$gcc_cv_dsymutil" = x; then
6399 AC_MSG_WARN([dsymutil is a required tool for this system, but not found])
6400 dsymutil_vers="tool unspecified"
6401 elif test x"$dsymutil_vers" = x; then
6402 dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
6405 dsymutil_temp=`echo $dsymutil_vers | sed 1q`
6406 AC_MSG_CHECKING(dsymutil version "$dsymutil_temp")
6407 if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
6408 dsymutil_kind=DWARFUTILS
6409 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([[0-9\.]]*\).*/\1/'`
6410 elif echo $dsymutil_temp | grep clang- > /dev/null; then
6412 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([[0-9\.]]*\).*/\1/'`
6413 elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
6415 dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([[0-9\.]]*\).*/\1/'`
6417 dsymutil_kind=UNKNOWN
6420 dsymutil_major=`expr "$dsymutil_vers" : '\([[0-9]]*\)'`
6421 dsymutil_minor=`expr "$dsymutil_vers" : '[[0-9]]*\.\([[0-9]]*\)'`
6422 dsymutil_tiny=`expr "$dsymutil_vers" : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
6423 if test x"${dsymutil_minor}" = x; then
6426 if test x"${dsymutil_tiny}" = x; then
6429 AC_DEFINE_UNQUOTED(DSYMUTIL_VERSION, [$dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}],
6430 [Define to the dsymutil version.])
6431 AC_MSG_RESULT($dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} )
6434 #~ case $target_os in
6435 #~ win32 | pe | cygwin* | mingw32*)
6436 #~ AC_MSG_CHECKING(broken PE linker dwarf5 support)
6437 #~ gcc_cv_ld_broken_pe_dwarf5=yes
6438 #~ if test $in_tree_ld = yes ; then
6439 #~ if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6440 #~ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
6441 #~ && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6442 #~ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
6443 #~ gcc_cv_ld_broken_pe_dwarf5=no
6446 #~ if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
6447 #~ && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
6448 #~ gcc_cv_ld_broken_pe_dwarf5=no
6451 #~ if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
6452 #~ AC_DEFINE(HAVE_LD_BROKEN_PE_DWARF5, 1,
6453 #~ [Define if the PE linker has broken DWARF 5 support.])
6455 #~ AC_MSG_RESULT($gcc_cv_ld_broken_pe_dwarf5)
6457 #~ AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
6458 #~ gcc_cv_ld_disable_dynamicbase=no
6459 #~ if test $in_tree_ld = yes; then
6460 #~ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
6461 #~ gcc_cv_ld_disable_dynamicbase=yes
6464 #~ if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
6465 #~ gcc_cv_ld_disable_dynamicbase=yes
6468 #~ if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
6469 #~ AC_DEFINE(HAVE_LD_PE_DISABLE_DYNAMICBASE, 1,
6470 #~ [Define if the PE linker supports --disable-dynamicbase option.])
6472 #~ AC_MSG_RESULT($gcc_cv_ld_disable_dynamicbase)
6480 AC_CACHE_CHECK(linker --as-needed support,
6481 gcc_cv_ld_as_needed,
6482 [gcc_cv_ld_as_needed=no
6483 gcc_cv_ld_as_needed_option='--as-needed'
6484 gcc_cv_ld_no_as_needed_option='--no-as-needed'
6485 if test $in_tree_ld = yes ; then
6486 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
6487 && test $in_tree_ld_is_elf = yes; then
6488 gcc_cv_ld_as_needed=yes
6489 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
6490 gcc_cv_ld_as_needed_option='--push-state --as-needed'
6491 gcc_cv_ld_no_as_needed_option='--pop-state'
6494 elif test x$gcc_cv_ld != x; then
6495 # Check if linker supports --as-needed and --no-as-needed options
6496 if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
6497 gcc_cv_ld_as_needed=yes
6498 if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
6499 && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
6500 && echo "$ld_ver" | grep GNU > /dev/null \
6501 && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
6502 # Use these options only when both ld.bfd and ld.gold support
6503 # --push-state/--pop-state, which unfortunately wasn't added
6505 gcc_cv_ld_as_needed_option='--push-state --as-needed'
6506 gcc_cv_ld_no_as_needed_option='--pop-state'
6509 case "$target:$gnu_ld" in
6511 # Solaris 2 ld always supports -z ignore/-z record. Prefer the native
6513 gcc_cv_ld_as_needed=yes
6514 gcc_cv_ld_as_needed_option="-z ignore"
6515 gcc_cv_ld_no_as_needed_option="-z record"
6519 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
6520 # dl_iterate_phdr, i.e. since Solaris 11.
6522 *-*-solaris2.1[[1-9]]*)
6524 i?86-*-* | x86_64-*-*)
6525 if echo "$ld_ver" | grep GNU > /dev/null; then
6526 # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
6527 gcc_cv_ld_as_needed=no
6533 gcc_cv_ld_as_needed=no
6537 if test x"$gcc_cv_ld_as_needed" = xyes; then
6538 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
6539 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
6540 AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
6541 [Define to the linker option to ignore unused dependencies.])
6542 AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
6543 [Define to the linker option to keep unused dependencies.])
6546 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
6547 saved_LDFLAGS="$LDFLAGS"
6548 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
6549 LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
6550 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6551 [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
6553 LDFLAGS="$saved_LDFLAGS"
6554 if test "x$gcc_cv_ld_clearcap" = xyes; then
6555 AC_DEFINE([HAVE_LD_CLEARCAP], 1,
6556 [Define if the linker supports clearing hardware capabilities via mapfile.])
6557 AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
6559 AC_MSG_RESULT($gcc_cv_ld_clearcap)
6565 emul_name="-melf32lppc"
6568 emul_name="-melf32ppc"
6571 AC_CACHE_CHECK(linker .gnu.attributes long double support,
6573 [gcc_cv_ld_ppc_attr=no
6574 if test x"$ld_is_gold" = xyes; then
6575 gcc_cv_ld_ppc_attr=yes
6576 elif test $in_tree_ld = yes ; then
6577 if test "$gcc_cv_gld_major_version" -eq 2 \
6578 -a "$gcc_cv_gld_minor_version" -ge 28 \
6579 -o "$gcc_cv_gld_major_version" -gt 2; then
6580 gcc_cv_ld_ppc_attr=yes
6582 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6583 # check that merging the long double .gnu_attribute doesn't warn
6584 cat > conftest1.s <<EOF
6587 cat > conftest2.s <<EOF
6590 if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6591 && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6592 && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
6593 && test ! -s conftest.err; then
6594 gcc_cv_ld_ppc_attr=yes
6596 rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
6599 if test x$gcc_cv_ld_ppc_attr = xyes; then
6600 AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
6601 [Define if your PowerPC linker has .gnu.attributes long double support.])
6606 case "$target:$tm_file" in
6607 powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
6610 emul_name="-melf64lppc"
6613 emul_name="-melf64ppc"
6616 emul_name="-melf64lppc_fbsd"
6619 emul_name="-melf64ppc_fbsd"
6622 AC_CACHE_CHECK(linker support for omitting dot symbols,
6623 gcc_cv_ld_no_dot_syms,
6624 [gcc_cv_ld_no_dot_syms=no
6625 if test x"$ld_is_gold" = xyes; then
6626 gcc_cv_ld_no_dot_syms=yes
6627 elif test $in_tree_ld = yes ; then
6628 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
6629 gcc_cv_ld_no_dot_syms=yes
6631 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6632 cat > conftest1.s <<EOF
6636 cat > conftest2.s <<EOF
6637 .section ".opd","aw"
6642 .quad .LEfoo,.TOC.@tocbase,0
6648 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
6649 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
6650 && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
6651 gcc_cv_ld_no_dot_syms=yes
6653 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
6656 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
6657 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
6658 [Define if your PowerPC64 linker only needs function descriptor syms.])
6661 AC_CACHE_CHECK(linker large toc support,
6662 gcc_cv_ld_large_toc,
6663 [gcc_cv_ld_large_toc=no
6664 if test x"$ld_is_gold" = xyes; then
6665 gcc_cv_ld_large_toc=yes
6666 elif test $in_tree_ld = yes ; then
6667 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
6668 gcc_cv_ld_large_toc=yes
6670 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
6671 cat > conftest.s <<EOF
6672 .section ".tbss","awT",@nobits
6678 addis 9,13,ie0@got@tprel@ha
6679 ld 9,ie0@got@tprel@l(9)
6681 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6682 && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
6683 gcc_cv_ld_large_toc=yes
6685 rm -f conftest conftest.o conftest.s
6688 if test x"$gcc_cv_ld_large_toc" = xyes; then
6689 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6690 [Define if your PowerPC64 linker supports a large TOC.])
6693 AC_CACHE_CHECK(linker toc pointer alignment,
6694 gcc_cv_ld_toc_align,
6695 [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
6696 cat > conftest.s <<EOF
6701 .section .data.rel.ro,"aw",@progbits
6706 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
6707 && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
6708 gcc_cv_ld_toc_align=`$gcc_cv_nm conftest | ${AWK} '/\.TOC\./ { match ($0, "0[[[:xdigit:]]]*", a); print strtonum ("0x" substr(a[[0]], length(a[[0]])-3)) }'`
6710 rm -f conftest conftest.o conftest.s
6713 if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
6714 AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
6715 [Define to .TOC. alignment forced by your linker.])
6722 AC_CACHE_CHECK(linker large toc support,
6723 gcc_cv_ld_large_toc,
6724 [gcc_cv_ld_large_toc=no
6725 if test x$gcc_cv_as != x ; then
6726 cat > conftest.s <<EOF
6736 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
6737 gcc_cv_ld_large_toc=yes
6739 rm -f conftest conftest.o conftest.s
6742 if test x"$gcc_cv_ld_large_toc" = xyes; then
6743 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
6744 [Define if your PowerPC64 linker supports a large TOC.])
6749 AC_CACHE_CHECK(linker --build-id support,
6751 [gcc_cv_ld_buildid=no
6752 if test $in_tree_ld = yes ; then
6753 if test "$gcc_cv_gld_major_version" -eq 2 -a \
6754 "$gcc_cv_gld_minor_version" -ge 18 -o \
6755 "$gcc_cv_gld_major_version" -gt 2 \
6756 && test $in_tree_ld_is_elf = yes; then
6757 gcc_cv_ld_buildid=yes
6759 elif test x$gcc_cv_ld != x; then
6760 if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
6761 gcc_cv_ld_buildid=yes
6764 if test x"$gcc_cv_ld_buildid" = xyes; then
6765 AC_DEFINE(HAVE_LD_BUILDID, 1,
6766 [Define if your linker supports --build-id.])
6769 AC_ARG_ENABLE(linker-build-id,
6770 [AS_HELP_STRING([--enable-linker-build-id],
6771 [compiler will always pass --build-id to linker])],
6773 enable_linker_build_id=no)
6775 if test x"$enable_linker_build_id" = xyes; then
6776 if test x"$gcc_cv_ld_buildid" = xyes; then
6777 AC_DEFINE(ENABLE_LD_BUILDID, 1,
6778 [Define if gcc should always pass --build-id to linker.])
6780 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
6784 # In binutils 2.21, GNU ld gained support for new emulations fully
6785 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
6786 AC_CACHE_CHECK(linker *_sol2 emulation support,
6787 gcc_cv_ld_sol2_emulation,
6788 [gcc_cv_ld_sol2_emulation=no
6789 if test $in_tree_ld = yes ; then
6790 if test "$gcc_cv_gld_major_version" -eq 2 -a \
6791 "$gcc_cv_gld_minor_version" -ge 21 -o \
6792 "$gcc_cv_gld_major_version" -gt 2 \
6793 && test $in_tree_ld_is_elf = yes; then
6794 gcc_cv_ld_sol2_emulation=yes
6796 elif test x$gcc_cv_ld != x; then
6797 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6798 grep _sol2 > /dev/null; then
6799 gcc_cv_ld_sol2_emulation=yes
6802 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6803 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6804 [Define if your linker supports the *_sol2 emulations.])
6807 AC_CACHE_CHECK(linker --sysroot support,
6809 [gcc_cv_ld_sysroot=no
6810 if test $in_tree_ld = yes ; then
6811 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 ; then
6812 gcc_cv_ld_sysroot=yes
6814 elif test x$gcc_cv_ld != x; then
6815 if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6816 gcc_cv_ld_sysroot=yes
6819 if test x"$gcc_cv_ld_sysroot" = xyes; then
6820 AC_DEFINE(HAVE_LD_SYSROOT, 1,
6821 [Define if your linker supports --sysroot.])
6826 # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6827 AC_CACHE_CHECK([system-provided CRTs on Solaris],
6828 gcc_cv_solaris_crts,
6829 [gcc_cv_solaris_crts=no
6830 if test x$host != x$target; then
6831 if test "x$with_sysroot" = xyes; then
6832 target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6834 target_sysroot="${with_sysroot}"
6837 target_libdir="$target_sysroot/usr/lib"
6838 # At the time they were added, gcrt1.o became a symlink for backwards
6839 # compatibility on x86, while crt1.o was added on sparc, so check for that.
6841 i?86-*-solaris2* | x86_64-*-solaris2*)
6842 if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6845 if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6850 if test x$gcc_cv_solaris_crts = xyes; then
6851 AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6852 [Define if the system-provided CRTs are present on Solaris.])
6855 AC_ARG_ENABLE(libssp,
6856 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6857 [case "${enableval}" in
6861 AC_MSG_ERROR([unknown libssp setting $enableval])
6865 # Test for stack protector support in target C library.
6866 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6867 gcc_cv_libc_provides_ssp,
6868 [gcc_cv_libc_provides_ssp=no
6869 if test "x$enable_libssp" = "xno"; then
6870 gcc_cv_libc_provides_ssp=yes
6871 elif test "x$enable_libssp" = "xyes"; then
6872 gcc_cv_libc_provides_ssp=no
6876 # All versions of musl provide stack protector
6877 gcc_cv_libc_provides_ssp=yes;;
6878 *-*-linux* | *-*-kfreebsd*-gnu)
6879 # glibc 2.4 and later provides __stack_chk_fail and
6880 # either __stack_chk_guard, or TLS access to stack guard canary.
6881 GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6882 [if test -f $target_header_dir/features.h \
6883 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
6884 $target_header_dir/features.h > /dev/null; then
6885 if $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
6886 $target_header_dir/features.h > /dev/null && \
6887 test -f $target_header_dir/bits/uClibc_config.h && \
6888 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
6889 $target_header_dir/bits/uClibc_config.h > /dev/null; then
6890 gcc_cv_libc_provides_ssp=yes
6892 # all versions of Bionic support stack protector
6893 elif test -f $target_header_dir/sys/cdefs.h \
6894 && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
6895 $target_header_dir/sys/cdefs.h > /dev/null; then
6896 gcc_cv_libc_provides_ssp=yes
6900 # Avoid complicated tests (see
6901 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6902 # simply assert that glibc does provide this, which is true for all
6903 # realistically usable GNU/Hurd configurations.
6904 # All supported versions of musl provide it as well
6905 gcc_cv_libc_provides_ssp=yes;;
6906 *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6907 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6908 [echo "no __stack_chk_fail on this target"])
6910 *) gcc_cv_libc_provides_ssp=no ;;
6914 if test x$gcc_cv_libc_provides_ssp = xyes; then
6915 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6916 [Define if your target C library provides stack protector support])
6919 # Check whether --enable-default-ssp was given.
6920 AC_ARG_ENABLE(default-ssp,
6921 [AS_HELP_STRING([--enable-default-ssp],
6922 [enable Stack Smashing Protection as default])],[
6923 if test x$gcc_cv_libc_provides_ssp = xyes; then
6925 ia64*-*-*) enable_default_ssp=no ;;
6926 *) enable_default_ssp=$enableval ;;
6929 enable_default_ssp=no
6931 enable_default_ssp=no)
6932 if test x$enable_default_ssp = xyes ; then
6933 AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6934 [Define if your target supports default stack protector and it is enabled.])
6936 AC_SUBST([enable_default_ssp])
6938 # Test for <sys/sdt.h> on the target.
6939 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
6940 AC_MSG_CHECKING(sys/sdt.h in the target C library)
6942 if test -f $target_header_dir/sys/sdt.h; then
6944 AC_DEFINE(HAVE_SYS_SDT_H, 1,
6945 [Define if your target C library provides sys/sdt.h])
6947 AC_MSG_RESULT($have_sys_sdt_h)
6949 # Check if TFmode long double should be used by default or not.
6950 # Some glibc targets used DFmode long double, but with glibc 2.4
6951 # and later they can use TFmode.
6953 powerpc*-*-linux* | \
6957 AC_ARG_WITH(long-double-128,
6958 [AS_HELP_STRING([--with-long-double-128],
6959 [use 128-bit long double by default])],
6960 gcc_cv_target_ldbl128="$with_long_double_128", [
6962 s390*-*-linux-musl*)
6963 gcc_cv_target_ldbl128=yes
6965 powerpc*-*-linux-musl*)
6966 gcc_cv_target_ldbl128=no
6969 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
6970 [gcc_cv_target_ldbl128=no
6971 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6972 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
6973 && gcc_cv_target_ldbl128=yes
6981 if test x$gcc_cv_target_ldbl128 = xyes; then
6982 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
6983 [Define if TFmode long double should be the default])
6986 # Check if TFmode long double target should use the IBM extended double or IEEE
6987 # 128-bit floating point formats if long doubles are 128-bits long. The long
6988 # double type can only be switched on powerpc64 bit Linux systems where VSX is
6989 # supported. Other PowerPC systems do not build the IEEE 128-bit emulator in
6991 AC_ARG_WITH([long-double-format],
6992 [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
6993 [Specify whether PowerPC long double uses IEEE or IBM format])],[
6994 case "$target:$with_long_double_format" in
6995 powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
6998 powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
6999 # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
7001 power7 | power8 | power9 | power1*)
7005 AC_MSG_ERROR([Configuration option --with-long-double-format is only \
7006 supported if the default cpu is power7 or newer])
7007 with_long_double_format=""
7011 powerpc64*-*-linux*:*)
7012 AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
7013 with_long_double_format=""
7016 AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
7017 on 64-bit PowerPC VSX Linux systems])
7018 with_long_double_format=""
7023 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
7024 # values in the TCB. Currently, only GLIBC 2.23 and later support this.
7025 gcc_cv_libc_provides_hwcap_in_tcb=no
7028 GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
7031 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
7032 AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
7033 [Define if your target C Library provides the AT_HWCAP value in the TCB])
7036 # Check if the target LIBC handles PT_GNU_STACK.
7037 gcc_cv_libc_gnustack=unknown
7039 mips*-*-linux-musl*)
7040 gcc_cv_libc_gnustack=yes
7043 GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
7046 if test x$gcc_cv_libc_gnustack = xyes; then
7047 AC_DEFINE(TARGET_LIBC_GNUSTACK, 1,
7048 [Define if your target C Library properly handles PT_GNU_STACK])
7051 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
7052 gcc_cv_target_dl_iterate_phdr=unknown
7055 # <link.h> needs both a dl_iterate_phdr declaration and support for
7056 # compilation with largefile support.
7057 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
7058 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
7059 gcc_cv_target_dl_iterate_phdr=yes
7061 gcc_cv_target_dl_iterate_phdr=no
7064 *-*-dragonfly* | *-*-freebsd*)
7065 if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
7066 gcc_cv_target_dl_iterate_phdr=yes
7068 gcc_cv_target_dl_iterate_phdr=no
7072 gcc_cv_target_dl_iterate_phdr=yes
7075 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
7076 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
7077 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
7078 [Define if your target C library provides the `dl_iterate_phdr' function.])
7080 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
7082 # We no longer support different GC mechanisms. Emit an error if
7083 # the user configures with --with-gc.
7085 [AS_HELP_STRING([--with-gc={page,zone}],
7086 [this option is not supported anymore. It used to choose
7087 the garbage collection mechanism to use with the compiler])],
7088 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
7091 # Libraries to use on the host. This will normally be set by the top
7092 # level Makefile. Here we simply capture the value for our Makefile.
7093 if test -z "${HOST_LIBS+set}"; then
7098 # Use the system's zlib library.
7101 dnl Very limited version of automake's enable-maintainer-mode
7103 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
7104 dnl maintainer-mode is disabled by default
7105 AC_ARG_ENABLE(maintainer-mode,
7106 [AS_HELP_STRING([--enable-maintainer-mode],
7107 [enable make rules and dependencies not useful
7108 (and sometimes confusing) to the casual installer])],
7109 maintainer_mode=$enableval,
7112 AC_MSG_RESULT($maintainer_mode)
7114 if test "$maintainer_mode" = "yes"; then
7121 dnl Variables for tags utilities; copied from automake 1.16.4+'s init.m4
7122 if test -z "$CTAGS"; then
7126 if test -z "$ETAGS"; then
7130 if test -z "$CSCOPE"; then
7135 dnl Whether to prevent multiple front-ends from linking at the same time
7137 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
7138 AC_ARG_ENABLE(link-mutex,
7139 [AS_HELP_STRING([--enable-link-mutex],
7140 [avoid linking multiple front-ends at once to avoid thrashing
7141 on the build machine])],
7142 do_link_mutex=$enableval,
7144 AC_MSG_RESULT($do_link_mutex)
7146 if test "$do_link_mutex" = "yes"; then
7151 AC_SUBST(DO_LINK_MUTEX)
7153 dnl Whether to prevent multiple GCC front-ends from linking at the same time
7155 AC_MSG_CHECKING([whether to serialize linking of multiple front-ends])
7156 AC_ARG_ENABLE(link-serialization,
7157 [AS_HELP_STRING([--enable-link-serialization],
7158 [avoid linking multiple GCC front-ends at once using make
7159 dependencies to avoid thrashing on the build machine])],
7160 do_link_serialization=$enableval,
7161 do_link_serialization=no)
7162 AC_MSG_RESULT($do_link_serialization)
7164 case "$do_link_serialization" in
7166 DO_LINK_SERIALIZATION=1;;
7167 [[1-9]] | [[1-9]][[0-9]] | [[1-9]][[0-9]][[0-9]])
7168 DO_LINK_SERIALIZATION=$do_link_serialization;;
7170 DO_LINK_SERIALIZATION=;;
7172 AC_MSG_ERROR(bad value ${do_link_serialization} given for --enable-link-serialization) ;;
7174 AC_SUBST(DO_LINK_SERIALIZATION)
7180 # Make empty files to contain the specs and options for each language.
7181 # Then add #include lines to for a compiler that has specs and/or options.
7187 # These (without "all_") are set in each config-lang.in.
7188 # `language' must be a single word so is spelled singularly.
7191 all_outputs='Makefile'
7192 # List of language configure and makefile fragments.
7193 all_lang_configurefrags=
7195 # Additional files for gengtype
7196 all_gtfiles="$target_gtfiles"
7198 # These are the languages that are set in --enable-languages,
7199 # and are available in the GCC tree.
7200 all_selected_languages=
7202 # Add the language fragments.
7203 # Languages are added via two mechanisms. Some information must be
7204 # recorded in makefile variables, these are defined in config-lang.in.
7205 # We accumulate them and plug them into the main Makefile.
7206 # The other mechanism is a set of hooks for each of the main targets
7207 # like `clean', `install', etc.
7209 language_hooks="Make-hooks"
7211 for lang in ${srcdir}/*/config-lang.in
7214 test "$lang" = "${srcdir}/*/config-lang.in" && continue
7216 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
7217 if test "x$lang_alias" = x
7219 echo "$lang doesn't set \$language." 1>&2
7222 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
7223 subdirs="$subdirs $subdir"
7225 # $gcc_subdir is where the gcc integration files are to be found
7226 # for a language, both for internal compiler purposes (compiler
7227 # sources implementing front-end to GCC tree converters), and for
7228 # build infrastructure purposes (Make-lang.in, etc.)
7230 # This will be <subdir> (relative to $srcdir) if a line like
7231 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
7232 # is found in <langdir>/config-lang.in, and will remain <langdir>
7235 # Except for the language alias (fetched above), the regular
7236 # "config-lang.in" contents are always retrieved from $gcc_subdir,
7237 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
7238 # only this and the language alias.
7240 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
7241 if [ "$gcc_subdir" = "" ]; then
7242 gcc_subdir="$subdir"
7245 case ",$enable_languages," in
7247 all_selected_languages="$all_selected_languages $lang_alias"
7248 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
7249 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
7261 . ${srcdir}/$gcc_subdir/config-lang.in
7262 if test "x$language" = x
7264 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
7269 case ",$enable_languages," in
7272 for i in $subdir_requires; do
7273 test -f "${srcdir}/$i/config-lang.in" && continue
7281 all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
7282 if test "x$language" = xc && test -n "$all_lang_makefrags"; then
7283 # Put c/Make-lang.in fragment first to match serialization languages order.
7284 all_lang_makefrags="\$(srcdir)/$gcc_subdir/Make-lang.in $all_lang_makefrags"
7286 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
7288 if test -f $srcdir/$gcc_subdir/lang.opt; then
7289 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
7290 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
7292 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
7293 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
7295 all_languages="$all_languages $language"
7296 all_compilers="$all_compilers $compilers"
7297 all_outputs="$all_outputs $outputs"
7298 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
7299 case ",$enable_languages," in
7301 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
7303 AC_SUBST(enable_lto)
7310 for language in $all_selected_languages
7312 check_languages="$check_languages check-$language"
7316 for language in $all_selected_languages
7318 selftest_languages="$selftest_languages selftest-$language"
7321 # We link each language in with a set of hooks, reached indirectly via
7322 # lang.${target}. Only do so for selected languages.
7326 target_list="all.cross start.encap rest.encap tags \
7327 install-common install-man install-info install-dvi install-pdf \
7328 install-html dvi pdf html uninstall info man srcextra srcman srcinfo \
7329 mostlyclean clean distclean maintainer-clean install-plugin"
7331 for t in $target_list
7334 for lang in $all_selected_languages
7338 echo "lang.$t: $x" >> Make-hooks
7341 echo "ifeq (\$(DO_LINK_SERIALIZATION),)" >> Make-hooks
7342 echo "SERIAL_LIST =" >> Make-hooks
7343 echo else >> Make-hooks
7347 serialization_languages=c
7348 for lang in $all_selected_languages
7350 test $lang = c && continue
7351 if test $lang = lto; then
7352 serialization_languages="$serialization_languages lto1 lto2"
7354 serialization_languages="$serialization_languages $lang"
7357 for lang in $serialization_languages
7359 test $lang = c && continue
7360 lang_cnt=`expr $lang_cnt + 1`
7361 lang_list=" $prev$lang_list"
7364 echo "SERIAL_LIST = \$(wordlist \$(DO_LINK_SERIALIZATION),$lang_cnt,$lang_list)" >> Make-hooks
7365 echo endif >> Make-hooks
7366 echo "SERIAL_COUNT = `expr $lang_cnt + 1`" >> Make-hooks
7367 echo "INDEX.c = 0" >> Make-hooks
7369 for lang in $serialization_languages
7371 test $lang = c && continue
7372 echo "$lang.prev = \$(if \$(word $lang_cnt,\$(SERIAL_LIST)),\$(\$(word $lang_cnt,\$(SERIAL_LIST)).serial))" >> Make-hooks
7373 echo "INDEX.$lang = $lang_idx" >> Make-hooks
7374 lang_cnt=`expr $lang_cnt - 1`
7375 lang_idx=`expr $lang_idx + 1`
7379 # Option include files
7382 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
7383 option_includes="option-includes.mk"
7384 AC_SUBST_FILE(option_includes)
7392 echo "dir ." > .gdbinit
7393 echo "dir ${srcdir}" >> .gdbinit
7394 if test x$gdb_needs_out_file_path = xyes
7396 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
7398 if test "x$subdirs" != x; then
7401 echo "dir ${srcdir}/$s" >> .gdbinit
7404 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
7405 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
7407 # Put a breakpoint on __asan_report_error to help with debugging buffer
7410 *-fsanitize=address*)
7411 echo "source ${srcdir}/gdbasan.in" >> .gdbinit
7415 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
7416 AC_SUBST(gcc_tooldir)
7419 # Find a directory in which to install a shared libgcc.
7421 AC_ARG_ENABLE(version-specific-runtime-libs,
7422 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
7423 [specify that runtime libraries should be
7424 installed in a compiler-specific directory])])
7426 # Substitute configuration variables
7429 AC_SUBST(all_compilers)
7430 AC_SUBST(all_gtfiles)
7431 AC_SUBST(all_lang_configurefrags)
7432 AC_SUBST(all_lang_makefrags)
7433 AC_SUBST(all_languages)
7434 AC_SUBST(all_selected_languages)
7435 AC_SUBST(build_exeext)
7436 AC_SUBST(build_install_headers_dir)
7437 AC_SUBST(build_xm_file_list)
7438 AC_SUBST(build_xm_include_list)
7439 AC_SUBST(build_xm_defines)
7440 AC_SUBST(build_file_translate)
7441 AC_SUBST(check_languages)
7442 AC_SUBST(selftest_languages)
7443 AC_SUBST(cpp_install_dir)
7444 AC_SUBST(xmake_file)
7445 AC_SUBST(tmake_file)
7446 AC_SUBST(TM_ENDIAN_CONFIG)
7447 AC_SUBST(TM_MULTILIB_CONFIG)
7448 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
7449 AC_SUBST(extra_gcc_objs)
7450 AC_SUBST(user_headers_inc_next_pre)
7451 AC_SUBST(user_headers_inc_next_post)
7452 AC_SUBST(extra_headers_list)
7453 AC_SUBST(extra_objs)
7454 AC_SUBST(extra_programs)
7455 AC_SUBST(float_h_file)
7456 AC_SUBST(gcc_config_arguments)
7457 AC_SUBST(gcc_gxx_include_dir)
7458 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
7459 AC_SUBST(gcc_gxx_libcxx_include_dir)
7460 AC_SUBST(gcc_gxx_libcxx_include_dir_add_sysroot)
7461 AC_SUBST(host_exeext)
7462 AC_SUBST(host_xm_file_list)
7463 AC_SUBST(host_xm_include_list)
7464 AC_SUBST(host_xm_defines)
7465 AC_SUBST(out_host_hook_obj)
7467 AC_SUBST(lang_opt_files)
7468 AC_SUBST(lang_specs_files)
7469 AC_SUBST(lang_tree_files)
7470 AC_SUBST(local_prefix)
7472 AC_SUBST(objc_boehm_gc)
7474 AC_SUBST(out_object_file)
7475 AC_SUBST(common_out_file)
7476 AC_SUBST(common_out_object_file)
7477 AC_SUBST(tm_file_list)
7478 AC_SUBST(tm_include_list)
7479 AC_SUBST(tm_defines)
7480 AC_SUBST(tm_p_file_list)
7481 AC_SUBST(tm_p_include_list)
7482 AC_SUBST(tm_d_file_list)
7483 AC_SUBST(tm_d_include_list)
7484 AC_SUBST(xm_file_list)
7485 AC_SUBST(xm_include_list)
7486 AC_SUBST(xm_defines)
7487 AC_SUBST(use_gcc_stdint)
7488 AC_SUBST(c_target_objs)
7489 AC_SUBST(cxx_target_objs)
7490 AC_SUBST(fortran_target_objs)
7491 AC_SUBST(d_target_objs)
7492 AC_SUBST(target_cpu_default)
7494 AC_SUBST_FILE(language_hooks)
7497 if test x${build} = x${host} ; then
7498 if test x${host} = x${target} ; then
7499 echo "Links are now set up to build a native compiler for ${target}." 1>&2
7501 echo "Links are now set up to build a cross-compiler" 1>&2
7502 echo " from ${host} to ${target}." 1>&2
7505 if test x${host} = x${target} ; then
7506 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
7507 echo " for ${target}." 1>&2
7509 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
7510 echo " from ${host} to ${target}." 1>&2
7514 AC_ARG_VAR(GMPLIBS,[How to link GMP])
7515 AC_ARG_VAR(GMPINC,[How to find GMP include files])
7517 AC_ARG_VAR(ISLLIBS,[How to link isl])
7518 AC_ARG_VAR(ISLINC,[How to find isl include files])
7519 if test "x${ISLLIBS}" != "x" ; then
7520 AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
7523 # SDCC GCC_ENABLE_PLUGINS
7524 AC_SUBST(pluginlibs)
7525 AC_SUBST(enable_plugin)
7526 if test x"$enable_plugin" = x"yes"; then
7527 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
7531 # Enable --enable-host-shared
7532 AC_ARG_ENABLE(host-shared,
7533 [AS_HELP_STRING([--enable-host-shared],
7534 [build host code as shared libraries])],
7535 [PICFLAG=-fPIC], [PICFLAG=])
7536 AC_SUBST(enable_host_shared)
7540 AC_ARG_ENABLE(libquadmath-support,
7541 [AS_HELP_STRING([--disable-libquadmath-support],
7542 [disable libquadmath support for Fortran])],
7543 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
7544 ENABLE_LIBQUADMATH_SUPPORT=yes)
7545 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
7546 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
7547 [Define to 1 to enable libquadmath support])
7551 # Specify what hash style to use by default.
7552 AC_ARG_WITH([linker-hash-style],
7553 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
7554 [specify the linker hash style])],
7555 [case x"$withval" in
7557 LINKER_HASH_STYLE=sysv
7560 LINKER_HASH_STYLE=gnu
7563 LINKER_HASH_STYLE=both
7566 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
7569 [LINKER_HASH_STYLE=''])
7570 if test x"${LINKER_HASH_STYLE}" != x; then
7571 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
7572 [The linker hash style])
7575 # Specify what should be the default of -fdiagnostics-color option.
7576 AC_ARG_WITH([diagnostics-color],
7577 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
7578 [specify the default of -fdiagnostics-color option
7579 auto-if-env stands for -fdiagnostics-color=auto if
7580 GCC_COLOR environment variable is present and
7581 -fdiagnostics-color=never otherwise])],
7582 [case x"$withval" in
7584 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
7587 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
7590 DIAGNOSTICS_COLOR_DEFAULT=-1
7593 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
7596 AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
7599 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
7600 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
7601 [The default for -fdiagnostics-color option])
7603 # Specify what should be the default of -fdiagnostics-urls option.
7604 AC_ARG_WITH([diagnostics-urls],
7605 [AC_HELP_STRING([--with-diagnostics-urls={never,auto,auto-if-env,always}],
7606 [specify the default of -fdiagnostics-urls option
7607 auto-if-env stands for -fdiagnostics-urls=auto if
7608 GCC_URLS or TERM_URLS environment variable is present and
7609 -fdiagnostics-urls=never otherwise])],
7610 [case x"$withval" in
7612 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_NO
7615 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO
7618 DIAGNOSTICS_URLS_DEFAULT=-1
7621 DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_YES
7624 AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-urls])
7627 [DIAGNOSTICS_URLS_DEFAULT=DIAGNOSTICS_URL_AUTO])
7628 AC_DEFINE_UNQUOTED(DIAGNOSTICS_URLS_DEFAULT, $DIAGNOSTICS_URLS_DEFAULT,
7629 [The default for -fdiagnostics-urls option])
7631 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
7632 # of jit/jit-playback.cc.
7633 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
7634 echo "gcc_driver_version: ${gcc_driver_version}"
7635 cat > gcc-driver-name.h <<EOF
7636 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
7639 # Check whether --enable-default-pie was given.
7640 AC_ARG_ENABLE(default-pie,
7641 [AS_HELP_STRING([--enable-default-pie],
7642 [enable Position Independent Executable as default])],
7643 enable_default_pie=$enableval,
7644 enable_default_pie=no)
7645 if test x$enable_default_pie = xyes ; then
7646 AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
7647 [Define if your target supports default PIE and it is enabled.])
7649 AC_SUBST([enable_default_pie])
7651 # Check if -fno-PIE works.
7652 AC_CACHE_CHECK([for -fno-PIE option],
7654 [saved_CXXFLAGS="$CXXFLAGS"
7655 CXXFLAGS="$CXXFLAGS -fno-PIE"
7656 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7657 [gcc_cv_c_no_fpie=yes],
7658 [gcc_cv_c_no_fpie=no])
7659 CXXFLAGS="$saved_CXXFLAGS"])
7660 if test "$gcc_cv_c_no_fpie" = "yes"; then
7661 NO_PIE_CFLAGS="-fno-PIE"
7663 AC_SUBST([NO_PIE_CFLAGS])
7665 # Check if -no-pie works.
7666 AC_CACHE_CHECK([for -no-pie option],
7668 [saved_LDFLAGS="$LDFLAGS"
7669 LDFLAGS="$LDFLAGS -no-pie"
7670 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
7671 [gcc_cv_no_pie=yes],
7673 LDFLAGS="$saved_LDFLAGS"])
7674 if test "$gcc_cv_no_pie" = "yes"; then
7675 NO_PIE_FLAG="-no-pie"
7677 AC_SUBST([NO_PIE_FLAG])
7679 # Enable Intel CET on Intel CET enabled host if jit is enabled.
7680 GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
7681 case x$enable_languages in
7688 AC_SUBST(CET_HOST_FLAGS)
7690 # Check linker supports '-z bndplt'
7691 ld_bndplt_support=no
7692 AC_MSG_CHECKING(linker -z bndplt option)
7693 if test x"$ld_is_gold" = xno; then
7694 if test $in_tree_ld = yes ; then
7695 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
7696 ld_bndplt_support=yes
7698 elif test x$gcc_cv_ld != x; then
7699 # Check if linker supports -a bndplt option
7700 if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
7701 ld_bndplt_support=yes
7705 if test x"$ld_bndplt_support" = xyes; then
7706 AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
7707 [Define if your linker supports -z bndplt])
7709 AC_MSG_RESULT($ld_bndplt_support)
7711 # Check linker supports '--push-state'/'--pop-state'
7712 ld_pushpopstate_support=no
7713 AC_MSG_CHECKING(linker --push-state/--pop-state options)
7714 if test x"$ld_is_gold" = xno; then
7715 if test $in_tree_ld = yes ; then
7716 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
7717 ld_pushpopstate_support=yes
7719 elif test x$gcc_cv_ld != x; then
7720 # Check if linker supports --push-state/--pop-state options
7721 if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
7722 ld_pushpopstate_support=yes
7726 if test x"$ld_pushpopstate_support" = xyes; then
7727 AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
7728 [Define if your linker supports --push-state/--pop-state])
7730 AC_MSG_RESULT($ld_pushpopstate_support)
7732 # On s390, float_t has historically been statically defined as double for no
7733 # good reason. To comply with the C standard in the light of this definition,
7734 # gcc has evaluated float expressions in double precision when in
7735 # standards-compatible mode or when given -fexcess-precision=standard. To enable
7736 # a smooth transition towards the new model used by most architectures, where
7737 # gcc describes its behavior via the macro __FLT_EVAL_METHOD__ and glibc derives
7738 # float_t from that, this behavior can be configured with
7739 # --enable-s390-excess-float-precision. When given as enabled, that flag selects
7740 # the old model. When omitted, native builds and cross compiles that have target
7741 # libc headers will detect whether libc clamps float_t to double and in that
7742 # case maintain the old model. Otherwise, they will default to the new model.
7743 AC_ARG_ENABLE(s390-excess-float-precision,
7744 [AS_HELP_STRING([--enable-s390-excess-float-precision],
7745 [on s390 targets, evaluate float with double precision
7746 when in standards-conforming mode])],
7747 [],[enable_s390_excess_float_precision=auto])
7751 if test x"$enable_s390_excess_float_precision" = xauto; then
7752 # Can we autodetect the behavior of the target libc?
7753 if test "$target" = "$host" -a "$host" = "$build"; then
7754 enable_s390_excess_float_precision=autodetect
7755 elif test "x$with_headers" != xno; then
7756 # cross build. are target headers available?
7757 # carefully coerce the build-system compiler to use target headers
7758 saved_CXXFLAGS="$CXXFLAGS"
7759 fixed_XGCC_FLAGS_FOR_TARGET=`echo "$XGCC_FLAGS_FOR_TARGET" | sed 's/-B/-idirafter/g'`
7760 CROSS_TEST_CXXFLAGS="-nostdinc $fixed_XGCC_FLAGS_FOR_TARGET"
7761 CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7762 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7764 ]])], [enable_s390_excess_float_precision=autodetect], [])
7765 CXXFLAGS="$saved_CXXFLAGS"
7768 if test x"$enable_s390_excess_float_precision" = xautodetect; then
7769 saved_CXXFLAGS="$CXXFLAGS"
7770 if ! test "$target" = "$host" -a "$host" = "$build"; then
7771 CXXFLAGS="$CROSS_TEST_CXXFLAGS"
7772 unset CROSS_TEST_CXXFLAGS
7774 AC_CACHE_CHECK([for glibc clamping float_t to double],
7775 gcc_cv_float_t_clamped_to_double, [
7776 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7777 #define __FLT_EVAL_METHOD__ 0
7779 int dummy[sizeof(float_t) == sizeof(double) ? 1 : -1];
7781 [gcc_cv_float_t_clamped_to_double=yes],
7782 [gcc_cv_float_t_clamped_to_double=no])])
7783 CXXFLAGS="$saved_CXXFLAGS"
7784 enable_s390_excess_float_precision="$gcc_cv_float_t_clamped_to_double"
7786 # no way to detect behavior of target libc, default to new model
7787 enable_s390_excess_float_precision=no
7791 GCC_TARGET_TEMPLATE(ENABLE_S390_EXCESS_FLOAT_PRECISION)
7792 if test x"$enable_s390_excess_float_precision" = xyes; then
7793 AC_DEFINE(ENABLE_S390_EXCESS_FLOAT_PRECISION, 1,
7794 [Define to enable evaluating float expressions with double precision in
7795 standards-compatible mode on s390 targets.])
7800 # Configure the subdirectories
7801 # AC_CONFIG_SUBDIRS($subdirs)
7803 # Create the Makefile
7804 # and configure language subdirectories
7805 AC_CONFIG_FILES($all_outputs)
7807 AC_CONFIG_COMMANDS([default],
7809 case ${CONFIG_HEADERS} in
7810 *auto-host.h:config.in*)
7813 # Make sure all the subdirs exist.
7814 for d in $subdirs doc build common c-family
7816 test -d $d || mkdir $d
7819 [subdirs='$subdirs'])