2018-11-09 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / configure.ac
blob59585912556b2cdaf4e02d79cec00668759ca6ba
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   powerpc-ibm-aix*)
3477     conftest_s='
3478         .extern __get_tpointer
3479         .toc
3480 LC..1:
3481         .tc a[TC],a[TL]@le
3482         .csect .text[PR]
3483 .tlstest:
3484         lwz 9,LC..1(2)
3485         bla __get_tpointer
3486         lwzx 3,9,3
3487         .globl a
3488         .csect a[TL],4
3490         .space 4'
3491         tls_first_major=0
3492         tls_first_minor=0
3493         ;;
3494   powerpc64*-*-*)
3495     conftest_s='
3496         .section ".tdata","awT",@progbits
3497         .align 3
3498 ld0:    .space 8
3499 ld1:    .space 8
3500 x1:     .space 8
3501 x2:     .space 8
3502 x3:     .space 8
3503         .text
3504         addi 3,2,ld0@got@tlsgd
3505         bl .__tls_get_addr
3506         nop
3507         addi 3,2,ld1@toc
3508         bl .__tls_get_addr
3509         nop
3510         addi 3,2,x1@got@tlsld
3511         bl .__tls_get_addr
3512         nop
3513         addi 9,3,x1@dtprel
3514         bl .__tls_get_addr
3515         nop
3516         addis 9,3,x2@dtprel@ha
3517         addi 9,9,x2@dtprel@l
3518         bl .__tls_get_addr
3519         nop
3520         ld 9,x3@got@dtprel(2)
3521         add 9,9,3
3522         bl .__tls_get_addr
3523         nop'
3524         tls_first_major=2
3525         tls_first_minor=14
3526         tls_as_opt="-a64 --fatal-warnings"
3527         ;;
3528   powerpc*-*-*)
3529     conftest_s='
3530         .section ".tdata","awT",@progbits
3531         .align 2
3532 ld0:    .space 4
3533 ld1:    .space 4
3534 x1:     .space 4
3535 x2:     .space 4
3536 x3:     .space 4
3537         .text
3538         addi 3,31,ld0@got@tlsgd
3539         bl __tls_get_addr
3540         addi 3,31,x1@got@tlsld
3541         bl __tls_get_addr
3542         addi 9,3,x1@dtprel
3543         addis 9,3,x2@dtprel@ha
3544         addi 9,9,x2@dtprel@l
3545         lwz 9,x3@got@tprel(31)
3546         add 9,9,x@tls
3547         addi 9,2,x1@tprel
3548         addis 9,2,x2@tprel@ha
3549         addi 9,9,x2@tprel@l'
3550         tls_first_major=2
3551         tls_first_minor=14
3552         tls_as_opt="-a32 --fatal-warnings"
3553         ;;
3554   riscv*-*-*)
3555     conftest_s='
3556         .section .tdata,"awT",@progbits
3557 x:      .word 2
3558         .text
3559         la.tls.gd a0,x
3560         call __tls_get_addr'
3561         tls_first_major=2
3562         tls_first_minor=21
3563         tls_as_opt='--fatal-warnings'
3564         ;;
3565   s390-*-*)
3566     conftest_s='
3567         .section ".tdata","awT",@progbits
3568 foo:    .long   25
3569         .text
3570         .long   foo@TLSGD
3571         .long   foo@TLSLDM
3572         .long   foo@DTPOFF
3573         .long   foo@NTPOFF
3574         .long   foo@GOTNTPOFF
3575         .long   foo@INDNTPOFF
3576         l       %r1,foo@GOTNTPOFF(%r12)
3577         l       %r1,0(%r1):tls_load:foo
3578         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3579         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3580         tls_first_major=2
3581         tls_first_minor=14
3582         tls_as_opt="-m31 --fatal-warnings"
3583         ;;
3584   s390x-*-*)
3585     conftest_s='
3586         .section ".tdata","awT",@progbits
3587 foo:    .long   25
3588         .text
3589         .quad   foo@TLSGD
3590         .quad   foo@TLSLDM
3591         .quad   foo@DTPOFF
3592         .quad   foo@NTPOFF
3593         .quad   foo@GOTNTPOFF
3594         lg      %r1,foo@GOTNTPOFF(%r12)
3595         larl    %r1,foo@INDNTPOFF
3596         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3597         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3598         tls_first_major=2
3599         tls_first_minor=14
3600         tls_as_opt="-m64 -Aesame --fatal-warnings"
3601         ;;
3602   sh-*-* | sh[123456789lbe]*-*-*)
3603     conftest_s='
3604         .section ".tdata","awT",@progbits
3605 foo:    .long   25
3606         .text
3607         .long   foo@TLSGD
3608         .long   foo@TLSLDM
3609         .long   foo@DTPOFF
3610         .long   foo@GOTTPOFF
3611         .long   foo@TPOFF'
3612         tls_first_major=2
3613         tls_first_minor=13
3614         tls_as_opt=--fatal-warnings
3615         ;;
3616   sparc*-*-*)
3617     case "$target" in
3618       sparc*-sun-solaris2.*)
3619         on_solaris=yes
3620         ;;
3621       *)
3622         on_solaris=no
3623         ;;
3624     esac
3625     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3626       conftest_s='
3627         .section ".tdata",#alloc,#write,#tls'
3628         tls_first_major=0
3629         tls_first_minor=0
3630     else
3631       conftest_s='
3632         .section ".tdata","awT",@progbits'
3633         tls_first_major=2
3634         tls_first_minor=14
3635         tls_as_opt="-32 --fatal-warnings"
3636     fi
3637     conftest_s="$conftest_s
3638 foo:    .long   25
3639         .text
3640         sethi   %tgd_hi22(foo), %o0
3641         add     %o0, %tgd_lo10(foo), %o1
3642         add     %l7, %o1, %o0, %tgd_add(foo)
3643         call    __tls_get_addr, %tgd_call(foo)
3644         sethi   %tldm_hi22(foo), %l1
3645         add     %l1, %tldm_lo10(foo), %l2
3646         add     %l7, %l2, %o0, %tldm_add(foo)
3647         call    __tls_get_addr, %tldm_call(foo)
3648         sethi   %tldo_hix22(foo), %l3
3649         xor     %l3, %tldo_lox10(foo), %l4
3650         add     %o0, %l4, %l5, %tldo_add(foo)
3651         sethi   %tie_hi22(foo), %o3
3652         add     %o3, %tie_lo10(foo), %o3
3653         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3654         add     %g7, %o2, %o4, %tie_add(foo)
3655         sethi   %tle_hix22(foo), %l1
3656         xor     %l1, %tle_lox10(foo), %o5
3657         ld      [%g7 + %o5], %o1"
3658         ;;
3659   tilepro*-*-*)
3660       conftest_s='
3661         .section ".tdata","awT",@progbits
3662 foo:    .long   25
3663         .text
3664         addli   r0, zero, tls_gd(foo)
3665         auli    r0, zero, tls_gd_ha16(foo)
3666         addli   r0, r0, tls_gd_lo16(foo)
3667         jal     __tls_get_addr
3668         addli   r0, zero, tls_ie(foo)
3669         auli    r0, r0, tls_ie_ha16(foo)
3670         addli   r0, r0, tls_ie_lo16(foo)'
3671         tls_first_major=2
3672         tls_first_minor=22
3673         tls_as_opt="--fatal-warnings"
3674         ;;
3675   tilegx*-*-*)
3676       conftest_s='
3677         .section ".tdata","awT",@progbits
3678 foo:    .long   25
3679         .text
3680         shl16insli r0, zero, hw0_last_tls_gd(foo)
3681         shl16insli r0, zero, hw1_last_tls_gd(foo)
3682         shl16insli r0, r0,   hw0_tls_gd(foo)
3683         jal        __tls_get_addr
3684         shl16insli r0, zero, hw1_last_tls_ie(foo)
3685         shl16insli r0, r0,   hw0_tls_ie(foo)'
3686         tls_first_major=2
3687         tls_first_minor=22
3688         tls_as_opt="--fatal-warnings"
3689         ;;
3690   xtensa*-*-*)
3691     conftest_s='
3692         .section ".tdata","awT",@progbits
3693 foo:    .long   25
3694         .text
3695         movi    a8, foo@TLSFUNC
3696         movi    a10, foo@TLSARG
3697         callx8.tls a8, foo@TLSCALL'
3698         tls_first_major=2
3699         tls_first_minor=19
3700         ;;
3701 changequote([,])dnl
3702 esac
3703 set_have_as_tls=no
3704 if test "x$enable_tls" = xno ; then
3705   : # TLS explicitly disabled.
3706 elif test "x$enable_tls" = xyes ; then
3707   set_have_as_tls=yes # TLS explicitly enabled.
3708 elif test -z "$tls_first_major"; then
3709   : # If we don't have a check, assume no support.
3710 else
3711   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3712   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3713   [set_have_as_tls=yes])
3715 if test $set_have_as_tls = yes ; then
3716   AC_DEFINE(HAVE_AS_TLS, 1,
3717             [Define if your assembler and linker support thread-local storage.])
3720 # Target-specific assembler checks.
3722 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3723 gcc_cv_ld_static_dynamic=no
3724 gcc_cv_ld_static_option='-Bstatic'
3725 gcc_cv_ld_dynamic_option='-Bdynamic'
3726 if test $in_tree_ld = yes ; then
3727   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
3728     gcc_cv_ld_static_dynamic=yes
3729   fi
3730 elif test x$gcc_cv_ld != x; then
3731   # Check if linker supports -Bstatic/-Bdynamic option
3732   if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
3733      && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
3734       gcc_cv_ld_static_dynamic=yes
3735   else
3736     case "$target" in
3737       # AIX ld uses -b flags
3738       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3739         gcc_cv_ld_static_dynamic=yes
3740         gcc_cv_ld_static_option="-bstatic"
3741         gcc_cv_ld_dynamic_option="-bdynamic"
3742         ;;
3743       # HP-UX ld uses -a flags to select between shared and archive.
3744       *-*-hpux*)
3745         if test x"$gnu_ld" = xno; then
3746           gcc_cv_ld_static_dynamic=yes
3747           gcc_cv_ld_static_option="-aarchive_shared"
3748           gcc_cv_ld_dynamic_option="-adefault"
3749         fi
3750         ;;
3751       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3752       *-*-solaris2*)
3753         gcc_cv_ld_static_dynamic=yes
3754         ;;
3755     esac
3756   fi
3758 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3759         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3760 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3761         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3762 [Define to the linker option to disable use of shared objects.])
3763         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3764 [Define to the linker option to enable use of shared objects.])
3766 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3768 AC_MSG_CHECKING(linker --version-script option)
3769 gcc_cv_ld_version_script=no
3770 ld_version_script_option=''
3771 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3772   gcc_cv_ld_version_script=yes
3773   ld_version_script_option='--version-script'
3774 elif test x$gcc_cv_ld != x; then
3775   case "$target" in
3776     # Solaris 2 ld always supports -M.  It also supports a subset of
3777     # --version-script since Solaris 11.4, but requires
3778     # -z gnu-version-script-compat to activate.
3779     *-*-solaris2*)
3780       gcc_cv_ld_version_script=yes
3781       ld_version_script_option='-M'
3782       ;;
3783   esac
3785 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3786 AC_MSG_RESULT($gcc_cv_ld_version_script)
3787 AC_SUBST(ld_version_script_option)
3789 AC_MSG_CHECKING(linker soname option)
3790 gcc_cv_ld_soname=no
3791 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3792   gcc_cv_ld_soname=yes
3793   ld_soname_option='-soname'
3794 elif test x$gcc_cv_ld != x; then
3795   case "$target" in
3796     *-*-darwin*)
3797       gcc_cv_ld_soname=yes
3798       ld_soname_option='-install_name'
3799       ;;
3800     # Solaris 2 ld always supports -h.  It also supports --soname for GNU
3801     # ld compatiblity since some Solaris 10 update.
3802     *-*-solaris2*)
3803       gcc_cv_ld_soname=yes
3804       ld_soname_option='-h'
3805       ;;
3806   esac
3808 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3809 AC_MSG_RESULT($gcc_cv_ld_soname)
3810 AC_SUBST(ld_soname_option)
3812 if test x"$demangler_in_ld" = xyes; then
3813   AC_MSG_CHECKING(linker --demangle support)
3814   gcc_cv_ld_demangle=no
3815   if test $in_tree_ld = yes; then
3816     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 \
3817       gcc_cv_ld_demangle=yes
3818     fi
3819   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3820     # Check if the GNU linker supports --demangle option
3821     if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
3822       gcc_cv_ld_demangle=yes
3823     fi
3824   fi
3825   if test x"$gcc_cv_ld_demangle" = xyes; then
3826     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3827 [Define if your linker supports --demangle option.])
3828   fi
3829   AC_MSG_RESULT($gcc_cv_ld_demangle)
3832 AC_MSG_CHECKING(linker plugin support)
3833 gcc_cv_lto_plugin=0
3834 if test -f liblto_plugin.la; then
3835   save_ld_ver="$ld_ver"
3836   save_ld_vers_major="$ld_vers_major"
3837   save_ld_vers_minor="$ld_vers_minor"
3838   save_ld_is_gold="$ld_is_gold"
3840   ld_is_gold=no
3842   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3843     ld_ver="GNU ld"
3844     # FIXME: ld_is_gold?
3845     ld_vers_major="$gcc_cv_gld_major_version"
3846     ld_vers_minor="$gcc_cv_gld_minor_version"
3847   else
3848     # Determine plugin linker version.
3849     # FIXME: Partial duplicate from above, generalize.
3850 changequote(,)dnl
3851     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3852     if echo "$ld_ver" | grep GNU > /dev/null; then
3853       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3854         ld_is_gold=yes
3855         ld_vers=`echo $ld_ver | sed -n \
3856             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3857       else
3858         ld_vers=`echo $ld_ver | sed -n \
3859             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3860       fi
3861       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3862       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3863     fi
3864 changequote([,])dnl
3865   fi
3867   # Determine plugin support.
3868   if echo "$ld_ver" | grep GNU > /dev/null; then
3869     # Require GNU ld or gold 2.21+ for plugin support by default.
3870     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3871       gcc_cv_lto_plugin=2
3872     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3873     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3874       gcc_cv_lto_plugin=1
3875     fi
3876   fi
3878   ld_ver="$save_ld_ver"
3879   ld_vers_major="$save_ld_vers_major"
3880   ld_vers_minor="$save_ld_vers_minor"
3881   ld_is_gold="$save_ld_is_gold"
3883 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3884   [Define to the level of your linker's plugin support.])
3885 AC_MSG_RESULT($gcc_cv_lto_plugin)
3887 # Target OS-specific assembler checks.
3889 case "$target_os" in
3890   darwin*)
3891     gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
3892       gcc_cv_as_mmacosx_version_min,,
3893       [-mmacosx-version-min=10.1], [.text],,
3894       [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
3895         [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
3896     ;;
3897 esac
3899 # Target CPU-specific assembler checks.
3901 case "$target" in
3902   aarch64*-*-*)
3903     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3904                           [-mabi=lp64], [.text],,,)
3905     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3906       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3907                 [Define if your assembler supports the -mabi option.])
3908     else
3909       if test x$with_abi = xilp32; then
3910         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3911                      Upgrade the Assembler.])
3912       fi
3913       if test x"$with_multilib_list" = xdefault; then
3914         TM_MULTILIB_CONFIG=lp64
3915       else
3916         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3917         for aarch64_multilib in ${aarch64_multilibs}; do
3918           case ${aarch64_multilib} in
3919             ilp32)
3920               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3921                             Upgrade the Assembler.])
3922               ;;
3923             *)
3924               ;;
3925           esac
3926         done
3927       fi
3928     fi
3929     # Check if we have binutils support for relocations types needed by -fpic
3930     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
3931     [
3932         .text
3933         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
3934     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
3935         [Define if your assembler supports relocs needed by -fpic.])])
3936     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
3937     AC_ARG_ENABLE(fix-cortex-a53-835769,
3938     [
3939 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
3940         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3941 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
3942         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3943     ],
3944       [
3945         case $enableval in
3946           yes)
3947             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
3948             ;;
3949           no)
3950             ;;
3951           *)
3952             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
3953   Valid choices are 'yes' and 'no'.])
3954             ;;
3956         esac
3957       ],
3958     [])
3959     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
3960     AC_ARG_ENABLE(fix-cortex-a53-843419,
3961     [
3962 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
3963         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3964 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
3965         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3966     ],
3967       [
3968         case $enableval in
3969           yes)
3970             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
3971             ;;
3972           no)
3973             ;;
3974           *)
3975             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
3976   Valid choices are 'yes' and 'no'.])
3977             ;;
3979         esac
3980       ],
3981     [])
3982     ;;
3984   # All TARGET_ABI_OSF targets.
3985   alpha*-*-linux* | alpha*-*-*bsd*)
3986     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3987         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3988 [       .set nomacro
3989         .text
3990         extbl   $3, $2, $3      !lituse_bytoff!1
3991         ldq     $2, a($29)      !literal!1
3992         ldq     $4, b($29)      !literal!2
3993         ldq_u   $3, 0($2)       !lituse_base!1
3994         ldq     $27, f($29)     !literal!5
3995         jsr     $26, ($27), f   !lituse_jsr!5
3996         ldah    $29, 0($26)     !gpdisp!3
3997         lda     $0, c($29)      !gprel
3998         ldah    $1, d($29)      !gprelhigh
3999         lda     $1, d($1)       !gprellow
4000         lda     $29, 0($29)     !gpdisp!3],,
4001     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4002   [Define if your assembler supports explicit relocations.])])
4003     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4004         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
4005 [       .set nomacro
4006         .text
4007         ldq     $27, a($29)     !literal!1
4008         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
4009     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4010   [Define if your assembler supports the lituse_jsrdirect relocation.])])
4011     ;;
4013   avr-*-*)
4014     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
4015       [--mlink-relax], [.text],,
4016       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4017                 [Define if your avr assembler supports --mlink-relax option.])])
4019     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
4020       [-mrmw], [.text],,
4021       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4022                 [Define if your avr assembler supports -mrmw option.])])
4024     gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4025       gcc_cv_as_avr_mgccisr,,
4026       [-mgcc-isr], [.text
4027                     __gcc_isr 1
4028                     __gcc_isr 2
4029                     __gcc_isr 0,r24
4030                    ],,
4031       [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4032                 [Define if your avr assembler supports -mgcc-isr option.])])
4034     # Check how default linker description file implements .rodata for
4035     # avrxmega3 (PR21472).  avr-gcc assumes .rodata is *not* loaded to
4036     # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4037     AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4038     cat > conftest.s <<EOF
4039         .section .rodata,"a",@progbits
4040         .global xxvaryy
4041     ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4042     xxvaryy:
4043         .word 1
4045     rm -f conftest.nm
4046     AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4047     AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4048     AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4049     if test -s conftest.nm
4050     then
4051         if grep ' R xxvaryy' conftest.nm > /dev/null; then
4052             AC_MSG_RESULT(yes)
4053             AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4054                 [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4055         else
4056             AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4057             echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4058             cat conftest.nm >&AS_MESSAGE_LOG_FD
4059             avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4060             AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4061         fi
4062     else
4063         AC_MSG_RESULT(test failed)
4064         echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4065         cat conftest.s >&AS_MESSAGE_LOG_FD
4066         AC_MSG_WARN([[see `config.log' for details]])
4067     fi
4068     rm -f conftest.s conftest.o conftest.elf conftest.nm
4069     ;;
4071   cris-*-*)
4072     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4073       gcc_cv_as_cris_no_mul_bug,[2,15,91],
4074       [-no-mul-bug-abort], [.text],,
4075       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4076                 [Define if your assembler supports the -no-mul-bug-abort option.])])
4077     ;;
4079   sparc*-*-*)
4080     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
4081       [-relax], [.text],,
4082       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4083                 [Define if your assembler supports -relax option.])])
4085     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4086       gcc_cv_as_sparc_gotdata_op,,
4087       [-K PIC],
4088 [.text
4089 .align 4
4090 foo:
4091         nop
4092 bar:
4093         sethi %gdop_hix22(foo), %g1
4094         xor    %g1, %gdop_lox10(foo), %g1
4095         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
4096       [if test x$gcc_cv_ld != x \
4097        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4098          if test x$gcc_cv_objdump != x; then
4099            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4100               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4101                gcc_cv_as_sparc_gotdata_op=no
4102            else
4103                gcc_cv_as_sparc_gotdata_op=yes
4104            fi
4105          fi
4106        fi
4107        rm -f conftest],
4108       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4109                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
4111     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4112       gcc_cv_as_sparc_ua_pcrel,,
4113       [-K PIC],
4114 [.text
4115 foo:
4116         nop
4117 .data
4118 .align 4
4119 .byte 0
4120 .uaword %r_disp32(foo)],
4121       [if test x$gcc_cv_ld != x \
4122        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4123          gcc_cv_as_sparc_ua_pcrel=yes
4124        fi
4125        rm -f conftest],
4126       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4127                 [Define if your assembler and linker support unaligned PC relative relocs.])
4129       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4130         gcc_cv_as_sparc_ua_pcrel_hidden,,
4131         [-K PIC],
4132 [.data
4133 .align 4
4134 .byte 0x31
4135 .uaword %r_disp32(foo)
4136 .byte 0x32, 0x33, 0x34
4137 .global foo
4138 .hidden foo
4139 foo:
4140 .skip 4],
4141         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4142          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4143          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4144             | grep ' 31000000 07323334' > /dev/null 2>&1; then
4145             if $gcc_cv_objdump -R conftest 2> /dev/null \
4146                | grep 'DISP32' > /dev/null 2>&1; then
4147                 :
4148             else
4149                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
4150             fi
4151          fi
4152          rm -f conftest],
4153          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4154                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4155     ]) # unaligned pcrel relocs
4157     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4158       gcc_cv_as_sparc_offsetable_lo10,,
4159       [-xarch=v9],
4160 [.text
4161         or %g1, %lo(ab) + 12, %g1
4162         or %g1, %lo(ab + 12), %g1],
4163       [if test x$gcc_cv_objdump != x \
4164        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4165           | grep ' 82106000 82106000' > /dev/null 2>&1; then
4166          gcc_cv_as_sparc_offsetable_lo10=yes
4167        fi],
4168        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4169                  [Define if your assembler supports offsetable %lo().])])
4171     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4172       gcc_cv_as_sparc_fmaf,,
4173       [-xarch=v9d],
4174       [.text
4175        .register %g2, #scratch
4176        .register %g3, #scratch
4177        .align 4
4178        fmaddd %f0, %f2, %f4, %f6
4179        addxccc %g1, %g2, %g3
4180        fsrl32 %f2, %f4, %f8
4181        fnaddd %f10, %f12, %f14],,
4182       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4183                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4185     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4186       gcc_cv_as_sparc_sparc4,,
4187       [-xarch=sparc4],
4188       [.text
4189        .register %g2, #scratch
4190        .register %g3, #scratch
4191        .align 4
4192        cxbe %g2, %g3, 1f
4193 1:     cwbneg %g2, %g3, 1f
4194 1:     sha1
4195        md5
4196        aes_kexpand0 %f4, %f6, %f8
4197        des_round %f38, %f40, %f42, %f44
4198        camellia_f %f54, %f56, %f58, %f60
4199        kasumi_fi_xor %f46, %f48, %f50, %f52],,
4200       [AC_DEFINE(HAVE_AS_SPARC4, 1,
4201                 [Define if your assembler supports SPARC4 instructions.])])
4203     gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4204       gcc_cv_as_sparc_sparc5,,
4205       [-xarch=sparc5],
4206       [.text
4207        .register %g2, #scratch
4208        .register %g3, #scratch
4209        .align 4
4210        subxc %g1, %g2, %g3
4211        fpadd8 %f0, %f2, %f4],,
4212       [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4213                 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4215     gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4216       gcc_cv_as_sparc_sparc6,,
4217       [-xarch=sparc6],
4218       [.text
4219        .register %g2, #scratch
4220        .register %g3, #scratch
4221        .align 4
4222        rd %entropy, %g1
4223        fpsll64x %f0, %f2, %f4],,
4224       [AC_DEFINE(HAVE_AS_SPARC6, 1,
4225                 [Define if your assembler supports SPARC6 instructions.])])
4227     gcc_GAS_CHECK_FEATURE([LEON instructions],
4228       gcc_cv_as_sparc_leon,,
4229       [-Aleon],
4230       [.text
4231        .register %g2, #scratch
4232        .register %g3, #scratch
4233        .align 4
4234        smac %g2, %g3, %g1
4235        umac %g2, %g3, %g1
4236        casa [[%g2]] 0xb, %g3, %g1],,
4237       [AC_DEFINE(HAVE_AS_LEON, 1,
4238                 [Define if your assembler supports LEON instructions.])])
4239     ;;
4241 changequote(,)dnl
4242   i[34567]86-*-* | x86_64-*-*)
4243 changequote([,])dnl
4244     case $target_os in
4245       cygwin*)
4246         # Full C++ conformance when using a shared libstdc++-v3 requires some
4247         # support from the Cygwin DLL, which in more recent versions exports
4248         # wrappers to aid in interposing and redirecting operators new, delete,
4249         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
4250         # are configuring for a version of Cygwin that exports the wrappers.
4251         if test x$host = x$target && test x$host_cpu = xi686; then
4252           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4253         else
4254           # Can't check presence of libc functions during cross-compile, so
4255           # we just have to assume we're building for an up-to-date target.
4256           gcc_ac_cygwin_dll_wrappers=yes
4257         fi
4258         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4259           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4260           [Define if you want to generate code by default that assumes that the
4261            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4262     esac
4263     case $target_os in
4264       cygwin* | pe | mingw32*)
4265         # Recent binutils allows the three-operand form of ".comm" on PE.  This
4266         # definition is used unconditionally to initialise the default state of
4267         # the target option variable that governs usage of the feature.
4268         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
4269          [2,19,52],,[.comm foo,1,32])
4270         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4271           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4272           [Define if your assembler supports specifying the alignment
4273            of objects allocated using the GAS .comm command.])
4274         # Used for DWARF 2 in PE
4275         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4276           gcc_cv_as_ix86_pe_secrel32,
4277           [2,15,91],,
4278 [.text
4279 foo:    nop
4280 .data
4281         .secrel32 foo],
4282           [if test x$gcc_cv_ld != x \
4283            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4284              gcc_cv_as_ix86_pe_secrel32=yes
4285            fi
4286            rm -f conftest],
4287           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4288             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4289         # Test if the assembler supports the extended form of the .section
4290         # directive that specifies section alignment.  LTO support uses this,
4291         # but normally only after installation, so we warn but don't fail the
4292         # configure if LTO is enabled but the assembler does not support it.
4293         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4294           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
4295         if test x$gcc_cv_as_section_has_align != xyes; then
4296           case ",$enable_languages," in
4297             *,lto,*)
4298               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4299               ;;
4300           esac
4301         fi
4302         ;;
4303     esac
4305     gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
4306       [-xbrace_comment=no], [.text],,
4307       [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4308                 [Define if your assembler supports -xbrace_comment option.])])
4310     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4311        gcc_cv_as_ix86_filds,,,
4312        [filds (%ebp); fists (%ebp)],,
4313        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4314          [Define if your assembler uses filds and fists mnemonics.])])
4316     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4317        gcc_cv_as_ix86_fildq,,,
4318        [fildq (%ebp); fistpq (%ebp)],,
4319        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4320          [Define if your assembler uses fildq and fistq mnemonics.])])
4322     gcc_GAS_CHECK_FEATURE([cmov syntax],
4323       gcc_cv_as_ix86_cmov_sun_syntax,,,
4324       [cmovl.l %edx, %eax],,
4325       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4326         [Define if your assembler supports the Sun syntax for cmov.])])
4328     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4329       gcc_cv_as_ix86_ffreep,,,
4330       [ffreep %st(1)],,
4331       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4332         [Define if your assembler supports the ffreep mnemonic.])])
4334     gcc_GAS_CHECK_FEATURE([.quad directive],
4335       gcc_cv_as_ix86_quad,,,
4336       [.quad 0],,
4337       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4338         [Define if your assembler supports the .quad directive.])])
4340     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4341       gcc_cv_as_ix86_sahf,,,
4342       [.code64
4343        sahf],,
4344       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4345         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4347     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4348       gcc_cv_as_ix86_interunit_movq,,,
4349       [.code64
4350        movq %mm0, %rax
4351        movq %rax, %xmm0])
4352     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4353       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4354       [Define if your assembler supports interunit movq mnemonic.])
4356     gcc_GAS_CHECK_FEATURE([hle prefixes],
4357       gcc_cv_as_ix86_hle,,,
4358       [lock xacquire cmpxchg %esi, (%ecx)],,
4359       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4360         [Define if your assembler supports HLE prefixes.])])
4362     gcc_GAS_CHECK_FEATURE([swap suffix],
4363       gcc_cv_as_ix86_swap,,,
4364       [movl.s %esp, %ebp],,
4365       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4366         [Define if your assembler supports the swap suffix.])])
4368     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4369       gcc_cv_as_ix86_diff_sect_delta,,,
4370       [.section .rodata
4371 .L1:
4372         .long .L2-.L1
4373         .long .L3-.L1
4374         .text
4375 .L3:    nop
4376 .L2:    nop],,
4377       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4378         [Define if your assembler supports the subtraction of symbols in different sections.])])
4380     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4381         gcc_cv_as_ix86_rep_lock_prefix,,,
4382         [rep movsl
4383          rep ret
4384          rep nop
4385          rep bsf %ecx, %eax
4386          rep bsr %ecx, %eax
4387          lock addl %edi, (%eax,%esi)
4388          lock orl $0, (%esp)],,
4389         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4390           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4392     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4393         gcc_cv_as_ix86_ud2,,,
4394         [ud2],,
4395       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4396         [Define if your assembler supports the 'ud2' mnemonic.])])
4398     # Enforce 32-bit output with gas and gld.
4399     if test x$gas = xyes; then
4400       as_ix86_gas_32_opt="--32"
4401     fi
4402     if echo "$ld_ver" | grep GNU > /dev/null; then
4403       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4404         ld_ix86_gld_32_opt="-melf_i386_sol2"
4405       else
4406         ld_ix86_gld_32_opt="-melf_i386"
4407       fi
4408     fi
4410     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4411         gcc_cv_as_ix86_tlsgdplt,,
4412         [$as_ix86_gas_32_opt],
4413         [call    tls_gd@tlsgdplt],
4414         [if test x$gcc_cv_ld != x \
4415          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4416            gcc_cv_as_ix86_tlsgdplt=yes
4417          fi
4418          rm -f conftest],
4419       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4420         [Define if your assembler and linker support @tlsgdplt.])])
4422     conftest_s='
4423         .section .tdata,"aw'$tls_section_flag'",@progbits
4424 tls_ld:
4425         .section .text,"ax",@progbits
4426          call    tls_ld@tlsldmplt'
4428     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4429         gcc_cv_as_ix86_tlsldmplt,,
4430         [$as_ix86_gas_32_opt],
4431         [$conftest_s],
4432         [if test x$gcc_cv_ld != x \
4433          && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4434            gcc_cv_as_ix86_tlsldmplt=yes
4435          fi
4436          rm -f conftest])
4437     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4438       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4439       [Define to 1 if your assembler and linker support @tlsldmplt.])
4441     conftest_s='
4442         .section .text,"ax",@progbits
4443         .globl  _start
4444         .type   _start, @function
4445 _start:      
4446         leal    value@tlsldm(%ebx), %eax
4447         call    ___tls_get_addr@plt
4449         .section .tdata,"aw'$tls_section_flag'",@progbits
4450         .type   value, @object
4451 value:'
4452     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4453         gcc_cv_as_ix86_tlsldm,,
4454         [$as_ix86_gas_32_opt],
4455         [$conftest_s],
4456         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4457             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4458            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4459               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4460              gcc_cv_as_ix86_tlsldm=yes
4461            fi
4462          fi
4463          rm -f conftest])
4464     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4465       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4466       [Define to 1 if your assembler and linker support @tlsldm.])
4468     conftest_s='
4469         .data
4470 bar:
4471         .byte 1
4472         .text
4473         .global _start
4474 _start:
4475          cmpl $0, bar@GOT
4476          jmp *_start@GOT'
4477     gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4478         gcc_cv_as_ix86_got32x,,
4479         [$as_ix86_gas_32_opt],
4480         [$conftest_s],
4481         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4482             && test x$gcc_cv_readelf != x \
4483             && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4484                | grep R_386_GOT32X > /dev/null 2>&1 \
4485             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4486            if $gcc_cv_objdump -dw conftest 2>&1 \
4487               | grep 0xffffff > /dev/null 2>&1; then
4488              gcc_cv_as_ix86_got32x=no
4489            else
4490              gcc_cv_as_ix86_got32x=yes
4491            fi
4492          fi
4493          rm -f conftest])
4494     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4495       [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4496       [Define 0/1 if your assembler and linker support @GOT.])
4498     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4499       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4500       [$as_ix86_gas_32_opt],
4501 [       .text
4502 .L0:
4503         nop
4504         .data
4505         .long .L0@GOTOFF])
4506     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4507       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4508       [Define true if the assembler supports '.long foo@GOTOFF'.])
4510     conftest_s='
4511         .section .text,"ax",@progbits
4512         .globl  _start
4513         .type   _start, @function
4514 _start:
4515         leal    ld@tlsldm(%ecx), %eax
4516         call    *___tls_get_addr@GOT(%ecx)
4517         leal    gd@tlsgd(%ecx), %eax
4518         call    *___tls_get_addr@GOT(%ecx)
4520         .section .tdata,"aw'$tls_section_flag'",@progbits
4521         .type   ld, @object
4523         .byte 0
4524         .globl  gd
4525         .type   gd, @object
4527         .byte 0'
4528     gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4529         gcc_cv_as_ix86_tls_get_addr_via_got,,
4530         [$as_ix86_gas_32_opt],
4531         [$conftest_s],
4532         [if test x$gcc_cv_ld != x \
4533             && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4534            gcc_cv_as_ix86_tls_get_addr_via_got=yes
4535          fi
4536          rm -f conftest])
4537     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4538       [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4539       [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4540     ;;
4542   ia64*-*-*)
4543     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4544         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4545 [       .text
4546         addl r15 = @ltoffx(x#), gp
4547         ;;
4548         ld8.mov r16 = [[r15]], x#
4550     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4551           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4553     ;;
4555   powerpc*-*-*)
4557     case $target in
4558       *-*-darwin*)
4559         gcc_GAS_CHECK_FEATURE([.machine directive support],
4560           gcc_cv_as_machine_directive,,,
4561           [     .machine ppc7400])
4562         if test x$gcc_cv_as_machine_directive != xyes; then
4563           echo "*** This target requires an assembler supporting \".machine\"" >&2
4564           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4565           test x$build = x$target && exit 1
4566         fi
4567         ;;
4568     esac
4570     case $target in
4571       *-*-aix*) conftest_s='    .machine "pwr5"
4572         .csect .text[[PR]]
4573         mfcr 3,128';;
4574       *-*-darwin*) conftest_s=' .text
4575         mfcr r3,128';;
4576       *) conftest_s='   .machine power4
4577         .text
4578         mfcr 3,128';;
4579     esac
4581     gcc_GAS_CHECK_FEATURE([mfcr field support],
4582       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4583       [$conftest_s],,
4584       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4585           [Define if your assembler supports mfcr field.])])
4587     case $target in
4588       *-*-aix*) conftest_s='    .csect .text[[PR]]
4589 LCF..0:
4590         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4591       *-*-darwin*)
4592         conftest_s='    .text
4593 LCF0:
4594         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4595       *) conftest_s='   .text
4596 .LCF0:
4597         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4598     esac
4600     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4601       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4602       [$conftest_s],,
4603       [AC_DEFINE(HAVE_AS_REL16, 1,
4604           [Define if your assembler supports R_PPC_REL16 relocs.])])
4606     case $target in
4607       *-*-aix*) conftest_s='    .machine "pwr7"
4608         .csect .text[[PR]]
4609         lxvd2x 1,2,3';;
4610       *) conftest_s='   .machine power7
4611         .text
4612         lxvd2x 1,2,3';;
4613     esac
4615     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4616       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4617       [$conftest_s],,
4618       [AC_DEFINE(HAVE_AS_VSX, 1,
4619           [Define if your assembler supports VSX instructions.])])
4621     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4622       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4623       [.gnu_attribute 4,1],,
4624       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4625           [Define if your assembler supports .gnu_attribute.])])
4627     gcc_GAS_CHECK_FEATURE([tls marker support],
4628       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4629       [ bl __tls_get_addr(x@tlsgd)],,
4630       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4631           [Define if your assembler supports arg info for __tls_get_addr.])])
4633     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4634       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4635       [ .reloc .,R_PPC64_ENTRY; nop],,
4636       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4637           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4639     case $target in
4640       *-*-aix*)
4641         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4642           gcc_cv_as_aix_ref, [2,21,0],,
4643           [     .csect stuff[[rw]]
4644              stuff:
4645                 .long 1
4646                 .extern sym
4647                 .ref sym
4648           ],,
4649           [AC_DEFINE(HAVE_AS_REF, 1,
4650             [Define if your assembler supports .ref])])
4652         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4653           gcc_cv_as_aix_dwloc, [2,21,0],,
4654           [     .dwsect 0xA0000
4655         Lframe..0:
4656                 .vbyte 4,Lframe..0
4657           ],,
4658           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4659             [Define if your assembler supports AIX debug frame section label reference.])])
4660         ;;
4661     esac
4662     ;;
4664   mips*-*-*)
4665     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4666       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4667 [       lw $4,%gp_rel(foo)($4)],,
4668       [if test x$target_cpu_default = x
4669        then target_cpu_default=MASK_EXPLICIT_RELOCS
4670        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4671        fi])
4673     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4674       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4675       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4676                  [Define if the assembler understands -mno-shared.])])
4678     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4679       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4680       [.gnu_attribute 4,1],,
4681       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4682           [Define if your assembler supports .gnu_attribute.])])
4684     gcc_GAS_CHECK_FEATURE([.module support],
4685       gcc_cv_as_mips_dot_module,,[-32],
4686       [.module mips2
4687        .module fp=xx],,
4688       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4689           [Define if your assembler supports .module.])])
4690     if test x$gcc_cv_as_mips_dot_module = xno \
4691        && test x$with_fp_32 != x; then
4692       AC_MSG_ERROR(
4693         [Requesting --with-fp-32= requires assembler support for .module.])
4694     fi
4696     gcc_GAS_CHECK_FEATURE([.micromips support],
4697       gcc_cv_as_micromips_support,,[--fatal-warnings],
4698       [.set micromips],,
4699       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4700           [Define if your assembler supports the .set micromips directive])])
4702     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4703       gcc_cv_as_mips_dtprelword, [2,18,0],,
4704       [.section .tdata,"awT",@progbits
4706         .word 2
4707         .text
4708         .dtprelword x+0x8000],,
4709       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4710           [Define if your assembler supports .dtprelword.])])
4712     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4713       gcc_cv_as_mips_dspr1_mult,,,
4714 [       .set    mips32r2
4715         .set    nodspr2
4716         .set    dsp
4717         madd    $ac3,$4,$5
4718         maddu   $ac3,$4,$5
4719         msub    $ac3,$4,$5
4720         msubu   $ac3,$4,$5
4721         mult    $ac3,$4,$5
4722         multu   $ac3,$4,$5],,
4723       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4724           [Define if your assembler supports DSPR1 mult.])])
4726     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4727     gcc_cv_as_ld_jalr_reloc=no
4728     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4729       if test $in_tree_ld = yes ; then
4730         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 \
4731            && test $in_tree_ld_is_elf = yes; then
4732           gcc_cv_as_ld_jalr_reloc=yes
4733         fi
4734       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4735         echo '  .ent x' > conftest.s
4736         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4737         echo '  lw $25,%call16(y)($28)' >> conftest.s
4738         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4739         echo '1:        jalr $25' >> conftest.s
4740         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4741         echo '1:        jalr $25' >> conftest.s
4742         echo '  .end x' >> conftest.s
4743         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4744            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4745           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4746              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4747             gcc_cv_as_ld_jalr_reloc=yes
4748           fi
4749         fi
4750         rm -f conftest.*
4751       fi
4752     fi
4753     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4754       if test x$target_cpu_default = x; then
4755         target_cpu_default=MASK_RELAX_PIC_CALLS
4756       else
4757         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4758       fi
4759     fi
4760     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4762     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4763       [gcc_cv_ld_mips_personality_relaxation],
4764       [gcc_cv_ld_mips_personality_relaxation=no
4765        if test $in_tree_ld = yes ; then
4766          if test "$gcc_cv_gld_major_version" -eq 2 \
4767                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4768                  -o "$gcc_cv_gld_major_version" -gt 2; then
4769            gcc_cv_ld_mips_personality_relaxation=yes
4770          fi
4771        elif test x$gcc_cv_as != x \
4772                  -a x$gcc_cv_ld != x \
4773                  -a x$gcc_cv_readelf != x ; then
4774          cat > conftest.s <<EOF
4775         .cfi_startproc
4776         .cfi_personality 0x80,indirect_ptr
4777         .ent test
4778 test:
4779         nop
4780         .end test
4781         .cfi_endproc
4783         .section .data,"aw",@progbits
4784 indirect_ptr:
4785         .dc.a personality
4787          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4788             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4789            if $gcc_cv_readelf -d conftest 2>&1 \
4790               | grep TEXTREL > /dev/null 2>&1; then
4791              :
4792            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4793                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4794              :
4795            else
4796              gcc_cv_ld_mips_personality_relaxation=yes
4797            fi
4798          fi
4799        fi
4800        rm -f conftest.s conftest.o conftest])
4801     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4802             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4803       [Define if your linker can relax absolute .eh_frame personality
4804 pointers into PC-relative form.])
4805     fi
4807     gcc_GAS_CHECK_FEATURE([-mnan= support],
4808       gcc_cv_as_mips_nan,,
4809       [-mnan=2008],,,
4810       [AC_DEFINE(HAVE_AS_NAN, 1,
4811                  [Define if the assembler understands -mnan=.])])
4812     if test x$gcc_cv_as_mips_nan = xno \
4813        && test x$with_nan != x; then
4814       AC_MSG_ERROR(
4815         [Requesting --with-nan= requires assembler support for -mnan=])
4816     fi
4817     ;;
4818     s390*-*-*)
4819     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4820       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4821       [.gnu_attribute 8,1],,
4822       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4823           [Define if your assembler supports .gnu_attribute.])])
4824     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
4825       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
4826       [ .machinemode push
4827         .machinemode pop
4828         .machine push
4829         .machine pop],,
4830       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
4831           [Define if your assembler supports .machine and .machinemode.])])
4832     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
4833       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
4834       [ .machine z13+vx ],,
4835       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
4836           [Define if your assembler supports architecture modifiers.])])
4837     ;;
4838 esac
4840 # Mips and HP-UX need the GNU assembler.
4841 # Linux on IA64 might be able to use the Intel assembler.
4843 case "$target" in
4844   mips*-*-* | *-*-hpux* )
4845     if test x$gas_flag = xyes \
4846        || test x"$host" != x"$build" \
4847        || test ! -x "$gcc_cv_as" \
4848        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4849       :
4850     else
4851       echo "*** This configuration requires the GNU assembler" >&2
4852       exit 1
4853     fi
4854     ;;
4855 esac
4857 # ??? Not all targets support dwarf2 debug_line, even within a version
4858 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4859 # info to the output file.  So, as supported targets are added to gas 2.11,
4860 # add some instruction here to (also) show we expect this might work.
4861 # ??? Once 2.11 is released, probably need to add first known working
4862 # version to the per-target configury.
4863 case "$cpu_type" in
4864   aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \
4865   | microblaze | mips | nios2 | pa | riscv | rs6000 | score | sparc | spu \
4866   | tilegx | tilepro | visium | xstormy16 | xtensa)
4867     insn="nop"
4868     ;;
4869   ia64 | s390)
4870     insn="nop 0"
4871     ;;
4872   mmix)
4873     insn="swym 0"
4874     ;;
4875 esac
4876 if test x"$insn" != x; then
4877  conftest_s="\
4878         .file 1 \"conftest.s\"
4879         .loc 1 3 0
4880         $insn"
4881  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4882   gcc_cv_as_dwarf2_debug_line,
4883   [elf,2,11,0],, [$conftest_s],
4884   [if test x$gcc_cv_objdump != x \
4885    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4886       | grep debug_line > /dev/null 2>&1; then
4887      gcc_cv_as_dwarf2_debug_line=yes
4888    fi])
4890 # The .debug_line file table must be in the exact order that
4891 # we specified the files, since these indices are also used
4892 # by DW_AT_decl_file.  Approximate this test by testing if
4893 # the assembler bitches if the same index is assigned twice.
4894  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4895   gcc_cv_as_dwarf2_file_buggy,,,
4896 [       .file 1 "foo.s"
4897         .file 1 "bar.s"])
4899  if test $gcc_cv_as_dwarf2_debug_line = yes \
4900  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4901     AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4902   [Define if your assembler supports dwarf2 .file/.loc directives,
4903    and preserves file table indices exactly as given.])
4905     if test $gcc_cv_as_leb128 = yes; then
4906         conftest_s="\
4907         .file 1 \"conftest.s\"
4908         .loc 1 3 0 view .LVU1
4909         $insn
4910         .data
4911         .uleb128 .LVU1
4912         .uleb128 .LVU1
4914         gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
4915           gcc_cv_as_dwarf2_debug_view,
4916           [elf,2,27,0],,[$conftest_s],,
4917           [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
4918   [Define if your assembler supports views in dwarf2 .loc directives.])])
4919     fi
4920  fi
4922  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4923   gcc_cv_as_gdwarf2_flag,
4924   [elf,2,11,0], [--gdwarf2], [$insn],,
4925   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4926 [Define if your assembler supports the --gdwarf2 option.])])
4928  gcc_GAS_CHECK_FEATURE([--gstabs option],
4929   gcc_cv_as_gstabs_flag,
4930   [elf,2,11,0], [--gstabs], [$insn],,
4931   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4932 [Define if your assembler supports the --gstabs option.])])
4934  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4935   gcc_cv_as_debug_prefix_map_flag,
4936   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4937   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4938 [Define if your assembler supports the --debug-prefix-map option.])])
4941 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4942   gcc_cv_as_compress_debug,,,,
4943   [# gas compiled without zlib cannot compress debug sections and warns
4944    # about it, but still exits successfully.  So check for this, too.
4945    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4946    then
4947      gcc_cv_as_compress_debug=0
4948    # Since binutils 2.26, gas supports --compress-debug-sections=type,
4949    # defaulting to the ELF gABI format.
4950    elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
4951    then
4952      gcc_cv_as_compress_debug=2
4953      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4954      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4955    # Before binutils 2.26, gas only supported --compress-debug-options and
4956    # emitted the traditional GNU format.
4957    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4958    then
4959      gcc_cv_as_compress_debug=1
4960      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4961      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4962    else
4963      gcc_cv_as_compress_debug=0
4964    fi])
4965 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4966 [Define to the level of your assembler's compressed debug section support.])
4967 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4968 [Define to the assembler option to enable compressed debug sections.])
4969 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4970 [Define to the assembler option to disable compressed debug sections.])
4972 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4973  ,,
4974 [.lcomm bar,4,16],,
4975 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4976   [Define if your assembler supports .lcomm with an alignment field.])])
4978 if test x$with_sysroot = x && test x$host = x$target \
4979    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4980    && test "$prefix" != "NONE"; then
4981   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4982 [Define to PREFIX/include if cpp should also search that directory.])
4985 # Determine the version of glibc, if any, used on the target.
4986 AC_MSG_CHECKING([for target glibc version])
4987 AC_ARG_WITH([glibc-version],
4988   [AS_HELP_STRING([--with-glibc-version=M.N],
4989     [assume GCC used with glibc version M.N or later])], [
4990 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4991   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4992   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4993 else
4994   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4995 fi], [
4996 glibc_version_major=0
4997 glibc_version_minor=0
4998 [if test -f $target_header_dir/features.h \
4999   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
5000   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
5001   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
5002   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
5003 fi]])
5004 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5005 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5006 [GNU C Library major version number used on the target, or 0.])
5007 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5008 [GNU C Library minor version number used on the target, or 0.])
5010 AC_ARG_ENABLE(gnu-unique-object,
5011  [AS_HELP_STRING([--enable-gnu-unique-object],
5012    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5013  [case $enable_gnu_unique_object in
5014     yes | no) ;;
5015     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5016 Valid choices are 'yes' and 'no'.]) ;;
5017   esac],
5018  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
5019    [elf,2,19,52],,
5020    [.type foo, '$target_type_format_char'gnu_unique_object],,
5021 # We need to unquote above to to use the definition from config.gcc.
5022 # Also check for ld.so support, i.e. glibc 2.11 or higher.
5023    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5024    )])
5025 if test x$enable_gnu_unique_object = xyes; then
5026   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5027    [Define if your assembler supports @gnu_unique_object.])
5030 AC_CACHE_CHECK([assembler for tolerance to line number 0],
5031  [gcc_cv_as_line_zero],
5032  [gcc_cv_as_line_zero=no
5033   if test $in_tree_gas = yes; then
5034     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
5035   elif test "x$gcc_cv_as" != x; then
5036     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5037     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5038        test "x`cat conftest.out`" = x
5039     then
5040       gcc_cv_as_line_zero=yes
5041     else
5042       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5043       cat conftest.s >&AS_MESSAGE_LOG_FD
5044       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5045       cat conftest.out >&AS_MESSAGE_LOG_FD
5046     fi
5047     rm -f conftest.o conftest.s conftest.out
5048   fi])
5049 if test "x$gcc_cv_as_line_zero" = xyes; then
5050   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5051 [Define if the assembler won't complain about a line such as # 0 "" 2.])
5054 AC_MSG_CHECKING(support for thin archives)
5055 thin_archive_support=no
5056 echo 'int main (void) { return 0; }' > conftest.c
5057 if ($AR --version | sed 1q | grep "GNU ar" \
5058     && $CC $CFLAGS -c conftest.c \
5059     && $AR rcT conftest.a conftest.o \
5060     && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5061   thin_archive_support=yes
5063 rm -f conftest.c conftest.o conftest.a conftest
5064 AC_MSG_RESULT($thin_archive_support)
5065 AC_SUBST(thin_archive_support)
5067 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5068 gcc_cv_ld_eh_frame_hdr=no
5069 if test $in_tree_ld = yes ; then
5070   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 \
5071      && test $in_tree_ld_is_elf = yes; then
5072     gcc_cv_ld_eh_frame_hdr=yes
5073   fi
5074 elif test x$gcc_cv_ld != x; then
5075   if echo "$ld_ver" | grep GNU > /dev/null; then
5076     # Check if linker supports --eh-frame-hdr option
5077     if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5078       gcc_cv_ld_eh_frame_hdr=yes
5079     fi
5080   else
5081     case "$target" in
5082       *-*-solaris2*)
5083         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5084         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
5085           gcc_cv_ld_eh_frame_hdr=yes
5086         fi
5087         ;;
5088     esac
5089   fi
5091 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
5092 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
5093         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
5094 [Define if your linker supports .eh_frame_hdr.])
5096 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
5098 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
5099 gcc_cv_ld_eh_frame_ciev3=no
5100 if test $in_tree_ld = yes ; then
5101   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 \
5102      && test $in_tree_ld_is_elf = yes; then
5103     gcc_cv_ld_eh_frame_ciev3=yes
5104   fi
5105 elif test x$gcc_cv_ld != x; then
5106   if echo "$ld_ver" | grep GNU > /dev/null; then
5107     gcc_cv_ld_eh_frame_ciev3=yes
5108     if test 0"$ld_date" -lt 20040513; then
5109       if test -n "$ld_date"; then
5110         # If there was date string, but was earlier than 2004-05-13, fail
5111         gcc_cv_ld_eh_frame_ciev3=no
5112       elif test "$ld_vers_major" -lt 2; then
5113         gcc_cv_ld_eh_frame_ciev3=no
5114       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
5115         gcc_cv_ld_eh_frame_ciev3=no
5116       fi
5117     fi
5118   else
5119     case "$target" in
5120       *-*-solaris2*)
5121         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
5122         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
5123           gcc_cv_ld_eh_frame_ciev3=yes
5124         fi
5125         ;;
5126     esac
5127   fi
5129 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
5130   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
5131   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
5132 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
5134 AC_MSG_CHECKING(linker position independent executable support)
5135 gcc_cv_ld_pie=no
5136 if test $in_tree_ld = yes ; then
5137   case "$target" in
5138     # Full PIE support on Solaris was only introduced in gld 2.26.
5139     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
5140     *)              gcc_gld_pie_min_version=15 ;;
5141   esac
5142   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 \
5143      && test $in_tree_ld_is_elf = yes; then
5144     gcc_cv_ld_pie=yes
5145   fi
5146 elif test x$gcc_cv_ld != x; then
5147   # Check if linker supports -pie option
5148   if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
5149     gcc_cv_ld_pie=yes
5150     case "$target" in
5151       *-*-solaris2*)
5152         if echo "$ld_ver" | grep GNU > /dev/null \
5153           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5154           gcc_cv_ld_pie=no
5155         fi
5156         ;;
5157     esac
5158   else
5159     case "$target" in
5160       *-*-solaris2.1[[1-9]]*)
5161         # Solaris 11.3 added PIE support.
5162         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
5163           gcc_cv_ld_pie=yes
5164         fi
5165         ;;
5166     esac
5167   fi
5169 if test x"$gcc_cv_ld_pie" = xyes; then
5170         AC_DEFINE(HAVE_LD_PIE, 1,
5171 [Define if your linker supports PIE option.])
5173 AC_MSG_RESULT($gcc_cv_ld_pie)
5175 AC_MSG_CHECKING(linker PIE support with copy reloc)
5176 gcc_cv_ld_pie_copyreloc=no
5177 if test $gcc_cv_ld_pie = yes ; then
5178   if test $in_tree_ld = yes ; then
5179     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
5180       gcc_cv_ld_pie_copyreloc=yes
5181     fi
5182   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5183     # Check if linker supports -pie option with copy reloc
5184     case "$target" in
5185     i?86-*-linux* | x86_64-*-linux*)
5186       cat > conftest1.s <<EOF
5187         .globl  a_glob
5188         .data
5189         .type   a_glob, @object
5190         .size   a_glob, 4
5191 a_glob:
5192         .long   2
5194       cat > conftest2.s <<EOF
5195         .text
5196         .globl  main
5197         .type   main, @function
5198 main:
5199         movl    %eax, a_glob(%rip)
5200         .size   main, .-main
5201         .globl  ptr
5202         .section        .data.rel,"aw",@progbits
5203         .type   ptr, @object
5204 ptr:
5205         .quad   a_glob
5207       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5208          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
5209          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5210          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
5211         gcc_cv_ld_pie_copyreloc=yes
5212       fi
5213       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
5214       ;;
5215     esac
5216   fi
5218 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
5219   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
5220   [Define 0/1 if your linker supports -pie option with copy reloc.])
5221 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
5223 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
5224 gcc_cv_ld_eh_gc_sections=no
5225 if test $in_tree_ld = yes ; then
5226   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 \
5227      && test $in_tree_ld_is_elf = yes; then
5228     gcc_cv_ld_eh_gc_sections=yes
5229   fi
5230 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
5231   cat > conftest.s <<EOF
5232         .section        .text
5233 .globl _start
5234         .type _start, @function
5235 _start:
5236         .long foo
5237         .size _start, .-_start
5238         .section        .text.foo,"ax",@progbits
5239         .type foo, @function
5240 foo:
5241         .long 0
5242         .size foo, .-foo
5243         .section        .gcc_except_table.foo,"a",@progbits
5244 .L0:
5245         .long 0
5246         .section        .eh_frame,"a",@progbits
5247         .long .L0
5249   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5250     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5251          | grep "gc-sections option ignored" > /dev/null; then
5252       gcc_cv_ld_eh_gc_sections=no
5253     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5254          | grep gcc_except_table > /dev/null; then
5255       gcc_cv_ld_eh_gc_sections=yes
5256       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5257       if test x$gcc_cv_as_comdat_group != xyes; then
5258         gcc_cv_ld_eh_gc_sections=no
5259         cat > conftest.s <<EOF
5260         .section        .text
5261 .globl _start
5262         .type _start, @function
5263 _start:
5264         .long foo
5265         .size _start, .-_start
5266         .section        .gnu.linkonce.t.foo,"ax",@progbits
5267         .type foo, @function
5268 foo:
5269         .long 0
5270         .size foo, .-foo
5271         .section        .gcc_except_table.foo,"a",@progbits
5272 .L0:
5273         .long 0
5274         .section        .eh_frame,"a",@progbits
5275         .long .L0
5277         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5278           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5279                | grep "gc-sections option ignored" > /dev/null; then
5280             gcc_cv_ld_eh_gc_sections=no
5281           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5282                | grep gcc_except_table > /dev/null; then
5283             gcc_cv_ld_eh_gc_sections=yes
5284           fi
5285         fi
5286       fi
5287     fi
5288   fi
5289   rm -f conftest.s conftest.o conftest
5291 case "$target" in
5292   hppa*-*-linux*)
5293     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5294     gcc_cv_ld_eh_gc_sections=no
5295     ;;
5296 esac
5297 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5298         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5299   [Define if your linker supports garbage collection of
5300    sections in presence of EH frames.])
5302 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5304 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5305 gcc_cv_ld_eh_gc_sections_bug=no
5306 if test $in_tree_ld = yes ; then
5307   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 \
5308      && test $in_tree_ld_is_elf = yes; then
5309     gcc_cv_ld_eh_gc_sections_bug=yes
5310   fi
5311 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
5312   gcc_cv_ld_eh_gc_sections_bug=yes
5313   cat > conftest.s <<EOF
5314         .section        .text
5315 .globl _start
5316         .type _start, @function
5317 _start:
5318         .long foo
5319         .size _start, .-_start
5320         .section        .text.startup.foo,"ax",@progbits
5321         .type foo, @function
5322 foo:
5323         .long 0
5324         .size foo, .-foo
5325         .section        .gcc_except_table.foo,"a",@progbits
5326 .L0:
5327         .long 0
5328         .section        .eh_frame,"a",@progbits
5329         .long .L0
5331   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5332     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5333          | grep "gc-sections option ignored" > /dev/null; then
5334       :
5335     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5336          | grep gcc_except_table > /dev/null; then
5337       gcc_cv_ld_eh_gc_sections_bug=no
5338     fi
5339   fi
5340   rm -f conftest.s conftest.o conftest
5342 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5343         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5344   [Define if your linker has buggy garbage collection of
5345    sections support when .text.startup.foo like sections are used.])
5347 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5349 AC_MSG_CHECKING(linker for compressed debug sections)
5350 # gold/gld support compressed debug sections since binutils 2.19/2.21
5351 # In binutils 2.26, gld gained support for the ELF gABI format.
5352 if test $in_tree_ld = yes ; then
5353   gcc_cv_ld_compress_debug=0
5354   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 \
5355      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5356     gcc_cv_ld_compress_debug=2
5357     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5358   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 \
5359      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
5360     gcc_cv_ld_compress_debug=3
5361     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5362   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 \
5363      && test $in_tree_ld_is_elf = yes; then
5364     gcc_cv_ld_compress_debug=1
5365   fi
5366 elif echo "$ld_ver" | grep GNU > /dev/null; then
5367   if test "$ld_vers_major" -lt 2 \
5368      || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5369     gcc_cv_ld_compress_debug=0
5370   elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5371     gcc_cv_ld_compress_debug=1
5372   else
5373     gcc_cv_ld_compress_debug=3
5374     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5375   fi
5376   if test $ld_is_gold = yes; then
5377     gcc_cv_ld_compress_debug=2
5378     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5379   fi
5380 else
5381 changequote(,)dnl
5382   case "${target}" in
5383     *-*-solaris2*)
5384       # Introduced in Solaris 11.2.
5385       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5386         gcc_cv_ld_compress_debug=3
5387         gcc_cv_ld_compress_debug_option="-z compress-sections"
5388       else
5389         gcc_cv_ld_compress_debug=0
5390       fi
5391       ;;
5392     *)
5393       # Assume linkers other than GNU ld don't support compessed debug
5394       # sections.
5395       gcc_cv_ld_compress_debug=0
5396       ;;
5397   esac
5398 changequote([,])dnl
5400 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5401 [Define to the level of your linker's compressed debug section support.])
5402 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5403 [Define to the linker option to enable compressed debug sections.])
5404 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5406 if test x"$ld64_flag" = x"yes"; then
5408   # Set defaults for possibly untestable items.
5409   gcc_cv_ld64_export_dynamic=0
5411   if test "$build" = "$host"; then
5412     darwin_try_test=1
5413   else
5414     darwin_try_test=0
5415   fi
5417   # On Darwin, because of FAT library support, it is often possible to execute
5418   # exes from compatible archs even when the host differs from the build system.
5419   case "$build","$host" in
5420     x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
5421         darwin_try_test=1;;
5422     *) ;;
5423   esac
5425   # If the configurer specified a minimum ld64 version to be supported, then use
5426   # that to determine feature support.
5427   if test x"${gcc_cv_ld64_version}" != x; then
5428     AC_MSG_CHECKING(ld64 specified version)
5429     gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
5430     AC_MSG_RESULT($gcc_cv_ld64_major)
5431    if test "$gcc_cv_ld64_major" -ge 236; then
5432       gcc_cv_ld64_export_dynamic=1
5433     fi
5434   elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
5435     # If the version was not specified, try to find it.
5436     AC_MSG_CHECKING(linker version)
5437     if test x"${gcc_cv_ld64_version}" = x; then
5438       gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
5439     fi
5440     AC_MSG_RESULT($gcc_cv_ld64_version)
5442     AC_MSG_CHECKING(linker for -export_dynamic support)
5443     gcc_cv_ld64_export_dynamic=1
5444     if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
5445       gcc_cv_ld64_export_dynamic=0
5446     fi
5447     AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
5448   fi
5450   if test x"${gcc_cv_ld64_version}" != x; then
5451     AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
5452       [Define to ld64 version.])
5453   fi
5455   AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
5456   [Define to 1 if ld64 supports '-export_dynamic'.])
5459 # --------
5460 # UNSORTED
5461 # --------
5463 AC_CACHE_CHECK(linker --as-needed support,
5464 gcc_cv_ld_as_needed,
5465 [gcc_cv_ld_as_needed=no
5466 gcc_cv_ld_as_needed_option='--as-needed'
5467 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5468 if test $in_tree_ld = yes ; then
5469   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 \
5470      && test $in_tree_ld_is_elf = yes; then
5471     gcc_cv_ld_as_needed=yes
5472     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
5473       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5474       gcc_cv_ld_no_as_needed_option='--pop-state'
5475     fi
5476   fi
5477 elif test x$gcc_cv_ld != x; then
5478   # Check if linker supports --as-needed and --no-as-needed options
5479   if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
5480     gcc_cv_ld_as_needed=yes
5481     if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
5482        && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
5483        && echo "$ld_ver" | grep GNU > /dev/null \
5484        && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
5485       # Use these options only when both ld.bfd and ld.gold support
5486       # --push-state/--pop-state, which unfortunately wasn't added
5487       # at the same time.
5488       gcc_cv_ld_as_needed_option='--push-state --as-needed'
5489       gcc_cv_ld_no_as_needed_option='--pop-state'
5490     fi
5491   fi
5492   case "$target:$gnu_ld" in
5493     *-*-solaris2*:no)
5494       # Solaris 2 ld always supports -z ignore/-z record.  Prefer the native
5495       # forms.
5496       gcc_cv_ld_as_needed=yes
5497       gcc_cv_ld_as_needed_option="-z ignore"
5498       gcc_cv_ld_no_as_needed_option="-z record"
5499       ;;
5500   esac
5502 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5503 # dl_iterate_phdr, i.e. since Solaris 11.
5504 case "$target" in
5505   *-*-solaris2.1[[1-9]]*)
5506     case "$target" in
5507     i?86-*-* | x86_64-*-*)
5508       if echo "$ld_ver" | grep GNU > /dev/null; then
5509         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5510         gcc_cv_ld_as_needed=no
5511       fi
5512       ;;
5513     esac
5514     ;;
5515   *-*-solaris2*)
5516     gcc_cv_ld_as_needed=no
5517     ;;
5518 esac
5520 if test x"$gcc_cv_ld_as_needed" = xyes; then
5521         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5522 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5523         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5524 [Define to the linker option to ignore unused dependencies.])
5525         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5526 [Define to the linker option to keep unused dependencies.])
5529 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5530 saved_LDFLAGS="$LDFLAGS"
5531 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5532   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5533   AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
5534     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5535 done
5536 LDFLAGS="$saved_LDFLAGS"
5537 if test "x$gcc_cv_ld_clearcap" = xyes; then
5538   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5539 [Define if the linker supports clearing hardware capabilities via mapfile.])
5540   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5542 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5544 case "$target" in
5545   powerpc*-*-*)
5546     case "$target" in
5547       *le-*-linux*)
5548         emul_name="-melf32lppc"
5549         ;;
5550       *)
5551         emul_name="-melf32ppc"
5552         ;;
5553     esac
5554     AC_CACHE_CHECK(linker .gnu.attributes long double support,
5555     gcc_cv_ld_ppc_attr,
5556     [gcc_cv_ld_ppc_attr=no
5557     if test x"$ld_is_gold" = xyes; then
5558       gcc_cv_ld_ppc_attr=yes
5559     elif test $in_tree_ld = yes ; then
5560       if test "$gcc_cv_gld_major_version" -eq 2 \
5561                 -a "$gcc_cv_gld_minor_version" -ge 28 \
5562                 -o "$gcc_cv_gld_major_version" -gt 2; then
5563         gcc_cv_ld_ppc_attr=yes
5564       fi
5565     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5566       # check that merging the long double .gnu_attribute doesn't warn
5567       cat > conftest1.s <<EOF
5568         .gnu_attribute 4,1
5570       cat > conftest2.s <<EOF
5571         .gnu_attribute 4,9
5573       if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5574          && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5575          && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
5576          && test ! -s conftest.err; then
5577         gcc_cv_ld_ppc_attr=yes
5578       fi
5579       rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
5580     fi
5581     ])
5582     if test x$gcc_cv_ld_ppc_attr = xyes; then
5583       AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
5584     [Define if your PowerPC linker has .gnu.attributes long double support.])
5585     fi
5586     ;;
5587 esac
5589 case "$target:$tm_file" in
5590   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5591   case "$target" in
5592      *le-*-linux*)
5593      emul_name="-melf64lppc"
5594       ;;
5595      *-*-linux*)
5596      emul_name="-melf64ppc"
5597       ;;
5598      *-*-freebsd*)
5599      emul_name="-melf64ppc_fbsd"
5600       ;;
5601   esac
5602     AC_CACHE_CHECK(linker support for omitting dot symbols,
5603     gcc_cv_ld_no_dot_syms,
5604     [gcc_cv_ld_no_dot_syms=no
5605     if test x"$ld_is_gold" = xyes; then
5606       gcc_cv_ld_no_dot_syms=yes
5607     elif test $in_tree_ld = yes ; then
5608       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
5609         gcc_cv_ld_no_dot_syms=yes
5610       fi
5611     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5612       cat > conftest1.s <<EOF
5613         .text
5614         bl .foo
5616       cat > conftest2.s <<EOF
5617         .section ".opd","aw"
5618         .align 3
5619         .globl foo
5620         .type foo,@function
5621 foo:
5622         .quad .LEfoo,.TOC.@tocbase,0
5623         .text
5624 .LEfoo:
5625         blr
5626         .size foo,.-.LEfoo
5628       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5629          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5630          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5631         gcc_cv_ld_no_dot_syms=yes
5632       fi
5633       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5634     fi
5635     ])
5636     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5637       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5638     [Define if your PowerPC64 linker only needs function descriptor syms.])
5639     fi
5641     AC_CACHE_CHECK(linker large toc support,
5642     gcc_cv_ld_large_toc,
5643     [gcc_cv_ld_large_toc=no
5644     if test x"$ld_is_gold" = xyes; then
5645       gcc_cv_ld_large_toc=yes
5646     elif test $in_tree_ld = yes ; then
5647       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
5648         gcc_cv_ld_large_toc=yes
5649       fi
5650     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5651       cat > conftest.s <<EOF
5652         .section ".tbss","awT",@nobits
5653         .align 3
5654 ie0:    .space 8
5655         .global _start
5656         .text
5657 _start:
5658         addis 9,13,ie0@got@tprel@ha
5659         ld 9,ie0@got@tprel@l(9)
5661       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5662          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5663         gcc_cv_ld_large_toc=yes
5664       fi
5665       rm -f conftest conftest.o conftest.s
5666     fi
5667     ])
5668     if test x"$gcc_cv_ld_large_toc" = xyes; then
5669       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5670     [Define if your PowerPC64 linker supports a large TOC.])
5671     fi
5673     AC_CACHE_CHECK(linker toc pointer alignment,
5674     gcc_cv_ld_toc_align,
5675     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5676       cat > conftest.s <<EOF
5677         .global _start
5678         .text
5679 _start:
5680         addis 9,2,x@got@ha
5681         .section .data.rel.ro,"aw",@progbits
5682         .p2align 16
5683         .space 32768
5684 x:      .quad .TOC.
5686       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5687          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5688         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)) }'`
5689       fi
5690       rm -f conftest conftest.o conftest.s
5691     fi
5692     ])
5693     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5694       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5695     [Define to .TOC. alignment forced by your linker.])
5696     fi
5697     ;;
5698 esac
5700 case "$target" in
5701   *-*-aix*)
5702     AC_CACHE_CHECK(linker large toc support,
5703     gcc_cv_ld_large_toc,
5704     [gcc_cv_ld_large_toc=no
5705     if test x$gcc_cv_as != x ; then
5706       cat > conftest.s <<EOF
5707         .toc
5708 LC..1:
5709         .tc a[[TC]],a[[RW]]
5710         .extern a[[RW]]
5711         .csect .text[[PR]]
5712 .largetoctest:
5713         addis 9,LC..1@u(2)
5714         ld 3,LC..1@l(9)
5716       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5717         gcc_cv_ld_large_toc=yes
5718       fi
5719       rm -f conftest conftest.o conftest.s
5720     fi
5721     ])
5722     if test x"$gcc_cv_ld_large_toc" = xyes; then
5723       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5724     [Define if your PowerPC64 linker supports a large TOC.])
5725     fi
5726     ;;
5727 esac
5729 AC_CACHE_CHECK(linker --build-id support,
5730   gcc_cv_ld_buildid,
5731   [gcc_cv_ld_buildid=no
5732   if test $in_tree_ld = yes ; then
5733     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5734        "$gcc_cv_gld_minor_version" -ge 18 -o \
5735        "$gcc_cv_gld_major_version" -gt 2 \
5736        && test $in_tree_ld_is_elf = yes; then
5737       gcc_cv_ld_buildid=yes
5738     fi
5739   elif test x$gcc_cv_ld != x; then
5740     if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
5741       gcc_cv_ld_buildid=yes
5742     fi
5743   fi])
5744 if test x"$gcc_cv_ld_buildid" = xyes; then
5745   AC_DEFINE(HAVE_LD_BUILDID, 1,
5746   [Define if your linker supports --build-id.])
5749 AC_ARG_ENABLE(linker-build-id,
5750 [AS_HELP_STRING([--enable-linker-build-id],
5751                 [compiler will always pass --build-id to linker])],
5753 enable_linker_build_id=no)
5755 if test x"$enable_linker_build_id" = xyes; then
5756   if test x"$gcc_cv_ld_buildid" = xyes; then
5757     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5758     [Define if gcc should always pass --build-id to linker.])
5759   else
5760     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5761   fi
5764 # In binutils 2.21, GNU ld gained support for new emulations fully
5765 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5766 AC_CACHE_CHECK(linker *_sol2 emulation support,
5767   gcc_cv_ld_sol2_emulation,
5768   [gcc_cv_ld_sol2_emulation=no
5769   if test $in_tree_ld = yes ; then
5770     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5771        "$gcc_cv_gld_minor_version" -ge 21 -o \
5772        "$gcc_cv_gld_major_version" -gt 2 \
5773        && test $in_tree_ld_is_elf = yes; then
5774       gcc_cv_ld_sol2_emulation=yes
5775     fi
5776   elif test x$gcc_cv_ld != x; then
5777     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5778        grep _sol2 > /dev/null; then
5779       gcc_cv_ld_sol2_emulation=yes
5780     fi
5781   fi])
5782 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5783   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5784   [Define if your linker supports the *_sol2 emulations.])
5787 AC_CACHE_CHECK(linker --sysroot support,
5788   gcc_cv_ld_sysroot,
5789   [gcc_cv_ld_sysroot=no
5790   if test $in_tree_ld = yes ; then
5791       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
5792         gcc_cv_ld_sysroot=yes
5793       fi
5794   elif test x$gcc_cv_ld != x; then 
5795     if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
5796       gcc_cv_ld_sysroot=yes
5797     fi
5798   fi])
5799 if test x"$gcc_cv_ld_sysroot" = xyes; then
5800   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5801   [Define if your linker supports --sysroot.])
5802 fi        
5804 case $target in
5805 *-*-solaris2*)
5806   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
5807   AC_CACHE_CHECK([system-provided CRTs on Solaris],
5808     gcc_cv_solaris_crts,
5809     [gcc_cv_solaris_crts=no
5810      if test x$host != x$target; then
5811        if test "x$with_sysroot" = xyes; then
5812          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
5813        else
5814          target_sysroot="${with_sysroot}"
5815        fi
5816      fi
5817      target_libdir="$target_sysroot/usr/lib"
5818      # At the time they were added, gcrt1.o became a symlink for backwards
5819      # compatibility on x86, while crt1.o was added on sparc, so check for that.
5820      case $target in
5821        i?86-*-solaris2* | x86_64-*-solaris2*)
5822          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
5823          ;;
5824        sparc*-*-solaris2*)
5825          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
5826          ;;
5827      esac])
5828   ;;
5829 esac
5830 if test x$gcc_cv_solaris_crts = xyes; then
5831   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
5832             [Define if the system-provided CRTs are present on Solaris.])
5835 AC_ARG_ENABLE(libssp,
5836 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
5837 [case "${enableval}" in
5838   yes|no)
5839     ;;
5840   *)
5841     AC_MSG_ERROR([unknown libssp setting $enableval])
5842     ;;
5843 esac], [])
5845 # Test for stack protector support in target C library.
5846 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5847   gcc_cv_libc_provides_ssp,
5848   [gcc_cv_libc_provides_ssp=no
5849   if test "x$enable_libssp" = "xno"; then
5850     gcc_cv_libc_provides_ssp=yes
5851   elif test "x$enable_libssp" = "xyes"; then
5852     gcc_cv_libc_provides_ssp=no
5853   else
5854     case "$target" in
5855        *-*-musl*)
5856          # All versions of musl provide stack protector
5857          gcc_cv_libc_provides_ssp=yes;;
5858        *-*-linux* | *-*-kfreebsd*-gnu)
5859       # glibc 2.4 and later provides __stack_chk_fail and
5860       # either __stack_chk_guard, or TLS access to stack guard canary.
5861       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5862       [if test -f $target_header_dir/features.h \
5863          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5864             $target_header_dir/features.h > /dev/null; then
5865         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5866              $target_header_dir/features.h > /dev/null && \
5867              test -f $target_header_dir/bits/uClibc_config.h && \
5868              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5869              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5870           gcc_cv_libc_provides_ssp=yes
5871         fi
5872       # all versions of Bionic support stack protector
5873       elif test -f $target_header_dir/sys/cdefs.h \
5874         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5875            $target_header_dir/sys/cdefs.h > /dev/null; then
5876          gcc_cv_libc_provides_ssp=yes
5877       fi]])
5878         ;;
5879        *-*-gnu*)
5880          # Avoid complicated tests (see
5881          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5882          # simply assert that glibc does provide this, which is true for all
5883          # realistically usable GNU/Hurd configurations.
5884          # All supported versions of musl provide it as well
5885          gcc_cv_libc_provides_ssp=yes;;
5886        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
5887          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5888            [echo "no __stack_chk_fail on this target"])
5889         ;;
5890        *) gcc_cv_libc_provides_ssp=no ;;
5891     esac
5892   fi])
5894 if test x$gcc_cv_libc_provides_ssp = xyes; then
5895   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5896             [Define if your target C library provides stack protector support])
5899 # Check whether --enable-default-ssp was given.
5900 AC_ARG_ENABLE(default-ssp,
5901 [AS_HELP_STRING([--enable-default-ssp],
5902   [enable Stack Smashing Protection as default])],[
5903 if test x$gcc_cv_libc_provides_ssp = xyes; then
5904   case "$target" in
5905     ia64*-*-*) enable_default_ssp=no ;;
5906     *) enable_default_ssp=$enableval ;;
5907   esac
5908 else
5909   enable_default_ssp=no
5910 fi],
5911 enable_default_ssp=no)
5912 if test x$enable_default_ssp = xyes ; then
5913   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5914       [Define if your target supports default stack protector and it is enabled.])
5916 AC_SUBST([enable_default_ssp])
5918 # Test for <sys/sdt.h> on the target.
5919 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5920 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5921 have_sys_sdt_h=no
5922 if test -f $target_header_dir/sys/sdt.h; then
5923   have_sys_sdt_h=yes
5924   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5925             [Define if your target C library provides sys/sdt.h])
5927 AC_MSG_RESULT($have_sys_sdt_h)
5929 # Check if TFmode long double should be used by default or not.
5930 # Some glibc targets used DFmode long double, but with glibc 2.4
5931 # and later they can use TFmode.
5932 case "$target" in
5933   powerpc*-*-linux* | \
5934   sparc*-*-linux* | \
5935   s390*-*-linux* | \
5936   alpha*-*-linux*)
5937     AC_ARG_WITH(long-double-128,
5938       [AS_HELP_STRING([--with-long-double-128],
5939                       [use 128-bit long double by default])],
5940       gcc_cv_target_ldbl128="$with_long_double_128",
5941       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5942       [gcc_cv_target_ldbl128=no
5943       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5944         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5945       && gcc_cv_target_ldbl128=yes
5946       ]])])
5947     ;;
5948 esac
5949 if test x$gcc_cv_target_ldbl128 = xyes; then
5950   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5951             [Define if TFmode long double should be the default])
5954 # Check if TFmode long double target should use the IBM extended double or IEEE
5955 # 128-bit floating point formats if long doubles are 128-bits long.  The long
5956 # double type can only be switched on powerpc64 bit Linux systems where VSX is
5957 # supported.  Other PowerPC systems do not build the IEEE 128-bit emulator in
5958 # libgcc.
5959 AC_ARG_WITH([long-double-format],
5960   [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
5961                   [Specify whether PowerPC long double uses IEEE or IBM format])],[
5962 case "$target:$with_long_double_format" in
5963   powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
5964     :
5965     ;;
5966   powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
5967     # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
5968     case "$with_cpu" in
5969       power7 | power8 | power9 | power1*)
5970         :
5971         ;;
5972       *)
5973         AC_MSG_ERROR([Configuration option --with-long-double-format is only \
5974 supported if the default cpu is power7 or newer])
5975         with_long_double_format=""
5976         ;;
5977       esac
5978       ;;
5979   xpowerpc64*-*-linux*:*)
5980     AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
5981     with_long_double_format=""
5982     ;;
5983   *)
5984     AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
5985 on 64-bit PowerPC VSX Linux systems])
5986     with_long_double_format=""
5987     ;;
5988 esac],
5989   [])
5991 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
5992 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
5993 gcc_cv_libc_provides_hwcap_in_tcb=no
5994 case "$target" in
5995   powerpc*-*-linux*)
5996     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
5997     ;;
5998 esac
5999 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
6000   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
6001             [Define if your target C Library provides the AT_HWCAP value in the TCB])
6004 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
6005 gcc_cv_target_dl_iterate_phdr=unknown
6006 case "$target" in
6007   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
6008   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
6009   # libdl there, both complicating its use and breaking compatibility
6010   # between Solaris 10 updates.
6011   *-*-solaris2.1[[1-9]]*)
6012     # <link.h> needs both a dl_iterate_phdr declaration and support for
6013     # compilation with largefile support.
6014     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
6015       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
6016       gcc_cv_target_dl_iterate_phdr=yes
6017     else
6018       gcc_cv_target_dl_iterate_phdr=no
6019     fi
6020     ;;
6021   *-*-dragonfly* | *-*-freebsd*)
6022     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
6023       gcc_cv_target_dl_iterate_phdr=yes
6024     else
6025       gcc_cv_target_dl_iterate_phdr=no
6026     fi
6027     ;;
6028   *-linux-musl*)
6029     gcc_cv_target_dl_iterate_phdr=yes
6030     ;;
6031 esac
6032 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
6033 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
6034    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
6035 [Define if your target C library provides the `dl_iterate_phdr' function.])
6037 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
6039 # We no longer support different GC mechanisms.  Emit an error if
6040 # the user configures with --with-gc.
6041 AC_ARG_WITH(gc,
6042 [AS_HELP_STRING([--with-gc={page,zone}],
6043                 [this option is not supported anymore.  It used to choose
6044                  the garbage collection mechanism to use with the compiler])],
6045 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
6048 # Libraries to use on the host.  This will normally be set by the top
6049 # level Makefile.  Here we simply capture the value for our Makefile.
6050 if test -z "${HOST_LIBS+set}"; then
6051   HOST_LIBS=
6053 AC_SUBST(HOST_LIBS)
6055 # Use the system's zlib library.
6056 AM_ZLIB
6058 dnl Very limited version of automake's enable-maintainer-mode
6060 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
6061   dnl maintainer-mode is disabled by default
6062   AC_ARG_ENABLE(maintainer-mode,
6063 [AS_HELP_STRING([--enable-maintainer-mode],
6064                 [enable make rules and dependencies not useful
6065                  (and sometimes confusing) to the casual installer])],
6066       maintainer_mode=$enableval,
6067       maintainer_mode=no)
6069 AC_MSG_RESULT($maintainer_mode)
6071 if test "$maintainer_mode" = "yes"; then
6072   MAINT=''
6073 else
6074   MAINT='#'
6076 AC_SUBST(MAINT)dnl
6078 dnl Whether to prevent multiple front-ends from linking at the same time
6080 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
6081   AC_ARG_ENABLE(link-mutex,
6082 [AS_HELP_STRING([--enable-link-mutex],
6083                 [avoid linking multiple front-ends at once to avoid thrashing
6084                  on the build machine])],
6085       do_link_mutex=$enableval,
6086       do_link_mutex=no)
6087 AC_MSG_RESULT($do_link_mutex)
6089 if test "$do_link_mutex" = "yes"; then
6090    DO_LINK_MUTEX=true
6091 else
6092    DO_LINK_MUTEX=false
6094 AC_SUBST(DO_LINK_MUTEX)
6096 # --------------
6097 # Language hooks
6098 # --------------
6100 # Make empty files to contain the specs and options for each language.
6101 # Then add #include lines to for a compiler that has specs and/or options.
6103 subdirs=
6104 lang_opt_files=
6105 lang_specs_files=
6106 lang_tree_files=
6107 # These (without "all_") are set in each config-lang.in.
6108 # `language' must be a single word so is spelled singularly.
6109 all_languages=
6110 all_compilers=
6111 all_outputs='Makefile'
6112 # List of language makefile fragments.
6113 all_lang_makefrags=
6114 # Additional files for gengtype
6115 all_gtfiles="$target_gtfiles"
6117 # These are the languages that are set in --enable-languages,
6118 # and are available in the GCC tree.
6119 all_selected_languages=
6121 # Add the language fragments.
6122 # Languages are added via two mechanisms.  Some information must be
6123 # recorded in makefile variables, these are defined in config-lang.in.
6124 # We accumulate them and plug them into the main Makefile.
6125 # The other mechanism is a set of hooks for each of the main targets
6126 # like `clean', `install', etc.
6128 language_hooks="Make-hooks"
6130 for lang in ${srcdir}/*/config-lang.in
6132 changequote(,)dnl
6133         test "$lang" = "${srcdir}/*/config-lang.in" && continue
6135         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
6136         if test "x$lang_alias" = x
6137         then
6138               echo "$lang doesn't set \$language." 1>&2
6139               exit 1
6140         fi
6141         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
6142         subdirs="$subdirs $subdir"
6144         # $gcc_subdir is where the gcc integration files are to be found
6145         # for a language, both for internal compiler purposes (compiler
6146         # sources implementing front-end to GCC tree converters), and for
6147         # build infrastructure purposes (Make-lang.in, etc.)
6148         #
6149         # This will be <subdir> (relative to $srcdir) if a line like 
6150         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
6151         # is found in <langdir>/config-lang.in, and will remain <langdir>
6152         # otherwise.
6153         #
6154         # Except for the language alias (fetched above), the regular
6155         # "config-lang.in" contents are always retrieved from $gcc_subdir,
6156         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
6157         # only this and the language alias.
6159         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
6160         if [ "$gcc_subdir" = "" ]; then
6161            gcc_subdir="$subdir"
6162         fi
6164         case ",$enable_languages," in
6165         *,$lang_alias,*)
6166             all_selected_languages="$all_selected_languages $lang_alias"
6167             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
6168                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
6169             fi
6170             ;;
6171         esac
6172 changequote([,])dnl
6174         language=
6175         boot_language=
6176         compilers=
6177         outputs=
6178         gtfiles=
6179         subdir_requires=
6180         . ${srcdir}/$gcc_subdir/config-lang.in
6181         if test "x$language" = x
6182         then
6183                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
6184                 exit 1
6185         fi
6187         ok=:
6188         case ",$enable_languages," in
6189                 *,$lang_alias,*) ;;
6190                 *)
6191                         for i in $subdir_requires; do
6192                                 test -f "${srcdir}/$i/config-lang.in" && continue
6193                                 ok=false
6194                                 break
6195                         done
6196                 ;;
6197         esac
6198         $ok || continue
6200         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
6201         if test -f $srcdir/$gcc_subdir/lang.opt; then
6202             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
6203             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
6204         fi
6205         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
6206             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
6207         fi
6208         all_languages="$all_languages $language"
6209         all_compilers="$all_compilers $compilers"
6210         all_outputs="$all_outputs $outputs"
6211         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
6212         case ",$enable_languages," in
6213                 *,lto,*)
6214                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
6215                     enable_lto=yes
6216                     AC_SUBST(enable_lto)
6217                     ;;
6218                 *) ;;
6219         esac
6220 done
6222 check_languages=
6223 for language in $all_selected_languages
6225         check_languages="$check_languages check-$language"
6226 done
6228 selftest_languages=
6229 for language in $all_selected_languages
6231         selftest_languages="$selftest_languages selftest-$language"
6232 done
6234 # We link each language in with a set of hooks, reached indirectly via
6235 # lang.${target}.  Only do so for selected languages.
6237 rm -f Make-hooks
6238 touch Make-hooks
6239 target_list="all.cross start.encap rest.encap tags \
6240         install-common install-man install-info install-pdf install-html dvi \
6241         pdf html uninstall info man srcextra srcman srcinfo \
6242         mostlyclean clean distclean maintainer-clean install-plugin"
6244 for t in $target_list
6246         x=
6247         for lang in $all_selected_languages
6248         do
6249                 x="$x $lang.$t"
6250         done
6251         echo "lang.$t: $x" >> Make-hooks
6252 done
6254 # --------
6255 # Option include files
6256 # --------
6258 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
6259 option_includes="option-includes.mk"
6260 AC_SUBST_FILE(option_includes)
6262 # --------
6263 # UNSORTED
6264 # --------
6266 # Create .gdbinit.
6268 echo "dir ." > .gdbinit
6269 echo "dir ${srcdir}" >> .gdbinit
6270 if test x$gdb_needs_out_file_path = xyes
6271 then
6272         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
6274 if test "x$subdirs" != x; then
6275         for s in $subdirs
6276         do
6277                 echo "dir ${srcdir}/$s" >> .gdbinit
6278         done
6280 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
6281 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
6283 # Put a breakpoint on __asan_report_error to help with debugging buffer
6284 # overflow.
6285 case "$CFLAGS" in
6286 *-fsanitize=address*)
6287   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
6288   ;;
6289 esac
6291 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
6292 AC_SUBST(gcc_tooldir)
6293 AC_SUBST(dollar)
6295 # Find a directory in which to install a shared libgcc.
6297 AC_ARG_ENABLE(version-specific-runtime-libs,
6298 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
6299                 [specify that runtime libraries should be
6300                  installed in a compiler-specific directory])])
6302 # Substitute configuration variables
6303 AC_SUBST(subdirs)
6304 AC_SUBST(srcdir)
6305 AC_SUBST(all_compilers)
6306 AC_SUBST(all_gtfiles)
6307 AC_SUBST(all_lang_makefrags)
6308 AC_SUBST(all_languages)
6309 AC_SUBST(all_selected_languages)
6310 AC_SUBST(build_exeext)
6311 AC_SUBST(build_install_headers_dir)
6312 AC_SUBST(build_xm_file_list)
6313 AC_SUBST(build_xm_include_list)
6314 AC_SUBST(build_xm_defines)
6315 AC_SUBST(build_file_translate)
6316 AC_SUBST(check_languages)
6317 AC_SUBST(selftest_languages)
6318 AC_SUBST(cpp_install_dir)
6319 AC_SUBST(xmake_file)
6320 AC_SUBST(tmake_file)
6321 AC_SUBST(TM_ENDIAN_CONFIG)
6322 AC_SUBST(TM_MULTILIB_CONFIG)
6323 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
6324 AC_SUBST(extra_gcc_objs)
6325 AC_SUBST(user_headers_inc_next_pre)
6326 AC_SUBST(user_headers_inc_next_post)
6327 AC_SUBST(extra_headers_list)
6328 AC_SUBST(extra_objs)
6329 AC_SUBST(extra_programs)
6330 AC_SUBST(float_h_file)
6331 AC_SUBST(gcc_config_arguments)
6332 AC_SUBST(gcc_gxx_include_dir)
6333 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
6334 AC_SUBST(host_exeext)
6335 AC_SUBST(host_xm_file_list)
6336 AC_SUBST(host_xm_include_list)
6337 AC_SUBST(host_xm_defines)
6338 AC_SUBST(out_host_hook_obj)
6339 AC_SUBST(install)
6340 AC_SUBST(lang_opt_files)
6341 AC_SUBST(lang_specs_files)
6342 AC_SUBST(lang_tree_files)
6343 AC_SUBST(local_prefix)
6344 AC_SUBST(md_file)
6345 AC_SUBST(objc_boehm_gc)
6346 AC_SUBST(out_file)
6347 AC_SUBST(out_object_file)
6348 AC_SUBST(common_out_file)
6349 AC_SUBST(common_out_object_file)
6350 AC_SUBST(tm_file_list)
6351 AC_SUBST(tm_include_list)
6352 AC_SUBST(tm_defines)
6353 AC_SUBST(tm_p_file_list)
6354 AC_SUBST(tm_p_include_list)
6355 AC_SUBST(tm_d_file_list)
6356 AC_SUBST(tm_d_include_list)
6357 AC_SUBST(xm_file_list)
6358 AC_SUBST(xm_include_list)
6359 AC_SUBST(xm_defines)
6360 AC_SUBST(use_gcc_stdint)
6361 AC_SUBST(c_target_objs)
6362 AC_SUBST(cxx_target_objs)
6363 AC_SUBST(fortran_target_objs)
6364 AC_SUBST(d_target_objs)
6365 AC_SUBST(target_cpu_default)
6367 AC_SUBST_FILE(language_hooks)
6369 # Echo link setup.
6370 if test x${build} = x${host} ; then
6371   if test x${host} = x${target} ; then
6372     echo "Links are now set up to build a native compiler for ${target}." 1>&2
6373   else
6374     echo "Links are now set up to build a cross-compiler" 1>&2
6375     echo " from ${host} to ${target}." 1>&2
6376   fi
6377 else
6378   if test x${host} = x${target} ; then
6379     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
6380     echo " for ${target}." 1>&2
6381   else
6382     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
6383     echo " from ${host} to ${target}." 1>&2
6384   fi
6387 AC_ARG_VAR(GMPLIBS,[How to link GMP])
6388 AC_ARG_VAR(GMPINC,[How to find GMP include files])
6390 AC_ARG_VAR(ISLLIBS,[How to link isl])
6391 AC_ARG_VAR(ISLINC,[How to find isl include files])
6392 if test "x${ISLLIBS}" != "x" ; then 
6393    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
6396 GCC_ENABLE_PLUGINS
6397 AC_SUBST(pluginlibs)
6398 AC_SUBST(enable_plugin)
6399 if test x"$enable_plugin" = x"yes"; then
6400   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
6404 # Enable --enable-host-shared
6405 AC_ARG_ENABLE(host-shared,
6406 [AS_HELP_STRING([--enable-host-shared],
6407                 [build host code as shared libraries])],
6408 [PICFLAG=-fPIC], [PICFLAG=])
6409 AC_SUBST(enable_host_shared)
6410 AC_SUBST(PICFLAG)
6413 AC_ARG_ENABLE(libquadmath-support,
6414 [AS_HELP_STRING([--disable-libquadmath-support],
6415   [disable libquadmath support for Fortran])],
6416 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6417 ENABLE_LIBQUADMATH_SUPPORT=yes)
6418 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6419   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6420             [Define to 1 to enable libquadmath support])
6424 # Specify what hash style to use by default.
6425 AC_ARG_WITH([linker-hash-style],
6426 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6427                 [specify the linker hash style])],
6428 [case x"$withval" in
6429    xsysv)
6430      LINKER_HASH_STYLE=sysv
6431      ;;
6432    xgnu)
6433      LINKER_HASH_STYLE=gnu
6434      ;;
6435    xboth)
6436      LINKER_HASH_STYLE=both
6437      ;;
6438    *)
6439      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6440      ;;
6441  esac],
6442 [LINKER_HASH_STYLE=''])
6443 if test x"${LINKER_HASH_STYLE}" != x; then
6444   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6445                                          [The linker hash style])
6448 # Specify what should be the default of -fdiagnostics-color option.
6449 AC_ARG_WITH([diagnostics-color],
6450 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6451                 [specify the default of -fdiagnostics-color option
6452                  auto-if-env stands for -fdiagnostics-color=auto if
6453                  GCC_COLOR environment variable is present and
6454                  -fdiagnostics-color=never otherwise])],
6455 [case x"$withval" in
6456    xnever)
6457      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6458      ;;
6459    xauto)
6460      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6461      ;;
6462    xauto-if-env)
6463      DIAGNOSTICS_COLOR_DEFAULT=-1
6464      ;;
6465    xalways)
6466      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6467      ;;
6468    *)
6469      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6470      ;;
6471  esac],
6472 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6473 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6474                    [The default for -fdiagnostics-color option])
6476 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6477 # of jit/jit-playback.c.
6478 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
6479 echo "gcc_driver_version: ${gcc_driver_version}"
6480 cat > gcc-driver-name.h <<EOF
6481 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
6484 # Check whether --enable-default-pie was given.
6485 AC_ARG_ENABLE(default-pie,
6486 [AS_HELP_STRING([--enable-default-pie],
6487   [enable Position Independent Executable as default])],
6488 enable_default_pie=$enableval,
6489 enable_default_pie=no)
6490 if test x$enable_default_pie = xyes ; then
6491   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6492       [Define if your target supports default PIE and it is enabled.])
6494 AC_SUBST([enable_default_pie])
6496 # Check if -fno-PIE works.
6497 AC_CACHE_CHECK([for -fno-PIE option],
6498   [gcc_cv_c_no_fpie],
6499   [saved_CXXFLAGS="$CXXFLAGS"
6500    CXXFLAGS="$CXXFLAGS -fno-PIE"
6501    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6502      [gcc_cv_c_no_fpie=yes],
6503      [gcc_cv_c_no_fpie=no])
6504    CXXFLAGS="$saved_CXXFLAGS"])
6505 if test "$gcc_cv_c_no_fpie" = "yes"; then
6506   NO_PIE_CFLAGS="-fno-PIE"
6508 AC_SUBST([NO_PIE_CFLAGS])
6510 # Check if -no-pie works.
6511 AC_CACHE_CHECK([for -no-pie option],
6512   [gcc_cv_no_pie],
6513   [saved_LDFLAGS="$LDFLAGS"
6514    LDFLAGS="$LDFLAGS -no-pie"
6515    AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6516      [gcc_cv_no_pie=yes],
6517      [gcc_cv_no_pie=no])
6518    LDFLAGS="$saved_LDFLAGS"])
6519 if test "$gcc_cv_no_pie" = "yes"; then
6520   NO_PIE_FLAG="-no-pie"
6522 AC_SUBST([NO_PIE_FLAG])
6524 # Check linker supports '-z bndplt'
6525 ld_bndplt_support=no
6526 AC_MSG_CHECKING(linker -z bndplt option)
6527 if test x"$ld_is_gold" = xno; then
6528   if test $in_tree_ld = yes ; then
6529     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
6530       ld_bndplt_support=yes
6531     fi
6532   elif test x$gcc_cv_ld != x; then
6533     # Check if linker supports -a bndplt option
6534     if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
6535       ld_bndplt_support=yes
6536     fi
6537   fi
6539 if test x"$ld_bndplt_support" = xyes; then
6540   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6541         [Define if your linker supports -z bndplt])
6543 AC_MSG_RESULT($ld_bndplt_support)
6545 # Check linker supports '--push-state'/'--pop-state'
6546 ld_pushpopstate_support=no
6547 AC_MSG_CHECKING(linker --push-state/--pop-state options)
6548 if test x"$ld_is_gold" = xno; then
6549   if test $in_tree_ld = yes ; then
6550     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
6551       ld_pushpopstate_support=yes
6552     fi
6553   elif test x$gcc_cv_ld != x; then
6554     # Check if linker supports --push-state/--pop-state options
6555     if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
6556       ld_pushpopstate_support=yes
6557     fi
6558   fi
6560 if test x"$ld_pushpopstate_support" = xyes; then
6561   AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
6562         [Define if your linker supports --push-state/--pop-state])
6564 AC_MSG_RESULT($ld_pushpopstate_support)
6566 # Configure the subdirectories
6567 # AC_CONFIG_SUBDIRS($subdirs)
6569 # Create the Makefile
6570 # and configure language subdirectories
6571 AC_CONFIG_FILES($all_outputs)
6573 AC_CONFIG_COMMANDS([default],
6575 case ${CONFIG_HEADERS} in
6576   *auto-host.h:config.in*)
6577   echo > cstamp-h ;;
6578 esac
6579 # Make sure all the subdirs exist.
6580 for d in $subdirs doc build common c-family
6582     test -d $d || mkdir $d
6583 done
6584 ], 
6585 [subdirs='$subdirs'])
6586 AC_OUTPUT