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