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