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