Update .po files.
[official-gcc.git] / gcc / configure.ac
blobe40d82a8306044209ec05a5e7bdbca9ea67ba21d
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   arc*-*-*)
3090     conftest_s='
3091         add_s r0,r0, @foo@tpoff'
3092         tls_first_major=2
3093         tls_first_minor=23
3094         ;;
3095   cris-*-*|crisv32-*-*)
3096     conftest_s='
3097         .section ".tdata","awT",@progbits
3098 x:      .long   25
3099         .text
3100         move.d x:IE,$r10
3101         nop'
3102         tls_first_major=2
3103         tls_first_minor=20
3104         tls_as_opt=--fatal-warnings
3105         ;;
3106   frv*-*-*)
3107     conftest_s='
3108         .section ".tdata","awT",@progbits
3109 x:      .long   25
3110         .text
3111         call    #gettlsoff(x)'
3112         tls_first_major=2
3113         tls_first_minor=14
3114         ;;
3115   hppa*-*-linux*)
3116     conftest_s='
3117 t1:     .reg    %r20
3118 t2:     .reg    %r21
3119 gp:     .reg    %r19
3120         .section ".tdata","awT",@progbits
3121 foo:    .long   25
3122         .text
3123         .align  4
3124         addil LT%foo-$tls_gdidx$,gp
3125         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3126         b __tls_get_addr
3127         nop             
3128         addil LT%foo-$tls_ldidx$,gp
3129         b __tls_get_addr
3130         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3131         addil LR%foo-$tls_dtpoff$,%ret0
3132         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3133         mfctl %cr27,%t1                 
3134         addil LT%foo-$tls_ieoff$,gp
3135         ldw RT%foo-$tls_ieoff$(%r1),%t2
3136         add %t1,%t2,%t3                 
3137         mfctl %cr27,%t1                 
3138         addil LR%foo-$tls_leoff$,%t1
3139         ldo RR%foo-$tls_leoff$(%r1),%t2'
3140         tls_first_major=2
3141         tls_first_minor=15
3142         tls_as_opt=--fatal-warnings
3143         ;;
3144   arm*-*-*)
3145     conftest_s='
3146         .section ".tdata","awT",%progbits
3147 foo:    .long   25
3148         .text
3149 .word foo(gottpoff)
3150 .word foo(tpoff)
3151 .word foo(tlsgd)
3152 .word foo(tlsldm)
3153 .word foo(tlsldo)'
3154         tls_first_major=2
3155         tls_first_minor=17
3156         ;;
3157   i[34567]86-*-* | x86_64-*-*)
3158     case "$target" in
3159       i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3160         on_solaris=yes
3161         ;;
3162       *)
3163         on_solaris=no
3164         ;;
3165     esac
3166     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3167       conftest_s='
3168         .section .tdata,"awt",@progbits'
3169       tls_first_major=0
3170       tls_first_minor=0
3171       tls_section_flag=t
3172 changequote([,])dnl
3173       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3174 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3175 changequote(,)dnl
3176     else
3177       conftest_s='
3178         .section ".tdata","awT",@progbits'
3179       tls_first_major=2
3180       tls_first_minor=14
3181       tls_section_flag=T
3182       tls_as_opt="--fatal-warnings"
3183     fi
3184     case "$target" in
3185       i[34567]86-*-*)
3186         conftest_s="$conftest_s
3187 foo:    .long   25
3188         .text
3189         movl    %gs:0, %eax
3190         leal    foo@tlsgd(,%ebx,1), %eax
3191         leal    foo@tlsldm(%ebx), %eax
3192         leal    foo@dtpoff(%eax), %edx
3193         movl    foo@gottpoff(%ebx), %eax
3194         subl    foo@gottpoff(%ebx), %eax
3195         addl    foo@gotntpoff(%ebx), %eax
3196         movl    foo@indntpoff, %eax
3197         movl    \$foo@tpoff, %eax
3198         subl    \$foo@tpoff, %eax
3199         leal    foo@ntpoff(%ecx), %eax"
3200         ;;
3201       x86_64-*-*)
3202         if test x$on_solaris = xyes; then
3203           case $gas_flag in
3204             yes) tls_as_opt="$tls_as_opt --64" ;;
3205             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3206           esac    
3207         fi
3208         conftest_s="$conftest_s
3209 foo:    .long   25
3210         .text
3211         movq    %fs:0, %rax
3212         leaq    foo@tlsgd(%rip), %rdi
3213         leaq    foo@tlsld(%rip), %rdi
3214         leaq    foo@dtpoff(%rax), %rdx
3215         movq    foo@gottpoff(%rip), %rax
3216         movq    \$foo@tpoff, %rax"
3217         ;;
3218     esac
3219     ;;
3220   ia64-*-*)
3221     conftest_s='
3222         .section ".tdata","awT",@progbits
3223 foo:    data8   25
3224         .text
3225         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3226         addl    r17 = @ltoff(@dtprel(foo#)), gp
3227         addl    r18 = @ltoff(@tprel(foo#)), gp
3228         addl    r19 = @dtprel(foo#), gp
3229         adds    r21 = @dtprel(foo#), r13
3230         movl    r23 = @dtprel(foo#)
3231         addl    r20 = @tprel(foo#), gp
3232         adds    r22 = @tprel(foo#), r13
3233         movl    r24 = @tprel(foo#)'
3234         tls_first_major=2
3235         tls_first_minor=13
3236         tls_as_opt=--fatal-warnings
3237         ;;
3238   microblaze*-*-*)
3239     conftest_s='
3240         .section .tdata,"awT",@progbits
3242         .word 2
3243         .text
3244         addik r5,r20,x@TLSGD
3245         addik r5,r20,x@TLSLDM'
3246         tls_first_major=2
3247         tls_first_minor=20
3248         tls_as_opt='--fatal-warnings'
3249         ;;
3250   mips*-*-*)
3251     conftest_s='
3252         .section .tdata,"awT",@progbits
3254         .word 2
3255         .text
3256         addiu $4, $28, %tlsgd(x)
3257         addiu $4, $28, %tlsldm(x)
3258         lui $4, %dtprel_hi(x)
3259         addiu $4, $4, %dtprel_lo(x)
3260         lw $4, %gottprel(x)($28)
3261         lui $4, %tprel_hi(x)
3262         addiu $4, $4, %tprel_lo(x)'
3263         tls_first_major=2
3264         tls_first_minor=16
3265         tls_as_opt='-32 --fatal-warnings'
3266         ;;
3267   m68k-*-*)
3268     conftest_s='
3269         .section .tdata,"awT",@progbits
3271         .word 2
3272         .text
3273 foo:
3274         move.l x@TLSGD(%a5),%a0
3275         move.l x@TLSLDM(%a5),%a0
3276         move.l x@TLSLDO(%a5),%a0
3277         move.l x@TLSIE(%a5),%a0
3278         move.l x@TLSLE(%a5),%a0'
3279         tls_first_major=2
3280         tls_first_minor=19
3281         tls_as_opt='--fatal-warnings'
3282         ;;
3283   nios2-*-*)
3284       conftest_s='
3285         .section ".tdata","awT",@progbits'
3286         tls_first_major=2
3287         tls_first_minor=23
3288         tls_as_opt="--fatal-warnings"
3289         ;;
3290   aarch64*-*-*)
3291     conftest_s='
3292         .section ".tdata","awT",%progbits
3293 foo:    .long   25
3294         .text
3295         adrp  x0, :tlsgd:x
3296         add   x0, x0, #:tlsgd_lo12:x
3297         bl    __tls_get_addr
3298         nop'
3299         tls_first_major=2
3300         tls_first_minor=20
3301         tls_as_opt='--fatal-warnings'
3302         ;;
3303   powerpc-ibm-aix*)
3304     conftest_s='
3305         .extern __get_tpointer
3306         .toc
3307 LC..1:
3308         .tc a[TC],a[TL]@le
3309         .csect .text[PR]
3310 .tlstest:
3311         lwz 9,LC..1(2)
3312         bla __get_tpointer
3313         lwzx 3,9,3
3314         .globl a
3315         .csect a[TL],4
3317         .space 4'
3318         tls_first_major=0
3319         tls_first_minor=0
3320         ;;
3321   powerpc64*-*-*)
3322     conftest_s='
3323         .section ".tdata","awT",@progbits
3324         .align 3
3325 ld0:    .space 8
3326 ld1:    .space 8
3327 x1:     .space 8
3328 x2:     .space 8
3329 x3:     .space 8
3330         .text
3331         addi 3,2,ld0@got@tlsgd
3332         bl .__tls_get_addr
3333         nop
3334         addi 3,2,ld1@toc
3335         bl .__tls_get_addr
3336         nop
3337         addi 3,2,x1@got@tlsld
3338         bl .__tls_get_addr
3339         nop
3340         addi 9,3,x1@dtprel
3341         bl .__tls_get_addr
3342         nop
3343         addis 9,3,x2@dtprel@ha
3344         addi 9,9,x2@dtprel@l
3345         bl .__tls_get_addr
3346         nop
3347         ld 9,x3@got@dtprel(2)
3348         add 9,9,3
3349         bl .__tls_get_addr
3350         nop'
3351         tls_first_major=2
3352         tls_first_minor=14
3353         tls_as_opt="-a64 --fatal-warnings"
3354         ;;
3355   powerpc*-*-*)
3356     conftest_s='
3357         .section ".tdata","awT",@progbits
3358         .align 2
3359 ld0:    .space 4
3360 ld1:    .space 4
3361 x1:     .space 4
3362 x2:     .space 4
3363 x3:     .space 4
3364         .text
3365         addi 3,31,ld0@got@tlsgd
3366         bl __tls_get_addr
3367         addi 3,31,x1@got@tlsld
3368         bl __tls_get_addr
3369         addi 9,3,x1@dtprel
3370         addis 9,3,x2@dtprel@ha
3371         addi 9,9,x2@dtprel@l
3372         lwz 9,x3@got@tprel(31)
3373         add 9,9,x@tls
3374         addi 9,2,x1@tprel
3375         addis 9,2,x2@tprel@ha
3376         addi 9,9,x2@tprel@l'
3377         tls_first_major=2
3378         tls_first_minor=14
3379         tls_as_opt="-a32 --fatal-warnings"
3380         ;;
3381   s390-*-*)
3382     conftest_s='
3383         .section ".tdata","awT",@progbits
3384 foo:    .long   25
3385         .text
3386         .long   foo@TLSGD
3387         .long   foo@TLSLDM
3388         .long   foo@DTPOFF
3389         .long   foo@NTPOFF
3390         .long   foo@GOTNTPOFF
3391         .long   foo@INDNTPOFF
3392         l       %r1,foo@GOTNTPOFF(%r12)
3393         l       %r1,0(%r1):tls_load:foo
3394         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3395         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3396         tls_first_major=2
3397         tls_first_minor=14
3398         tls_as_opt="-m31 --fatal-warnings"
3399         ;;
3400   s390x-*-*)
3401     conftest_s='
3402         .section ".tdata","awT",@progbits
3403 foo:    .long   25
3404         .text
3405         .quad   foo@TLSGD
3406         .quad   foo@TLSLDM
3407         .quad   foo@DTPOFF
3408         .quad   foo@NTPOFF
3409         .quad   foo@GOTNTPOFF
3410         lg      %r1,foo@GOTNTPOFF(%r12)
3411         larl    %r1,foo@INDNTPOFF
3412         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3413         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3414         tls_first_major=2
3415         tls_first_minor=14
3416         tls_as_opt="-m64 -Aesame --fatal-warnings"
3417         ;;
3418   sh-*-* | sh[123456789lbe]*-*-*)
3419     conftest_s='
3420         .section ".tdata","awT",@progbits
3421 foo:    .long   25
3422         .text
3423         .long   foo@TLSGD
3424         .long   foo@TLSLDM
3425         .long   foo@DTPOFF
3426         .long   foo@GOTTPOFF
3427         .long   foo@TPOFF'
3428         tls_first_major=2
3429         tls_first_minor=13
3430         tls_as_opt=--fatal-warnings
3431         ;;
3432   sparc*-*-*)
3433     case "$target" in
3434       sparc*-sun-solaris2.*)
3435         on_solaris=yes
3436         ;;
3437       *)
3438         on_solaris=no
3439         ;;
3440     esac
3441     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3442       conftest_s='
3443         .section ".tdata",#alloc,#write,#tls'
3444         tls_first_major=0
3445         tls_first_minor=0
3446     else
3447       conftest_s='
3448         .section ".tdata","awT",@progbits'
3449         tls_first_major=2
3450         tls_first_minor=14
3451         tls_as_opt="-32 --fatal-warnings"
3452     fi
3453     conftest_s="$conftest_s
3454 foo:    .long   25
3455         .text
3456         sethi   %tgd_hi22(foo), %o0
3457         add     %o0, %tgd_lo10(foo), %o1
3458         add     %l7, %o1, %o0, %tgd_add(foo)
3459         call    __tls_get_addr, %tgd_call(foo)
3460         sethi   %tldm_hi22(foo), %l1
3461         add     %l1, %tldm_lo10(foo), %l2
3462         add     %l7, %l2, %o0, %tldm_add(foo)
3463         call    __tls_get_addr, %tldm_call(foo)
3464         sethi   %tldo_hix22(foo), %l3
3465         xor     %l3, %tldo_lox10(foo), %l4
3466         add     %o0, %l4, %l5, %tldo_add(foo)
3467         sethi   %tie_hi22(foo), %o3
3468         add     %o3, %tie_lo10(foo), %o3
3469         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3470         add     %g7, %o2, %o4, %tie_add(foo)
3471         sethi   %tle_hix22(foo), %l1
3472         xor     %l1, %tle_lox10(foo), %o5
3473         ld      [%g7 + %o5], %o1"
3474         ;;
3475   tilepro*-*-*)
3476       conftest_s='
3477         .section ".tdata","awT",@progbits
3478 foo:    .long   25
3479         .text
3480         addli   r0, zero, tls_gd(foo)
3481         auli    r0, zero, tls_gd_ha16(foo)
3482         addli   r0, r0, tls_gd_lo16(foo)
3483         jal     __tls_get_addr
3484         addli   r0, zero, tls_ie(foo)
3485         auli    r0, r0, tls_ie_ha16(foo)
3486         addli   r0, r0, tls_ie_lo16(foo)'
3487         tls_first_major=2
3488         tls_first_minor=22
3489         tls_as_opt="--fatal-warnings"
3490         ;;
3491   tilegx*-*-*)
3492       conftest_s='
3493         .section ".tdata","awT",@progbits
3494 foo:    .long   25
3495         .text
3496         shl16insli r0, zero, hw0_last_tls_gd(foo)
3497         shl16insli r0, zero, hw1_last_tls_gd(foo)
3498         shl16insli r0, r0,   hw0_tls_gd(foo)
3499         jal        __tls_get_addr
3500         shl16insli r0, zero, hw1_last_tls_ie(foo)
3501         shl16insli r0, r0,   hw0_tls_ie(foo)'
3502         tls_first_major=2
3503         tls_first_minor=22
3504         tls_as_opt="--fatal-warnings"
3505         ;;
3506   xtensa*-*-*)
3507     conftest_s='
3508         .section ".tdata","awT",@progbits
3509 foo:    .long   25
3510         .text
3511         movi    a8, foo@TLSFUNC
3512         movi    a10, foo@TLSARG
3513         callx8.tls a8, foo@TLSCALL'
3514         tls_first_major=2
3515         tls_first_minor=19
3516         ;;
3517 changequote([,])dnl
3518 esac
3519 set_have_as_tls=no
3520 if test "x$enable_tls" = xno ; then
3521   : # TLS explicitly disabled.
3522 elif test "x$enable_tls" = xyes ; then
3523   set_have_as_tls=yes # TLS explicitly enabled.
3524 elif test -z "$tls_first_major"; then
3525   : # If we don't have a check, assume no support.
3526 else
3527   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3528   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3529   [set_have_as_tls=yes])
3531 if test $set_have_as_tls = yes ; then
3532   AC_DEFINE(HAVE_AS_TLS, 1,
3533             [Define if your assembler and linker support thread-local storage.])
3536 # Target-specific assembler checks.
3538 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3539 gcc_cv_ld_static_dynamic=no
3540 gcc_cv_ld_static_option='-Bstatic'
3541 gcc_cv_ld_dynamic_option='-Bdynamic'
3542 if test $in_tree_ld = yes ; then
3543   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
3544     gcc_cv_ld_static_dynamic=yes
3545   fi
3546 elif test x$gcc_cv_ld != x; then
3547   # Check if linker supports -Bstatic/-Bdynamic option
3548   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3549      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3550       gcc_cv_ld_static_dynamic=yes
3551   else
3552     case "$target" in
3553       # AIX ld uses -b flags
3554       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3555         gcc_cv_ld_static_dynamic=yes
3556         gcc_cv_ld_static_option="-bstatic"
3557         gcc_cv_ld_dynamic_option="-bdynamic"
3558         ;;
3559       # HP-UX ld uses -a flags to select between shared and archive.
3560       *-*-hpux*)
3561         if test x"$gnu_ld" = xno; then
3562           gcc_cv_ld_static_dynamic=yes
3563           gcc_cv_ld_static_option="-aarchive_shared"
3564           gcc_cv_ld_dynamic_option="-adefault"
3565         fi
3566         ;;
3567       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3568       *-*-solaris2*)
3569         gcc_cv_ld_static_dynamic=yes
3570         ;;
3571     esac
3572   fi
3574 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3575         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3576 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3577         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3578 [Define to the linker option to disable use of shared objects.])
3579         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3580 [Define to the linker option to enable use of shared objects.])
3582 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3584 if test x"$demangler_in_ld" = xyes; then
3585   AC_MSG_CHECKING(linker --demangle support)
3586   gcc_cv_ld_demangle=no
3587   if test $in_tree_ld = yes; then
3588     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 \
3589       gcc_cv_ld_demangle=yes
3590     fi
3591   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3592     # Check if the GNU linker supports --demangle option
3593     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3594       gcc_cv_ld_demangle=yes
3595     fi
3596   fi
3597   if test x"$gcc_cv_ld_demangle" = xyes; then
3598     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3599 [Define if your linker supports --demangle option.])
3600   fi
3601   AC_MSG_RESULT($gcc_cv_ld_demangle)
3604 AC_MSG_CHECKING(linker plugin support)
3605 gcc_cv_lto_plugin=0
3606 if test -f liblto_plugin.la; then
3607   save_ld_ver="$ld_ver"
3608   save_ld_vers_major="$ld_vers_major"
3609   save_ld_vers_minor="$ld_vers_minor"
3610   save_ld_is_gold="$ld_is_gold"
3612   ld_is_gold=no
3614   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3615     ld_ver="GNU ld"
3616     # FIXME: ld_is_gold?
3617     ld_vers_major="$gcc_cv_gld_major_version"
3618     ld_vers_minor="$gcc_cv_gld_minor_version"
3619   else
3620     # Determine plugin linker version.
3621     # FIXME: Partial duplicate from above, generalize.
3622 changequote(,)dnl
3623     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3624     if echo "$ld_ver" | grep GNU > /dev/null; then
3625       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3626         ld_is_gold=yes
3627         ld_vers=`echo $ld_ver | sed -n \
3628             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3629       else
3630         ld_vers=`echo $ld_ver | sed -n \
3631             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3632       fi
3633       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3634       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3635     fi
3636 changequote([,])dnl
3637   fi
3639   # Determine plugin support.
3640   if echo "$ld_ver" | grep GNU > /dev/null; then
3641     # Require GNU ld or gold 2.21+ for plugin support by default.
3642     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3643       gcc_cv_lto_plugin=2
3644     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3645     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3646       gcc_cv_lto_plugin=1
3647     fi
3648   fi
3650   ld_ver="$save_ld_ver"
3651   ld_vers_major="$save_ld_vers_major"
3652   ld_vers_minor="$save_ld_vers_minor"
3653   ld_is_gold="$save_ld_is_gold"
3655 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3656   [Define to the level of your linker's plugin support.])
3657 AC_MSG_RESULT($gcc_cv_lto_plugin)
3659 case "$target" in
3660   aarch64*-*-*)
3661     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3662                           [-mabi=lp64], [.text],,,)
3663     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3664       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3665                 [Define if your assembler supports the -mabi option.])
3666     else
3667       if test x$with_abi = xilp32; then
3668         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3669                      Upgrade the Assembler.])
3670       fi
3671       if test x"$with_multilib_list" = xdefault; then
3672         TM_MULTILIB_CONFIG=lp64
3673       else
3674         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3675         for aarch64_multilib in ${aarch64_multilibs}; do
3676           case ${aarch64_multilib} in
3677             ilp32)
3678               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3679                             Upgrade the Assembler.])
3680               ;;
3681             *)
3682               ;;
3683           esac
3684         done
3685       fi
3686     fi
3687     # Check if we have binutils support for relocations types needed by -fpic
3688     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
3689     [
3690         .text
3691         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
3692     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
3693         [Define if your assembler supports relocs needed by -fpic.])])
3694     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
3695     AC_ARG_ENABLE(fix-cortex-a53-835769,
3696     [
3697 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
3698         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3699 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
3700         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3701     ],
3702       [
3703         case $enableval in
3704           yes)
3705             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
3706             ;;
3707           no)
3708             ;;
3709           *)
3710             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
3711   Valid choices are 'yes' and 'no'.])
3712             ;;
3714         esac
3715       ],
3716     [])
3717     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
3718     AC_ARG_ENABLE(fix-cortex-a53-843419,
3719     [
3720 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
3721         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3722 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
3723         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3724     ],
3725       [
3726         case $enableval in
3727           yes)
3728             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
3729             ;;
3730           no)
3731             ;;
3732           *)
3733             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
3734   Valid choices are 'yes' and 'no'.])
3735             ;;
3737         esac
3738       ],
3739     [])
3740     ;;
3742   # All TARGET_ABI_OSF targets.
3743   alpha*-*-linux* | alpha*-*-*bsd*)
3744     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3745         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3746 [       .set nomacro
3747         .text
3748         extbl   $3, $2, $3      !lituse_bytoff!1
3749         ldq     $2, a($29)      !literal!1
3750         ldq     $4, b($29)      !literal!2
3751         ldq_u   $3, 0($2)       !lituse_base!1
3752         ldq     $27, f($29)     !literal!5
3753         jsr     $26, ($27), f   !lituse_jsr!5
3754         ldah    $29, 0($26)     !gpdisp!3
3755         lda     $0, c($29)      !gprel
3756         ldah    $1, d($29)      !gprelhigh
3757         lda     $1, d($1)       !gprellow
3758         lda     $29, 0($29)     !gpdisp!3],,
3759     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3760   [Define if your assembler supports explicit relocations.])])
3761     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3762         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3763 [       .set nomacro
3764         .text
3765         ldq     $27, a($29)     !literal!1
3766         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3767     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3768   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3769     ;;
3771   avr-*-*)
3772     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
3773       [--mlink-relax], [.text],,
3774       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
3775                 [Define if your avr assembler supports --mlink-relax option.])])
3777     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
3778       [-mrmw], [.text],,
3779       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
3780                 [Define if your avr assembler supports -mrmw option.])])
3781     ;;
3783   cris-*-*)
3784     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3785       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3786       [-no-mul-bug-abort], [.text],,
3787       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3788                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3789     ;;
3791   sparc*-*-*)
3792     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3793       [.register %g2, #scratch],,
3794       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3795                 [Define if your assembler supports .register.])])
3797     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3798       [-relax], [.text],,
3799       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3800                 [Define if your assembler supports -relax option.])])
3802     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3803       gcc_cv_as_sparc_gotdata_op,,
3804       [-K PIC],
3805 [.text
3806 .align 4
3807 foo:
3808         nop
3809 bar:
3810         sethi %gdop_hix22(foo), %g1
3811         xor    %g1, %gdop_lox10(foo), %g1
3812         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3813       [if test x$gcc_cv_ld != x \
3814        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3815          if test x$gcc_cv_objdump != x; then
3816            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3817               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3818                gcc_cv_as_sparc_gotdata_op=no
3819            else
3820                gcc_cv_as_sparc_gotdata_op=yes
3821            fi
3822          fi
3823        fi
3824        rm -f conftest],
3825       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3826                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3828     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3829       gcc_cv_as_sparc_ua_pcrel,,
3830       [-K PIC],
3831 [.text
3832 foo:
3833         nop
3834 .data
3835 .align 4
3836 .byte 0
3837 .uaword %r_disp32(foo)],
3838       [if test x$gcc_cv_ld != x \
3839        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3840          gcc_cv_as_sparc_ua_pcrel=yes
3841        fi
3842        rm -f conftest],
3843       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3844                 [Define if your assembler and linker support unaligned PC relative relocs.])
3846       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3847         gcc_cv_as_sparc_ua_pcrel_hidden,,
3848         [-K PIC],
3849 [.data
3850 .align 4
3851 .byte 0x31
3852 .uaword %r_disp32(foo)
3853 .byte 0x32, 0x33, 0x34
3854 .global foo
3855 .hidden foo
3856 foo:
3857 .skip 4],
3858         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3859          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3860          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3861             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3862             if $gcc_cv_objdump -R conftest 2> /dev/null \
3863                | grep 'DISP32' > /dev/null 2>&1; then
3864                 :
3865             else
3866                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3867             fi
3868          fi
3869          rm -f conftest],
3870          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3871                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3872     ]) # unaligned pcrel relocs
3874     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3875       gcc_cv_as_sparc_offsetable_lo10,,
3876       [-xarch=v9],
3877 [.text
3878         or %g1, %lo(ab) + 12, %g1
3879         or %g1, %lo(ab + 12), %g1],
3880       [if test x$gcc_cv_objdump != x \
3881        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3882           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3883          gcc_cv_as_sparc_offsetable_lo10=yes
3884        fi],
3885        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3886                  [Define if your assembler supports offsetable %lo().])])
3888     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3889       gcc_cv_as_sparc_fmaf,,
3890       [-xarch=v9d],
3891       [.text
3892        .register %g2, #scratch
3893        .register %g3, #scratch
3894        .align 4
3895        fmaddd %f0, %f2, %f4, %f6
3896        addxccc %g1, %g2, %g3
3897        fsrl32 %f2, %f4, %f8
3898        fnaddd %f10, %f12, %f14],,
3899       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3900                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3902     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3903       gcc_cv_as_sparc_sparc4,,
3904       [-xarch=sparc4],
3905       [.text
3906        .register %g2, #scratch
3907        .register %g3, #scratch
3908        .align 4
3909        cxbe %g2, %g3, 1f
3910 1:     cwbneg %g2, %g3, 1f
3911 1:     sha1
3912        md5
3913        aes_kexpand0 %f4, %f6, %f8
3914        des_round %f38, %f40, %f42, %f44
3915        camellia_f %f54, %f56, %f58, %f60
3916        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3917       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3918                 [Define if your assembler supports SPARC4 instructions.])])
3920     gcc_GAS_CHECK_FEATURE([LEON instructions],
3921       gcc_cv_as_sparc_leon,,
3922       [-Aleon],
3923       [.text
3924        .register %g2, #scratch
3925        .register %g3, #scratch
3926        .align 4
3927        smac %g2, %g3, %g1
3928        umac %g2, %g3, %g1
3929        casa [[%g2]] 0xb, %g3, %g1],,
3930       [AC_DEFINE(HAVE_AS_LEON, 1,
3931                 [Define if your assembler supports LEON instructions.])])
3932     ;;
3934 changequote(,)dnl
3935   i[34567]86-*-* | x86_64-*-*)
3936 changequote([,])dnl
3937     case $target_os in
3938       cygwin*)
3939         # Full C++ conformance when using a shared libstdc++-v3 requires some
3940         # support from the Cygwin DLL, which in more recent versions exports
3941         # wrappers to aid in interposing and redirecting operators new, delete,
3942         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3943         # are configuring for a version of Cygwin that exports the wrappers.
3944         if test x$host = x$target && test x$host_cpu = xi686; then
3945           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3946         else
3947           # Can't check presence of libc functions during cross-compile, so
3948           # we just have to assume we're building for an up-to-date target.
3949           gcc_ac_cygwin_dll_wrappers=yes
3950         fi
3951         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3952           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3953           [Define if you want to generate code by default that assumes that the
3954            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3955     esac
3956     case $target_os in
3957       cygwin* | pe | mingw32* | interix*)
3958         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3959         # definition is used unconditionally to initialise the default state of
3960         # the target option variable that governs usage of the feature.
3961         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3962          [2,19,52],,[.comm foo,1,32])
3963         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3964           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3965           [Define if your assembler supports specifying the alignment
3966            of objects allocated using the GAS .comm command.])
3967         # Used for DWARF 2 in PE
3968         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3969           gcc_cv_as_ix86_pe_secrel32,
3970           [2,15,91],,
3971 [.text
3972 foo:    nop
3973 .data
3974         .secrel32 foo],
3975           [if test x$gcc_cv_ld != x \
3976            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3977              gcc_cv_as_ix86_pe_secrel32=yes
3978            fi
3979            rm -f conftest],
3980           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3981             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3982         # Test if the assembler supports the extended form of the .section
3983         # directive that specifies section alignment.  LTO support uses this,
3984         # but normally only after installation, so we warn but don't fail the
3985         # configure if LTO is enabled but the assembler does not support it.
3986         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3987           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3988         if test x$gcc_cv_as_section_has_align != xyes; then
3989           case ",$enable_languages," in
3990             *,lto,*)
3991               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3992               ;;
3993           esac
3994         fi
3995         ;;
3996     esac
3998     # Test if the assembler supports the section flag 'e' for specifying
3999     # an excluded section.
4000     gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
4001       [2,22,51], [--fatal-warnings],
4002 [.section foo1,"e"
4003 .byte 0,0,0,0])
4004     AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
4005       [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
4006       [Define if your assembler supports specifying the section flag e.])
4008     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4009        gcc_cv_as_ix86_filds,,,
4010        [filds (%ebp); fists (%ebp)],,
4011        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4012          [Define if your assembler uses filds and fists mnemonics.])])
4014     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4015        gcc_cv_as_ix86_fildq,,,
4016        [fildq (%ebp); fistpq (%ebp)],,
4017        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4018          [Define if your assembler uses fildq and fistq mnemonics.])])
4020     gcc_GAS_CHECK_FEATURE([cmov syntax],
4021       gcc_cv_as_ix86_cmov_sun_syntax,,,
4022       [cmovl.l %edx, %eax],,
4023       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4024         [Define if your assembler supports the Sun syntax for cmov.])])
4026     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4027       gcc_cv_as_ix86_ffreep,,,
4028       [ffreep %st(1)],,
4029       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4030         [Define if your assembler supports the ffreep mnemonic.])])
4032     gcc_GAS_CHECK_FEATURE([.quad directive],
4033       gcc_cv_as_ix86_quad,,,
4034       [.quad 0],,
4035       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4036         [Define if your assembler supports the .quad directive.])])
4038     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4039       gcc_cv_as_ix86_sahf,,,
4040       [.code64
4041        sahf],,
4042       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4043         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4045     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4046       gcc_cv_as_ix86_interunit_movq,,,
4047       [.code64
4048        movq %mm0, %rax
4049        movq %rax, %xmm0])
4050     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4051       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4052       [Define if your assembler supports interunit movq mnemonic.])
4054     gcc_GAS_CHECK_FEATURE([hle prefixes],
4055       gcc_cv_as_ix86_hle,,,
4056       [lock xacquire cmpxchg %esi, (%ecx)],,
4057       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4058         [Define if your assembler supports HLE prefixes.])])
4060     gcc_GAS_CHECK_FEATURE([swap suffix],
4061       gcc_cv_as_ix86_swap,,,
4062       [movl.s %esp, %ebp],,
4063       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4064         [Define if your assembler supports the swap suffix.])])
4066     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4067       gcc_cv_as_ix86_diff_sect_delta,,,
4068       [.section .rodata
4069 .L1:
4070         .long .L2-.L1
4071         .long .L3-.L1
4072         .text
4073 .L3:    nop
4074 .L2:    nop],,
4075       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4076         [Define if your assembler supports the subtraction of symbols in different sections.])])
4078     # These two are used unconditionally by i386.[ch]; it is to be defined
4079     # to 1 if the feature is present, 0 otherwise.
4080     as_ix86_gotoff_in_data_opt=
4081     if test x$gas = xyes; then
4082       as_ix86_gotoff_in_data_opt="--32"
4083     fi
4084     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4085       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4086       [$as_ix86_gotoff_in_data_opt],
4087 [       .text
4088 .L0:
4089         nop
4090         .data
4091         .long .L0@GOTOFF])
4092     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4093       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4094       [Define true if the assembler supports '.long foo@GOTOFF'.])
4096     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4097         gcc_cv_as_ix86_rep_lock_prefix,,,
4098         [rep movsl
4099          rep ret
4100          rep nop
4101          rep bsf %ecx, %eax
4102          rep bsr %ecx, %eax
4103          lock addl %edi, (%eax,%esi)
4104          lock orl $0, (%esp)],,
4105         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4106           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4108     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4109         gcc_cv_as_ix86_ud2,,,
4110         [ud2],,
4111       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4112         [Define if your assembler supports the 'ud2' mnemonic.])])
4114     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4115         gcc_cv_as_ix86_tlsgdplt,,,
4116         [call    tls_gd@tlsgdplt],
4117         [if test x$gcc_cv_ld != x \
4118          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4119            gcc_cv_as_ix86_tlsgdplt=yes
4120          fi
4121          rm -f conftest],
4122       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4123         [Define if your assembler and linker support @tlsgdplt.])])
4125     conftest_s='
4126         .section .tdata,"aw'$tls_section_flag'",@progbits
4127 tls_ld:
4128         .section .text,"ax",@progbits
4129          call    tls_ld@tlsldmplt'
4130     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4131         gcc_cv_as_ix86_tlsldmplt,,,
4132         [$conftest_s],
4133         [if test x$gcc_cv_ld != x \
4134          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4135            gcc_cv_as_ix86_tlsldmplt=yes
4136          fi
4137          rm -f conftest])
4138     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4139       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4140       [Define to 1 if your assembler and linker support @tlsldmplt.])
4142     # Enforce 32-bit output with gas and gld.
4143     if test x$gas = xyes; then
4144       as_ix86_tls_ldm_opt="--32"
4145     fi
4146     if echo "$ld_ver" | grep GNU > /dev/null; then
4147       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4148         ld_ix86_tls_ldm_opt="-melf_i386_sol2"
4149       else
4150         ld_ix86_tls_ldm_opt="-melf_i386"
4151       fi
4152     fi
4153     conftest_s='
4154         .section .text,"ax",@progbits
4155         .globl  _start
4156         .type   _start, @function
4157 _start:      
4158         leal    value@tlsldm(%ebx), %eax
4159         call    ___tls_get_addr@plt
4161         .section .tdata,"aw'$tls_section_flag'",@progbits
4162         .type   value, @object
4163 value:'
4164     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4165         gcc_cv_as_ix86_tlsldm,,
4166         [$as_ix86_tls_ldm_opt],
4167         [$conftest_s],
4168         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4169             && $gcc_cv_ld $ld_ix86_tls_ldm_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4170            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4171               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4172              gcc_cv_as_ix86_tlsldm=yes
4173            fi
4174          fi
4175          rm -f conftest])
4176     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4177       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4178       [Define to 1 if your assembler and linker support @tlsldm.])
4180     ;;
4182   ia64*-*-*)
4183     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4184         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4185 [       .text
4186         addl r15 = @ltoffx(x#), gp
4187         ;;
4188         ld8.mov r16 = [[r15]], x#],,
4189     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4190           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4192     ;;
4194   powerpc*-*-*)
4196     case $target in
4197       *-*-darwin*)
4198         gcc_GAS_CHECK_FEATURE([.machine directive support],
4199           gcc_cv_as_machine_directive,,,
4200           [     .machine ppc7400])
4201         if test x$gcc_cv_as_machine_directive != xyes; then
4202           echo "*** This target requires an assembler supporting \".machine\"" >&2
4203           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4204           test x$build = x$target && exit 1
4205         fi
4206         ;;
4207     esac
4209     case $target in
4210       *-*-aix*) conftest_s='    .machine "pwr5"
4211         .csect .text[[PR]]
4212         mfcr 3,128';;
4213       *-*-darwin*) conftest_s=' .text
4214         mfcr r3,128';;
4215       *) conftest_s='   .machine power4
4216         .text
4217         mfcr 3,128';;
4218     esac
4220     gcc_GAS_CHECK_FEATURE([mfcr field support],
4221       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4222       [$conftest_s],,
4223       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4224           [Define if your assembler supports mfcr field.])])
4226     case $target in
4227       *-*-aix*) conftest_s='    .machine "pwr5"
4228         .csect .text[[PR]]
4229         popcntb 3,3';;
4230       *) conftest_s='   .machine power5
4231         .text
4232         popcntb 3,3';;
4233     esac
4235     gcc_GAS_CHECK_FEATURE([popcntb support],
4236       gcc_cv_as_powerpc_popcntb, [2,17,0],,
4237       [$conftest_s],,
4238       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4239           [Define if your assembler supports popcntb field.])])
4241     case $target in
4242       *-*-aix*) conftest_s='    .machine "pwr5x"
4243         .csect .text[[PR]]
4244         frin 1,1';;
4245       *) conftest_s='   .machine power5
4246         .text
4247         frin 1,1';;
4248     esac
4250     gcc_GAS_CHECK_FEATURE([fp round support],
4251       gcc_cv_as_powerpc_fprnd, [2,17,0],,
4252       [$conftest_s],,
4253       [AC_DEFINE(HAVE_AS_FPRND, 1,
4254           [Define if your assembler supports fprnd.])])
4256     case $target in
4257       *-*-aix*) conftest_s='    .machine "pwr6"
4258         .csect .text[[PR]]
4259         mffgpr 1,3';;
4260       *) conftest_s='   .machine power6
4261         .text
4262         mffgpr 1,3';;
4263     esac
4265     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4266       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4267       [$conftest_s],,
4268       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4269           [Define if your assembler supports mffgpr and mftgpr.])])
4271     case $target in
4272       *-*-aix*) conftest_s='    .csect .text[[PR]]
4273 LCF..0:
4274         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4275       *-*-darwin*)
4276         conftest_s='    .text
4277 LCF0:
4278         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4279       *) conftest_s='   .text
4280 .LCF0:
4281         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4282     esac
4284     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4285       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4286       [$conftest_s],,
4287       [AC_DEFINE(HAVE_AS_REL16, 1,
4288           [Define if your assembler supports R_PPC_REL16 relocs.])])
4290     case $target in
4291       *-*-aix*) conftest_s='    .machine "pwr6"
4292         .csect .text[[PR]]
4293         cmpb 3,4,5';;
4294       *) conftest_s='   .machine power6
4295         .text
4296         cmpb 3,4,5';;
4297     esac
4299     gcc_GAS_CHECK_FEATURE([compare bytes support],
4300       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4301       [$conftest_s],,
4302       [AC_DEFINE(HAVE_AS_CMPB, 1,
4303           [Define if your assembler supports cmpb.])])
4305     case $target in
4306       *-*-aix*) conftest_s='    .machine "pwr6"
4307         .csect .text[[PR]]
4308         dadd 1,2,3';;
4309       *) conftest_s='   .machine power6
4310         .text
4311         dadd 1,2,3';;
4312     esac
4314     gcc_GAS_CHECK_FEATURE([decimal float support],
4315       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4316       [$conftest_s],,
4317       [AC_DEFINE(HAVE_AS_DFP, 1,
4318           [Define if your assembler supports DFP instructions.])])
4320     case $target in
4321       *-*-aix*) conftest_s='    .machine "pwr7"
4322         .csect .text[[PR]]
4323         lxvd2x 1,2,3';;
4324       *) conftest_s='   .machine power7
4325         .text
4326         lxvd2x 1,2,3';;
4327     esac
4329     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4330       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4331       [$conftest_s],,
4332       [AC_DEFINE(HAVE_AS_VSX, 1,
4333           [Define if your assembler supports VSX instructions.])])
4335     case $target in
4336       *-*-aix*) conftest_s='    .machine "pwr7"
4337         .csect .text[[PR]]
4338         popcntd 3,3';;
4339       *) conftest_s='   .machine power7
4340         .text
4341         popcntd 3,3';;
4342     esac
4344     gcc_GAS_CHECK_FEATURE([popcntd support],
4345       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4346       [$conftest_s],,
4347       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4348           [Define if your assembler supports POPCNTD instructions.])])
4350     case $target in
4351       *-*-aix*) conftest_s='    .machine "pwr8"
4352         .csect .text[[PR]]';;
4353       *) conftest_s='   .machine power8
4354         .text';;
4355     esac
4357     gcc_GAS_CHECK_FEATURE([power8 support],
4358       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4359       [$conftest_s],,
4360       [AC_DEFINE(HAVE_AS_POWER8, 1,
4361           [Define if your assembler supports POWER8 instructions.])])
4363     case $target in
4364       *-*-aix*) conftest_s='    .machine "pwr9"
4365         .csect .text[[PR]]';;
4366       *) conftest_s='   .machine power9
4367         .text';;
4368     esac
4370     gcc_GAS_CHECK_FEATURE([power9 support],
4371       gcc_cv_as_powerpc_power9, [2,19,2], -a32,
4372       [$conftest_s],,
4373       [AC_DEFINE(HAVE_AS_POWER9, 1,
4374           [Define if your assembler supports POWER9 instructions.])])
4376     case $target in
4377       *-*-aix*) conftest_s='    .csect .text[[PR]]
4378         lwsync';;
4379       *) conftest_s='   .text
4380         lwsync';;
4381     esac
4383     gcc_GAS_CHECK_FEATURE([lwsync support],
4384       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4385       [$conftest_s],,
4386       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4387           [Define if your assembler supports LWSYNC instructions.])])
4389     case $target in
4390       *-*-aix*) conftest_s='    .machine "476"
4391         .csect .text[[PR]]
4392         dci 0';;
4393       *) conftest_s='   .machine "476"
4394         .text
4395         dci 0';;
4396     esac
4398     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4399       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4400       [$conftest_s],,
4401       [AC_DEFINE(HAVE_AS_DCI, 1,
4402           [Define if your assembler supports the DCI/ICI instructions.])])
4404     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4405       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4406       [.gnu_attribute 4,1],,
4407       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4408           [Define if your assembler supports .gnu_attribute.])])
4410     gcc_GAS_CHECK_FEATURE([tls marker support],
4411       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4412       [ bl __tls_get_addr(x@tlsgd)],,
4413       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4414           [Define if your assembler supports arg info for __tls_get_addr.])])
4416     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4417       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4418       [ .reloc .,R_PPC64_ENTRY; nop],,
4419       [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4420           [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4422     case $target in
4423       *-*-aix*)
4424         gcc_GAS_CHECK_FEATURE([AIX .ref support],
4425           gcc_cv_as_aix_ref, [2,21,0],,
4426           [     .csect stuff[[rw]]
4427              stuff:
4428                 .long 1
4429                 .extern sym
4430                 .ref sym
4431           ],,
4432           [AC_DEFINE(HAVE_AS_REF, 1,
4433             [Define if your assembler supports .ref])])
4435         gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4436           gcc_cv_as_aix_dwloc, [2,21,0],,
4437           [     .dwsect 0xA0000
4438         Lframe..0:
4439                 .vbyte 4,Lframe..0:
4440           ],,
4441           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4442             [Define if your assembler supports AIX debug frame section label reference.])])
4443         ;;
4444     esac
4445     ;;
4447   mips*-*-*)
4448     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4449       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4450 [       lw $4,%gp_rel(foo)($4)],,
4451       [if test x$target_cpu_default = x
4452        then target_cpu_default=MASK_EXPLICIT_RELOCS
4453        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4454        fi])
4456     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4457       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4458       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4459                  [Define if the assembler understands -mno-shared.])])
4461     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4462       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4463       [.gnu_attribute 4,1],,
4464       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4465           [Define if your assembler supports .gnu_attribute.])])
4467     gcc_GAS_CHECK_FEATURE([.module support],
4468       gcc_cv_as_mips_dot_module,,[-32],
4469       [.module mips2
4470        .module fp=xx],,
4471       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4472           [Define if your assembler supports .module.])])
4473     if test x$gcc_cv_as_mips_dot_module = xno \
4474        && test x$with_fp_32 != x; then
4475       AC_MSG_ERROR(
4476         [Requesting --with-fp-32= requires assembler support for .module.])
4477     fi
4479     gcc_GAS_CHECK_FEATURE([.micromips support],
4480       gcc_cv_as_micromips_support,,[--fatal-warnings],
4481       [.set micromips],,
4482       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4483           [Define if your assembler supports the .set micromips directive])])
4485     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4486       gcc_cv_as_mips_dtprelword, [2,18,0],,
4487       [.section .tdata,"awT",@progbits
4489         .word 2
4490         .text
4491         .dtprelword x+0x8000],,
4492       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4493           [Define if your assembler supports .dtprelword.])])
4495     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4496       gcc_cv_as_mips_dspr1_mult,,,
4497 [       .set    mips32r2
4498         .set    nodspr2
4499         .set    dsp
4500         madd    $ac3,$4,$5
4501         maddu   $ac3,$4,$5
4502         msub    $ac3,$4,$5
4503         msubu   $ac3,$4,$5
4504         mult    $ac3,$4,$5
4505         multu   $ac3,$4,$5],,
4506       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4507           [Define if your assembler supports DSPR1 mult.])])
4509     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4510     gcc_cv_as_ld_jalr_reloc=no
4511     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4512       if test $in_tree_ld = yes ; then
4513         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 \
4514            && test $in_tree_ld_is_elf = yes; then
4515           gcc_cv_as_ld_jalr_reloc=yes
4516         fi
4517       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4518         echo '  .ent x' > conftest.s
4519         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4520         echo '  lw $25,%call16(y)($28)' >> conftest.s
4521         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4522         echo '1:        jalr $25' >> conftest.s
4523         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4524         echo '1:        jalr $25' >> conftest.s
4525         echo '  .end x' >> conftest.s
4526         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4527            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4528           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4529              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4530             gcc_cv_as_ld_jalr_reloc=yes
4531           fi
4532         fi
4533         rm -f conftest.*
4534       fi
4535     fi
4536     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4537       if test x$target_cpu_default = x; then
4538         target_cpu_default=MASK_RELAX_PIC_CALLS
4539       else
4540         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4541       fi
4542     fi
4543     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4545     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4546       [gcc_cv_ld_mips_personality_relaxation],
4547       [gcc_cv_ld_mips_personality_relaxation=no
4548        if test $in_tree_ld = yes ; then
4549          if test "$gcc_cv_gld_major_version" -eq 2 \
4550                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4551                  -o "$gcc_cv_gld_major_version" -gt 2; then
4552            gcc_cv_ld_mips_personality_relaxation=yes
4553          fi
4554        elif test x$gcc_cv_as != x \
4555                  -a x$gcc_cv_ld != x \
4556                  -a x$gcc_cv_readelf != x ; then
4557          cat > conftest.s <<EOF
4558         .cfi_startproc
4559         .cfi_personality 0x80,indirect_ptr
4560         .ent test
4561 test:
4562         nop
4563         .end test
4564         .cfi_endproc
4566         .section .data,"aw",@progbits
4567 indirect_ptr:
4568         .dc.a personality
4570          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4571             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4572            if $gcc_cv_readelf -d conftest 2>&1 \
4573               | grep TEXTREL > /dev/null 2>&1; then
4574              :
4575            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4576                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4577              :
4578            else
4579              gcc_cv_ld_mips_personality_relaxation=yes
4580            fi
4581          fi
4582        fi
4583        rm -f conftest.s conftest.o conftest])
4584     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4585             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4586       [Define if your linker can relax absolute .eh_frame personality
4587 pointers into PC-relative form.])
4588     fi
4590     gcc_GAS_CHECK_FEATURE([-mnan= support],
4591       gcc_cv_as_mips_nan,,
4592       [-mnan=2008],,,
4593       [AC_DEFINE(HAVE_AS_NAN, 1,
4594                  [Define if the assembler understands -mnan=.])])
4595     if test x$gcc_cv_as_mips_nan = xno \
4596        && test x$with_nan != x; then
4597       AC_MSG_ERROR(
4598         [Requesting --with-nan= requires assembler support for -mnan=])
4599     fi
4600     ;;
4601     s390*-*-*)
4602     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4603       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4604       [.gnu_attribute 8,1],,
4605       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4606           [Define if your assembler supports .gnu_attribute.])])
4607     gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
4608       gcc_cv_as_s390_machine_machinemode, [2,24,0],,
4609       [ .machinemode push
4610         .machinemode pop
4611         .machine push
4612         .machine pop],,
4613       [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
4614           [Define if your assembler supports .machine and .machinemode.])])
4615     gcc_GAS_CHECK_FEATURE([architecture modifiers support],
4616       gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
4617       [ .machine z13+vx ],,
4618       [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
4619           [Define if your assembler supports architecture modifiers.])])
4620     ;;
4621 esac
4623 # Mips and HP-UX need the GNU assembler.
4624 # Linux on IA64 might be able to use the Intel assembler.
4626 case "$target" in
4627   mips*-*-* | *-*-hpux* )
4628     if test x$gas_flag = xyes \
4629        || test x"$host" != x"$build" \
4630        || test ! -x "$gcc_cv_as" \
4631        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4632       :
4633     else
4634       echo "*** This configuration requires the GNU assembler" >&2
4635       exit 1
4636     fi
4637     ;;
4638 esac
4640 # ??? Not all targets support dwarf2 debug_line, even within a version
4641 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4642 # info to the output file.  So, as supported targets are added to gas 2.11,
4643 # add some instruction here to (also) show we expect this might work.
4644 # ??? Once 2.11 is released, probably need to add first known working
4645 # version to the per-target configury.
4646 case "$cpu_type" in
4647   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4648   | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4649   | visium | xstormy16 | xtensa)
4650     insn="nop"
4651     ;;
4652   ia64 | s390)
4653     insn="nop 0"
4654     ;;
4655   mmix)
4656     insn="swym 0"
4657     ;;
4658 esac
4659 if test x"$insn" != x; then
4660  conftest_s="\
4661         .file 1 \"conftest.s\"
4662         .loc 1 3 0
4663         $insn"
4664  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4665   gcc_cv_as_dwarf2_debug_line,
4666   [elf,2,11,0],, [$conftest_s],
4667   [if test x$gcc_cv_objdump != x \
4668    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4669       | grep debug_line > /dev/null 2>&1; then
4670      gcc_cv_as_dwarf2_debug_line=yes
4671    fi])
4673 # The .debug_line file table must be in the exact order that
4674 # we specified the files, since these indices are also used
4675 # by DW_AT_decl_file.  Approximate this test by testing if
4676 # the assembler bitches if the same index is assigned twice.
4677  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4678   gcc_cv_as_dwarf2_file_buggy,,,
4679 [       .file 1 "foo.s"
4680         .file 1 "bar.s"])
4682  if test $gcc_cv_as_dwarf2_debug_line = yes \
4683  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4684         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4685   [Define if your assembler supports dwarf2 .file/.loc directives,
4686    and preserves file table indices exactly as given.])
4687  fi
4689  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4690   gcc_cv_as_gdwarf2_flag,
4691   [elf,2,11,0], [--gdwarf2], [$insn],,
4692   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4693 [Define if your assembler supports the --gdwarf2 option.])])
4695  gcc_GAS_CHECK_FEATURE([--gstabs option],
4696   gcc_cv_as_gstabs_flag,
4697   [elf,2,11,0], [--gstabs], [$insn],,
4698   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4699 [Define if your assembler supports the --gstabs option.])])
4701  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4702   gcc_cv_as_debug_prefix_map_flag,
4703   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4704   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4705 [Define if your assembler supports the --debug-prefix-map option.])])
4708 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4709   gcc_cv_as_compress_debug,,[--compress-debug-sections],,
4710   [# gas compiled without zlib cannot compress debug sections and warns
4711    # about it, but still exits successfully.  So check for this, too.
4712    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4713    then
4714      gcc_cv_as_compress_debug=0
4715    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4716    then
4717      gcc_cv_as_compress_debug=1
4718      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4719      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4720    else
4721      gcc_cv_as_compress_debug=0
4722    # FIXME: Future gas versions will support ELF gABI style via
4723    # --compress-debug-sections[=type].
4724    fi])
4725 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4726 [Define to the level of your assembler's compressed debug section support.])
4727 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4728 [Define to the assembler option to enable compressed debug sections.])
4729 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4730 [Define to the assembler option to disable compressed debug sections.])
4732 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4733  ,,
4734 [.lcomm bar,4,16],,
4735 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4736   [Define if your assembler supports .lcomm with an alignment field.])])
4738 if test x$with_sysroot = x && test x$host = x$target \
4739    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4740    && test "$prefix" != "NONE"; then
4741   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4742 [Define to PREFIX/include if cpp should also search that directory.])
4745 # Determine the version of glibc, if any, used on the target.
4746 AC_MSG_CHECKING([for target glibc version])
4747 AC_ARG_WITH([glibc-version],
4748   [AS_HELP_STRING([--with-glibc-version=M.N],
4749     [assume GCC used with glibc version M.N or later])], [
4750 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4751   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4752   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4753 else
4754   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4755 fi], [
4756 glibc_version_major=0
4757 glibc_version_minor=0
4758 [if test -f $target_header_dir/features.h \
4759   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4760   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4761   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4762   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4763 fi]])
4764 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4765 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
4766 [GNU C Library major version number used on the target, or 0.])
4767 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
4768 [GNU C Library minor version number used on the target, or 0.])
4770 AC_ARG_ENABLE(gnu-unique-object,
4771  [AS_HELP_STRING([--enable-gnu-unique-object],
4772    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4773  [case $enable_gnu_unique_object in
4774     yes | no) ;;
4775     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4776 Valid choices are 'yes' and 'no'.]) ;;
4777   esac],
4778  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4779    [elf,2,19,52],,
4780    [.type foo, '$target_type_format_char'gnu_unique_object],,
4781 # We need to unquote above to to use the definition from config.gcc.
4782 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4783    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4784    )])
4785 if test x$enable_gnu_unique_object = xyes; then
4786   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4787    [Define if your assembler supports @gnu_unique_object.])
4790 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4791  [gcc_cv_as_line_zero],
4792  [gcc_cv_as_line_zero=no
4793   if test $in_tree_gas = yes; then
4794     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4795   elif test "x$gcc_cv_as" != x; then
4796     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4797     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4798        test "x`cat conftest.out`" = x
4799     then
4800       gcc_cv_as_line_zero=yes
4801     else
4802       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4803       cat conftest.s >&AS_MESSAGE_LOG_FD
4804       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4805       cat conftest.out >&AS_MESSAGE_LOG_FD
4806     fi
4807     rm -f conftest.o conftest.s conftest.out
4808   fi])
4809 if test "x$gcc_cv_as_line_zero" = xyes; then
4810   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4811 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4814 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4815 gcc_cv_ld_eh_frame_hdr=no
4816 if test $in_tree_ld = yes ; then
4817   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 \
4818      && test $in_tree_ld_is_elf = yes; then
4819     gcc_cv_ld_eh_frame_hdr=yes
4820   fi
4821 elif test x$gcc_cv_ld != x; then
4822   if echo "$ld_ver" | grep GNU > /dev/null; then
4823     # Check if linker supports --eh-frame-hdr option
4824     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4825       gcc_cv_ld_eh_frame_hdr=yes
4826     fi
4827   else
4828     case "$target" in
4829       *-*-solaris2*)
4830         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4831         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4832           gcc_cv_ld_eh_frame_hdr=yes
4833         fi
4834         ;;
4835     esac
4836   fi
4838 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4839 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4840         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4841 [Define if your linker supports .eh_frame_hdr.])
4843 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4845 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4846 gcc_cv_ld_eh_frame_ciev3=no
4847 if test $in_tree_ld = yes ; then
4848   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 \
4849      && test $in_tree_ld_is_elf = yes; then
4850     gcc_cv_ld_eh_frame_ciev3=yes
4851   fi
4852 elif test x$gcc_cv_ld != x; then
4853   if echo "$ld_ver" | grep GNU > /dev/null; then
4854     gcc_cv_ld_eh_frame_ciev3=yes
4855     if test 0"$ld_date" -lt 20040513; then
4856       if test -n "$ld_date"; then
4857         # If there was date string, but was earlier than 2004-05-13, fail
4858         gcc_cv_ld_eh_frame_ciev3=no
4859       elif test "$ld_vers_major" -lt 2; then
4860         gcc_cv_ld_eh_frame_ciev3=no
4861       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4862         gcc_cv_ld_eh_frame_ciev3=no
4863       fi
4864     fi
4865   else
4866     case "$target" in
4867       *-*-solaris2*)
4868         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4869         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4870           gcc_cv_ld_eh_frame_ciev3=yes
4871         fi
4872         ;;
4873     esac
4874   fi
4876 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4877   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4878   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4879 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4881 AC_MSG_CHECKING(linker position independent executable support)
4882 gcc_cv_ld_pie=no
4883 if test $in_tree_ld = yes ; then
4884   case "$target" in
4885     # Full PIE support on Solaris was only introduced in gld 2.26.
4886     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
4887     *)              gcc_gld_pie_min_version=15 ;;
4888   esac
4889   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 \
4890      && test $in_tree_ld_is_elf = yes; then
4891     gcc_cv_ld_pie=yes
4892   fi
4893 elif test x$gcc_cv_ld != x; then
4894   # Check if linker supports -pie option
4895   if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4896     gcc_cv_ld_pie=yes
4897     case "$target" in
4898       *-*-solaris2*)
4899         if echo "$ld_ver" | grep GNU > /dev/null \
4900           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
4901           gcc_cv_ld_pie=no
4902         fi
4903         ;;
4904     esac
4905   else
4906     case "$target" in
4907       *-*-solaris2.1[[1-9]]*)
4908         # Solaris 11.x and Solaris 12 added PIE support.
4909         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
4910           gcc_cv_ld_pie=yes
4911         fi
4912         ;;
4913     esac
4914   fi
4916 if test x"$gcc_cv_ld_pie" = xyes; then
4917         AC_DEFINE(HAVE_LD_PIE, 1,
4918 [Define if your linker supports PIE option.])
4920 AC_MSG_RESULT($gcc_cv_ld_pie)
4922 AC_MSG_CHECKING(linker PIE support with copy reloc)
4923 gcc_cv_ld_pie_copyreloc=no
4924 if test $gcc_cv_ld_pie = yes ; then
4925   if test $in_tree_ld = yes ; then
4926     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
4927       gcc_cv_ld_pie_copyreloc=yes
4928     fi
4929   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4930     # Check if linker supports -pie option with copy reloc
4931     case "$target" in
4932     i?86-*-linux* | x86_64-*-linux*)
4933       cat > conftest1.s <<EOF
4934         .globl  a_glob
4935         .data
4936         .type   a_glob, @object
4937         .size   a_glob, 4
4938 a_glob:
4939         .long   2
4941       cat > conftest2.s <<EOF
4942         .text
4943         .globl  main
4944         .type   main, @function
4945 main:
4946         movl    %eax, a_glob(%rip)
4947         .size   main, .-main
4948         .globl  ptr
4949         .section        .data.rel,"aw",@progbits
4950         .type   ptr, @object
4951 ptr:
4952         .quad   a_glob
4954       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4955          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
4956          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4957          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
4958         gcc_cv_ld_pie_copyreloc=yes
4959       fi
4960       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
4961       ;;
4962     esac
4963   fi
4965 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
4966   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
4967   [Define 0/1 if your linker supports -pie option with copy reloc.])
4968 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
4970 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4971 gcc_cv_ld_eh_gc_sections=no
4972 if test $in_tree_ld = yes ; then
4973   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 \
4974      && test $in_tree_ld_is_elf = yes; then
4975     gcc_cv_ld_eh_gc_sections=yes
4976   fi
4977 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4978   cat > conftest.s <<EOF
4979         .section        .text
4980 .globl _start
4981         .type _start, @function
4982 _start:
4983         .long foo
4984         .size _start, .-_start
4985         .section        .text.foo,"ax",@progbits
4986         .type foo, @function
4987 foo:
4988         .long 0
4989         .size foo, .-foo
4990         .section        .gcc_except_table.foo,"a",@progbits
4991 .L0:
4992         .long 0
4993         .section        .eh_frame,"a",@progbits
4994         .long .L0
4996   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4997     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4998          | grep "gc-sections option ignored" > /dev/null; then
4999       gcc_cv_ld_eh_gc_sections=no
5000     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5001          | grep gcc_except_table > /dev/null; then
5002       gcc_cv_ld_eh_gc_sections=yes
5003       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5004       if test x$gcc_cv_as_comdat_group != xyes; then
5005         gcc_cv_ld_eh_gc_sections=no
5006         cat > conftest.s <<EOF
5007         .section        .text
5008 .globl _start
5009         .type _start, @function
5010 _start:
5011         .long foo
5012         .size _start, .-_start
5013         .section        .gnu.linkonce.t.foo,"ax",@progbits
5014         .type foo, @function
5015 foo:
5016         .long 0
5017         .size foo, .-foo
5018         .section        .gcc_except_table.foo,"a",@progbits
5019 .L0:
5020         .long 0
5021         .section        .eh_frame,"a",@progbits
5022         .long .L0
5024         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5025           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5026                | grep "gc-sections option ignored" > /dev/null; then
5027             gcc_cv_ld_eh_gc_sections=no
5028           elif $gcc_cv_objdump -h conftest 2> /dev/null \
5029                | grep gcc_except_table > /dev/null; then
5030             gcc_cv_ld_eh_gc_sections=yes
5031           fi
5032         fi
5033       fi
5034     fi
5035   fi
5036   rm -f conftest.s conftest.o conftest
5038 case "$target" in
5039   hppa*-*-linux*)
5040     # ??? This apparently exposes a binutils bug with PC-relative relocations.
5041     gcc_cv_ld_eh_gc_sections=no
5042     ;;
5043 esac
5044 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5045         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5046   [Define if your linker supports garbage collection of
5047    sections in presence of EH frames.])
5049 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5051 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5052 gcc_cv_ld_eh_gc_sections_bug=no
5053 if test $in_tree_ld = yes ; then
5054   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 \
5055      && test $in_tree_ld_is_elf = yes; then
5056     gcc_cv_ld_eh_gc_sections_bug=yes
5057   fi
5058 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
5059   gcc_cv_ld_eh_gc_sections_bug=yes
5060   cat > conftest.s <<EOF
5061         .section        .text
5062 .globl _start
5063         .type _start, @function
5064 _start:
5065         .long foo
5066         .size _start, .-_start
5067         .section        .text.startup.foo,"ax",@progbits
5068         .type foo, @function
5069 foo:
5070         .long 0
5071         .size foo, .-foo
5072         .section        .gcc_except_table.foo,"a",@progbits
5073 .L0:
5074         .long 0
5075         .section        .eh_frame,"a",@progbits
5076         .long .L0
5078   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5079     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5080          | grep "gc-sections option ignored" > /dev/null; then
5081       :
5082     elif $gcc_cv_objdump -h conftest 2> /dev/null \
5083          | grep gcc_except_table > /dev/null; then
5084       gcc_cv_ld_eh_gc_sections_bug=no
5085     fi
5086   fi
5087   rm -f conftest.s conftest.o conftest
5089 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5090         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5091   [Define if your linker has buggy garbage collection of
5092    sections support when .text.startup.foo like sections are used.])
5094 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5096 AC_MSG_CHECKING(linker for compressed debug sections)
5097 # gold/gld support compressed debug sections since binutils 2.19/2.21
5098 if test $in_tree_ld = yes ; then
5099   gcc_cv_ld_compress_debug=0
5100   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 \
5101      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5102     gcc_cv_ld_compress_debug=2
5103     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5104   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 \
5105      && test $in_tree_ld_is_elf = yes; then
5106     gcc_cv_ld_compress_debug=1
5107   fi
5108 elif echo "$ld_ver" | grep GNU > /dev/null; then
5109   gcc_cv_ld_compress_debug=1
5110   if test 0"$ld_date" -lt 20050308; then
5111     if test -n "$ld_date"; then
5112       # If there was date string, but was earlier than 2005-03-08, fail
5113       gcc_cv_ld_compress_debug=0
5114     elif test "$ld_vers_major" -lt 2; then
5115       gcc_cv_ld_compress_debug=0
5116     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5117       gcc_cv_ld_compress_debug=0
5118     fi
5119   fi
5120   if test $ld_is_gold = yes; then
5121     gcc_cv_ld_compress_debug=2
5122     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5123   fi
5124 else
5125 changequote(,)dnl
5126   case "${target}" in
5127     *-*-solaris2*)
5128       # Introduced in Solaris 11.2.
5129       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5130         gcc_cv_ld_compress_debug=3
5131         gcc_cv_ld_compress_debug_option="-z compress-sections"
5132       else
5133         gcc_cv_ld_compress_debug=0
5134       fi
5135       ;;
5136     *)
5137       # Assume linkers other than GNU ld don't support compessed debug
5138       # sections.
5139       gcc_cv_ld_compress_debug=0
5140       ;;
5141   esac
5142 changequote([,])dnl
5144 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5145 [Define to the level of your linker's compressed debug section support.])
5146 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5147 [Define to the linker option to enable compressed debug sections.])
5148 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5150 # --------
5151 # UNSORTED
5152 # --------
5154 AC_CACHE_CHECK(linker --as-needed support,
5155 gcc_cv_ld_as_needed,
5156 [gcc_cv_ld_as_needed=no
5157 gcc_cv_ld_as_needed_option='--as-needed'
5158 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5159 if test $in_tree_ld = yes ; then
5160   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 \
5161      && test $in_tree_ld_is_elf = yes; then
5162     gcc_cv_ld_as_needed=yes
5163   fi
5164 elif test x$gcc_cv_ld != x; then
5165         # Check if linker supports --as-needed and --no-as-needed options
5166         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
5167                 gcc_cv_ld_as_needed=yes
5168         else
5169           case "$target" in
5170             # Solaris 2 ld always supports -z ignore/-z record.
5171             *-*-solaris2*)
5172               gcc_cv_ld_as_needed=yes
5173               gcc_cv_ld_as_needed_option="-z ignore"
5174               gcc_cv_ld_no_as_needed_option="-z record"
5175               ;;
5176           esac
5177         fi
5179 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5180 # dl_iterate_phdr, i.e. since Solaris 11.
5181 case "$target" in
5182   *-*-solaris2.1[[1-9]]*)
5183     case "$target" in
5184     i?86-*-* | x86_64-*-*)
5185       if echo "$ld_ver" | grep GNU > /dev/null; then
5186         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5187         gcc_cv_ld_as_needed=no
5188       fi
5189       ;;
5190     esac
5191     ;;
5192   *-*-solaris2*)
5193     gcc_cv_ld_as_needed=no
5194     ;;
5195 esac
5197 if test x"$gcc_cv_ld_as_needed" = xyes; then
5198         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5199 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5200         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5201 [Define to the linker option to ignore unused dependencies.])
5202         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5203 [Define to the linker option to keep unused dependencies.])
5206 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5207 saved_LDFLAGS="$LDFLAGS"
5208 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5209   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5210   AC_LINK_IFELSE([int main(void) {return 0;}],
5211     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5212 done
5213 LDFLAGS="$saved_LDFLAGS"
5214 if test "x$gcc_cv_ld_clearcap" = xyes; then
5215   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5216 [Define if the linker supports clearing hardware capabilities via mapfile.])
5217   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5219 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5221 case "$target:$tm_file" in
5222   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5223   case "$target" in
5224      *le-*-linux*)
5225      emul_name="-melf64lppc"
5226       ;;
5227      *-*-linux*)
5228      emul_name="-melf64ppc"
5229       ;;
5230      *-*-freebsd*)
5231      emul_name="-melf64ppc_fbsd"
5232       ;;
5233   esac
5234     AC_CACHE_CHECK(linker support for omitting dot symbols,
5235     gcc_cv_ld_no_dot_syms,
5236     [gcc_cv_ld_no_dot_syms=no
5237     if test x"$ld_is_gold" = xyes; then
5238       gcc_cv_ld_no_dot_syms=yes
5239     elif test $in_tree_ld = yes ; then
5240       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
5241         gcc_cv_ld_no_dot_syms=yes
5242       fi
5243     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5244       cat > conftest1.s <<EOF
5245         .text
5246         bl .foo
5248       cat > conftest2.s <<EOF
5249         .section ".opd","aw"
5250         .align 3
5251         .globl foo
5252         .type foo,@function
5253 foo:
5254         .quad .LEfoo,.TOC.@tocbase,0
5255         .text
5256 .LEfoo:
5257         blr
5258         .size foo,.-.LEfoo
5260       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5261          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5262          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5263         gcc_cv_ld_no_dot_syms=yes
5264       fi
5265       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5266     fi
5267     ])
5268     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5269       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5270     [Define if your PowerPC64 linker only needs function descriptor syms.])
5271     fi
5273     AC_CACHE_CHECK(linker large toc support,
5274     gcc_cv_ld_large_toc,
5275     [gcc_cv_ld_large_toc=no
5276     if test x"$ld_is_gold" = xyes; then
5277       gcc_cv_ld_large_toc=yes
5278     elif test $in_tree_ld = yes ; then
5279       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
5280         gcc_cv_ld_large_toc=yes
5281       fi
5282     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5283       cat > conftest.s <<EOF
5284         .section ".tbss","awT",@nobits
5285         .align 3
5286 ie0:    .space 8
5287         .global _start
5288         .text
5289 _start:
5290         addis 9,13,ie0@got@tprel@ha
5291         ld 9,ie0@got@tprel@l(9)
5293       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5294          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5295         gcc_cv_ld_large_toc=yes
5296       fi
5297       rm -f conftest conftest.o conftest.s
5298     fi
5299     ])
5300     if test x"$gcc_cv_ld_large_toc" = xyes; then
5301       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5302     [Define if your PowerPC64 linker supports a large TOC.])
5303     fi
5305     AC_CACHE_CHECK(linker toc pointer alignment,
5306     gcc_cv_ld_toc_align,
5307     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5308       cat > conftest.s <<EOF
5309         .global _start
5310         .text
5311 _start:
5312         addis 9,2,x@got@ha
5313         .section .data.rel.ro,"aw",@progbits
5314         .p2align 16
5315         .space 32768
5316 x:      .quad .TOC.
5318       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5319          && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5320         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)) }'`
5321       fi
5322       rm -f conftest conftest.o conftest.s
5323     fi
5324     ])
5325     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5326       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5327     [Define to .TOC. alignment forced by your linker.])
5328     fi
5329     ;;
5330 esac
5332 case "$target" in
5333   *-*-aix*)
5334     AC_CACHE_CHECK(linker large toc support,
5335     gcc_cv_ld_large_toc,
5336     [gcc_cv_ld_large_toc=no
5337     if test x$gcc_cv_as != x ; then
5338       cat > conftest.s <<EOF
5339         .toc
5340 LC..1:
5341         .tc a[[TC]],a[[RW]]
5342         .extern a[[RW]]
5343         .csect .text[[PR]]
5344 .largetoctest:
5345         addis 9,LC..1@u(2)
5346         ld 3,LC..1@l(9)
5348       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5349         gcc_cv_ld_large_toc=yes
5350       fi
5351       rm -f conftest conftest.o conftest.s
5352     fi
5353     ])
5354     if test x"$gcc_cv_ld_large_toc" = xyes; then
5355       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5356     [Define if your PowerPC64 linker supports a large TOC.])
5357     fi
5358     ;;
5359 esac
5361 AC_CACHE_CHECK(linker --build-id support,
5362   gcc_cv_ld_buildid,
5363   [gcc_cv_ld_buildid=no
5364   if test $in_tree_ld = yes ; then
5365     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5366        "$gcc_cv_gld_minor_version" -ge 18 -o \
5367        "$gcc_cv_gld_major_version" -gt 2 \
5368        && test $in_tree_ld_is_elf = yes; then
5369       gcc_cv_ld_buildid=yes
5370     fi
5371   elif test x$gcc_cv_ld != x; then
5372     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
5373       gcc_cv_ld_buildid=yes
5374     fi
5375   fi])
5376 if test x"$gcc_cv_ld_buildid" = xyes; then
5377   AC_DEFINE(HAVE_LD_BUILDID, 1,
5378   [Define if your linker supports --build-id.])
5381 AC_ARG_ENABLE(linker-build-id,
5382 [AS_HELP_STRING([--enable-linker-build-id],
5383                 [compiler will always pass --build-id to linker])],
5385 enable_linker_build_id=no)
5387 if test x"$enable_linker_build_id" = xyes; then
5388   if test x"$gcc_cv_ld_buildid" = xyes; then
5389     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5390     [Define if gcc should always pass --build-id to linker.])
5391   else
5392     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5393   fi
5396 # In binutils 2.21, GNU ld gained support for new emulations fully
5397 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5398 AC_CACHE_CHECK(linker *_sol2 emulation support,
5399   gcc_cv_ld_sol2_emulation,
5400   [gcc_cv_ld_sol2_emulation=no
5401   if test $in_tree_ld = yes ; then
5402     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5403        "$gcc_cv_gld_minor_version" -ge 21 -o \
5404        "$gcc_cv_gld_major_version" -gt 2 \
5405        && test $in_tree_ld_is_elf = yes; then
5406       gcc_cv_ld_sol2_emulation=yes
5407     fi
5408   elif test x$gcc_cv_ld != x; then
5409     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5410        grep _sol2 > /dev/null; then
5411       gcc_cv_ld_sol2_emulation=yes
5412     fi
5413   fi])
5414 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5415   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5416   [Define if your linker supports the *_sol2 emulations.])
5419 AC_CACHE_CHECK(linker --sysroot support,
5420   gcc_cv_ld_sysroot,
5421   [gcc_cv_ld_sysroot=no
5422   if test $in_tree_ld = yes ; then
5423       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
5424         gcc_cv_ld_sysroot=yes
5425       fi
5426   elif test x$gcc_cv_ld != x; then 
5427     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5428       gcc_cv_ld_sysroot=yes
5429     fi
5430   fi])
5431 if test x"$gcc_cv_ld_sysroot" = xyes; then
5432   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5433   [Define if your linker supports --sysroot.])
5434 fi        
5436 case $target in
5437 *-*-solaris2*)
5438   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
5439   AC_CACHE_CHECK([system-provided CRTs on Solaris],
5440     gcc_cv_solaris_crts,
5441     [gcc_cv_solaris_crts=no
5442      if test x$host != x$target; then
5443        if test "x$with_sysroot" = xyes; then
5444          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
5445        else
5446          target_sysroot="${with_sysroot}"
5447        fi
5448      fi
5449      target_libdir="$target_sysroot/usr/lib"
5450      # At the time they were added, gcrt1.o became a symlink for backwards
5451      # compatibility on x86, while crt1.o was added on sparc, so check for that.
5452      case $target in
5453        i?86-*-solaris2* | x86_64-*-solaris2*)
5454          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
5455          ;;
5456        sparc*-*-solaris2*)
5457          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
5458          ;;
5459      esac])
5460   ;;
5461 esac
5462 if test x$gcc_cv_solaris_crts = xyes; then
5463   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
5464             [Define if the system-provided CRTs are present on Solaris.])
5467 # Test for stack protector support in target C library.
5468 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5469       gcc_cv_libc_provides_ssp,
5470       [gcc_cv_libc_provides_ssp=no
5471     case "$target" in
5472        *-*-musl*)
5473          # All versions of musl provide stack protector
5474          gcc_cv_libc_provides_ssp=yes;;
5475        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5476       # glibc 2.4 and later provides __stack_chk_fail and
5477       # either __stack_chk_guard, or TLS access to stack guard canary.
5478       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5479       [if test -f $target_header_dir/features.h \
5480          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5481             $target_header_dir/features.h > /dev/null; then
5482         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5483              $target_header_dir/features.h > /dev/null && \
5484              test -f $target_header_dir/bits/uClibc_config.h && \
5485              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5486              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5487           gcc_cv_libc_provides_ssp=yes
5488         fi
5489       # all versions of Bionic support stack protector
5490       elif test -f $target_header_dir/sys/cdefs.h \
5491         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5492            $target_header_dir/sys/cdefs.h > /dev/null; then
5493          gcc_cv_libc_provides_ssp=yes
5494       fi]])
5495         ;;
5496        *-*-gnu*)
5497          # Avoid complicated tests (see
5498          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5499          # simply assert that glibc does provide this, which is true for all
5500          # realistically usable GNU/Hurd configurations.
5501          # All supported versions of musl provide it as well
5502          gcc_cv_libc_provides_ssp=yes;;
5503        *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
5504          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5505            [echo "no __stack_chk_fail on this target"])
5506         ;;
5507   *) gcc_cv_libc_provides_ssp=no ;;
5508     esac])
5510 if test x$gcc_cv_libc_provides_ssp = xyes; then
5511   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5512             [Define if your target C library provides stack protector support])
5515 # Check whether --enable-default-ssp was given.
5516 AC_ARG_ENABLE(default-ssp,
5517 [AS_HELP_STRING([--enable-default-ssp],
5518   [enable Stack Smashing Protection as default])],[
5519 if test x$gcc_cv_libc_provides_ssp = xyes; then
5520   case "$target" in
5521     ia64*-*-*) enable_default_ssp=no ;;
5522     *) enable_default_ssp=$enableval ;;
5523   esac
5524 else
5525   enable_default_ssp=no
5526 fi],
5527 enable_default_ssp=no)
5528 if test x$enable_default_ssp = xyes ; then
5529   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5530       [Define if your target supports default stack protector and it is enabled.])
5532 AC_SUBST([enable_default_ssp])
5534 # Test for <sys/sdt.h> on the target.
5535 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5536 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5537 have_sys_sdt_h=no
5538 if test -f $target_header_dir/sys/sdt.h; then
5539   have_sys_sdt_h=yes
5540   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5541             [Define if your target C library provides sys/sdt.h])
5543 AC_MSG_RESULT($have_sys_sdt_h)
5545 # Check if TFmode long double should be used by default or not.
5546 # Some glibc targets used DFmode long double, but with glibc 2.4
5547 # and later they can use TFmode.
5548 case "$target" in
5549   powerpc*-*-linux* | \
5550   sparc*-*-linux* | \
5551   s390*-*-linux* | \
5552   alpha*-*-linux*)
5553     AC_ARG_WITH(long-double-128,
5554       [AS_HELP_STRING([--with-long-double-128],
5555                       [use 128-bit long double by default])],
5556       gcc_cv_target_ldbl128="$with_long_double_128",
5557       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5558       [gcc_cv_target_ldbl128=no
5559       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5560         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5561       && gcc_cv_target_ldbl128=yes
5562       ]])])
5563     ;;
5564 esac
5565 if test x$gcc_cv_target_ldbl128 = xyes; then
5566   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5567             [Define if TFmode long double should be the default])
5570 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
5571 # values in the TCB.  Currently, only GLIBC 2.23 and later support this.
5572 gcc_cv_libc_provides_hwcap_in_tcb=no
5573 case "$target" in
5574   powerpc*-*-linux*)
5575     GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
5576     ;;
5577 esac
5578 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
5579   AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
5580             [Define if your target C Library provides the AT_HWCAP value in the TCB])
5583 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5584 gcc_cv_target_dl_iterate_phdr=unknown
5585 case "$target" in
5586   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5587   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5588   # libdl there, both complicating its use and breaking compatibility
5589   # between Solaris 10 updates.
5590   *-*-solaris2.1[[1-9]]*)
5591     # <link.h> needs both a dl_iterate_phdr declaration and support for
5592     # compilation with largefile support.
5593     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5594       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5595       gcc_cv_target_dl_iterate_phdr=yes
5596     else
5597       gcc_cv_target_dl_iterate_phdr=no
5598     fi
5599     ;;
5600   *-*-dragonfly* | *-*-freebsd*)
5601     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
5602       gcc_cv_target_dl_iterate_phdr=yes
5603     else
5604       gcc_cv_target_dl_iterate_phdr=no
5605     fi
5606     ;;
5607   *-linux-musl*)
5608     gcc_cv_target_dl_iterate_phdr=yes
5609     ;;
5610 esac
5611 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5612 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5613    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5614 [Define if your target C library provides the `dl_iterate_phdr' function.])
5616 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5618 # We no longer support different GC mechanisms.  Emit an error if
5619 # the user configures with --with-gc.
5620 AC_ARG_WITH(gc,
5621 [AS_HELP_STRING([--with-gc={page,zone}],
5622                 [this option is not supported anymore.  It used to choose
5623                  the garbage collection mechanism to use with the compiler])],
5624 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5627 # Libraries to use on the host.  This will normally be set by the top
5628 # level Makefile.  Here we simply capture the value for our Makefile.
5629 if test -z "${HOST_LIBS+set}"; then
5630   HOST_LIBS=
5632 AC_SUBST(HOST_LIBS)
5634 # Use the system's zlib library.
5635 AM_ZLIB
5637 dnl Very limited version of automake's enable-maintainer-mode
5639 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5640   dnl maintainer-mode is disabled by default
5641   AC_ARG_ENABLE(maintainer-mode,
5642 [AS_HELP_STRING([--enable-maintainer-mode],
5643                 [enable make rules and dependencies not useful
5644                  (and sometimes confusing) to the casual installer])],
5645       maintainer_mode=$enableval,
5646       maintainer_mode=no)
5648 AC_MSG_RESULT($maintainer_mode)
5650 if test "$maintainer_mode" = "yes"; then
5651   MAINT=''
5652 else
5653   MAINT='#'
5655 AC_SUBST(MAINT)dnl
5657 dnl Whether to prevent multiple front-ends from linking at the same time
5659 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5660   AC_ARG_ENABLE(link-mutex,
5661 [AS_HELP_STRING([--enable-link-mutex],
5662                 [avoid linking multiple front-ends at once to avoid thrashing
5663                  on the build machine])],
5664       do_link_mutex=$enableval,
5665       do_link_mutex=no)
5666 AC_MSG_RESULT($do_link_mutex)
5668 if test "$do_link_mutex" = "yes"; then
5669    DO_LINK_MUTEX=true
5670 else
5671    DO_LINK_MUTEX=false
5673 AC_SUBST(DO_LINK_MUTEX)
5675 # --------------
5676 # Language hooks
5677 # --------------
5679 # Make empty files to contain the specs and options for each language.
5680 # Then add #include lines to for a compiler that has specs and/or options.
5682 subdirs=
5683 lang_opt_files=
5684 lang_specs_files=
5685 lang_tree_files=
5686 # These (without "all_") are set in each config-lang.in.
5687 # `language' must be a single word so is spelled singularly.
5688 all_languages=
5689 all_compilers=
5690 all_outputs='Makefile'
5691 # List of language makefile fragments.
5692 all_lang_makefrags=
5693 # Additional files for gengtype
5694 all_gtfiles="$target_gtfiles"
5696 # These are the languages that are set in --enable-languages,
5697 # and are available in the GCC tree.
5698 all_selected_languages=
5700 # Add the language fragments.
5701 # Languages are added via two mechanisms.  Some information must be
5702 # recorded in makefile variables, these are defined in config-lang.in.
5703 # We accumulate them and plug them into the main Makefile.
5704 # The other mechanism is a set of hooks for each of the main targets
5705 # like `clean', `install', etc.
5707 language_hooks="Make-hooks"
5709 for lang in ${srcdir}/*/config-lang.in
5711 changequote(,)dnl
5712         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5714         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5715         if test "x$lang_alias" = x
5716         then
5717               echo "$lang doesn't set \$language." 1>&2
5718               exit 1
5719         fi
5720         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5721         subdirs="$subdirs $subdir"
5723         # $gcc_subdir is where the gcc integration files are to be found
5724         # for a language, both for internal compiler purposes (compiler
5725         # sources implementing front-end to GCC tree converters), and for
5726         # build infrastructure purposes (Make-lang.in, etc.)
5727         #
5728         # This will be <subdir> (relative to $srcdir) if a line like 
5729         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5730         # is found in <langdir>/config-lang.in, and will remain <langdir>
5731         # otherwise.
5732         #
5733         # Except for the language alias (fetched above), the regular
5734         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5735         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5736         # only this and the language alias.
5738         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5739         if [ "$gcc_subdir" = "" ]; then
5740            gcc_subdir="$subdir"
5741         fi
5743         case ",$enable_languages," in
5744         *,$lang_alias,*)
5745             all_selected_languages="$all_selected_languages $lang_alias"
5746             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5747                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5748             fi
5749             ;;
5750         esac
5751 changequote([,])dnl
5753         language=
5754         boot_language=
5755         compilers=
5756         outputs=
5757         gtfiles=
5758         subdir_requires=
5759         . ${srcdir}/$gcc_subdir/config-lang.in
5760         if test "x$language" = x
5761         then
5762                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5763                 exit 1
5764         fi
5766         ok=:
5767         case ",$enable_languages," in
5768                 *,$lang_alias,*) ;;
5769                 *)
5770                         for i in $subdir_requires; do
5771                                 test -f "${srcdir}/$i/config-lang.in" && continue
5772                                 ok=false
5773                                 break
5774                         done
5775                 ;;
5776         esac
5777         $ok || continue
5779         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5780         if test -f $srcdir/$gcc_subdir/lang.opt; then
5781             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5782             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5783         fi
5784         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5785             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5786         fi
5787         all_languages="$all_languages $language"
5788         all_compilers="$all_compilers $compilers"
5789         all_outputs="$all_outputs $outputs"
5790         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5791         case ",$enable_languages," in
5792                 *,lto,*)
5793                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5794                     enable_lto=yes
5795                     AC_SUBST(enable_lto)
5796                     ;;
5797                 *) ;;
5798         esac
5799 done
5801 check_languages=
5802 for language in $all_selected_languages
5804         check_languages="$check_languages check-$language"
5805 done
5807 # We link each language in with a set of hooks, reached indirectly via
5808 # lang.${target}.  Only do so for selected languages.
5810 rm -f Make-hooks
5811 touch Make-hooks
5812 target_list="all.cross start.encap rest.encap tags \
5813         install-common install-man install-info install-pdf install-html dvi \
5814         pdf html uninstall info man srcextra srcman srcinfo \
5815         mostlyclean clean distclean maintainer-clean install-plugin"
5817 for t in $target_list
5819         x=
5820         for lang in $all_selected_languages
5821         do
5822                 x="$x $lang.$t"
5823         done
5824         echo "lang.$t: $x" >> Make-hooks
5825 done
5827 # --------
5828 # Option include files
5829 # --------
5831 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5832 option_includes="option-includes.mk"
5833 AC_SUBST_FILE(option_includes)
5835 # --------
5836 # UNSORTED
5837 # --------
5839 # Create .gdbinit.
5841 echo "dir ." > .gdbinit
5842 echo "dir ${srcdir}" >> .gdbinit
5843 if test x$gdb_needs_out_file_path = xyes
5844 then
5845         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5847 if test "x$subdirs" != x; then
5848         for s in $subdirs
5849         do
5850                 echo "dir ${srcdir}/$s" >> .gdbinit
5851         done
5853 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5854 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5856 # Put a breakpoint on __asan_report_error to help with debugging buffer
5857 # overflow.
5858 case "$CFLAGS" in
5859 *-fsanitize=address*)
5860   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5861   ;;
5862 esac
5864 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5865 AC_SUBST(gcc_tooldir)
5866 AC_SUBST(dollar)
5868 # Find a directory in which to install a shared libgcc.
5870 AC_ARG_ENABLE(version-specific-runtime-libs,
5871 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5872                 [specify that runtime libraries should be
5873                  installed in a compiler-specific directory])])
5875 # Substitute configuration variables
5876 AC_SUBST(subdirs)
5877 AC_SUBST(srcdir)
5878 AC_SUBST(all_compilers)
5879 AC_SUBST(all_gtfiles)
5880 AC_SUBST(all_lang_makefrags)
5881 AC_SUBST(all_languages)
5882 AC_SUBST(all_selected_languages)
5883 AC_SUBST(build_exeext)
5884 AC_SUBST(build_install_headers_dir)
5885 AC_SUBST(build_xm_file_list)
5886 AC_SUBST(build_xm_include_list)
5887 AC_SUBST(build_xm_defines)
5888 AC_SUBST(build_file_translate)
5889 AC_SUBST(check_languages)
5890 AC_SUBST(cpp_install_dir)
5891 AC_SUBST(xmake_file)
5892 AC_SUBST(tmake_file)
5893 AC_SUBST(TM_ENDIAN_CONFIG)
5894 AC_SUBST(TM_MULTILIB_CONFIG)
5895 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5896 AC_SUBST(extra_gcc_objs)
5897 AC_SUBST(user_headers_inc_next_pre)
5898 AC_SUBST(user_headers_inc_next_post)
5899 AC_SUBST(extra_headers_list)
5900 AC_SUBST(extra_objs)
5901 AC_SUBST(extra_programs)
5902 AC_SUBST(float_h_file)
5903 AC_SUBST(gcc_config_arguments)
5904 AC_SUBST(gcc_gxx_include_dir)
5905 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5906 AC_SUBST(host_exeext)
5907 AC_SUBST(host_xm_file_list)
5908 AC_SUBST(host_xm_include_list)
5909 AC_SUBST(host_xm_defines)
5910 AC_SUBST(out_host_hook_obj)
5911 AC_SUBST(install)
5912 AC_SUBST(lang_opt_files)
5913 AC_SUBST(lang_specs_files)
5914 AC_SUBST(lang_tree_files)
5915 AC_SUBST(local_prefix)
5916 AC_SUBST(md_file)
5917 AC_SUBST(objc_boehm_gc)
5918 AC_SUBST(out_file)
5919 AC_SUBST(out_object_file)
5920 AC_SUBST(common_out_file)
5921 AC_SUBST(common_out_object_file)
5922 AC_SUBST(tm_file_list)
5923 AC_SUBST(tm_include_list)
5924 AC_SUBST(tm_defines)
5925 AC_SUBST(tm_p_file_list)
5926 AC_SUBST(tm_p_include_list)
5927 AC_SUBST(xm_file_list)
5928 AC_SUBST(xm_include_list)
5929 AC_SUBST(xm_defines)
5930 AC_SUBST(use_gcc_stdint)
5931 AC_SUBST(c_target_objs)
5932 AC_SUBST(cxx_target_objs)
5933 AC_SUBST(fortran_target_objs)
5934 AC_SUBST(target_cpu_default)
5936 AC_SUBST_FILE(language_hooks)
5938 # Echo link setup.
5939 if test x${build} = x${host} ; then
5940   if test x${host} = x${target} ; then
5941     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5942   else
5943     echo "Links are now set up to build a cross-compiler" 1>&2
5944     echo " from ${host} to ${target}." 1>&2
5945   fi
5946 else
5947   if test x${host} = x${target} ; then
5948     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5949     echo " for ${target}." 1>&2
5950   else
5951     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5952     echo " from ${host} to ${target}." 1>&2
5953   fi
5956 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5957 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5959 AC_ARG_VAR(ISLLIBS,[How to link isl])
5960 AC_ARG_VAR(ISLINC,[How to find isl include files])
5961 if test "x${ISLLIBS}" != "x" ; then 
5962    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
5965 # Check whether isl_options_set_schedule_serialize_sccs is available;
5966 # it's new in isl 0.15.
5967 if test "x${ISLLIBS}" != "x" ; then
5968   saved_CXXFLAGS="$CXXFLAGS"
5969   CXXFLAGS="$CXXFLAGS $ISLINC $GMPINC"
5970   saved_LIBS="$LIBS"
5971   LIBS="$LIBS $ISLLIBS $GMPLIBS"
5973   AC_MSG_CHECKING([Checking for isl_options_set_schedule_serialize_sccs])
5974   AC_TRY_LINK([#include <isl/schedule.h>],
5975               [isl_options_set_schedule_serialize_sccs (NULL, 0);],
5976               [ac_has_isl_options_set_schedule_serialize_sccs=yes],
5977               [ac_has_isl_options_set_schedule_serialize_sccs=no])
5978   AC_MSG_RESULT($ac_has_isl_options_set_schedule_serialize_sccs)
5980   LIBS="$saved_LIBS"
5981   CXXFLAGS="$saved_CXXFLAGS"
5983   if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
5984      AC_DEFINE(HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS, 1,
5985                [Define if isl_options_set_schedule_serialize_sccs exists.])
5986   fi
5989 GCC_ENABLE_PLUGINS
5990 AC_SUBST(pluginlibs)
5991 AC_SUBST(enable_plugin)
5992 if test x"$enable_plugin" = x"yes"; then
5993   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5997 # Enable --enable-host-shared
5998 AC_ARG_ENABLE(host-shared,
5999 [AS_HELP_STRING([--enable-host-shared],
6000                 [build host code as shared libraries])],
6001 [PICFLAG=-fPIC], [PICFLAG=])
6002 AC_SUBST(enable_host_shared)
6003 AC_SUBST(PICFLAG)
6006 AC_ARG_ENABLE(libquadmath-support,
6007 [AS_HELP_STRING([--disable-libquadmath-support],
6008   [disable libquadmath support for Fortran])],
6009 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6010 ENABLE_LIBQUADMATH_SUPPORT=yes)
6011 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6012   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6013             [Define to 1 to enable libquadmath support])
6017 # Specify what hash style to use by default.
6018 AC_ARG_WITH([linker-hash-style],
6019 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6020                 [specify the linker hash style])],
6021 [case x"$withval" in
6022    xsysv)
6023      LINKER_HASH_STYLE=sysv
6024      ;;
6025    xgnu)
6026      LINKER_HASH_STYLE=gnu
6027      ;;
6028    xboth)
6029      LINKER_HASH_STYLE=both
6030      ;;
6031    *)
6032      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6033      ;;
6034  esac],
6035 [LINKER_HASH_STYLE=''])
6036 if test x"${LINKER_HASH_STYLE}" != x; then
6037   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6038                                          [The linker hash style])
6041 # Specify what should be the default of -fdiagnostics-color option.
6042 AC_ARG_WITH([diagnostics-color],
6043 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6044                 [specify the default of -fdiagnostics-color option
6045                  auto-if-env stands for -fdiagnostics-color=auto if
6046                  GCC_COLOR environment variable is present and
6047                  -fdiagnostics-color=never otherwise])],
6048 [case x"$withval" in
6049    xnever)
6050      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6051      ;;
6052    xauto)
6053      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6054      ;;
6055    xauto-if-env)
6056      DIAGNOSTICS_COLOR_DEFAULT=-1
6057      ;;
6058    xalways)
6059      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6060      ;;
6061    *)
6062      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6063      ;;
6064  esac],
6065 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6066 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6067                    [The default for -fdiagnostics-color option])
6069 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6070 # of jit/jit-playback.c.
6071 cat > gcc-driver-name.h <<EOF
6072 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
6075 # Check whether --enable-default-pie was given.
6076 AC_ARG_ENABLE(default-pie,
6077 [AS_HELP_STRING([--enable-default-pie],
6078   [enable Position Independent Executable as default])],
6079 enable_default_pie=$enableval,
6080 enable_default_pie=no)
6081 if test x$enable_default_pie = xyes ; then
6082   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6083       [Define if your target supports default PIE and it is enabled.])
6085 AC_SUBST([enable_default_pie])
6087 # Check if -fno-PIE works.
6088 AC_CACHE_CHECK([for -fno-PIE option],
6089   [gcc_cv_c_no_fpie],
6090   [saved_CXXFLAGS="$CXXFLAGS"
6091    CXXFLAGS="$CXXFLAGS -fno-PIE"
6092    AC_COMPILE_IFELSE([int main(void) {return 0;}],
6093      [gcc_cv_c_no_fpie=yes],
6094      [gcc_cv_c_no_fpie=no])
6095    CXXFLAGS="$saved_CXXFLAGS"])
6096 if test "$gcc_cv_c_no_fpie" = "yes"; then
6097   NO_PIE_CFLAGS="-fno-PIE"
6099 AC_SUBST([NO_PIE_CFLAGS])
6101 # Check if -no-pie works.
6102 AC_CACHE_CHECK([for -no-pie option],
6103   [gcc_cv_no_pie],
6104   [saved_LDFLAGS="$LDFLAGS"
6105    LDFLAGS="$LDFLAGS -no-pie"
6106    AC_LINK_IFELSE([int main(void) {return 0;}],
6107      [gcc_cv_no_pie=yes],
6108      [gcc_cv_no_pie=no])
6109    LDFLAGS="$saved_LDFLAGS"])
6110 if test "$gcc_cv_no_pie" = "yes"; then
6111   NO_PIE_FLAG="-no-pie"
6113 AC_SUBST([NO_PIE_FLAG])
6115 # Check linker supports '-z bndplt'
6116 ld_bndplt_support=no
6117 AC_MSG_CHECKING(linker -z bndplt option)
6118 if test x"$ld_is_gold" = xno; then
6119   if test $in_tree_ld = yes ; then
6120     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
6121       ld_bndplt_support=yes
6122     fi
6123   elif test x$gcc_cv_ld != x; then
6124     # Check if linker supports -a bndplt option
6125     if $gcc_cv_ld --help 2>/dev/null | grep -- '-z bndplt' > /dev/null; then
6126       ld_bndplt_support=yes
6127     fi
6128   fi
6130 if test x"$ld_bndplt_support" = xyes; then
6131   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6132         [Define if your linker supports -z bndplt])
6134 AC_MSG_RESULT($ld_bndplt_support)
6136 # Configure the subdirectories
6137 # AC_CONFIG_SUBDIRS($subdirs)
6139 # Create the Makefile
6140 # and configure language subdirectories
6141 AC_CONFIG_FILES($all_outputs)
6143 AC_CONFIG_COMMANDS([default],
6145 case ${CONFIG_HEADERS} in
6146   *auto-host.h:config.in*)
6147   echo > cstamp-h ;;
6148 esac
6149 # Make sure all the subdirs exist.
6150 for d in $subdirs doc build common c-family
6152     test -d $d || mkdir $d
6153 done
6154 ], 
6155 [subdirs='$subdirs'])
6156 AC_OUTPUT