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