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