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