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