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