2016-04-27 Hristian Kirtchev <kirtchev@adacore.com>
[official-gcc.git] / gcc / configure.ac
blob0328a2cd024b4185251cfcc2edfb6bf72534be9f
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright (C) 1997-2016 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
11 #version.
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 #for more details.
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 # --------------------------------
26 AC_PREREQ(2.64)
27 AC_INIT
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
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
38 # Determine the noncanonical target name, for directory use.
39 ACX_NONCANONICAL_TARGET
41 # Used for constructing correct paths for offload compilers.
42 real_target_noncanonical=${target_noncanonical}
43 accel_dir_suffix=
45 # Determine the target- and build-specific subdirectories
46 GCC_TOPLEV_SUBDIRS
48 # Set program_transform_name
49 AC_ARG_PROGRAM
51 # Check for bogus environment variables.
52 # Test if LIBRARY_PATH contains the notation for the current directory
53 # since this would lead to problems installing/building glibc.
54 # LIBRARY_PATH contains the current directory if one of the following
55 # is true:
56 # - one of the terminals (":" and ";") is the first or last sign
57 # - two terminals occur directly after each other
58 # - the path contains an element with a dot in it
59 AC_MSG_CHECKING(LIBRARY_PATH variable)
60 changequote(,)dnl
61 case ${LIBRARY_PATH} in
62   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
63     library_path_setting="contains current directory"
64     ;;
65   *)
66     library_path_setting="ok"
67     ;;
68 esac
69 changequote([,])dnl
70 AC_MSG_RESULT($library_path_setting)
71 if test "$library_path_setting" != "ok"; then
72 AC_MSG_ERROR([
73 *** LIBRARY_PATH shouldn't contain the current directory when
74 *** building gcc. Please change the environment variable
75 *** and run configure again.])
78 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
79 # since this would lead to problems installing/building glibc.
80 # GCC_EXEC_PREFIX contains the current directory if one of the following
81 # is true:
82 # - one of the terminals (":" and ";") is the first or last sign
83 # - two terminals occur directly after each other
84 # - the path contains an element with a dot in it
85 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
86 changequote(,)dnl
87 case ${GCC_EXEC_PREFIX} in
88   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
89     gcc_exec_prefix_setting="contains current directory"
90     ;;
91   *)
92     gcc_exec_prefix_setting="ok"
93     ;;
94 esac
95 changequote([,])dnl
96 AC_MSG_RESULT($gcc_exec_prefix_setting)
97 if test "$gcc_exec_prefix_setting" != "ok"; then
98 AC_MSG_ERROR([
99 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
100 *** building gcc. Please change the environment variable
101 *** and run configure again.])
104 # -----------
105 # Directories
106 # -----------
108 # Specify the local prefix
109 local_prefix=
110 AC_ARG_WITH(local-prefix,
111 [AS_HELP_STRING([--with-local-prefix=DIR],
112                 [specifies directory to put local include])],
113 [case "${withval}" in
114 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
115 no)     ;;
116 *)      local_prefix=$with_local_prefix ;;
117 esac])
119 # Default local prefix if it is empty
120 if test x$local_prefix = x; then
121         local_prefix=/usr/local
124 AC_ARG_WITH([native-system-header-dir],
125   [  --with-native-system-header-dir=dir
126                           use dir as the directory to look for standard
127                           system header files in.  Defaults to /usr/include.],
129  case ${with_native_system_header_dir} in
130  yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
131  /* | [[A-Za-z]]:[[\\/]]*) ;;
132  *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
133  esac
134  configured_native_system_header_dir="${withval}"
135 ], [configured_native_system_header_dir=])
137 AC_ARG_WITH(build-sysroot, 
138   [AS_HELP_STRING([--with-build-sysroot=sysroot],
139                   [use sysroot as the system root during the build])],
140   [if test x"$withval" != x ; then
141      SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
142    fi],
143   [SYSROOT_CFLAGS_FOR_TARGET=])
144 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
146 if test "x$prefix" = xNONE; then
147  test_prefix=/usr/local
148 else
149  test_prefix=$prefix
151 if test "x$exec_prefix" = xNONE; then
152  test_exec_prefix=$test_prefix
153 else
154  test_exec_prefix=$exec_prefix
157 AC_ARG_WITH(sysroot,
158 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
159                 [search for usr/lib, usr/include, et al, within DIR])],
161  case ${with_sysroot} in
162  /) ;;
163  */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
164  esac
165  case ${with_sysroot} in
166  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
167  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
168  esac
169    
170  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
171  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
172         
173  case ${TARGET_SYSTEM_ROOT} in
174  "${test_prefix}"|"${test_prefix}/"*|\
175  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
176  '${prefix}'|'${prefix}/'*|\
177  '${exec_prefix}'|'${exec_prefix}/'*)
178    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
179    TARGET_SYSTEM_ROOT_DEFINE="$t"
180    ;;
181  esac
182 ], [
183  TARGET_SYSTEM_ROOT=
184  TARGET_SYSTEM_ROOT_DEFINE=
185  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
187 AC_SUBST(TARGET_SYSTEM_ROOT)
188 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
189 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
191 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
192 # passed in by the toplevel make and thus we'd get different behavior
193 # depending on where we built the sources.
194 gcc_gxx_include_dir=
195 # Specify the g++ header file directory
196 AC_ARG_WITH(gxx-include-dir,
197 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
198                 [specifies directory to put g++ header files])],
199 [case "${withval}" in
200 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
201 no)     ;;
202 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
203 esac])
205 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
206 if test x${gcc_gxx_include_dir} = x; then
207   if test x${enable_version_specific_runtime_libs} = xyes; then
208     gcc_gxx_include_dir='${libsubdir}/include/c++'
209   else
210     libstdcxx_incdir='include/c++/$(version)'
211     if test x$host != x$target; then
212        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
213     fi
214     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
215   fi
218 gcc_gxx_include_dir_add_sysroot=0
219 if test "${with_sysroot+set}" = set; then
220   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
221   if test "${gcc_gxx_without_sysroot}"; then
222     if test x${with_sysroot} != x/; then
223       gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
224     fi
225     gcc_gxx_include_dir_add_sysroot=1
226   fi
229 AC_ARG_WITH(cpp_install_dir,
230 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
231                 [install the user visible C preprocessor in DIR
232                  (relative to PREFIX) as well as PREFIX/bin])],
233 [if test x$withval = xyes; then
234   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
235 elif test x$withval != xno; then
236   cpp_install_dir=$withval
237 fi])
239 # We would like to our source tree to be readonly.  However when releases or
240 # pre-releases are generated, the flex/bison generated files as well as the 
241 # various formats of manuals need to be included along with the rest of the
242 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
243 # just that.
245 AC_MSG_CHECKING([whether to place generated files in the source directory])
246   dnl generated-files-in-srcdir is disabled by default
247   AC_ARG_ENABLE(generated-files-in-srcdir, 
248     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
249                     [put copies of generated files in source dir
250                      intended for creating source tarballs for users
251                      without texinfo bison or flex])],
252       generated_files_in_srcdir=$enableval,
253       generated_files_in_srcdir=no)
255 AC_MSG_RESULT($generated_files_in_srcdir)
257 if test "$generated_files_in_srcdir" = "yes"; then
258   GENINSRC=''
259 else
260   GENINSRC='#'
262 AC_SUBST(GENINSRC)
264 # -------------------
265 # Find default linker
266 # -------------------
268 # With GNU ld
269 AC_ARG_WITH(gnu-ld,
270 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
271 gnu_ld_flag="$with_gnu_ld",
272 gnu_ld_flag=no)
274 # With pre-defined ld
275 AC_ARG_WITH(ld,
276 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
277 DEFAULT_LINKER="$with_ld")
278 if test x"${DEFAULT_LINKER+set}" = x"set"; then
279   if test ! -x "$DEFAULT_LINKER"; then
280     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
281   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
282     gnu_ld_flag=yes
283   fi
284   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
285         [Define to enable the use of a default linker.])
288 AC_MSG_CHECKING([whether a default linker was specified])
289 if test x"${DEFAULT_LINKER+set}" = x"set"; then
290   if test x"$gnu_ld_flag" = x"no"; then
291     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
292   else
293     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
294   fi
295 else
296   AC_MSG_RESULT(no)
299 # With demangler in GNU ld
300 AC_ARG_WITH(demangler-in-ld,
301 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
302 demangler_in_ld="$with_demangler_in_ld",
303 demangler_in_ld=yes)
305 # ----------------------
306 # Find default assembler
307 # ----------------------
309 # With GNU as
310 AC_ARG_WITH(gnu-as,
311 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
312 gas_flag="$with_gnu_as",
313 gas_flag=no)
315 AC_ARG_WITH(as,
316 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
317 DEFAULT_ASSEMBLER="$with_as")
318 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
319   if test ! -x "$DEFAULT_ASSEMBLER"; then
320     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
321   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
322     gas_flag=yes
323   fi
324   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
325         [Define to enable the use of a default assembler.])
328 AC_MSG_CHECKING([whether a default assembler was specified])
329 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
330   if test x"$gas_flag" = x"no"; then
331     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
332   else
333     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
334   fi
335 else
336   AC_MSG_RESULT(no)
339 # ---------------
340 # Find C compiler
341 # ---------------
343 # If a non-executable a.out is present (e.g. created by GNU as above even if
344 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
345 # file, even when creating an executable, so an execution test fails.
346 # Remove possible default executable files to avoid this.
348 # FIXME: This really belongs into AC_PROG_CC and can be removed once
349 # Autoconf includes it.
350 rm -f a.out a.exe b.out
352 # Find the native compiler
353 AC_PROG_CC
354 AC_PROG_CXX
355 ACX_PROG_GNAT([-I"$srcdir"/ada])
357 # Do configure tests with the C++ compiler, since that's what we build with.
358 AC_LANG(C++)
360 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
361 # optimizations to be activated explicitly by the toplevel.
362 case "$CC" in
363   */prev-gcc/xgcc*) ;;
364   *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[       ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" `
365      CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[   ]]//" -e "s/-O[[gs]][[  ]]//" -e "s/-O[[0-9]]*[[        ]]//" ` ;;
366 esac
367 AC_SUBST(CFLAGS)
368 AC_SUBST(CXXFLAGS)
370 # Determine PICFLAG for target gnatlib.
371 GCC_PICFLAG_FOR_TARGET
372 AC_SUBST(PICFLAG_FOR_TARGET)
374 # -------------------------
375 # Check C compiler features
376 # -------------------------
378 AC_USE_SYSTEM_EXTENSIONS
379 AC_PROG_CPP
380 AC_C_INLINE
382 AC_SYS_LARGEFILE
384 # sizeof(char) is 1 by definition.
385 AC_CHECK_SIZEOF(void *)
386 AC_CHECK_SIZEOF(short)
387 AC_CHECK_SIZEOF(int)
388 AC_CHECK_SIZEOF(long)
389 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
390 GCC_STDINT_TYPES
391 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
392   AC_MSG_ERROR([uint64_t or int64_t not found])
395 # check what underlying integer type int64_t uses
396 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
397 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
398 #ifdef HAVE_STDINT_H
399 #include <stdint.h>
400 #endif
401 template <typename T> struct X { };
402 template <>
403 struct X<long> { typedef long t; };
404 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
405 if test "$ac_cv_int64_t_type" = "long"; then
406   AC_DEFINE(INT64_T_IS_LONG, 1,
407   [Define if int64_t uses long as underlying type.])
408 else
409 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
410 #ifdef HAVE_STDINT_H
411 #include <stdint.h>
412 #endif
413 template <typename T> struct X { };
414 template <>
415 struct X<long long> { typedef long long t; };
416 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
419 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
420 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
421 #include <utility>
422 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
423 if test $ac_cv_std_swap_in_utility = yes; then
424   AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
425   [Define if <utility> defines std::swap.])
428 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
429 # If the host compiler is affected by the bug, and we build with optimization
430 # enabled (which happens e.g. when cross-compiling), the pool allocator may
431 # get miscompiled.  Use -fno-strict-aliasing to work around this problem.
432 # Since there is no reliable feature check for the presence of this bug,
433 # we simply use a GCC version number check.  (This should never trigger for
434 # stages 2 or 3 of a native bootstrap.)
435 aliasing_flags=
436 if test "$GCC" = yes; then
437   saved_CXXFLAGS="$CXXFLAGS"
439   # The following test compilation will succeed if and only if $CXX accepts
440   # -fno-strict-aliasing *and* is older than GCC 4.3.
441   CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
442   AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
443   AC_COMPILE_IFELSE([
444 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
445 #error compiler not affected by placement new aliasing bug
446 #endif
448     [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
449     [AC_MSG_RESULT([no])])
451   CXXFLAGS="$saved_CXXFLAGS"
453 AC_SUBST(aliasing_flags)
457 # ---------------------
458 # Warnings and checking
459 # ---------------------
461 # Check $CC warning features (if it's GCC).
462 # We want to use -pedantic, but we don't want warnings about
463 # * 'long long'
464 # * variadic macros
465 # * overlong strings
466 # * C++11 narrowing conversions in { }
467 # So, we only use -pedantic if we can disable those warnings.
469 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
470 AC_ARG_ENABLE(build-format-warnings,
471   AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
472   [],[enable_build_format_warnings=yes])
473 AS_IF([test $enable_build_format_warnings = no],
474       [wf_opt=-Wno-format],[wf_opt=])
475 ACX_PROG_CXX_WARNING_OPTS(
476         m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual $wf_opt])), [loose_warn])
477 ACX_PROG_CC_WARNING_OPTS(
478         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
479         [c_loose_warn])
480 ACX_PROG_CXX_WARNING_OPTS(
481         m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
482 ACX_PROG_CXX_WARNING_OPTS(
483         m4_quote(m4_do([-Woverloaded-virtual])), [strict_warn])
484 ACX_PROG_CC_WARNING_OPTS(
485         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
486 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
487         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
488                        [-Wno-overlength-strings])), [strict_warn])
489 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
491 # The above macros do nothing if the compiler is not GCC.  However, the
492 # Makefile has more goo to add other flags, so these variables are used
493 # to enable warnings only for GCC.
494 warn_cflags=
495 warn_cxxflags=
496 if test "x$GCC" = "xyes"; then
497   warn_cflags='$(GCC_WARN_CFLAGS)'
498   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
500 AC_SUBST(warn_cflags)
501 AC_SUBST(warn_cxxflags)
503 # Disable exceptions and RTTI if building with g++
504 ACX_PROG_CC_WARNING_OPTS(
505         m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
506                        [noexception_flags])
507         
508 # Enable expensive internal checks
509 is_release=
510 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
511   is_release=yes
514 AC_ARG_ENABLE(checking,
515 [AS_HELP_STRING([[--enable-checking[=LIST]]],
516                 [enable expensive run-time checks.  With LIST,
517                  enable only specific categories of checks.
518                  Categories are: yes,no,all,none,release.
519                  Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
520                  rtlflag,rtl,runtime,tree,valgrind,types])],
521 [ac_checking_flags="${enableval}"],[
522 # Determine the default checks.
523 if test x$is_release = x ; then
524   ac_checking_flags=yes,extra
525 else
526   ac_checking_flags=release
527 fi])
528 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
529 for check in release $ac_checking_flags
531         case $check in
532         # these set all the flags to specific states
533         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
534                         ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
535                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
536                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
537                         ac_tree_checking=1 ; ac_valgrind_checking= ;
538                         ac_types_checking=1 ;;
539         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
540                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
541                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
542                         ac_rtlflag_checking= ; ac_runtime_checking= ;
543                         ac_tree_checking= ; ac_valgrind_checking= ;
544                         ac_types_checking= ;;
545         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
546                         ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
547                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
548                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
549                         ac_tree_checking=1 ; ac_valgrind_checking= ;
550                         ac_types_checking=1 ;;
551         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
552                         ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
553                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
554                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
555                         ac_tree_checking= ; ac_valgrind_checking= ;
556                         ac_types_checking= ;;
557         # these enable particular checks
558         assert)         ac_assert_checking=1 ;;
559         df)             ac_df_checking=1 ;;
560         extra)          ac_extra_checking=1 ;;
561         fold)           ac_fold_checking=1 ;;
562         gc)             ac_gc_checking=1 ;;
563         gcac)           ac_gc_always_collect=1 ;;
564         gimple)         ac_gimple_checking=1 ;;
565         misc)           ac_checking=1 ;;
566         rtl)            ac_rtl_checking=1 ;;
567         rtlflag)        ac_rtlflag_checking=1 ;;
568         runtime)        ac_runtime_checking=1 ;;
569         tree)           ac_tree_checking=1 ;;
570         types)          ac_types_checking=1 ;;
571         valgrind)       ac_valgrind_checking=1 ;;
572         *)      AC_MSG_ERROR(unknown check category $check) ;;
573         esac
574 done
575 IFS="$ac_save_IFS"
577 nocommon_flag=""
578 if test x$ac_checking != x ; then
579   if test x$ac_extra_checking != x ; then
580     ac_checking=2
581   fi
582   AC_DEFINE_UNQUOTED(CHECKING_P, $ac_checking,
583 [Define to 1 if you want more run-time sanity checks.  This one gets a grab
584    bag of miscellaneous but relatively cheap checks.  Define to 2 if you want
585    also extra run-time checking that might affect code generation.])
586   nocommon_flag=-fno-common
587 else
588   AC_DEFINE(CHECKING_P, 0)
590 AC_SUBST(nocommon_flag)
591 if test x$ac_df_checking != x ; then
592   AC_DEFINE(ENABLE_DF_CHECKING, 1,
593 [Define if you want more run-time sanity checks for dataflow.])
595 if test x$ac_assert_checking != x ; then
596   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
597 [Define if you want assertions enabled.  This is a cheap check.])
599 if test x$ac_gimple_checking != x ; then
600   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
601 [Define if you want operations on GIMPLE (the basic data structure of
602 the high-level optimizers) to be checked for dynamic type safety at
603 runtime.  This is moderately expensive.])
605 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
606 if test x$ac_runtime_checking != x ; then
607   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
608 [Define if you want runtime assertions enabled.  This is a cheap check.])
610 if test x$ac_tree_checking != x ; then
611   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
612 [Define if you want all operations on trees (the basic data
613    structure of the front ends) to be checked for dynamic type safety
614    at runtime.  This is moderately expensive.
615    ])
616   TREECHECKING=yes
618 if test x$ac_types_checking != x ; then
619   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
620 [Define if you want all gimple types to be verified after gimplifiation.
621    This is cheap.
622    ])
624 AC_SUBST(TREECHECKING)
625 if test x$ac_rtl_checking != x ; then
626   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
627 [Define if you want all operations on RTL (the basic data structure
628    of the optimizer and back end) to be checked for dynamic type safety
629    at runtime.  This is quite expensive.])
631 if test x$ac_rtlflag_checking != x ; then
632   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
633 [Define if you want RTL flag accesses to be checked against the RTL
634    codes that are supported for each access macro.  This is relatively
635    cheap.])
637 if test x$ac_gc_checking != x ; then
638   AC_DEFINE(ENABLE_GC_CHECKING, 1,
639 [Define if you want the garbage collector to do object poisoning and
640    other memory allocation checks.  This is quite expensive.])
642 if test x$ac_gc_always_collect != x ; then
643   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
644 [Define if you want the garbage collector to operate in maximally
645    paranoid mode, validating the entire heap and collecting garbage at
646    every opportunity.  This is extremely expensive.])
648 if test x$ac_fold_checking != x ; then
649   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
650 [Define if you want fold checked that it never destructs its argument.
651    This is quite expensive.])
653 valgrind_path_defines=
654 valgrind_command=
656 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
657 dnl # an if statement.  This was the source of very frustrating bugs
658 dnl # in converting to autoconf 2.5x!
659 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
661 # It is certainly possible that there's valgrind but no valgrind.h.
662 # GCC relies on making annotations so we must have both.
663 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
664 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
665   [[#include <valgrind/memcheck.h>
666 #ifndef VALGRIND_DISCARD
667 #error VALGRIND_DISCARD not defined
668 #endif]])],
669   [gcc_cv_header_valgrind_memcheck_h=yes],
670   [gcc_cv_header_valgrind_memcheck_h=no])
671 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
672 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
673 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
674   [[#include <memcheck.h>
675 #ifndef VALGRIND_DISCARD
676 #error VALGRIND_DISCARD not defined
677 #endif]])],
678   [gcc_cv_header_memcheck_h=yes],
679   [gcc_cv_header_memcheck_h=no])
680 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
681 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
682   AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
683         [Define if valgrind's valgrind/memcheck.h header is installed.])
685 if test $gcc_cv_header_memcheck_h = yes; then
686   AC_DEFINE(HAVE_MEMCHECK_H, 1,
687         [Define if valgrind's memcheck.h header is installed.])
690 if test x$ac_valgrind_checking != x ; then
691   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
692         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
693   if test "x$valgrind_path" = "x" \
694     || (test $have_valgrind_h = no \
695         && test $gcc_cv_header_memcheck_h = no \
696         && test $gcc_cv_header_valgrind_memcheck_h = no); then
697         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
698   fi
699   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
700   valgrind_command="$valgrind_path -q"
701   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
702 [Define if you want to run subprograms and generated programs
703    through valgrind (a memory checker).  This is extremely expensive.])
705 AC_SUBST(valgrind_path_defines)
706 AC_SUBST(valgrind_command)
708 # Enable code coverage collection
709 AC_ARG_ENABLE(coverage,
710 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
711                 [enable compiler's code coverage collection.
712                  Use to measure compiler performance and locate
713                  unused parts of the compiler. With LEVEL, specify
714                  optimization. Values are opt, noopt,
715                  default is noopt])],
716 [case "${enableval}" in
717   yes|noopt)
718     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
719     ;;
720   opt)
721     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
722     ;;
723   no)
724     # a.k.a. --disable-coverage
725     coverage_flags=""
726     ;;
727   *)
728     AC_MSG_ERROR(unknown coverage setting $enableval)
729     ;;
730 esac],
731 [coverage_flags=""])
732 AC_SUBST(coverage_flags)
734 AC_ARG_ENABLE(gather-detailed-mem-stats, 
735 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
736                 [enable detailed memory allocation stats gathering])], [],
737 [enable_gather_detailed_mem_stats=no])
738 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
739 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
740 [Define to enable detailed memory allocation stats gathering.])
742 AC_ARG_ENABLE(valgrind-annotations,
743 [AS_HELP_STRING([--enable-valgrind-annotations],
744                 [enable valgrind runtime interaction])], [],
745 [enable_valgrind_annotations=no])
746 if test x$enable_valgrind_annotations != xno \
747     || test x$ac_valgrind_checking != x; then
748   if (test $have_valgrind_h = no \
749       && test $gcc_cv_header_memcheck_h = no \
750       && test $gcc_cv_header_valgrind_memcheck_h = no); then
751     AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h])
752   fi
753   AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
754 [Define to get calls to the valgrind runtime enabled.])
757 # -------------------------------
758 # Miscenalleous configure options
759 # -------------------------------
761 # With stabs
762 AC_ARG_WITH(stabs,
763 [AS_HELP_STRING([--with-stabs],
764                 [arrange to use stabs instead of host debug format])],
765 stabs="$with_stabs",
766 stabs=no)
768 # Determine whether or not multilibs are enabled.
769 AC_ARG_ENABLE(multilib,
770 [AS_HELP_STRING([--enable-multilib],
771                 [enable library support for multiple ABIs])],
772 [], [enable_multilib=yes])
773 AC_SUBST(enable_multilib)
775 # Determine whether or not multiarch is enabled.
776 AC_ARG_ENABLE(multiarch,
777 [AS_HELP_STRING([--enable-multiarch],
778                 [enable support for multiarch paths])],
779 [case "${enableval}" in
780 yes|no|auto) enable_multiarch=$enableval;;
781 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
782 esac], [enable_multiarch=auto])
783 if test x${enable_multiarch} = xauto; then
784   if test x${with_native_system_header_dir} != x; then
785     ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
786     enable_multiarch=no
787   fi
788   if test x$host != x$target && test "x$with_sysroot" = x; then
789     ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
790     enable_multiarch=no
791   fi
793 AC_MSG_CHECKING(for multiarch configuration)
794 AC_SUBST(enable_multiarch)
795 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
797 # needed for setting the multiarch name for soft-float/hard-float ABIs
798 AC_SUBST(with_cpu)
799 AC_SUBST(with_float)
801 # Enable __cxa_atexit for C++.
802 AC_ARG_ENABLE(__cxa_atexit,
803 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
804 [], [])
806 # Enable C extension for decimal float if target supports it.
807 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
809 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
810 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
811 [Define to 1 to enable decimal float extension to C.])
813 # Use default_decimal_float for dependency.
814 enable_decimal_float=$default_decimal_float
816 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
817 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
818 [Define to 1 to specify that we are using the BID decimal floating
819 point format instead of DPD])
821 # Enable C extension for fixed-point arithmetic.
822 AC_ARG_ENABLE(fixed-point,
823 [AS_HELP_STRING([--enable-fixed-point],
824                 [enable fixed-point arithmetic extension to C])],
827   case $target in
828     arm*)
829       enable_fixed_point=yes
830       ;;
832     mips*-*-*)
833       enable_fixed_point=yes
834       ;;
835     *)
836       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
837       enable_fixed_point=no
838       ;;
839   esac
841 AC_SUBST(enable_fixed_point)
843 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
844 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
845 [Define to 1 to enable fixed-point arithmetic extension to C.])
847 # Enable threads
848 # Pass with no value to take the default
849 # Pass with a value to specify a thread package
850 AC_ARG_ENABLE(threads,
851 [AS_HELP_STRING([[--enable-threads[=LIB]]],
852                 [enable thread usage for target GCC,
853                  using LIB thread package])],,
854 [enable_threads=''])
856 AC_ARG_ENABLE(tls,
857 [AS_HELP_STRING([--enable-tls],
858                 [enable or disable generation of tls code
859                  overriding the assembler check for tls support])],
861   case $enable_tls in
862     yes | no) ;;
863     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
864 Valid choices are 'yes' and 'no'.]) ;;
865   esac
866 ], [enable_tls=''])
868 AC_ARG_ENABLE(objc-gc,
869 [AS_HELP_STRING([--enable-objc-gc],
870                 [enable the use of Boehm's garbage collector with
871                  the GNU Objective-C runtime])],
872 if test x$enable_objc_gc = xno; then
873         objc_boehm_gc=''
874 else
875         objc_boehm_gc=1
877 objc_boehm_gc='')
879 AC_ARG_WITH(dwarf2,
880 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
881 dwarf2="$with_dwarf2",
882 dwarf2=no)
884 AC_ARG_ENABLE(shared,
885 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
887   case $enable_shared in
888   yes | no) ;;
889   *)
890     enable_shared=no
891     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
892     for pkg in $enableval; do
893       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
894         enable_shared=yes
895       fi
896     done
897     IFS="$ac_save_ifs"
898     ;;
899   esac
900 ], [enable_shared=yes])
901 AC_SUBST(enable_shared)
903 AC_ARG_WITH(specs,
904   [AS_HELP_STRING([--with-specs=SPECS],
905                   [add SPECS to driver command-line processing])],
906   [CONFIGURE_SPECS=$withval],
907   [CONFIGURE_SPECS=]
909 AC_SUBST(CONFIGURE_SPECS)
911 ACX_PKGVERSION([GCC])
912 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
914 # Sanity check enable_languages in case someone does not run the toplevel
915 # configure # script.
916 AC_ARG_ENABLE(languages,
917 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
918 [case ,${enable_languages}, in
919        ,,|,yes,)
920                 # go safe -- we cannot be much sure without the toplevel
921                 # configure's
922                 # analysis of which target libs are present and usable
923                 enable_languages=c
924                 ;;
925          *,all,*)
926                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
927                 ;;
928         *,c,*)
929                 ;;
930         *)
931                 enable_languages=c,${enable_languages}
932                 ;;
933 esac],
934 [enable_languages=c])
936 if test x"$enable_as_accelerator_for" != x; then
937   AC_DEFINE(ACCEL_COMPILER, 1,
938     [Define if this compiler should be built as the offload target compiler.])
939   enable_as_accelerator=yes
940   case "${target}" in
941     *-intelmicemul-*)
942       # In this case we expect offload compiler to be built as native, so we
943       # need to rename the driver to avoid clashes with host's drivers.
944       program_transform_name="s&^&${target}-&" ;;
945   esac
946   sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
947   program_transform_name=`echo $program_transform_name | sed $sedscript`
948   accel_dir_suffix=/accel/${target_noncanonical}
949   real_target_noncanonical=${enable_as_accelerator_for}
951 AC_SUBST(enable_as_accelerator)
952 AC_SUBST(real_target_noncanonical)
953 AC_SUBST(accel_dir_suffix)
955 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
956   tgt=`echo $tgt | sed 's/=.*//'`
958   if echo "$tgt" | grep "^hsa" > /dev/null ; then
959     enable_hsa=1
960   else
961     enable_offloading=1
962   fi
964   if test x"$offload_targets" = x; then
965     offload_targets=$tgt
966   else
967     offload_targets="$offload_targets,$tgt"
968   fi
969 done
970 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
971   [Define to offload targets, separated by commas.])
972 if test x"$enable_offloading" != x; then
973   AC_DEFINE(ENABLE_OFFLOADING, 1,
974     [Define this to enable support for offloading.])
975 else
976   AC_DEFINE(ENABLE_OFFLOADING, 0,
977     [Define this to enable support for offloading.])
980 if test x"$enable_hsa" = x1 ; then
981   AC_DEFINE(ENABLE_HSA, 1,
982     [Define this to enable support for generating HSAIL.])
985 AC_ARG_WITH(multilib-list,
986 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
988 with_multilib_list=default)
990 # -------------------------
991 # Checks for other programs
992 # -------------------------
994 AC_PROG_MAKE_SET
996 # Find some useful tools
997 AC_PROG_AWK
998 # We need awk to create options.c and options.h.
999 # Bail out if it's missing.
1000 case ${AWK} in
1001   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1002 esac
1004 gcc_AC_PROG_LN_S
1005 ACX_PROG_LN($LN_S)
1006 AC_PROG_RANLIB
1007 ranlib_flags=""
1008 AC_SUBST(ranlib_flags)
1009      
1010 gcc_AC_PROG_INSTALL
1012 # See if cmp has --ignore-initial.
1013 gcc_AC_PROG_CMP_IGNORE_INITIAL
1015 # See if we have the mktemp command.
1016 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1018 # See if makeinfo has been installed and is modern enough
1019 # that we can use it.
1020 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1021   [GNU texinfo.* \([0-9][0-9.]*\)],
1022   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1023 if test $gcc_cv_prog_makeinfo_modern = no; then
1024   AC_MSG_WARN([
1025 *** Makeinfo is missing or too old.
1026 *** Info documentation will not be built.])
1027   BUILD_INFO=
1028 else
1029   BUILD_INFO=info
1031 AC_SUBST(BUILD_INFO)
1033 # Is pod2man recent enough to regenerate manpages?
1034 AC_MSG_CHECKING([for recent Pod::Man])
1035 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1036   AC_MSG_RESULT(yes)
1037   GENERATED_MANPAGES=generated-manpages
1038 else
1039   AC_MSG_RESULT(no)
1040   GENERATED_MANPAGES=
1042 AC_SUBST(GENERATED_MANPAGES)
1044 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1046 # How about lex?
1047 dnl Don't use AC_PROG_LEX; we insist on flex.
1048 dnl LEXLIB is not useful in gcc.
1049 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1051 # Bison?
1052 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1054 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1055 # check for build == host before using them.
1057 # NM
1058 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1059   && test -d ../binutils ; then
1060   NM='${objdir}/../binutils/nm-new'
1061 else
1062   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1065 # AR
1066 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1067   && test -d ../binutils ; then
1068   AR='${objdir}/../binutils/ar'
1069 else
1070   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1073 # The jit documentation looks better if built with sphinx, but can be
1074 # built with texinfo if sphinx is not available.
1075 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1076 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1078 # --------------------
1079 # Checks for C headers
1080 # --------------------
1082 # Need to reject headers which give warnings, so that the -Werror bootstrap
1083 # works later. *sigh*  This needs to come before all header checks.
1084 AC_PROG_CPP_WERROR
1086 AC_HEADER_STDC
1087 AC_HEADER_TIME
1088 ACX_HEADER_STRING
1089 AC_HEADER_SYS_WAIT
1090 AC_HEADER_TIOCGWINSZ
1091 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1092                  fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1093                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
1094                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1096 # Check for thread headers.
1097 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1098 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1100 # These tests can't be done till we know if we have limits.h.
1101 gcc_AC_C_CHAR_BIT
1102 AC_C_BIGENDIAN
1104 # ----------------------
1105 # Checks for C++ headers
1106 # ----------------------
1108 dnl Autoconf will give an error in the configure script if there is no
1109 dnl C++ preprocessor.  Hack to prevent that.
1110 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1111 AC_PROG_CXXCPP
1112 m4_popdef([AC_MSG_ERROR])[]dnl
1114 AC_CHECK_HEADERS(unordered_map)
1115 AC_CHECK_HEADERS(tr1/unordered_map)
1116 AC_CHECK_HEADERS(ext/hash_map)
1118 # --------
1119 # Dependency checking.
1120 # --------
1122 ZW_CREATE_DEPDIR
1123 AC_CONFIG_COMMANDS([gccdepdir],[
1124   ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1125   for lang in $subdirs c-family common
1126   do
1127       ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1128   done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1130 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1132 # --------
1133 # UNSORTED
1134 # --------
1137 # These libraries may be used by collect2.
1138 # We may need a special search path to get them linked.
1139 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1140 [save_LIBS="$LIBS"
1141 for libs in '' -lld -lmld \
1142                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1143                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1145         LIBS="$libs"
1146         AC_TRY_LINK_FUNC(ldopen,
1147                 [gcc_cv_collect2_libs="$libs"; break])
1148 done
1149 LIBS="$save_LIBS"
1150 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1151 case $gcc_cv_collect2_libs in
1152         "none required")        ;;
1153         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1154 esac
1155 AC_SUBST(COLLECT2_LIBS)
1157 # When building Ada code on Alpha, we need exc_resume which is usually in
1158 # -lexc.  So test for it.
1159 save_LIBS="$LIBS"
1160 LIBS=
1161 AC_SEARCH_LIBS(exc_resume, exc)
1162 GNAT_LIBEXC="$LIBS"
1163 LIBS="$save_LIBS"
1164 AC_SUBST(GNAT_LIBEXC)
1166 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1167 save_LIBS="$LIBS"
1168 LIBS=
1169 AC_SEARCH_LIBS(kstat_open, kstat)
1170 EXTRA_GCC_LIBS="$LIBS"
1171 LIBS="$save_LIBS"
1172 AC_SUBST(EXTRA_GCC_LIBS)
1174 # Some systems put ldexp and frexp in libm instead of libc; assume
1175 # they're both in the same place.  jcf-dump needs them.
1176 save_LIBS="$LIBS"
1177 LIBS=
1178 AC_SEARCH_LIBS(ldexp, m)
1179 LDEXP_LIB="$LIBS"
1180 LIBS="$save_LIBS"
1181 AC_SUBST(LDEXP_LIB)
1183 # Use <inttypes.h> only if it exists,
1184 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1185 # PRId64
1186 AC_MSG_CHECKING(for inttypes.h)
1187 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1188 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1189 [[#define __STDC_FORMAT_MACROS
1190 #include <sys/types.h>
1191 #include <inttypes.h>]],
1192   [[intmax_t i = -1;
1193 #ifndef PRId64
1194 choke me
1195 #endif]])],
1196   [gcc_cv_header_inttypes_h=yes],
1197   [gcc_cv_header_inttypes_h=no])])
1198 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1199 if test $gcc_cv_header_inttypes_h = yes; then
1200   AC_DEFINE(HAVE_INTTYPES_H, 1,
1201         [Define if you have a working <inttypes.h> header file.])
1204 dnl Disabled until we have a complete test for buggy enum bitfields.
1205 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1207 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1208   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1209   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1210   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1211   putchar_unlocked putc_unlocked)
1212 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1213         popen sysconf strsignal getrusage nl_langinfo \
1214         gettimeofday mbstowcs wcswidth mmap setlocale \
1215         gcc_UNLOCKED_FUNCS madvise)
1217 if test x$ac_cv_func_mbstowcs = xyes; then
1218   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1219 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1220 int main()
1222   mbstowcs(0, "", 0);
1223   return 0;
1224 }]])],
1225     [gcc_cv_func_mbstowcs_works=yes],
1226     [gcc_cv_func_mbstowcs_works=no],
1227     [gcc_cv_func_mbstowcs_works=yes])])
1228   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1229     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1230   [Define this macro if mbstowcs does not crash when its
1231    first argument is NULL.])
1232   fi
1235 AC_CHECK_TYPE(ssize_t, int)
1236 AC_CHECK_TYPE(caddr_t, char *)
1238 GCC_AC_FUNC_MMAP_BLACKLIST
1240 case "${host}" in
1241 *-*-*vms*)
1242   # Under VMS, vfork works very differently than on Unix. The standard test 
1243   # won't work, and it isn't easily adaptable. It makes more sense to
1244   # just force it.
1245   ac_cv_func_vfork_works=yes
1246   ;;
1247 esac
1248 AC_FUNC_FORK
1250 AM_ICONV
1252 # Until we have in-tree GNU iconv:
1253 LIBICONV_DEP=
1254 if test -f "$LTLIBICONV"; then
1255   LIBICONV_DEP=$LTLIBICONV
1257 AC_SUBST(LIBICONV_DEP)
1259 AM_LC_MESSAGES
1261 AM_LANGINFO_CODESET
1263 # We will need to find libiberty.h and ansidecl.h
1264 saved_CFLAGS="$CFLAGS"
1265 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1266 saved_CXXFLAGS="$CXXFLAGS"
1267 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1269 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1270 # normal autoconf function for these.  But force definition of
1271 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1272 # basename handling in libiberty.h.
1273 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1274 #undef HAVE_DECL_BASENAME
1275 #define HAVE_DECL_BASENAME 1
1276 #include "ansidecl.h"
1277 #include "system.h"])
1279 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1280         madvise stpcpy strnlen strsignal strverscmp \
1281         strtol strtoul strtoll strtoull setenv unsetenv \
1282         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1283         free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1284 #include "ansidecl.h"
1285 #include "system.h"])
1287 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1288 #include "ansidecl.h"
1289 #include "system.h"
1290 #ifdef HAVE_SYS_RESOURCE_H
1291 #include <sys/resource.h>
1292 #endif
1295 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1296 #include "ansidecl.h"
1297 #include "system.h"
1298 #ifdef HAVE_SYS_RESOURCE_H
1299 #include <sys/resource.h>
1300 #endif
1301 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1302 [Define to `long' if <sys/resource.h> doesn't define.])])
1304 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1305 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1306 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1307 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1308 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1309 #include "ansidecl.h"
1310 #include "system.h"
1311 #ifdef HAVE_LDFCN_H
1312 #undef FREAD
1313 #undef FWRITE
1314 #include <ldfcn.h>
1315 #endif
1318 gcc_AC_CHECK_DECLS(times, , ,[
1319 #include "ansidecl.h"
1320 #include "system.h"
1321 #ifdef HAVE_SYS_TIMES_H
1322 #include <sys/times.h>
1323 #endif
1326 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1327 #include "ansidecl.h"
1328 #include "system.h"
1329 #include <signal.h>
1332 # More time-related stuff.
1333 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1334 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1335 #include "ansidecl.h"
1336 #include "system.h"
1337 #ifdef HAVE_SYS_TIMES_H
1338 #include <sys/times.h>
1339 #endif
1340 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1341 if test $ac_cv_struct_tms = yes; then
1342   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1343   [Define if <sys/times.h> defines struct tms.])
1346 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1347 # revisit after autoconf 2.50.
1348 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1349 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1350 #include "ansidecl.h"
1351 #include "system.h"
1352 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1353 if test $gcc_cv_type_clock_t = yes; then
1354   AC_DEFINE(HAVE_CLOCK_T, 1,
1355   [Define if <time.h> defines clock_t.])
1358 # Check if F_SETLKW is supported by fcntl.
1359 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1360 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1361 #include <fcntl.h>]], [[
1362 struct flock fl;
1363 fl.l_whence = 0;
1364 fl.l_start = 0;
1365 fl.l_len = 0;
1366 fl.l_pid = 0;
1367 return fcntl (1, F_SETLKW, &fl);]])],
1368 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1369 if test $ac_cv_f_setlkw = yes; then
1370   AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1371   [Define if F_SETLKW supported by fcntl.])
1374 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1375 CFLAGS="$saved_CFLAGS"
1376 CXXFLAGS="$saved_CXXFLAGS"
1378 # mkdir takes a single argument on some systems. 
1379 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1381 # File extensions
1382 manext='.1'
1383 objext='.o'
1384 AC_SUBST(manext)
1385 AC_SUBST(objext)
1387 # With Setjmp/Longjmp based exception handling.
1388 AC_ARG_ENABLE(sjlj-exceptions,
1389 [AS_HELP_STRING([--enable-sjlj-exceptions],
1390                 [arrange to use setjmp/longjmp exception handling])],
1391 [case $target in
1392   *-*-hpux10*)
1393     if test $enableval != yes; then
1394       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1395       enableval=yes
1396     fi
1397     ;;
1398 esac
1399 force_sjlj_exceptions=yes],
1400 [case $target in
1401   *-*-hpux10*)
1402     force_sjlj_exceptions=yes
1403     enableval=yes
1404     ;;
1405   lm32*-*-*)
1406      force_sjlj_exceptions=yes
1407      enableval=yes
1408      ;;
1409   *)
1410     force_sjlj_exceptions=no
1411     ;;
1412 esac])
1413 if test $force_sjlj_exceptions = yes; then
1414   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1415   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1416     [Define 0/1 to force the choice for exception handling model.])
1419 # --------------------------------------------------------
1420 # Build, host, and target specific configuration fragments
1421 # --------------------------------------------------------
1423 # Collect build-machine-specific information.
1424 . ${srcdir}/config.build
1426 # Collect host-machine-specific information.
1427 . ${srcdir}/config.host
1429 target_gtfiles=
1431 # Collect target-machine-specific information.
1432 . ${srcdir}/config.gcc
1434 extra_objs="${host_extra_objs} ${extra_objs}"
1435 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1437 # Default the target-machine variables that were not explicitly set.
1438 if test x"$tm_file" = x
1439 then tm_file=$cpu_type/$cpu_type.h; fi
1441 if test x"$extra_headers" = x
1442 then extra_headers=; fi
1444 if test x$md_file = x
1445 then md_file=$cpu_type/$cpu_type.md; fi
1447 if test x$out_file = x
1448 then out_file=$cpu_type/$cpu_type.c; fi
1450 if test x"$tmake_file" = x
1451 then tmake_file=$cpu_type/t-$cpu_type
1454 # Support --enable-initfini-array.
1455 if test x$enable_initfini_array != xno; then
1456   tm_file="${tm_file} initfini-array.h"
1459 if test x"$dwarf2" = xyes
1460 then tm_file="$tm_file tm-dwarf2.h"
1463 # Say what files are being used for the output code and MD file.
1464 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1465 echo "Using \`$srcdir/config/$md_file' as machine description file."
1467 # If any of the xm_file variables contain nonexistent files, warn
1468 # about them and drop them.
1471 for x in $build_xm_file; do
1472   if    test -f $srcdir/config/$x
1473   then      bx="$bx $x"
1474   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1475   fi
1476 done
1477 build_xm_file="$bx"
1480 for x in $host_xm_file; do
1481   if    test -f $srcdir/config/$x
1482   then      hx="$hx $x"
1483   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1484   fi
1485 done
1486 host_xm_file="$hx"
1489 for x in $xm_file; do
1490   if    test -f $srcdir/config/$x
1491   then      tx="$tx $x"
1492   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1493   fi
1494 done
1495 xm_file="$tx"
1497 count=a
1498 for f in $tm_file; do
1499         count=${count}x
1500 done
1501 if test $count = ax; then
1502         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1503 else
1504         echo "Using the following target machine macro files:"
1505         for f in $tm_file; do
1506                 echo "  $srcdir/config/$f"
1507         done
1510 if test x$use_long_long_for_widest_fast_int = xyes; then
1511         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1512 [Define to 1 if the 'long long' type is wider than 'long' but still
1513 efficiently supported by the host hardware.])
1516 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1517 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1519 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1520 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1522 count=a
1523 for f in $host_xm_file; do
1524         count=${count}x
1525 done
1526 if test $count = a; then
1527         :
1528 elif test $count = ax; then
1529         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1530 else
1531         echo "Using the following host machine macro files:"
1532         for f in $host_xm_file; do
1533                 echo "  $srcdir/config/$f"
1534         done
1536 echo "Using ${out_host_hook_obj} for host machine hooks."
1538 if test "$host_xm_file" != "$build_xm_file"; then
1539         count=a
1540         for f in $build_xm_file; do
1541                 count=${count}x
1542         done
1543         if test $count = a; then
1544                 :
1545         elif test $count = ax; then
1546                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1547         else
1548                 echo "Using the following build machine macro files:"
1549                 for f in $build_xm_file; do
1550                         echo "  $srcdir/config/$f"
1551                 done
1552         fi
1555 if test -n "$configured_native_system_header_dir"; then
1556   native_system_header_dir=$configured_native_system_header_dir
1558 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1559 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1561 case ${host} in
1562   powerpc*-*-darwin*)
1563     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1564       gcc_cv_mcontext_underscores,
1565       AC_COMPILE_IFELSE([
1566 #include <sys/cdefs.h>
1567 #include <sys/signal.h>
1568 #include <ucontext.h>
1569 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1571         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1572       if test $gcc_cv_mcontext_underscores = yes; then
1573         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1574           [mcontext_t fields start with __])
1575       fi
1576     ;;
1577 esac
1579 # ---------
1580 # Threading
1581 # ---------
1583 # Check if a valid thread package
1584 case ${enable_threads} in
1585   "" | no)
1586     # No threads
1587     target_thread_file='single'
1588     ;;
1589   yes)
1590     # default
1591     target_thread_file='single'
1592     ;;
1593   aix | dce | lynx | mipssde | posix | rtems | \
1594   single | tpf | vxworks | win32)
1595     target_thread_file=${enable_threads}
1596     ;;
1597   *)
1598     echo "${enable_threads} is an unknown thread package" 1>&2
1599     exit 1
1600     ;;
1601 esac
1603 if test x${thread_file} = x; then
1604   # No thread file set by target-specific clauses in config.gcc,
1605   # so use file chosen by default logic above
1606   thread_file=${target_thread_file}
1609 # --------
1610 # UNSORTED
1611 # --------
1613 use_cxa_atexit=no
1614 if test x$enable___cxa_atexit = xyes || \
1615    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1616   if test x$host = x$target; then
1617     case $host in
1618       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1619       # keyed to flag_use_cxa_atexit
1620       *-*-mingw32*)
1621         use_cxa_atexit=yes
1622         ;;
1623       powerpc-ibm-aix*)
1624         use_cxa_atexit=yes
1625         ;;
1626       *)
1627         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1628           [echo "__cxa_atexit can't be enabled on this target"])
1629         ;;
1630     esac
1631   else
1632     # We can't check for __cxa_atexit when building a cross, so assume
1633     # it is available 
1634     use_cxa_atexit=yes
1635   fi
1636   if test x$use_cxa_atexit = xyes; then
1637     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1638       [Define if you want to use __cxa_atexit, rather than atexit, to
1639       register C++ destructors for local statics and global objects.
1640       This is essential for fully standards-compliant handling of
1641       destructors, but requires __cxa_atexit in libc.])
1642   fi
1645 # Look for a file containing extra machine modes.
1646 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1647   extra_modes_file='$(srcdir)'/config/${extra_modes}
1648   AC_SUBST(extra_modes_file)
1649   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1650   [Define to the name of a file containing a list of extra machine modes
1651    for this architecture.])
1654 # Convert extra_options into a form suitable for Makefile use.
1655 extra_opt_files=
1656 all_opt_files=
1657 for f in $extra_options; do
1658   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1659   all_opt_files="$all_opt_files $srcdir/config/$f"
1660 done
1661 AC_SUBST(extra_opt_files)
1663 # auto-host.h is the file containing items generated by autoconf and is
1664 # the first file included by config.h.
1665 # If host=build, it is correct to have bconfig include auto-host.h
1666 # as well.  If host!=build, we are in error and need to do more 
1667 # work to find out the build config parameters.
1668 if test x$host = x$build
1669 then
1670         build_auto=auto-host.h
1671 else
1672         # We create a subdir, then run autoconf in the subdir.
1673         # To prevent recursion we set host and build for the new
1674         # invocation of configure to the build for this invocation
1675         # of configure. 
1676         tempdir=build.$$
1677         rm -rf $tempdir
1678         mkdir $tempdir
1679         cd $tempdir
1680         case ${srcdir} in
1681         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1682         *) realsrcdir=../${srcdir};;
1683         esac
1684         # Clearing GMPINC is necessary to prevent host headers being
1685         # used by the build compiler.  Defining GENERATOR_FILE stops
1686         # system.h from including gmp.h.
1687         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1688         CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1689         LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1690         GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1691         ${realsrcdir}/configure \
1692                 --enable-languages=${enable_languages-all} \
1693                 --target=$target_alias --host=$build_alias --build=$build_alias
1695         # We just finished tests for the build machine, so rename
1696         # the file auto-build.h in the gcc directory.
1697         mv auto-host.h ../auto-build.h
1698         cd ..
1699         rm -rf $tempdir
1700         build_auto=auto-build.h
1702 AC_SUBST(build_subdir)
1704 tm_file="${tm_file} defaults.h"
1705 tm_p_file="${tm_p_file} tm-preds.h"
1706 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1707 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1708 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1709 # put this back in temporarily.
1710 xm_file="auto-host.h ansidecl.h ${xm_file}"
1712 # --------
1713 # UNSORTED
1714 # --------
1716 changequote(,)dnl
1717 # Compile in configure arguments.
1718 if test -f configargs.h ; then
1719         # Being re-configured.
1720         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1721         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1722 else
1723         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1726 # Double all backslashes and backslash all quotes to turn
1727 # gcc_config_arguments into a C string.
1728 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1729 $gcc_config_arguments
1731 gcc_config_arguments_str=`cat conftest.out`
1732 rm -f conftest.out
1734 cat > configargs.h <<EOF
1735 /* Generated automatically. */
1736 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1737 static const char thread_model[] = "$thread_file";
1739 static const struct {
1740   const char *name, *value;
1741 } configure_default_options[] = $configure_default_options;
1743 changequote([,])dnl
1745 changequote(,)dnl
1746 gcc_BASEVER=`cat $srcdir/BASE-VER`
1747 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1748 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1749 if test -f $srcdir/REVISION ; then
1750         gcc_REVISION=`cat $srcdir/REVISION`
1751 else
1752         gcc_REVISION=""
1754 cat > plugin-version.h <<EOF
1755 #include "configargs.h"
1757 #define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1758 #define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1759 #define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1760 #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1762 static char basever[] = "$gcc_BASEVER";
1763 static char datestamp[] = "$gcc_DATESTAMP";
1764 static char devphase[] = "$gcc_DEVPHASE";
1765 static char revision[] = "$gcc_REVISION";
1767 /* FIXME plugins: We should make the version information more precise.
1768    One way to do is to add a checksum. */
1770 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1771                                                 devphase, revision,
1772                                                 configuration_arguments};
1774 changequote([,])dnl
1776 # Internationalization
1777 ZW_GNU_GETTEXT_SISTER_DIR
1779 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1780 # -liconv on the link line twice.
1781 case "$LIBINTL" in *$LIBICONV*)
1782         LIBICONV= ;;
1783 esac
1785 AC_ARG_ENABLE(secureplt,
1786 [AS_HELP_STRING([--enable-secureplt],
1787                 [enable -msecure-plt by default for PowerPC])],
1788 [], [])
1790 AC_ARG_ENABLE(leading-mingw64-underscores,
1791   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1792                  [enable leading underscores on 64 bit mingw targets]),
1793   [],[])
1794 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1795   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1796     [Define if we should use leading underscore on 64 bit mingw targets])])
1798 AC_ARG_ENABLE(cld,
1799 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1800 [enable_cld=no])
1802 AC_ARG_ENABLE(frame-pointer,
1803 [AS_HELP_STRING([--enable-frame-pointer],
1804                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1806 case $target_os in
1807 linux* | darwin[[8912]]*)
1808   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1809   # DWARF2.
1810   enable_frame_pointer=no
1811   ;;
1813   enable_frame_pointer=yes
1814   ;;
1815 esac
1818 # Windows32 Registry support for specifying GCC installation paths.
1819 AC_ARG_ENABLE(win32-registry,
1820 [AS_HELP_STRING([--disable-win32-registry],
1821                 [disable lookup of installation paths in the
1822                  Registry on Windows hosts])
1823 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
1824 AS_HELP_STRING([--enable-win32-registry=KEY],
1825                [use KEY instead of GCC version as the last portion
1826                 of the registry key])],,)
1828 case $host_os in
1829   win32 | pe | cygwin* | mingw32*)
1830     if test "x$enable_win32_registry" != xno; then
1831       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1832     fi
1834     if test "x$enable_win32_registry" != xno; then
1835       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1836   [Define to 1 if installation paths should be looked up in the Windows
1837    Registry. Ignored on non-Windows hosts.])
1839       if test "x$enable_win32_registry" != xyes \
1840          && test "x$enable_win32_registry" != x; then
1841         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1842   [Define to be the last component of the Windows registry key under which
1843    to look for installation paths.  The full key used will be 
1844    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1845    The default is the GCC version number.])
1846       fi
1847     fi
1848   ;;
1849 esac
1851 # Get an absolute path to the GCC top-level source directory
1852 holddir=`${PWDCMD-pwd}`
1853 cd $srcdir
1854 topdir=`${PWDCMD-pwd}`
1855 cd $holddir
1857 # Conditionalize the makefile for this host machine.
1858 xmake_file=
1859 for f in ${host_xmake_file}
1861         if test -f ${srcdir}/config/$f
1862         then
1863                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1864         fi
1865 done
1867 # Conditionalize the makefile for this target machine.
1868 tmake_file_=
1869 for f in ${tmake_file}
1871         if test -f ${srcdir}/config/$f
1872         then
1873                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1874         fi
1875 done
1876 tmake_file="${tmake_file_}"
1878 out_object_file=`basename $out_file .c`.o
1879 common_out_object_file=`basename $common_out_file .c`.o
1881 tm_file_list="options.h"
1882 tm_include_list="options.h insn-constants.h"
1883 for f in $tm_file; do
1884   case $f in
1885     ./* )
1886        f=`echo $f | sed 's/^..//'`
1887        tm_file_list="${tm_file_list} $f"
1888        tm_include_list="${tm_include_list} $f"
1889        ;;
1890     defaults.h )
1891        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1892        tm_include_list="${tm_include_list} $f"
1893        ;;
1894     * )
1895        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1896        tm_include_list="${tm_include_list} config/$f"
1897        ;;
1898   esac
1899 done
1901 tm_p_file_list=
1902 tm_p_include_list=
1903 for f in $tm_p_file; do
1904   case $f in
1905     tm-preds.h )
1906        tm_p_file_list="${tm_p_file_list} $f"
1907        tm_p_include_list="${tm_p_include_list} $f"
1908        ;;
1909     * )
1910        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1911        tm_p_include_list="${tm_p_include_list} config/$f"
1912   esac
1913 done
1915 xm_file_list=
1916 xm_include_list=
1917 for f in $xm_file; do
1918   case $f in
1919     ansidecl.h )
1920        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1921        xm_include_list="${xm_include_list} $f"
1922        ;;
1923     auto-host.h )
1924        xm_file_list="${xm_file_list} $f"
1925        xm_include_list="${xm_include_list} $f"
1926        ;;
1927     * )
1928        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1929        xm_include_list="${xm_include_list} config/$f"
1930        ;;
1931   esac
1932 done
1934 host_xm_file_list=
1935 host_xm_include_list=
1936 for f in $host_xm_file; do
1937   case $f in
1938     ansidecl.h )
1939        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1940        host_xm_include_list="${host_xm_include_list} $f"
1941        ;;
1942     auto-host.h )
1943        host_xm_file_list="${host_xm_file_list} $f"
1944        host_xm_include_list="${host_xm_include_list} $f"
1945        ;;
1946     * )
1947        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1948        host_xm_include_list="${host_xm_include_list} config/$f"
1949        ;;
1950   esac
1951 done
1953 build_xm_file_list=
1954 for f in $build_xm_file; do
1955   case $f in
1956     ansidecl.h )
1957        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1958        build_xm_include_list="${build_xm_include_list} $f"
1959        ;;
1960     auto-build.h | auto-host.h )
1961        build_xm_file_list="${build_xm_file_list} $f"
1962        build_xm_include_list="${build_xm_include_list} $f"
1963        ;;
1964     * )
1965        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1966        build_xm_include_list="${build_xm_include_list} config/$f"
1967        ;;
1968   esac
1969 done
1971 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1972 # cross-compiler which does not use the native headers and libraries.
1973 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1974 CROSS=                                          AC_SUBST(CROSS)
1975 ALL=all.internal                                AC_SUBST(ALL)
1976 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1978 if test "x$with_build_sysroot" != x; then
1979   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1980 else
1981   # This value is used, even on a native system, because 
1982   # CROSS_SYSTEM_HEADER_DIR is just 
1983   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1984   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1987 if test x$host != x$target
1988 then
1989         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1990         ALL=all.cross
1991         SYSTEM_HEADER_DIR=$build_system_header_dir
1992         case "$host","$target" in
1993         # Darwin crosses can use the host system's libraries and headers,
1994         # because of the fat library support.  Of course, it must be the
1995         # same version of Darwin on both sides.  Allow the user to
1996         # just say --target=foo-darwin without a version number to mean
1997         # "the version on this system".
1998             *-*-darwin*,*-*-darwin*)
1999                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
2000                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
2001                 if test $hostos = $targetos -o $targetos = darwin ; then
2002                     CROSS=
2003                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
2004                     with_headers=yes
2005                 fi
2006                 ;;
2008             i?86-*-*,x86_64-*-* \
2009             | powerpc*-*-*,powerpc64*-*-*)
2010                 CROSS="$CROSS -DNATIVE_CROSS" ;;
2011         esac
2013         case $target in
2014                 *-*-mingw*)
2015                         if test "x$with_headers" = x; then
2016                                 with_headers=yes
2017                         fi
2018                         ;;
2019                 *)
2020                         ;;
2021         esac
2022 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2023         SYSTEM_HEADER_DIR=$build_system_header_dir 
2026 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
2027   if test "x$with_headers" != x; then
2028     target_header_dir=$with_headers
2029   elif test "x$with_sysroot" = x; then
2030     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2031   elif test "x$with_build_sysroot" != "x"; then
2032     target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2033   elif test "x$with_sysroot" = xyes; then
2034     target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2035   else
2036     target_header_dir="${with_sysroot}${native_system_header_dir}"
2037   fi
2038 else
2039   target_header_dir=${native_system_header_dir}
2042 # If this is a cross-compiler that does not
2043 # have its own set of headers then define
2044 # inhibit_libc
2046 # If this is using newlib, without having the headers available now,
2047 # then define inhibit_libc in LIBGCC2_CFLAGS.
2048 # This prevents libgcc2 from containing any code which requires libc
2049 # support.
2050 : ${inhibit_libc=false}
2051 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2052        test x$with_newlib = xyes ; } &&
2053      { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2054        inhibit_libc=true
2056 AC_SUBST(inhibit_libc)
2058 # When building gcc with a cross-compiler, we need to adjust things so
2059 # that the generator programs are still built with the native compiler.
2060 # Also, we cannot run fixincludes.
2062 # These are the normal (build=host) settings:
2063 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
2064 CXX_FOR_BUILD='$(CXX)'          AC_SUBST(CXX_FOR_BUILD)
2065 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
2066 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2067 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
2068 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
2070 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
2071 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
2073 # And these apply if build != host, or we are generating coverage data
2074 if test x$build != x$host || test "x$coverage_flags" != x
2075 then
2076     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2077     BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2078     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2080     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
2081     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
2082     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
2083     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
2085 AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
2086 AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
2088 # Expand extra_headers to include complete path.
2089 # This substitutes for lots of t-* files.
2090 extra_headers_list=
2091 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2092 for file in ${extra_headers} ; do
2093   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2094 done
2096 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2097 if test x"$use_gcc_tgmath" = xyes
2098 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2101 # Define collect2 in Makefile.
2102 case $host_can_use_collect2 in
2103   no) collect2= ;;
2104   *) collect2='collect2$(exeext)' ;;
2105 esac
2106 AC_SUBST([collect2])
2108 # Add a definition of USE_COLLECT2 if system wants one.
2109 case $use_collect2 in
2110   no) use_collect2= ;;
2111   "") ;;
2112   *) 
2113     host_xm_defines="${host_xm_defines} USE_COLLECT2"
2114     xm_defines="${xm_defines} USE_COLLECT2"
2115     case $host_can_use_collect2 in
2116       no)
2117         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2118         ;;
2119     esac
2120     ;;
2121 esac
2123 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2124 [Define to the name of the LTO plugin DSO that must be
2125   passed to the linker's -plugin=LIB option.])
2127 # ---------------------------
2128 # Assembler & linker features
2129 # ---------------------------
2131 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2132 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2133 # However when ld-new is first executed from the build tree, libtool will
2134 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2135 # to the build tree.  While doing this we need to use the previous-stage
2136 # linker, or we have an infinite loop.  The presence of a shell script as
2137 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2138 # the gcc/collect-ld script.  So we need to know how libtool works, or
2139 # exec-tool will fail.
2141 m4_defun([_LT_CONFIG_COMMANDS], [])
2142 AC_PROG_LIBTOOL
2143 AC_SUBST(objdir)
2144 AC_SUBST(enable_fast_install)
2146 # Identify the assembler which will work hand-in-glove with the newly
2147 # built GCC, so that we can examine its features.  This is the assembler
2148 # which will be driven by the driver program.
2150 # If build != host, and we aren't building gas in-tree, we identify a
2151 # build->target assembler and hope that it will have the same features
2152 # as the host->target assembler we'll be using.
2153 gcc_cv_gas_major_version=
2154 gcc_cv_gas_minor_version=
2155 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2157 m4_pattern_allow([AS_FOR_TARGET])dnl
2158 AS_VAR_SET_IF(gcc_cv_as,, [
2159 if test -x "$DEFAULT_ASSEMBLER"; then
2160         gcc_cv_as="$DEFAULT_ASSEMBLER"
2161 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2162      && test -f ../gas/Makefile \
2163      && test x$build = x$host; then
2164         gcc_cv_as=../gas/as-new$build_exeext
2165 elif test -x as$build_exeext; then
2166         # Build using assembler in the current directory.
2167         gcc_cv_as=./as$build_exeext
2168 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2169         gcc_cv_as="$AS_FOR_TARGET"
2170 else
2171         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2172 fi])
2174 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2175 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2176 case "$ORIGINAL_AS_FOR_TARGET" in
2177   ./as | ./as$build_exeext) ;;
2178   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2179 esac 
2181 AC_MSG_CHECKING(what assembler to use)
2182 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2183   # Single tree build which includes gas.  We want to prefer it
2184   # over whatever linker top-level may have detected, since
2185   # we'll use what we're building after installation anyway.
2186   AC_MSG_RESULT(newly built gas)
2187   in_tree_gas=yes
2188   _gcc_COMPUTE_GAS_VERSION
2189   in_tree_gas_is_elf=no
2190   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2191      || (grep 'obj_format = multi' ../gas/Makefile \
2192          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2193   then
2194     in_tree_gas_is_elf=yes
2195   fi
2196 else
2197   AC_MSG_RESULT($gcc_cv_as)
2198   in_tree_gas=no
2201 default_ld=
2202 AC_ARG_ENABLE(ld,
2203 [[  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]]],
2204 [case "${enableval}" in
2205  no)
2206    default_ld=ld.gold
2207    ;;
2208  esac])
2210 install_gold_as_default=no
2211 AC_ARG_ENABLE(gold,
2212 [[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
2213 [case "${enableval}" in
2214  default)
2215    install_gold_as_default=yes
2216    ;;
2217  yes)
2218    if test x${default_ld} != x; then
2219      install_gold_as_default=yes
2220    fi
2221    ;;
2222  no)
2223    ;;
2224  *)
2225    AC_MSG_ERROR([invalid --enable-gold argument])
2226    ;;
2227  esac])
2229 # Identify the linker which will work hand-in-glove with the newly
2230 # built GCC, so that we can examine its features.  This is the linker
2231 # which will be driven by the driver program.
2233 # If build != host, and we aren't building gas in-tree, we identify a
2234 # build->target linker and hope that it will have the same features
2235 # as the host->target linker we'll be using.
2236 gcc_cv_gld_major_version=
2237 gcc_cv_gld_minor_version=
2238 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2239 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2240 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2242 AS_VAR_SET_IF(gcc_cv_ld,, [
2243 if test -x "$DEFAULT_LINKER"; then
2244         gcc_cv_ld="$DEFAULT_LINKER"
2245 elif test $install_gold_as_default = yes \
2246      && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2247      && test -f ../gold/Makefile \
2248      && test x$build = x$host; then
2249         gcc_cv_ld=../gold/ld-new$build_exeext
2250 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2251      && test -f ../ld/Makefile \
2252      && test x$build = x$host; then
2253         gcc_cv_ld=../ld/ld-new$build_exeext
2254 elif test -x collect-ld$build_exeext; then
2255         # Build using linker in the current directory.
2256         gcc_cv_ld=./collect-ld$build_exeext
2257 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2258         gcc_cv_ld="$LD_FOR_TARGET"
2259 else
2260         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2261 fi])
2263 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2264 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2265 # if the PLUGIN_LD is set ld-new, just have it as ld
2266 # as that is the installed named.
2267 if test x$PLUGIN_LD_SUFFIX = xld-new \
2268    || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2269   PLUGIN_LD_SUFFIX=ld
2271 AC_ARG_WITH(plugin-ld,
2272 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2273 [if test x"$withval" != x; then
2274    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2275    PLUGIN_LD_SUFFIX="$withval"
2276  fi])
2277 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2278 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2280 # Check to see if we are using gold instead of ld
2281 AC_MSG_CHECKING(whether we are using gold)
2282 ld_is_gold=no
2283 if test x$gcc_cv_ld != x; then
2284   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2285      | grep "GNU gold" > /dev/null; then
2286     ld_is_gold=yes
2287   fi
2289 AC_MSG_RESULT($ld_is_gold)
2291 AC_MSG_CHECKING(gold linker with split stack support as non default)
2292 # Check to see if default ld is not gold, but gold is
2293 # available and has support for split stack.  If gcc was configured
2294 # with gold then no checking is done.
2296 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2298 # For platforms other than powerpc64*, enable as appropriate.
2300   gold_non_default=no
2301   ld_gold=`which ${gcc_cv_ld}.gold`
2302 # Make sure this gold has minimal split stack support
2303   if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2304     ld_vers=`$ld_gold --version | sed 1q`
2305     gold_vers=`echo $ld_vers | sed -n \
2306           -e 's,^[[^)]]*[[  ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2307     case $target in
2308 # check that the gold version contains the complete split stack support
2309 # on powerpc64 big and little endian
2310       powerpc64*-*-*)
2311         case "$gold_vers" in
2312           2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2313           ;;
2314           *) gold_non_default=no
2315           ;;
2316         esac
2317         ;;
2318     esac
2319   fi
2320   if test $gold_non_default = yes; then
2321     AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2322             [Define if the gold linker supports split stack and is available as a non-default])
2323   fi
2325 AC_MSG_RESULT($gold_non_default)
2327 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2328 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2329 case "$ORIGINAL_LD_FOR_TARGET" in
2330   ./collect-ld | ./collect-ld$build_exeext) ;;
2331   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2332 esac 
2334 AC_MSG_CHECKING(what linker to use)
2335 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2336    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2337         # Single tree build which includes ld.  We want to prefer it
2338         # over whatever linker top-level may have detected, since
2339         # we'll use what we're building after installation anyway.
2340         AC_MSG_RESULT(newly built ld)
2341         in_tree_ld=yes
2342         in_tree_ld_is_elf=no
2343         if (grep 'EMUL = .*elf' ../ld/Makefile \
2344             || grep 'EMUL = .*linux' ../ld/Makefile \
2345             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2346           in_tree_ld_is_elf=yes
2347         elif test "$ld_is_gold" = yes; then
2348           in_tree_ld_is_elf=yes
2349         fi
2350         for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.ac $gcc_cv_ld_gld_srcdir/Makefile.in
2351         do
2352 changequote(,)dnl
2353                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2354                 if test x$gcc_cv_gld_version != x; then
2355                         break
2356                 fi
2357         done
2358         case $gcc_cv_gld_version in
2359           VERSION=[0-9]*) ;;
2360 changequote([,])dnl
2361           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2362 changequote(,)dnl
2363         esac
2364         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2365         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2366 changequote([,])dnl
2367         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2368         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2369 else
2370         AC_MSG_RESULT($gcc_cv_ld)
2371         in_tree_ld=no
2372         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2373         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2374         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2377 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2378 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2380 # Figure out what nm we will be using.
2381 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2382 AS_VAR_SET_IF(gcc_cv_nm,, [
2383 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2384      && test -f ../binutils/Makefile \
2385      && test x$build = x$host; then
2386         gcc_cv_nm=../binutils/nm-new$build_exeext
2387 elif test -x nm$build_exeext; then
2388         gcc_cv_nm=./nm$build_exeext
2389 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2390         gcc_cv_nm="$NM_FOR_TARGET"
2391 else
2392         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2393 fi])
2395 AC_MSG_CHECKING(what nm to use)
2396 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2397         # Single tree build which includes binutils.
2398         AC_MSG_RESULT(newly built nm)
2399         in_tree_nm=yes
2400 else
2401         AC_MSG_RESULT($gcc_cv_nm)
2402         in_tree_nm=no
2405 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2406 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2407 case "$ORIGINAL_NM_FOR_TARGET" in
2408   ./nm | ./nm$build_exeext) ;;
2409   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2410 esac
2413 # Figure out what objdump we will be using.
2414 AS_VAR_SET_IF(gcc_cv_objdump,, [
2415 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2416      && test -f ../binutils/Makefile \
2417      && test x$build = x$host; then
2418         # Single tree build which includes binutils.
2419         gcc_cv_objdump=../binutils/objdump$build_exeext
2420 elif test -x objdump$build_exeext; then
2421         gcc_cv_objdump=./objdump$build_exeext
2422 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2423         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2424 else
2425         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2426 fi])
2428 AC_MSG_CHECKING(what objdump to use)
2429 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2430         # Single tree build which includes binutils.
2431         AC_MSG_RESULT(newly built objdump)
2432 elif test x$gcc_cv_objdump = x; then
2433         AC_MSG_RESULT(not found)
2434 else
2435         AC_MSG_RESULT($gcc_cv_objdump)
2438 # Figure out what readelf we will be using.
2439 AS_VAR_SET_IF(gcc_cv_readelf,, [
2440 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2441      && test -f ../binutils/Makefile \
2442      && test x$build = x$host; then
2443         # Single tree build which includes binutils.
2444         gcc_cv_readelf=../binutils/readelf$build_exeext
2445 elif test -x readelf$build_exeext; then
2446         gcc_cv_readelf=./readelf$build_exeext
2447 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2448         gcc_cv_readelf="$READELF_FOR_TARGET"
2449 else
2450         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2451 fi])
2453 AC_MSG_CHECKING(what readelf to use)
2454 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2455         # Single tree build which includes binutils.
2456         AC_MSG_RESULT(newly built readelf)
2457 elif test x$gcc_cv_readelf = x; then
2458         AC_MSG_RESULT(not found)
2459 else
2460         AC_MSG_RESULT($gcc_cv_readelf)
2463 # Figure out what assembler alignment features are present.
2464 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2465  [2,6,0],,
2466 [.balign 4
2467 .p2align 2],,
2468 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2469   [Define if your assembler supports .balign and .p2align.])])
2471 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2472  [2,8,0],,
2473  [.p2align 4,,7],,
2474 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2475   [Define if your assembler supports specifying the maximum number
2476    of bytes to skip when using the GAS .p2align command.])])
2478 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2479  [2,8,0],,
2480  [.literal16],,
2481 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2482   [Define if your assembler supports .literal16.])])
2484 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2485  [elf,2,9,0],,
2486  [conftest_label1: .word 0
2487 .subsection -1
2488 conftest_label2: .word 0
2489 .previous],
2490  [if test x$gcc_cv_nm != x; then
2491     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2492     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2493     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2494     then :
2495     else gcc_cv_as_subsection_m1=yes
2496     fi
2497     rm -f conftest.nm1 conftest.nm2
2498   fi],
2499  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2500   [Define if your assembler supports .subsection and .subsection -1 starts
2501    emitting at the beginning of your section.])])
2503 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2504  [2,2,0],,
2505  [      .weak foobar],,
2506 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2508 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2509  [2,17,0],,
2510  [      .weakref foobar, barfnot],,
2511 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2513 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2514  [2,15,91],,
2515  [      .SPACE $TEXT$
2516         .NSUBSPA $CODE$,COMDAT],,
2517 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2519 # .hidden needs to be supported in both the assembler and the linker,
2520 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2521 # This is irritatingly difficult to feature test for; we have to check the
2522 # date string after the version number.  If we've got an in-tree
2523 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2524 # to be safe.
2525 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2526 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2527  [elf,2,13,0],,
2528 [       .hidden foobar
2529 foobar:])
2530 case "${target}" in
2531   *-*-darwin*)
2532     # Darwin as has some visibility support, though with a different syntax.
2533     gcc_cv_as_hidden=yes
2534     ;;
2535 esac
2537 # gnu_indirect_function type is an extension proposed at
2538 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2539 # selection of function implementation
2540 AC_ARG_ENABLE(gnu-indirect-function,
2541  [AS_HELP_STRING([--enable-gnu-indirect-function],
2542                  [enable the use of the @gnu_indirect_function to glibc systems])],
2543  [case $enable_gnu_indirect_function in
2544     yes | no) ;;
2545     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2546 Valid choices are 'yes' and 'no'.]) ;;
2547   esac],
2548  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2550 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2551 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2552 [Define if your system supports gnu indirect functions.])
2555 changequote(,)dnl
2556 if test $in_tree_ld != yes ; then
2557   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2558   if echo "$ld_ver" | grep GNU > /dev/null; then
2559     if test x"$ld_is_gold" = xyes; then
2560       # GNU gold --version looks like this:
2561       #
2562       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2563       #
2564       # We extract the binutils version which is more familiar and specific
2565       # than the gold version.
2566       ld_vers=`echo $ld_ver | sed -n \
2567           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2568     else
2569       # GNU ld --version looks like this:
2570       #
2571       # GNU ld (GNU Binutils) 2.21.51.20110225
2572       ld_vers=`echo $ld_ver | sed -n \
2573           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2574     fi
2575     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'`
2576     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2577     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2578     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2579   else
2580     case "${target}" in
2581       *-*-solaris2*)
2582         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2583         # format.
2584         #
2585         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2586         # /usr/ccs/bin/ld has been configured.
2587         ld_ver=`$gcc_cv_ld -V 2>&1`
2588         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2589           ld_vers=`echo $ld_ver | sed -n \
2590             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2591           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2592           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2593         fi
2594         ;;
2595     esac
2596   fi
2598 changequote([,])dnl
2600 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2601 [[if test $in_tree_ld = yes ; then
2602   gcc_cv_ld_hidden=no
2603   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 \
2604      && test $in_tree_ld_is_elf = yes; then
2605      gcc_cv_ld_hidden=yes
2606   fi
2607 else
2608   gcc_cv_ld_hidden=yes
2609   if test x"$ld_is_gold" = xyes; then
2610     :
2611   elif echo "$ld_ver" | grep GNU > /dev/null; then
2612     case "${target}" in
2613       mmix-knuth-mmixware)
2614         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2615         gcc_cv_ld_hidden=no
2616         ;;
2617     esac
2618     if test 0"$ld_date" -lt 20020404; then
2619       if test -n "$ld_date"; then
2620         # If there was date string, but was earlier than 2002-04-04, fail
2621         gcc_cv_ld_hidden=no
2622       elif test -z "$ld_vers"; then
2623         # If there was no date string nor ld version number, something is wrong
2624         gcc_cv_ld_hidden=no
2625       else
2626         test -z "$ld_vers_patch" && ld_vers_patch=0
2627         if test "$ld_vers_major" -lt 2; then
2628           gcc_cv_ld_hidden=no
2629         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2630           gcc_cv_ld_hidden="no"
2631         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2632           gcc_cv_ld_hidden=no
2633         fi
2634       fi
2635     fi
2636   else
2637     case "${target}" in
2638       *-*-darwin*)
2639         # Darwin ld has some visibility support.
2640         gcc_cv_ld_hidden=yes
2641         ;;
2642       hppa64*-*-hpux* | ia64*-*-hpux*)
2643         gcc_cv_ld_hidden=yes
2644         ;;
2645       *-*-solaris2.1[0-9]*)
2646         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2647         # .symbolic was only added in Solaris 9 12/02.
2648         gcc_cv_ld_hidden=yes
2649         ;;
2650       *)
2651         gcc_cv_ld_hidden=no
2652         ;;
2653     esac
2654   fi
2655 fi]])
2656 libgcc_visibility=no
2657 AC_SUBST(libgcc_visibility)
2658 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2659 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2660   libgcc_visibility=yes
2661   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2662   [Define if your assembler and linker support .hidden.])
2665 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2666 gcc_cv_ld_ro_rw_mix=unknown
2667 if test $in_tree_ld = yes ; then
2668   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 \
2669      && test $in_tree_ld_is_elf = yes; then
2670     gcc_cv_ld_ro_rw_mix=read-write
2671   fi
2672 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2673   echo '.section myfoosect, "a"' > conftest1.s
2674   echo '.section myfoosect, "aw"' > conftest2.s
2675   echo '.byte 1' >> conftest2.s
2676   echo '.section myfoosect, "a"' > conftest3.s
2677   echo '.byte 0' >> conftest3.s
2678   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2679      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2680      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2681      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2682         conftest2.o conftest3.o > /dev/null 2>&1; then
2683     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2684                          | sed -e '/myfoosect/!d' -e N`
2685     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2686       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2687         gcc_cv_ld_ro_rw_mix=read-only
2688       else
2689         gcc_cv_ld_ro_rw_mix=read-write
2690       fi
2691     fi
2692   fi
2693 changequote(,)dnl
2694   rm -f conftest.* conftest[123].*
2695 changequote([,])dnl
2697 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2698         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2699   [Define if your linker links a mix of read-only
2700    and read-write sections into a read-write section.])
2702 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2704 gcc_AC_INITFINI_ARRAY
2706 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2707 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2708   [elf,2,11,0],,
2709 [       .data
2710         .uleb128 L2 - L1
2712         .uleb128 1280
2713         .sleb128 -1010
2714 L2:],
2715 [[# GAS versions before 2.11 do not support uleb128,
2716   # despite appearing to.
2717   # ??? There exists an elf-specific test that will crash
2718   # the assembler.  Perhaps it's better to figure out whether
2719   # arbitrary sections are supported and try the test.
2720   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2721   if echo "$as_ver" | grep GNU > /dev/null; then
2722     as_vers=`echo $as_ver | sed -n \
2723         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2724     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2725     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2726     if test $as_major -eq 2 && test $as_minor -lt 11
2727     then :
2728     else gcc_cv_as_leb128=yes
2729     fi
2730   fi]],
2731   [AC_DEFINE(HAVE_AS_LEB128, 1,
2732     [Define if your assembler supports .sleb128 and .uleb128.])])
2734 # Check if we have assembler support for unwind directives.
2735 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2736   ,,
2737 [       .text
2738         .cfi_startproc
2739         .cfi_offset 0, 0
2740         .cfi_same_value 1
2741         .cfi_def_cfa 1, 2
2742         .cfi_escape 1, 2, 3, 4, 5
2743         .cfi_endproc],
2744 [case "$target" in
2745   *-*-solaris*)
2746     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2747     # read-only and read-write sections, we need to make sure that the
2748     # assembler used emits read-write .eh_frame sections.
2749     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2750       if test "x$gcc_cv_objdump" != x; then
2751         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2752                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2753           gcc_cv_as_cfi_directive=no
2754         else
2755           case "$target" in
2756             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2757               # On Solaris/x86, make sure that GCC and assembler agree on using
2758               # read-only .eh_frame sections for 64-bit.
2759               if test x$gas = xyes; then
2760                  as_ix86_64_opt="--64"
2761               else
2762                  as_ix86_64_opt="-xarch=amd64"
2763               fi
2764               if $gcc_cv_as $as_ix86_64_opt -o conftest.o conftest.s > /dev/null 2>&1 && \
2765                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2766                         sed -e /.eh_frame/!d -e N | \
2767                         grep READONLY > /dev/null; then
2768                 gcc_cv_as_cfi_directive=yes
2769               else
2770                 gcc_cv_as_cfi_directive=no
2771               fi
2772               ;;
2773             *)
2774               gcc_cv_as_cfi_directive=yes
2775               ;;
2776           esac 
2777         fi
2778       else
2779         # no objdump, err on the side of caution
2780         gcc_cv_as_cfi_directive=no
2781       fi
2782     else
2783       gcc_cv_as_cfi_directive=yes
2784     fi
2785     ;;
2786   *-*-*)
2787     gcc_cv_as_cfi_directive=yes
2788     ;;
2789 esac])
2790 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2791 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2792   ,,
2793 [       .text
2794         .cfi_startproc
2795         .cfi_adjust_cfa_offset 64
2796         .skip 75040, 0
2797         .cfi_adjust_cfa_offset 128
2798         .cfi_endproc],
2800 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2801     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2802    gcc_cv_as_cfi_advance_working=yes
2805 else
2806   # no objdump, err on the side of caution
2807   gcc_cv_as_cfi_advance_working=no
2809 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2810 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2811   [`if test $gcc_cv_as_cfi_directive = yes \
2812        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2813   [Define 0/1 if your assembler supports CFI directives.])
2815 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2816 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2817   gcc_cv_as_cfi_personality_directive, ,,
2818 [       .text
2819         .cfi_startproc
2820         .cfi_personality 0, symbol
2821         .cfi_endproc])
2822 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2823   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2824     then echo 1; else echo 0; fi`],
2825   [Define 0/1 if your assembler supports .cfi_personality.])
2827 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2828   gcc_cv_as_cfi_sections_directive, ,,
2829 [       .text
2830         .cfi_sections .debug_frame, .eh_frame
2831         .cfi_startproc
2832         .cfi_endproc],
2833 [case $target_os in
2834   win32 | pe | cygwin* | mingw32*)
2835     # Need to check that we generated the correct relocation for the
2836     # .debug_frame section.  This was fixed for binutils 2.21.
2837     gcc_cv_as_cfi_sections_directive=no
2838     if test "x$gcc_cv_objdump" != x; then
2839      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2840         grep secrel > /dev/null; then
2841       gcc_cv_as_cfi_sections_directive=yes
2842      fi
2843     fi
2844     ;;
2845   *)
2846     gcc_cv_as_cfi_sections_directive=yes
2847     ;;
2848 esac])
2849 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2850 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2851   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2852     then echo 1; else echo 0; fi`],
2853   [Define 0/1 if your assembler supports .cfi_sections.])
2855 # GAS versions up to and including 2.11.0 may mis-optimize
2856 # .eh_frame data.
2857 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2858   [elf,2,12,0],,
2859 [       .text
2860 .LFB1:
2861         .4byte  0
2862 .L1:
2863         .4byte  0
2864 .LFE1:
2865         .section        .eh_frame,"aw",@progbits
2866 __FRAME_BEGIN__:
2867         .4byte  .LECIE1-.LSCIE1
2868 .LSCIE1:
2869         .4byte  0x0
2870         .byte   0x1
2871         .ascii "z\0"
2872         .byte   0x1
2873         .byte   0x78
2874         .byte   0x1a
2875         .byte   0x0
2876         .byte   0x4
2877         .4byte  1
2878         .p2align 1
2879 .LECIE1:
2880 .LSFDE1:
2881         .4byte  .LEFDE1-.LASFDE1
2882 .LASFDE1:
2883         .4byte  .LASFDE1-__FRAME_BEGIN__
2884         .4byte  .LFB1
2885         .4byte  .LFE1-.LFB1
2886         .byte   0x4
2887         .4byte  .LFE1-.LFB1
2888         .byte   0x4
2889         .4byte  .L1-.LFB1
2890 .LEFDE1:],
2891 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2892 cat > conftest.lit <<EOF
2893  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2894  0010 01000000 12000000 18000000 00000000  ................
2895  0020 08000000 04080000 0044               .........D      @&t@
2897 cat > conftest.big <<EOF
2898  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2899  0010 00000001 00000012 00000018 00000000  ................
2900  0020 00000008 04000000 0844               .........D      @&t@
2902   # If the assembler didn't choke, and we can objdump,
2903   # and we got the correct data, then succeed.
2904   # The text in the here-document typically retains its unix-style line
2905   # endings, while the output of objdump will use host line endings.
2906   # Therefore, use diff -b for the comparisons.
2907   if test x$gcc_cv_objdump != x \
2908   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2909      | tail -3 > conftest.got \
2910   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2911     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2912   then
2913     gcc_cv_as_eh_frame=yes
2914   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2915     gcc_cv_as_eh_frame=buggy
2916   else
2917     # Uh oh, what do we do now?
2918     gcc_cv_as_eh_frame=no
2919   fi])
2921 if test $gcc_cv_as_eh_frame = buggy; then
2922   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2923   [Define if your assembler mis-optimizes .eh_frame data.])
2926 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2927  [elf,2,12,0], [--fatal-warnings],
2928  [.section .rodata.str, "aMS", @progbits, 1])
2929 if test $gcc_cv_as_shf_merge = no; then
2930   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2931     [elf,2,12,0], [--fatal-warnings],
2932     [.section .rodata.str, "aMS", %progbits, 1])
2934 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2935   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2936 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2938 gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
2939 [.stabs "gcc2_compiled.",60,0,0,0],,
2940 [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
2941   [Define if your assembler supports .stabs.])])
2943 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2944  gcc_cv_as_comdat_group,
2945  [elf,2,16,0], [--fatal-warnings],
2946  [.section .text,"axG",@progbits,.foo,comdat])
2947 if test $gcc_cv_as_comdat_group = yes; then
2948   gcc_cv_as_comdat_group_percent=no
2949   gcc_cv_as_comdat_group_group=no
2950 else
2951  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2952    gcc_cv_as_comdat_group_percent,
2953    [elf,2,16,0], [--fatal-warnings],
2954    [.section .text,"axG",%progbits,.foo,comdat])
2955  if test $gcc_cv_as_comdat_group_percent = yes; then
2956    gcc_cv_as_comdat_group_group=no
2957  else
2958    case "${target}" in
2959      # Sun as uses a completely different syntax.
2960      *-*-solaris2*)
2961        case "${target}" in
2962          sparc*-*-solaris2*)
2963            conftest_s='
2964                .group foo,".text%foo",#comdat
2965                .section ".text%foo", #alloc,#execinstr,#progbits
2966                .globl foo
2967              foo:
2968              '
2969            ;;
2970          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2971            conftest_s='
2972                .group foo,.text%foo,#comdat
2973                .section .text%foo, "ax", @progbits
2974                .globl  foo
2975              foo:
2976              '
2977            ;;
2978        esac
2979        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2980          gcc_cv_as_comdat_group_group,
2981          ,, [$conftest_s])
2982        ;;
2983    esac
2984    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2985      gcc_cv_as_comdat_group_group=no
2986    fi
2987  fi
2989 if test x"$ld_is_gold" = xyes; then
2990   comdat_group=yes
2991 elif test $in_tree_ld = yes ; then
2992   comdat_group=no
2993   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 \
2994      && test $in_tree_ld_is_elf = yes; then
2995      comdat_group=yes
2996   fi
2997 elif echo "$ld_ver" | grep GNU > /dev/null; then
2998   comdat_group=yes
2999   if test 0"$ld_date" -lt 20050308; then
3000     if test -n "$ld_date"; then
3001       # If there was date string, but was earlier than 2005-03-08, fail
3002       comdat_group=no
3003     elif test "$ld_vers_major" -lt 2; then
3004       comdat_group=no
3005     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3006       comdat_group=no
3007     fi
3008   fi
3009 else
3010 changequote(,)dnl
3011   case "${target}" in
3012     *-*-solaris2.1[1-9]*)
3013       comdat_group=no
3014       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3015       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3016       # version 1.688.
3017       #
3018       # If using Sun as for COMDAT group as emitted by GCC, one needs at
3019       # least ld version 1.2267.
3020       if test "$ld_vers_major" -gt 1; then
3021         comdat_group=yes
3022       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3023         comdat_group=yes
3024       elif test "$ld_vers_minor" -ge 2267; then
3025         comdat_group=yes
3026       fi
3027       ;;
3028     *)
3029       # Assume linkers other than GNU ld don't support COMDAT group.
3030       comdat_group=no
3031       ;;
3032   esac
3033 changequote([,])dnl
3035 # Allow overriding the automatic COMDAT group tests above.
3036 AC_ARG_ENABLE(comdat,
3037   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3038   [comdat_group="$enable_comdat"])
3039 if test $comdat_group = no; then
3040   gcc_cv_as_comdat_group=no
3041   gcc_cv_as_comdat_group_percent=no
3042   gcc_cv_as_comdat_group_group=no
3044 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3045   [`if test $gcc_cv_as_comdat_group = yes \
3046     || test $gcc_cv_as_comdat_group_percent = yes \
3047     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3048 [Define 0/1 if your assembler and linker support COMDAT groups.])
3050 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3051  gcc_cv_as_discriminator,
3052  [2,19,51],,
3053 [       .text
3054         .file 1 "conf.c"
3055         .loc 1 1 0 discriminator 1],,
3056 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3057   [Define if your assembler supports the .loc discriminator sub-directive.])])
3059 # Thread-local storage - the check is heavily parameterized.
3060 conftest_s=
3061 tls_first_major=
3062 tls_first_minor=
3063 tls_as_opt=
3064 case "$target" in
3065 changequote(,)dnl
3066   alpha*-*-*)
3067     conftest_s='
3068         .section ".tdata","awT",@progbits
3069 foo:    .long   25
3070         .text
3071         ldq     $27,__tls_get_addr($29)         !literal!1
3072         lda     $16,foo($29)                    !tlsgd!1
3073         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
3074         ldq     $27,__tls_get_addr($29)         !literal!2
3075         lda     $16,foo($29)                    !tlsldm!2
3076         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
3077         ldq     $1,foo($29)                     !gotdtprel
3078         ldah    $2,foo($29)                     !dtprelhi
3079         lda     $3,foo($2)                      !dtprello
3080         lda     $4,foo($29)                     !dtprel
3081         ldq     $1,foo($29)                     !gottprel
3082         ldah    $2,foo($29)                     !tprelhi
3083         lda     $3,foo($2)                      !tprello
3084         lda     $4,foo($29)                     !tprel'
3085         tls_first_major=2
3086         tls_first_minor=13
3087         tls_as_opt=--fatal-warnings
3088         ;;
3089   cris-*-*|crisv32-*-*)
3090     conftest_s='
3091         .section ".tdata","awT",@progbits
3092 x:      .long   25
3093         .text
3094         move.d x:IE,$r10
3095         nop'
3096         tls_first_major=2
3097         tls_first_minor=20
3098         tls_as_opt=--fatal-warnings
3099         ;;
3100   frv*-*-*)
3101     conftest_s='
3102         .section ".tdata","awT",@progbits
3103 x:      .long   25
3104         .text
3105         call    #gettlsoff(x)'
3106         tls_first_major=2
3107         tls_first_minor=14
3108         ;;
3109   hppa*-*-linux*)
3110     conftest_s='
3111 t1:     .reg    %r20
3112 t2:     .reg    %r21
3113 gp:     .reg    %r19
3114         .section ".tdata","awT",@progbits
3115 foo:    .long   25
3116         .text
3117         .align  4
3118         addil LT%foo-$tls_gdidx$,gp
3119         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3120         b __tls_get_addr
3121         nop             
3122         addil LT%foo-$tls_ldidx$,gp
3123         b __tls_get_addr
3124         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3125         addil LR%foo-$tls_dtpoff$,%ret0
3126         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3127         mfctl %cr27,%t1                 
3128         addil LT%foo-$tls_ieoff$,gp
3129         ldw RT%foo-$tls_ieoff$(%r1),%t2
3130         add %t1,%t2,%t3                 
3131         mfctl %cr27,%t1                 
3132         addil LR%foo-$tls_leoff$,%t1
3133         ldo RR%foo-$tls_leoff$(%r1),%t2'
3134         tls_first_major=2
3135         tls_first_minor=15
3136         tls_as_opt=--fatal-warnings
3137         ;;
3138   arm*-*-*)
3139     conftest_s='
3140         .section ".tdata","awT",%progbits
3141 foo:    .long   25
3142         .text
3143 .word foo(gottpoff)
3144 .word foo(tpoff)
3145 .word foo(tlsgd)
3146 .word foo(tlsldm)
3147 .word foo(tlsldo)'
3148         tls_first_major=2
3149         tls_first_minor=17
3150         ;;
3151   i[34567]86-*-* | x86_64-*-*)
3152     case "$target" in
3153       i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3154         on_solaris=yes
3155         ;;
3156       *)
3157         on_solaris=no
3158         ;;
3159     esac
3160     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3161       conftest_s='
3162         .section .tdata,"awt",@progbits'
3163       tls_first_major=0
3164       tls_first_minor=0
3165       tls_section_flag=t
3166 changequote([,])dnl
3167       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3168 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3169 changequote(,)dnl
3170     else
3171       conftest_s='
3172         .section ".tdata","awT",@progbits'
3173       tls_first_major=2
3174       tls_first_minor=14
3175       tls_section_flag=T
3176       tls_as_opt="--fatal-warnings"
3177     fi
3178     case "$target" in
3179       i[34567]86-*-*)
3180         conftest_s="$conftest_s
3181 foo:    .long   25
3182         .text
3183         movl    %gs:0, %eax
3184         leal    foo@tlsgd(,%ebx,1), %eax
3185         leal    foo@tlsldm(%ebx), %eax
3186         leal    foo@dtpoff(%eax), %edx
3187         movl    foo@gottpoff(%ebx), %eax
3188         subl    foo@gottpoff(%ebx), %eax
3189         addl    foo@gotntpoff(%ebx), %eax
3190         movl    foo@indntpoff, %eax
3191         movl    \$foo@tpoff, %eax
3192         subl    \$foo@tpoff, %eax
3193         leal    foo@ntpoff(%ecx), %eax"
3194         ;;
3195       x86_64-*-*)
3196         if test x$on_solaris = xyes; then
3197           case $gas_flag in
3198             yes) tls_as_opt="$tls_as_opt --64" ;;
3199             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3200           esac    
3201         fi
3202         conftest_s="$conftest_s
3203 foo:    .long   25
3204         .text
3205         movq    %fs:0, %rax
3206         leaq    foo@tlsgd(%rip), %rdi
3207         leaq    foo@tlsld(%rip), %rdi
3208         leaq    foo@dtpoff(%rax), %rdx
3209         movq    foo@gottpoff(%rip), %rax
3210         movq    \$foo@tpoff, %rax"
3211         ;;
3212     esac
3213     ;;
3214   ia64-*-*)
3215     conftest_s='
3216         .section ".tdata","awT",@progbits
3217 foo:    data8   25
3218         .text
3219         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3220         addl    r17 = @ltoff(@dtprel(foo#)), gp
3221         addl    r18 = @ltoff(@tprel(foo#)), gp
3222         addl    r19 = @dtprel(foo#), gp
3223         adds    r21 = @dtprel(foo#), r13
3224         movl    r23 = @dtprel(foo#)
3225         addl    r20 = @tprel(foo#), gp
3226         adds    r22 = @tprel(foo#), r13
3227         movl    r24 = @tprel(foo#)'
3228         tls_first_major=2
3229         tls_first_minor=13
3230         tls_as_opt=--fatal-warnings
3231         ;;
3232   microblaze*-*-*)
3233     conftest_s='
3234         .section .tdata,"awT",@progbits
3236         .word 2
3237         .text
3238         addik r5,r20,x@TLSGD
3239         addik r5,r20,x@TLSLDM'
3240         tls_first_major=2
3241         tls_first_minor=20
3242         tls_as_opt='--fatal-warnings'
3243         ;;
3244   mips*-*-*)
3245     conftest_s='
3246         .section .tdata,"awT",@progbits
3248         .word 2
3249         .text
3250         addiu $4, $28, %tlsgd(x)
3251         addiu $4, $28, %tlsldm(x)
3252         lui $4, %dtprel_hi(x)
3253         addiu $4, $4, %dtprel_lo(x)
3254         lw $4, %gottprel(x)($28)
3255         lui $4, %tprel_hi(x)
3256         addiu $4, $4, %tprel_lo(x)'
3257         tls_first_major=2
3258         tls_first_minor=16
3259         tls_as_opt='-32 --fatal-warnings'
3260         ;;
3261   m68k-*-*)
3262     conftest_s='
3263         .section .tdata,"awT",@progbits
3265         .word 2
3266         .text
3267 foo:
3268         move.l x@TLSGD(%a5),%a0
3269         move.l x@TLSLDM(%a5),%a0
3270         move.l x@TLSLDO(%a5),%a0
3271         move.l x@TLSIE(%a5),%a0
3272         move.l x@TLSLE(%a5),%a0'
3273         tls_first_major=2
3274         tls_first_minor=19
3275         tls_as_opt='--fatal-warnings'
3276         ;;
3277   nios2-*-*)
3278       conftest_s='
3279         .section ".tdata","awT",@progbits'
3280         tls_first_major=2
3281         tls_first_minor=23
3282         tls_as_opt="--fatal-warnings"
3283         ;;
3284   aarch64*-*-*)
3285     conftest_s='
3286         .section ".tdata","awT",%progbits
3287 foo:    .long   25
3288         .text
3289         adrp  x0, :tlsgd:x
3290         add   x0, x0, #:tlsgd_lo12:x
3291         bl    __tls_get_addr
3292         nop'
3293         tls_first_major=2
3294         tls_first_minor=20
3295         tls_as_opt='--fatal-warnings'
3296         ;;
3297   powerpc-ibm-aix*)
3298     conftest_s='
3299         .extern __get_tpointer
3300         .toc
3301 LC..1:
3302         .tc a[TC],a[TL]@le
3303         .csect .text[PR]
3304 .tlstest:
3305         lwz 9,LC..1(2)
3306         bla __get_tpointer
3307         lwzx 3,9,3
3308         .globl a
3309         .csect a[TL],4
3311         .space 4'
3312         tls_first_major=0
3313         tls_first_minor=0
3314         ;;
3315   powerpc64*-*-*)
3316     conftest_s='
3317         .section ".tdata","awT",@progbits
3318         .align 3
3319 ld0:    .space 8
3320 ld1:    .space 8
3321 x1:     .space 8
3322 x2:     .space 8
3323 x3:     .space 8
3324         .text
3325         addi 3,2,ld0@got@tlsgd
3326         bl .__tls_get_addr
3327         nop
3328         addi 3,2,ld1@toc
3329         bl .__tls_get_addr
3330         nop
3331         addi 3,2,x1@got@tlsld
3332         bl .__tls_get_addr
3333         nop
3334         addi 9,3,x1@dtprel
3335         bl .__tls_get_addr
3336         nop
3337         addis 9,3,x2@dtprel@ha
3338         addi 9,9,x2@dtprel@l
3339         bl .__tls_get_addr
3340         nop
3341         ld 9,x3@got@dtprel(2)
3342         add 9,9,3
3343         bl .__tls_get_addr
3344         nop'
3345         tls_first_major=2
3346         tls_first_minor=14
3347         tls_as_opt="-a64 --fatal-warnings"
3348         ;;
3349   powerpc*-*-*)
3350     conftest_s='
3351         .section ".tdata","awT",@progbits
3352         .align 2
3353 ld0:    .space 4
3354 ld1:    .space 4
3355 x1:     .space 4
3356 x2:     .space 4
3357 x3:     .space 4
3358         .text
3359         addi 3,31,ld0@got@tlsgd
3360         bl __tls_get_addr
3361         addi 3,31,x1@got@tlsld
3362         bl __tls_get_addr
3363         addi 9,3,x1@dtprel
3364         addis 9,3,x2@dtprel@ha
3365         addi 9,9,x2@dtprel@l
3366         lwz 9,x3@got@tprel(31)
3367         add 9,9,x@tls
3368         addi 9,2,x1@tprel
3369         addis 9,2,x2@tprel@ha
3370         addi 9,9,x2@tprel@l'
3371         tls_first_major=2
3372         tls_first_minor=14
3373         tls_as_opt="-a32 --fatal-warnings"
3374         ;;
3375   s390-*-*)
3376     conftest_s='
3377         .section ".tdata","awT",@progbits
3378 foo:    .long   25
3379         .text
3380         .long   foo@TLSGD
3381         .long   foo@TLSLDM
3382         .long   foo@DTPOFF
3383         .long   foo@NTPOFF
3384         .long   foo@GOTNTPOFF
3385         .long   foo@INDNTPOFF
3386         l       %r1,foo@GOTNTPOFF(%r12)
3387         l       %r1,0(%r1):tls_load:foo
3388         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3389         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3390         tls_first_major=2
3391         tls_first_minor=14
3392         tls_as_opt="-m31 --fatal-warnings"
3393         ;;
3394   s390x-*-*)
3395     conftest_s='
3396         .section ".tdata","awT",@progbits
3397 foo:    .long   25
3398         .text
3399         .quad   foo@TLSGD
3400         .quad   foo@TLSLDM
3401         .quad   foo@DTPOFF
3402         .quad   foo@NTPOFF
3403         .quad   foo@GOTNTPOFF
3404         lg      %r1,foo@GOTNTPOFF(%r12)
3405         larl    %r1,foo@INDNTPOFF
3406         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3407         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3408         tls_first_major=2
3409         tls_first_minor=14
3410         tls_as_opt="-m64 -Aesame --fatal-warnings"
3411         ;;
3412   sh-*-* | sh[123456789lbe]*-*-*)
3413     conftest_s='
3414         .section ".tdata","awT",@progbits
3415 foo:    .long   25
3416         .text
3417         .long   foo@TLSGD
3418         .long   foo@TLSLDM
3419         .long   foo@DTPOFF
3420         .long   foo@GOTTPOFF
3421         .long   foo@TPOFF'
3422         tls_first_major=2
3423         tls_first_minor=13
3424         tls_as_opt=--fatal-warnings
3425         ;;
3426   sparc*-*-*)
3427     case "$target" in
3428       sparc*-sun-solaris2.*)
3429         on_solaris=yes
3430         ;;
3431       *)
3432         on_solaris=no
3433         ;;
3434     esac
3435     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3436       conftest_s='
3437         .section ".tdata",#alloc,#write,#tls'
3438         tls_first_major=0
3439         tls_first_minor=0
3440     else
3441       conftest_s='
3442         .section ".tdata","awT",@progbits'
3443         tls_first_major=2
3444         tls_first_minor=14
3445         tls_as_opt="-32 --fatal-warnings"
3446     fi
3447     conftest_s="$conftest_s
3448 foo:    .long   25
3449         .text
3450         sethi   %tgd_hi22(foo), %o0
3451         add     %o0, %tgd_lo10(foo), %o1
3452         add     %l7, %o1, %o0, %tgd_add(foo)
3453         call    __tls_get_addr, %tgd_call(foo)
3454         sethi   %tldm_hi22(foo), %l1
3455         add     %l1, %tldm_lo10(foo), %l2
3456         add     %l7, %l2, %o0, %tldm_add(foo)
3457         call    __tls_get_addr, %tldm_call(foo)
3458         sethi   %tldo_hix22(foo), %l3
3459         xor     %l3, %tldo_lox10(foo), %l4
3460         add     %o0, %l4, %l5, %tldo_add(foo)
3461         sethi   %tie_hi22(foo), %o3
3462         add     %o3, %tie_lo10(foo), %o3
3463         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3464         add     %g7, %o2, %o4, %tie_add(foo)
3465         sethi   %tle_hix22(foo), %l1
3466         xor     %l1, %tle_lox10(foo), %o5
3467         ld      [%g7 + %o5], %o1"
3468         ;;
3469   tilepro*-*-*)
3470       conftest_s='
3471         .section ".tdata","awT",@progbits
3472 foo:    .long   25
3473         .text
3474         addli   r0, zero, tls_gd(foo)
3475         auli    r0, zero, tls_gd_ha16(foo)
3476         addli   r0, r0, tls_gd_lo16(foo)
3477         jal     __tls_get_addr
3478         addli   r0, zero, tls_ie(foo)
3479         auli    r0, r0, tls_ie_ha16(foo)
3480         addli   r0, r0, tls_ie_lo16(foo)'
3481         tls_first_major=2
3482         tls_first_minor=22
3483         tls_as_opt="--fatal-warnings"
3484         ;;
3485   tilegx*-*-*)
3486       conftest_s='
3487         .section ".tdata","awT",@progbits
3488 foo:    .long   25
3489         .text
3490         shl16insli r0, zero, hw0_last_tls_gd(foo)
3491         shl16insli r0, zero, hw1_last_tls_gd(foo)
3492         shl16insli r0, r0,   hw0_tls_gd(foo)
3493         jal        __tls_get_addr
3494         shl16insli r0, zero, hw1_last_tls_ie(foo)
3495         shl16insli r0, r0,   hw0_tls_ie(foo)'
3496         tls_first_major=2
3497         tls_first_minor=22
3498         tls_as_opt="--fatal-warnings"
3499         ;;
3500   xtensa*-*-*)
3501     conftest_s='
3502         .section ".tdata","awT",@progbits
3503 foo:    .long   25
3504         .text
3505         movi    a8, foo@TLSFUNC
3506         movi    a10, foo@TLSARG
3507         callx8.tls a8, foo@TLSCALL'
3508         tls_first_major=2
3509         tls_first_minor=19
3510         ;;
3511 changequote([,])dnl
3512 esac
3513 set_have_as_tls=no
3514 if test "x$enable_tls" = xno ; then
3515   : # TLS explicitly disabled.
3516 elif test "x$enable_tls" = xyes ; then
3517   set_have_as_tls=yes # TLS explicitly enabled.
3518 elif test -z "$tls_first_major"; then
3519   : # If we don't have a check, assume no support.
3520 else
3521   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3522   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3523   [set_have_as_tls=yes])
3525 if test $set_have_as_tls = yes ; then
3526   AC_DEFINE(HAVE_AS_TLS, 1,
3527             [Define if your assembler and linker support thread-local storage.])
3530 # Target-specific assembler checks.
3532 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3533 gcc_cv_ld_static_dynamic=no
3534 gcc_cv_ld_static_option='-Bstatic'
3535 gcc_cv_ld_dynamic_option='-Bdynamic'
3536 if test $in_tree_ld = yes ; then
3537   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
3538     gcc_cv_ld_static_dynamic=yes
3539   fi
3540 elif test x$gcc_cv_ld != x; then
3541   # Check if linker supports -Bstatic/-Bdynamic option
3542   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3543      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3544       gcc_cv_ld_static_dynamic=yes
3545   else
3546     case "$target" in
3547       # AIX ld uses -b flags
3548       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3549         gcc_cv_ld_static_dynamic=yes
3550         gcc_cv_ld_static_option="-bstatic"
3551         gcc_cv_ld_dynamic_option="-bdynamic"
3552         ;;
3553       # HP-UX ld uses -a flags to select between shared and archive.
3554       *-*-hpux*)
3555         if test x"$gnu_ld" = xno; then
3556           gcc_cv_ld_static_dynamic=yes
3557           gcc_cv_ld_static_option="-aarchive_shared"
3558           gcc_cv_ld_dynamic_option="-adefault"
3559         fi
3560         ;;
3561       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3562       *-*-solaris2*)
3563         gcc_cv_ld_static_dynamic=yes
3564         ;;
3565     esac
3566   fi
3568 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3569         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3570 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3571         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3572 [Define to the linker option to disable use of shared objects.])
3573         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3574 [Define to the linker option to enable use of shared objects.])
3576 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3578 if test x"$demangler_in_ld" = xyes; then
3579   AC_MSG_CHECKING(linker --demangle support)
3580   gcc_cv_ld_demangle=no
3581   if test $in_tree_ld = yes; then
3582     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 \
3583       gcc_cv_ld_demangle=yes
3584     fi
3585   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3586     # Check if the GNU linker supports --demangle option
3587     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3588       gcc_cv_ld_demangle=yes
3589     fi
3590   fi
3591   if test x"$gcc_cv_ld_demangle" = xyes; then
3592     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3593 [Define if your linker supports --demangle option.])
3594   fi
3595   AC_MSG_RESULT($gcc_cv_ld_demangle)
3598 AC_MSG_CHECKING(linker plugin support)
3599 gcc_cv_lto_plugin=0
3600 if test -f liblto_plugin.la; then
3601   save_ld_ver="$ld_ver"
3602   save_ld_vers_major="$ld_vers_major"
3603   save_ld_vers_minor="$ld_vers_minor"
3604   save_ld_is_gold="$ld_is_gold"
3606   ld_is_gold=no
3608   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3609     ld_ver="GNU ld"
3610     # FIXME: ld_is_gold?
3611     ld_vers_major="$gcc_cv_gld_major_version"
3612     ld_vers_minor="$gcc_cv_gld_minor_version"
3613   else
3614     # Determine plugin linker version.
3615     # FIXME: Partial duplicate from above, generalize.
3616 changequote(,)dnl
3617     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3618     if echo "$ld_ver" | grep GNU > /dev/null; then
3619       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3620         ld_is_gold=yes
3621         ld_vers=`echo $ld_ver | sed -n \
3622             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3623       else
3624         ld_vers=`echo $ld_ver | sed -n \
3625             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3626       fi
3627       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3628       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3629     fi
3630 changequote([,])dnl
3631   fi
3633   # Determine plugin support.
3634   if echo "$ld_ver" | grep GNU > /dev/null; then
3635     # Require GNU ld or gold 2.21+ for plugin support by default.
3636     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3637       gcc_cv_lto_plugin=2
3638     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3639     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3640       gcc_cv_lto_plugin=1
3641     fi
3642   fi
3644   ld_ver="$save_ld_ver"
3645   ld_vers_major="$save_ld_vers_major"
3646   ld_vers_minor="$save_ld_vers_minor"
3647   ld_is_gold="$save_ld_is_gold"
3649 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3650   [Define to the level of your linker's plugin support.])
3651 AC_MSG_RESULT($gcc_cv_lto_plugin)
3653 case "$target" in
3654   aarch64*-*-*)
3655     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3656                           [-mabi=lp64], [.text],,,)
3657     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3658       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3659                 [Define if your assembler supports the -mabi option.])
3660     else
3661       if test x$with_abi = xilp32; then
3662         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3663                      Upgrade the Assembler.])
3664       fi
3665       if test x"$with_multilib_list" = xdefault; then
3666         TM_MULTILIB_CONFIG=lp64
3667       else
3668         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3669         for aarch64_multilib in ${aarch64_multilibs}; do
3670           case ${aarch64_multilib} in
3671             ilp32)
3672               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3673                             Upgrade the Assembler.])
3674               ;;
3675             *)
3676               ;;
3677           esac
3678         done
3679       fi
3680     fi
3681     # Check if we have binutils support for relocations types needed by -fpic
3682     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
3683     [
3684         .text
3685         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
3686     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
3687         [Define if your assembler supports relocs needed by -fpic.])])
3688     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
3689     AC_ARG_ENABLE(fix-cortex-a53-835769,
3690     [
3691 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
3692         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3693 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
3694         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3695     ],
3696       [
3697         case $enableval in
3698           yes)
3699             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
3700             ;;
3701           no)
3702             ;;
3703           *)
3704             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
3705   Valid choices are 'yes' and 'no'.])
3706             ;;
3708         esac
3709       ],
3710     [])
3711     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
3712     AC_ARG_ENABLE(fix-cortex-a53-843419,
3713     [
3714 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
3715         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3716 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
3717         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3718     ],
3719       [
3720         case $enableval in
3721           yes)
3722             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
3723             ;;
3724           no)
3725             ;;
3726           *)
3727             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
3728   Valid choices are 'yes' and 'no'.])
3729             ;;
3731         esac
3732       ],
3733     [])
3734     ;;
3736   # All TARGET_ABI_OSF targets.
3737   alpha*-*-linux* | alpha*-*-*bsd*)
3738     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3739         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3740 [       .set nomacro
3741         .text
3742         extbl   $3, $2, $3      !lituse_bytoff!1
3743         ldq     $2, a($29)      !literal!1
3744         ldq     $4, b($29)      !literal!2
3745         ldq_u   $3, 0($2)       !lituse_base!1
3746         ldq     $27, f($29)     !literal!5
3747         jsr     $26, ($27), f   !lituse_jsr!5
3748         ldah    $29, 0($26)     !gpdisp!3
3749         lda     $0, c($29)      !gprel
3750         ldah    $1, d($29)      !gprelhigh
3751         lda     $1, d($1)       !gprellow
3752         lda     $29, 0($29)     !gpdisp!3],,
3753     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3754   [Define if your assembler supports explicit relocations.])])
3755     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3756         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3757 [       .set nomacro
3758         .text
3759         ldq     $27, a($29)     !literal!1
3760         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3761     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3762   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3763     ;;
3765   avr-*-*)
3766     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
3767       [--mlink-relax], [.text],,
3768       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
3769                 [Define if your avr assembler supports --mlink-relax option.])])
3771     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
3772       [-mrmw], [.text],,
3773       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
3774                 [Define if your avr assembler supports -mrmw option.])])
3775     ;;
3777   cris-*-*)
3778     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3779       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3780       [-no-mul-bug-abort], [.text],,
3781       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3782                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3783     ;;
3785   sparc*-*-*)
3786     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3787       [.register %g2, #scratch],,
3788       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3789                 [Define if your assembler supports .register.])])
3791     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3792       [-relax], [.text],,
3793       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3794                 [Define if your assembler supports -relax option.])])
3796     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3797       gcc_cv_as_sparc_gotdata_op,,
3798       [-K PIC],
3799 [.text
3800 .align 4
3801 foo:
3802         nop
3803 bar:
3804         sethi %gdop_hix22(foo), %g1
3805         xor    %g1, %gdop_lox10(foo), %g1
3806         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3807       [if test x$gcc_cv_ld != x \
3808        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3809          if test x$gcc_cv_objdump != x; then
3810            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3811               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3812                gcc_cv_as_sparc_gotdata_op=no
3813            else
3814                gcc_cv_as_sparc_gotdata_op=yes
3815            fi
3816          fi
3817        fi
3818        rm -f conftest],
3819       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3820                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3822     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3823       gcc_cv_as_sparc_ua_pcrel,,
3824       [-K PIC],
3825 [.text
3826 foo:
3827         nop
3828 .data
3829 .align 4
3830 .byte 0
3831 .uaword %r_disp32(foo)],
3832       [if test x$gcc_cv_ld != x \
3833        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3834          gcc_cv_as_sparc_ua_pcrel=yes
3835        fi
3836        rm -f conftest],
3837       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3838                 [Define if your assembler and linker support unaligned PC relative relocs.])
3840       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3841         gcc_cv_as_sparc_ua_pcrel_hidden,,
3842         [-K PIC],
3843 [.data
3844 .align 4
3845 .byte 0x31
3846 .uaword %r_disp32(foo)
3847 .byte 0x32, 0x33, 0x34
3848 .global foo
3849 .hidden foo
3850 foo:
3851 .skip 4],
3852         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3853          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3854          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3855             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3856             if $gcc_cv_objdump -R conftest 2> /dev/null \
3857                | grep 'DISP32' > /dev/null 2>&1; then
3858                 :
3859             else
3860                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3861             fi
3862          fi
3863          rm -f conftest],
3864          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3865                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3866     ]) # unaligned pcrel relocs
3868     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3869       gcc_cv_as_sparc_offsetable_lo10,,
3870       [-xarch=v9],
3871 [.text
3872         or %g1, %lo(ab) + 12, %g1
3873         or %g1, %lo(ab + 12), %g1],
3874       [if test x$gcc_cv_objdump != x \
3875        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3876           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3877          gcc_cv_as_sparc_offsetable_lo10=yes
3878        fi],
3879        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3880                  [Define if your assembler supports offsetable %lo().])])
3882     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3883       gcc_cv_as_sparc_fmaf,,
3884       [-xarch=v9d],
3885       [.text
3886        .register %g2, #scratch
3887        .register %g3, #scratch
3888        .align 4
3889        fmaddd %f0, %f2, %f4, %f6
3890        addxccc %g1, %g2, %g3
3891        fsrl32 %f2, %f4, %f8
3892        fnaddd %f10, %f12, %f14],,
3893       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3894                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3896     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3897       gcc_cv_as_sparc_sparc4,,
3898       [-xarch=sparc4],
3899       [.text
3900        .register %g2, #scratch
3901        .register %g3, #scratch
3902        .align 4
3903        cxbe %g2, %g3, 1f
3904 1:     cwbneg %g2, %g3, 1f
3905 1:     sha1
3906        md5
3907        aes_kexpand0 %f4, %f6, %f8
3908        des_round %f38, %f40, %f42, %f44
3909        camellia_f %f54, %f56, %f58, %f60
3910        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3911       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3912                 [Define if your assembler supports SPARC4 instructions.])])
3914     gcc_GAS_CHECK_FEATURE([LEON instructions],
3915       gcc_cv_as_sparc_leon,,
3916       [-Aleon],
3917       [.text
3918        .register %g2, #scratch
3919        .register %g3, #scratch
3920        .align 4
3921        smac %g2, %g3, %g1
3922        umac %g2, %g3, %g1
3923        casa [[%g2]] 0xb, %g3, %g1],,
3924       [AC_DEFINE(HAVE_AS_LEON, 1,
3925                 [Define if your assembler supports LEON instructions.])])
3926     ;;
3928 changequote(,)dnl
3929   i[34567]86-*-* | x86_64-*-*)
3930 changequote([,])dnl
3931     case $target_os in
3932       cygwin*)
3933         # Full C++ conformance when using a shared libstdc++-v3 requires some
3934         # support from the Cygwin DLL, which in more recent versions exports
3935         # wrappers to aid in interposing and redirecting operators new, delete,
3936         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3937         # are configuring for a version of Cygwin that exports the wrappers.
3938         if test x$host = x$target && test x$host_cpu = xi686; then
3939           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3940         else
3941           # Can't check presence of libc functions during cross-compile, so
3942           # we just have to assume we're building for an up-to-date target.
3943           gcc_ac_cygwin_dll_wrappers=yes
3944         fi
3945         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3946           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3947           [Define if you want to generate code by default that assumes that the
3948            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3949     esac
3950     case $target_os in
3951       cygwin* | pe | mingw32* | interix*)
3952         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3953         # definition is used unconditionally to initialise the default state of
3954         # the target option variable that governs usage of the feature.
3955         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3956          [2,19,52],,[.comm foo,1,32])
3957         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3958           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3959           [Define if your assembler supports specifying the alignment
3960            of objects allocated using the GAS .comm command.])
3961         # Used for DWARF 2 in PE
3962         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3963           gcc_cv_as_ix86_pe_secrel32,
3964           [2,15,91],,
3965 [.text
3966 foo:    nop
3967 .data
3968         .secrel32 foo],
3969           [if test x$gcc_cv_ld != x \
3970            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3971              gcc_cv_as_ix86_pe_secrel32=yes
3972            fi
3973            rm -f conftest],
3974           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3975             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3976         # Test if the assembler supports the extended form of the .section
3977         # directive that specifies section alignment.  LTO support uses this,
3978         # but normally only after installation, so we warn but don't fail the
3979         # configure if LTO is enabled but the assembler does not support it.
3980         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3981           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3982         if test x$gcc_cv_as_section_has_align != xyes; then
3983           case ",$enable_languages," in
3984             *,lto,*)
3985               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3986               ;;
3987           esac
3988         fi
3989         ;;
3990     esac
3992     # Test if the assembler supports the section flag 'e' for specifying
3993     # an excluded section.
3994     gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3995       [2,22,51], [--fatal-warnings],
3996 [.section foo1,"e"
3997 .byte 0,0,0,0])
3998     AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3999       [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
4000       [Define if your assembler supports specifying the section flag e.])
4002     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4003        gcc_cv_as_ix86_filds,,,
4004        [filds (%ebp); fists (%ebp)],,
4005        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4006          [Define if your assembler uses filds and fists mnemonics.])])
4008     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4009        gcc_cv_as_ix86_fildq,,,
4010        [fildq (%ebp); fistpq (%ebp)],,
4011        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4012          [Define if your assembler uses fildq and fistq mnemonics.])])
4014     gcc_GAS_CHECK_FEATURE([cmov syntax],
4015       gcc_cv_as_ix86_cmov_sun_syntax,,,
4016       [cmovl.l %edx, %eax],,
4017       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4018         [Define if your assembler supports the Sun syntax for cmov.])])
4020     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4021       gcc_cv_as_ix86_ffreep,,,
4022       [ffreep %st(1)],,
4023       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4024         [Define if your assembler supports the ffreep mnemonic.])])
4026     gcc_GAS_CHECK_FEATURE([.quad directive],
4027       gcc_cv_as_ix86_quad,,,
4028       [.quad 0],,
4029       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4030         [Define if your assembler supports the .quad directive.])])
4032     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4033       gcc_cv_as_ix86_sahf,,,
4034       [.code64
4035        sahf],,
4036       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4037         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4039     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4040       gcc_cv_as_ix86_interunit_movq,,,
4041       [.code64
4042        movq %mm0, %rax
4043        movq %rax, %xmm0])
4044     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4045       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4046       [Define if your assembler supports interunit movq mnemonic.])
4048     gcc_GAS_CHECK_FEATURE([hle prefixes],
4049       gcc_cv_as_ix86_hle,,,
4050       [lock xacquire cmpxchg %esi, (%ecx)],,
4051       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4052         [Define if your assembler supports HLE prefixes.])])
4054     gcc_GAS_CHECK_FEATURE([swap suffix],
4055       gcc_cv_as_ix86_swap,,,
4056       [movl.s %esp, %ebp],,
4057       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4058         [Define if your assembler supports the swap suffix.])])
4060     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4061       gcc_cv_as_ix86_diff_sect_delta,,,
4062       [.section .rodata
4063 .L1:
4064         .long .L2-.L1
4065         .long .L3-.L1
4066         .text
4067 .L3:    nop
4068 .L2:    nop],,
4069       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4070         [Define if your assembler supports the subtraction of symbols in different sections.])])
4072     # These two are used unconditionally by i386.[ch]; it is to be defined
4073     # to 1 if the feature is present, 0 otherwise.
4074     as_ix86_gotoff_in_data_opt=
4075     if test x$gas = xyes; then
4076       as_ix86_gotoff_in_data_opt="--32"
4077     fi
4078     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4079       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4080       [$as_ix86_gotoff_in_data_opt],
4081 [       .text
4082 .L0:
4083         nop
4084         .data
4085         .long .L0@GOTOFF])
4086     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4087       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4088       [Define true if the assembler supports '.long foo@GOTOFF'.])
4090     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4091         gcc_cv_as_ix86_rep_lock_prefix,,,
4092         [rep movsl
4093          rep ret
4094          rep nop
4095          rep bsf %ecx, %eax
4096          rep bsr %ecx, %eax
4097          lock addl %edi, (%eax,%esi)
4098          lock orl $0, (%esp)],,
4099         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4100           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4102     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4103         gcc_cv_as_ix86_ud2,,,
4104         [ud2],,
4105       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4106         [Define if your assembler supports the 'ud2' mnemonic.])])
4108     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4109         gcc_cv_as_ix86_tlsgdplt,,,
4110         [call    tls_gd@tlsgdplt],
4111         [if test x$gcc_cv_ld != x \
4112          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4113            gcc_cv_as_ix86_tlsgdplt=yes
4114          fi
4115          rm -f conftest],
4116       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4117         [Define if your assembler and linker support @tlsgdplt.])])
4119     conftest_s='
4120         .section .tdata,"aw'$tls_section_flag'",@progbits
4121 tls_ld:
4122         .section .text,"ax",@progbits
4123          call    tls_ld@tlsldmplt'
4124     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4125         gcc_cv_as_ix86_tlsldmplt,,,
4126         [$conftest_s],
4127         [if test x$gcc_cv_ld != x \
4128          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4129            gcc_cv_as_ix86_tlsldmplt=yes
4130          fi
4131          rm -f conftest])
4132     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4133       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4134       [Define to 1 if your assembler and linker support @tlsldmplt.])
4136     # Enforce 32-bit output with gas and gld.
4137     if test x$gas = xyes; then
4138       as_ix86_tls_ldm_opt="--32"
4139     fi
4140     if echo "$ld_ver" | grep GNU > /dev/null; then
4141       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4142         ld_ix86_tls_ldm_opt="-melf_i386_sol2"
4143       else
4144         ld_ix86_tls_ldm_opt="-melf_i386"
4145       fi
4146     fi
4147     conftest_s='
4148         .section .text,"ax",@progbits
4149         .globl  _start
4150         .type   _start, @function
4151 _start:      
4152         leal    value@tlsldm(%ebx), %eax
4153         call    ___tls_get_addr@plt
4155         .section .tdata,"aw'$tls_section_flag'",@progbits
4156         .type   value, @object
4157 value:'
4158     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4159         gcc_cv_as_ix86_tlsldm,,
4160         [$as_ix86_tls_ldm_opt],
4161         [$conftest_s],
4162         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4163             && $gcc_cv_ld $ld_ix86_tls_ldm_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4164            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4165               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4166              gcc_cv_as_ix86_tlsldm=yes
4167            fi
4168          fi
4169          rm -f conftest])
4170     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4171       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4172       [Define to 1 if your assembler and linker support @tlsldm.])
4174     ;;
4176   ia64*-*-*)
4177     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4178         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4179 [       .text
4180         addl r15 = @ltoffx(x#), gp
4181         ;;
4182         ld8.mov r16 = [[r15]], x#],,
4183     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4184           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4186     ;;
4188   powerpc*-*-*)
4190     case $target in
4191       *-*-darwin*)
4192         gcc_GAS_CHECK_FEATURE([.machine directive support],
4193           gcc_cv_as_machine_directive,,,
4194           [     .machine ppc7400])
4195         if test x$gcc_cv_as_machine_directive != xyes; then
4196           echo "*** This target requires an assembler supporting \".machine\"" >&2
4197           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4198           test x$build = x$target && exit 1
4199         fi
4200         ;;
4201     esac
4203     case $target in
4204       *-*-aix*) conftest_s='    .machine "pwr5"
4205         .csect .text[[PR]]
4206         mfcr 3,128';;
4207       *-*-darwin*) conftest_s=' .text
4208         mfcr r3,128';;
4209       *) conftest_s='   .machine power4
4210         .text
4211         mfcr 3,128';;
4212     esac
4214     gcc_GAS_CHECK_FEATURE([mfcr field support],
4215       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4216       [$conftest_s],,
4217       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4218           [Define if your assembler supports mfcr field.])])
4220     case $target in
4221       *-*-aix*) conftest_s='    .machine "pwr5"
4222         .csect .text[[PR]]
4223         popcntb 3,3';;
4224       *) conftest_s='   .machine power5
4225         .text
4226         popcntb 3,3';;
4227     esac
4229     gcc_GAS_CHECK_FEATURE([popcntb support],
4230       gcc_cv_as_powerpc_popcntb, [2,17,0],,
4231       [$conftest_s],,
4232       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4233           [Define if your assembler supports popcntb field.])])
4235     case $target in
4236       *-*-aix*) conftest_s='    .machine "pwr5x"
4237         .csect .text[[PR]]
4238         frin 1,1';;
4239       *) conftest_s='   .machine power5
4240         .text
4241         frin 1,1';;
4242     esac
4244     gcc_GAS_CHECK_FEATURE([fp round support],
4245       gcc_cv_as_powerpc_fprnd, [2,17,0],,
4246       [$conftest_s],,
4247       [AC_DEFINE(HAVE_AS_FPRND, 1,
4248           [Define if your assembler supports fprnd.])])
4250     case $target in
4251       *-*-aix*) conftest_s='    .machine "pwr6"
4252         .csect .text[[PR]]
4253         mffgpr 1,3';;
4254       *) conftest_s='   .machine power6
4255         .text
4256         mffgpr 1,3';;
4257     esac
4259     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4260       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4261       [$conftest_s],,
4262       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4263           [Define if your assembler supports mffgpr and mftgpr.])])
4265     case $target in
4266       *-*-aix*) conftest_s='    .csect .text[[PR]]
4267 LCF..0:
4268         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4269       *-*-darwin*)
4270         conftest_s='    .text
4271 LCF0:
4272         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4273       *) conftest_s='   .text
4274 .LCF0:
4275         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4276     esac
4278     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4279       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4280       [$conftest_s],,
4281       [AC_DEFINE(HAVE_AS_REL16, 1,
4282           [Define if your assembler supports R_PPC_REL16 relocs.])])
4284     case $target in
4285       *-*-aix*) conftest_s='    .machine "pwr6"
4286         .csect .text[[PR]]
4287         cmpb 3,4,5';;
4288       *) conftest_s='   .machine power6
4289         .text
4290         cmpb 3,4,5';;
4291     esac
4293     gcc_GAS_CHECK_FEATURE([compare bytes support],
4294       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4295       [$conftest_s],,
4296       [AC_DEFINE(HAVE_AS_CMPB, 1,
4297           [Define if your assembler supports cmpb.])])
4299     case $target in
4300       *-*-aix*) conftest_s='    .machine "pwr6"
4301         .csect .text[[PR]]
4302         dadd 1,2,3';;
4303       *) conftest_s='   .machine power6
4304         .text
4305         dadd 1,2,3';;
4306     esac
4308     gcc_GAS_CHECK_FEATURE([decimal float support],
4309       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4310       [$conftest_s],,
4311       [AC_DEFINE(HAVE_AS_DFP, 1,
4312           [Define if your assembler supports DFP instructions.])])
4314     case $target in
4315       *-*-aix*) conftest_s='    .machine "pwr7"
4316         .csect .text[[PR]]
4317         lxvd2x 1,2,3';;
4318       *) conftest_s='   .machine power7
4319         .text
4320         lxvd2x 1,2,3';;
4321     esac
4323     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4324       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4325       [$conftest_s],,
4326       [AC_DEFINE(HAVE_AS_VSX, 1,
4327           [Define if your assembler supports VSX instructions.])])
4329     case $target in
4330       *-*-aix*) conftest_s='    .machine "pwr7"
4331         .csect .text[[PR]]
4332         popcntd 3,3';;
4333       *) conftest_s='   .machine power7
4334         .text
4335         popcntd 3,3';;
4336     esac
4338     gcc_GAS_CHECK_FEATURE([popcntd support],
4339       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4340       [$conftest_s],,
4341       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4342           [Define if your assembler supports POPCNTD instructions.])])
4344     case $target in
4345       *-*-aix*) conftest_s='    .machine "pwr8"
4346         .csect .text[[PR]]';;
4347       *) conftest_s='   .machine power8
4348         .text';;
4349     esac
4351     gcc_GAS_CHECK_FEATURE([power8 support],
4352       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4353       [$conftest_s],,
4354       [AC_DEFINE(HAVE_AS_POWER8, 1,
4355           [Define if your assembler supports POWER8 instructions.])])
4357     case $target in
4358       *-*-aix*) conftest_s='    .machine "pwr9"
4359         .csect .text[[PR]]';;
4360       *) conftest_s='   .machine power9
4361         .text';;
4362     esac
4364     gcc_GAS_CHECK_FEATURE([power9 support],
4365       gcc_cv_as_powerpc_power9, [2,19,2], -a32,
4366       [$conftest_s],,
4367       [AC_DEFINE(HAVE_AS_POWER9, 1,
4368           [Define if your assembler supports POWER9 instructions.])])
4370     case $target in
4371       *-*-aix*) conftest_s='    .csect .text[[PR]]
4372         lwsync';;
4373       *) conftest_s='   .text
4374         lwsync';;
4375     esac
4377     gcc_GAS_CHECK_FEATURE([lwsync support],
4378       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4379       [$conftest_s],,
4380       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4381           [Define if your assembler supports LWSYNC instructions.])])
4383     case $target in
4384       *-*-aix*) conftest_s='    .machine "476"
4385         .csect .text[[PR]]
4386         dci 0';;
4387       *) conftest_s='   .machine "476"
4388         .text
4389         dci 0';;
4390     esac
4392     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4393       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4394       [$conftest_s],,
4395       [AC_DEFINE(HAVE_AS_DCI, 1,
4396           [Define if your assembler supports the DCI/ICI instructions.])])
4398     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4399       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4400       [.gnu_attribute 4,1],,
4401       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4402           [Define if your assembler supports .gnu_attribute.])])
4404     gcc_GAS_CHECK_FEATURE([tls marker support],
4405       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4406       [ bl __tls_get_addr(x@tlsgd)],,
4407       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4408           [Define if your assembler supports arg info for __tls_get_addr.])])
4410     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4411       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4412       [ .reloc .,R_PPC64_ENTRY; nop],,
4413       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4414           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4416     case $target in
4417       *-*-aix*)
4418         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4419           gcc_cv_as_aix_ref, [2,21,0],,
4420           [     .csect stuff[[rw]]
4421              stuff:
4422                 .long 1
4423                 .extern sym
4424                 .ref sym
4425           ],,
4426           [AC_DEFINE(HAVE_AS_REF, 1,
4427             [Define if your assembler supports .ref])])
4429         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4430           gcc_cv_as_aix_dwloc, [2,21,0],,
4431           [     .dwsect 0xA0000
4432         Lframe..0:
4433                 .vbyte 4,Lframe..0:
4434           ],,
4435           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4436             [Define if your assembler supports AIX debug frame section label reference.])])
4437         ;;
4438     esac
4439     ;;
4441   mips*-*-*)
4442     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4443       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4444 [       lw $4,%gp_rel(foo)($4)],,
4445       [if test x$target_cpu_default = x
4446        then target_cpu_default=MASK_EXPLICIT_RELOCS
4447        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4448        fi])
4450     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4451       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4452       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4453                  [Define if the assembler understands -mno-shared.])])
4455     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4456       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4457       [.gnu_attribute 4,1],,
4458       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4459           [Define if your assembler supports .gnu_attribute.])])
4461     gcc_GAS_CHECK_FEATURE([.module support],
4462       gcc_cv_as_mips_dot_module,,[-32],
4463       [.module mips2
4464        .module fp=xx],,
4465       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4466           [Define if your assembler supports .module.])])
4467     if test x$gcc_cv_as_mips_dot_module = xno \
4468        && test x$with_fp_32 != x; then
4469       AC_MSG_ERROR(
4470         [Requesting --with-fp-32= requires assembler support for .module.])
4471     fi
4473     gcc_GAS_CHECK_FEATURE([.micromips support],
4474       gcc_cv_as_micromips_support,,[--fatal-warnings],
4475       [.set micromips],,
4476       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4477           [Define if your assembler supports the .set micromips directive])])
4479     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4480       gcc_cv_as_mips_dtprelword, [2,18,0],,
4481       [.section .tdata,"awT",@progbits
4483         .word 2
4484         .text
4485         .dtprelword x+0x8000],,
4486       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4487           [Define if your assembler supports .dtprelword.])])
4489     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4490       gcc_cv_as_mips_dspr1_mult,,,
4491 [       .set    mips32r2
4492         .set    nodspr2
4493         .set    dsp
4494         madd    $ac3,$4,$5
4495         maddu   $ac3,$4,$5
4496         msub    $ac3,$4,$5
4497         msubu   $ac3,$4,$5
4498         mult    $ac3,$4,$5
4499         multu   $ac3,$4,$5],,
4500       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4501           [Define if your assembler supports DSPR1 mult.])])
4503     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4504     gcc_cv_as_ld_jalr_reloc=no
4505     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4506       if test $in_tree_ld = yes ; then
4507         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 \
4508            && test $in_tree_ld_is_elf = yes; then
4509           gcc_cv_as_ld_jalr_reloc=yes
4510         fi
4511       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4512         echo '  .ent x' > conftest.s
4513         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4514         echo '  lw $25,%call16(y)($28)' >> conftest.s
4515         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4516         echo '1:        jalr $25' >> conftest.s
4517         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4518         echo '1:        jalr $25' >> conftest.s
4519         echo '  .end x' >> conftest.s
4520         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4521            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4522           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4523              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4524             gcc_cv_as_ld_jalr_reloc=yes
4525           fi
4526         fi
4527         rm -f conftest.*
4528       fi
4529     fi
4530     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4531       if test x$target_cpu_default = x; then
4532         target_cpu_default=MASK_RELAX_PIC_CALLS
4533       else
4534         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4535       fi
4536     fi
4537     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4539     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4540       [gcc_cv_ld_mips_personality_relaxation],
4541       [gcc_cv_ld_mips_personality_relaxation=no
4542        if test $in_tree_ld = yes ; then
4543          if test "$gcc_cv_gld_major_version" -eq 2 \
4544                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4545                  -o "$gcc_cv_gld_major_version" -gt 2; then
4546            gcc_cv_ld_mips_personality_relaxation=yes
4547          fi
4548        elif test x$gcc_cv_as != x \
4549                  -a x$gcc_cv_ld != x \
4550                  -a x$gcc_cv_readelf != x ; then
4551          cat > conftest.s <<EOF
4552         .cfi_startproc
4553         .cfi_personality 0x80,indirect_ptr
4554         .ent test
4555 test:
4556         nop
4557         .end test
4558         .cfi_endproc
4560         .section .data,"aw",@progbits
4561 indirect_ptr:
4562         .dc.a personality
4564          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4565             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4566            if $gcc_cv_readelf -d conftest 2>&1 \
4567               | grep TEXTREL > /dev/null 2>&1; then
4568              :
4569            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4570                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4571              :
4572            else
4573              gcc_cv_ld_mips_personality_relaxation=yes
4574            fi
4575          fi
4576        fi
4577        rm -f conftest.s conftest.o conftest])
4578     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4579             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4580       [Define if your linker can relax absolute .eh_frame personality
4581 pointers into PC-relative form.])
4582     fi
4584     gcc_GAS_CHECK_FEATURE([-mnan= support],
4585       gcc_cv_as_mips_nan,,
4586       [-mnan=2008],,,
4587       [AC_DEFINE(HAVE_AS_NAN, 1,
4588                  [Define if the assembler understands -mnan=.])])
4589     if test x$gcc_cv_as_mips_nan = xno \
4590        && test x$with_nan != x; then
4591       AC_MSG_ERROR(
4592         [Requesting --with-nan= requires assembler support for -mnan=])
4593     fi
4594     ;;
4595     s390*-*-*)
4596     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4597       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4598       [.gnu_attribute 8,1],,
4599       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4600           [Define if your assembler supports .gnu_attribute.])])
4601     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
4602       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
4603       [ .machinemode push
4604         .machinemode pop
4605         .machine push
4606         .machine pop],,
4607       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
4608           [Define if your assembler supports .machine and .machinemode.])])
4609     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
4610       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
4611       [ .machine z13+vx ],,
4612       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
4613           [Define if your assembler supports architecture modifiers.])])
4614     ;;
4615 esac
4617 # Mips and HP-UX need the GNU assembler.
4618 # Linux on IA64 might be able to use the Intel assembler.
4620 case "$target" in
4621   mips*-*-* | *-*-hpux* )
4622     if test x$gas_flag = xyes \
4623        || test x"$host" != x"$build" \
4624        || test ! -x "$gcc_cv_as" \
4625        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4626       :
4627     else
4628       echo "*** This configuration requires the GNU assembler" >&2
4629       exit 1
4630     fi
4631     ;;
4632 esac
4634 # ??? Not all targets support dwarf2 debug_line, even within a version
4635 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4636 # info to the output file.  So, as supported targets are added to gas 2.11,
4637 # add some instruction here to (also) show we expect this might work.
4638 # ??? Once 2.11 is released, probably need to add first known working
4639 # version to the per-target configury.
4640 case "$cpu_type" in
4641   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4642   | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4643   | visium | xstormy16 | xtensa)
4644     insn="nop"
4645     ;;
4646   ia64 | s390)
4647     insn="nop 0"
4648     ;;
4649   mmix)
4650     insn="swym 0"
4651     ;;
4652 esac
4653 if test x"$insn" != x; then
4654  conftest_s="\
4655         .file 1 \"conftest.s\"
4656         .loc 1 3 0
4657         $insn"
4658  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4659   gcc_cv_as_dwarf2_debug_line,
4660   [elf,2,11,0],, [$conftest_s],
4661   [if test x$gcc_cv_objdump != x \
4662    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4663       | grep debug_line > /dev/null 2>&1; then
4664      gcc_cv_as_dwarf2_debug_line=yes
4665    fi])
4667 # The .debug_line file table must be in the exact order that
4668 # we specified the files, since these indices are also used
4669 # by DW_AT_decl_file.  Approximate this test by testing if
4670 # the assembler bitches if the same index is assigned twice.
4671  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4672   gcc_cv_as_dwarf2_file_buggy,,,
4673 [       .file 1 "foo.s"
4674         .file 1 "bar.s"])
4676  if test $gcc_cv_as_dwarf2_debug_line = yes \
4677  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4678         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4679   [Define if your assembler supports dwarf2 .file/.loc directives,
4680    and preserves file table indices exactly as given.])
4681  fi
4683  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4684   gcc_cv_as_gdwarf2_flag,
4685   [elf,2,11,0], [--gdwarf2], [$insn],,
4686   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4687 [Define if your assembler supports the --gdwarf2 option.])])
4689  gcc_GAS_CHECK_FEATURE([--gstabs option],
4690   gcc_cv_as_gstabs_flag,
4691   [elf,2,11,0], [--gstabs], [$insn],,
4692   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4693 [Define if your assembler supports the --gstabs option.])])
4695  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4696   gcc_cv_as_debug_prefix_map_flag,
4697   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4698   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4699 [Define if your assembler supports the --debug-prefix-map option.])])
4702 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4703   gcc_cv_as_compress_debug,,[--compress-debug-sections],,
4704   [# gas compiled without zlib cannot compress debug sections and warns
4705    # about it, but still exits successfully.  So check for this, too.
4706    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4707    then
4708      gcc_cv_as_compress_debug=0
4709    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4710    then
4711      gcc_cv_as_compress_debug=1
4712      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4713      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4714    else
4715      gcc_cv_as_compress_debug=0
4716    # FIXME: Future gas versions will support ELF gABI style via
4717    # --compress-debug-sections[=type].
4718    fi])
4719 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4720 [Define to the level of your assembler's compressed debug section support.])
4721 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4722 [Define to the assembler option to enable compressed debug sections.])
4723 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4724 [Define to the assembler option to disable compressed debug sections.])
4726 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4727  ,,
4728 [.lcomm bar,4,16],,
4729 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4730   [Define if your assembler supports .lcomm with an alignment field.])])
4732 if test x$with_sysroot = x && test x$host = x$target \
4733    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4734    && test "$prefix" != "NONE"; then
4735   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4736 [Define to PREFIX/include if cpp should also search that directory.])
4739 # Determine the version of glibc, if any, used on the target.
4740 AC_MSG_CHECKING([for target glibc version])
4741 AC_ARG_WITH([glibc-version],
4742   [AS_HELP_STRING([--with-glibc-version=M.N],
4743     [assume GCC used with glibc version M.N or later])], [
4744 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4745   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4746   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4747 else
4748   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4749 fi], [
4750 glibc_version_major=0
4751 glibc_version_minor=0
4752 [if test -f $target_header_dir/features.h \
4753   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4754   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4755   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4756   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4757 fi]])
4758 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4759 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
4760 [GNU C Library major version number used on the target, or 0.])
4761 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
4762 [GNU C Library minor version number used on the target, or 0.])
4764 AC_ARG_ENABLE(gnu-unique-object,
4765  [AS_HELP_STRING([--enable-gnu-unique-object],
4766    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4767  [case $enable_gnu_unique_object in
4768     yes | no) ;;
4769     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4770 Valid choices are 'yes' and 'no'.]) ;;
4771   esac],
4772  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4773    [elf,2,19,52],,
4774    [.type foo, '$target_type_format_char'gnu_unique_object],,
4775 # We need to unquote above to to use the definition from config.gcc.
4776 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4777    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4778    )])
4779 if test x$enable_gnu_unique_object = xyes; then
4780   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4781    [Define if your assembler supports @gnu_unique_object.])
4784 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4785  [gcc_cv_as_line_zero],
4786  [gcc_cv_as_line_zero=no
4787   if test $in_tree_gas = yes; then
4788     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4789   elif test "x$gcc_cv_as" != x; then
4790     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4791     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4792        test "x`cat conftest.out`" = x
4793     then
4794       gcc_cv_as_line_zero=yes
4795     else
4796       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4797       cat conftest.s >&AS_MESSAGE_LOG_FD
4798       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4799       cat conftest.out >&AS_MESSAGE_LOG_FD
4800     fi
4801     rm -f conftest.o conftest.s conftest.out
4802   fi])
4803 if test "x$gcc_cv_as_line_zero" = xyes; then
4804   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4805 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4808 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4809 gcc_cv_ld_eh_frame_hdr=no
4810 if test $in_tree_ld = yes ; then
4811   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 \
4812      && test $in_tree_ld_is_elf = yes; then
4813     gcc_cv_ld_eh_frame_hdr=yes
4814   fi
4815 elif test x$gcc_cv_ld != x; then
4816   if echo "$ld_ver" | grep GNU > /dev/null; then
4817     # Check if linker supports --eh-frame-hdr option
4818     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4819       gcc_cv_ld_eh_frame_hdr=yes
4820     fi
4821   else
4822     case "$target" in
4823       *-*-solaris2*)
4824         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4825         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4826           gcc_cv_ld_eh_frame_hdr=yes
4827         fi
4828         ;;
4829     esac
4830   fi
4832 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4833 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4834         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4835 [Define if your linker supports .eh_frame_hdr.])
4837 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4839 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4840 gcc_cv_ld_eh_frame_ciev3=no
4841 if test $in_tree_ld = yes ; then
4842   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 \
4843      && test $in_tree_ld_is_elf = yes; then
4844     gcc_cv_ld_eh_frame_ciev3=yes
4845   fi
4846 elif test x$gcc_cv_ld != x; then
4847   if echo "$ld_ver" | grep GNU > /dev/null; then
4848     gcc_cv_ld_eh_frame_ciev3=yes
4849     if test 0"$ld_date" -lt 20040513; then
4850       if test -n "$ld_date"; then
4851         # If there was date string, but was earlier than 2004-05-13, fail
4852         gcc_cv_ld_eh_frame_ciev3=no
4853       elif test "$ld_vers_major" -lt 2; then
4854         gcc_cv_ld_eh_frame_ciev3=no
4855       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4856         gcc_cv_ld_eh_frame_ciev3=no
4857       fi
4858     fi
4859   else
4860     case "$target" in
4861       *-*-solaris2*)
4862         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4863         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4864           gcc_cv_ld_eh_frame_ciev3=yes
4865         fi
4866         ;;
4867     esac
4868   fi
4870 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4871   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4872   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4873 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4875 AC_MSG_CHECKING(linker position independent executable support)
4876 gcc_cv_ld_pie=no
4877 if test $in_tree_ld = yes ; then
4878   case "$target" in
4879     # Full PIE support on Solaris was only introduced in gld 2.26.
4880     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
4881     *)              gcc_gld_pie_min_version=15 ;;
4882   esac
4883   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
4884      && test $in_tree_ld_is_elf = yes; then
4885     gcc_cv_ld_pie=yes
4886   fi
4887 elif test x$gcc_cv_ld != x; then
4888   # Check if linker supports -pie option
4889   if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4890     gcc_cv_ld_pie=yes
4891     case "$target" in
4892       *-*-solaris2*)
4893         if echo "$ld_ver" | grep GNU > /dev/null \
4894           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
4895           gcc_cv_ld_pie=no
4896         fi
4897         ;;
4898     esac
4899   else
4900     case "$target" in
4901       *-*-solaris2.1[[1-9]]*)
4902         # Solaris 11.x and Solaris 12 added PIE support.
4903         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
4904           gcc_cv_ld_pie=yes
4905         fi
4906         ;;
4907     esac
4908   fi
4910 if test x"$gcc_cv_ld_pie" = xyes; then
4911         AC_DEFINE(HAVE_LD_PIE, 1,
4912 [Define if your linker supports PIE option.])
4914 AC_MSG_RESULT($gcc_cv_ld_pie)
4916 AC_MSG_CHECKING(linker PIE support with copy reloc)
4917 gcc_cv_ld_pie_copyreloc=no
4918 if test $gcc_cv_ld_pie = yes ; then
4919   if test $in_tree_ld = yes ; then
4920     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
4921       gcc_cv_ld_pie_copyreloc=yes
4922     fi
4923   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4924     # Check if linker supports -pie option with copy reloc
4925     case "$target" in
4926     i?86-*-linux* | x86_64-*-linux*)
4927       cat > conftest1.s <<EOF
4928         .globl  a_glob
4929         .data
4930         .type   a_glob, @object
4931         .size   a_glob, 4
4932 a_glob:
4933         .long   2
4935       cat > conftest2.s <<EOF
4936         .text
4937         .globl  main
4938         .type   main, @function
4939 main:
4940         movl    %eax, a_glob(%rip)
4941         .size   main, .-main
4942         .globl  ptr
4943         .section        .data.rel,"aw",@progbits
4944         .type   ptr, @object
4945 ptr:
4946         .quad   a_glob
4948       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4949          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
4950          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4951          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
4952         gcc_cv_ld_pie_copyreloc=yes
4953       fi
4954       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
4955       ;;
4956     esac
4957   fi
4959 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
4960   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
4961   [Define 0/1 if your linker supports -pie option with copy reloc.])
4962 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
4964 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4965 gcc_cv_ld_eh_gc_sections=no
4966 if test $in_tree_ld = yes ; then
4967   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 \
4968      && test $in_tree_ld_is_elf = yes; then
4969     gcc_cv_ld_eh_gc_sections=yes
4970   fi
4971 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4972   cat > conftest.s <<EOF
4973         .section        .text
4974 .globl _start
4975         .type _start, @function
4976 _start:
4977         .long foo
4978         .size _start, .-_start
4979         .section        .text.foo,"ax",@progbits
4980         .type foo, @function
4981 foo:
4982         .long 0
4983         .size foo, .-foo
4984         .section        .gcc_except_table.foo,"a",@progbits
4985 .L0:
4986         .long 0
4987         .section        .eh_frame,"a",@progbits
4988         .long .L0
4990   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4991     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4992          | grep "gc-sections option ignored" > /dev/null; then
4993       gcc_cv_ld_eh_gc_sections=no
4994     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4995          | grep gcc_except_table > /dev/null; then
4996       gcc_cv_ld_eh_gc_sections=yes
4997       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4998       if test x$gcc_cv_as_comdat_group != xyes; then
4999         gcc_cv_ld_eh_gc_sections=no
5000         cat > conftest.s <<EOF
5001         .section        .text
5002 .globl _start
5003         .type _start, @function
5004 _start:
5005         .long foo
5006         .size _start, .-_start
5007         .section        .gnu.linkonce.t.foo,"ax",@progbits
5008         .type foo, @function
5009 foo:
5010         .long 0
5011         .size foo, .-foo
5012         .section        .gcc_except_table.foo,"a",@progbits
5013 .L0:
5014         .long 0
5015         .section        .eh_frame,"a",@progbits
5016         .long .L0
5018         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5019           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5020                | grep "gc-sections option ignored" > /dev/null; then
5021             gcc_cv_ld_eh_gc_sections=no
5022           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5023                | grep gcc_except_table > /dev/null; then
5024             gcc_cv_ld_eh_gc_sections=yes
5025           fi
5026         fi
5027       fi
5028     fi
5029   fi
5030   rm -f conftest.s conftest.o conftest
5032 case "$target" in
5033   hppa*-*-linux*)
5034     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5035     gcc_cv_ld_eh_gc_sections=no
5036     ;;
5037 esac
5038 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5039         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5040   [Define if your linker supports garbage collection of
5041    sections in presence of EH frames.])
5043 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5045 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5046 gcc_cv_ld_eh_gc_sections_bug=no
5047 if test $in_tree_ld = yes ; then
5048   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 \
5049      && test $in_tree_ld_is_elf = yes; then
5050     gcc_cv_ld_eh_gc_sections_bug=yes
5051   fi
5052 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
5053   gcc_cv_ld_eh_gc_sections_bug=yes
5054   cat > conftest.s <<EOF
5055         .section        .text
5056 .globl _start
5057         .type _start, @function
5058 _start:
5059         .long foo
5060         .size _start, .-_start
5061         .section        .text.startup.foo,"ax",@progbits
5062         .type foo, @function
5063 foo:
5064         .long 0
5065         .size foo, .-foo
5066         .section        .gcc_except_table.foo,"a",@progbits
5067 .L0:
5068         .long 0
5069         .section        .eh_frame,"a",@progbits
5070         .long .L0
5072   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5073     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5074          | grep "gc-sections option ignored" > /dev/null; then
5075       :
5076     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5077          | grep gcc_except_table > /dev/null; then
5078       gcc_cv_ld_eh_gc_sections_bug=no
5079     fi
5080   fi
5081   rm -f conftest.s conftest.o conftest
5083 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5084         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5085   [Define if your linker has buggy garbage collection of
5086    sections support when .text.startup.foo like sections are used.])
5088 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5090 AC_MSG_CHECKING(linker for compressed debug sections)
5091 # gold/gld support compressed debug sections since binutils 2.19/2.21
5092 if test $in_tree_ld = yes ; then
5093   gcc_cv_ld_compress_debug=0
5094   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \
5095      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5096     gcc_cv_ld_compress_debug=2
5097     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5098   elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \
5099      && test $in_tree_ld_is_elf = yes; then
5100     gcc_cv_ld_compress_debug=1
5101   fi
5102 elif echo "$ld_ver" | grep GNU > /dev/null; then
5103   gcc_cv_ld_compress_debug=1
5104   if test 0"$ld_date" -lt 20050308; then
5105     if test -n "$ld_date"; then
5106       # If there was date string, but was earlier than 2005-03-08, fail
5107       gcc_cv_ld_compress_debug=0
5108     elif test "$ld_vers_major" -lt 2; then
5109       gcc_cv_ld_compress_debug=0
5110     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5111       gcc_cv_ld_compress_debug=0
5112     fi
5113   fi
5114   if test $ld_is_gold = yes; then
5115     gcc_cv_ld_compress_debug=2
5116     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5117   fi
5118 else
5119 changequote(,)dnl
5120   case "${target}" in
5121     *-*-solaris2*)
5122       # Introduced in Solaris 11.2.
5123       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5124         gcc_cv_ld_compress_debug=3
5125         gcc_cv_ld_compress_debug_option="-z compress-sections"
5126       else
5127         gcc_cv_ld_compress_debug=0
5128       fi
5129       ;;
5130     *)
5131       # Assume linkers other than GNU ld don't support compessed debug
5132       # sections.
5133       gcc_cv_ld_compress_debug=0
5134       ;;
5135   esac
5136 changequote([,])dnl
5138 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5139 [Define to the level of your linker's compressed debug section support.])
5140 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5141 [Define to the linker option to enable compressed debug sections.])
5142 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5144 # --------
5145 # UNSORTED
5146 # --------
5148 AC_CACHE_CHECK(linker --as-needed support,
5149 gcc_cv_ld_as_needed,
5150 [gcc_cv_ld_as_needed=no
5151 gcc_cv_ld_as_needed_option='--as-needed'
5152 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5153 if test $in_tree_ld = yes ; then
5154   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 \
5155      && test $in_tree_ld_is_elf = yes; then
5156     gcc_cv_ld_as_needed=yes
5157   fi
5158 elif test x$gcc_cv_ld != x; then
5159         # Check if linker supports --as-needed and --no-as-needed options
5160         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
5161                 gcc_cv_ld_as_needed=yes
5162         else
5163           case "$target" in
5164             # Solaris 2 ld always supports -z ignore/-z record.
5165             *-*-solaris2*)
5166               gcc_cv_ld_as_needed=yes
5167               gcc_cv_ld_as_needed_option="-z ignore"
5168               gcc_cv_ld_no_as_needed_option="-z record"
5169               ;;
5170           esac
5171         fi
5173 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5174 # dl_iterate_phdr, i.e. since Solaris 11.
5175 case "$target" in
5176   *-*-solaris2.1[[1-9]]*)
5177     case "$target" in
5178     i?86-*-* | x86_64-*-*)
5179       if echo "$ld_ver" | grep GNU > /dev/null; then
5180         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5181         gcc_cv_ld_as_needed=no
5182       fi
5183       ;;
5184     esac
5185     ;;
5186   *-*-solaris2*)
5187     gcc_cv_ld_as_needed=no
5188     ;;
5189 esac
5191 if test x"$gcc_cv_ld_as_needed" = xyes; then
5192         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5193 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5194         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5195 [Define to the linker option to ignore unused dependencies.])
5196         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5197 [Define to the linker option to keep unused dependencies.])
5200 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5201 saved_LDFLAGS="$LDFLAGS"
5202 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5203   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5204   AC_LINK_IFELSE([int main(void) {return 0;}],
5205     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5206 done
5207 LDFLAGS="$saved_LDFLAGS"
5208 if test "x$gcc_cv_ld_clearcap" = xyes; then
5209   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5210 [Define if the linker supports clearing hardware capabilities via mapfile.])
5211   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5213 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5215 case "$target:$tm_file" in
5216   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5217   case "$target" in
5218      *le-*-linux*)
5219      emul_name="-melf64lppc"
5220       ;;
5221      *-*-linux*)
5222      emul_name="-melf64ppc"
5223       ;;
5224      *-*-freebsd*)
5225      emul_name="-melf64ppc_fbsd"
5226       ;;
5227   esac
5228     AC_CACHE_CHECK(linker support for omitting dot symbols,
5229     gcc_cv_ld_no_dot_syms,
5230     [gcc_cv_ld_no_dot_syms=no
5231     if test x"$ld_is_gold" = xyes; then
5232       gcc_cv_ld_no_dot_syms=yes
5233     elif test $in_tree_ld = yes ; then
5234       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
5235         gcc_cv_ld_no_dot_syms=yes
5236       fi
5237     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5238       cat > conftest1.s <<EOF
5239         .text
5240         bl .foo
5242       cat > conftest2.s <<EOF
5243         .section ".opd","aw"
5244         .align 3
5245         .globl foo
5246         .type foo,@function
5247 foo:
5248         .quad .LEfoo,.TOC.@tocbase,0
5249         .text
5250 .LEfoo:
5251         blr
5252         .size foo,.-.LEfoo
5254       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5255          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5256          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5257         gcc_cv_ld_no_dot_syms=yes
5258       fi
5259       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5260     fi
5261     ])
5262     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5263       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5264     [Define if your PowerPC64 linker only needs function descriptor syms.])
5265     fi
5267     AC_CACHE_CHECK(linker large toc support,
5268     gcc_cv_ld_large_toc,
5269     [gcc_cv_ld_large_toc=no
5270     if test x"$ld_is_gold" = xyes; then
5271       gcc_cv_ld_large_toc=yes
5272     elif test $in_tree_ld = yes ; then
5273       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
5274         gcc_cv_ld_large_toc=yes
5275       fi
5276     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5277       cat > conftest.s <<EOF
5278         .section ".tbss","awT",@nobits
5279         .align 3
5280 ie0:    .space 8
5281         .global _start
5282         .text
5283 _start:
5284         addis 9,13,ie0@got@tprel@ha
5285         ld 9,ie0@got@tprel@l(9)
5287       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5288          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5289         gcc_cv_ld_large_toc=yes
5290       fi
5291       rm -f conftest conftest.o conftest.s
5292     fi
5293     ])
5294     if test x"$gcc_cv_ld_large_toc" = xyes; then
5295       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5296     [Define if your PowerPC64 linker supports a large TOC.])
5297     fi
5299     AC_CACHE_CHECK(linker toc pointer alignment,
5300     gcc_cv_ld_toc_align,
5301     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5302       cat > conftest.s <<EOF
5303         .global _start
5304         .text
5305 _start:
5306         addis 9,2,x@got@ha
5307         .section .data.rel.ro,"aw",@progbits
5308         .p2align 16
5309         .space 32768
5310 x:      .quad .TOC.
5312       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5313          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5314         gcc_cv_ld_toc_align=`$gcc_cv_nm conftest | ${AWK} '/\.TOC\./ { match ($0, "0[[[:xdigit:]]]*", a); print strtonum ("0x" substr(a[[0]], length(a[[0]])-3)) }'`
5315       fi
5316       rm -f conftest conftest.o conftest.s
5317     fi
5318     ])
5319     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5320       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5321     [Define to .TOC. alignment forced by your linker.])
5322     fi
5323     ;;
5324 esac
5326 case "$target" in
5327   *-*-aix*)
5328     AC_CACHE_CHECK(linker large toc support,
5329     gcc_cv_ld_large_toc,
5330     [gcc_cv_ld_large_toc=no
5331     if test x$gcc_cv_as != x ; then
5332       cat > conftest.s <<EOF
5333         .toc
5334 LC..1:
5335         .tc a[[TC]],a[[RW]]
5336         .extern a[[RW]]
5337         .csect .text[[PR]]
5338 .largetoctest:
5339         addis 9,LC..1@u(2)
5340         ld 3,LC..1@l(9)
5342       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5343         gcc_cv_ld_large_toc=yes
5344       fi
5345       rm -f conftest conftest.o conftest.s
5346     fi
5347     ])
5348     if test x"$gcc_cv_ld_large_toc" = xyes; then
5349       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5350     [Define if your PowerPC64 linker supports a large TOC.])
5351     fi
5352     ;;
5353 esac
5355 AC_CACHE_CHECK(linker --build-id support,
5356   gcc_cv_ld_buildid,
5357   [gcc_cv_ld_buildid=no
5358   if test $in_tree_ld = yes ; then
5359     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5360        "$gcc_cv_gld_minor_version" -ge 18 -o \
5361        "$gcc_cv_gld_major_version" -gt 2 \
5362        && test $in_tree_ld_is_elf = yes; then
5363       gcc_cv_ld_buildid=yes
5364     fi
5365   elif test x$gcc_cv_ld != x; then
5366     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
5367       gcc_cv_ld_buildid=yes
5368     fi
5369   fi])
5370 if test x"$gcc_cv_ld_buildid" = xyes; then
5371   AC_DEFINE(HAVE_LD_BUILDID, 1,
5372   [Define if your linker supports --build-id.])
5375 AC_ARG_ENABLE(linker-build-id,
5376 [AS_HELP_STRING([--enable-linker-build-id],
5377                 [compiler will always pass --build-id to linker])],
5379 enable_linker_build_id=no)
5381 if test x"$enable_linker_build_id" = xyes; then
5382   if test x"$gcc_cv_ld_buildid" = xyes; then
5383     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5384     [Define if gcc should always pass --build-id to linker.])
5385   else
5386     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5387   fi
5390 # In binutils 2.21, GNU ld gained support for new emulations fully
5391 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5392 AC_CACHE_CHECK(linker *_sol2 emulation support,
5393   gcc_cv_ld_sol2_emulation,
5394   [gcc_cv_ld_sol2_emulation=no
5395   if test $in_tree_ld = yes ; then
5396     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5397        "$gcc_cv_gld_minor_version" -ge 21 -o \
5398        "$gcc_cv_gld_major_version" -gt 2 \
5399        && test $in_tree_ld_is_elf = yes; then
5400       gcc_cv_ld_sol2_emulation=yes
5401     fi
5402   elif test x$gcc_cv_ld != x; then
5403     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5404        grep _sol2 > /dev/null; then
5405       gcc_cv_ld_sol2_emulation=yes
5406     fi
5407   fi])
5408 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5409   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5410   [Define if your linker supports the *_sol2 emulations.])
5413 AC_CACHE_CHECK(linker --sysroot support,
5414   gcc_cv_ld_sysroot,
5415   [gcc_cv_ld_sysroot=no
5416   if test $in_tree_ld = yes ; then
5417       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
5418         gcc_cv_ld_sysroot=yes
5419       fi
5420   elif test x$gcc_cv_ld != x; then 
5421     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5422       gcc_cv_ld_sysroot=yes
5423     fi
5424   fi])
5425 if test x"$gcc_cv_ld_sysroot" = xyes; then
5426   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5427   [Define if your linker supports --sysroot.])
5428 fi        
5430 case $target in
5431 *-*-solaris2*)
5432   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
5433   AC_CACHE_CHECK([system-provided CRTs on Solaris],
5434     gcc_cv_solaris_crts,
5435     [gcc_cv_solaris_crts=no
5436      if test x$host != x$target; then
5437        if test "x$with_sysroot" = xyes; then
5438          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
5439        else
5440          target_sysroot="${with_sysroot}"
5441        fi
5442      fi
5443      target_libdir="$target_sysroot/usr/lib"
5444      # At the time they were added, gcrt1.o became a symlink for backwards
5445      # compatibility on x86, while crt1.o was added on sparc, so check for that.
5446      case $target in
5447        i?86-*-solaris2* | x86_64-*-solaris2*)
5448          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
5449          ;;
5450        sparc*-*-solaris2*)
5451          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
5452          ;;
5453      esac])
5454   ;;
5455 esac
5456 if test x$gcc_cv_solaris_crts = xyes; then
5457   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
5458             [Define if the system-provided CRTs are present on Solaris.])
5461 # Test for stack protector support in target C library.
5462 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5463       gcc_cv_libc_provides_ssp,
5464       [gcc_cv_libc_provides_ssp=no
5465     case "$target" in
5466        *-*-musl*)
5467          # All versions of musl provide stack protector
5468          gcc_cv_libc_provides_ssp=yes;;
5469        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5470       # glibc 2.4 and later provides __stack_chk_fail and
5471       # either __stack_chk_guard, or TLS access to stack guard canary.
5472       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5473       [if test -f $target_header_dir/features.h \
5474          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5475             $target_header_dir/features.h > /dev/null; then
5476         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5477              $target_header_dir/features.h > /dev/null && \
5478              test -f $target_header_dir/bits/uClibc_config.h && \
5479              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5480              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5481           gcc_cv_libc_provides_ssp=yes
5482         fi
5483       # all versions of Bionic support stack protector
5484       elif test -f $target_header_dir/sys/cdefs.h \
5485         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5486            $target_header_dir/sys/cdefs.h > /dev/null; then
5487          gcc_cv_libc_provides_ssp=yes
5488       fi]])
5489         ;;
5490        *-*-gnu*)
5491          # Avoid complicated tests (see
5492          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5493          # simply assert that glibc does provide this, which is true for all
5494          # realistically usable GNU/Hurd configurations.
5495          # All supported versions of musl provide it as well
5496          gcc_cv_libc_provides_ssp=yes;;
5497        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
5498          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5499            [echo "no __stack_chk_fail on this target"])
5500         ;;
5501   *) gcc_cv_libc_provides_ssp=no ;;
5502     esac])
5504 if test x$gcc_cv_libc_provides_ssp = xyes; then
5505   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5506             [Define if your target C library provides stack protector support])
5509 # Check whether --enable-default-ssp was given.
5510 AC_ARG_ENABLE(default-ssp,
5511 [AS_HELP_STRING([--enable-default-ssp],
5512   [enable Stack Smashing Protection as default])],[
5513 if test x$gcc_cv_libc_provides_ssp = xyes; then
5514   case "$target" in
5515     ia64*-*-*) enable_default_ssp=no ;;
5516     *) enable_default_ssp=$enableval ;;
5517   esac
5518 else
5519   enable_default_ssp=no
5520 fi],
5521 enable_default_ssp=no)
5522 if test x$enable_default_ssp = xyes ; then
5523   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5524       [Define if your target supports default stack protector and it is enabled.])
5526 AC_SUBST([enable_default_ssp])
5528 # Test for <sys/sdt.h> on the target.
5529 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5530 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5531 have_sys_sdt_h=no
5532 if test -f $target_header_dir/sys/sdt.h; then
5533   have_sys_sdt_h=yes
5534   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5535             [Define if your target C library provides sys/sdt.h])
5537 AC_MSG_RESULT($have_sys_sdt_h)
5539 # Check if TFmode long double should be used by default or not.
5540 # Some glibc targets used DFmode long double, but with glibc 2.4
5541 # and later they can use TFmode.
5542 case "$target" in
5543   powerpc*-*-linux* | \
5544   sparc*-*-linux* | \
5545   s390*-*-linux* | \
5546   alpha*-*-linux*)
5547     AC_ARG_WITH(long-double-128,
5548       [AS_HELP_STRING([--with-long-double-128],
5549                       [use 128-bit long double by default])],
5550       gcc_cv_target_ldbl128="$with_long_double_128",
5551       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5552       [gcc_cv_target_ldbl128=no
5553       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5554         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5555       && gcc_cv_target_ldbl128=yes
5556       ]])])
5557     ;;
5558 esac
5559 if test x$gcc_cv_target_ldbl128 = xyes; then
5560   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5561             [Define if TFmode long double should be the default])
5564 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
5565 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
5566 gcc_cv_libc_provides_hwcap_in_tcb=no
5567 case "$target" in
5568   powerpc*-*-linux*)
5569     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
5570     ;;
5571 esac
5572 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
5573   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
5574             [Define if your target C Library provides the AT_HWCAP value in the TCB])
5577 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5578 gcc_cv_target_dl_iterate_phdr=unknown
5579 case "$target" in
5580   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5581   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5582   # libdl there, both complicating its use and breaking compatibility
5583   # between Solaris 10 updates.
5584   *-*-solaris2.1[[1-9]]*)
5585     # <link.h> needs both a dl_iterate_phdr declaration and support for
5586     # compilation with largefile support.
5587     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5588       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5589       gcc_cv_target_dl_iterate_phdr=yes
5590     else
5591       gcc_cv_target_dl_iterate_phdr=no
5592     fi
5593     ;;
5594   *-*-dragonfly* | *-*-freebsd*)
5595     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
5596       gcc_cv_target_dl_iterate_phdr=yes
5597     else
5598       gcc_cv_target_dl_iterate_phdr=no
5599     fi
5600     ;;
5601   *-linux-musl*)
5602     gcc_cv_target_dl_iterate_phdr=yes
5603     ;;
5604 esac
5605 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5606 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5607    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5608 [Define if your target C library provides the `dl_iterate_phdr' function.])
5610 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5612 # We no longer support different GC mechanisms.  Emit an error if
5613 # the user configures with --with-gc.
5614 AC_ARG_WITH(gc,
5615 [AS_HELP_STRING([--with-gc={page,zone}],
5616                 [this option is not supported anymore.  It used to choose
5617                  the garbage collection mechanism to use with the compiler])],
5618 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5621 # Libraries to use on the host.  This will normally be set by the top
5622 # level Makefile.  Here we simply capture the value for our Makefile.
5623 if test -z "${HOST_LIBS+set}"; then
5624   HOST_LIBS=
5626 AC_SUBST(HOST_LIBS)
5628 # Use the system's zlib library.
5629 AM_ZLIB
5631 dnl Very limited version of automake's enable-maintainer-mode
5633 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5634   dnl maintainer-mode is disabled by default
5635   AC_ARG_ENABLE(maintainer-mode,
5636 [AS_HELP_STRING([--enable-maintainer-mode],
5637                 [enable make rules and dependencies not useful
5638                  (and sometimes confusing) to the casual installer])],
5639       maintainer_mode=$enableval,
5640       maintainer_mode=no)
5642 AC_MSG_RESULT($maintainer_mode)
5644 if test "$maintainer_mode" = "yes"; then
5645   MAINT=''
5646 else
5647   MAINT='#'
5649 AC_SUBST(MAINT)dnl
5651 dnl Whether to prevent multiple front-ends from linking at the same time
5653 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5654   AC_ARG_ENABLE(link-mutex,
5655 [AS_HELP_STRING([--enable-link-mutex],
5656                 [avoid linking multiple front-ends at once to avoid thrashing
5657                  on the build machine])],
5658       do_link_mutex=$enableval,
5659       do_link_mutex=no)
5660 AC_MSG_RESULT($do_link_mutex)
5662 if test "$do_link_mutex" = "yes"; then
5663    DO_LINK_MUTEX=true
5664 else
5665    DO_LINK_MUTEX=false
5667 AC_SUBST(DO_LINK_MUTEX)
5669 # --------------
5670 # Language hooks
5671 # --------------
5673 # Make empty files to contain the specs and options for each language.
5674 # Then add #include lines to for a compiler that has specs and/or options.
5676 subdirs=
5677 lang_opt_files=
5678 lang_specs_files=
5679 lang_tree_files=
5680 # These (without "all_") are set in each config-lang.in.
5681 # `language' must be a single word so is spelled singularly.
5682 all_languages=
5683 all_compilers=
5684 all_outputs='Makefile'
5685 # List of language makefile fragments.
5686 all_lang_makefrags=
5687 # Additional files for gengtype
5688 all_gtfiles="$target_gtfiles"
5690 # These are the languages that are set in --enable-languages,
5691 # and are available in the GCC tree.
5692 all_selected_languages=
5694 # Add the language fragments.
5695 # Languages are added via two mechanisms.  Some information must be
5696 # recorded in makefile variables, these are defined in config-lang.in.
5697 # We accumulate them and plug them into the main Makefile.
5698 # The other mechanism is a set of hooks for each of the main targets
5699 # like `clean', `install', etc.
5701 language_hooks="Make-hooks"
5703 for lang in ${srcdir}/*/config-lang.in
5705 changequote(,)dnl
5706         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5708         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5709         if test "x$lang_alias" = x
5710         then
5711               echo "$lang doesn't set \$language." 1>&2
5712               exit 1
5713         fi
5714         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5715         subdirs="$subdirs $subdir"
5717         # $gcc_subdir is where the gcc integration files are to be found
5718         # for a language, both for internal compiler purposes (compiler
5719         # sources implementing front-end to GCC tree converters), and for
5720         # build infrastructure purposes (Make-lang.in, etc.)
5721         #
5722         # This will be <subdir> (relative to $srcdir) if a line like 
5723         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5724         # is found in <langdir>/config-lang.in, and will remain <langdir>
5725         # otherwise.
5726         #
5727         # Except for the language alias (fetched above), the regular
5728         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5729         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5730         # only this and the language alias.
5732         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5733         if [ "$gcc_subdir" = "" ]; then
5734            gcc_subdir="$subdir"
5735         fi
5737         case ",$enable_languages," in
5738         *,$lang_alias,*)
5739             all_selected_languages="$all_selected_languages $lang_alias"
5740             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5741                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5742             fi
5743             ;;
5744         esac
5745 changequote([,])dnl
5747         language=
5748         boot_language=
5749         compilers=
5750         outputs=
5751         gtfiles=
5752         subdir_requires=
5753         . ${srcdir}/$gcc_subdir/config-lang.in
5754         if test "x$language" = x
5755         then
5756                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5757                 exit 1
5758         fi
5760         ok=:
5761         case ",$enable_languages," in
5762                 *,$lang_alias,*) ;;
5763                 *)
5764                         for i in $subdir_requires; do
5765                                 test -f "${srcdir}/$i/config-lang.in" && continue
5766                                 ok=false
5767                                 break
5768                         done
5769                 ;;
5770         esac
5771         $ok || continue
5773         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5774         if test -f $srcdir/$gcc_subdir/lang.opt; then
5775             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5776             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5777         fi
5778         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5779             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5780         fi
5781         all_languages="$all_languages $language"
5782         all_compilers="$all_compilers $compilers"
5783         all_outputs="$all_outputs $outputs"
5784         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5785         case ",$enable_languages," in
5786                 *,lto,*)
5787                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5788                     enable_lto=yes
5789                     AC_SUBST(enable_lto)
5790                     ;;
5791                 *) ;;
5792         esac
5793 done
5795 check_languages=
5796 for language in $all_selected_languages
5798         check_languages="$check_languages check-$language"
5799 done
5801 # We link each language in with a set of hooks, reached indirectly via
5802 # lang.${target}.  Only do so for selected languages.
5804 rm -f Make-hooks
5805 touch Make-hooks
5806 target_list="all.cross start.encap rest.encap tags \
5807         install-common install-man install-info install-pdf install-html dvi \
5808         pdf html uninstall info man srcextra srcman srcinfo \
5809         mostlyclean clean distclean maintainer-clean install-plugin"
5811 for t in $target_list
5813         x=
5814         for lang in $all_selected_languages
5815         do
5816                 x="$x $lang.$t"
5817         done
5818         echo "lang.$t: $x" >> Make-hooks
5819 done
5821 # --------
5822 # Option include files
5823 # --------
5825 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5826 option_includes="option-includes.mk"
5827 AC_SUBST_FILE(option_includes)
5829 # --------
5830 # UNSORTED
5831 # --------
5833 # Create .gdbinit.
5835 echo "dir ." > .gdbinit
5836 echo "dir ${srcdir}" >> .gdbinit
5837 if test x$gdb_needs_out_file_path = xyes
5838 then
5839         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5841 if test "x$subdirs" != x; then
5842         for s in $subdirs
5843         do
5844                 echo "dir ${srcdir}/$s" >> .gdbinit
5845         done
5847 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5848 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5850 # Put a breakpoint on __asan_report_error to help with debugging buffer
5851 # overflow.
5852 case "$CFLAGS" in
5853 *-fsanitize=address*)
5854   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5855   ;;
5856 esac
5858 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5859 AC_SUBST(gcc_tooldir)
5860 AC_SUBST(dollar)
5862 # Find a directory in which to install a shared libgcc.
5864 AC_ARG_ENABLE(version-specific-runtime-libs,
5865 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5866                 [specify that runtime libraries should be
5867                  installed in a compiler-specific directory])])
5869 # Substitute configuration variables
5870 AC_SUBST(subdirs)
5871 AC_SUBST(srcdir)
5872 AC_SUBST(all_compilers)
5873 AC_SUBST(all_gtfiles)
5874 AC_SUBST(all_lang_makefrags)
5875 AC_SUBST(all_languages)
5876 AC_SUBST(all_selected_languages)
5877 AC_SUBST(build_exeext)
5878 AC_SUBST(build_install_headers_dir)
5879 AC_SUBST(build_xm_file_list)
5880 AC_SUBST(build_xm_include_list)
5881 AC_SUBST(build_xm_defines)
5882 AC_SUBST(build_file_translate)
5883 AC_SUBST(check_languages)
5884 AC_SUBST(cpp_install_dir)
5885 AC_SUBST(xmake_file)
5886 AC_SUBST(tmake_file)
5887 AC_SUBST(TM_ENDIAN_CONFIG)
5888 AC_SUBST(TM_MULTILIB_CONFIG)
5889 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5890 AC_SUBST(extra_gcc_objs)
5891 AC_SUBST(user_headers_inc_next_pre)
5892 AC_SUBST(user_headers_inc_next_post)
5893 AC_SUBST(extra_headers_list)
5894 AC_SUBST(extra_objs)
5895 AC_SUBST(extra_programs)
5896 AC_SUBST(float_h_file)
5897 AC_SUBST(gcc_config_arguments)
5898 AC_SUBST(gcc_gxx_include_dir)
5899 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5900 AC_SUBST(host_exeext)
5901 AC_SUBST(host_xm_file_list)
5902 AC_SUBST(host_xm_include_list)
5903 AC_SUBST(host_xm_defines)
5904 AC_SUBST(out_host_hook_obj)
5905 AC_SUBST(install)
5906 AC_SUBST(lang_opt_files)
5907 AC_SUBST(lang_specs_files)
5908 AC_SUBST(lang_tree_files)
5909 AC_SUBST(local_prefix)
5910 AC_SUBST(md_file)
5911 AC_SUBST(objc_boehm_gc)
5912 AC_SUBST(out_file)
5913 AC_SUBST(out_object_file)
5914 AC_SUBST(common_out_file)
5915 AC_SUBST(common_out_object_file)
5916 AC_SUBST(tm_file_list)
5917 AC_SUBST(tm_include_list)
5918 AC_SUBST(tm_defines)
5919 AC_SUBST(tm_p_file_list)
5920 AC_SUBST(tm_p_include_list)
5921 AC_SUBST(xm_file_list)
5922 AC_SUBST(xm_include_list)
5923 AC_SUBST(xm_defines)
5924 AC_SUBST(use_gcc_stdint)
5925 AC_SUBST(c_target_objs)
5926 AC_SUBST(cxx_target_objs)
5927 AC_SUBST(fortran_target_objs)
5928 AC_SUBST(target_cpu_default)
5930 AC_SUBST_FILE(language_hooks)
5932 # Echo link setup.
5933 if test x${build} = x${host} ; then
5934   if test x${host} = x${target} ; then
5935     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5936   else
5937     echo "Links are now set up to build a cross-compiler" 1>&2
5938     echo " from ${host} to ${target}." 1>&2
5939   fi
5940 else
5941   if test x${host} = x${target} ; then
5942     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5943     echo " for ${target}." 1>&2
5944   else
5945     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5946     echo " from ${host} to ${target}." 1>&2
5947   fi
5950 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5951 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5953 AC_ARG_VAR(ISLLIBS,[How to link isl])
5954 AC_ARG_VAR(ISLINC,[How to find isl include files])
5955 if test "x${ISLLIBS}" != "x" ; then 
5956    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
5959 # Check whether isl_options_set_schedule_serialize_sccs is available;
5960 # it's new in isl 0.15.
5961 if test "x${ISLLIBS}" != "x" ; then
5962   saved_CXXFLAGS="$CXXFLAGS"
5963   CXXFLAGS="$CXXFLAGS $ISLINC $GMPINC"
5964   saved_LIBS="$LIBS"
5965   LIBS="$LIBS $ISLLIBS $GMPLIBS"
5967   AC_MSG_CHECKING([Checking for isl_options_set_schedule_serialize_sccs])
5968   AC_TRY_LINK([#include <isl/schedule.h>],
5969               [isl_options_set_schedule_serialize_sccs (NULL, 0);],
5970               [ac_has_isl_options_set_schedule_serialize_sccs=yes],
5971               [ac_has_isl_options_set_schedule_serialize_sccs=no])
5972   AC_MSG_RESULT($ac_has_isl_options_set_schedule_serialize_sccs)
5974   LIBS="$saved_LIBS"
5975   CXXFLAGS="$saved_CXXFLAGS"
5977   if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
5978      AC_DEFINE(HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS, 1,
5979                [Define if isl_options_set_schedule_serialize_sccs exists.])
5980   fi
5983 GCC_ENABLE_PLUGINS
5984 AC_SUBST(pluginlibs)
5985 AC_SUBST(enable_plugin)
5986 if test x"$enable_plugin" = x"yes"; then
5987   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5991 # Enable --enable-host-shared
5992 AC_ARG_ENABLE(host-shared,
5993 [AS_HELP_STRING([--enable-host-shared],
5994                 [build host code as shared libraries])],
5995 [PICFLAG=-fPIC], [PICFLAG=])
5996 AC_SUBST(enable_host_shared)
5997 AC_SUBST(PICFLAG)
6000 AC_ARG_ENABLE(libquadmath-support,
6001 [AS_HELP_STRING([--disable-libquadmath-support],
6002   [disable libquadmath support for Fortran])],
6003 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6004 ENABLE_LIBQUADMATH_SUPPORT=yes)
6005 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6006   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6007             [Define to 1 to enable libquadmath support])
6011 # Specify what hash style to use by default.
6012 AC_ARG_WITH([linker-hash-style],
6013 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6014                 [specify the linker hash style])],
6015 [case x"$withval" in
6016    xsysv)
6017      LINKER_HASH_STYLE=sysv
6018      ;;
6019    xgnu)
6020      LINKER_HASH_STYLE=gnu
6021      ;;
6022    xboth)
6023      LINKER_HASH_STYLE=both
6024      ;;
6025    *)
6026      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6027      ;;
6028  esac],
6029 [LINKER_HASH_STYLE=''])
6030 if test x"${LINKER_HASH_STYLE}" != x; then
6031   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6032                                          [The linker hash style])
6035 # Specify what should be the default of -fdiagnostics-color option.
6036 AC_ARG_WITH([diagnostics-color],
6037 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6038                 [specify the default of -fdiagnostics-color option
6039                  auto-if-env stands for -fdiagnostics-color=auto if
6040                  GCC_COLOR environment variable is present and
6041                  -fdiagnostics-color=never otherwise])],
6042 [case x"$withval" in
6043    xnever)
6044      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6045      ;;
6046    xauto)
6047      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6048      ;;
6049    xauto-if-env)
6050      DIAGNOSTICS_COLOR_DEFAULT=-1
6051      ;;
6052    xalways)
6053      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6054      ;;
6055    *)
6056      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6057      ;;
6058  esac],
6059 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6060 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6061                    [The default for -fdiagnostics-color option])
6063 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6064 # of jit/jit-playback.c.
6065 cat > gcc-driver-name.h <<EOF
6066 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
6069 # Check whether --enable-default-pie was given.
6070 AC_ARG_ENABLE(default-pie,
6071 [AS_HELP_STRING([--enable-default-pie],
6072   [enable Position Independent Executable as default])],
6073 enable_default_pie=$enableval,
6074 enable_default_pie=no)
6075 if test x$enable_default_pie = xyes ; then
6076   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6077       [Define if your target supports default PIE and it is enabled.])
6079 AC_SUBST([enable_default_pie])
6081 # Check if -fno-PIE works.
6082 AC_CACHE_CHECK([for -fno-PIE option],
6083   [gcc_cv_c_no_fpie],
6084   [saved_CXXFLAGS="$CXXFLAGS"
6085    CXXFLAGS="$CXXFLAGS -fno-PIE"
6086    AC_COMPILE_IFELSE([int main(void) {return 0;}],
6087      [gcc_cv_c_no_fpie=yes],
6088      [gcc_cv_c_no_fpie=no])
6089    CXXFLAGS="$saved_CXXFLAGS"])
6090 if test "$gcc_cv_c_no_fpie" = "yes"; then
6091   NO_PIE_CFLAGS="-fno-PIE"
6093 AC_SUBST([NO_PIE_CFLAGS])
6095 # Check if -no-pie works.
6096 AC_CACHE_CHECK([for -no-pie option],
6097   [gcc_cv_no_pie],
6098   [saved_LDFLAGS="$LDFLAGS"
6099    LDFLAGS="$LDFLAGS -no-pie"
6100    AC_LINK_IFELSE([int main(void) {return 0;}],
6101      [gcc_cv_no_pie=yes],
6102      [gcc_cv_no_pie=no])
6103    LDFLAGS="$saved_LDFLAGS"])
6104 if test "$gcc_cv_no_pie" = "yes"; then
6105   NO_PIE_FLAG="-no-pie"
6107 AC_SUBST([NO_PIE_FLAG])
6109 # Check linker supports '-z bndplt'
6110 ld_bndplt_support=no
6111 AC_MSG_CHECKING(linker -z bndplt option)
6112 if test x"$ld_is_gold" = xno; then
6113   if test $in_tree_ld = yes ; then
6114     if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6115       ld_bndplt_support=yes
6116     fi
6117   elif test x$gcc_cv_ld != x; then
6118     # Check if linker supports -a bndplt option
6119     if $gcc_cv_ld --help 2>/dev/null | grep -- '-z bndplt' > /dev/null; then
6120       ld_bndplt_support=yes
6121     fi
6122   fi
6124 if test x"$ld_bndplt_support" = xyes; then
6125   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6126         [Define if your linker supports -z bndplt])
6128 AC_MSG_RESULT($ld_bndplt_support)
6130 # Configure the subdirectories
6131 # AC_CONFIG_SUBDIRS($subdirs)
6133 # Create the Makefile
6134 # and configure language subdirectories
6135 AC_CONFIG_FILES($all_outputs)
6137 AC_CONFIG_COMMANDS([default],
6139 case ${CONFIG_HEADERS} in
6140   *auto-host.h:config.in*)
6141   echo > cstamp-h ;;
6142 esac
6143 # Make sure all the subdirs exist.
6144 for d in $subdirs doc build common c-family
6146     test -d $d || mkdir $d
6147 done
6148 ], 
6149 [subdirs='$subdirs'])
6150 AC_OUTPUT