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