Check $READELF_FOR_TARGET for readelf in configure
[official-gcc.git] / gcc / configure.ac
blob81aba214b3e16d88296a172e0f1efddbf7ff87f9
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 hold the list of target names suitable for offloading.])
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 \
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 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2251 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2252 case "$ORIGINAL_LD_FOR_TARGET" in
2253   ./collect-ld | ./collect-ld$build_exeext) ;;
2254   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2255 esac 
2257 AC_MSG_CHECKING(what linker to use)
2258 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2259    || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2260         # Single tree build which includes ld.  We want to prefer it
2261         # over whatever linker top-level may have detected, since
2262         # we'll use what we're building after installation anyway.
2263         AC_MSG_RESULT(newly built ld)
2264         in_tree_ld=yes
2265         in_tree_ld_is_elf=no
2266         if (grep 'EMUL = .*elf' ../ld/Makefile \
2267             || grep 'EMUL = .*linux' ../ld/Makefile \
2268             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2269           in_tree_ld_is_elf=yes
2270         elif test "$ld_is_gold" = yes; then
2271           in_tree_ld_is_elf=yes
2272         fi
2273         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
2274         do
2275 changequote(,)dnl
2276                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2277                 if test x$gcc_cv_gld_version != x; then
2278                         break
2279                 fi
2280         done
2281         case $gcc_cv_gld_version in
2282           VERSION=[0-9]*) ;;
2283 changequote([,])dnl
2284           *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2285 changequote(,)dnl
2286         esac
2287         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2288         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2289 changequote([,])dnl
2290         ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2291         ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2292 else
2293         AC_MSG_RESULT($gcc_cv_ld)
2294         in_tree_ld=no
2295         gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2296         ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2297         ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2300 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2301 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2303 # Figure out what nm we will be using.
2304 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2305 AS_VAR_SET_IF(gcc_cv_nm,, [
2306 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2307      && test -f ../binutils/Makefile \
2308      && test x$build = x$host; then
2309         gcc_cv_nm=../binutils/nm-new$build_exeext
2310 elif test -x nm$build_exeext; then
2311         gcc_cv_nm=./nm$build_exeext
2312 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2313         gcc_cv_nm="$NM_FOR_TARGET"
2314 else
2315         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2316 fi])
2318 AC_MSG_CHECKING(what nm to use)
2319 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2320         # Single tree build which includes binutils.
2321         AC_MSG_RESULT(newly built nm)
2322         in_tree_nm=yes
2323 else
2324         AC_MSG_RESULT($gcc_cv_nm)
2325         in_tree_nm=no
2328 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2329 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2330 case "$ORIGINAL_NM_FOR_TARGET" in
2331   ./nm | ./nm$build_exeext) ;;
2332   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2333 esac
2336 # Figure out what objdump we will be using.
2337 AS_VAR_SET_IF(gcc_cv_objdump,, [
2338 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2339      && test -f ../binutils/Makefile \
2340      && test x$build = x$host; then
2341         # Single tree build which includes binutils.
2342         gcc_cv_objdump=../binutils/objdump$build_exeext
2343 elif test -x objdump$build_exeext; then
2344         gcc_cv_objdump=./objdump$build_exeext
2345 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2346         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2347 else
2348         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2349 fi])
2351 AC_MSG_CHECKING(what objdump to use)
2352 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2353         # Single tree build which includes binutils.
2354         AC_MSG_RESULT(newly built objdump)
2355 elif test x$gcc_cv_objdump = x; then
2356         AC_MSG_RESULT(not found)
2357 else
2358         AC_MSG_RESULT($gcc_cv_objdump)
2361 # Figure out what readelf we will be using.
2362 AS_VAR_SET_IF(gcc_cv_readelf,, [
2363 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2364      && test -f ../binutils/Makefile \
2365      && test x$build = x$host; then
2366         # Single tree build which includes binutils.
2367         gcc_cv_readelf=../binutils/readelf$build_exeext
2368 elif test -x readelf$build_exeext; then
2369         gcc_cv_readelf=./readelf$build_exeext
2370 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2371         gcc_cv_readelf="$READELF_FOR_TARGET"
2372 else
2373         AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2374 fi])
2376 AC_MSG_CHECKING(what readelf to use)
2377 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2378         # Single tree build which includes binutils.
2379         AC_MSG_RESULT(newly built readelf)
2380 elif test x$gcc_cv_readelf = x; then
2381         AC_MSG_RESULT(not found)
2382 else
2383         AC_MSG_RESULT($gcc_cv_readelf)
2386 # Figure out what assembler alignment features are present.
2387 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2388  [2,6,0],,
2389 [.balign 4
2390 .p2align 2],,
2391 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2392   [Define if your assembler supports .balign and .p2align.])])
2394 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2395  [2,8,0],,
2396  [.p2align 4,,7],,
2397 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2398   [Define if your assembler supports specifying the maximum number
2399    of bytes to skip when using the GAS .p2align command.])])
2401 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2402  [2,8,0],,
2403  [.literal16],,
2404 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2405   [Define if your assembler supports .literal16.])])
2407 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2408  [elf,2,9,0],,
2409  [conftest_label1: .word 0
2410 .subsection -1
2411 conftest_label2: .word 0
2412 .previous],
2413  [if test x$gcc_cv_nm != x; then
2414     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2415     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2416     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2417     then :
2418     else gcc_cv_as_subsection_m1=yes
2419     fi
2420     rm -f conftest.nm1 conftest.nm2
2421   fi],
2422  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2423   [Define if your assembler supports .subsection and .subsection -1 starts
2424    emitting at the beginning of your section.])])
2426 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2427  [2,2,0],,
2428  [      .weak foobar],,
2429 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2431 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2432  [2,17,0],,
2433  [      .weakref foobar, barfnot],,
2434 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2436 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2437  [2,15,91],,
2438  [      .SPACE $TEXT$
2439         .NSUBSPA $CODE$,COMDAT],,
2440 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2442 # .hidden needs to be supported in both the assembler and the linker,
2443 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2444 # This is irritatingly difficult to feature test for; we have to check the
2445 # date string after the version number.  If we've got an in-tree
2446 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2447 # to be safe.
2448 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2449 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2450  [elf,2,13,0],,
2451 [       .hidden foobar
2452 foobar:])
2453 case "${target}" in
2454   *-*-darwin*)
2455     # Darwin as has some visibility support, though with a different syntax.
2456     gcc_cv_as_hidden=yes
2457     ;;
2458 esac
2460 # gnu_indirect_function type is an extension proposed at
2461 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2462 # selection of function implementation
2463 AC_ARG_ENABLE(gnu-indirect-function,
2464  [AS_HELP_STRING([--enable-gnu-indirect-function],
2465                  [enable the use of the @gnu_indirect_function to glibc systems])],
2466  [case $enable_gnu_indirect_function in
2467     yes | no) ;;
2468     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2469 Valid choices are 'yes' and 'no'.]) ;;
2470   esac],
2471  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2473 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2474 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2475 [Define if your system supports gnu indirect functions.])
2478 changequote(,)dnl
2479 if test $in_tree_ld != yes ; then
2480   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2481   if echo "$ld_ver" | grep GNU > /dev/null; then
2482     if test x"$ld_is_gold" = xyes; then
2483       # GNU gold --version looks like this:
2484       #
2485       # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2486       #
2487       # We extract the binutils version which is more familiar and specific
2488       # than the gold version.
2489       ld_vers=`echo $ld_ver | sed -n \
2490           -e 's,^[^)]*[  ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2491     else
2492       # GNU ld --version looks like this:
2493       #
2494       # GNU ld (GNU Binutils) 2.21.51.20110225
2495       ld_vers=`echo $ld_ver | sed -n \
2496           -e 's,^.*[     ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2497     fi
2498     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'`
2499     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2500     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2501     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2502   else
2503     case "${target}" in
2504       *-*-solaris2*)
2505         # See acinclude.m4 (gcc_SUN_LD_VERSION) for the version number
2506         # format.
2507         #
2508         # Don't reuse gcc_gv_sun_ld_vers_* in case a linker other than
2509         # /usr/ccs/bin/ld has been configured.
2510         ld_ver=`$gcc_cv_ld -V 2>&1`
2511         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2512           ld_vers=`echo $ld_ver | sed -n \
2513             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2514           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2515           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2516         fi
2517         ;;
2518     esac
2519   fi
2521 changequote([,])dnl
2523 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2524 [[if test $in_tree_ld = yes ; then
2525   gcc_cv_ld_hidden=no
2526   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 \
2527      && test $in_tree_ld_is_elf = yes; then
2528      gcc_cv_ld_hidden=yes
2529   fi
2530 else
2531   gcc_cv_ld_hidden=yes
2532   if test x"$ld_is_gold" = xyes; then
2533     :
2534   elif echo "$ld_ver" | grep GNU > /dev/null; then
2535     case "${target}" in
2536       mmix-knuth-mmixware)
2537         # The linker emits by default mmo, not ELF, so "no" is appropriate.
2538         gcc_cv_ld_hidden=no
2539         ;;
2540     esac
2541     if test 0"$ld_date" -lt 20020404; then
2542       if test -n "$ld_date"; then
2543         # If there was date string, but was earlier than 2002-04-04, fail
2544         gcc_cv_ld_hidden=no
2545       elif test -z "$ld_vers"; then
2546         # If there was no date string nor ld version number, something is wrong
2547         gcc_cv_ld_hidden=no
2548       else
2549         test -z "$ld_vers_patch" && ld_vers_patch=0
2550         if test "$ld_vers_major" -lt 2; then
2551           gcc_cv_ld_hidden=no
2552         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2553           gcc_cv_ld_hidden="no"
2554         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2555           gcc_cv_ld_hidden=no
2556         fi
2557       fi
2558     fi
2559   else
2560     case "${target}" in
2561       *-*-darwin*)
2562         # Darwin ld has some visibility support.
2563         gcc_cv_ld_hidden=yes
2564         ;;
2565       hppa64*-*-hpux* | ia64*-*-hpux*)
2566         gcc_cv_ld_hidden=yes
2567         ;;
2568       *-*-solaris2.1[0-9]*)
2569         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2570         # .symbolic was only added in Solaris 9 12/02.
2571         gcc_cv_ld_hidden=yes
2572         ;;
2573       *)
2574         gcc_cv_ld_hidden=no
2575         ;;
2576     esac
2577   fi
2578 fi]])
2579 libgcc_visibility=no
2580 AC_SUBST(libgcc_visibility)
2581 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2582 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2583   libgcc_visibility=yes
2584   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2585   [Define if your assembler and linker support .hidden.])
2588 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2589 gcc_cv_ld_ro_rw_mix=unknown
2590 if test $in_tree_ld = yes ; then
2591   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 \
2592      && test $in_tree_ld_is_elf = yes; then
2593     gcc_cv_ld_ro_rw_mix=read-write
2594   fi
2595 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2596   echo '.section myfoosect, "a"' > conftest1.s
2597   echo '.section myfoosect, "aw"' > conftest2.s
2598   echo '.byte 1' >> conftest2.s
2599   echo '.section myfoosect, "a"' > conftest3.s
2600   echo '.byte 0' >> conftest3.s
2601   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2602      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2603      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2604      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2605         conftest2.o conftest3.o > /dev/null 2>&1; then
2606     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2607                          | sed -e '/myfoosect/!d' -e N`
2608     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2609       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2610         gcc_cv_ld_ro_rw_mix=read-only
2611       else
2612         gcc_cv_ld_ro_rw_mix=read-write
2613       fi
2614     fi
2615   fi
2616 changequote(,)dnl
2617   rm -f conftest.* conftest[123].*
2618 changequote([,])dnl
2620 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2621         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2622   [Define if your linker links a mix of read-only
2623    and read-write sections into a read-write section.])
2625 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2627 gcc_AC_INITFINI_ARRAY
2629 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2630 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2631   [elf,2,11,0],,
2632 [       .data
2633         .uleb128 L2 - L1
2635         .uleb128 1280
2636         .sleb128 -1010
2637 L2:],
2638 [[# GAS versions before 2.11 do not support uleb128,
2639   # despite appearing to.
2640   # ??? There exists an elf-specific test that will crash
2641   # the assembler.  Perhaps it's better to figure out whether
2642   # arbitrary sections are supported and try the test.
2643   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2644   if echo "$as_ver" | grep GNU > /dev/null; then
2645     as_vers=`echo $as_ver | sed -n \
2646         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2647     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2648     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2649     if test $as_major -eq 2 && test $as_minor -lt 11
2650     then :
2651     else gcc_cv_as_leb128=yes
2652     fi
2653   fi]],
2654   [AC_DEFINE(HAVE_AS_LEB128, 1,
2655     [Define if your assembler supports .sleb128 and .uleb128.])])
2657 # Check if we have assembler support for unwind directives.
2658 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2659   ,,
2660 [       .text
2661         .cfi_startproc
2662         .cfi_offset 0, 0
2663         .cfi_same_value 1
2664         .cfi_def_cfa 1, 2
2665         .cfi_escape 1, 2, 3, 4, 5
2666         .cfi_endproc],
2667 [case "$target" in
2668   *-*-solaris*)
2669     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2670     # read-only and read-write sections, we need to make sure that the
2671     # assembler used emits read-write .eh_frame sections.
2672     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2673       if test "x$gcc_cv_objdump" != x; then
2674         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2675                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2676           gcc_cv_as_cfi_directive=no
2677         else
2678           case "$target" in
2679             i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
2680               # On Solaris/x86, make sure that GCC and assembler agree on using
2681               # read-only .eh_frame sections for 64-bit.
2682               if test x$gas = xyes; then
2683                  as_ix86_64_opt="--64"
2684               else
2685                  as_ix86_64_opt="-xarch=amd64"
2686               fi
2687               if $gcc_cv_as $as_ix86_64_opt -o conftest.o conftest.s > /dev/null 2>&1 && \
2688                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2689                         sed -e /.eh_frame/!d -e N | \
2690                         grep READONLY > /dev/null; then
2691                 gcc_cv_as_cfi_directive=yes
2692               else
2693                 gcc_cv_as_cfi_directive=no
2694               fi
2695               ;;
2696             *)
2697               gcc_cv_as_cfi_directive=yes
2698               ;;
2699           esac 
2700         fi
2701       else
2702         # no objdump, err on the side of caution
2703         gcc_cv_as_cfi_directive=no
2704       fi
2705     else
2706       gcc_cv_as_cfi_directive=yes
2707     fi
2708     ;;
2709   *-*-*)
2710     gcc_cv_as_cfi_directive=yes
2711     ;;
2712 esac])
2713 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2714 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2715   ,,
2716 [       .text
2717         .cfi_startproc
2718         .cfi_adjust_cfa_offset 64
2719         .skip 75040, 0
2720         .cfi_adjust_cfa_offset 128
2721         .cfi_endproc],
2723 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2724     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2725    gcc_cv_as_cfi_advance_working=yes
2728 else
2729   # no objdump, err on the side of caution
2730   gcc_cv_as_cfi_advance_working=no
2732 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2733 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2734   [`if test $gcc_cv_as_cfi_directive = yes \
2735        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2736   [Define 0/1 if your assembler supports CFI directives.])
2738 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2739 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2740   gcc_cv_as_cfi_personality_directive, ,,
2741 [       .text
2742         .cfi_startproc
2743         .cfi_personality 0, symbol
2744         .cfi_endproc])
2745 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2746   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2747     then echo 1; else echo 0; fi`],
2748   [Define 0/1 if your assembler supports .cfi_personality.])
2750 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2751   gcc_cv_as_cfi_sections_directive, ,,
2752 [       .text
2753         .cfi_sections .debug_frame, .eh_frame
2754         .cfi_startproc
2755         .cfi_endproc],
2756 [case $target_os in
2757   win32 | pe | cygwin* | mingw32*)
2758     # Need to check that we generated the correct relocation for the
2759     # .debug_frame section.  This was fixed for binutils 2.21.
2760     gcc_cv_as_cfi_sections_directive=no
2761     if test "x$gcc_cv_objdump" != x; then
2762      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2763         grep secrel > /dev/null; then
2764       gcc_cv_as_cfi_sections_directive=yes
2765      fi
2766     fi
2767     ;;
2768   *)
2769     gcc_cv_as_cfi_sections_directive=yes
2770     ;;
2771 esac])
2772 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2773 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2774   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2775     then echo 1; else echo 0; fi`],
2776   [Define 0/1 if your assembler supports .cfi_sections.])
2778 # GAS versions up to and including 2.11.0 may mis-optimize
2779 # .eh_frame data.
2780 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2781   [elf,2,12,0],,
2782 [       .text
2783 .LFB1:
2784         .4byte  0
2785 .L1:
2786         .4byte  0
2787 .LFE1:
2788         .section        .eh_frame,"aw",@progbits
2789 __FRAME_BEGIN__:
2790         .4byte  .LECIE1-.LSCIE1
2791 .LSCIE1:
2792         .4byte  0x0
2793         .byte   0x1
2794         .ascii "z\0"
2795         .byte   0x1
2796         .byte   0x78
2797         .byte   0x1a
2798         .byte   0x0
2799         .byte   0x4
2800         .4byte  1
2801         .p2align 1
2802 .LECIE1:
2803 .LSFDE1:
2804         .4byte  .LEFDE1-.LASFDE1
2805 .LASFDE1:
2806         .4byte  .LASFDE1-__FRAME_BEGIN__
2807         .4byte  .LFB1
2808         .4byte  .LFE1-.LFB1
2809         .byte   0x4
2810         .4byte  .LFE1-.LFB1
2811         .byte   0x4
2812         .4byte  .L1-.LFB1
2813 .LEFDE1:],
2814 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2815 cat > conftest.lit <<EOF
2816  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2817  0010 01000000 12000000 18000000 00000000  ................
2818  0020 08000000 04080000 0044               .........D      @&t@
2820 cat > conftest.big <<EOF
2821  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2822  0010 00000001 00000012 00000018 00000000  ................
2823  0020 00000008 04000000 0844               .........D      @&t@
2825   # If the assembler didn't choke, and we can objdump,
2826   # and we got the correct data, then succeed.
2827   # The text in the here-document typically retains its unix-style line
2828   # endings, while the output of objdump will use host line endings.
2829   # Therefore, use diff -b for the comparisons.
2830   if test x$gcc_cv_objdump != x \
2831   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2832      | tail -3 > conftest.got \
2833   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2834     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2835   then
2836     gcc_cv_as_eh_frame=yes
2837   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2838     gcc_cv_as_eh_frame=buggy
2839   else
2840     # Uh oh, what do we do now?
2841     gcc_cv_as_eh_frame=no
2842   fi])
2844 if test $gcc_cv_as_eh_frame = buggy; then
2845   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2846   [Define if your assembler mis-optimizes .eh_frame data.])
2849 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2850  [elf,2,12,0], [--fatal-warnings],
2851  [.section .rodata.str, "aMS", @progbits, 1])
2852 if test $gcc_cv_as_shf_merge = no; then
2853   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2854     [elf,2,12,0], [--fatal-warnings],
2855     [.section .rodata.str, "aMS", %progbits, 1])
2857 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2858   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2859 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2861 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
2862  gcc_cv_as_comdat_group,
2863  [elf,2,16,0], [--fatal-warnings],
2864  [.section .text,"axG",@progbits,.foo,comdat])
2865 if test $gcc_cv_as_comdat_group = yes; then
2866   gcc_cv_as_comdat_group_percent=no
2867   gcc_cv_as_comdat_group_group=no
2868 else
2869  gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
2870    gcc_cv_as_comdat_group_percent,
2871    [elf,2,16,0], [--fatal-warnings],
2872    [.section .text,"axG",%progbits,.foo,comdat])
2873  if test $gcc_cv_as_comdat_group_percent = yes; then
2874    gcc_cv_as_comdat_group_group=no
2875  else
2876    case "${target}" in
2877      # Sun as uses a completely different syntax.
2878      *-*-solaris2*)
2879        case "${target}" in
2880          sparc*-*-solaris2*)
2881            conftest_s='
2882                .group foo,".text%foo",#comdat
2883                .section ".text%foo", #alloc,#execinstr,#progbits
2884                .globl foo
2885              foo:
2886              '
2887            ;;
2888          i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
2889            conftest_s='
2890                .group foo,.text%foo,#comdat
2891                .section .text%foo, "ax", @progbits
2892                .globl  foo
2893              foo:
2894              '
2895            ;;
2896        esac
2897        gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
2898          gcc_cv_as_comdat_group_group,
2899          ,, [$conftest_s])
2900        ;;
2901    esac
2902    if test -z "${gcc_cv_as_comdat_group_group+set}"; then
2903      gcc_cv_as_comdat_group_group=no
2904    fi
2905  fi
2907 if test x"$ld_is_gold" = xyes; then
2908   comdat_group=yes
2909 elif test $in_tree_ld = yes ; then
2910   comdat_group=no
2911   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 \
2912      && test $in_tree_ld_is_elf = yes; then
2913      comdat_group=yes
2914   fi
2915 elif echo "$ld_ver" | grep GNU > /dev/null; then
2916   comdat_group=yes
2917   if test 0"$ld_date" -lt 20050308; then
2918     if test -n "$ld_date"; then
2919       # If there was date string, but was earlier than 2005-03-08, fail
2920       comdat_group=no
2921     elif test "$ld_vers_major" -lt 2; then
2922       comdat_group=no
2923     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2924       comdat_group=no
2925     fi
2926   fi
2927 else
2928 changequote(,)dnl
2929   case "${target}" in
2930     *-*-solaris2.1[1-9]*)
2931       comdat_group=no
2932       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2933       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2934       # version 1.688.
2935       #
2936       # If using Sun as for COMDAT group as emitted by GCC, one needs at
2937       # least ld version 1.2267.
2938       if test "$ld_vers_major" -gt 1; then
2939         comdat_group=yes
2940       elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
2941         comdat_group=yes
2942       elif test "$ld_vers_minor" -ge 2267; then
2943         comdat_group=yes
2944       fi
2945       ;;
2946     *)
2947       # Assume linkers other than GNU ld don't support COMDAT group.
2948       comdat_group=no
2949       ;;
2950   esac
2951 changequote([,])dnl
2953 # Allow overriding the automatic COMDAT group tests above.
2954 AC_ARG_ENABLE(comdat,
2955   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2956   [comdat_group="$enable_comdat"])
2957 if test $comdat_group = no; then
2958   gcc_cv_as_comdat_group=no
2959   gcc_cv_as_comdat_group_percent=no
2960   gcc_cv_as_comdat_group_group=no
2962 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2963   [`if test $gcc_cv_as_comdat_group = yes \
2964     || test $gcc_cv_as_comdat_group_percent = yes \
2965     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
2966 [Define 0/1 if your assembler and linker support COMDAT groups.])
2968 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2969  gcc_cv_as_discriminator,
2970  [2,19,51],,
2971 [       .text
2972         .file 1 "conf.c"
2973         .loc 1 1 0 discriminator 1],,
2974 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2975   [Define if your assembler supports the .loc discriminator sub-directive.])])
2977 # Thread-local storage - the check is heavily parameterized.
2978 conftest_s=
2979 tls_first_major=
2980 tls_first_minor=
2981 tls_as_opt=
2982 case "$target" in
2983 changequote(,)dnl
2984   alpha*-*-*)
2985     conftest_s='
2986         .section ".tdata","awT",@progbits
2987 foo:    .long   25
2988         .text
2989         ldq     $27,__tls_get_addr($29)         !literal!1
2990         lda     $16,foo($29)                    !tlsgd!1
2991         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2992         ldq     $27,__tls_get_addr($29)         !literal!2
2993         lda     $16,foo($29)                    !tlsldm!2
2994         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2995         ldq     $1,foo($29)                     !gotdtprel
2996         ldah    $2,foo($29)                     !dtprelhi
2997         lda     $3,foo($2)                      !dtprello
2998         lda     $4,foo($29)                     !dtprel
2999         ldq     $1,foo($29)                     !gottprel
3000         ldah    $2,foo($29)                     !tprelhi
3001         lda     $3,foo($2)                      !tprello
3002         lda     $4,foo($29)                     !tprel'
3003         tls_first_major=2
3004         tls_first_minor=13
3005         tls_as_opt=--fatal-warnings
3006         ;;
3007   cris-*-*|crisv32-*-*)
3008     conftest_s='
3009         .section ".tdata","awT",@progbits
3010 x:      .long   25
3011         .text
3012         move.d x:IE,$r10
3013         nop'
3014         tls_first_major=2
3015         tls_first_minor=20
3016         tls_as_opt=--fatal-warnings
3017         ;;
3018   frv*-*-*)
3019     conftest_s='
3020         .section ".tdata","awT",@progbits
3021 x:      .long   25
3022         .text
3023         call    #gettlsoff(x)'
3024         tls_first_major=2
3025         tls_first_minor=14
3026         ;;
3027   hppa*-*-linux*)
3028     conftest_s='
3029 t1:     .reg    %r20
3030 t2:     .reg    %r21
3031 gp:     .reg    %r19
3032         .section ".tdata","awT",@progbits
3033 foo:    .long   25
3034         .text
3035         .align  4
3036         addil LT%foo-$tls_gdidx$,gp
3037         ldo RT%foo-$tls_gdidx$(%r1),%arg0
3038         b __tls_get_addr
3039         nop             
3040         addil LT%foo-$tls_ldidx$,gp
3041         b __tls_get_addr
3042         ldo RT%foo-$tls_ldidx$(%r1),%arg0
3043         addil LR%foo-$tls_dtpoff$,%ret0
3044         ldo RR%foo-$tls_dtpoff$(%r1),%t1
3045         mfctl %cr27,%t1                 
3046         addil LT%foo-$tls_ieoff$,gp
3047         ldw RT%foo-$tls_ieoff$(%r1),%t2
3048         add %t1,%t2,%t3                 
3049         mfctl %cr27,%t1                 
3050         addil LR%foo-$tls_leoff$,%t1
3051         ldo RR%foo-$tls_leoff$(%r1),%t2'
3052         tls_first_major=2
3053         tls_first_minor=15
3054         tls_as_opt=--fatal-warnings
3055         ;;
3056   arm*-*-*)
3057     conftest_s='
3058         .section ".tdata","awT",%progbits
3059 foo:    .long   25
3060         .text
3061 .word foo(gottpoff)
3062 .word foo(tpoff)
3063 .word foo(tlsgd)
3064 .word foo(tlsldm)
3065 .word foo(tlsldo)'
3066         tls_first_major=2
3067         tls_first_minor=17
3068         ;;
3069   i[34567]86-*-* | x86_64-*-*)
3070     case "$target" in
3071       i[34567]86-*-solaris2.* | x86_64-*-solaris2.1[0-9]*)
3072         on_solaris=yes
3073         ;;
3074       *)
3075         on_solaris=no
3076         ;;
3077     esac
3078     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3079       conftest_s='
3080         .section .tdata,"awt",@progbits'
3081       tls_first_major=0
3082       tls_first_minor=0
3083       tls_section_flag=t
3084 changequote([,])dnl
3085       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3086 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3087 changequote(,)dnl
3088     else
3089       conftest_s='
3090         .section ".tdata","awT",@progbits'
3091       tls_first_major=2
3092       tls_first_minor=14
3093       tls_section_flag=T
3094       tls_as_opt="--fatal-warnings"
3095     fi
3096     case "$target" in
3097       i[34567]86-*-*)
3098         conftest_s="$conftest_s
3099 foo:    .long   25
3100         .text
3101         movl    %gs:0, %eax
3102         leal    foo@tlsgd(,%ebx,1), %eax
3103         leal    foo@tlsldm(%ebx), %eax
3104         leal    foo@dtpoff(%eax), %edx
3105         movl    foo@gottpoff(%ebx), %eax
3106         subl    foo@gottpoff(%ebx), %eax
3107         addl    foo@gotntpoff(%ebx), %eax
3108         movl    foo@indntpoff, %eax
3109         movl    \$foo@tpoff, %eax
3110         subl    \$foo@tpoff, %eax
3111         leal    foo@ntpoff(%ecx), %eax"
3112         ;;
3113       x86_64-*-*)
3114         if test x$on_solaris = xyes; then
3115           case $gas_flag in
3116             yes) tls_as_opt="$tls_as_opt --64" ;;
3117             no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3118           esac    
3119         fi
3120         conftest_s="$conftest_s
3121 foo:    .long   25
3122         .text
3123         movq    %fs:0, %rax
3124         leaq    foo@tlsgd(%rip), %rdi
3125         leaq    foo@tlsld(%rip), %rdi
3126         leaq    foo@dtpoff(%rax), %rdx
3127         movq    foo@gottpoff(%rip), %rax
3128         movq    \$foo@tpoff, %rax"
3129         ;;
3130     esac
3131     ;;
3132   ia64-*-*)
3133     conftest_s='
3134         .section ".tdata","awT",@progbits
3135 foo:    data8   25
3136         .text
3137         addl    r16 = @ltoff(@dtpmod(foo#)), gp
3138         addl    r17 = @ltoff(@dtprel(foo#)), gp
3139         addl    r18 = @ltoff(@tprel(foo#)), gp
3140         addl    r19 = @dtprel(foo#), gp
3141         adds    r21 = @dtprel(foo#), r13
3142         movl    r23 = @dtprel(foo#)
3143         addl    r20 = @tprel(foo#), gp
3144         adds    r22 = @tprel(foo#), r13
3145         movl    r24 = @tprel(foo#)'
3146         tls_first_major=2
3147         tls_first_minor=13
3148         tls_as_opt=--fatal-warnings
3149         ;;
3150   microblaze*-*-*)
3151     conftest_s='
3152         .section .tdata,"awT",@progbits
3154         .word 2
3155         .text
3156         addik r5,r20,x@TLSGD
3157         addik r5,r20,x@TLSLDM'
3158         tls_first_major=2
3159         tls_first_minor=20
3160         tls_as_opt='--fatal-warnings'
3161         ;;
3162   mips*-*-*)
3163     conftest_s='
3164         .section .tdata,"awT",@progbits
3166         .word 2
3167         .text
3168         addiu $4, $28, %tlsgd(x)
3169         addiu $4, $28, %tlsldm(x)
3170         lui $4, %dtprel_hi(x)
3171         addiu $4, $4, %dtprel_lo(x)
3172         lw $4, %gottprel(x)($28)
3173         lui $4, %tprel_hi(x)
3174         addiu $4, $4, %tprel_lo(x)'
3175         tls_first_major=2
3176         tls_first_minor=16
3177         tls_as_opt='-32 --fatal-warnings'
3178         ;;
3179   m68k-*-*)
3180     conftest_s='
3181         .section .tdata,"awT",@progbits
3183         .word 2
3184         .text
3185 foo:
3186         move.l x@TLSGD(%a5),%a0
3187         move.l x@TLSLDM(%a5),%a0
3188         move.l x@TLSLDO(%a5),%a0
3189         move.l x@TLSIE(%a5),%a0
3190         move.l x@TLSLE(%a5),%a0'
3191         tls_first_major=2
3192         tls_first_minor=19
3193         tls_as_opt='--fatal-warnings'
3194         ;;
3195   nios2-*-*)
3196       conftest_s='
3197         .section ".tdata","awT",@progbits'
3198         tls_first_major=2
3199         tls_first_minor=23
3200         tls_as_opt="--fatal-warnings"
3201         ;;
3202   aarch64*-*-*)
3203     conftest_s='
3204         .section ".tdata","awT",%progbits
3205 foo:    .long   25
3206         .text
3207         adrp  x0, :tlsgd:x
3208         add   x0, x0, #:tlsgd_lo12:x
3209         bl    __tls_get_addr
3210         nop'
3211         tls_first_major=2
3212         tls_first_minor=20
3213         tls_as_opt='--fatal-warnings'
3214         ;;
3215   powerpc-ibm-aix*)
3216     conftest_s='
3217         .extern __get_tpointer
3218         .toc
3219 LC..1:
3220         .tc a[TC],a[TL]@le
3221         .csect .text[PR]
3222 .tlstest:
3223         lwz 9,LC..1(2)
3224         bla __get_tpointer
3225         lwzx 3,9,3
3226         .globl a
3227         .csect a[TL],4
3229         .space 4'
3230         tls_first_major=0
3231         tls_first_minor=0
3232         ;;
3233   powerpc64*-*-*)
3234     conftest_s='
3235         .section ".tdata","awT",@progbits
3236         .align 3
3237 ld0:    .space 8
3238 ld1:    .space 8
3239 x1:     .space 8
3240 x2:     .space 8
3241 x3:     .space 8
3242         .text
3243         addi 3,2,ld0@got@tlsgd
3244         bl .__tls_get_addr
3245         nop
3246         addi 3,2,ld1@toc
3247         bl .__tls_get_addr
3248         nop
3249         addi 3,2,x1@got@tlsld
3250         bl .__tls_get_addr
3251         nop
3252         addi 9,3,x1@dtprel
3253         bl .__tls_get_addr
3254         nop
3255         addis 9,3,x2@dtprel@ha
3256         addi 9,9,x2@dtprel@l
3257         bl .__tls_get_addr
3258         nop
3259         ld 9,x3@got@dtprel(2)
3260         add 9,9,3
3261         bl .__tls_get_addr
3262         nop'
3263         tls_first_major=2
3264         tls_first_minor=14
3265         tls_as_opt="-a64 --fatal-warnings"
3266         ;;
3267   powerpc*-*-*)
3268     conftest_s='
3269         .section ".tdata","awT",@progbits
3270         .align 2
3271 ld0:    .space 4
3272 ld1:    .space 4
3273 x1:     .space 4
3274 x2:     .space 4
3275 x3:     .space 4
3276         .text
3277         addi 3,31,ld0@got@tlsgd
3278         bl __tls_get_addr
3279         addi 3,31,x1@got@tlsld
3280         bl __tls_get_addr
3281         addi 9,3,x1@dtprel
3282         addis 9,3,x2@dtprel@ha
3283         addi 9,9,x2@dtprel@l
3284         lwz 9,x3@got@tprel(31)
3285         add 9,9,x@tls
3286         addi 9,2,x1@tprel
3287         addis 9,2,x2@tprel@ha
3288         addi 9,9,x2@tprel@l'
3289         tls_first_major=2
3290         tls_first_minor=14
3291         tls_as_opt="-a32 --fatal-warnings"
3292         ;;
3293   s390-*-*)
3294     conftest_s='
3295         .section ".tdata","awT",@progbits
3296 foo:    .long   25
3297         .text
3298         .long   foo@TLSGD
3299         .long   foo@TLSLDM
3300         .long   foo@DTPOFF
3301         .long   foo@NTPOFF
3302         .long   foo@GOTNTPOFF
3303         .long   foo@INDNTPOFF
3304         l       %r1,foo@GOTNTPOFF(%r12)
3305         l       %r1,0(%r1):tls_load:foo
3306         bas     %r14,0(%r1,%r13):tls_gdcall:foo
3307         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
3308         tls_first_major=2
3309         tls_first_minor=14
3310         tls_as_opt="-m31 --fatal-warnings"
3311         ;;
3312   s390x-*-*)
3313     conftest_s='
3314         .section ".tdata","awT",@progbits
3315 foo:    .long   25
3316         .text
3317         .quad   foo@TLSGD
3318         .quad   foo@TLSLDM
3319         .quad   foo@DTPOFF
3320         .quad   foo@NTPOFF
3321         .quad   foo@GOTNTPOFF
3322         lg      %r1,foo@GOTNTPOFF(%r12)
3323         larl    %r1,foo@INDNTPOFF
3324         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
3325         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3326         tls_first_major=2
3327         tls_first_minor=14
3328         tls_as_opt="-m64 -Aesame --fatal-warnings"
3329         ;;
3330   sh-*-* | sh[34]-*-*)
3331     conftest_s='
3332         .section ".tdata","awT",@progbits
3333 foo:    .long   25
3334         .text
3335         .long   foo@TLSGD
3336         .long   foo@TLSLDM
3337         .long   foo@DTPOFF
3338         .long   foo@GOTTPOFF
3339         .long   foo@TPOFF'
3340         tls_first_major=2
3341         tls_first_minor=13
3342         tls_as_opt=--fatal-warnings
3343         ;;
3344   sparc*-*-*)
3345     case "$target" in
3346       sparc*-sun-solaris2.*)
3347         on_solaris=yes
3348         ;;
3349       *)
3350         on_solaris=no
3351         ;;
3352     esac
3353     if test x$on_solaris = xyes && test x$gas_flag = xno; then
3354       conftest_s='
3355         .section ".tdata",#alloc,#write,#tls'
3356         tls_first_major=0
3357         tls_first_minor=0
3358     else
3359       conftest_s='
3360         .section ".tdata","awT",@progbits'
3361         tls_first_major=2
3362         tls_first_minor=14
3363         tls_as_opt="-32 --fatal-warnings"
3364     fi
3365     conftest_s="$conftest_s
3366 foo:    .long   25
3367         .text
3368         sethi   %tgd_hi22(foo), %o0
3369         add     %o0, %tgd_lo10(foo), %o1
3370         add     %l7, %o1, %o0, %tgd_add(foo)
3371         call    __tls_get_addr, %tgd_call(foo)
3372         sethi   %tldm_hi22(foo), %l1
3373         add     %l1, %tldm_lo10(foo), %l2
3374         add     %l7, %l2, %o0, %tldm_add(foo)
3375         call    __tls_get_addr, %tldm_call(foo)
3376         sethi   %tldo_hix22(foo), %l3
3377         xor     %l3, %tldo_lox10(foo), %l4
3378         add     %o0, %l4, %l5, %tldo_add(foo)
3379         sethi   %tie_hi22(foo), %o3
3380         add     %o3, %tie_lo10(foo), %o3
3381         ld      [%l7 + %o3], %o2, %tie_ld(foo)
3382         add     %g7, %o2, %o4, %tie_add(foo)
3383         sethi   %tle_hix22(foo), %l1
3384         xor     %l1, %tle_lox10(foo), %o5
3385         ld      [%g7 + %o5], %o1"
3386         ;;
3387   tilepro*-*-*)
3388       conftest_s='
3389         .section ".tdata","awT",@progbits
3390 foo:    .long   25
3391         .text
3392         addli   r0, zero, tls_gd(foo)
3393         auli    r0, zero, tls_gd_ha16(foo)
3394         addli   r0, r0, tls_gd_lo16(foo)
3395         jal     __tls_get_addr
3396         addli   r0, zero, tls_ie(foo)
3397         auli    r0, r0, tls_ie_ha16(foo)
3398         addli   r0, r0, tls_ie_lo16(foo)'
3399         tls_first_major=2
3400         tls_first_minor=22
3401         tls_as_opt="--fatal-warnings"
3402         ;;
3403   tilegx*-*-*)
3404       conftest_s='
3405         .section ".tdata","awT",@progbits
3406 foo:    .long   25
3407         .text
3408         shl16insli r0, zero, hw0_last_tls_gd(foo)
3409         shl16insli r0, zero, hw1_last_tls_gd(foo)
3410         shl16insli r0, r0,   hw0_tls_gd(foo)
3411         jal        __tls_get_addr
3412         shl16insli r0, zero, hw1_last_tls_ie(foo)
3413         shl16insli r0, r0,   hw0_tls_ie(foo)'
3414         tls_first_major=2
3415         tls_first_minor=22
3416         tls_as_opt="--fatal-warnings"
3417         ;;
3418   xtensa*-*-*)
3419     conftest_s='
3420         .section ".tdata","awT",@progbits
3421 foo:    .long   25
3422         .text
3423         movi    a8, foo@TLSFUNC
3424         movi    a10, foo@TLSARG
3425         callx8.tls a8, foo@TLSCALL'
3426         tls_first_major=2
3427         tls_first_minor=19
3428         ;;
3429 changequote([,])dnl
3430 esac
3431 set_have_as_tls=no
3432 if test "x$enable_tls" = xno ; then
3433   : # TLS explicitly disabled.
3434 elif test "x$enable_tls" = xyes ; then
3435   set_have_as_tls=yes # TLS explicitly enabled.
3436 elif test -z "$tls_first_major"; then
3437   : # If we don't have a check, assume no support.
3438 else
3439   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3440   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3441   [set_have_as_tls=yes])
3443 if test $set_have_as_tls = yes ; then
3444   AC_DEFINE(HAVE_AS_TLS, 1,
3445             [Define if your assembler and linker support thread-local storage.])
3448 # Target-specific assembler checks.
3450 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3451 gcc_cv_ld_static_dynamic=no
3452 gcc_cv_ld_static_option='-Bstatic'
3453 gcc_cv_ld_dynamic_option='-Bdynamic'
3454 if test $in_tree_ld = yes ; then
3455   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
3456     gcc_cv_ld_static_dynamic=yes
3457   fi
3458 elif test x$gcc_cv_ld != x; then
3459   # Check if linker supports -Bstatic/-Bdynamic option
3460   if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3461      && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3462       gcc_cv_ld_static_dynamic=yes
3463   else
3464     case "$target" in
3465       # AIX ld uses -b flags
3466       *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3467         gcc_cv_ld_static_dynamic=yes
3468         gcc_cv_ld_static_option="-bstatic"
3469         gcc_cv_ld_dynamic_option="-bdynamic"
3470         ;;
3471       # HP-UX ld uses -a flags to select between shared and archive.
3472       *-*-hpux*)
3473         if test x"$gnu_ld" = xno; then
3474           gcc_cv_ld_static_dynamic=yes
3475           gcc_cv_ld_static_option="-aarchive_shared"
3476           gcc_cv_ld_dynamic_option="-adefault"
3477         fi
3478         ;;
3479       # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3480       *-*-solaris2*)
3481         gcc_cv_ld_static_dynamic=yes
3482         ;;
3483     esac
3484   fi
3486 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3487         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3488 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3489         AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3490 [Define to the linker option to disable use of shared objects.])
3491         AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3492 [Define to the linker option to enable use of shared objects.])
3494 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3496 if test x"$demangler_in_ld" = xyes; then
3497   AC_MSG_CHECKING(linker --demangle support)
3498   gcc_cv_ld_demangle=no
3499   if test $in_tree_ld = yes; then
3500     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 \
3501       gcc_cv_ld_demangle=yes
3502     fi
3503   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3504     # Check if the GNU linker supports --demangle option
3505     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3506       gcc_cv_ld_demangle=yes
3507     fi
3508   fi
3509   if test x"$gcc_cv_ld_demangle" = xyes; then
3510     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3511 [Define if your linker supports --demangle option.])
3512   fi
3513   AC_MSG_RESULT($gcc_cv_ld_demangle)
3516 AC_MSG_CHECKING(linker plugin support)
3517 gcc_cv_lto_plugin=0
3518 if test -f liblto_plugin.la; then
3519   save_ld_ver="$ld_ver"
3520   save_ld_vers_major="$ld_vers_major"
3521   save_ld_vers_minor="$ld_vers_minor"
3522   save_ld_is_gold="$ld_is_gold"
3524   ld_is_gold=no
3526   if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3527     ld_ver="GNU ld"
3528     # FIXME: ld_is_gold?
3529     ld_vers_major="$gcc_cv_gld_major_version"
3530     ld_vers_minor="$gcc_cv_gld_minor_version"
3531   else
3532     # Determine plugin linker version.
3533     # FIXME: Partial duplicate from above, generalize.
3534 changequote(,)dnl
3535     ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3536     if echo "$ld_ver" | grep GNU > /dev/null; then
3537       if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3538         ld_is_gold=yes
3539         ld_vers=`echo $ld_ver | sed -n \
3540             -e 's,^[^)]*[        ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3541       else
3542         ld_vers=`echo $ld_ver | sed -n \
3543             -e 's,^.*[   ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3544       fi
3545       ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3546       ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3547     fi
3548 changequote([,])dnl
3549   fi
3551   # Determine plugin support.
3552   if echo "$ld_ver" | grep GNU > /dev/null; then
3553     # Require GNU ld or gold 2.21+ for plugin support by default.
3554     if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3555       gcc_cv_lto_plugin=2
3556     # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3557     elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3558       gcc_cv_lto_plugin=1
3559     fi
3560   fi
3562   ld_ver="$save_ld_ver"
3563   ld_vers_major="$save_ld_vers_major"
3564   ld_vers_minor="$save_ld_vers_minor"
3565   ld_is_gold="$save_ld_is_gold"
3567 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3568   [Define to the level of your linker's plugin support.])
3569 AC_MSG_RESULT($gcc_cv_lto_plugin)
3571 case "$target" in
3572   aarch64*-*-*)
3573     gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
3574                           [-mabi=lp64], [.text],,,)
3575     if test x$gcc_cv_as_aarch64_mabi = xyes; then
3576       AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
3577                 [Define if your assembler supports the -mabi option.])
3578     else
3579       if test x$with_abi = xilp32; then
3580         AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3581                      Upgrade the Assembler.])
3582       fi
3583       if test x"$with_multilib_list" = xdefault; then
3584         TM_MULTILIB_CONFIG=lp64
3585       else
3586         aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
3587         for aarch64_multilib in ${aarch64_multilibs}; do
3588           case ${aarch64_multilib} in
3589             ilp32)
3590               AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
3591                             Upgrade the Assembler.])
3592               ;;
3593             *)
3594               ;;
3595           esac
3596         done
3597       fi
3598     fi
3599     # Check if we have binutils support for relocations types needed by -fpic
3600     gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
3601     [
3602         .text
3603         ldr     x0, [[x2, #:gotpage_lo15:globalsym]]
3604     ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
3605         [Define if your assembler supports relocs needed by -fpic.])])
3606     # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
3607     AC_ARG_ENABLE(fix-cortex-a53-835769,
3608     [
3609 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
3610         [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3611 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
3612         [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
3613     ],
3614       [
3615         case $enableval in
3616           yes)
3617             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
3618             ;;
3619           no)
3620             ;;
3621           *)
3622             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
3623   Valid choices are 'yes' and 'no'.])
3624             ;;
3626         esac
3627       ],
3628     [])
3629     # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
3630     AC_ARG_ENABLE(fix-cortex-a53-843419,
3631     [
3632 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
3633         [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3634 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
3635         [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
3636     ],
3637       [
3638         case $enableval in
3639           yes)
3640             tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
3641             ;;
3642           no)
3643             ;;
3644           *)
3645             AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
3646   Valid choices are 'yes' and 'no'.])
3647             ;;
3649         esac
3650       ],
3651     [])
3652     ;;
3654   # All TARGET_ABI_OSF targets.
3655   alpha*-*-linux* | alpha*-*-*bsd*)
3656     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3657         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3658 [       .set nomacro
3659         .text
3660         extbl   $3, $2, $3      !lituse_bytoff!1
3661         ldq     $2, a($29)      !literal!1
3662         ldq     $4, b($29)      !literal!2
3663         ldq_u   $3, 0($2)       !lituse_base!1
3664         ldq     $27, f($29)     !literal!5
3665         jsr     $26, ($27), f   !lituse_jsr!5
3666         ldah    $29, 0($26)     !gpdisp!3
3667         lda     $0, c($29)      !gprel
3668         ldah    $1, d($29)      !gprelhigh
3669         lda     $1, d($1)       !gprellow
3670         lda     $29, 0($29)     !gpdisp!3],,
3671     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3672   [Define if your assembler supports explicit relocations.])])
3673     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3674         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3675 [       .set nomacro
3676         .text
3677         ldq     $27, a($29)     !literal!1
3678         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3679     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3680   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3681     ;;
3683   avr-*-*)
3684     gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
3685       [--mlink-relax], [.text],,
3686       [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
3687                 [Define if your avr assembler supports --mlink-relax option.])])
3689     gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
3690       [-mrmw], [.text],,
3691       [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
3692                 [Define if your avr assembler supports -mrmw option.])])
3693     ;;
3695   cris-*-*)
3696     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3697       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3698       [-no-mul-bug-abort], [.text],,
3699       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3700                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3701     ;;
3703   sparc*-*-*)
3704     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3705       [.register %g2, #scratch],,
3706       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3707                 [Define if your assembler supports .register.])])
3709     gcc_GAS_CHECK_FEATURE([@%:@nobits], gcc_cv_as_sparc_nobits,,,
3710       [.section "nobits",#alloc,#write,#nobits
3711        .section "progbits",#alloc,#write,#progbits])
3712     AC_DEFINE_UNQUOTED(HAVE_AS_SPARC_NOBITS,
3713       [`if test $gcc_cv_as_sparc_nobits = yes; then echo 1; else echo 0; fi`],
3714       [Define to 1 if your assembler supports #nobits, 0 otherwise.])
3716     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3717       [-relax], [.text],,
3718       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3719                 [Define if your assembler supports -relax option.])])
3721     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3722       gcc_cv_as_sparc_gotdata_op,,
3723       [-K PIC],
3724 [.text
3725 .align 4
3726 foo:
3727         nop
3728 bar:
3729         sethi %gdop_hix22(foo), %g1
3730         xor    %g1, %gdop_lox10(foo), %g1
3731         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3732       [if test x$gcc_cv_ld != x \
3733        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3734          if test x$gcc_cv_objdump != x; then
3735            if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3736               | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3737                gcc_cv_as_sparc_gotdata_op=no
3738            else
3739                gcc_cv_as_sparc_gotdata_op=yes
3740            fi
3741          fi
3742        fi
3743        rm -f conftest],
3744       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3745                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3747     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3748       gcc_cv_as_sparc_ua_pcrel,,
3749       [-K PIC],
3750 [.text
3751 foo:
3752         nop
3753 .data
3754 .align 4
3755 .byte 0
3756 .uaword %r_disp32(foo)],
3757       [if test x$gcc_cv_ld != x \
3758        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3759          gcc_cv_as_sparc_ua_pcrel=yes
3760        fi
3761        rm -f conftest],
3762       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3763                 [Define if your assembler and linker support unaligned PC relative relocs.])
3765       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3766         gcc_cv_as_sparc_ua_pcrel_hidden,,
3767         [-K PIC],
3768 [.data
3769 .align 4
3770 .byte 0x31
3771 .uaword %r_disp32(foo)
3772 .byte 0x32, 0x33, 0x34
3773 .global foo
3774 .hidden foo
3775 foo:
3776 .skip 4],
3777         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3778          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3779          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3780             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3781             if $gcc_cv_objdump -R conftest 2> /dev/null \
3782                | grep 'DISP32' > /dev/null 2>&1; then
3783                 :
3784             else
3785                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3786             fi
3787          fi
3788          rm -f conftest],
3789          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3790                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3791     ]) # unaligned pcrel relocs
3793     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3794       gcc_cv_as_sparc_offsetable_lo10,,
3795       [-xarch=v9],
3796 [.text
3797         or %g1, %lo(ab) + 12, %g1
3798         or %g1, %lo(ab + 12), %g1],
3799       [if test x$gcc_cv_objdump != x \
3800        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3801           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3802          gcc_cv_as_sparc_offsetable_lo10=yes
3803        fi],
3804        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3805                  [Define if your assembler supports offsetable %lo().])])
3807     gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3808       gcc_cv_as_sparc_fmaf,,
3809       [-xarch=v9d],
3810       [.text
3811        .register %g2, #scratch
3812        .register %g3, #scratch
3813        .align 4
3814        fmaddd %f0, %f2, %f4, %f6
3815        addxccc %g1, %g2, %g3
3816        fsrl32 %f2, %f4, %f8
3817        fnaddd %f10, %f12, %f14],,
3818       [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3819                 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3821     gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
3822       gcc_cv_as_sparc_sparc4,,
3823       [-xarch=sparc4],
3824       [.text
3825        .register %g2, #scratch
3826        .register %g3, #scratch
3827        .align 4
3828        cxbe %g2, %g3, 1f
3829 1:     cwbneg %g2, %g3, 1f
3830 1:     sha1
3831        md5
3832        aes_kexpand0 %f4, %f6, %f8
3833        des_round %f38, %f40, %f42, %f44
3834        camellia_f %f54, %f56, %f58, %f60
3835        kasumi_fi_xor %f46, %f48, %f50, %f52],,
3836       [AC_DEFINE(HAVE_AS_SPARC4, 1,
3837                 [Define if your assembler supports SPARC4 instructions.])])
3839     gcc_GAS_CHECK_FEATURE([LEON instructions],
3840       gcc_cv_as_sparc_leon,,
3841       [-Aleon],
3842       [.text
3843        .register %g2, #scratch
3844        .register %g3, #scratch
3845        .align 4
3846        smac %g2, %g3, %g1
3847        umac %g2, %g3, %g1
3848        casa [[%g2]] 0xb, %g3, %g1],,
3849       [AC_DEFINE(HAVE_AS_LEON, 1,
3850                 [Define if your assembler supports LEON instructions.])])
3851     ;;
3853 changequote(,)dnl
3854   i[34567]86-*-* | x86_64-*-*)
3855 changequote([,])dnl
3856     case $target_os in
3857       cygwin*)
3858         # Full C++ conformance when using a shared libstdc++-v3 requires some
3859         # support from the Cygwin DLL, which in more recent versions exports
3860         # wrappers to aid in interposing and redirecting operators new, delete,
3861         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3862         # are configuring for a version of Cygwin that exports the wrappers.
3863         if test x$host = x$target && test x$host_cpu = xi686; then
3864           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3865         else
3866           # Can't check presence of libc functions during cross-compile, so
3867           # we just have to assume we're building for an up-to-date target.
3868           gcc_ac_cygwin_dll_wrappers=yes
3869         fi
3870         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3871           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3872           [Define if you want to generate code by default that assumes that the
3873            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3874     esac
3875     case $target_os in
3876       cygwin* | pe | mingw32* | interix*)
3877         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3878         # definition is used unconditionally to initialise the default state of
3879         # the target option variable that governs usage of the feature.
3880         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3881          [2,19,52],,[.comm foo,1,32])
3882         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3883           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3884           [Define if your assembler supports specifying the alignment
3885            of objects allocated using the GAS .comm command.])
3886         # Used for DWARF 2 in PE
3887         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3888           gcc_cv_as_ix86_pe_secrel32,
3889           [2,15,91],,
3890 [.text
3891 foo:    nop
3892 .data
3893         .secrel32 foo],
3894           [if test x$gcc_cv_ld != x \
3895            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3896              gcc_cv_as_ix86_pe_secrel32=yes
3897            fi
3898            rm -f conftest],
3899           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3900             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3901         # Test if the assembler supports the extended form of the .section
3902         # directive that specifies section alignment.  LTO support uses this,
3903         # but normally only after installation, so we warn but don't fail the
3904         # configure if LTO is enabled but the assembler does not support it.
3905         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3906           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3907         if test x$gcc_cv_as_section_has_align != xyes; then
3908           case ",$enable_languages," in
3909             *,lto,*)
3910               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3911               ;;
3912           esac
3913         fi
3914         ;;
3915     esac
3917     # Test if the assembler supports the section flag 'e' for specifying
3918     # an excluded section.
3919     gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3920       [2,22,51], [--fatal-warnings],
3921 [.section foo1,"e"
3922 .byte 0,0,0,0])
3923     AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3924       [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3925       [Define if your assembler supports specifying the section flag e.])
3927     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3928        gcc_cv_as_ix86_filds,,,
3929        [filds (%ebp); fists (%ebp)],,
3930        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3931          [Define if your assembler uses filds and fists mnemonics.])])
3933     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3934        gcc_cv_as_ix86_fildq,,,
3935        [fildq (%ebp); fistpq (%ebp)],,
3936        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3937          [Define if your assembler uses fildq and fistq mnemonics.])])
3939     gcc_GAS_CHECK_FEATURE([cmov syntax],
3940       gcc_cv_as_ix86_cmov_sun_syntax,,,
3941       [cmovl.l %edx, %eax],,
3942       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3943         [Define if your assembler supports the Sun syntax for cmov.])])
3945     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3946       gcc_cv_as_ix86_ffreep,,,
3947       [ffreep %st(1)],,
3948       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3949         [Define if your assembler supports the ffreep mnemonic.])])
3951     gcc_GAS_CHECK_FEATURE([.quad directive],
3952       gcc_cv_as_ix86_quad,,,
3953       [.quad 0],,
3954       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3955         [Define if your assembler supports the .quad directive.])])
3957     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3958       gcc_cv_as_ix86_sahf,,,
3959       [.code64
3960        sahf],,
3961       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3962         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3964     gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
3965       gcc_cv_as_ix86_interunit_movq,,,
3966       [.code64
3967        movq %mm0, %rax
3968        movq %rax, %xmm0])
3969     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
3970       [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
3971       [Define if your assembler supports interunit movq mnemonic.])
3973     gcc_GAS_CHECK_FEATURE([hle prefixes],
3974       gcc_cv_as_ix86_hle,,,
3975       [lock xacquire cmpxchg %esi, (%ecx)],,
3976       [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
3977         [Define if your assembler supports HLE prefixes.])])
3979     gcc_GAS_CHECK_FEATURE([swap suffix],
3980       gcc_cv_as_ix86_swap,,,
3981       [movl.s %esp, %ebp],,
3982       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3983         [Define if your assembler supports the swap suffix.])])
3985     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3986       gcc_cv_as_ix86_diff_sect_delta,,,
3987       [.section .rodata
3988 .L1:
3989         .long .L2-.L1
3990         .long .L3-.L1
3991         .text
3992 .L3:    nop
3993 .L2:    nop],,
3994       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3995         [Define if your assembler supports the subtraction of symbols in different sections.])])
3997     # These two are used unconditionally by i386.[ch]; it is to be defined
3998     # to 1 if the feature is present, 0 otherwise.
3999     as_ix86_gotoff_in_data_opt=
4000     if test x$gas = xyes; then
4001       as_ix86_gotoff_in_data_opt="--32"
4002     fi
4003     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4004       gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4005       [$as_ix86_gotoff_in_data_opt],
4006 [       .text
4007 .L0:
4008         nop
4009         .data
4010         .long .L0@GOTOFF])
4011     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4012       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4013       [Define true if the assembler supports '.long foo@GOTOFF'.])
4015     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4016         gcc_cv_as_ix86_rep_lock_prefix,,,
4017         [rep movsl
4018          rep ret
4019          rep nop
4020          rep bsf %ecx, %eax
4021          rep bsr %ecx, %eax
4022          lock addl %edi, (%eax,%esi)
4023          lock orl $0, (%esp)],,
4024         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4025           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4027     gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4028         gcc_cv_as_ix86_ud2,,,
4029         [ud2],,
4030       [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4031         [Define if your assembler supports the 'ud2' mnemonic.])])
4033     gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4034         gcc_cv_as_ix86_tlsgdplt,,,
4035         [call    tls_gd@tlsgdplt],
4036         [if test x$gcc_cv_ld != x \
4037          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4038            gcc_cv_as_ix86_tlsgdplt=yes
4039          fi
4040          rm -f conftest],
4041       [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4042         [Define if your assembler and linker support @tlsgdplt.])])
4044     conftest_s='
4045         .section .tdata,"aw'$tls_section_flag'",@progbits
4046 tls_ld:
4047         .section .text,"ax",@progbits
4048          call    tls_ld@tlsldmplt'
4049     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4050         gcc_cv_as_ix86_tlsldmplt,,,
4051         [$conftest_s],
4052         [if test x$gcc_cv_ld != x \
4053          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4054            gcc_cv_as_ix86_tlsldmplt=yes
4055          fi
4056          rm -f conftest])
4057     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4058       [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4059       [Define to 1 if your assembler and linker support @tlsldmplt.])
4061     # Enforce 32-bit output with gas and gld.
4062     if test x$gas = xyes; then
4063       as_ix86_tls_ldm_opt="--32"
4064     fi
4065     if echo "$ld_ver" | grep GNU > /dev/null; then
4066       if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4067         ld_ix86_tls_ldm_opt="-melf_i386_sol2"
4068       else
4069         ld_ix86_tls_ldm_opt="-melf_i386"
4070       fi
4071     fi
4072     conftest_s='
4073         .section .text,"ax",@progbits
4074         .globl  _start
4075         .type   _start, @function
4076 _start:      
4077         leal    value@tlsldm(%ebx), %eax
4078         call    ___tls_get_addr@plt
4080         .section .tdata,"aw'$tls_section_flag'",@progbits
4081         .type   value, @object
4082 value:'
4083     gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4084         gcc_cv_as_ix86_tlsldm,,
4085         [$as_ix86_tls_ldm_opt],
4086         [$conftest_s],
4087         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4088             && $gcc_cv_ld $ld_ix86_tls_ldm_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4089            if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4090               || dis conftest 2>/dev/null | grep nop > /dev/null; then
4091              gcc_cv_as_ix86_tlsldm=yes
4092            fi
4093          fi
4094          rm -f conftest])
4095     AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4096       [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4097       [Define to 1 if your assembler and linker support @tlsldm.])
4099     ;;
4101   ia64*-*-*)
4102     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4103         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4104 [       .text
4105         addl r15 = @ltoffx(x#), gp
4106         ;;
4107         ld8.mov r16 = [[r15]], x#],,
4108     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4109           [Define if your assembler supports ltoffx and ldxmov relocations.])])
4111     ;;
4113   powerpc*-*-*)
4114     case $target in
4115       *-*-aix*) conftest_s='    .machine "pwr5"
4116         .csect .text[[PR]]
4117         mfcr 3,128';;
4118       *-*-darwin*)
4119         gcc_GAS_CHECK_FEATURE([.machine directive support],
4120           gcc_cv_as_machine_directive,,,
4121           [     .machine ppc7400])
4122         if test x$gcc_cv_as_machine_directive != xyes; then
4123           echo "*** This target requires an assembler supporting \".machine\"" >&2
4124           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4125           test x$build = x$target && exit 1
4126         fi
4127         conftest_s='    .text
4128         mfcr r3,128';;
4129       *) conftest_s='   .machine power4
4130         .text
4131         mfcr 3,128';;
4132     esac
4134     gcc_GAS_CHECK_FEATURE([mfcr field support],
4135       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4136       [$conftest_s],,
4137       [AC_DEFINE(HAVE_AS_MFCRF, 1,
4138           [Define if your assembler supports mfcr field.])])
4140     case $target in
4141       *-*-aix*) conftest_s='    .machine "pwr5"
4142         .csect .text[[PR]]
4143         popcntb 3,3';;
4144       *) conftest_s='   .machine power5
4145         .text
4146         popcntb 3,3';;
4147     esac
4149     gcc_GAS_CHECK_FEATURE([popcntb support],
4150       gcc_cv_as_powerpc_popcntb, [2,17,0],,
4151       [$conftest_s],,
4152       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
4153           [Define if your assembler supports popcntb field.])])
4155     case $target in
4156       *-*-aix*) conftest_s='    .machine "pwr5x"
4157         .csect .text[[PR]]
4158         frin 1,1';;
4159       *) conftest_s='   .machine power5
4160         .text
4161         frin 1,1';;
4162     esac
4164     gcc_GAS_CHECK_FEATURE([fp round support],
4165       gcc_cv_as_powerpc_fprnd, [2,17,0],,
4166       [$conftest_s],,
4167       [AC_DEFINE(HAVE_AS_FPRND, 1,
4168           [Define if your assembler supports fprnd.])])
4170     case $target in
4171       *-*-aix*) conftest_s='    .machine "pwr6"
4172         .csect .text[[PR]]
4173         mffgpr 1,3';;
4174       *) conftest_s='   .machine power6
4175         .text
4176         mffgpr 1,3';;
4177     esac
4179     gcc_GAS_CHECK_FEATURE([move fp gpr support],
4180       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
4181       [$conftest_s],,
4182       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
4183           [Define if your assembler supports mffgpr and mftgpr.])])
4185     case $target in
4186       *-*-aix*) conftest_s='    .csect .text[[PR]]
4187 LCF..0:
4188         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4189       *-*-darwin*)
4190         conftest_s='    .text
4191 LCF0:
4192         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4193       *) conftest_s='   .text
4194 .LCF0:
4195         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4196     esac
4198     gcc_GAS_CHECK_FEATURE([rel16 relocs],
4199       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4200       [$conftest_s],,
4201       [AC_DEFINE(HAVE_AS_REL16, 1,
4202           [Define if your assembler supports R_PPC_REL16 relocs.])])
4204     case $target in
4205       *-*-aix*) conftest_s='    .machine "pwr6"
4206         .csect .text[[PR]]
4207         cmpb 3,4,5';;
4208       *) conftest_s='   .machine power6
4209         .text
4210         cmpb 3,4,5';;
4211     esac
4213     gcc_GAS_CHECK_FEATURE([compare bytes support],
4214       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
4215       [$conftest_s],,
4216       [AC_DEFINE(HAVE_AS_CMPB, 1,
4217           [Define if your assembler supports cmpb.])])
4219     case $target in
4220       *-*-aix*) conftest_s='    .machine "pwr6"
4221         .csect .text[[PR]]
4222         dadd 1,2,3';;
4223       *) conftest_s='   .machine power6
4224         .text
4225         dadd 1,2,3';;
4226     esac
4228     gcc_GAS_CHECK_FEATURE([decimal float support],
4229       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
4230       [$conftest_s],,
4231       [AC_DEFINE(HAVE_AS_DFP, 1,
4232           [Define if your assembler supports DFP instructions.])])
4234     case $target in
4235       *-*-aix*) conftest_s='    .machine "pwr7"
4236         .csect .text[[PR]]
4237         lxvd2x 1,2,3';;
4238       *) conftest_s='   .machine power7
4239         .text
4240         lxvd2x 1,2,3';;
4241     esac
4243     gcc_GAS_CHECK_FEATURE([vector-scalar support],
4244       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4245       [$conftest_s],,
4246       [AC_DEFINE(HAVE_AS_VSX, 1,
4247           [Define if your assembler supports VSX instructions.])])
4249     case $target in
4250       *-*-aix*) conftest_s='    .machine "pwr7"
4251         .csect .text[[PR]]
4252         popcntd 3,3';;
4253       *) conftest_s='   .machine power7
4254         .text
4255         popcntd 3,3';;
4256     esac
4258     gcc_GAS_CHECK_FEATURE([popcntd support],
4259       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
4260       [$conftest_s],,
4261       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
4262           [Define if your assembler supports POPCNTD instructions.])])
4264     case $target in
4265       *-*-aix*) conftest_s='    .machine "pwr8"
4266         .csect .text[[PR]]';;
4267       *) conftest_s='   .machine power8
4268         .text';;
4269     esac
4271     gcc_GAS_CHECK_FEATURE([power8 support],
4272       gcc_cv_as_powerpc_power8, [2,19,2], -a32,
4273       [$conftest_s],,
4274       [AC_DEFINE(HAVE_AS_POWER8, 1,
4275           [Define if your assembler supports POWER8 instructions.])])
4277     case $target in
4278       *-*-aix*) conftest_s='    .csect .text[[PR]]
4279         lwsync';;
4280       *) conftest_s='   .text
4281         lwsync';;
4282     esac
4284     gcc_GAS_CHECK_FEATURE([lwsync support],
4285       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
4286       [$conftest_s],,
4287       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
4288           [Define if your assembler supports LWSYNC instructions.])])
4290     case $target in
4291       *-*-aix*) conftest_s='    .machine "476"
4292         .csect .text[[PR]]
4293         dci 0';;
4294       *) conftest_s='   .machine "476"
4295         .text
4296         dci 0';;
4297     esac
4299     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
4300       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
4301       [$conftest_s],,
4302       [AC_DEFINE(HAVE_AS_DCI, 1,
4303           [Define if your assembler supports the DCI/ICI instructions.])])
4305     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4306       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4307       [.gnu_attribute 4,1],,
4308       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4309           [Define if your assembler supports .gnu_attribute.])])
4311     gcc_GAS_CHECK_FEATURE([tls marker support],
4312       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
4313       [ bl __tls_get_addr(x@tlsgd)],,
4314       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
4315           [Define if your assembler supports arg info for __tls_get_addr.])])
4317     case $target in
4318       *-*-aix*)
4319         gcc_GAS_CHECK_FEATURE([.ref support],
4320           gcc_cv_as_aix_ref, [2,21,0],,
4321           [     .csect stuff[[rw]]
4322              stuff:
4323                 .long 1
4324                 .extern sym
4325                 .ref sym
4326           ],,
4327           [AC_DEFINE(HAVE_AS_REF, 1,
4328             [Define if your assembler supports .ref])])
4329         ;;
4330     esac
4331     ;;
4333   mips*-*-*)
4334     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4335       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4336 [       lw $4,%gp_rel(foo)($4)],,
4337       [if test x$target_cpu_default = x
4338        then target_cpu_default=MASK_EXPLICIT_RELOCS
4339        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4340        fi])
4341     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4342       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4343       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4344                  [Define if the assembler understands -mno-shared.])])
4346     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4347       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4348       [.gnu_attribute 4,1],,
4349       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4350           [Define if your assembler supports .gnu_attribute.])])
4352     gcc_GAS_CHECK_FEATURE([.module support],
4353       gcc_cv_as_mips_dot_module,,[-32],
4354       [.module mips2
4355        .module fp=xx],,
4356       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4357           [Define if your assembler supports .module.])])
4358     if test x$gcc_cv_as_mips_dot_module = xno \
4359        && test x$with_fp_32 != x; then
4360       AC_MSG_ERROR(
4361         [Requesting --with-fp-32= requires assembler support for .module.])
4362     fi
4364     gcc_GAS_CHECK_FEATURE([.micromips support],
4365       gcc_cv_as_micromips_support,,[--fatal-warnings],
4366       [.set micromips],,
4367       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4368           [Define if your assembler supports the .set micromips directive])])
4370     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4371       gcc_cv_as_mips_dtprelword, [2,18,0],,
4372       [.section .tdata,"awT",@progbits
4374         .word 2
4375         .text
4376         .dtprelword x+0x8000],,
4377       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4378           [Define if your assembler supports .dtprelword.])])
4380     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4381       gcc_cv_as_mips_dspr1_mult,,,
4382 [       .set    mips32r2
4383         .set    nodspr2
4384         .set    dsp
4385         madd    $ac3,$4,$5
4386         maddu   $ac3,$4,$5
4387         msub    $ac3,$4,$5
4388         msubu   $ac3,$4,$5
4389         mult    $ac3,$4,$5
4390         multu   $ac3,$4,$5],,
4391       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4392           [Define if your assembler supports DSPR1 mult.])])
4394     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4395     gcc_cv_as_ld_jalr_reloc=no
4396     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4397       if test $in_tree_ld = yes ; then
4398         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 \
4399            && test $in_tree_ld_is_elf = yes; then
4400           gcc_cv_as_ld_jalr_reloc=yes
4401         fi
4402       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4403         echo '  .ent x' > conftest.s
4404         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4405         echo '  lw $25,%call16(y)($28)' >> conftest.s
4406         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4407         echo '1:        jalr $25' >> conftest.s
4408         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4409         echo '1:        jalr $25' >> conftest.s
4410         echo '  .end x' >> conftest.s
4411         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4412            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4413           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4414              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4415             gcc_cv_as_ld_jalr_reloc=yes
4416           fi
4417         fi
4418         rm -f conftest.*
4419       fi
4420     fi
4421     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4422       if test x$target_cpu_default = x; then
4423         target_cpu_default=MASK_RELAX_PIC_CALLS
4424       else
4425         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4426       fi
4427     fi
4428     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4430     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4431       [gcc_cv_ld_mips_personality_relaxation],
4432       [gcc_cv_ld_mips_personality_relaxation=no
4433        if test $in_tree_ld = yes ; then
4434          if test "$gcc_cv_gld_major_version" -eq 2 \
4435                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4436                  -o "$gcc_cv_gld_major_version" -gt 2; then
4437            gcc_cv_ld_mips_personality_relaxation=yes
4438          fi
4439        elif test x$gcc_cv_as != x \
4440                  -a x$gcc_cv_ld != x \
4441                  -a x$gcc_cv_readelf != x ; then
4442          cat > conftest.s <<EOF
4443         .cfi_startproc
4444         .cfi_personality 0x80,indirect_ptr
4445         .ent test
4446 test:
4447         nop
4448         .end test
4449         .cfi_endproc
4451         .section .data,"aw",@progbits
4452 indirect_ptr:
4453         .dc.a personality
4455          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4456             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4457            if $gcc_cv_readelf -d conftest 2>&1 \
4458               | grep TEXTREL > /dev/null 2>&1; then
4459              :
4460            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4461                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4462              :
4463            else
4464              gcc_cv_ld_mips_personality_relaxation=yes
4465            fi
4466          fi
4467        fi
4468        rm -f conftest.s conftest.o conftest])
4469     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4470             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4471       [Define if your linker can relax absolute .eh_frame personality
4472 pointers into PC-relative form.])
4473     fi
4475     gcc_GAS_CHECK_FEATURE([-mnan= support],
4476       gcc_cv_as_mips_nan,,
4477       [-mnan=2008],,,
4478       [AC_DEFINE(HAVE_AS_NAN, 1,
4479                  [Define if the assembler understands -mnan=.])])
4480     if test x$gcc_cv_as_mips_nan = xno \
4481        && test x$with_nan != x; then
4482       AC_MSG_ERROR(
4483         [Requesting --with-nan= requires assembler support for -mnan=])
4484     fi
4485     ;;
4486     s390*-*-*)
4487     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4488       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4489       [.gnu_attribute 8,1],,
4490       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4491           [Define if your assembler supports .gnu_attribute.])])
4492     ;;
4493 esac
4495 # Mips and HP-UX need the GNU assembler.
4496 # Linux on IA64 might be able to use the Intel assembler.
4498 case "$target" in
4499   mips*-*-* | *-*-hpux* )
4500     if test x$gas_flag = xyes \
4501        || test x"$host" != x"$build" \
4502        || test ! -x "$gcc_cv_as" \
4503        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4504       :
4505     else
4506       echo "*** This configuration requires the GNU assembler" >&2
4507       exit 1
4508     fi
4509     ;;
4510 esac
4512 # ??? Not all targets support dwarf2 debug_line, even within a version
4513 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4514 # info to the output file.  So, as supported targets are added to gas 2.11,
4515 # add some instruction here to (also) show we expect this might work.
4516 # ??? Once 2.11 is released, probably need to add first known working
4517 # version to the per-target configury.
4518 case "$cpu_type" in
4519   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4520   | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4521   | visium | xstormy16 | xtensa)
4522     insn="nop"
4523     ;;
4524   ia64 | s390)
4525     insn="nop 0"
4526     ;;
4527   mmix)
4528     insn="swym 0"
4529     ;;
4530 esac
4531 if test x"$insn" != x; then
4532  conftest_s="\
4533         .file 1 \"conftest.s\"
4534         .loc 1 3 0
4535         $insn"
4536  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4537   gcc_cv_as_dwarf2_debug_line,
4538   [elf,2,11,0],, [$conftest_s],
4539   [if test x$gcc_cv_objdump != x \
4540    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4541       | grep debug_line > /dev/null 2>&1; then
4542      gcc_cv_as_dwarf2_debug_line=yes
4543    fi])
4545 # The .debug_line file table must be in the exact order that
4546 # we specified the files, since these indices are also used
4547 # by DW_AT_decl_file.  Approximate this test by testing if
4548 # the assembler bitches if the same index is assigned twice.
4549  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4550   gcc_cv_as_dwarf2_file_buggy,,,
4551 [       .file 1 "foo.s"
4552         .file 1 "bar.s"])
4554  if test $gcc_cv_as_dwarf2_debug_line = yes \
4555  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4556         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4557   [Define if your assembler supports dwarf2 .file/.loc directives,
4558    and preserves file table indices exactly as given.])
4559  fi
4561  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4562   gcc_cv_as_gdwarf2_flag,
4563   [elf,2,11,0], [--gdwarf2], [$insn],,
4564   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4565 [Define if your assembler supports the --gdwarf2 option.])])
4567  gcc_GAS_CHECK_FEATURE([--gstabs option],
4568   gcc_cv_as_gstabs_flag,
4569   [elf,2,11,0], [--gstabs], [$insn],,
4570   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4571 [Define if your assembler supports the --gstabs option.])])
4573  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4574   gcc_cv_as_debug_prefix_map_flag,
4575   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4576   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4577 [Define if your assembler supports the --debug-prefix-map option.])])
4580 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4581   gcc_cv_as_compress_debug,,[--compress-debug-sections],,
4582   [# gas compiled without zlib cannot compress debug sections and warns
4583    # about it, but still exits successfully.  So check for this, too.
4584    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4585    then
4586      gcc_cv_as_compress_debug=0
4587    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4588    then
4589      gcc_cv_as_compress_debug=1
4590      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4591      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4592    else
4593      gcc_cv_as_compress_debug=0
4594    # FIXME: Future gas versions will support ELF gABI style via
4595    # --compress-debug-sections[=type].
4596    fi])
4597 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4598 [Define to the level of your assembler's compressed debug section support.])
4599 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4600 [Define to the assembler option to enable compressed debug sections.])
4601 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4602 [Define to the assembler option to disable compressed debug sections.])
4604 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4605  ,,
4606 [.lcomm bar,4,16],,
4607 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4608   [Define if your assembler supports .lcomm with an alignment field.])])
4610 if test x$with_sysroot = x && test x$host = x$target \
4611    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4612    && test "$prefix" != "NONE"; then
4613   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4614 [Define to PREFIX/include if cpp should also search that directory.])
4617 # Determine the version of glibc, if any, used on the target.
4618 AC_MSG_CHECKING([for target glibc version])
4619 AC_ARG_WITH([glibc-version],
4620   [AS_HELP_STRING([--with-glibc-version=M.N],
4621     [assume GCC used with glibc version M.N or later])], [
4622 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4623   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4624   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4625 else
4626   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4627 fi], [
4628 glibc_version_major=0
4629 glibc_version_minor=0
4630 [if test -f $target_header_dir/features.h \
4631   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4632   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4633   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4634   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4635 fi]])
4636 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4637 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
4638 [GNU C Library major version number used on the target, or 0.])
4639 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
4640 [GNU C Library minor version number used on the target, or 0.])
4642 AC_ARG_ENABLE(gnu-unique-object,
4643  [AS_HELP_STRING([--enable-gnu-unique-object],
4644    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4645  [case $enable_gnu_unique_object in
4646     yes | no) ;;
4647     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4648 Valid choices are 'yes' and 'no'.]) ;;
4649   esac],
4650  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4651    [elf,2,19,52],,
4652    [.type foo, '$target_type_format_char'gnu_unique_object],,
4653 # We need to unquote above to to use the definition from config.gcc.
4654 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4655    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4656    )])
4657 if test x$enable_gnu_unique_object = xyes; then
4658   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4659    [Define if your assembler supports @gnu_unique_object.])
4662 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4663  [gcc_cv_as_line_zero],
4664  [gcc_cv_as_line_zero=no
4665   if test $in_tree_gas = yes; then
4666     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4667   elif test "x$gcc_cv_as" != x; then
4668     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4669     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4670        test "x`cat conftest.out`" = x
4671     then
4672       gcc_cv_as_line_zero=yes
4673     else
4674       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4675       cat conftest.s >&AS_MESSAGE_LOG_FD
4676       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4677       cat conftest.out >&AS_MESSAGE_LOG_FD
4678     fi
4679     rm -f conftest.o conftest.s conftest.out
4680   fi])
4681 if test "x$gcc_cv_as_line_zero" = xyes; then
4682   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4683 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4686 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4687 gcc_cv_ld_eh_frame_hdr=no
4688 if test $in_tree_ld = yes ; then
4689   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 \
4690      && test $in_tree_ld_is_elf = yes; then
4691     gcc_cv_ld_eh_frame_hdr=yes
4692   fi
4693 elif test x$gcc_cv_ld != x; then
4694   if echo "$ld_ver" | grep GNU > /dev/null; then
4695     # Check if linker supports --eh-frame-hdr option
4696     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4697       gcc_cv_ld_eh_frame_hdr=yes
4698     fi
4699   else
4700     case "$target" in
4701       *-*-solaris2*)
4702         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4703         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4704           gcc_cv_ld_eh_frame_hdr=yes
4705         fi
4706         ;;
4707     esac
4708   fi
4710 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4711 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4712         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4713 [Define if your linker supports .eh_frame_hdr.])
4715 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4717 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4718 gcc_cv_ld_eh_frame_ciev3=no
4719 if test $in_tree_ld = yes ; then
4720   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 \
4721      && test $in_tree_ld_is_elf = yes; then
4722     gcc_cv_ld_eh_frame_ciev3=yes
4723   fi
4724 elif test x$gcc_cv_ld != x; then
4725   if echo "$ld_ver" | grep GNU > /dev/null; then
4726     gcc_cv_ld_eh_frame_ciev3=yes
4727     if test 0"$ld_date" -lt 20040513; then
4728       if test -n "$ld_date"; then
4729         # If there was date string, but was earlier than 2004-05-13, fail
4730         gcc_cv_ld_eh_frame_ciev3=no
4731       elif test "$ld_vers_major" -lt 2; then
4732         gcc_cv_ld_eh_frame_ciev3=no
4733       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4734         gcc_cv_ld_eh_frame_ciev3=no
4735       fi
4736     fi
4737   else
4738     case "$target" in
4739       *-*-solaris2*)
4740         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4741         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4742           gcc_cv_ld_eh_frame_ciev3=yes
4743         fi
4744         ;;
4745     esac
4746   fi
4748 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4749   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4750   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4751 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4753 AC_MSG_CHECKING(linker position independent executable support)
4754 gcc_cv_ld_pie=no
4755 if test $in_tree_ld = yes ; then
4756   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 \
4757      && test $in_tree_ld_is_elf = yes; then
4758     gcc_cv_ld_pie=yes
4759   fi
4760 elif test x$gcc_cv_ld != x; then
4761         # Check if linker supports -pie option
4762         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4763                 gcc_cv_ld_pie=yes
4764         fi
4766 if test x"$gcc_cv_ld_pie" = xyes; then
4767         AC_DEFINE(HAVE_LD_PIE, 1,
4768 [Define if your linker supports -pie option.])
4770 AC_MSG_RESULT($gcc_cv_ld_pie)
4772 AC_MSG_CHECKING(linker PIE support with copy reloc)
4773 gcc_cv_ld_pie_copyreloc=no
4774 if test $gcc_cv_ld_pie = yes ; then
4775   if test $in_tree_ld = yes ; then
4776     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
4777       gcc_cv_ld_pie_copyreloc=yes
4778     fi
4779   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4780     # Check if linker supports -pie option with copy reloc
4781     case "$target" in
4782     i?86-*-linux* | x86_64-*-linux*)
4783       cat > conftest1.s <<EOF
4784         .globl  a_glob
4785         .data
4786         .type   a_glob, @object
4787         .size   a_glob, 4
4788 a_glob:
4789         .long   2
4791       cat > conftest2.s <<EOF
4792         .text
4793         .globl  main
4794         .type   main, @function
4795 main:
4796         movl    %eax, a_glob(%rip)
4797         .size   main, .-main
4798         .globl  ptr
4799         .section        .data.rel,"aw",@progbits
4800         .type   ptr, @object
4801 ptr:
4802         .quad   a_glob
4804       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4805          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
4806          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4807          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
4808         gcc_cv_ld_pie_copyreloc=yes
4809       fi
4810       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
4811       ;;
4812     esac
4813   fi
4815 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
4816   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
4817   [Define 0/1 if your linker supports -pie option with copy reloc.])
4818 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
4820 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4821 gcc_cv_ld_eh_gc_sections=no
4822 if test $in_tree_ld = yes ; then
4823   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 \
4824      && test $in_tree_ld_is_elf = yes; then
4825     gcc_cv_ld_eh_gc_sections=yes
4826   fi
4827 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4828   cat > conftest.s <<EOF
4829         .section        .text
4830 .globl _start
4831         .type _start, @function
4832 _start:
4833         .long foo
4834         .size _start, .-_start
4835         .section        .text.foo,"ax",@progbits
4836         .type foo, @function
4837 foo:
4838         .long 0
4839         .size foo, .-foo
4840         .section        .gcc_except_table.foo,"a",@progbits
4841 .L0:
4842         .long 0
4843         .section        .eh_frame,"a",@progbits
4844         .long .L0
4846   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4847     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4848          | grep "gc-sections option ignored" > /dev/null; then
4849       gcc_cv_ld_eh_gc_sections=no
4850     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4851          | grep gcc_except_table > /dev/null; then
4852       gcc_cv_ld_eh_gc_sections=yes
4853       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4854       if test x$gcc_cv_as_comdat_group != xyes; then
4855         gcc_cv_ld_eh_gc_sections=no
4856         cat > conftest.s <<EOF
4857         .section        .text
4858 .globl _start
4859         .type _start, @function
4860 _start:
4861         .long foo
4862         .size _start, .-_start
4863         .section        .gnu.linkonce.t.foo,"ax",@progbits
4864         .type foo, @function
4865 foo:
4866         .long 0
4867         .size foo, .-foo
4868         .section        .gcc_except_table.foo,"a",@progbits
4869 .L0:
4870         .long 0
4871         .section        .eh_frame,"a",@progbits
4872         .long .L0
4874         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4875           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4876                | grep "gc-sections option ignored" > /dev/null; then
4877             gcc_cv_ld_eh_gc_sections=no
4878           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4879                | grep gcc_except_table > /dev/null; then
4880             gcc_cv_ld_eh_gc_sections=yes
4881           fi
4882         fi
4883       fi
4884     fi
4885   fi
4886   rm -f conftest.s conftest.o conftest
4888 case "$target" in
4889   hppa*-*-linux*)
4890     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4891     gcc_cv_ld_eh_gc_sections=no
4892     ;;
4893 esac
4894 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4895         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4896   [Define if your linker supports garbage collection of
4897    sections in presence of EH frames.])
4899 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4901 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4902 gcc_cv_ld_eh_gc_sections_bug=no
4903 if test $in_tree_ld = yes ; then
4904   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 \
4905      && test $in_tree_ld_is_elf = yes; then
4906     gcc_cv_ld_eh_gc_sections_bug=yes
4907   fi
4908 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
4909   gcc_cv_ld_eh_gc_sections_bug=yes
4910   cat > conftest.s <<EOF
4911         .section        .text
4912 .globl _start
4913         .type _start, @function
4914 _start:
4915         .long foo
4916         .size _start, .-_start
4917         .section        .text.startup.foo,"ax",@progbits
4918         .type foo, @function
4919 foo:
4920         .long 0
4921         .size foo, .-foo
4922         .section        .gcc_except_table.foo,"a",@progbits
4923 .L0:
4924         .long 0
4925         .section        .eh_frame,"a",@progbits
4926         .long .L0
4928   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4929     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4930          | grep "gc-sections option ignored" > /dev/null; then
4931       :
4932     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4933          | grep gcc_except_table > /dev/null; then
4934       gcc_cv_ld_eh_gc_sections_bug=no
4935     fi
4936   fi
4937   rm -f conftest.s conftest.o conftest
4939 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4940         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4941   [Define if your linker has buggy garbage collection of
4942    sections support when .text.startup.foo like sections are used.])
4944 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4946 AC_MSG_CHECKING(linker for compressed debug sections)
4947 # gold/gld support compressed debug sections since binutils 2.19/2.21
4948 if test $in_tree_ld = yes ; then
4949   gcc_cv_ld_compress_debug=0
4950   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 \
4951      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
4952     gcc_cv_ld_compress_debug=2
4953     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
4954   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 \
4955      && test $in_tree_ld_is_elf = yes; then
4956     gcc_cv_ld_compress_debug=1
4957   fi
4958 elif echo "$ld_ver" | grep GNU > /dev/null; then
4959   gcc_cv_ld_compress_debug=1
4960   if test 0"$ld_date" -lt 20050308; then
4961     if test -n "$ld_date"; then
4962       # If there was date string, but was earlier than 2005-03-08, fail
4963       gcc_cv_ld_compress_debug=0
4964     elif test "$ld_vers_major" -lt 2; then
4965       gcc_cv_ld_compress_debug=0
4966     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
4967       gcc_cv_ld_compress_debug=0
4968     fi
4969   fi
4970   if test $ld_is_gold = yes; then
4971     gcc_cv_ld_compress_debug=2
4972     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
4973   fi
4974 else
4975 changequote(,)dnl
4976   case "${target}" in
4977     *-*-solaris2*)
4978       # Introduced in Solaris 11.2.
4979       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
4980         gcc_cv_ld_compress_debug=3
4981         gcc_cv_ld_compress_debug_option="-z compress-sections"
4982       else
4983         gcc_cv_ld_compress_debug=0
4984       fi
4985       ;;
4986     *)
4987       # Assume linkers other than GNU ld don't support compessed debug
4988       # sections.
4989       gcc_cv_ld_compress_debug=0
4990       ;;
4991   esac
4992 changequote([,])dnl
4994 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
4995 [Define to the level of your linker's compressed debug section support.])
4996 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
4997 [Define to the linker option to enable compressed debug sections.])
4998 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5000 # --------
5001 # UNSORTED
5002 # --------
5004 AC_CACHE_CHECK(linker --as-needed support,
5005 gcc_cv_ld_as_needed,
5006 [gcc_cv_ld_as_needed=no
5007 gcc_cv_ld_as_needed_option='--as-needed'
5008 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5009 if test $in_tree_ld = yes ; then
5010   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 \
5011      && test $in_tree_ld_is_elf = yes; then
5012     gcc_cv_ld_as_needed=yes
5013   fi
5014 elif test x$gcc_cv_ld != x; then
5015         # Check if linker supports --as-needed and --no-as-needed options
5016         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
5017                 gcc_cv_ld_as_needed=yes
5018         else
5019           case "$target" in
5020             # Solaris 2 ld always supports -z ignore/-z record.
5021             *-*-solaris2*)
5022               gcc_cv_ld_as_needed=yes
5023               gcc_cv_ld_as_needed_option="-z ignore"
5024               gcc_cv_ld_no_as_needed_option="-z record"
5025               ;;
5026           esac
5027         fi
5029 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5030 # dl_iterate_phdr, i.e. since Solaris 11.
5031 case "$target" in
5032   *-*-solaris2.1[[1-9]]*)
5033     case "$target" in
5034     i?86-*-* | x86_64-*-*)
5035       if echo "$ld_ver" | grep GNU > /dev/null; then
5036         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5037         gcc_cv_ld_as_needed=no
5038       fi
5039       ;;
5040     esac
5041     ;;
5042   *-*-solaris2*)
5043     gcc_cv_ld_as_needed=no
5044     ;;
5045 esac
5047 if test x"$gcc_cv_ld_as_needed" = xyes; then
5048         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5049 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5050         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5051 [Define to the linker option to ignore unused dependencies.])
5052         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5053 [Define to the linker option to keep unused dependencies.])
5056 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5057 saved_LDFLAGS="$LDFLAGS"
5058 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5059   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5060   AC_LINK_IFELSE([int main(void) {return 0;}],
5061     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5062 done
5063 LDFLAGS="$saved_LDFLAGS"
5064 if test "x$gcc_cv_ld_clearcap" = xyes; then
5065   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5066 [Define if the linker supports clearing hardware capabilities via mapfile.])
5067   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5069 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5071 case "$target:$tm_file" in
5072   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5073   case "$target" in
5074      *le-*-linux*)
5075      emul_name="-melf64lppc"
5076       ;;
5077      *-*-linux*)
5078      emul_name="-melf64ppc"
5079       ;;
5080      *-*-freebsd*)
5081      emul_name="-melf64ppc_fbsd"
5082       ;;
5083   esac
5084     AC_CACHE_CHECK(linker support for omitting dot symbols,
5085     gcc_cv_ld_no_dot_syms,
5086     [gcc_cv_ld_no_dot_syms=no
5087     if test x"$ld_is_gold" = xyes; then
5088       gcc_cv_ld_no_dot_syms=yes
5089     elif test $in_tree_ld = yes ; then
5090       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
5091         gcc_cv_ld_no_dot_syms=yes
5092       fi
5093     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5094       cat > conftest1.s <<EOF
5095         .text
5096         bl .foo
5098       cat > conftest2.s <<EOF
5099         .section ".opd","aw"
5100         .align 3
5101         .globl foo
5102         .type foo,@function
5103 foo:
5104         .quad .LEfoo,.TOC.@tocbase,0
5105         .text
5106 .LEfoo:
5107         blr
5108         .size foo,.-.LEfoo
5110       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5111          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5112          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5113         gcc_cv_ld_no_dot_syms=yes
5114       fi
5115       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5116     fi
5117     ])
5118     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5119       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5120     [Define if your PowerPC64 linker only needs function descriptor syms.])
5121     fi
5123     AC_CACHE_CHECK(linker large toc support,
5124     gcc_cv_ld_large_toc,
5125     [gcc_cv_ld_large_toc=no
5126     if test x"$ld_is_gold" = xyes; then
5127       gcc_cv_ld_large_toc=yes
5128     elif test $in_tree_ld = yes ; then
5129       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
5130         gcc_cv_ld_large_toc=yes
5131       fi
5132     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5133       cat > conftest.s <<EOF
5134         .section ".tbss","awT",@nobits
5135         .align 3
5136 ie0:    .space 8
5137         .global _start
5138         .text
5139 _start:
5140         addis 9,13,ie0@got@tprel@ha
5141         ld 9,ie0@got@tprel@l(9)
5143       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5144          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5145         gcc_cv_ld_large_toc=yes
5146       fi
5147       rm -f conftest conftest.o conftest.s
5148     fi
5149     ])
5150     if test x"$gcc_cv_ld_large_toc" = xyes; then
5151       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5152     [Define if your PowerPC64 linker supports a large TOC.])
5153     fi
5155     AC_CACHE_CHECK(linker toc pointer alignment,
5156     gcc_cv_ld_toc_align,
5157     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5158       cat > conftest.s <<EOF
5159         .global _start
5160         .text
5161 _start:
5162         addis 9,2,x@got@ha
5163         .section .data.rel.ro,"aw",@progbits
5164         .p2align 16
5165         .space 32768
5166 x:      .quad .TOC.
5168       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5169          && $gcc_cv_ld $emul_name -o conftest conftest.o > /dev/null 2>&1; then
5170         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)) }'`
5171       fi
5172       rm -f conftest conftest.o conftest.s
5173     fi
5174     ])
5175     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5176       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5177     [Define to .TOC. alignment forced by your linker.])
5178     fi
5179     ;;
5180 esac
5182 case "$target" in
5183   *-*-aix*)
5184     AC_CACHE_CHECK(linker large toc support,
5185     gcc_cv_ld_large_toc,
5186     [gcc_cv_ld_large_toc=no
5187     if test x$gcc_cv_as != x ; then
5188       cat > conftest.s <<EOF
5189         .toc
5190 LC..1:
5191         .tc a[[TC]],a[[RW]]
5192         .extern a[[RW]]
5193         .csect .text[[PR]]
5194 .largetoctest:
5195         addis 9,LC..1@u(2)
5196         ld 3,LC..1@l(9)
5198       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5199         gcc_cv_ld_large_toc=yes
5200       fi
5201       rm -f conftest conftest.o conftest.s
5202     fi
5203     ])
5204     if test x"$gcc_cv_ld_large_toc" = xyes; then
5205       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5206     [Define if your PowerPC64 linker supports a large TOC.])
5207     fi
5208     ;;
5209 esac
5211 AC_CACHE_CHECK(linker --build-id support,
5212   gcc_cv_ld_buildid,
5213   [gcc_cv_ld_buildid=no
5214   if test $in_tree_ld = yes ; then
5215     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5216        "$gcc_cv_gld_minor_version" -ge 18 -o \
5217        "$gcc_cv_gld_major_version" -gt 2 \
5218        && test $in_tree_ld_is_elf = yes; then
5219       gcc_cv_ld_buildid=yes
5220     fi
5221   elif test x$gcc_cv_ld != x; then
5222     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
5223       gcc_cv_ld_buildid=yes
5224     fi
5225   fi])
5226 if test x"$gcc_cv_ld_buildid" = xyes; then
5227   AC_DEFINE(HAVE_LD_BUILDID, 1,
5228   [Define if your linker supports --build-id.])
5231 AC_ARG_ENABLE(linker-build-id,
5232 [AS_HELP_STRING([--enable-linker-build-id],
5233                 [compiler will always pass --build-id to linker])],
5235 enable_linker_build_id=no)
5237 if test x"$enable_linker_build_id" = xyes; then
5238   if test x"$gcc_cv_ld_buildid" = xyes; then
5239     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5240     [Define if gcc should always pass --build-id to linker.])
5241   else
5242     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5243   fi
5246 # In binutils 2.21, GNU ld gained support for new emulations fully
5247 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5248 AC_CACHE_CHECK(linker *_sol2 emulation support,
5249   gcc_cv_ld_sol2_emulation,
5250   [gcc_cv_ld_sol2_emulation=no
5251   if test $in_tree_ld = yes ; then
5252     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5253        "$gcc_cv_gld_minor_version" -ge 21 -o \
5254        "$gcc_cv_gld_major_version" -gt 2 \
5255        && test $in_tree_ld_is_elf = yes; then
5256       gcc_cv_ld_sol2_emulation=yes
5257     fi
5258   elif test x$gcc_cv_ld != x; then
5259     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5260        grep _sol2 > /dev/null; then
5261       gcc_cv_ld_sol2_emulation=yes
5262     fi
5263   fi])
5264 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5265   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5266   [Define if your linker supports the *_sol2 emulations.])
5269 AC_CACHE_CHECK(linker --sysroot support,
5270   gcc_cv_ld_sysroot,
5271   [gcc_cv_ld_sysroot=no
5272   if test $in_tree_ld = yes ; then
5273       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
5274         gcc_cv_ld_sysroot=yes
5275       fi
5276   elif test x$gcc_cv_ld != x; then 
5277     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5278       gcc_cv_ld_sysroot=yes
5279     fi
5280   fi])
5281 if test x"$gcc_cv_ld_sysroot" = xyes; then
5282   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5283   [Define if your linker supports --sysroot.])
5284 fi        
5286 # Test for stack protector support in target C library.
5287 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5288       gcc_cv_libc_provides_ssp,
5289       [gcc_cv_libc_provides_ssp=no
5290     case "$target" in
5291        *-*-musl*)
5292          # All versions of musl provide stack protector
5293          gcc_cv_libc_provides_ssp=yes;;
5294        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5295       # glibc 2.4 and later provides __stack_chk_fail and
5296       # either __stack_chk_guard, or TLS access to stack guard canary.
5297       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5298       [if test -f $target_header_dir/features.h \
5299          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5300             $target_header_dir/features.h > /dev/null; then
5301         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5302              $target_header_dir/features.h > /dev/null && \
5303              test -f $target_header_dir/bits/uClibc_config.h && \
5304              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5305              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5306           gcc_cv_libc_provides_ssp=yes
5307         fi
5308       # all versions of Bionic support stack protector
5309       elif test -f $target_header_dir/sys/cdefs.h \
5310         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5311            $target_header_dir/sys/cdefs.h > /dev/null; then
5312          gcc_cv_libc_provides_ssp=yes
5313       fi]])
5314         ;;
5315        *-*-gnu*)
5316          # Avoid complicated tests (see
5317          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5318          # simply assert that glibc does provide this, which is true for all
5319          # realistically usable GNU/Hurd configurations.
5320          # All supported versions of musl provide it as well
5321          gcc_cv_libc_provides_ssp=yes;;
5322        *-*-darwin* | *-*-freebsd*)
5323          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5324            [echo "no __stack_chk_fail on this target"])
5325         ;;
5326   *) gcc_cv_libc_provides_ssp=no ;;
5327     esac])
5329 if test x$gcc_cv_libc_provides_ssp = xyes; then
5330   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5331             [Define if your target C library provides stack protector support])
5334 # Check whether --enable-default-ssp was given.
5335 AC_ARG_ENABLE(default-ssp,
5336 [AS_HELP_STRING([--enable-default-ssp],
5337   [enable Stack Smashing Protection as default])],[
5338 if test x$gcc_cv_libc_provides_ssp = xyes; then
5339   case "$target" in
5340     ia64*-*-*) enable_default_ssp=no ;;
5341     *) enable_default_ssp=$enableval ;;
5342   esac
5343 else
5344   enable_default_ssp=no
5345 fi],
5346 enable_default_ssp=no)
5347 if test x$enable_default_ssp == xyes ; then
5348   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5349       [Define if your target supports default stack protector and it is enabled.])
5351 AC_SUBST([enable_default_ssp])
5353 # Test for <sys/sdt.h> on the target.
5354 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5355 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5356 have_sys_sdt_h=no
5357 if test -f $target_header_dir/sys/sdt.h; then
5358   have_sys_sdt_h=yes
5359   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5360             [Define if your target C library provides sys/sdt.h])
5362 AC_MSG_RESULT($have_sys_sdt_h)
5364 # Check if TFmode long double should be used by default or not.
5365 # Some glibc targets used DFmode long double, but with glibc 2.4
5366 # and later they can use TFmode.
5367 case "$target" in
5368   powerpc*-*-linux* | \
5369   sparc*-*-linux* | \
5370   s390*-*-linux* | \
5371   alpha*-*-linux*)
5372     AC_ARG_WITH(long-double-128,
5373       [AS_HELP_STRING([--with-long-double-128],
5374                       [use 128-bit long double by default])],
5375       gcc_cv_target_ldbl128="$with_long_double_128",
5376       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5377       [gcc_cv_target_ldbl128=no
5378       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5379         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5380       && gcc_cv_target_ldbl128=yes
5381       ]])])
5382     ;;
5383 esac
5384 if test x$gcc_cv_target_ldbl128 = xyes; then
5385   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5386             [Define if TFmode long double should be the default])
5389 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5390 gcc_cv_target_dl_iterate_phdr=unknown
5391 case "$target" in
5392   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5393   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5394   # libdl there, both complicating its use and breaking compatibility
5395   # between Solaris 10 updates.
5396   *-*-solaris2.1[[1-9]]*)
5397     # <link.h> needs both a dl_iterate_phdr declaration and support for
5398     # compilation with largefile support.
5399     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5400       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5401       gcc_cv_target_dl_iterate_phdr=yes
5402     else
5403       gcc_cv_target_dl_iterate_phdr=no
5404     fi
5405     ;;
5406   *-*-dragonfly* | *-*-freebsd*)
5407     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
5408       gcc_cv_target_dl_iterate_phdr=yes
5409     else
5410       gcc_cv_target_dl_iterate_phdr=no
5411     fi
5412     ;;
5413   *-linux-musl*)
5414     gcc_cv_target_dl_iterate_phdr=yes
5415     ;;
5416 esac
5417 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5418 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5419    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5420 [Define if your target C library provides the `dl_iterate_phdr' function.])
5422 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5424 # We no longer support different GC mechanisms.  Emit an error if
5425 # the user configures with --with-gc.
5426 AC_ARG_WITH(gc,
5427 [AS_HELP_STRING([--with-gc={page,zone}],
5428                 [this option is not supported anymore.  It used to choose
5429                  the garbage collection mechanism to use with the compiler])],
5430 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5433 # Libraries to use on the host.  This will normally be set by the top
5434 # level Makefile.  Here we simply capture the value for our Makefile.
5435 if test -z "${HOST_LIBS+set}"; then
5436   HOST_LIBS=
5438 AC_SUBST(HOST_LIBS)
5440 # Use the system's zlib library.
5441 AM_ZLIB
5443 dnl Very limited version of automake's enable-maintainer-mode
5445 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5446   dnl maintainer-mode is disabled by default
5447   AC_ARG_ENABLE(maintainer-mode,
5448 [AS_HELP_STRING([--enable-maintainer-mode],
5449                 [enable make rules and dependencies not useful
5450                  (and sometimes confusing) to the casual installer])],
5451       maintainer_mode=$enableval,
5452       maintainer_mode=no)
5454 AC_MSG_RESULT($maintainer_mode)
5456 if test "$maintainer_mode" = "yes"; then
5457   MAINT=''
5458 else
5459   MAINT='#'
5461 AC_SUBST(MAINT)dnl
5463 dnl Whether to prevent multiple front-ends from linking at the same time
5465 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5466   AC_ARG_ENABLE(link-mutex,
5467 [AS_HELP_STRING([--enable-link-mutex],
5468                 [avoid linking multiple front-ends at once to avoid thrashing
5469                  on the build machine])],
5470       do_link_mutex=$enableval,
5471       do_link_mutex=no)
5472 AC_MSG_RESULT($do_link_mutex)
5474 if test "$do_link_mutex" = "yes"; then
5475    DO_LINK_MUTEX=true
5476 else
5477    DO_LINK_MUTEX=false
5479 AC_SUBST(DO_LINK_MUTEX)
5481 # --------------
5482 # Language hooks
5483 # --------------
5485 # Make empty files to contain the specs and options for each language.
5486 # Then add #include lines to for a compiler that has specs and/or options.
5488 subdirs=
5489 lang_opt_files=
5490 lang_specs_files=
5491 lang_tree_files=
5492 # These (without "all_") are set in each config-lang.in.
5493 # `language' must be a single word so is spelled singularly.
5494 all_languages=
5495 all_compilers=
5496 all_outputs='Makefile'
5497 # List of language makefile fragments.
5498 all_lang_makefrags=
5499 # Additional files for gengtype
5500 all_gtfiles="$target_gtfiles"
5502 # These are the languages that are set in --enable-languages,
5503 # and are available in the GCC tree.
5504 all_selected_languages=
5506 # Add the language fragments.
5507 # Languages are added via two mechanisms.  Some information must be
5508 # recorded in makefile variables, these are defined in config-lang.in.
5509 # We accumulate them and plug them into the main Makefile.
5510 # The other mechanism is a set of hooks for each of the main targets
5511 # like `clean', `install', etc.
5513 language_hooks="Make-hooks"
5515 for lang in ${srcdir}/*/config-lang.in
5517 changequote(,)dnl
5518         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5520         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5521         if test "x$lang_alias" = x
5522         then
5523               echo "$lang doesn't set \$language." 1>&2
5524               exit 1
5525         fi
5526         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5527         subdirs="$subdirs $subdir"
5529         # $gcc_subdir is where the gcc integration files are to be found
5530         # for a language, both for internal compiler purposes (compiler
5531         # sources implementing front-end to GCC tree converters), and for
5532         # build infrastructure purposes (Make-lang.in, etc.)
5533         #
5534         # This will be <subdir> (relative to $srcdir) if a line like 
5535         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5536         # is found in <langdir>/config-lang.in, and will remain <langdir>
5537         # otherwise.
5538         #
5539         # Except for the language alias (fetched above), the regular
5540         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5541         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5542         # only this and the language alias.
5544         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5545         if [ "$gcc_subdir" = "" ]; then
5546            gcc_subdir="$subdir"
5547         fi
5549         case ",$enable_languages," in
5550         *,$lang_alias,*)
5551             all_selected_languages="$all_selected_languages $lang_alias"
5552             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5553                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5554             fi
5555             ;;
5556         esac
5557 changequote([,])dnl
5559         language=
5560         boot_language=
5561         compilers=
5562         outputs=
5563         gtfiles=
5564         subdir_requires=
5565         . ${srcdir}/$gcc_subdir/config-lang.in
5566         if test "x$language" = x
5567         then
5568                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5569                 exit 1
5570         fi
5572         ok=:
5573         case ",$enable_languages," in
5574                 *,$lang_alias,*) ;;
5575                 *)
5576                         for i in $subdir_requires; do
5577                                 test -f "${srcdir}/$i/config-lang.in" && continue
5578                                 ok=false
5579                                 break
5580                         done
5581                 ;;
5582         esac
5583         $ok || continue
5585         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5586         if test -f $srcdir/$gcc_subdir/lang.opt; then
5587             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5588             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5589         fi
5590         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5591             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5592         fi
5593         all_languages="$all_languages $language"
5594         all_compilers="$all_compilers $compilers"
5595         all_outputs="$all_outputs $outputs"
5596         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5597         case ",$enable_languages," in
5598                 *,lto,*)
5599                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5600                     enable_lto=yes
5601                     AC_SUBST(enable_lto)
5602                     ;;
5603                 *) ;;
5604         esac
5605 done
5607 check_languages=
5608 for language in $all_selected_languages
5610         check_languages="$check_languages check-$language"
5611 done
5613 # We link each language in with a set of hooks, reached indirectly via
5614 # lang.${target}.  Only do so for selected languages.
5616 rm -f Make-hooks
5617 touch Make-hooks
5618 target_list="all.cross start.encap rest.encap tags \
5619         install-common install-man install-info install-pdf install-html dvi \
5620         pdf html uninstall info man srcextra srcman srcinfo \
5621         mostlyclean clean distclean maintainer-clean install-plugin"
5623 for t in $target_list
5625         x=
5626         for lang in $all_selected_languages
5627         do
5628                 x="$x $lang.$t"
5629         done
5630         echo "lang.$t: $x" >> Make-hooks
5631 done
5633 # --------
5634 # Option include files
5635 # --------
5637 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5638 option_includes="option-includes.mk"
5639 AC_SUBST_FILE(option_includes)
5641 # --------
5642 # UNSORTED
5643 # --------
5645 # Create .gdbinit.
5647 echo "dir ." > .gdbinit
5648 echo "dir ${srcdir}" >> .gdbinit
5649 if test x$gdb_needs_out_file_path = xyes
5650 then
5651         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5653 if test "x$subdirs" != x; then
5654         for s in $subdirs
5655         do
5656                 echo "dir ${srcdir}/$s" >> .gdbinit
5657         done
5659 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5660 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5662 # Put a breakpoint on __asan_report_error to help with debugging buffer
5663 # overflow.
5664 case "$CFLAGS" in
5665 *-fsanitize=address*)
5666   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5667   ;;
5668 esac
5670 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5671 AC_SUBST(gcc_tooldir)
5672 AC_SUBST(dollar)
5674 # Find a directory in which to install a shared libgcc.
5676 AC_ARG_ENABLE(version-specific-runtime-libs,
5677 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5678                 [specify that runtime libraries should be
5679                  installed in a compiler-specific directory])])
5681 # Substitute configuration variables
5682 AC_SUBST(subdirs)
5683 AC_SUBST(srcdir)
5684 AC_SUBST(all_compilers)
5685 AC_SUBST(all_gtfiles)
5686 AC_SUBST(all_lang_makefrags)
5687 AC_SUBST(all_languages)
5688 AC_SUBST(all_selected_languages)
5689 AC_SUBST(build_exeext)
5690 AC_SUBST(build_install_headers_dir)
5691 AC_SUBST(build_xm_file_list)
5692 AC_SUBST(build_xm_include_list)
5693 AC_SUBST(build_xm_defines)
5694 AC_SUBST(build_file_translate)
5695 AC_SUBST(check_languages)
5696 AC_SUBST(cpp_install_dir)
5697 AC_SUBST(xmake_file)
5698 AC_SUBST(tmake_file)
5699 AC_SUBST(TM_ENDIAN_CONFIG)
5700 AC_SUBST(TM_MULTILIB_CONFIG)
5701 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5702 AC_SUBST(extra_gcc_objs)
5703 AC_SUBST(user_headers_inc_next_pre)
5704 AC_SUBST(user_headers_inc_next_post)
5705 AC_SUBST(extra_headers_list)
5706 AC_SUBST(extra_objs)
5707 AC_SUBST(extra_programs)
5708 AC_SUBST(float_h_file)
5709 AC_SUBST(gcc_config_arguments)
5710 AC_SUBST(gcc_gxx_include_dir)
5711 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5712 AC_SUBST(host_exeext)
5713 AC_SUBST(host_xm_file_list)
5714 AC_SUBST(host_xm_include_list)
5715 AC_SUBST(host_xm_defines)
5716 AC_SUBST(out_host_hook_obj)
5717 AC_SUBST(install)
5718 AC_SUBST(lang_opt_files)
5719 AC_SUBST(lang_specs_files)
5720 AC_SUBST(lang_tree_files)
5721 AC_SUBST(local_prefix)
5722 AC_SUBST(md_file)
5723 AC_SUBST(objc_boehm_gc)
5724 AC_SUBST(out_file)
5725 AC_SUBST(out_object_file)
5726 AC_SUBST(common_out_file)
5727 AC_SUBST(common_out_object_file)
5728 AC_SUBST(tm_file_list)
5729 AC_SUBST(tm_include_list)
5730 AC_SUBST(tm_defines)
5731 AC_SUBST(tm_p_file_list)
5732 AC_SUBST(tm_p_include_list)
5733 AC_SUBST(xm_file_list)
5734 AC_SUBST(xm_include_list)
5735 AC_SUBST(xm_defines)
5736 AC_SUBST(use_gcc_stdint)
5737 AC_SUBST(c_target_objs)
5738 AC_SUBST(cxx_target_objs)
5739 AC_SUBST(fortran_target_objs)
5740 AC_SUBST(target_cpu_default)
5742 AC_SUBST_FILE(language_hooks)
5744 # Echo link setup.
5745 if test x${build} = x${host} ; then
5746   if test x${host} = x${target} ; then
5747     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5748   else
5749     echo "Links are now set up to build a cross-compiler" 1>&2
5750     echo " from ${host} to ${target}." 1>&2
5751   fi
5752 else
5753   if test x${host} = x${target} ; then
5754     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5755     echo " for ${target}." 1>&2
5756   else
5757     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5758     echo " from ${host} to ${target}." 1>&2
5759   fi
5762 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5763 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5765 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5766 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5767 if test "x${ISLLIBS}" != "x" ; then 
5768    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
5771 # Check whether isl_schedule_constraints_compute_schedule is available;
5772 # it's new in ISL-0.13.
5773 # Check whether isl_options_set_schedule_serialize_sccs is available;
5774 # it's new in ISL-0.15.
5775 if test "x${ISLLIBS}" != "x" ; then
5776   saved_CXXFLAGS="$CXXFLAGS"
5777   CXXFLAGS="$CXXFLAGS $ISLINC"
5778   saved_LIBS="$LIBS"
5779   LIBS="$LIBS $ISLLIBS $GMPLIBS"
5781   AC_MSG_CHECKING([Checking for isl_schedule_constraints_compute_schedule])
5782   AC_TRY_LINK([#include <isl/schedule.h>],
5783               [isl_schedule_constraints_compute_schedule (NULL);],
5784               [ac_has_isl_schedule_constraints_compute_schedule=yes],
5785               [ac_has_isl_schedule_constraints_compute_schedule=no])
5786   AC_MSG_RESULT($ac_has_isl_schedule_constraints_compute_schedule)
5788   AC_MSG_CHECKING([Checking for isl_options_set_schedule_serialize_sccs])
5789   AC_TRY_LINK([#include <isl/schedule.h>],
5790               [isl_options_set_schedule_serialize_sccs (NULL, 0);],
5791               [ac_has_isl_options_set_schedule_serialize_sccs=yes],
5792               [ac_has_isl_options_set_schedule_serialize_sccs=no])
5793   AC_MSG_RESULT($ac_has_isl_options_set_schedule_serialize_sccs)
5795   LIBS="$saved_LIBS"
5796   CXXFLAGS="$saved_CXXFLAGS"
5798   if test x"$ac_has_isl_schedule_constraints_compute_schedule" = x"yes"; then
5799      AC_DEFINE(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE, 1,
5800                [Define if isl_schedule_constraints_compute_schedule exists.])
5801   fi
5803   if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
5804      AC_DEFINE(HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS, 1,
5805                [Define if isl_options_set_schedule_serialize_sccs exists.])
5806   fi
5809 GCC_ENABLE_PLUGINS
5810 AC_SUBST(pluginlibs)
5811 AC_SUBST(enable_plugin)
5812 if test x"$enable_plugin" = x"yes"; then
5813   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5817 # Enable --enable-host-shared
5818 AC_ARG_ENABLE(host-shared,
5819 [AS_HELP_STRING([--enable-host-shared],
5820                 [build host code as shared libraries])],
5821 [PICFLAG=-fPIC], [PICFLAG=])
5822 AC_SUBST(enable_host_shared)
5823 AC_SUBST(PICFLAG)
5826 AC_ARG_ENABLE(libquadmath-support,
5827 [AS_HELP_STRING([--disable-libquadmath-support],
5828   [disable libquadmath support for Fortran])],
5829 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5830 ENABLE_LIBQUADMATH_SUPPORT=yes)
5831 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5832   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5833             [Define to 1 to enable libquadmath support])
5837 # Specify what hash style to use by default.
5838 AC_ARG_WITH([linker-hash-style],
5839 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5840                 [specify the linker hash style])],
5841 [case x"$withval" in
5842    xsysv)
5843      LINKER_HASH_STYLE=sysv
5844      ;;
5845    xgnu)
5846      LINKER_HASH_STYLE=gnu
5847      ;;
5848    xboth)
5849      LINKER_HASH_STYLE=both
5850      ;;
5851    *)
5852      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5853      ;;
5854  esac],
5855 [LINKER_HASH_STYLE=''])
5856 if test x"${LINKER_HASH_STYLE}" != x; then
5857   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5858                                          [The linker hash style])
5861 # Specify what should be the default of -fdiagnostics-color option.
5862 AC_ARG_WITH([diagnostics-color],
5863 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
5864                 [specify the default of -fdiagnostics-color option
5865                  auto-if-env stands for -fdiagnostics-color=auto if
5866                  GCC_COLOR environment variable is present and
5867                  -fdiagnostics-color=never otherwise])],
5868 [case x"$withval" in
5869    xnever)
5870      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
5871      ;;
5872    xauto)
5873      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
5874      ;;
5875    xauto-if-env)
5876      DIAGNOSTICS_COLOR_DEFAULT=-1
5877      ;;
5878    xalways)
5879      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
5880      ;;
5881    *)
5882      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
5883      ;;
5884  esac],
5885 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
5886 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
5887                    [The default for -fdiagnostics-color option])
5889 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
5890 # of jit/jit-playback.c.
5891 cat > gcc-driver-name.h <<EOF
5892 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
5895 # Check whether --enable-default-pie was given.
5896 AC_ARG_ENABLE(default-pie,
5897 [AS_HELP_STRING([--enable-default-pie],
5898   [enable Position Independent Executable as default])],
5899 enable_default_pie=$enableval,
5900 enable_default_pie=no)
5901 if test x$enable_default_pie == xyes ; then
5902   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
5903       [Define if your target supports default PIE and it is enabled.])
5905 AC_SUBST([enable_default_pie])
5907 # Check if -fno-PIE works.
5908 AC_CACHE_CHECK([for -fno-PIE option],
5909   [gcc_cv_c_no_fpie],
5910   [saved_CXXFLAGS="$CXXFLAGS"
5911    CXXFLAGS="$CXXFLAGS -fno-PIE"
5912    AC_COMPILE_IFELSE([int main(void) {return 0;}],
5913      [gcc_cv_c_no_fpie=yes],
5914      [gcc_cv_c_no_fpie=no])
5915    CXXFLAGS="$saved_CXXFLAGS"])
5916 if test "$gcc_cv_c_no_fpie" = "yes"; then
5917   NO_PIE_CFLAGS="-fno-PIE"
5919 AC_SUBST([NO_PIE_CFLAGS])
5921 # Check if -no-pie works.
5922 AC_CACHE_CHECK([for -no-pie option],
5923   [gcc_cv_no_pie],
5924   [saved_LDFLAGS="$LDFLAGS"
5925    LDFLAGS="$LDFLAGS -no-pie"
5926    AC_LINK_IFELSE([int main(void) {return 0;}],
5927      [gcc_cv_no_pie=yes],
5928      [gcc_cv_no_pie=no])
5929    LDFLAGS="$saved_LDFLAGS"])
5930 if test "$gcc_cv_no_pie" = "yes"; then
5931   NO_PIE_FLAG="-no-pie"
5933 AC_SUBST([NO_PIE_FLAG])
5935 # Check linker supports '-z bndplt'
5936 ld_bndplt_support=no
5937 AC_MSG_CHECKING(linker -z bndplt option)
5938 if test x"$ld_is_gold" = xno; then
5939   if test $in_tree_ld = yes ; then
5940     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
5941       ld_bndplt_support=yes
5942     fi
5943   elif test x$gcc_cv_ld != x; then
5944     # Check if linker supports -a bndplt option
5945     if $gcc_cv_ld --help 2>/dev/null | grep -- '-z bndplt' > /dev/null; then
5946       ld_bndplt_support=yes
5947     fi
5948   fi
5950 if test x"$ld_bndplt_support" = xyes; then
5951   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
5952         [Define if your linker supports -z bndplt])
5954 AC_MSG_RESULT($ld_bndplt_support)
5956 # Configure the subdirectories
5957 # AC_CONFIG_SUBDIRS($subdirs)
5959 # Create the Makefile
5960 # and configure language subdirectories
5961 AC_CONFIG_FILES($all_outputs)
5963 AC_CONFIG_COMMANDS([default],
5965 case ${CONFIG_HEADERS} in
5966   *auto-host.h:config.in*)
5967   echo > cstamp-h ;;
5968 esac
5969 # Make sure all the subdirs exist.
5970 for d in $subdirs doc build common c-family
5972     test -d $d || mkdir $d
5973 done
5974 ], 
5975 [subdirs='$subdirs'])
5976 AC_OUTPUT