2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2014 Free Software Foundation, Inc.
6 #This file is part of GCC.
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 3, or (at your option) any later
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
28 AC_CONFIG_SRCDIR(tree.c)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
31 gcc_version=`cat $srcdir/BASE-VER`
33 # Determine the host, build, and target systems
38 # Determine the noncanonical target name, for directory use.
39 ACX_NONCANONICAL_TARGET
41 # Determine the target- and build-specific subdirectories
44 # Set program_transform_name
47 # Check for bogus environment variables.
48 # Test if LIBRARY_PATH contains the notation for the current directory
49 # since this would lead to problems installing/building glibc.
50 # LIBRARY_PATH contains the current directory if one of the following
52 # - one of the terminals (":" and ";") is the first or last sign
53 # - two terminals occur directly after each other
54 # - the path contains an element with a dot in it
55 AC_MSG_CHECKING(LIBRARY_PATH variable)
57 case ${LIBRARY_PATH} in
58 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
59 library_path_setting="contains current directory"
62 library_path_setting="ok"
66 AC_MSG_RESULT($library_path_setting)
67 if test "$library_path_setting" != "ok"; then
69 *** LIBRARY_PATH shouldn't contain the current directory when
70 *** building gcc. Please change the environment variable
71 *** and run configure again.])
74 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
75 # since this would lead to problems installing/building glibc.
76 # GCC_EXEC_PREFIX contains the current directory if one of the following
78 # - one of the terminals (":" and ";") is the first or last sign
79 # - two terminals occur directly after each other
80 # - the path contains an element with a dot in it
81 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
83 case ${GCC_EXEC_PREFIX} in
84 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
85 gcc_exec_prefix_setting="contains current directory"
88 gcc_exec_prefix_setting="ok"
92 AC_MSG_RESULT($gcc_exec_prefix_setting)
93 if test "$gcc_exec_prefix_setting" != "ok"; then
95 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
96 *** building gcc. Please change the environment variable
97 *** and run configure again.])
104 # Specify the local prefix
106 AC_ARG_WITH(local-prefix,
107 [AS_HELP_STRING([--with-local-prefix=DIR],
108 [specifies directory to put local include])],
109 [case "${withval}" in
110 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
112 *) local_prefix=$with_local_prefix ;;
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117 local_prefix=/usr/local
120 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
121 # passed in by the toplevel make and thus we'd get different behavior
122 # depending on where we built the sources.
124 # Specify the g++ header file directory
125 AC_ARG_WITH(gxx-include-dir,
126 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
127 [specifies directory to put g++ header files])],
128 [case "${withval}" in
129 yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
131 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
134 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
135 if test x${gcc_gxx_include_dir} = x; then
136 if test x${enable_version_specific_runtime_libs} = xyes; then
137 gcc_gxx_include_dir='${libsubdir}/include/c++'
139 libstdcxx_incdir='include/c++/$(version)'
140 if test x$host != x$target; then
141 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
143 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
147 gcc_gxx_include_dir_add_sysroot=0
148 if test "${with_sysroot+set}" = set; then
149 gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
150 if test "${gcc_gxx_without_sysroot}"; then
151 gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
152 gcc_gxx_include_dir_add_sysroot=1
156 AC_ARG_WITH(cpp_install_dir,
157 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
158 [install the user visible C preprocessor in DIR
159 (relative to PREFIX) as well as PREFIX/bin])],
160 [if test x$withval = xyes; then
161 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
162 elif test x$withval != xno; then
163 cpp_install_dir=$withval
166 # We would like to our source tree to be readonly. However when releases or
167 # pre-releases are generated, the flex/bison generated files as well as the
168 # various formats of manuals need to be included along with the rest of the
169 # sources. Therefore we have --enable-generated-files-in-srcdir to do
172 AC_MSG_CHECKING([whether to place generated files in the source directory])
173 dnl generated-files-in-srcdir is disabled by default
174 AC_ARG_ENABLE(generated-files-in-srcdir,
175 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
176 [put copies of generated files in source dir
177 intended for creating source tarballs for users
178 without texinfo bison or flex])],
179 generated_files_in_srcdir=$enableval,
180 generated_files_in_srcdir=no)
182 AC_MSG_RESULT($generated_files_in_srcdir)
184 if test "$generated_files_in_srcdir" = "yes"; then
191 # -------------------
192 # Find default linker
193 # -------------------
197 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
198 gnu_ld_flag="$with_gnu_ld",
201 # With pre-defined ld
203 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
204 DEFAULT_LINKER="$with_ld")
205 if test x"${DEFAULT_LINKER+set}" = x"set"; then
206 if test ! -x "$DEFAULT_LINKER"; then
207 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
208 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
211 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
212 [Define to enable the use of a default linker.])
215 AC_MSG_CHECKING([whether a default linker was specified])
216 if test x"${DEFAULT_LINKER+set}" = x"set"; then
217 if test x"$gnu_ld_flag" = x"no"; then
218 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
220 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
226 # With demangler in GNU ld
227 AC_ARG_WITH(demangler-in-ld,
228 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
229 demangler_in_ld="$with_demangler_in_ld",
232 # ----------------------
233 # Find default assembler
234 # ----------------------
238 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
239 gas_flag="$with_gnu_as",
243 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
244 DEFAULT_ASSEMBLER="$with_as")
245 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
246 if test ! -x "$DEFAULT_ASSEMBLER"; then
247 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
248 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
251 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
252 [Define to enable the use of a default assembler.])
255 AC_MSG_CHECKING([whether a default assembler was specified])
256 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
257 if test x"$gas_flag" = x"no"; then
258 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
260 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
270 # If a non-executable a.out is present (e.g. created by GNU as above even if
271 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
272 # file, even when creating an executable, so an execution test fails.
273 # Remove possible default executable files to avoid this.
275 # FIXME: This really belongs into AC_PROG_CC and can be removed once
276 # Autoconf includes it.
277 rm -f a.out a.exe b.out
279 # Find the native compiler
282 ACX_PROG_GNAT([-I"$srcdir"/ada])
284 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
285 # optimizations to be activated explicitly by the toplevel.
288 *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" `
289 CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" ` ;;
294 # Determine PICFLAG for target gnatlib.
295 GCC_PICFLAG_FOR_TARGET
296 AC_SUBST(PICFLAG_FOR_TARGET)
298 # -------------------------
299 # Check C compiler features
300 # -------------------------
302 AC_USE_SYSTEM_EXTENSIONS
308 # sizeof(char) is 1 by definition.
309 AC_CHECK_SIZEOF(void *)
310 AC_CHECK_SIZEOF(short)
312 AC_CHECK_SIZEOF(long)
313 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
314 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
317 # ---------------------
318 # Warnings and checking
319 # ---------------------
321 # Check $CC warning features (if it's GCC).
322 # We want to use -pedantic, but we don't want warnings about
326 # * C++11 narrowing conversions in { }
327 # So, we only use -pedantic if we can disable those warnings.
329 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
330 AC_ARG_ENABLE(build-format-warnings,
331 AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
332 [],[enable_build_format_warnings=yes])
333 AS_IF([test $enable_build_format_warnings = no],
334 [wf_opt=-Wno-format],[wf_opt=])
335 ACX_PROG_CC_WARNING_OPTS(
336 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual $wf_opt])), [loose_warn])
337 ACX_PROG_CC_WARNING_OPTS(
338 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
340 ACX_PROG_CC_WARNING_OPTS(
341 m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
342 ACX_PROG_CC_WARNING_OPTS(
343 m4_quote(m4_do([-Woverloaded-virtual])), [strict_warn])
344 ACX_PROG_CC_WARNING_OPTS(
345 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
346 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
347 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
348 [-Wno-overlength-strings])), [strict_warn])
349 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
351 # The above macros do nothing if the compiler is not GCC. However, the
352 # Makefile has more goo to add other flags, so these variables are used
353 # to enable warnings only for GCC.
356 if test "x$GCC" = "xyes"; then
357 warn_cflags='$(GCC_WARN_CFLAGS)'
358 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
360 AC_SUBST(warn_cflags)
361 AC_SUBST(warn_cxxflags)
363 # Disable exceptions and RTTI if building with g++
364 ACX_PROG_CC_WARNING_OPTS(
365 m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
368 # Enable expensive internal checks
370 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
374 AC_ARG_ENABLE(checking,
375 [AS_HELP_STRING([[--enable-checking[=LIST]]],
376 [enable expensive run-time checks. With LIST,
377 enable only specific categories of checks.
378 Categories are: yes,no,all,none,release.
379 Flags are: assert,df,fold,gc,gcac,gimple,misc,
380 rtlflag,rtl,runtime,tree,valgrind,types])],
381 [ac_checking_flags="${enableval}"],[
382 # Determine the default checks.
383 if test x$is_release = x ; then
384 ac_checking_flags=yes
386 ac_checking_flags=release
388 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
389 for check in release $ac_checking_flags
392 # these set all the flags to specific states
393 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
394 ac_fold_checking= ; ac_gc_checking=1 ;
395 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
396 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
397 ac_tree_checking=1 ; ac_valgrind_checking= ;
398 ac_types_checking=1 ;;
399 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
400 ac_fold_checking= ; ac_gc_checking= ;
401 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
402 ac_rtlflag_checking= ; ac_runtime_checking= ;
403 ac_tree_checking= ; ac_valgrind_checking= ;
404 ac_types_checking= ;;
405 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
406 ac_fold_checking=1 ; ac_gc_checking=1 ;
407 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
408 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
409 ac_tree_checking=1 ; ac_valgrind_checking= ;
410 ac_types_checking=1 ;;
411 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
412 ac_fold_checking= ; ac_gc_checking= ;
413 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
414 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
415 ac_tree_checking= ; ac_valgrind_checking= ;
416 ac_types_checking= ;;
417 # these enable particular checks
418 assert) ac_assert_checking=1 ;;
419 df) ac_df_checking=1 ;;
420 fold) ac_fold_checking=1 ;;
421 gc) ac_gc_checking=1 ;;
422 gcac) ac_gc_always_collect=1 ;;
423 gimple) ac_gimple_checking=1 ;;
424 misc) ac_checking=1 ;;
425 rtl) ac_rtl_checking=1 ;;
426 rtlflag) ac_rtlflag_checking=1 ;;
427 runtime) ac_runtime_checking=1 ;;
428 tree) ac_tree_checking=1 ;;
429 types) ac_types_checking=1 ;;
430 valgrind) ac_valgrind_checking=1 ;;
431 *) AC_MSG_ERROR(unknown check category $check) ;;
437 if test x$ac_checking != x ; then
438 AC_DEFINE(ENABLE_CHECKING, 1,
439 [Define if you want more run-time sanity checks. This one gets a grab
440 bag of miscellaneous but relatively cheap checks.])
441 nocommon_flag=-fno-common
443 AC_SUBST(nocommon_flag)
444 if test x$ac_df_checking != x ; then
445 AC_DEFINE(ENABLE_DF_CHECKING, 1,
446 [Define if you want more run-time sanity checks for dataflow.])
448 if test x$ac_assert_checking != x ; then
449 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
450 [Define if you want assertions enabled. This is a cheap check.])
452 if test x$ac_gimple_checking != x ; then
453 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
454 [Define if you want operations on GIMPLE (the basic data structure of
455 the high-level optimizers) to be checked for dynamic type safety at
456 runtime. This is moderately expensive.])
458 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
459 if test x$ac_runtime_checking != x ; then
460 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
461 [Define if you want runtime assertions enabled. This is a cheap check.])
463 if test x$ac_tree_checking != x ; then
464 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
465 [Define if you want all operations on trees (the basic data
466 structure of the front ends) to be checked for dynamic type safety
467 at runtime. This is moderately expensive. The tree browser debugging
468 routines will also be enabled by this option.
470 TREEBROWSER=tree-browser.o
473 if test x$ac_types_checking != x ; then
474 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
475 [Define if you want all gimple types to be verified after gimplifiation.
479 AC_SUBST(TREEBROWSER)
480 AC_SUBST(TREECHECKING)
481 if test x$ac_rtl_checking != x ; then
482 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
483 [Define if you want all operations on RTL (the basic data structure
484 of the optimizer and back end) to be checked for dynamic type safety
485 at runtime. This is quite expensive.])
487 if test x$ac_rtlflag_checking != x ; then
488 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
489 [Define if you want RTL flag accesses to be checked against the RTL
490 codes that are supported for each access macro. This is relatively
493 if test x$ac_gc_checking != x ; then
494 AC_DEFINE(ENABLE_GC_CHECKING, 1,
495 [Define if you want the garbage collector to do object poisoning and
496 other memory allocation checks. This is quite expensive.])
498 if test x$ac_gc_always_collect != x ; then
499 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
500 [Define if you want the garbage collector to operate in maximally
501 paranoid mode, validating the entire heap and collecting garbage at
502 every opportunity. This is extremely expensive.])
504 if test x$ac_fold_checking != x ; then
505 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
506 [Define if you want fold checked that it never destructs its argument.
507 This is quite expensive.])
509 valgrind_path_defines=
512 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
513 dnl # an if statement. This was the source of very frustrating bugs
514 dnl # in converting to autoconf 2.5x!
515 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
517 if test x$ac_valgrind_checking != x ; then
518 # It is certainly possible that there's valgrind but no valgrind.h.
519 # GCC relies on making annotations so we must have both.
520 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
521 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
522 [[#include <valgrind/memcheck.h>
523 #ifndef VALGRIND_DISCARD
524 #error VALGRIND_DISCARD not defined
526 [gcc_cv_header_valgrind_memcheck_h=yes],
527 [gcc_cv_header_valgrind_memcheck_h=no])
528 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
529 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
530 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
531 [[#include <memcheck.h>
532 #ifndef VALGRIND_DISCARD
533 #error VALGRIND_DISCARD not defined
535 [gcc_cv_header_memcheck_h=yes],
536 [gcc_cv_header_memcheck_h=no])
537 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
538 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
539 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
540 if test "x$valgrind_path" = "x" \
541 || (test $have_valgrind_h = no \
542 && test $gcc_cv_header_memcheck_h = no \
543 && test $gcc_cv_header_valgrind_memcheck_h = no); then
544 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
546 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
547 valgrind_command="$valgrind_path -q"
548 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
549 [Define if you want to run subprograms and generated programs
550 through valgrind (a memory checker). This is extremely expensive.])
551 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
552 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
553 [Define if valgrind's valgrind/memcheck.h header is installed.])
555 if test $gcc_cv_header_memcheck_h = yes; then
556 AC_DEFINE(HAVE_MEMCHECK_H, 1,
557 [Define if valgrind's memcheck.h header is installed.])
560 AC_SUBST(valgrind_path_defines)
561 AC_SUBST(valgrind_command)
563 # Enable code coverage collection
564 AC_ARG_ENABLE(coverage,
565 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
566 [enable compiler's code coverage collection.
567 Use to measure compiler performance and locate
568 unused parts of the compiler. With LEVEL, specify
569 optimization. Values are opt, noopt,
571 [case "${enableval}" in
573 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
576 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
579 # a.k.a. --disable-coverage
583 AC_MSG_ERROR(unknown coverage setting $enableval)
587 AC_SUBST(coverage_flags)
589 AC_ARG_ENABLE(gather-detailed-mem-stats,
590 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
591 [enable detailed memory allocation stats gathering])], [],
592 [enable_gather_detailed_mem_stats=no])
593 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
594 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
595 [Define to enable detailed memory allocation stats gathering.])
597 # -------------------------------
598 # Miscenalleous configure options
599 # -------------------------------
603 [AS_HELP_STRING([--with-stabs],
604 [arrange to use stabs instead of host debug format])],
608 # Determine whether or not multilibs are enabled.
609 AC_ARG_ENABLE(multilib,
610 [AS_HELP_STRING([--enable-multilib],
611 [enable library support for multiple ABIs])],
612 [], [enable_multilib=yes])
613 AC_SUBST(enable_multilib)
615 # Determine whether or not multiarch is enabled.
616 AC_ARG_ENABLE(multiarch,
617 [AS_HELP_STRING([--enable-multiarch],
618 [enable support for multiarch paths])],
619 [case "${enableval}" in
620 yes|no|auto) enable_multiarch=$enableval;;
621 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
622 esac], [enable_multiarch=auto])
623 if test x${enable_multiarch} = xauto; then
624 if test x${with_native_system_header_dir} != x; then
625 ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
628 if test x$host != x$target && test "x$with_sysroot" = x; then
629 ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
633 AC_MSG_CHECKING(for multiarch configuration)
634 AC_SUBST(enable_multiarch)
635 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
637 # needed for setting the multiarch name for soft-float/hard-float ABIs
641 # Enable __cxa_atexit for C++.
642 AC_ARG_ENABLE(__cxa_atexit,
643 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
646 # Enable C extension for decimal float if target supports it.
647 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
649 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
650 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
651 [Define to 1 to enable decimal float extension to C.])
653 # Use default_decimal_float for dependency.
654 enable_decimal_float=$default_decimal_float
656 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
657 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
658 [Define to 1 to specify that we are using the BID decimal floating
659 point format instead of DPD])
661 # Enable C extension for fixed-point arithmetic.
662 AC_ARG_ENABLE(fixed-point,
663 [AS_HELP_STRING([--enable-fixed-point],
664 [enable fixed-point arithmetic extension to C])],
669 enable_fixed_point=yes
673 enable_fixed_point=yes
676 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
677 enable_fixed_point=no
681 AC_SUBST(enable_fixed_point)
683 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
684 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
685 [Define to 1 to enable fixed-point arithmetic extension to C.])
688 # Pass with no value to take the default
689 # Pass with a value to specify a thread package
690 AC_ARG_ENABLE(threads,
691 [AS_HELP_STRING([[--enable-threads[=LIB]]],
692 [enable thread usage for target GCC,
693 using LIB thread package])],,
697 [AS_HELP_STRING([--enable-tls],
698 [enable or disable generation of tls code
699 overriding the assembler check for tls support])],
703 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
704 Valid choices are 'yes' and 'no'.]) ;;
708 AC_ARG_ENABLE(objc-gc,
709 [AS_HELP_STRING([--enable-objc-gc],
710 [enable the use of Boehm's garbage collector with
711 the GNU Objective-C runtime])],
712 if test x$enable_objc_gc = xno; then
719 AC_ARG_WITH([upc-pts],
721 [--with-upc-pts={struct,packed}],
722 [choose the representation of a UPC pointer-to-shared]),
725 packed|struct) upc_pts_rep="$withval" ;;
726 *) AC_MSG_ERROR([$withval is an invalid option to --with-upc-pts])
730 [upc_pts_rep="packed"])
733 # Perl is required for checking pts representation
734 AC_CHECK_PROG(PERL, perl, perl)
736 AC_ARG_WITH([upc-pts-vaddr-order],
738 [--with-upc-pts-vaddr-order={last,first}],
739 [choose position of the address field in UPC pointer-to-shared representation]),
741 upc_vaddr_order="$withval"
742 case "$upc_vaddr_order" in
745 [$withval is an invalid option to --with-upc-pts-vaddr-order]) ;;
748 [upc_vaddr_order="first"])
750 AC_ARG_WITH([upc-pts-packed-bits],
752 [--with-upc-pts-packed-bits=phase,thread,vaddr],
753 [choose bit distribution in packed UPC pointer-to-shared representation]),
755 if test x"$upc_pts_rep" = x"packed"; then
756 UPC_PTS_PHASE_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
757 print $1 if ($1+$2+$3 == 64) && $1>=1;'`
758 UPC_PTS_THREAD_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
759 print $2 if ($1+$2+$3 == 64) && $2>=1;'`
760 UPC_PTS_VADDR_SIZE=`echo "$withval" | $PERL -ne 'm/^(\d+),(\d+),(\d+)$/;
761 print $3 if ($1+$2+$3 == 64) && $3>=20;'`
762 if test -z "$UPC_PTS_PHASE_SIZE" \
763 || test -z "$UPC_PTS_THREAD_SIZE" \
764 || test -z "$UPC_PTS_VADDR_SIZE" ; then
765 AC_MSG_ERROR([--with-upc-pts-packed-bits=phase,thread,vaddr requires
766 phase+thread+vaddr=64 and phase >= 1 and thread >= 1 and vaddr >= 20])
769 AC_MSG_ERROR([--with-upc-pts-packed-bits is only supported for
770 the packed UPC pointer-to-shared representation])
774 # GNU UPC packed pointer representation defaults.
777 UPC_PTS_PHASE_SIZE=20
778 UPC_PTS_THREAD_SIZE=12
779 UPC_PTS_VADDR_SIZE=32
782 UPC_PTS_PHASE_SIZE=20
783 UPC_PTS_THREAD_SIZE=10
784 UPC_PTS_VADDR_SIZE=34
788 AC_ARG_ENABLE(upc-link-script,
790 [--enable-upc-link-script],
791 [enable UPC's use of a custom linker script;
792 this will define the UPC shared section as a no load section on
793 targets where this feature is supported (requires GNU LD)]),
798 AC_MSG_ERROR([--enable-upc-link-script accepts only yes or no.])
801 [enable_upc_link_script=no])
804 # Process UPC-specific configuration options.
806 AC_MSG_CHECKING([for UPC pointer-to-shared representation])
807 AC_MSG_RESULT([$upc_pts_rep])
808 case "$upc_pts_rep" in
810 AC_DEFINE(HAVE_UPC_PTS_PACKED_REP,[1],
811 [Define to 1 if UPC pointer-to-shared representation
812 is a packed 64 bit word.])
815 AC_DEFINE(HAVE_UPC_PTS_STRUCT_REP,[1],
816 [Define to 1 if UPC pointer-to-shared representation
820 AC_MSG_CHECKING([for UPC pointer-to-shared address field position])
821 AC_MSG_RESULT([$upc_vaddr_order])
822 if test x"$upc_vaddr_order" = x"first"; then
823 AC_DEFINE(HAVE_UPC_PTS_VADDR_FIRST,[1],
824 [Define to 1 if the 'vaddr' field is the first field
825 in the UPC pointer-to-shared representation.])
827 if test x"$upc_pts_rep" = x"packed"; then
828 AC_DEFINE_UNQUOTED(UPC_PTS_PHASE_SIZE,$UPC_PTS_PHASE_SIZE,
829 [For packed UPC pointers-to-shared,
830 the size of the phase field (in bits).])
831 AC_DEFINE_UNQUOTED(UPC_PTS_THREAD_SIZE,$UPC_PTS_THREAD_SIZE,
832 [For packed UPC pointers-to-shared,
833 the size of the thread field (in bits).])
834 AC_DEFINE_UNQUOTED(UPC_PTS_VADDR_SIZE,$UPC_PTS_VADDR_SIZE,
835 [For packed UPC pointers-to-shared,
836 the size of the address field (in bits).])
837 AC_MSG_CHECKING([for packed UPC pointer-to-shared layout])
839 ["phase=${UPC_PTS_PHASE_SIZE},thread=${UPC_PTS_THREAD_SIZE},
840 vaddr=${UPC_PTS_VADDR_SIZE}"])
842 AC_MSG_CHECKING([for UPC link script support])
843 AC_MSG_RESULT($enable_upc_link_script)
844 if test "$enable_upc_link_script" = yes; then
845 AC_DEFINE(HAVE_UPC_LINK_SCRIPT, 1, [Define to 1 if UPC link script is supported.])
849 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
850 dwarf2="$with_dwarf2",
853 AC_ARG_ENABLE(shared,
854 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
856 case $enable_shared in
860 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
861 for pkg in $enableval; do
862 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
869 ], [enable_shared=yes])
870 AC_SUBST(enable_shared)
872 AC_ARG_WITH([native-system-header-dir],
873 [ --with-native-system-header-dir=dir
874 use dir as the directory to look for standard
875 system header files in. Defaults to /usr/include.],
877 case ${with_native_system_header_dir} in
878 yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
879 /* | [[A-Za-z]]:[[\\/]]*) ;;
880 *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
882 configured_native_system_header_dir="${withval}"
883 ], [configured_native_system_header_dir=])
885 AC_ARG_WITH(build-sysroot,
886 [AS_HELP_STRING([--with-build-sysroot=sysroot],
887 [use sysroot as the system root during the build])],
888 [if test x"$withval" != x ; then
889 SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
891 [SYSROOT_CFLAGS_FOR_TARGET=])
892 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
894 if test "x$prefix" = xNONE; then
895 test_prefix=/usr/local
899 if test "x$exec_prefix" = xNONE; then
900 test_exec_prefix=$test_prefix
902 test_exec_prefix=$exec_prefix
906 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
907 [search for usr/lib, usr/include, et al, within DIR])],
909 case ${with_sysroot} in
910 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
911 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
914 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
915 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
917 case ${TARGET_SYSTEM_ROOT} in
918 "${test_prefix}"|"${test_prefix}/"*|\
919 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
920 '${prefix}'|'${prefix}/'*|\
921 '${exec_prefix}'|'${exec_prefix}/'*)
922 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
923 TARGET_SYSTEM_ROOT_DEFINE="$t"
928 TARGET_SYSTEM_ROOT_DEFINE=
929 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
931 AC_SUBST(TARGET_SYSTEM_ROOT)
932 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
933 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
936 [AS_HELP_STRING([--with-specs=SPECS],
937 [add SPECS to driver command-line processing])],
938 [CONFIGURE_SPECS=$withval],
941 AC_SUBST(CONFIGURE_SPECS)
943 ACX_PKGVERSION([GCC])
944 ACX_BUGURL([http://gccupc.org/bugs])
946 # Sanity check enable_languages in case someone does not run the toplevel
947 # configure # script.
948 AC_ARG_ENABLE(languages,
949 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
950 [case ,${enable_languages}, in
952 # go safe -- we cannot be much sure without the toplevel
954 # analysis of which target libs are present and usable
958 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
963 enable_languages=c,${enable_languages}
966 [enable_languages=c])
968 AC_ARG_WITH(multilib-list,
969 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
971 with_multilib_list=default)
973 # -------------------------
974 # Checks for other programs
975 # -------------------------
979 # Find some useful tools
981 # We need awk to create options.c and options.h.
982 # Bail out if it's missing.
984 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
991 AC_SUBST(ranlib_flags)
995 # See if cmp has --ignore-initial.
996 gcc_AC_PROG_CMP_IGNORE_INITIAL
998 # See if we have the mktemp command.
999 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1001 # See if makeinfo has been installed and is modern enough
1002 # that we can use it.
1003 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1004 [GNU texinfo.* \([0-9][0-9.]*\)],
1005 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1006 if test $gcc_cv_prog_makeinfo_modern = no; then
1008 *** Makeinfo is missing or too old.
1009 *** Info documentation will not be built.])
1014 AC_SUBST(BUILD_INFO)
1016 # Is pod2man recent enough to regenerate manpages?
1017 AC_MSG_CHECKING([for recent Pod::Man])
1018 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1020 GENERATED_MANPAGES=generated-manpages
1025 AC_SUBST(GENERATED_MANPAGES)
1027 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1030 dnl Don't use AC_PROG_LEX; we insist on flex.
1031 dnl LEXLIB is not useful in gcc.
1032 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1035 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1037 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
1038 # check for build == host before using them.
1041 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1042 && test -d ../binutils ; then
1043 NM='${objdir}/../binutils/nm-new'
1045 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1049 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1050 && test -d ../binutils ; then
1051 AR='${objdir}/../binutils/ar'
1053 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1057 # --------------------
1058 # Checks for C headers
1059 # --------------------
1061 # Need to reject headers which give warnings, so that the -Werror bootstrap
1062 # works later. *sigh* This needs to come before all header checks.
1069 AC_HEADER_TIOCGWINSZ
1070 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1071 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
1072 sys/resource.h sys/param.h sys/times.h sys/stat.h \
1073 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1075 # Check for thread headers.
1076 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1077 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1079 # These tests can't be done till we know if we have limits.h.
1083 # ----------------------
1084 # Checks for C++ headers
1085 # ----------------------
1087 dnl Autoconf will give an error in the configure script if there is no
1088 dnl C++ preprocessor. Hack to prevent that.
1089 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1091 m4_popdef([AC_MSG_ERROR])[]dnl
1095 AC_CHECK_HEADERS(unordered_map)
1096 AC_CHECK_HEADERS(tr1/unordered_map)
1097 AC_CHECK_HEADERS(ext/hash_map)
1102 # Dependency checking.
1107 AC_CONFIG_COMMANDS([gccdepdir],[
1108 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1109 for lang in $subdirs c-family common
1111 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1112 done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1114 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1122 # These libraries may be used by collect2.
1123 # We may need a special search path to get them linked.
1124 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1126 for libs in '' -lld -lmld \
1127 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1128 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1131 AC_TRY_LINK_FUNC(ldopen,
1132 [gcc_cv_collect2_libs="$libs"; break])
1135 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1136 case $gcc_cv_collect2_libs in
1138 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1140 AC_SUBST(COLLECT2_LIBS)
1142 # When building Ada code on Alpha, we need exc_resume which is usually in
1143 # -lexc. So test for it.
1146 AC_SEARCH_LIBS(exc_resume, exc)
1149 AC_SUBST(GNAT_LIBEXC)
1151 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1154 AC_SEARCH_LIBS(kstat_open, kstat)
1155 EXTRA_GCC_LIBS="$LIBS"
1157 AC_SUBST(EXTRA_GCC_LIBS)
1159 # Some systems put ldexp and frexp in libm instead of libc; assume
1160 # they're both in the same place. jcf-dump needs them.
1163 AC_SEARCH_LIBS(ldexp, m)
1168 # Use <inttypes.h> only if it exists,
1169 # doesn't clash with <sys/types.h>, and declares intmax_t.
1170 AC_MSG_CHECKING(for inttypes.h)
1171 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1172 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1173 [[#include <sys/types.h>
1174 #include <inttypes.h>]],
1175 [[intmax_t i = -1;]])],
1176 [gcc_cv_header_inttypes_h=yes],
1177 [gcc_cv_header_inttypes_h=no])])
1178 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1179 if test $gcc_cv_header_inttypes_h = yes; then
1180 AC_DEFINE(HAVE_INTTYPES_H, 1,
1181 [Define if you have a working <inttypes.h> header file.])
1184 dnl Disabled until we have a complete test for buggy enum bitfields.
1185 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1187 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1188 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1189 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1190 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1191 putchar_unlocked putc_unlocked)
1192 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1193 sysconf strsignal getrusage nl_langinfo \
1194 gettimeofday mbstowcs wcswidth mmap setlocale \
1195 gcc_UNLOCKED_FUNCS madvise)
1197 if test x$ac_cv_func_mbstowcs = xyes; then
1198 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1199 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1205 [gcc_cv_func_mbstowcs_works=yes],
1206 [gcc_cv_func_mbstowcs_works=no],
1207 [gcc_cv_func_mbstowcs_works=yes])])
1208 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1209 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1210 [Define this macro if mbstowcs does not crash when its
1211 first argument is NULL.])
1215 AC_CHECK_TYPE(ssize_t, int)
1216 AC_CHECK_TYPE(caddr_t, char *)
1218 GCC_AC_FUNC_MMAP_BLACKLIST
1222 # Under VMS, vfork works very differently than on Unix. The standard test
1223 # won't work, and it isn't easily adaptable. It makes more sense to
1225 ac_cv_func_vfork_works=yes
1230 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1231 # iconv() prototype.
1236 # Until we have in-tree GNU iconv:
1238 AC_SUBST(LIBICONV_DEP)
1244 # We will need to find libiberty.h and ansidecl.h
1245 saved_CFLAGS="$CFLAGS"
1246 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1247 saved_CXXFLAGS="$CXXFLAGS"
1248 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1249 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1250 strsignal strstr stpcpy strverscmp \
1251 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1252 free basename getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1253 #include "ansidecl.h"
1254 #include "system.h"])
1256 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1257 #include "ansidecl.h"
1259 #ifdef HAVE_SYS_RESOURCE_H
1260 #include <sys/resource.h>
1264 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1265 #include "ansidecl.h"
1267 #ifdef HAVE_SYS_RESOURCE_H
1268 #include <sys/resource.h>
1270 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1271 [Define to `long' if <sys/resource.h> doesn't define.])])
1273 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1274 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1275 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1276 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1277 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1278 #include "ansidecl.h"
1287 gcc_AC_CHECK_DECLS(times, , ,[
1288 #include "ansidecl.h"
1290 #ifdef HAVE_SYS_TIMES_H
1291 #include <sys/times.h>
1295 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1296 #include "ansidecl.h"
1301 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1304 gcc_AC_CHECK_DECLS(madvise, , ,[
1305 #include "ansidecl.h"
1310 # More time-related stuff.
1311 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1312 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1313 #include "ansidecl.h"
1315 #ifdef HAVE_SYS_TIMES_H
1316 #include <sys/times.h>
1318 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1319 if test $ac_cv_struct_tms = yes; then
1320 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1321 [Define if <sys/times.h> defines struct tms.])
1324 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1325 # revisit after autoconf 2.50.
1326 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1327 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1328 #include "ansidecl.h"
1330 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1331 if test $gcc_cv_type_clock_t = yes; then
1332 AC_DEFINE(HAVE_CLOCK_T, 1,
1333 [Define if <time.h> defines clock_t.])
1336 # Check if F_SETLKW is supported by fcntl.
1337 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1338 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1339 #include <fcntl.h>]], [[
1345 return fcntl (1, F_SETLKW, &fl);]])],
1346 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1347 if test $ac_cv_f_setlkw = yes; then
1348 AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1349 [Define if F_SETLKW supported by fcntl.])
1352 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1353 CFLAGS="$saved_CFLAGS"
1354 CXXFLAGS="$saved_CXXFLAGS"
1356 # mkdir takes a single argument on some systems.
1357 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1365 # With Setjmp/Longjmp based exception handling.
1366 AC_ARG_ENABLE(sjlj-exceptions,
1367 [AS_HELP_STRING([--enable-sjlj-exceptions],
1368 [arrange to use setjmp/longjmp exception handling])],
1371 if test $enableval != yes; then
1372 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1377 force_sjlj_exceptions=yes],
1380 force_sjlj_exceptions=yes
1384 force_sjlj_exceptions=yes
1388 force_sjlj_exceptions=no
1391 if test $force_sjlj_exceptions = yes; then
1392 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1393 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1394 [Define 0/1 to force the choice for exception handling model.])
1397 # --------------------------------------------------------
1398 # Build, host, and target specific configuration fragments
1399 # --------------------------------------------------------
1401 # Collect build-machine-specific information.
1402 . ${srcdir}/config.build
1404 # Collect host-machine-specific information.
1405 . ${srcdir}/config.host
1409 # Collect target-machine-specific information.
1410 . ${srcdir}/config.gcc
1412 extra_objs="${host_extra_objs} ${extra_objs}"
1413 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1415 # Default the target-machine variables that were not explicitly set.
1416 if test x"$tm_file" = x
1417 then tm_file=$cpu_type/$cpu_type.h; fi
1419 if test x"$extra_headers" = x
1420 then extra_headers=; fi
1422 if test x$md_file = x
1423 then md_file=$cpu_type/$cpu_type.md; fi
1425 if test x$out_file = x
1426 then out_file=$cpu_type/$cpu_type.c; fi
1428 if test x"$tmake_file" = x
1429 then tmake_file=$cpu_type/t-$cpu_type
1432 # Support --enable-initfini-array.
1433 if test x$enable_initfini_array != xno; then
1434 tm_file="${tm_file} initfini-array.h"
1437 if test x"$dwarf2" = xyes
1438 then tm_file="$tm_file tm-dwarf2.h"
1441 # Say what files are being used for the output code and MD file.
1442 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1443 echo "Using \`$srcdir/config/$md_file' as machine description file."
1445 # If any of the xm_file variables contain nonexistent files, warn
1446 # about them and drop them.
1449 for x in $build_xm_file; do
1450 if test -f $srcdir/config/$x
1452 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1458 for x in $host_xm_file; do
1459 if test -f $srcdir/config/$x
1461 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1467 for x in $xm_file; do
1468 if test -f $srcdir/config/$x
1470 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1476 for f in $tm_file; do
1479 if test $count = ax; then
1480 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1482 echo "Using the following target machine macro files:"
1483 for f in $tm_file; do
1484 echo " $srcdir/config/$f"
1488 if test x$need_64bit_hwint = xyes; then
1489 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1490 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1493 if test x$use_long_long_for_widest_fast_int = xyes; then
1494 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1495 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1496 efficiently supported by the host hardware.])
1499 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1500 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1502 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1503 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1506 for f in $host_xm_file; do
1509 if test $count = a; then
1511 elif test $count = ax; then
1512 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1514 echo "Using the following host machine macro files:"
1515 for f in $host_xm_file; do
1516 echo " $srcdir/config/$f"
1519 echo "Using ${out_host_hook_obj} for host machine hooks."
1521 if test "$host_xm_file" != "$build_xm_file"; then
1523 for f in $build_xm_file; do
1526 if test $count = a; then
1528 elif test $count = ax; then
1529 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1531 echo "Using the following build machine macro files:"
1532 for f in $build_xm_file; do
1533 echo " $srcdir/config/$f"
1538 if test -n "$configured_native_system_header_dir"; then
1539 native_system_header_dir=$configured_native_system_header_dir
1541 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1542 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1546 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1547 gcc_cv_mcontext_underscores,
1549 #include <sys/cdefs.h>
1550 #include <sys/signal.h>
1551 #include <ucontext.h>
1552 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1554 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1555 if test $gcc_cv_mcontext_underscores = yes; then
1556 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1557 [mcontext_t fields start with __])
1566 # Check if a valid thread package
1567 case ${enable_threads} in
1570 target_thread_file='single'
1574 target_thread_file='single'
1576 aix | dce | lynx | mipssde | posix | rtems | \
1577 single | tpf | vxworks | win32)
1578 target_thread_file=${enable_threads}
1581 echo "${enable_threads} is an unknown thread package" 1>&2
1586 if test x${thread_file} = x; then
1587 # No thread file set by target-specific clauses in config.gcc,
1588 # so use file chosen by default logic above
1589 thread_file=${target_thread_file}
1597 if test x$enable___cxa_atexit = xyes || \
1598 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1599 if test x$host = x$target; then
1601 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1602 # keyed to flag_use_cxa_atexit
1610 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1611 [echo "__cxa_atexit can't be enabled on this target"])
1615 # We can't check for __cxa_atexit when building a cross, so assume
1619 if test x$use_cxa_atexit = xyes; then
1620 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1621 [Define if you want to use __cxa_atexit, rather than atexit, to
1622 register C++ destructors for local statics and global objects.
1623 This is essential for fully standards-compliant handling of
1624 destructors, but requires __cxa_atexit in libc.])
1628 # Look for a file containing extra machine modes.
1629 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1630 extra_modes_file='$(srcdir)'/config/${extra_modes}
1631 AC_SUBST(extra_modes_file)
1632 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1633 [Define to the name of a file containing a list of extra machine modes
1634 for this architecture.])
1637 # Convert extra_options into a form suitable for Makefile use.
1640 for f in $extra_options; do
1641 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1642 all_opt_files="$all_opt_files $srcdir/config/$f"
1644 AC_SUBST(extra_opt_files)
1646 # auto-host.h is the file containing items generated by autoconf and is
1647 # the first file included by config.h.
1648 # If host=build, it is correct to have bconfig include auto-host.h
1649 # as well. If host!=build, we are in error and need to do more
1650 # work to find out the build config parameters.
1651 if test x$host = x$build
1653 build_auto=auto-host.h
1655 # We create a subdir, then run autoconf in the subdir.
1656 # To prevent recursion we set host and build for the new
1657 # invocation of configure to the build for this invocation
1664 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1665 *) realsrcdir=../${srcdir};;
1667 # Clearing GMPINC is necessary to prevent host headers being
1668 # used by the build compiler. Defining GENERATOR_FILE stops
1669 # system.h from including gmp.h.
1670 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1671 CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1672 LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1673 GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1674 ${realsrcdir}/configure \
1675 --enable-languages=${enable_languages-all} \
1676 --target=$target_alias --host=$build_alias --build=$build_alias
1678 # We just finished tests for the build machine, so rename
1679 # the file auto-build.h in the gcc directory.
1680 mv auto-host.h ../auto-build.h
1683 build_auto=auto-build.h
1685 AC_SUBST(build_subdir)
1687 tm_file="${tm_file} defaults.h"
1688 tm_p_file="${tm_p_file} tm-preds.h"
1689 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1690 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1691 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1692 # put this back in temporarily.
1693 xm_file="auto-host.h ansidecl.h ${xm_file}"
1700 # Compile in configure arguments.
1701 if test -f configargs.h ; then
1702 # Being re-configured.
1703 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1704 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1706 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1709 # Double all backslashes and backslash all quotes to turn
1710 # gcc_config_arguments into a C string.
1711 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1712 $gcc_config_arguments
1714 gcc_config_arguments_str=`cat conftest.out`
1717 cat > configargs.h <<EOF
1718 /* Generated automatically. */
1719 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1720 static const char thread_model[] = "$thread_file";
1722 static const struct {
1723 const char *name, *value;
1724 } configure_default_options[] = $configure_default_options;
1729 gcc_BASEVER=`cat $srcdir/BASE-VER`
1730 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1731 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1732 if test -f $srcdir/REVISION ; then
1733 gcc_REVISION=`cat $srcdir/REVISION`
1737 cat > plugin-version.h <<EOF
1738 #include "configargs.h"
1740 #define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1741 #define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1742 #define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1743 #define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1745 static char basever[] = "$gcc_BASEVER";
1746 static char datestamp[] = "$gcc_DATESTAMP";
1747 static char devphase[] = "$gcc_DEVPHASE";
1748 static char revision[] = "$gcc_REVISION";
1750 /* FIXME plugins: We should make the version information more precise.
1751 One way to do is to add a checksum. */
1753 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1755 configuration_arguments};
1759 # Internationalization
1760 ZW_GNU_GETTEXT_SISTER_DIR
1762 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1763 # -liconv on the link line twice.
1764 case "$LIBINTL" in *$LIBICONV*)
1768 AC_ARG_ENABLE(secureplt,
1769 [AS_HELP_STRING([--enable-secureplt],
1770 [enable -msecure-plt by default for PowerPC])],
1773 AC_ARG_ENABLE(leading-mingw64-underscores,
1774 AS_HELP_STRING([--enable-leading-mingw64-underscores],
1775 [enable leading underscores on 64 bit mingw targets]),
1777 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1778 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1779 [Define if we should use leading underscore on 64 bit mingw targets])])
1782 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1785 AC_ARG_ENABLE(frame-pointer,
1786 [AS_HELP_STRING([--enable-frame-pointer],
1787 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1790 linux* | darwin[[8912]]*)
1791 # Enable -fomit-frame-pointer by default for Linux and Darwin with
1793 enable_frame_pointer=no
1796 enable_frame_pointer=yes
1801 # Windows32 Registry support for specifying GCC installation paths.
1802 AC_ARG_ENABLE(win32-registry,
1803 [AS_HELP_STRING([--disable-win32-registry],
1804 [disable lookup of installation paths in the
1805 Registry on Windows hosts])
1806 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1807 AS_HELP_STRING([--enable-win32-registry=KEY],
1808 [use KEY instead of GCC version as the last portion
1809 of the registry key])],,)
1812 win32 | pe | cygwin* | mingw32* | uwin*)
1813 if test "x$enable_win32_registry" != xno; then
1814 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1817 if test "x$enable_win32_registry" != xno; then
1818 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1819 [Define to 1 if installation paths should be looked up in the Windows
1820 Registry. Ignored on non-Windows hosts.])
1822 if test "x$enable_win32_registry" != xyes \
1823 && test "x$enable_win32_registry" != x; then
1824 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1825 [Define to be the last component of the Windows registry key under which
1826 to look for installation paths. The full key used will be
1827 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1828 The default is the GCC version number.])
1834 # Get an absolute path to the GCC top-level source directory
1835 holddir=`${PWDCMD-pwd}`
1837 topdir=`${PWDCMD-pwd}`
1840 # Conditionalize the makefile for this host machine.
1842 for f in ${host_xmake_file}
1844 if test -f ${srcdir}/config/$f
1846 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1850 # Conditionalize the makefile for this target machine.
1852 for f in ${tmake_file}
1854 if test -f ${srcdir}/config/$f
1856 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1859 tmake_file="${tmake_file_}"
1861 out_object_file=`basename $out_file .c`.o
1862 common_out_object_file=`basename $common_out_file .c`.o
1864 tm_file_list="options.h"
1865 tm_include_list="options.h insn-constants.h"
1866 for f in $tm_file; do
1869 f=`echo $f | sed 's/^..//'`
1870 tm_file_list="${tm_file_list} $f"
1871 tm_include_list="${tm_include_list} $f"
1874 tm_file_list="${tm_file_list} \$(srcdir)/$f"
1875 tm_include_list="${tm_include_list} $f"
1878 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1879 tm_include_list="${tm_include_list} config/$f"
1886 for f in $tm_p_file; do
1889 tm_p_file_list="${tm_p_file_list} $f"
1890 tm_p_include_list="${tm_p_include_list} $f"
1893 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1894 tm_p_include_list="${tm_p_include_list} config/$f"
1900 for f in $xm_file; do
1903 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1904 xm_include_list="${xm_include_list} $f"
1907 xm_file_list="${xm_file_list} $f"
1908 xm_include_list="${xm_include_list} $f"
1911 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1912 xm_include_list="${xm_include_list} config/$f"
1918 host_xm_include_list=
1919 for f in $host_xm_file; do
1922 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1923 host_xm_include_list="${host_xm_include_list} $f"
1926 host_xm_file_list="${host_xm_file_list} $f"
1927 host_xm_include_list="${host_xm_include_list} $f"
1930 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1931 host_xm_include_list="${host_xm_include_list} config/$f"
1937 for f in $build_xm_file; do
1940 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1941 build_xm_include_list="${build_xm_include_list} $f"
1943 auto-build.h | auto-host.h )
1944 build_xm_file_list="${build_xm_file_list} $f"
1945 build_xm_include_list="${build_xm_include_list} $f"
1948 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1949 build_xm_include_list="${build_xm_include_list} config/$f"
1954 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1955 # cross-compiler which does not use the native headers and libraries.
1956 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1957 CROSS= AC_SUBST(CROSS)
1958 ALL=all.internal AC_SUBST(ALL)
1959 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1961 if test "x$with_build_sysroot" != x; then
1962 build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1964 # This value is used, even on a native system, because
1965 # CROSS_SYSTEM_HEADER_DIR is just
1966 # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1967 build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1970 if test x$host != x$target
1972 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1974 SYSTEM_HEADER_DIR=$build_system_header_dir
1975 case "$host","$target" in
1976 # Darwin crosses can use the host system's libraries and headers,
1977 # because of the fat library support. Of course, it must be the
1978 # same version of Darwin on both sides. Allow the user to
1979 # just say --target=foo-darwin without a version number to mean
1980 # "the version on this system".
1981 *-*-darwin*,*-*-darwin*)
1982 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1983 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1984 if test $hostos = $targetos -o $targetos = darwin ; then
1986 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1991 i?86-*-*,x86_64-*-* \
1992 | powerpc*-*-*,powerpc64*-*-*)
1993 CROSS="$CROSS -DNATIVE_CROSS" ;;
1998 if test "x$with_headers" = x; then
2005 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2006 SYSTEM_HEADER_DIR=$build_system_header_dir
2009 # If this is a cross-compiler that does not
2010 # have its own set of headers then define
2013 # If this is using newlib, without having the headers available now,
2014 # then define inhibit_libc in LIBGCC2_CFLAGS.
2015 # This prevents libgcc2 from containing any code which requires libc
2017 : ${inhibit_libc=false}
2018 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2019 test x$with_newlib = xyes ; } &&
2020 { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
2023 AC_SUBST(inhibit_libc)
2025 # When building gcc with a cross-compiler, we need to adjust things so
2026 # that the generator programs are still built with the native compiler.
2027 # Also, we cannot run fixincludes.
2029 # These are the normal (build=host) settings:
2030 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
2031 CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
2032 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
2033 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2034 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
2035 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
2037 # And these apply if build != host, or we are generating coverage data
2038 if test x$build != x$host || test "x$coverage_flags" != x
2040 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2041 BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2042 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2045 # Expand extra_headers to include complete path.
2046 # This substitutes for lots of t-* files.
2048 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2049 for file in ${extra_headers} ; do
2050 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2053 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2054 if test x"$use_gcc_tgmath" = xyes
2055 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2058 # Define collect2 in Makefile.
2059 case $host_can_use_collect2 in
2061 *) collect2='collect2$(exeext)' ;;
2063 AC_SUBST([collect2])
2065 # Add a definition of USE_COLLECT2 if system wants one.
2066 case $use_collect2 in
2067 no) use_collect2= ;;
2070 host_xm_defines="${host_xm_defines} USE_COLLECT2"
2071 xm_defines="${xm_defines} USE_COLLECT2"
2072 case $host_can_use_collect2 in
2074 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2080 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2081 [Define to the name of the LTO plugin DSO that must be
2082 passed to the linker's -plugin=LIB option.])
2084 # ---------------------------
2085 # Assembler & linker features
2086 # ---------------------------
2088 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2089 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2090 # However when ld-new is first executed from the build tree, libtool will
2091 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2092 # to the build tree. While doing this we need to use the previous-stage
2093 # linker, or we have an infinite loop. The presence of a shell script as
2094 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2095 # the gcc/collect-ld script. So we need to know how libtool works, or
2096 # exec-tool will fail.
2098 m4_defun([_LT_CONFIG_COMMANDS], [])
2101 AC_SUBST(enable_fast_install)
2103 # Identify the assembler which will work hand-in-glove with the newly
2104 # built GCC, so that we can examine its features. This is the assembler
2105 # which will be driven by the driver program.
2107 # If build != host, and we aren't building gas in-tree, we identify a
2108 # build->target assembler and hope that it will have the same features
2109 # as the host->target assembler we'll be using.
2110 gcc_cv_gas_major_version=
2111 gcc_cv_gas_minor_version=
2112 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2114 m4_pattern_allow([AS_FOR_TARGET])dnl
2115 AS_VAR_SET_IF(gcc_cv_as,, [
2116 if test -x "$DEFAULT_ASSEMBLER"; then
2117 gcc_cv_as="$DEFAULT_ASSEMBLER"
2118 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
2119 && test -f ../gas/Makefile \
2120 && test x$build = x$host; then
2121 gcc_cv_as=../gas/as-new$build_exeext
2122 elif test -x as$build_exeext; then
2123 # Build using assembler in the current directory.
2124 gcc_cv_as=./as$build_exeext
2125 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2126 gcc_cv_as="$AS_FOR_TARGET"
2128 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2131 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2132 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2133 case "$ORIGINAL_AS_FOR_TARGET" in
2134 ./as | ./as$build_exeext) ;;
2135 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2138 AC_MSG_CHECKING(what assembler to use)
2139 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2140 # Single tree build which includes gas. We want to prefer it
2141 # over whatever linker top-level may have detected, since
2142 # we'll use what we're building after installation anyway.
2143 AC_MSG_RESULT(newly built gas)
2145 _gcc_COMPUTE_GAS_VERSION
2146 in_tree_gas_is_elf=no
2147 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2148 || (grep 'obj_format = multi' ../gas/Makefile \
2149 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2151 in_tree_gas_is_elf=yes
2154 AC_MSG_RESULT($gcc_cv_as)
2160 [[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
2161 [case "${enableval}" in
2168 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
2169 [case "${enableval}" in
2171 install_gold_as_default=yes
2174 if test x${default_ld} != x; then
2175 install_gold_as_default=yes
2181 AC_MSG_ERROR([invalid --enable-gold argument])
2184 [install_gold_as_default=no])
2186 # Identify the linker which will work hand-in-glove with the newly
2187 # built GCC, so that we can examine its features. This is the linker
2188 # which will be driven by the driver program.
2190 # If build != host, and we aren't building gas in-tree, we identify a
2191 # build->target linker and hope that it will have the same features
2192 # as the host->target linker we'll be using.
2193 gcc_cv_gld_major_version=
2194 gcc_cv_gld_minor_version=
2195 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2196 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2197 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2199 AS_VAR_SET_IF(gcc_cv_ld,, [
2200 if test -x "$DEFAULT_LINKER"; then
2201 gcc_cv_ld="$DEFAULT_LINKER"
2202 elif test $install_gold_as_default = yes \
2203 && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2204 && test -f ../gold/Makefile \
2205 && test x$build = x$host; then
2206 gcc_cv_ld=../gold/ld-new$build_exeext
2207 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
2208 && test -f ../ld/Makefile \
2209 && test x$build = x$host; then
2210 gcc_cv_ld=../ld/ld-new$build_exeext
2211 elif test -x collect-ld$build_exeext; then
2212 # Build using linker in the current directory.
2213 gcc_cv_ld=./collect-ld$build_exeext
2214 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2215 gcc_cv_ld="$LD_FOR_TARGET"
2217 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2220 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2221 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2222 # if the PLUGIN_LD is set ld-new, just have it as ld
2223 # as that is the installed named.
2224 if test x$PLUGIN_LD_SUFFIX = xld-new \
2225 || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2228 AC_ARG_WITH(plugin-ld,
2229 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2230 [if test x"$withval" != x; then
2231 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2232 PLUGIN_LD_SUFFIX=`echo $withval | sed -e "s,$target_alias-,,"`
2234 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2235 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2237 # Check to see if we are using gold instead of ld
2238 AC_MSG_CHECKING(whether we are using gold)
2240 if test x$gcc_cv_ld != x; then
2241 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2242 | grep "GNU gold" > /dev/null; then
2246 AC_MSG_RESULT($ld_is_gold)
2248 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2249 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2250 case "$ORIGINAL_LD_FOR_TARGET" in
2251 ./collect-ld | ./collect-ld$build_exeext) ;;
2252 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2255 AC_MSG_CHECKING(what linker to use)
2256 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2257 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2258 # Single tree build which includes ld. We want to prefer it
2259 # over whatever linker top-level may have detected, since
2260 # we'll use what we're building after installation anyway.
2261 AC_MSG_RESULT(newly built ld)
2263 in_tree_ld_is_elf=no
2264 if (grep 'EMUL = .*elf' ../ld/Makefile \
2265 || grep 'EMUL = .*linux' ../ld/Makefile \
2266 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2267 in_tree_ld_is_elf=yes
2268 elif test "$ld_is_gold" = yes; then
2269 in_tree_ld_is_elf=yes
2271 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
2274 gcc_cv_gld_version=`sed -n -e 's/^[ ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2275 if test x$gcc_cv_gld_version != x; then
2279 case $gcc_cv_gld_version in
2282 *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2285 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2286 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2288 ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2289 ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2291 AC_MSG_RESULT($gcc_cv_ld)
2293 gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2294 ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2295 ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2298 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2299 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2301 # Figure out what nm we will be using.
2302 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2303 AS_VAR_SET_IF(gcc_cv_nm,, [
2304 if test -f $gcc_cv_binutils_srcdir/configure.in \
2305 && test -f ../binutils/Makefile \
2306 && test x$build = x$host; then
2307 gcc_cv_nm=../binutils/nm-new$build_exeext
2308 elif test -x nm$build_exeext; then
2309 gcc_cv_nm=./nm$build_exeext
2310 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2311 gcc_cv_nm="$NM_FOR_TARGET"
2313 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2316 AC_MSG_CHECKING(what nm to use)
2317 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2318 # Single tree build which includes binutils.
2319 AC_MSG_RESULT(newly built nm)
2322 AC_MSG_RESULT($gcc_cv_nm)
2326 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2327 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2328 case "$ORIGINAL_NM_FOR_TARGET" in
2329 ./nm | ./nm$build_exeext) ;;
2330 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2334 # Figure out what objdump we will be using.
2335 AS_VAR_SET_IF(gcc_cv_objdump,, [
2336 if test -f $gcc_cv_binutils_srcdir/configure.in \
2337 && test -f ../binutils/Makefile \
2338 && test x$build = x$host; then
2339 # Single tree build which includes binutils.
2340 gcc_cv_objdump=../binutils/objdump$build_exeext
2341 elif test -x objdump$build_exeext; then
2342 gcc_cv_objdump=./objdump$build_exeext
2343 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2344 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2346 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2349 AC_MSG_CHECKING(what objdump to use)
2350 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2351 # Single tree build which includes binutils.
2352 AC_MSG_RESULT(newly built objdump)
2353 elif test x$gcc_cv_objdump = x; then
2354 AC_MSG_RESULT(not found)
2356 AC_MSG_RESULT($gcc_cv_objdump)
2359 # Figure out what readelf we will be using.
2360 AS_VAR_SET_IF(gcc_cv_readelf,, [
2361 if test -f $gcc_cv_binutils_srcdir/configure.in \
2362 && test -f ../binutils/Makefile \
2363 && test x$build = x$host; then
2364 # Single tree build which includes binutils.
2365 gcc_cv_readelf=../binutils/readelf$build_exeext
2366 elif test -x readelf$build_exeext; then
2367 gcc_cv_readelf=./readelf$build_exeext
2369 AC_PATH_PROG(gcc_cv_readelf, readelf)
2372 AC_MSG_CHECKING(what readelf to use)
2373 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2374 # Single tree build which includes binutils.
2375 AC_MSG_RESULT(newly built readelf)
2376 elif test x$gcc_cv_readelf = x; then
2377 AC_MSG_RESULT(not found)
2379 AC_MSG_RESULT($gcc_cv_readelf)
2382 # Figure out what assembler alignment features are present.
2383 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2387 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2388 [Define if your assembler supports .balign and .p2align.])])
2390 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2393 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2394 [Define if your assembler supports specifying the maximum number
2395 of bytes to skip when using the GAS .p2align command.])])
2397 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2400 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2401 [Define if your assembler supports .literal16.])])
2403 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2405 [conftest_label1: .word 0
2407 conftest_label2: .word 0
2409 [if test x$gcc_cv_nm != x; then
2410 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2411 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2412 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2414 else gcc_cv_as_subsection_m1=yes
2416 rm -f conftest.nm1 conftest.nm2
2418 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2419 [Define if your assembler supports .subsection and .subsection -1 starts
2420 emitting at the beginning of your section.])])
2422 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2425 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2427 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2429 [ .weakref foobar, barfnot],,
2430 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2432 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2435 .NSUBSPA $CODE$,COMDAT],,
2436 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2438 # .hidden needs to be supported in both the assembler and the linker,
2439 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2440 # This is irritatingly difficult to feature test for; we have to check the
2441 # date string after the version number. If we've got an in-tree
2442 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2444 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2445 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2451 # Darwin as has some visibility support, though with a different syntax.
2452 gcc_cv_as_hidden=yes
2456 # gnu_indirect_function type is an extension proposed at
2457 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2458 # selection of function implementation
2459 AC_ARG_ENABLE(gnu-indirect-function,
2460 [AS_HELP_STRING([--enable-gnu-indirect-function],
2461 [enable the use of the @gnu_indirect_function to glibc systems])],
2462 [case $enable_gnu_indirect_function in
2464 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2465 Valid choices are 'yes' and 'no'.]) ;;
2467 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2469 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2470 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2471 [Define if your system supports gnu indirect functions.])
2475 if test $in_tree_ld != yes ; then
2476 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2477 if echo "$ld_ver" | grep GNU > /dev/null; then
2478 if test x"$ld_is_gold" = xyes; then
2479 # GNU gold --version looks like this:
2481 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2483 # We extract the binutils version which is more familiar and specific
2484 # than the gold version.
2485 ld_vers=`echo $ld_ver | sed -n \
2486 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2488 # GNU ld --version looks like this:
2490 # GNU ld (GNU Binutils) 2.21.51.20110225
2491 ld_vers=`echo $ld_ver | sed -n \
2492 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2494 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'`
2495 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2496 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2497 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2501 # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2504 # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2505 # /usr/ccs/bin/ld has been configured.
2506 ld_ver=`$gcc_cv_ld -V 2>&1`
2507 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2508 ld_vers=`echo $ld_ver | sed -n \
2509 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2510 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2511 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2519 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2520 [[if test $in_tree_ld = yes ; then
2522 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 \
2523 && test $in_tree_ld_is_elf = yes; then
2524 gcc_cv_ld_hidden=yes
2527 gcc_cv_ld_hidden=yes
2528 if test x"$ld_is_gold" = xyes; then
2530 elif echo "$ld_ver" | grep GNU > /dev/null; then
2532 mmix-knuth-mmixware)
2533 # The linker emits by default mmo, not ELF, so "no" is appropriate.
2537 if test 0"$ld_date" -lt 20020404; then
2538 if test -n "$ld_date"; then
2539 # If there was date string, but was earlier than 2002-04-04, fail
2541 elif test -z "$ld_vers"; then
2542 # If there was no date string nor ld version number, something is wrong
2545 test -z "$ld_vers_patch" && ld_vers_patch=0
2546 if test "$ld_vers_major" -lt 2; then
2548 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2549 gcc_cv_ld_hidden="no"
2550 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2558 # Darwin ld has some visibility support.
2559 gcc_cv_ld_hidden=yes
2561 hppa64*-*-hpux* | ia64*-*-hpux*)
2562 gcc_cv_ld_hidden=yes
2564 *-*-solaris2.1[0-9]*)
2565 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2566 # .symbolic was only added in Solaris 9 12/02.
2567 gcc_cv_ld_hidden=yes
2575 libgcc_visibility=no
2576 AC_SUBST(libgcc_visibility)
2577 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2578 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2579 libgcc_visibility=yes
2580 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2581 [Define if your assembler and linker support .hidden.])
2584 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2585 gcc_cv_ld_ro_rw_mix=unknown
2586 if test $in_tree_ld = yes ; then
2587 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 \
2588 && test $in_tree_ld_is_elf = yes; then
2589 gcc_cv_ld_ro_rw_mix=read-write
2591 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2592 echo '.section myfoosect, "a"' > conftest1.s
2593 echo '.section myfoosect, "aw"' > conftest2.s
2594 echo '.byte 1' >> conftest2.s
2595 echo '.section myfoosect, "a"' > conftest3.s
2596 echo '.byte 0' >> conftest3.s
2597 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2598 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2599 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2600 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2601 conftest2.o conftest3.o > /dev/null 2>&1; then
2602 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2603 | sed -e '/myfoosect/!d' -e N`
2604 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2605 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2606 gcc_cv_ld_ro_rw_mix=read-only
2608 gcc_cv_ld_ro_rw_mix=read-write
2613 rm -f conftest.* conftest[123].*
2616 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2617 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2618 [Define if your linker links a mix of read-only
2619 and read-write sections into a read-write section.])
2621 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2623 gcc_AC_INITFINI_ARRAY
2625 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2626 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2634 [[# GAS versions before 2.11 do not support uleb128,
2635 # despite appearing to.
2636 # ??? There exists an elf-specific test that will crash
2637 # the assembler. Perhaps it's better to figure out whether
2638 # arbitrary sections are supported and try the test.
2639 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2640 if echo "$as_ver" | grep GNU > /dev/null; then
2641 as_vers=`echo $as_ver | sed -n \
2642 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2643 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2644 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2645 if test $as_major -eq 2 && test $as_minor -lt 11
2647 else gcc_cv_as_leb128=yes
2650 [AC_DEFINE(HAVE_AS_LEB128, 1,
2651 [Define if your assembler supports .sleb128 and .uleb128.])])
2653 # Check if we have assembler support for unwind directives.
2654 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2661 .cfi_escape 1, 2, 3, 4, 5
2665 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2666 # read-only and read-write sections, we need to make sure that the
2667 # assembler used emits read-write .eh_frame sections.
2668 if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2669 if test "x$gcc_cv_objdump" != x; then
2670 if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2671 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2672 gcc_cv_as_cfi_directive=no
2675 i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2676 # On Solaris/x86, make sure that GCC and assembler agree on using
2677 # read-only .eh_frame sections for 64-bit.
2678 if test x$gas = xyes; then
2679 as_ix86_64_opt="--64"
2681 as_ix86_64_opt="-xarch=amd64"
2683 if $gcc_cv_as $as_ix86_64_opt -o conftest.o conftest.s > /dev/null 2>&1 && \
2684 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2685 sed -e /.eh_frame/!d -e N | \
2686 grep READONLY > /dev/null; then
2687 gcc_cv_as_cfi_directive=yes
2689 gcc_cv_as_cfi_directive=no
2693 gcc_cv_as_cfi_directive=yes
2698 # no objdump, err on the side of caution
2699 gcc_cv_as_cfi_directive=no
2702 gcc_cv_as_cfi_directive=yes
2706 gcc_cv_as_cfi_directive=yes
2709 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2710 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2714 .cfi_adjust_cfa_offset 64
2716 .cfi_adjust_cfa_offset 128
2719 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2720 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
2721 gcc_cv_as_cfi_advance_working=yes
2725 # no objdump, err on the side of caution
2726 gcc_cv_as_cfi_advance_working=no
2728 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2729 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2730 [`if test $gcc_cv_as_cfi_directive = yes \
2731 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2732 [Define 0/1 if your assembler supports CFI directives.])
2734 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2735 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2736 gcc_cv_as_cfi_personality_directive, ,,
2739 .cfi_personality 0, symbol
2741 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2742 [`if test $gcc_cv_as_cfi_personality_directive = yes;
2743 then echo 1; else echo 0; fi`],
2744 [Define 0/1 if your assembler supports .cfi_personality.])
2746 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2747 gcc_cv_as_cfi_sections_directive, ,,
2749 .cfi_sections .debug_frame, .eh_frame
2753 win32 | pe | cygwin* | mingw32* | uwin*)
2754 # Need to check that we generated the correct relocation for the
2755 # .debug_frame section. This was fixed for binutils 2.21.
2756 gcc_cv_as_cfi_sections_directive=no
2757 if test "x$gcc_cv_objdump" != x; then
2758 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2759 grep secrel > /dev/null; then
2760 gcc_cv_as_cfi_sections_directive=yes
2765 gcc_cv_as_cfi_sections_directive=yes
2768 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2769 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2770 [`if test $gcc_cv_as_cfi_sections_directive = yes;
2771 then echo 1; else echo 0; fi`],
2772 [Define 0/1 if your assembler supports .cfi_sections.])
2774 # GAS versions up to and including 2.11.0 may mis-optimize
2776 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2784 .section .eh_frame,"aw",@progbits
2786 .4byte .LECIE1-.LSCIE1
2800 .4byte .LEFDE1-.LASFDE1
2802 .4byte .LASFDE1-__FRAME_BEGIN__
2810 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2811 cat > conftest.lit <<EOF
2812 0000 10000000 00000000 017a0001 781a0004 .........z..x...
2813 0010 01000000 12000000 18000000 00000000 ................
2814 0020 08000000 04080000 0044 .........D @&t@
2816 cat > conftest.big <<EOF
2817 0000 00000010 00000000 017a0001 781a0004 .........z..x...
2818 0010 00000001 00000012 00000018 00000000 ................
2819 0020 00000008 04000000 0844 .........D @&t@
2821 # If the assembler didn't choke, and we can objdump,
2822 # and we got the correct data, then succeed.
2823 # The text in the here-document typically retains its unix-style line
2824 # endings, while the output of objdump will use host line endings.
2825 # Therefore, use diff -b for the comparisons.
2826 if test x$gcc_cv_objdump != x \
2827 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2828 | tail -3 > conftest.got \
2829 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2830 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2832 gcc_cv_as_eh_frame=yes
2833 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2834 gcc_cv_as_eh_frame=buggy
2836 # Uh oh, what do we do now?
2837 gcc_cv_as_eh_frame=no
2840 if test $gcc_cv_as_eh_frame = buggy; then
2841 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2842 [Define if your assembler mis-optimizes .eh_frame data.])
2845 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2846 [elf,2,12,0], [--fatal-warnings],
2847 [.section .rodata.str, "aMS", @progbits, 1])
2848 if test $gcc_cv_as_shf_merge = no; then
2849 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2850 [elf,2,12,0], [--fatal-warnings],
2851 [.section .rodata.str, "aMS", %progbits, 1])
2853 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2854 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2855 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2857 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2858 gcc_cv_as_comdat_group,
2859 [elf,2,16,0], [--fatal-warnings],
2860 [.section .text,"axG",@progbits,.foo,comdat])
2861 if test $gcc_cv_as_comdat_group = yes; then
2862 gcc_cv_as_comdat_group_percent=no
2863 gcc_cv_as_comdat_group_group=no
2865 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2866 gcc_cv_as_comdat_group_percent,
2867 [elf,2,16,0], [--fatal-warnings],
2868 [.section .text,"axG",%progbits,.foo,comdat])
2869 if test $gcc_cv_as_comdat_group_percent = yes; then
2870 gcc_cv_as_comdat_group_group=no
2872 if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2873 gcc_cv_as_comdat_group_group=no
2876 # Sun as uses a completely different syntax.
2881 .group foo,".text%foo",#comdat
2882 .section ".text%foo", #alloc,#execinstr,#progbits
2887 i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2889 .group foo,.text%foo,#comdat
2890 .section .text%foo, "ax", @progbits
2896 gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2897 gcc_cv_as_comdat_group_group,
2903 if test x"$ld_is_gold" = xyes; then
2905 elif test $in_tree_ld = yes ; then
2907 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 \
2908 && test $in_tree_ld_is_elf = yes; then
2911 elif echo "$ld_ver" | grep GNU > /dev/null; then
2913 if test 0"$ld_date" -lt 20050308; then
2914 if test -n "$ld_date"; then
2915 # If there was date string, but was earlier than 2005-03-08, fail
2917 elif test "$ld_vers_major" -lt 2; then
2919 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2926 *-*-solaris2.1[1-9]*)
2928 # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2929 # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2932 # If using Sun as for COMDAT group as emitted by GCC, one needs at
2933 # least ld version 1.2267.
2934 if test "$ld_vers_major" -gt 1; then
2936 elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2938 elif test "$ld_vers_minor" -ge 2267; then
2943 # Assume linkers other than GNU ld don't support COMDAT group.
2949 # Allow overriding the automatic COMDAT group tests above.
2950 AC_ARG_ENABLE(comdat,
2951 [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2952 [comdat_group="$enable_comdat"])
2953 if test $comdat_group = no; then
2954 gcc_cv_as_comdat_group=no
2955 gcc_cv_as_comdat_group_percent=no
2956 gcc_cv_as_comdat_group_group=no
2958 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2959 [`if test $gcc_cv_as_comdat_group = yes \
2960 || test $gcc_cv_as_comdat_group_percent = yes \
2961 || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2962 [Define 0/1 if your assembler and linker support COMDAT groups.])
2964 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2965 gcc_cv_as_discriminator,
2969 .loc 1 1 0 discriminator 1],,
2970 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2971 [Define if your assembler supports the .loc discriminator sub-directive.])])
2973 # Thread-local storage - the check is heavily parameterized.
2982 .section ".tdata","awT",@progbits
2985 ldq $27,__tls_get_addr($29) !literal!1
2986 lda $16,foo($29) !tlsgd!1
2987 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
2988 ldq $27,__tls_get_addr($29) !literal!2
2989 lda $16,foo($29) !tlsldm!2
2990 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
2991 ldq $1,foo($29) !gotdtprel
2992 ldah $2,foo($29) !dtprelhi
2993 lda $3,foo($2) !dtprello
2994 lda $4,foo($29) !dtprel
2995 ldq $1,foo($29) !gottprel
2996 ldah $2,foo($29) !tprelhi
2997 lda $3,foo($2) !tprello
2998 lda $4,foo($29) !tprel'
3001 tls_as_opt=--fatal-warnings
3003 cris-*-*|crisv32-*-*)
3005 .section ".tdata","awT",@progbits
3012 tls_as_opt=--fatal-warnings
3016 .section ".tdata","awT",@progbits
3028 .section ".tdata","awT",@progbits
3032 addil LT%foo-$tls_gdidx$,gp
3033 ldo RT%foo-$tls_gdidx$(%r1),%arg0
3036 addil LT%foo-$tls_ldidx$,gp
3038 ldo RT%foo-$tls_ldidx$(%r1),%arg0
3039 addil LR%foo-$tls_dtpoff$,%ret0
3040 ldo RR%foo-$tls_dtpoff$(%r1),%t1
3042 addil LT%foo-$tls_ieoff$,gp
3043 ldw RT%foo-$tls_ieoff$(%r1),%t2
3046 addil LR%foo-$tls_leoff$,%t1
3047 ldo RR%foo-$tls_leoff$(%r1),%t2'
3050 tls_as_opt=--fatal-warnings
3054 .section ".tdata","awT",%progbits
3065 i[34567]86-*-* | x86_64-*-*)
3067 i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3074 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3076 .section .tdata,"awt",@progbits'
3081 AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3082 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3086 .section ".tdata","awT",@progbits'
3090 tls_as_opt="--fatal-warnings"
3094 conftest_s="$conftest_s
3098 leal foo@tlsgd(,%ebx,1), %eax
3099 leal foo@tlsldm(%ebx), %eax
3100 leal foo@dtpoff(%eax), %edx
3101 movl foo@gottpoff(%ebx), %eax
3102 subl foo@gottpoff(%ebx), %eax
3103 addl foo@gotntpoff(%ebx), %eax
3104 movl foo@indntpoff, %eax
3105 movl \$foo@tpoff, %eax
3106 subl \$foo@tpoff, %eax
3107 leal foo@ntpoff(%ecx), %eax"
3110 if test x$on_solaris = xyes; then
3112 yes) tls_as_opt="$tls_as_opt --64" ;;
3113 no) tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3116 conftest_s="$conftest_s
3120 leaq foo@tlsgd(%rip), %rdi
3121 leaq foo@tlsld(%rip), %rdi
3122 leaq foo@dtpoff(%rax), %rdx
3123 movq foo@gottpoff(%rip), %rax
3124 movq \$foo@tpoff, %rax"
3130 .section ".tdata","awT",@progbits
3133 addl r16 = @ltoff(@dtpmod(foo#)), gp
3134 addl r17 = @ltoff(@dtprel(foo#)), gp
3135 addl r18 = @ltoff(@tprel(foo#)), gp
3136 addl r19 = @dtprel(foo#), gp
3137 adds r21 = @dtprel(foo#), r13
3138 movl r23 = @dtprel(foo#)
3139 addl r20 = @tprel(foo#), gp
3140 adds r22 = @tprel(foo#), r13
3141 movl r24 = @tprel(foo#)'
3144 tls_as_opt=--fatal-warnings
3148 .section .tdata,"awT",@progbits
3152 addik r5,r20,x@TLSGD
3153 addik r5,r20,x@TLSLDM'
3156 tls_as_opt='--fatal-warnings'
3160 .section .tdata,"awT",@progbits
3164 addiu $4, $28, %tlsgd(x)
3165 addiu $4, $28, %tlsldm(x)
3166 lui $4, %dtprel_hi(x)
3167 addiu $4, $4, %dtprel_lo(x)
3168 lw $4, %gottprel(x)($28)
3169 lui $4, %tprel_hi(x)
3170 addiu $4, $4, %tprel_lo(x)'
3173 tls_as_opt='-32 --fatal-warnings'
3177 .section .tdata,"awT",@progbits
3182 move.l x@TLSGD(%a5),%a0
3183 move.l x@TLSLDM(%a5),%a0
3184 move.l x@TLSLDO(%a5),%a0
3185 move.l x@TLSIE(%a5),%a0
3186 move.l x@TLSLE(%a5),%a0'
3189 tls_as_opt='--fatal-warnings'
3193 .section ".tdata","awT",@progbits'
3196 tls_as_opt="--fatal-warnings"
3200 .section ".tdata","awT",%progbits
3204 add x0, x0, #:tlsgd_lo12:x
3209 tls_as_opt='--fatal-warnings'
3213 .extern __get_tpointer
3231 .section ".tdata","awT",@progbits
3239 addi 3,2,ld0@got@tlsgd
3245 addi 3,2,x1@got@tlsld
3251 addis 9,3,x2@dtprel@ha
3252 addi 9,9,x2@dtprel@l
3255 ld 9,x3@got@dtprel(2)
3261 tls_as_opt="-a64 --fatal-warnings"
3265 .section ".tdata","awT",@progbits
3273 addi 3,31,ld0@got@tlsgd
3275 addi 3,31,x1@got@tlsld
3278 addis 9,3,x2@dtprel@ha
3279 addi 9,9,x2@dtprel@l
3280 lwz 9,x3@got@tprel(31)
3283 addis 9,2,x2@tprel@ha
3284 addi 9,9,x2@tprel@l'
3287 tls_as_opt="-a32 --fatal-warnings"
3291 .section ".tdata","awT",@progbits
3300 l %r1,foo@GOTNTPOFF(%r12)
3301 l %r1,0(%r1):tls_load:foo
3302 bas %r14,0(%r1,%r13):tls_gdcall:foo
3303 bas %r14,0(%r1,%r13):tls_ldcall:foo'
3306 tls_as_opt="-m31 --fatal-warnings"
3310 .section ".tdata","awT",@progbits
3318 lg %r1,foo@GOTNTPOFF(%r12)
3319 larl %r1,foo@INDNTPOFF
3320 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
3321 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3324 tls_as_opt="-m64 -Aesame --fatal-warnings"
3326 sh-*-* | sh[34]-*-*)
3328 .section ".tdata","awT",@progbits
3338 tls_as_opt=--fatal-warnings
3342 sparc*-sun-solaris2.*)
3349 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3351 .section ".tdata",#alloc,#write,#tls'
3356 .section ".tdata","awT",@progbits'
3359 tls_as_opt="-32 --fatal-warnings"
3361 conftest_s="$conftest_s
3364 sethi %tgd_hi22(foo), %o0
3365 add %o0, %tgd_lo10(foo), %o1
3366 add %l7, %o1, %o0, %tgd_add(foo)
3367 call __tls_get_addr, %tgd_call(foo)
3368 sethi %tldm_hi22(foo), %l1
3369 add %l1, %tldm_lo10(foo), %l2
3370 add %l7, %l2, %o0, %tldm_add(foo)
3371 call __tls_get_addr, %tldm_call(foo)
3372 sethi %tldo_hix22(foo), %l3
3373 xor %l3, %tldo_lox10(foo), %l4
3374 add %o0, %l4, %l5, %tldo_add(foo)
3375 sethi %tie_hi22(foo), %o3
3376 add %o3, %tie_lo10(foo), %o3
3377 ld [%l7 + %o3], %o2, %tie_ld(foo)
3378 add %g7, %o2, %o4, %tie_add(foo)
3379 sethi %tle_hix22(foo), %l1
3380 xor %l1, %tle_lox10(foo), %o5
3381 ld [%g7 + %o5], %o1"
3385 .section ".tdata","awT",@progbits
3388 addli r0, zero, tls_gd(foo)
3389 auli r0, zero, tls_gd_ha16(foo)
3390 addli r0, r0, tls_gd_lo16(foo)
3392 addli r0, zero, tls_ie(foo)
3393 auli r0, r0, tls_ie_ha16(foo)
3394 addli r0, r0, tls_ie_lo16(foo)'
3397 tls_as_opt="--fatal-warnings"
3401 .section ".tdata","awT",@progbits
3404 shl16insli r0, zero, hw0_last_tls_gd(foo)
3405 shl16insli r0, zero, hw1_last_tls_gd(foo)
3406 shl16insli r0, r0, hw0_tls_gd(foo)
3408 shl16insli r0, zero, hw1_last_tls_ie(foo)
3409 shl16insli r0, r0, hw0_tls_ie(foo)'
3412 tls_as_opt="--fatal-warnings"
3416 .section ".tdata","awT",@progbits
3419 movi a8, foo@TLSFUNC
3420 movi a10, foo@TLSARG
3421 callx8.tls a8, foo@TLSCALL'
3428 if test "x$enable_tls" = xno ; then
3429 : # TLS explicitly disabled.
3430 elif test "x$enable_tls" = xyes ; then
3431 set_have_as_tls=yes # TLS explicitly enabled.
3432 elif test -z "$tls_first_major"; then
3433 : # If we don't have a check, assume no support.
3435 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3436 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3437 [set_have_as_tls=yes])
3439 if test $set_have_as_tls = yes ; then
3440 AC_DEFINE(HAVE_AS_TLS, 1,
3441 [Define if your assembler and linker support thread-local storage.])
3444 # Target-specific assembler checks.
3446 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3447 gcc_cv_ld_static_dynamic=no
3448 gcc_cv_ld_static_option='-Bstatic'
3449 gcc_cv_ld_dynamic_option='-Bdynamic'
3450 if test $in_tree_ld = yes ; then
3451 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
3452 gcc_cv_ld_static_dynamic=yes
3454 elif test x$gcc_cv_ld != x; then
3455 # Check if linker supports -Bstatic/-Bdynamic option
3456 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3457 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3458 gcc_cv_ld_static_dynamic=yes
3461 # AIX ld uses -b flags
3462 *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3463 gcc_cv_ld_static_dynamic=yes
3464 gcc_cv_ld_static_option="-bstatic"
3465 gcc_cv_ld_dynamic_option="-bdynamic"
3467 # HP-UX ld uses -a flags to select between shared and archive.
3469 if test x"$gnu_ld" = xno; then
3470 gcc_cv_ld_static_dynamic=yes
3471 gcc_cv_ld_static_option="-aarchive_shared"
3472 gcc_cv_ld_dynamic_option="-adefault"
3475 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3477 gcc_cv_ld_static_dynamic=yes
3482 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3483 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3484 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3485 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3486 [Define to the linker option to disable use of shared objects.])
3487 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3488 [Define to the linker option to enable use of shared objects.])
3490 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3492 if test x"$demangler_in_ld" = xyes; then
3493 AC_MSG_CHECKING(linker --demangle support)
3494 gcc_cv_ld_demangle=no
3495 if test $in_tree_ld = yes; then
3496 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 \
3497 gcc_cv_ld_demangle=yes
3499 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3500 # Check if the GNU linker supports --demangle option
3501 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3502 gcc_cv_ld_demangle=yes
3505 if test x"$gcc_cv_ld_demangle" = xyes; then
3506 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3507 [Define if your linker supports --demangle option.])
3509 AC_MSG_RESULT($gcc_cv_ld_demangle)
3512 AC_MSG_CHECKING(linker plugin support)
3514 if test -f liblto_plugin.la; then
3515 save_ld_ver="$ld_ver"
3516 save_ld_vers_major="$ld_vers_major"
3517 save_ld_vers_minor="$ld_vers_minor"
3518 save_ld_is_gold="$ld_is_gold"
3522 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3524 # FIXME: ld_is_gold?
3525 ld_vers_major="$gcc_cv_gld_major_version"
3526 ld_vers_minor="$gcc_cv_gld_minor_version"
3528 # Determine plugin linker version.
3529 # FIXME: Partial duplicate from above, generalize.
3531 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3532 if echo "$ld_ver" | grep GNU > /dev/null; then
3533 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3535 ld_vers=`echo $ld_ver | sed -n \
3536 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3538 ld_vers=`echo $ld_ver | sed -n \
3539 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3541 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3542 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3547 # Determine plugin support.
3548 if echo "$ld_ver" | grep GNU > /dev/null; then
3549 # Require GNU ld or gold 2.21+ for plugin support by default.
3550 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3552 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3553 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3558 ld_ver="$save_ld_ver"
3559 ld_vers_major="$save_ld_vers_major"
3560 ld_vers_minor="$save_ld_vers_minor"
3561 ld_is_gold="$save_ld_is_gold"
3563 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3564 [Define to the level of your linker's plugin support.])
3565 AC_MSG_RESULT($gcc_cv_lto_plugin)
3569 gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3570 [-mabi=lp64], [.text],,,)
3571 if test x$gcc_cv_as_aarch64_mabi = xyes; then
3572 AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3573 [Define if your assembler supports the -mabi option.])
3575 if test x$with_abi = xilp32; then
3576 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3577 Upgrade the Assembler.])
3579 if test x"$with_multilib_list" = xdefault; then
3580 TM_MULTILIB_CONFIG=lp64
3582 aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3583 for aarch64_multilib in ${aarch64_multilibs}; do
3584 case ${aarch64_multilib} in
3586 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3587 Upgrade the Assembler.])
3597 # All TARGET_ABI_OSF targets.
3598 alpha*-*-linux* | alpha*-*-*bsd*)
3599 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3600 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3603 extbl $3, $2, $3 !lituse_bytoff!1
3604 ldq $2, a($29) !literal!1
3605 ldq $4, b($29) !literal!2
3606 ldq_u $3, 0($2) !lituse_base!1
3607 ldq $27, f($29) !literal!5
3608 jsr $26, ($27), f !lituse_jsr!5
3609 ldah $29, 0($26) !gpdisp!3
3610 lda $0, c($29) !gprel
3611 ldah $1, d($29) !gprelhigh
3612 lda $1, d($1) !gprellow
3613 lda $29, 0($29) !gpdisp!3],,
3614 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3615 [Define if your assembler supports explicit relocations.])])
3616 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3617 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3620 ldq $27, a($29) !literal!1
3621 jsr $26, ($27), a !lituse_jsrdirect!1],,
3622 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3623 [Define if your assembler supports the lituse_jsrdirect relocation.])])
3627 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3628 gcc_cv_as_cris_no_mul_bug,[2,15,91],
3629 [-no-mul-bug-abort], [.text],,
3630 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3631 [Define if your assembler supports the -no-mul-bug-abort option.])])
3635 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3636 [.register %g2, #scratch],,
3637 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3638 [Define if your assembler supports .register.])])
3640 gcc_GAS_CHECK_FEATURE([@%:@nobits], gcc_cv_as_sparc_nobits,,,
3641 [.section "nobits",#alloc,#write,#nobits
3642 .section "progbits",#alloc,#write,#progbits])
3643 AC_DEFINE_UNQUOTED(HAVE_AS_SPARC_NOBITS,
3644 [`if test $gcc_cv_as_sparc_nobits = yes; then echo 1; else echo 0; fi`],
3645 [Define to 1 if your assembler supports #nobits, 0 otherwise.])
3647 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3649 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3650 [Define if your assembler supports -relax option.])])
3652 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3653 gcc_cv_as_sparc_gotdata_op,,
3660 sethi %gdop_hix22(foo), %g1
3661 xor %g1, %gdop_lox10(foo), %g1
3662 ld [[%l7 + %g1]], %g2, %gdop(foo)],
3663 [if test x$gcc_cv_ld != x \
3664 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3665 if test x$gcc_cv_objdump != x; then
3666 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3667 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3668 gcc_cv_as_sparc_gotdata_op=no
3670 gcc_cv_as_sparc_gotdata_op=yes
3675 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3676 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3678 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3679 gcc_cv_as_sparc_ua_pcrel,,
3687 .uaword %r_disp32(foo)],
3688 [if test x$gcc_cv_ld != x \
3689 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3690 gcc_cv_as_sparc_ua_pcrel=yes
3693 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3694 [Define if your assembler and linker support unaligned PC relative relocs.])
3696 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3697 gcc_cv_as_sparc_ua_pcrel_hidden,,
3702 .uaword %r_disp32(foo)
3703 .byte 0x32, 0x33, 0x34
3708 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3709 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3710 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3711 | grep ' 31000000 07323334' > /dev/null 2>&1; then
3712 if $gcc_cv_objdump -R conftest 2> /dev/null \
3713 | grep 'DISP32' > /dev/null 2>&1; then
3716 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3720 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3721 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3722 ]) # unaligned pcrel relocs
3724 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3725 gcc_cv_as_sparc_offsetable_lo10,,
3728 or %g1, %lo(ab) + 12, %g1
3729 or %g1, %lo(ab + 12), %g1],
3730 [if test x$gcc_cv_objdump != x \
3731 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3732 | grep ' 82106000 82106000' > /dev/null 2>&1; then
3733 gcc_cv_as_sparc_offsetable_lo10=yes
3735 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3736 [Define if your assembler supports offsetable %lo().])])
3738 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3739 gcc_cv_as_sparc_fmaf,,
3742 .register %g2, #scratch
3743 .register %g3, #scratch
3745 fmaddd %f0, %f2, %f4, %f6
3746 addxccc %g1, %g2, %g3
3747 fsrl32 %f2, %f4, %f8
3748 fnaddd %f10, %f12, %f14],,
3749 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3750 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3752 gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3753 gcc_cv_as_sparc_sparc4,,
3756 .register %g2, #scratch
3757 .register %g3, #scratch
3760 1: cwbneg %g2, %g3, 1f
3763 aes_kexpand0 %f4, %f6, %f8
3764 des_round %f38, %f40, %f42, %f44
3765 camellia_f %f54, %f56, %f58, %f60
3766 kasumi_fi_xor %f46, %f48, %f50, %f52],,
3767 [AC_DEFINE(HAVE_AS_SPARC4, 1,
3768 [Define if your assembler supports SPARC4 instructions.])])
3770 gcc_GAS_CHECK_FEATURE([LEON instructions],
3771 gcc_cv_as_sparc_leon,,
3774 .register %g2, #scratch
3775 .register %g3, #scratch
3779 cas [[%g2]], %g3, %g1],,
3780 [AC_DEFINE(HAVE_AS_LEON, 1,
3781 [Define if your assembler supports LEON instructions.])])
3785 i[34567]86-*-* | x86_64-*-*)
3789 # Full C++ conformance when using a shared libstdc++-v3 requires some
3790 # support from the Cygwin DLL, which in more recent versions exports
3791 # wrappers to aid in interposing and redirecting operators new, delete,
3792 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
3793 # are configuring for a version of Cygwin that exports the wrappers.
3794 if test x$host = x$target && test x$host_cpu = xi686; then
3795 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3797 # Can't check presence of libc functions during cross-compile, so
3798 # we just have to assume we're building for an up-to-date target.
3799 gcc_ac_cygwin_dll_wrappers=yes
3801 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3802 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3803 [Define if you want to generate code by default that assumes that the
3804 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3807 cygwin* | pe | mingw32* | interix*)
3808 # Recent binutils allows the three-operand form of ".comm" on PE. This
3809 # definition is used unconditionally to initialise the default state of
3810 # the target option variable that governs usage of the feature.
3811 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3812 [2,19,52],,[.comm foo,1,32])
3813 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3814 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3815 [Define if your assembler supports specifying the alignment
3816 of objects allocated using the GAS .comm command.])
3817 # Used for DWARF 2 in PE
3818 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3819 gcc_cv_as_ix86_pe_secrel32,
3825 [if test x$gcc_cv_ld != x \
3826 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3827 gcc_cv_as_ix86_pe_secrel32=yes
3830 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3831 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3832 # Test if the assembler supports the extended form of the .section
3833 # directive that specifies section alignment. LTO support uses this,
3834 # but normally only after installation, so we warn but don't fail the
3835 # configure if LTO is enabled but the assembler does not support it.
3836 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3837 [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3838 if test x$gcc_cv_as_section_has_align != xyes; then
3839 case ",$enable_languages," in
3841 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3845 # Test if the assembler supports the section flag 'e' for specifying
3846 # an excluded section.
3847 gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3851 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3852 [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3853 [Define if your assembler supports specifying the section flag e.])
3857 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3858 gcc_cv_as_ix86_filds,,,
3859 [filds mem; fists mem],,
3860 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3861 [Define if your assembler uses filds and fists mnemonics.])])
3863 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3864 gcc_cv_as_ix86_fildq,,,
3865 [fildq mem; fistpq mem],,
3866 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3867 [Define if your assembler uses fildq and fistq mnemonics.])])
3869 gcc_GAS_CHECK_FEATURE([cmov syntax],
3870 gcc_cv_as_ix86_cmov_sun_syntax,,,
3871 [cmovl.l %edx, %eax],,
3872 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3873 [Define if your assembler supports the Sun syntax for cmov.])])
3875 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3876 gcc_cv_as_ix86_ffreep,,,
3878 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3879 [Define if your assembler supports the ffreep mnemonic.])])
3881 gcc_GAS_CHECK_FEATURE([.quad directive],
3882 gcc_cv_as_ix86_quad,,,
3884 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3885 [Define if your assembler supports the .quad directive.])])
3887 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3888 gcc_cv_as_ix86_sahf,,,
3891 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3892 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3894 gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
3895 gcc_cv_as_ix86_interunit_movq,,,
3899 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
3900 [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
3901 [Define if your assembler supports interunit movq mnemonic.])
3903 gcc_GAS_CHECK_FEATURE([hle prefixes],
3904 gcc_cv_as_ix86_hle,,,
3905 [lock xacquire cmpxchg %esi, (%ecx)],,
3906 [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3907 [Define if your assembler supports HLE prefixes.])])
3909 gcc_GAS_CHECK_FEATURE([swap suffix],
3910 gcc_cv_as_ix86_swap,,,
3911 [movl.s %esp, %ebp],,
3912 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3913 [Define if your assembler supports the swap suffix.])])
3915 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3916 gcc_cv_as_ix86_diff_sect_delta,,,
3924 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3925 [Define if your assembler supports the subtraction of symbols in different sections.])])
3927 # These two are used unconditionally by i386.[ch]; it is to be defined
3928 # to 1 if the feature is present, 0 otherwise.
3929 as_ix86_gotoff_in_data_opt=
3930 if test x$gas = xyes; then
3931 as_ix86_gotoff_in_data_opt="--32"
3933 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3934 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
3935 [$as_ix86_gotoff_in_data_opt],
3941 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3942 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3943 [Define true if the assembler supports '.long foo@GOTOFF'.])
3945 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3946 gcc_cv_as_ix86_rep_lock_prefix,,,
3952 lock addl %edi, (%eax,%esi)
3953 lock orl $0, (%esp)],,
3954 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3955 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3957 gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
3958 gcc_cv_as_ix86_ud2,,,
3960 [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
3961 [Define if your assembler supports the 'ud2' mnemonic.])])
3963 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3964 gcc_cv_as_ix86_tlsgdplt,,,
3965 [call tls_gd@tlsgdplt],
3966 [if test x$gcc_cv_ld != x \
3967 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3968 gcc_cv_as_ix86_tlsgdplt=yes
3971 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3972 [Define if your assembler and linker support @tlsgdplt.])])
3975 .section .tdata,"aw'$tls_section_flag'",@progbits
3977 .section .text,"ax",@progbits
3978 call tls_ld@tlsldmplt'
3979 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3980 gcc_cv_as_ix86_tlsldmplt,,,
3982 [if test x$gcc_cv_ld != x \
3983 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3984 gcc_cv_as_ix86_tlsldmplt=yes
3987 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
3988 [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
3989 [Define to 1 if your assembler and linker support @tlsldmplt.])
3991 # Enforce 32-bit output with gas and gld.
3992 if test x$gas = xyes; then
3993 as_ix86_tls_ldm_opt="--32"
3995 if echo "$ld_ver" | grep GNU > /dev/null; then
3996 if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
3997 ld_ix86_tls_ldm_opt="-melf_i386_sol2"
3999 ld_ix86_tls_ldm_opt="-melf_i386"
4003 .section .text,"ax",@progbits
4005 .type _start, @function
4007 leal value@tlsldm(%ebx), %eax
4008 call ___tls_get_addr@plt
4010 .section .tdata,"aw'$tls_section_flag'",@progbits
4011 .type value, @object
4013 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4014 gcc_cv_as_ix86_tlsldm,,
4015 [$as_ix86_tls_ldm_opt],
4017 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4018 && $gcc_cv_ld $ld_ix86_tls_ldm_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4019 if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4020 || dis conftest 2>/dev/null | grep nop > /dev/null; then
4021 gcc_cv_as_ix86_tlsldm=yes
4025 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4026 [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4027 [Define to 1 if your assembler and linker support @tlsldm.])
4032 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4033 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4035 addl r15 = @ltoffx(x#), gp
4037 ld8.mov r16 = [[r15]], x#],,
4038 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4039 [Define if your assembler supports ltoffx and ldxmov relocations.])])
4045 *-*-aix*) conftest_s=' .machine "pwr5"
4049 gcc_GAS_CHECK_FEATURE([.machine directive support],
4050 gcc_cv_as_machine_directive,,,
4051 [ .machine ppc7400])
4052 if test x$gcc_cv_as_machine_directive != xyes; then
4053 echo "*** This target requires an assembler supporting \".machine\"" >&2
4054 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4055 test x$build = x$target && exit 1
4059 *) conftest_s=' .machine power4
4064 gcc_GAS_CHECK_FEATURE([mfcr field support],
4065 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4067 [AC_DEFINE(HAVE_AS_MFCRF, 1,
4068 [Define if your assembler supports mfcr field.])])
4071 *-*-aix*) conftest_s=' .machine "pwr5"
4074 *) conftest_s=' .machine power5
4079 gcc_GAS_CHECK_FEATURE([popcntb support],
4080 gcc_cv_as_powerpc_popcntb, [2,17,0],,
4082 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4083 [Define if your assembler supports popcntb field.])])
4086 *-*-aix*) conftest_s=' .machine "pwr5x"
4089 *) conftest_s=' .machine power5
4094 gcc_GAS_CHECK_FEATURE([fp round support],
4095 gcc_cv_as_powerpc_fprnd, [2,17,0],,
4097 [AC_DEFINE(HAVE_AS_FPRND, 1,
4098 [Define if your assembler supports fprnd.])])
4101 *-*-aix*) conftest_s=' .machine "pwr6"
4104 *) conftest_s=' .machine power6
4109 gcc_GAS_CHECK_FEATURE([move fp gpr support],
4110 gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4112 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4113 [Define if your assembler supports mffgpr and mftgpr.])])
4116 *-*-aix*) conftest_s=' .csect .text[[PR]]
4118 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4122 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4123 *) conftest_s=' .text
4125 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4128 gcc_GAS_CHECK_FEATURE([rel16 relocs],
4129 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4131 [AC_DEFINE(HAVE_AS_REL16, 1,
4132 [Define if your assembler supports R_PPC_REL16 relocs.])])
4135 *-*-aix*) conftest_s=' .machine "pwr6"
4138 *) conftest_s=' .machine power6
4143 gcc_GAS_CHECK_FEATURE([compare bytes support],
4144 gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4146 [AC_DEFINE(HAVE_AS_CMPB, 1,
4147 [Define if your assembler supports cmpb.])])
4150 *-*-aix*) conftest_s=' .machine "pwr6"
4153 *) conftest_s=' .machine power6
4158 gcc_GAS_CHECK_FEATURE([decimal float support],
4159 gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4161 [AC_DEFINE(HAVE_AS_DFP, 1,
4162 [Define if your assembler supports DFP instructions.])])
4165 *-*-aix*) conftest_s=' .machine "pwr7"
4168 *) conftest_s=' .machine power7
4173 gcc_GAS_CHECK_FEATURE([vector-scalar support],
4174 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4176 [AC_DEFINE(HAVE_AS_VSX, 1,
4177 [Define if your assembler supports VSX instructions.])])
4180 *-*-aix*) conftest_s=' .machine "pwr7"
4183 *) conftest_s=' .machine power7
4188 gcc_GAS_CHECK_FEATURE([popcntd support],
4189 gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4191 [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4192 [Define if your assembler supports POPCNTD instructions.])])
4195 *-*-aix*) conftest_s=' .machine "pwr8"
4196 .csect .text[[PR]]';;
4197 *) conftest_s=' .machine power8
4201 gcc_GAS_CHECK_FEATURE([power8 support],
4202 gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4204 [AC_DEFINE(HAVE_AS_POWER8, 1,
4205 [Define if your assembler supports POWER8 instructions.])])
4208 *-*-aix*) conftest_s=' .csect .text[[PR]]
4210 *) conftest_s=' .text
4214 gcc_GAS_CHECK_FEATURE([lwsync support],
4215 gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4217 [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4218 [Define if your assembler supports LWSYNC instructions.])])
4221 *-*-aix*) conftest_s=' .machine "476"
4224 *) conftest_s=' .machine "476"
4229 gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4230 gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4232 [AC_DEFINE(HAVE_AS_DCI, 1,
4233 [Define if your assembler supports the DCI/ICI instructions.])])
4235 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4236 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4237 [.gnu_attribute 4,1],,
4238 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4239 [Define if your assembler supports .gnu_attribute.])])
4241 gcc_GAS_CHECK_FEATURE([tls marker support],
4242 gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4243 [ bl __tls_get_addr(x@tlsgd)],,
4244 [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4245 [Define if your assembler supports arg info for __tls_get_addr.])])
4249 gcc_GAS_CHECK_FEATURE([.ref support],
4250 gcc_cv_as_aix_ref, [2,21,0],,
4251 [ .csect stuff[[rw]]
4257 [AC_DEFINE(HAVE_AS_REF, 1,
4258 [Define if your assembler supports .ref])])
4264 gcc_GAS_CHECK_FEATURE([explicit relocation support],
4265 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4266 [ lw $4,%gp_rel(foo)($4)],,
4267 [if test x$target_cpu_default = x
4268 then target_cpu_default=MASK_EXPLICIT_RELOCS
4269 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4271 gcc_GAS_CHECK_FEATURE([-mno-shared support],
4272 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4273 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4274 [Define if the assembler understands -mno-shared.])])
4276 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4277 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4278 [.gnu_attribute 4,1],,
4279 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4280 [Define if your assembler supports .gnu_attribute.])])
4282 gcc_GAS_CHECK_FEATURE([.micromips support],
4283 gcc_cv_as_micromips_support,,[--fatal-warnings],
4285 [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4286 [Define if your assembler supports the .set micromips directive])])
4288 gcc_GAS_CHECK_FEATURE([.dtprelword support],
4289 gcc_cv_as_mips_dtprelword, [2,18,0],,
4290 [.section .tdata,"awT",@progbits
4294 .dtprelword x+0x8000],,
4295 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4296 [Define if your assembler supports .dtprelword.])])
4298 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4299 gcc_cv_as_mips_dspr1_mult,,,
4309 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4310 [Define if your assembler supports DSPR1 mult.])])
4312 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4313 gcc_cv_as_ld_jalr_reloc=no
4314 if test $gcc_cv_as_mips_explicit_relocs = yes; then
4315 if test $in_tree_ld = yes ; then
4316 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 \
4317 && test $in_tree_ld_is_elf = yes; then
4318 gcc_cv_as_ld_jalr_reloc=yes
4320 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4321 echo ' .ent x' > conftest.s
4322 echo 'x: ld $2,%got_disp(y)($3)' >> conftest.s
4323 echo ' ld $25,%call16(y)($28)' >> conftest.s
4324 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
4325 echo '1: jalr $25' >> conftest.s
4326 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
4327 echo '1: jalr $25' >> conftest.s
4328 echo ' .end x' >> conftest.s
4329 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4330 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4331 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4332 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4333 gcc_cv_as_ld_jalr_reloc=yes
4339 if test $gcc_cv_as_ld_jalr_reloc = yes; then
4340 if test x$target_cpu_default = x; then
4341 target_cpu_default=MASK_RELAX_PIC_CALLS
4343 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4346 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4348 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4349 [gcc_cv_ld_mips_personality_relaxation],
4350 [gcc_cv_ld_mips_personality_relaxation=no
4351 if test $in_tree_ld = yes ; then
4352 if test "$gcc_cv_gld_major_version" -eq 2 \
4353 -a "$gcc_cv_gld_minor_version" -ge 21 \
4354 -o "$gcc_cv_gld_major_version" -gt 2; then
4355 gcc_cv_ld_mips_personality_relaxation=yes
4357 elif test x$gcc_cv_as != x \
4358 -a x$gcc_cv_ld != x \
4359 -a x$gcc_cv_readelf != x ; then
4360 cat > conftest.s <<EOF
4362 .cfi_personality 0x80,indirect_ptr
4369 .section .data,"aw",@progbits
4373 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4374 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4375 if $gcc_cv_readelf -d conftest 2>&1 \
4376 | grep TEXTREL > /dev/null 2>&1; then
4378 elif $gcc_cv_readelf --relocs conftest 2>&1 \
4379 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4382 gcc_cv_ld_mips_personality_relaxation=yes
4386 rm -f conftest.s conftest.o conftest])
4387 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4388 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4389 [Define if your linker can relax absolute .eh_frame personality
4390 pointers into PC-relative form.])
4393 gcc_GAS_CHECK_FEATURE([-mnan= support],
4394 gcc_cv_as_mips_nan,,
4396 [AC_DEFINE(HAVE_AS_NAN, 1,
4397 [Define if the assembler understands -mnan=.])])
4398 if test x$gcc_cv_as_mips_nan = xno \
4399 && test x$with_nan != x; then
4401 [Requesting --with-nan= requires assembler support for -mnan=])
4406 # Mips and HP-UX need the GNU assembler.
4407 # Linux on IA64 might be able to use the Intel assembler.
4410 mips*-*-* | *-*-hpux* )
4411 if test x$gas_flag = xyes \
4412 || test x"$host" != x"$build" \
4413 || test ! -x "$gcc_cv_as" \
4414 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4417 echo "*** This configuration requires the GNU assembler" >&2
4423 # ??? Not all targets support dwarf2 debug_line, even within a version
4424 # of gas. Moreover, we need to emit a valid instruction to trigger any
4425 # info to the output file. So, as supported targets are added to gas 2.11,
4426 # add some instruction here to (also) show we expect this might work.
4427 # ??? Once 2.11 is released, probably need to add first known working
4428 # version to the per-target configury.
4430 aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4431 | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4432 | xstormy16 | xtensa)
4442 if test x"$insn" != x; then
4444 .file 1 \"conftest.s\"
4447 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4448 gcc_cv_as_dwarf2_debug_line,
4449 [elf,2,11,0],, [$conftest_s],
4450 [if test x$gcc_cv_objdump != x \
4451 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4452 | grep debug_line > /dev/null 2>&1; then
4453 gcc_cv_as_dwarf2_debug_line=yes
4456 # The .debug_line file table must be in the exact order that
4457 # we specified the files, since these indices are also used
4458 # by DW_AT_decl_file. Approximate this test by testing if
4459 # the assembler bitches if the same index is assigned twice.
4460 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4461 gcc_cv_as_dwarf2_file_buggy,,,
4465 if test $gcc_cv_as_dwarf2_debug_line = yes \
4466 && test $gcc_cv_as_dwarf2_file_buggy = no; then
4467 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4468 [Define if your assembler supports dwarf2 .file/.loc directives,
4469 and preserves file table indices exactly as given.])
4472 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4473 gcc_cv_as_gdwarf2_flag,
4474 [elf,2,11,0], [--gdwarf2], [$insn],,
4475 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4476 [Define if your assembler supports the --gdwarf2 option.])])
4478 gcc_GAS_CHECK_FEATURE([--gstabs option],
4479 gcc_cv_as_gstabs_flag,
4480 [elf,2,11,0], [--gstabs], [$insn],,
4481 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4482 [Define if your assembler supports the --gstabs option.])])
4484 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4485 gcc_cv_as_debug_prefix_map_flag,
4486 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4487 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4488 [Define if your assembler supports the --debug-prefix-map option.])])
4491 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4494 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4495 [Define if your assembler supports .lcomm with an alignment field.])])
4497 if test x$with_sysroot = x && test x$host = x$target \
4498 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4499 && test "$prefix" != "NONE"; then
4500 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4501 [Define to PREFIX/include if cpp should also search that directory.])
4504 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4505 if test "x$with_headers" != x; then
4506 target_header_dir=$with_headers
4507 elif test "x$with_sysroot" = x; then
4508 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
4509 elif test "x$with_build_sysroot" != "x"; then
4510 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4511 elif test "x$with_sysroot" = xyes; then
4512 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4514 target_header_dir="${with_sysroot}${native_system_header_dir}"
4517 target_header_dir=${native_system_header_dir}
4520 # Determine the version of glibc, if any, used on the target.
4521 AC_MSG_CHECKING([for target glibc version])
4522 AC_ARG_WITH([glibc-version],
4523 [AS_HELP_STRING([--with-glibc-version=M.N],
4524 [assume GCC used with glibc version M.N or later])], [
4525 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4526 glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4527 glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4529 AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4531 glibc_version_major=0
4532 glibc_version_minor=0
4533 [if test -f $target_header_dir/features.h \
4534 && glibc_version_major_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+[0-9]' $target_header_dir/features.h` \
4535 && glibc_version_minor_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+[0-9]' $target_header_dir/features.h`; then
4536 glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[ ]*//'`
4537 glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[ ]*//'`
4539 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4541 AC_ARG_ENABLE(gnu-unique-object,
4542 [AS_HELP_STRING([--enable-gnu-unique-object],
4543 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4544 [case $enable_gnu_unique_object in
4546 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4547 Valid choices are 'yes' and 'no'.]) ;;
4549 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4551 [.type foo, '$target_type_format_char'gnu_unique_object],,
4552 # We need to unquote above to to use the definition from config.gcc.
4553 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4554 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4556 if test x$enable_gnu_unique_object = xyes; then
4557 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4558 [Define if your assembler supports @gnu_unique_object.])
4561 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4562 [gcc_cv_as_line_zero],
4563 [gcc_cv_as_line_zero=no
4564 if test $in_tree_gas = yes; then
4565 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4566 elif test "x$gcc_cv_as" != x; then
4567 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4568 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4569 test "x`cat conftest.out`" = x
4571 gcc_cv_as_line_zero=yes
4573 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4574 cat conftest.s >&AS_MESSAGE_LOG_FD
4575 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4576 cat conftest.out >&AS_MESSAGE_LOG_FD
4578 rm -f conftest.o conftest.s conftest.out
4580 if test "x$gcc_cv_as_line_zero" = xyes; then
4581 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4582 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4585 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4586 gcc_cv_ld_eh_frame_hdr=no
4587 if test $in_tree_ld = yes ; then
4588 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 \
4589 && test $in_tree_ld_is_elf = yes; then
4590 gcc_cv_ld_eh_frame_hdr=yes
4592 elif test x$gcc_cv_ld != x; then
4593 if echo "$ld_ver" | grep GNU > /dev/null; then
4594 # Check if linker supports --eh-frame-hdr option
4595 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4596 gcc_cv_ld_eh_frame_hdr=yes
4601 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4602 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4603 gcc_cv_ld_eh_frame_hdr=yes
4609 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4610 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4611 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4612 [Define if your linker supports .eh_frame_hdr.])
4614 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4616 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4617 gcc_cv_ld_eh_frame_ciev3=no
4618 if test $in_tree_ld = yes ; then
4619 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 \
4620 && test $in_tree_ld_is_elf = yes; then
4621 gcc_cv_ld_eh_frame_ciev3=yes
4623 elif test x$gcc_cv_ld != x; then
4624 if echo "$ld_ver" | grep GNU > /dev/null; then
4625 gcc_cv_ld_eh_frame_ciev3=yes
4626 if test 0"$ld_date" -lt 20040513; then
4627 if test -n "$ld_date"; then
4628 # If there was date string, but was earlier than 2004-05-13, fail
4629 gcc_cv_ld_eh_frame_ciev3=no
4630 elif test "$ld_vers_major" -lt 2; then
4631 gcc_cv_ld_eh_frame_ciev3=no
4632 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4633 gcc_cv_ld_eh_frame_ciev3=no
4639 # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4640 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4641 gcc_cv_ld_eh_frame_ciev3=yes
4647 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4648 [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4649 [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4650 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4652 AC_MSG_CHECKING(linker position independent executable support)
4654 if test $in_tree_ld = yes ; then
4655 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 \
4656 && test $in_tree_ld_is_elf = yes; then
4659 elif test x$gcc_cv_ld != x; then
4660 # Check if linker supports -pie option
4661 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4665 if test x"$gcc_cv_ld_pie" = xyes; then
4666 AC_DEFINE(HAVE_LD_PIE, 1,
4667 [Define if your linker supports -pie option.])
4669 AC_MSG_RESULT($gcc_cv_ld_pie)
4671 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4672 gcc_cv_ld_eh_gc_sections=no
4673 if test $in_tree_ld = yes ; then
4674 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 \
4675 && test $in_tree_ld_is_elf = yes; then
4676 gcc_cv_ld_eh_gc_sections=yes
4678 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4679 cat > conftest.s <<EOF
4682 .type _start, @function
4685 .size _start, .-_start
4686 .section .text.foo,"ax",@progbits
4687 .type foo, @function
4691 .section .gcc_except_table.foo,"a",@progbits
4694 .section .eh_frame,"a",@progbits
4697 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4698 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4699 | grep "gc-sections option ignored" > /dev/null; then
4700 gcc_cv_ld_eh_gc_sections=no
4701 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4702 | grep gcc_except_table > /dev/null; then
4703 gcc_cv_ld_eh_gc_sections=yes
4704 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4705 if test x$gcc_cv_as_comdat_group != xyes; then
4706 gcc_cv_ld_eh_gc_sections=no
4707 cat > conftest.s <<EOF
4710 .type _start, @function
4713 .size _start, .-_start
4714 .section .gnu.linkonce.t.foo,"ax",@progbits
4715 .type foo, @function
4719 .section .gcc_except_table.foo,"a",@progbits
4722 .section .eh_frame,"a",@progbits
4725 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4726 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4727 | grep "gc-sections option ignored" > /dev/null; then
4728 gcc_cv_ld_eh_gc_sections=no
4729 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4730 | grep gcc_except_table > /dev/null; then
4731 gcc_cv_ld_eh_gc_sections=yes
4737 rm -f conftest.s conftest.o conftest
4741 # ??? This apparently exposes a binutils bug with PC-relative relocations.
4742 gcc_cv_ld_eh_gc_sections=no
4745 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4746 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4747 [Define if your linker supports garbage collection of
4748 sections in presence of EH frames.])
4750 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4752 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4753 gcc_cv_ld_eh_gc_sections_bug=no
4754 if test $in_tree_ld = yes ; then
4755 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 \
4756 && test $in_tree_ld_is_elf = yes; then
4757 gcc_cv_ld_eh_gc_sections_bug=yes
4759 elif 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
4760 gcc_cv_ld_eh_gc_sections_bug=yes
4761 cat > conftest.s <<EOF
4764 .type _start, @function
4767 .size _start, .-_start
4768 .section .text.startup.foo,"ax",@progbits
4769 .type foo, @function
4773 .section .gcc_except_table.foo,"a",@progbits
4776 .section .eh_frame,"a",@progbits
4779 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4780 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4781 | grep "gc-sections option ignored" > /dev/null; then
4783 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4784 | grep gcc_except_table > /dev/null; then
4785 gcc_cv_ld_eh_gc_sections_bug=no
4788 rm -f conftest.s conftest.o conftest
4790 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4791 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4792 [Define if your linker has buggy garbage collection of
4793 sections support when .text.startup.foo like sections are used.])
4795 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4801 AC_CACHE_CHECK(linker --as-needed support,
4802 gcc_cv_ld_as_needed,
4803 [gcc_cv_ld_as_needed=no
4804 gcc_cv_ld_as_needed_option='--as-needed'
4805 gcc_cv_ld_no_as_needed_option='--no-as-needed'
4806 if test $in_tree_ld = yes ; then
4807 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 \
4808 && test $in_tree_ld_is_elf = yes; then
4809 gcc_cv_ld_as_needed=yes
4811 elif test x$gcc_cv_ld != x; then
4812 # Check if linker supports --as-needed and --no-as-needed options
4813 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4814 gcc_cv_ld_as_needed=yes
4817 # Solaris 2 ld always supports -z ignore/-z record.
4819 gcc_cv_ld_as_needed=yes
4820 gcc_cv_ld_as_needed_option="-z ignore"
4821 gcc_cv_ld_no_as_needed_option="-z record"
4826 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
4827 # dl_iterate_phdr, i.e. since Solaris 11.
4829 *-*-solaris2.1[[1-9]]*)
4831 i?86-*-* | x86_64-*-*)
4832 if echo "$ld_ver" | grep GNU > /dev/null; then
4833 # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
4834 gcc_cv_ld_as_needed=no
4840 gcc_cv_ld_as_needed=no
4844 if test x"$gcc_cv_ld_as_needed" = xyes; then
4845 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4846 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
4847 AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
4848 [Define to the linker option to ignore unused dependencies.])
4849 AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
4850 [Define to the linker option to keep unused dependencies.])
4853 case "$target:$tm_file" in
4854 powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4857 emul_name="-melf64lppc"
4860 emul_name="-melf64ppc"
4863 emul_name="-melf64ppc_fbsd"
4866 AC_CACHE_CHECK(linker support for omitting dot symbols,
4867 gcc_cv_ld_no_dot_syms,
4868 [gcc_cv_ld_no_dot_syms=no
4869 if test x"$ld_is_gold" = xyes; then
4870 gcc_cv_ld_no_dot_syms=yes
4871 elif test $in_tree_ld = yes ; then
4872 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
4873 gcc_cv_ld_no_dot_syms=yes
4875 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4876 cat > conftest1.s <<EOF
4880 cat > conftest2.s <<EOF
4881 .section ".opd","aw"
4886 .quad .LEfoo,.TOC.@tocbase,0
4892 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4893 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4894 && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4895 gcc_cv_ld_no_dot_syms=yes
4897 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4900 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4901 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4902 [Define if your PowerPC64 linker only needs function descriptor syms.])
4905 AC_CACHE_CHECK(linker large toc support,
4906 gcc_cv_ld_large_toc,
4907 [gcc_cv_ld_large_toc=no
4908 if test x"$ld_is_gold" = xyes; then
4909 gcc_cv_ld_large_toc=yes
4910 elif test $in_tree_ld = yes ; then
4911 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
4912 gcc_cv_ld_large_toc=yes
4914 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4915 cat > conftest.s <<EOF
4916 .section ".tbss","awT",@nobits
4922 addis 9,13,ie0@got@tprel@ha
4923 ld 9,ie0@got@tprel@l(9)
4925 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4926 && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4927 gcc_cv_ld_large_toc=yes
4929 rm -f conftest conftest.o conftest.s
4932 if test x"$gcc_cv_ld_large_toc" = xyes; then
4933 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4934 [Define if your PowerPC64 linker supports a large TOC.])
4941 AC_CACHE_CHECK(linker large toc support,
4942 gcc_cv_ld_large_toc,
4943 [gcc_cv_ld_large_toc=no
4944 if test x$gcc_cv_as != x ; then
4945 cat > conftest.s <<EOF
4955 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
4956 gcc_cv_ld_large_toc=yes
4958 rm -f conftest conftest.o conftest.s
4961 if test x"$gcc_cv_ld_large_toc" = xyes; then
4962 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4963 [Define if your PowerPC64 linker supports a large TOC.])
4968 AC_CACHE_CHECK(linker --build-id support,
4970 [gcc_cv_ld_buildid=no
4971 if test $in_tree_ld = yes ; then
4972 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4973 "$gcc_cv_gld_minor_version" -ge 18 -o \
4974 "$gcc_cv_gld_major_version" -gt 2 \
4975 && test $in_tree_ld_is_elf = yes; then
4976 gcc_cv_ld_buildid=yes
4978 elif test x$gcc_cv_ld != x; then
4979 if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4980 gcc_cv_ld_buildid=yes
4983 if test x"$gcc_cv_ld_buildid" = xyes; then
4984 AC_DEFINE(HAVE_LD_BUILDID, 1,
4985 [Define if your linker supports --build-id.])
4988 AC_ARG_ENABLE(linker-build-id,
4989 [AS_HELP_STRING([--enable-linker-build-id],
4990 [compiler will always pass --build-id to linker])],
4992 enable_linker_build_id=no)
4994 if test x"$enable_linker_build_id" = xyes; then
4995 if test x"$gcc_cv_ld_buildid" = xyes; then
4996 AC_DEFINE(ENABLE_LD_BUILDID, 1,
4997 [Define if gcc should always pass --build-id to linker.])
4999 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5003 # In binutils 2.21, GNU ld gained support for new emulations fully
5004 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
5005 AC_CACHE_CHECK(linker *_sol2 emulation support,
5006 gcc_cv_ld_sol2_emulation,
5007 [gcc_cv_ld_sol2_emulation=no
5008 if test $in_tree_ld = yes ; then
5009 if test "$gcc_cv_gld_major_version" -eq 2 -a \
5010 "$gcc_cv_gld_minor_version" -ge 21 -o \
5011 "$gcc_cv_gld_major_version" -gt 2 \
5012 && test $in_tree_ld_is_elf = yes; then
5013 gcc_cv_ld_sol2_emulation=yes
5015 elif test x$gcc_cv_ld != x; then
5016 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5017 grep _sol2 > /dev/null; then
5018 gcc_cv_ld_sol2_emulation=yes
5021 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5022 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5023 [Define if your linker supports the *_sol2 emulations.])
5026 AC_CACHE_CHECK(linker --sysroot support,
5028 [gcc_cv_ld_sysroot=no
5029 if test $in_tree_ld = yes ; then
5030 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
5031 gcc_cv_ld_sysroot=yes
5033 elif test x$gcc_cv_ld != x; then
5034 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5035 gcc_cv_ld_sysroot=yes
5038 if test x"$gcc_cv_ld_sysroot" = xyes; then
5039 AC_DEFINE(HAVE_LD_SYSROOT, 1,
5040 [Define if your linker supports --sysroot.])
5043 # Test for stack protector support in target C library.
5044 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5045 gcc_cv_libc_provides_ssp,
5046 [gcc_cv_libc_provides_ssp=no
5048 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5049 # glibc 2.4 and later provides __stack_chk_fail and
5050 # either __stack_chk_guard, or TLS access to stack guard canary.
5051 GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5052 [if test -f $target_header_dir/features.h \
5053 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
5054 $target_header_dir/features.h > /dev/null; then
5055 if $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
5056 $target_header_dir/features.h > /dev/null && \
5057 test -f $target_header_dir/bits/uClibc_config.h && \
5058 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
5059 $target_header_dir/bits/uClibc_config.h > /dev/null; then
5060 gcc_cv_libc_provides_ssp=yes
5062 # all versions of Bionic support stack protector
5063 elif test -f $target_header_dir/sys/cdefs.h \
5064 && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
5065 $target_header_dir/sys/cdefs.h > /dev/null; then
5066 gcc_cv_libc_provides_ssp=yes
5070 # Avoid complicated tests (see
5071 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5072 # simply assert that glibc does provide this, which is true for all
5073 # realistically usable GNU/Hurd configurations.
5074 gcc_cv_libc_provides_ssp=yes;;
5075 *-*-darwin* | *-*-freebsd*)
5076 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5077 [echo "no __stack_chk_fail on this target"])
5079 *) gcc_cv_libc_provides_ssp=no ;;
5082 if test x$gcc_cv_libc_provides_ssp = xyes; then
5083 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5084 [Define if your target C library provides stack protector support])
5087 # Test for <sys/sdt.h> on the target.
5088 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5089 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5091 if test -f $target_header_dir/sys/sdt.h; then
5093 AC_DEFINE(HAVE_SYS_SDT_H, 1,
5094 [Define if your target C library provides sys/sdt.h])
5096 AC_MSG_RESULT($have_sys_sdt_h)
5098 # Check if TFmode long double should be used by default or not.
5099 # Some glibc targets used DFmode long double, but with glibc 2.4
5100 # and later they can use TFmode.
5102 powerpc*-*-linux* | \
5106 AC_ARG_WITH(long-double-128,
5107 [AS_HELP_STRING([--with-long-double-128],
5108 [use 128-bit long double by default])],
5109 gcc_cv_target_ldbl128="$with_long_double_128",
5110 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5111 [gcc_cv_target_ldbl128=no
5112 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5113 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5114 && gcc_cv_target_ldbl128=yes
5118 if test x$gcc_cv_target_ldbl128 = xyes; then
5119 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5120 [Define if TFmode long double should be the default])
5123 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5124 gcc_cv_target_dl_iterate_phdr=unknown
5126 # Restrict to Solaris 11+. While most of the Solaris 11 linker changes
5127 # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5128 # libdl there, both complicating its use and breaking compatibility
5129 # between Solaris 10 updates.
5130 *-*-solaris2.1[[1-9]]*)
5131 # <link.h> needs both a dl_iterate_phdr declaration and support for
5132 # compilation with largefile support.
5133 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5134 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5135 gcc_cv_target_dl_iterate_phdr=yes
5137 gcc_cv_target_dl_iterate_phdr=no
5141 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5142 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5143 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5144 [Define if your target C library provides the `dl_iterate_phdr' function.])
5146 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5148 # We no longer support different GC mechanisms. Emit an error if
5149 # the user configures with --with-gc.
5151 [AS_HELP_STRING([--with-gc={page,zone}],
5152 [this option is not supported anymore. It used to choose
5153 the garbage collection mechanism to use with the compiler])],
5154 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5157 # Libraries to use on the host. This will normally be set by the top
5158 # level Makefile. Here we simply capture the value for our Makefile.
5159 if test -z "${HOST_LIBS+set}"; then
5164 # Use the system's zlib library.
5166 zlibinc="-I\$(srcdir)/../zlib"
5167 AC_ARG_WITH(system-zlib,
5168 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
5175 dnl Very limited version of automake's enable-maintainer-mode
5177 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5178 dnl maintainer-mode is disabled by default
5179 AC_ARG_ENABLE(maintainer-mode,
5180 [AS_HELP_STRING([--enable-maintainer-mode],
5181 [enable make rules and dependencies not useful
5182 (and sometimes confusing) to the casual installer])],
5183 maintainer_mode=$enableval,
5186 AC_MSG_RESULT($maintainer_mode)
5188 if test "$maintainer_mode" = "yes"; then
5195 dnl Whether to prevent multiple front-ends from linking at the same time
5197 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5198 AC_ARG_ENABLE(link-mutex,
5199 [AS_HELP_STRING([--enable-link-mutex],
5200 [avoid linking multiple front-ends at once to avoid thrashing
5201 on the build machine])],
5202 do_link_mutex=$enableval,
5204 AC_MSG_RESULT($do_link_mutex)
5206 if test "$do_link_mutex" = "yes"; then
5211 AC_SUBST(DO_LINK_MUTEX)
5217 # Make empty files to contain the specs and options for each language.
5218 # Then add #include lines to for a compiler that has specs and/or options.
5224 # These (without "all_") are set in each config-lang.in.
5225 # `language' must be a single word so is spelled singularly.
5228 all_outputs='Makefile'
5229 # List of language makefile fragments.
5231 # Additional files for gengtype
5232 all_gtfiles="$target_gtfiles"
5234 # These are the languages that are set in --enable-languages,
5235 # and are available in the GCC tree.
5236 all_selected_languages=
5238 # Add the language fragments.
5239 # Languages are added via two mechanisms. Some information must be
5240 # recorded in makefile variables, these are defined in config-lang.in.
5241 # We accumulate them and plug them into the main Makefile.
5242 # The other mechanism is a set of hooks for each of the main targets
5243 # like `clean', `install', etc.
5245 language_hooks="Make-hooks"
5247 for lang in ${srcdir}/*/config-lang.in
5250 test "$lang" = "${srcdir}/*/config-lang.in" && continue
5252 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
5253 if test "x$lang_alias" = x
5255 echo "$lang doesn't set \$language." 1>&2
5258 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5259 subdirs="$subdirs $subdir"
5261 # $gcc_subdir is where the gcc integration files are to be found
5262 # for a language, both for internal compiler purposes (compiler
5263 # sources implementing front-end to GCC tree converters), and for
5264 # build infrastructure purposes (Make-lang.in, etc.)
5266 # This will be <subdir> (relative to $srcdir) if a line like
5267 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5268 # is found in <langdir>/config-lang.in, and will remain <langdir>
5271 # Except for the language alias (fetched above), the regular
5272 # "config-lang.in" contents are always retrieved from $gcc_subdir,
5273 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5274 # only this and the language alias.
5276 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
5277 if [ "$gcc_subdir" = "" ]; then
5278 gcc_subdir="$subdir"
5281 case ",$enable_languages," in
5283 all_selected_languages="$all_selected_languages $lang_alias"
5284 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5285 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5297 . ${srcdir}/$gcc_subdir/config-lang.in
5298 if test "x$language" = x
5300 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5305 case ",$enable_languages," in
5308 for i in $subdir_requires; do
5309 test -f "${srcdir}/$i/config-lang.in" && continue
5317 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5318 if test -f $srcdir/$gcc_subdir/lang.opt; then
5319 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5320 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5322 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5323 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5325 all_languages="$all_languages $language"
5326 all_compilers="$all_compilers $compilers"
5327 all_outputs="$all_outputs $outputs"
5328 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5329 case ",$enable_languages," in
5331 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5333 AC_SUBST(enable_lto)
5340 for language in $all_selected_languages
5342 check_languages="$check_languages check-$language"
5345 # We link each language in with a set of hooks, reached indirectly via
5346 # lang.${target}. Only do so for selected languages.
5350 target_list="all.cross start.encap rest.encap tags \
5351 install-common install-man install-info install-pdf install-html dvi \
5352 pdf html uninstall info man srcextra srcman srcinfo \
5353 mostlyclean clean distclean maintainer-clean install-plugin"
5355 for t in $target_list
5358 for lang in $all_selected_languages
5362 echo "lang.$t: $x" >> Make-hooks
5366 # Option include files
5369 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5370 option_includes="option-includes.mk"
5371 AC_SUBST_FILE(option_includes)
5379 echo "dir ." > .gdbinit
5380 echo "dir ${srcdir}" >> .gdbinit
5381 if test x$gdb_needs_out_file_path = xyes
5383 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5385 if test "x$subdirs" != x; then
5388 echo "dir ${srcdir}/$s" >> .gdbinit
5391 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5392 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5394 # Put a breakpoint on __asan_report_error to help with debugging buffer
5397 *-fsanitize=address*)
5398 echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5402 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5403 AC_SUBST(gcc_tooldir)
5406 # Find a directory in which to install a shared libgcc.
5408 AC_ARG_ENABLE(version-specific-runtime-libs,
5409 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5410 [specify that runtime libraries should be
5411 installed in a compiler-specific directory])])
5413 # Substitute configuration variables
5416 AC_SUBST(all_compilers)
5417 AC_SUBST(all_gtfiles)
5418 AC_SUBST(all_lang_makefrags)
5419 AC_SUBST(all_languages)
5420 AC_SUBST(all_selected_languages)
5421 AC_SUBST(build_exeext)
5422 AC_SUBST(build_install_headers_dir)
5423 AC_SUBST(build_xm_file_list)
5424 AC_SUBST(build_xm_include_list)
5425 AC_SUBST(build_xm_defines)
5426 AC_SUBST(build_file_translate)
5427 AC_SUBST(check_languages)
5428 AC_SUBST(cpp_install_dir)
5429 AC_SUBST(xmake_file)
5430 AC_SUBST(tmake_file)
5431 AC_SUBST(TM_ENDIAN_CONFIG)
5432 AC_SUBST(TM_MULTILIB_CONFIG)
5433 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5434 AC_SUBST(extra_gcc_objs)
5435 AC_SUBST(user_headers_inc_next_pre)
5436 AC_SUBST(user_headers_inc_next_post)
5437 AC_SUBST(extra_headers_list)
5438 AC_SUBST(extra_objs)
5439 AC_SUBST(extra_programs)
5440 AC_SUBST(float_h_file)
5441 AC_SUBST(gcc_config_arguments)
5442 AC_SUBST(gcc_gxx_include_dir)
5443 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5444 AC_SUBST(host_exeext)
5445 AC_SUBST(host_xm_file_list)
5446 AC_SUBST(host_xm_include_list)
5447 AC_SUBST(host_xm_defines)
5448 AC_SUBST(out_host_hook_obj)
5450 AC_SUBST(lang_opt_files)
5451 AC_SUBST(lang_specs_files)
5452 AC_SUBST(lang_tree_files)
5453 AC_SUBST(local_prefix)
5455 AC_SUBST(objc_boehm_gc)
5457 AC_SUBST(out_object_file)
5458 AC_SUBST(common_out_file)
5459 AC_SUBST(common_out_object_file)
5460 AC_SUBST(tm_file_list)
5461 AC_SUBST(tm_include_list)
5462 AC_SUBST(tm_defines)
5463 AC_SUBST(tm_p_file_list)
5464 AC_SUBST(tm_p_include_list)
5465 AC_SUBST(xm_file_list)
5466 AC_SUBST(xm_include_list)
5467 AC_SUBST(xm_defines)
5468 AC_SUBST(use_gcc_stdint)
5469 AC_SUBST(c_target_objs)
5470 AC_SUBST(cxx_target_objs)
5471 AC_SUBST(fortran_target_objs)
5472 AC_SUBST(target_cpu_default)
5474 AC_SUBST_FILE(language_hooks)
5477 if test x${build} = x${host} ; then
5478 if test x${host} = x${target} ; then
5479 echo "Links are now set up to build a native compiler for ${target}." 1>&2
5481 echo "Links are now set up to build a cross-compiler" 1>&2
5482 echo " from ${host} to ${target}." 1>&2
5485 if test x${host} = x${target} ; then
5486 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5487 echo " for ${target}." 1>&2
5489 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5490 echo " from ${host} to ${target}." 1>&2
5494 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5495 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5497 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5498 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5500 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5501 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5502 if test "x${CLOOGLIBS}" != "x" ; then
5503 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5506 # Check for plugin support
5507 AC_ARG_ENABLE(plugin,
5508 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5509 enable_plugin=$enableval,
5510 enable_plugin=yes; default_plugin=yes)
5516 if test x$build = x$host; then
5517 export_sym_check="nm${exeext} -g"
5518 elif test x$host = x$target; then
5519 export_sym_check="$gcc_cv_nm -g"
5525 if test x$build = x$host; then
5526 export_sym_check="objdump${exeext} -T"
5527 elif test x$host = x$target; then
5528 export_sym_check="$gcc_cv_objdump -T"
5535 if test x"$enable_plugin" = x"yes"; then
5537 AC_MSG_CHECKING([for exported symbols])
5538 if test "x$export_sym_check" != x; then
5539 echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5540 ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5541 if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5542 : # No need to use a flag
5543 AC_MSG_RESULT([yes])
5545 AC_MSG_RESULT([yes])
5546 AC_MSG_CHECKING([for -rdynamic])
5547 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest$ac_exeext > /dev/null 2>&1
5548 if $export_sym_check conftest$ac_exeext | grep -q foobar > /dev/null; then
5550 pluginlibs="-rdynamic"
5555 AC_MSG_RESULT([$plugin_rdynamic])
5558 AC_MSG_RESULT([unable to check])
5563 AC_SEARCH_LIBS([dlopen], [dl])
5564 if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5565 pluginlibs="$pluginlibs -ldl"
5569 # Check that we can build shared objects with -fPIC -shared
5570 saved_LDFLAGS="$LDFLAGS"
5571 saved_CFLAGS="$CFLAGS"
5574 CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5575 CFLAGS="$CFLAGS -fPIC"
5576 LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5579 CFLAGS="$CFLAGS -fPIC"
5580 LDFLAGS="$LDFLAGS -fPIC -shared"
5583 AC_MSG_CHECKING([for -fPIC -shared])
5585 [extern int X;],[return X == 0;],
5586 [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5587 [AC_MSG_RESULT([no]); have_pic_shared=no])
5588 if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5592 LDFLAGS="$saved_LDFLAGS"
5593 CFLAGS="$saved_CFLAGS"
5595 # If plugin support had been requested but not available, fail.
5596 if test x"$enable_plugin" = x"no" ; then
5597 if test x"$default_plugin" != x"yes"; then
5599 Building GCC with plugin support requires a host that supports
5600 -fPIC, -shared, -ldl and -rdynamic.])
5605 AC_SUBST(pluginlibs)
5606 AC_SUBST(enable_plugin)
5607 if test x"$enable_plugin" = x"yes"; then
5608 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5612 # Enable --enable-host-shared
5613 AC_ARG_ENABLE(host-shared,
5614 [AS_HELP_STRING([--enable-host-shared],
5615 [build host code as shared libraries])],
5616 [PICFLAG=-fPIC], [PICFLAG=])
5617 AC_SUBST(enable_host_shared)
5621 AC_ARG_ENABLE(libquadmath-support,
5622 [AS_HELP_STRING([--disable-libquadmath-support],
5623 [disable libquadmath support for Fortran])],
5624 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5625 ENABLE_LIBQUADMATH_SUPPORT=yes)
5626 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5627 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5628 [Define to 1 to enable libquadmath support])
5632 # Specify what hash style to use by default.
5633 AC_ARG_WITH([linker-hash-style],
5634 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5635 [specify the linker hash style])],
5636 [case x"$withval" in
5638 LINKER_HASH_STYLE=sysv
5641 LINKER_HASH_STYLE=gnu
5644 LINKER_HASH_STYLE=both
5647 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5650 [LINKER_HASH_STYLE=''])
5651 if test x"${LINKER_HASH_STYLE}" != x; then
5652 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5653 [The linker hash style])
5656 # Configure the subdirectories
5657 # AC_CONFIG_SUBDIRS($subdirs)
5659 # Create the Makefile
5660 # and configure language subdirectories
5661 AC_CONFIG_FILES($all_outputs)
5663 AC_CONFIG_COMMANDS([default],
5665 case ${CONFIG_HEADERS} in
5666 *auto-host.h:config.in*)
5669 # Make sure all the subdirs exist.
5670 for d in $subdirs doc build common c-family
5672 test -d $d || mkdir $d
5675 [subdirs='$subdirs'])