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