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