configure.ac: Remove extraneous ;;.
[platform/upstream/gcc.git] / gcc / configure.ac
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright (C) 1997-2015 Free Software Foundation, Inc.
5
6 #This file is part of GCC.
7
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.
12
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.
17
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/>.
21
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
25
26 AC_PREREQ(2.64)
27 AC_INIT
28 AC_CONFIG_SRCDIR(tree.c)
29 AC_CONFIG_HEADER(auto-host.h:config.in)
30
31 gcc_version=`cat $srcdir/BASE-VER`
32
33 # Determine the host, build, and target systems
34 AC_CANONICAL_BUILD
35 AC_CANONICAL_HOST
36 AC_CANONICAL_TARGET
37
38 # Determine the noncanonical target name, for directory use.
39 ACX_NONCANONICAL_TARGET
40
41 # Used for constructing correct paths for offload compilers.
42 real_target_noncanonical=${target_noncanonical}
43 accel_dir_suffix=
44
45 # Determine the target- and build-specific subdirectories
46 GCC_TOPLEV_SUBDIRS
47
48 # Set program_transform_name
49 AC_ARG_PROGRAM
50
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.])
76 fi
77
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.])
102 fi
103
104 # -----------
105 # Directories
106 # -----------
107
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])
118
119 # Default local prefix if it is empty
120 if test x$local_prefix = x; then
121         local_prefix=/usr/local
122 fi
123
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.],
128 [
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=])
136
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)
145
146 if test "x$prefix" = xNONE; then
147  test_prefix=/usr/local
148 else
149  test_prefix=$prefix
150 fi
151 if test "x$exec_prefix" = xNONE; then
152  test_exec_prefix=$test_prefix
153 else
154  test_exec_prefix=$exec_prefix
155 fi
156
157 AC_ARG_WITH(sysroot,
158 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
159                 [search for usr/lib, usr/include, et al, within DIR])],
160 [
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'
186 ])
187 AC_SUBST(TARGET_SYSTEM_ROOT)
188 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
189 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
190
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])
204
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
216 fi
217
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
227 fi
228
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])
238
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.
244
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)
254
255 AC_MSG_RESULT($generated_files_in_srcdir)
256
257 if test "$generated_files_in_srcdir" = "yes"; then
258   GENINSRC=''
259 else
260   GENINSRC='#'
261 fi
262 AC_SUBST(GENINSRC)
263
264 # -------------------
265 # Find default linker
266 # -------------------
267
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)
273
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.])
286 fi
287
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)
297 fi
298
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)
304
305 # ----------------------
306 # Find default assembler
307 # ----------------------
308
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)
314
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.])
326 fi
327
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)
337 fi
338
339 # ---------------
340 # Find C compiler
341 # ---------------
342
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.
347 #
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
351
352 # Find the native compiler
353 AC_PROG_CC
354 AC_PROG_CXX
355 ACX_PROG_GNAT([-I"$srcdir"/ada])
356
357 # Do configure tests with the C++ compiler, since that's what we build with.
358 AC_LANG(C++)
359
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)
369
370 # Determine PICFLAG for target gnatlib.
371 GCC_PICFLAG_FOR_TARGET
372 AC_SUBST(PICFLAG_FOR_TARGET)
373
374 # -------------------------
375 # Check C compiler features
376 # -------------------------
377
378 AC_USE_SYSTEM_EXTENSIONS
379 AC_PROG_CPP
380 AC_C_INLINE
381
382 AC_SYS_LARGEFILE
383
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])
393 fi
394
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])])
417 fi
418
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"
429
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
438 ],
439     [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
440     [AC_MSG_RESULT([no])])
441
442   CXXFLAGS="$saved_CXXFLAGS"
443 fi
444 AC_SUBST(aliasing_flags)
445
446
447
448 # ---------------------
449 # Warnings and checking
450 # ---------------------
451
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.
459
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])
481
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)'
490 fi
491 AC_SUBST(warn_cflags)
492 AC_SUBST(warn_cxxflags)
493
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
503 fi
504
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
521 do
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"
566
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
573 fi
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.])
578 fi
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.])
582 fi
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.])
588 fi
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.])
593 fi
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
601 fi
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    ])
607 fi
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.])
614 fi
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.])
620 fi
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.])
625 fi
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.])
631 fi
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.])
636 fi
637 valgrind_path_defines=
638 valgrind_command=
639
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)
644
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.])
668 fi
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.])
672 fi
673
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.])
688 fi
689 AC_SUBST(valgrind_path_defines)
690 AC_SUBST(valgrind_command)
691
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)
717
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.])
725
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.])
739 fi
740
741 # -------------------------------
742 # Miscenalleous configure options
743 # -------------------------------
744
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)
751
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)
758
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
776 fi
777 AC_MSG_CHECKING(for multiarch configuration)
778 AC_SUBST(enable_multiarch)
779 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
780
781 # needed for setting the multiarch name for soft-float/hard-float ABIs
782 AC_SUBST(with_cpu)
783 AC_SUBST(with_float)
784
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 [], [])
789
790 # Enable C extension for decimal float if target supports it.
791 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
792
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.])
796
797 # Use default_decimal_float for dependency.
798 enable_decimal_float=$default_decimal_float
799
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])
804
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])],
809 [],
810 [
811   case $target in
812     arm*)
813       enable_fixed_point=yes
814       ;;
815
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
824 ])
825 AC_SUBST(enable_fixed_point)
826
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.])
830
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=''])
839
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])],
844 [
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=''])
851
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
860 fi,
861 objc_boehm_gc='')
862
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)
867
868 AC_ARG_ENABLE(shared,
869 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
870 [
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)
886
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=]
892 )
893 AC_SUBST(CONFIGURE_SPECS)
894
895 ACX_PKGVERSION([GCC])
896 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
897
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])
919
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}
934 fi
935 AC_SUBST(enable_as_accelerator)
936 AC_SUBST(real_target_noncanonical)
937 AC_SUBST(accel_dir_suffix)
938
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.])
952 fi
953
954 AC_ARG_WITH(multilib-list,
955 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
956 :,
957 with_multilib_list=default)
958
959 # -------------------------
960 # Checks for other programs
961 # -------------------------
962
963 AC_PROG_MAKE_SET
964
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
972
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
980
981 # See if cmp has --ignore-initial.
982 gcc_AC_PROG_CMP_IGNORE_INITIAL
983
984 # See if we have the mktemp command.
985 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
986
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
999 fi
1000 AC_SUBST(BUILD_INFO)
1001
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=
1010 fi
1011 AC_SUBST(GENERATED_MANPAGES)
1012
1013 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1014
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])
1019
1020 # Bison?
1021 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1022
1023 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
1024 # check for build == host before using them.
1025
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)
1032 fi
1033
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)
1040 fi
1041
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)
1046
1047 # --------------------
1048 # Checks for C headers
1049 # --------------------
1050
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
1054
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)
1064
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=])
1068
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
1072
1073 # ----------------------
1074 # Checks for C++ headers
1075 # ----------------------
1076
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
1082
1083 AC_CHECK_HEADERS(unordered_map)
1084 AC_CHECK_HEADERS(tr1/unordered_map)
1085 AC_CHECK_HEADERS(ext/hash_map)
1086
1087 # --------
1088 # Dependency checking.
1089 # --------
1090
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])
1098
1099 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1100
1101 # --------
1102 # UNSORTED
1103 # --------
1104
1105
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'
1113 do
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)
1125
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)
1134
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)
1142
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)
1151
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.])
1171 fi
1172
1173 dnl Disabled until we have a complete test for buggy enum bitfields.
1174 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1175
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)
1185
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()
1190 {
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
1202 fi
1203
1204 AC_CHECK_TYPE(ssize_t, int)
1205 AC_CHECK_TYPE(caddr_t, char *)
1206
1207 GCC_AC_FUNC_MMAP_BLACKLIST
1208
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
1218
1219 AM_ICONV
1220
1221 # Until we have in-tree GNU iconv:
1222 LIBICONV_DEP=
1223 if test -f "$LTLIBICONV"; then
1224   LIBICONV_DEP=$LTLIBICONV
1225 fi
1226 AC_SUBST(LIBICONV_DEP)
1227
1228 AM_LC_MESSAGES
1229
1230 AM_LANGINFO_CODESET
1231
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"
1237
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"])
1247
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"])
1255
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
1262 ])
1263
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.])])
1272
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
1285 ])
1286
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
1293 ])
1294
1295 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1296 #include "ansidecl.h"
1297 #include "system.h"
1298 #include <signal.h>
1299 ])
1300
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.])
1313 fi
1314
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.])
1325 fi
1326
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.])
1341 fi
1342
1343 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1344 CFLAGS="$saved_CFLAGS"
1345 CXXFLAGS="$saved_CXXFLAGS"
1346
1347 # mkdir takes a single argument on some systems. 
1348 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1349
1350 # File extensions
1351 manext='.1'
1352 objext='.o'
1353 AC_SUBST(manext)
1354 AC_SUBST(objext)
1355
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.])
1386 fi
1387
1388 # --------------------------------------------------------
1389 # Build, host, and target specific configuration fragments
1390 # --------------------------------------------------------
1391
1392 # Collect build-machine-specific information.
1393 . ${srcdir}/config.build
1394
1395 # Collect host-machine-specific information.
1396 . ${srcdir}/config.host
1397
1398 target_gtfiles=
1399
1400 # Collect target-machine-specific information.
1401 . ${srcdir}/config.gcc
1402
1403 extra_objs="${host_extra_objs} ${extra_objs}"
1404 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1405
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
1409
1410 if test x"$extra_headers" = x
1411 then extra_headers=; fi
1412
1413 if test x$md_file = x
1414 then md_file=$cpu_type/$cpu_type.md; fi
1415
1416 if test x$out_file = x
1417 then out_file=$cpu_type/$cpu_type.c; fi
1418
1419 if test x"$tmake_file" = x
1420 then tmake_file=$cpu_type/t-$cpu_type
1421 fi
1422
1423 # Support --enable-initfini-array.
1424 if test x$enable_initfini_array != xno; then
1425   tm_file="${tm_file} initfini-array.h"
1426 fi
1427
1428 if test x"$dwarf2" = xyes
1429 then tm_file="$tm_file tm-dwarf2.h"
1430 fi
1431
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."
1435
1436 # If any of the xm_file variables contain nonexistent files, warn
1437 # about them and drop them.
1438
1439 bx=
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"
1447
1448 hx=
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"
1456
1457 tx=
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"
1465
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
1477 fi
1478
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.])
1483 fi
1484
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.])
1487
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.])
1490
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
1504 fi
1505 echo "Using ${out_host_hook_obj} for host machine hooks."
1506
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
1522 fi
1523
1524 if test -n "$configured_native_system_header_dir"; then
1525   native_system_header_dir=$configured_native_system_header_dir
1526 fi
1527 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1528 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1529
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; }
1539 ],
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
1547
1548 # ---------
1549 # Threading
1550 # ---------
1551
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
1571
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}
1576 fi
1577
1578 # --------
1579 # UNSORTED
1580 # --------
1581
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
1612 fi
1613
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.])
1621 fi
1622
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)
1631
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
1663
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
1670 fi
1671 AC_SUBST(build_subdir)
1672
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}"
1680
1681 # --------
1682 # UNSORTED
1683 # --------
1684
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"
1693 fi
1694
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
1699 EOF
1700 gcc_config_arguments_str=`cat conftest.out`
1701 rm -f conftest.out
1702
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";
1707
1708 static const struct {
1709   const char *name, *value;
1710 } configure_default_options[] = $configure_default_options;
1711 EOF
1712 changequote([,])dnl
1713
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=""
1722 fi
1723 cat > plugin-version.h <<EOF
1724 #include "configargs.h"
1725
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)
1730
1731 static char basever[] = "$gcc_BASEVER";
1732 static char datestamp[] = "$gcc_DATESTAMP";
1733 static char devphase[] = "$gcc_DEVPHASE";
1734 static char revision[] = "$gcc_REVISION";
1735
1736 /* FIXME plugins: We should make the version information more precise.
1737    One way to do is to add a checksum. */
1738
1739 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1740                                                 devphase, revision,
1741                                                 configuration_arguments};
1742 EOF
1743 changequote([,])dnl
1744
1745 # Internationalization
1746 ZW_GNU_GETTEXT_SISTER_DIR
1747
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
1753
1754 AC_ARG_ENABLE(secureplt,
1755 [AS_HELP_STRING([--enable-secureplt],
1756                 [enable -msecure-plt by default for PowerPC])],
1757 [], [])
1758
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])])
1766
1767 AC_ARG_ENABLE(cld,
1768 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
1769 [enable_cld=no])
1770
1771 AC_ARG_ENABLE(frame-pointer,
1772 [AS_HELP_STRING([--enable-frame-pointer],
1773                 [enable -fno-omit-frame-pointer by default for 32bit x86])], [],
1774 [
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   ;;
1781 *)
1782   enable_frame_pointer=yes
1783   ;;
1784 esac
1785 ])
1786
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])],,)
1796
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
1802
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.])
1807
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
1819
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
1825
1826 # Conditionalize the makefile for this host machine.
1827 xmake_file=
1828 for f in ${host_xmake_file}
1829 do
1830         if test -f ${srcdir}/config/$f
1831         then
1832                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1833         fi
1834 done
1835
1836 # Conditionalize the makefile for this target machine.
1837 tmake_file_=
1838 for f in ${tmake_file}
1839 do
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_}"
1846
1847 out_object_file=`basename $out_file .c`.o
1848 common_out_object_file=`basename $common_out_file .c`.o
1849
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
1869
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
1883
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
1902
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
1921
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
1939
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)
1946
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)'
1954 fi
1955
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                 ;;
1976
1977             i?86-*-*,x86_64-*-* \
1978             | powerpc*-*-*,powerpc64*-*-*)
1979                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1980         esac
1981
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 
1993 fi
1994
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}
2009 fi
2010
2011 # If this is a cross-compiler that does not
2012 # have its own set of headers then define
2013 # inhibit_libc
2014
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
2024 fi
2025 AC_SUBST(inhibit_libc)
2026
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.
2030
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)
2038
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)'
2045 fi
2046
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
2054
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"
2058 fi
2059
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])
2066
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
2081
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.])
2085
2086 # ---------------------------
2087 # Assembler & linker features
2088 # ---------------------------
2089
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.
2099
2100 m4_defun([_LT_CONFIG_COMMANDS], [])
2101 AC_PROG_LIBTOOL
2102 AC_SUBST(objdir)
2103 AC_SUBST(enable_fast_install)
2104
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.
2108 #
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
2115
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])
2132
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 
2139
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
2158 fi
2159
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])
2168
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])
2187
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.
2191 #
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
2200
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])
2221
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
2229 fi
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])
2238
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
2247 fi
2248 AC_MSG_RESULT($ld_is_gold)
2249
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 
2256
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
2298 fi
2299
2300 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2301 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2302
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])
2317
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
2326 fi
2327
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
2334
2335
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])
2350
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)
2359 fi
2360
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])
2373
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)
2382 fi
2383
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.])])
2391
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.])])
2398
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.])])
2404
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.])])
2423
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.])])
2428
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.])])
2433
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.])])
2439
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
2457
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"])
2470
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.])
2474
2475
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
2518 fi
2519 changequote([,])dnl
2520
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.])
2584 fi
2585
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
2617 fi
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.])
2622 fi
2623 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2624
2625 gcc_AC_INITFINI_ARRAY
2626
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
2632 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.])])
2654
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],
2720 [[
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
2724 fi
2725 ]])
2726 else
2727   # no objdump, err on the side of caution
2728   gcc_cv_as_cfi_advance_working=no
2729 fi
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.])
2735
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.])
2747
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.])
2775
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@
2817 EOF
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@
2822 EOF
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])
2841
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.])
2845 fi
2846
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])
2854 fi
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.])
2858
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
2904 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
2950 fi
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
2959 fi
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.])
2965
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.])])
2974
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
3151 x:
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
3163 x:
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
3180 x:
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
3226 a:
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])
3440 fi
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.])
3444 fi
3445
3446 # Target-specific assembler checks.
3447
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
3483 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.])
3491 fi
3492 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3493
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)
3512 fi
3513
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"
3521
3522   ld_is_gold=no
3523
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
3548
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
3559
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"
3564 fi
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)
3568
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             ;;
3623
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             ;;
3646
3647         esac
3648       ],
3649     [])
3650     ;;
3651
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     ;;
3680
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.])])
3686
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     ;;
3692
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     ;;
3700
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.])])
3706
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.])
3713
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.])])
3718
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.])])
3744
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.])
3762
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
3790
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().])])
3804
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.])])
3818
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.])])
3836
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     ;;
3850
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
3914
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.])
3924
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.])])
3930
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.])])
3936
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.])])
3942
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.])])
3948
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.])])
3954
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.])])
3961
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.])
3970
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.])])
3976
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.])])
3982
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.])])
3994
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'.])
4012
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>'.])])
4024
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.])])
4030
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.])])
4041
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.])
4058
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
4077
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.])
4096
4097     ;;
4098
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.])])
4108
4109     ;;
4110
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
4131
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.])])
4137
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
4146
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.])])
4152
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
4161
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.])])
4167
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
4176
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.])])
4182
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
4195
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.])])
4201
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
4210
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.])])
4216
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
4225
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.])])
4231
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
4240
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.])])
4246
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
4255
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.])])
4261
4262     case $target in
4263       *-*-aix*) conftest_s='    .machine "pwr8"
4264         .csect .text[[PR]]';;
4265       *) conftest_s='   .machine power8
4266         .text';;
4267     esac
4268
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.])])
4274
4275     case $target in
4276       *-*-aix*) conftest_s='    .csect .text[[PR]]
4277         lwsync';;
4278       *) conftest_s='   .text
4279         lwsync';;
4280     esac
4281
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.])])
4287
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
4296
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.])])
4302
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.])])
4308
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.])])
4314
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
4330     case $target in
4331       *-*-aix*)
4332         gcc_GAS_CHECK_FEATURE([dwarf location lists section support],
4333           gcc_cv_as_aix_dwloc, [2,21,0],,
4334           [     .dwsect 0xB0000
4335           ],,
4336           [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4337             [Define if your assembler supports .dwsect 0xB0000])])
4338         ;;
4339     esac
4340     ;;
4341
4342   mips*-*-*)
4343     gcc_GAS_CHECK_FEATURE([explicit relocation support],
4344       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4345 [       lw $4,%gp_rel(foo)($4)],,
4346       [if test x$target_cpu_default = x
4347        then target_cpu_default=MASK_EXPLICIT_RELOCS
4348        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4349        fi])
4350
4351     gcc_GAS_CHECK_FEATURE([-mno-shared support],
4352       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4353       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4354                  [Define if the assembler understands -mno-shared.])])
4355
4356     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4357       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4358       [.gnu_attribute 4,1],,
4359       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4360           [Define if your assembler supports .gnu_attribute.])])
4361
4362     gcc_GAS_CHECK_FEATURE([.module support],
4363       gcc_cv_as_mips_dot_module,,[-32],
4364       [.module mips2
4365        .module fp=xx],,
4366       [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4367           [Define if your assembler supports .module.])])
4368     if test x$gcc_cv_as_mips_dot_module = xno \
4369        && test x$with_fp_32 != x; then
4370       AC_MSG_ERROR(
4371         [Requesting --with-fp-32= requires assembler support for .module.])
4372     fi
4373
4374     gcc_GAS_CHECK_FEATURE([.micromips support],
4375       gcc_cv_as_micromips_support,,[--fatal-warnings],
4376       [.set micromips],,
4377       [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4378           [Define if your assembler supports the .set micromips directive])])
4379
4380     gcc_GAS_CHECK_FEATURE([.dtprelword support],
4381       gcc_cv_as_mips_dtprelword, [2,18,0],,
4382       [.section .tdata,"awT",@progbits
4383 x:
4384         .word 2
4385         .text
4386         .dtprelword x+0x8000],,
4387       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4388           [Define if your assembler supports .dtprelword.])])
4389
4390     gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4391       gcc_cv_as_mips_dspr1_mult,,,
4392 [       .set    mips32r2
4393         .set    nodspr2
4394         .set    dsp
4395         madd    $ac3,$4,$5
4396         maddu   $ac3,$4,$5
4397         msub    $ac3,$4,$5
4398         msubu   $ac3,$4,$5
4399         mult    $ac3,$4,$5
4400         multu   $ac3,$4,$5],,
4401       [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4402           [Define if your assembler supports DSPR1 mult.])])
4403
4404     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4405     gcc_cv_as_ld_jalr_reloc=no
4406     if test $gcc_cv_as_mips_explicit_relocs = yes; then
4407       if test $in_tree_ld = yes ; then
4408         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 \
4409            && test $in_tree_ld_is_elf = yes; then
4410           gcc_cv_as_ld_jalr_reloc=yes
4411         fi
4412       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4413         echo '  .ent x' > conftest.s
4414         echo 'x:        lw $2,%got_disp(y)($3)' >> conftest.s
4415         echo '  lw $25,%call16(y)($28)' >> conftest.s
4416         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
4417         echo '1:        jalr $25' >> conftest.s
4418         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
4419         echo '1:        jalr $25' >> conftest.s
4420         echo '  .end x' >> conftest.s
4421         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4422            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4423           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4424              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4425             gcc_cv_as_ld_jalr_reloc=yes
4426           fi
4427         fi
4428         rm -f conftest.*
4429       fi
4430     fi
4431     if test $gcc_cv_as_ld_jalr_reloc = yes; then
4432       if test x$target_cpu_default = x; then
4433         target_cpu_default=MASK_RELAX_PIC_CALLS
4434       else
4435         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4436       fi
4437     fi
4438     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4439
4440     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4441       [gcc_cv_ld_mips_personality_relaxation],
4442       [gcc_cv_ld_mips_personality_relaxation=no
4443        if test $in_tree_ld = yes ; then
4444          if test "$gcc_cv_gld_major_version" -eq 2 \
4445                  -a "$gcc_cv_gld_minor_version" -ge 21 \
4446                  -o "$gcc_cv_gld_major_version" -gt 2; then
4447            gcc_cv_ld_mips_personality_relaxation=yes
4448          fi
4449        elif test x$gcc_cv_as != x \
4450                  -a x$gcc_cv_ld != x \
4451                  -a x$gcc_cv_readelf != x ; then
4452          cat > conftest.s <<EOF
4453         .cfi_startproc
4454         .cfi_personality 0x80,indirect_ptr
4455         .ent test
4456 test:
4457         nop
4458         .end test
4459         .cfi_endproc
4460
4461         .section .data,"aw",@progbits
4462 indirect_ptr:
4463         .dc.a personality
4464 EOF
4465          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4466             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4467            if $gcc_cv_readelf -d conftest 2>&1 \
4468               | grep TEXTREL > /dev/null 2>&1; then
4469              :
4470            elif $gcc_cv_readelf --relocs conftest 2>&1 \
4471                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4472              :
4473            else
4474              gcc_cv_ld_mips_personality_relaxation=yes
4475            fi
4476          fi
4477        fi
4478        rm -f conftest.s conftest.o conftest])
4479     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4480             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4481       [Define if your linker can relax absolute .eh_frame personality
4482 pointers into PC-relative form.])
4483     fi
4484
4485     gcc_GAS_CHECK_FEATURE([-mnan= support],
4486       gcc_cv_as_mips_nan,,
4487       [-mnan=2008],,,
4488       [AC_DEFINE(HAVE_AS_NAN, 1,
4489                  [Define if the assembler understands -mnan=.])])
4490     if test x$gcc_cv_as_mips_nan = xno \
4491        && test x$with_nan != x; then
4492       AC_MSG_ERROR(
4493         [Requesting --with-nan= requires assembler support for -mnan=])
4494     fi
4495     ;;
4496     s390*-*-*)
4497     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4498       gcc_cv_as_s390_gnu_attribute, [2,18,0],,
4499       [.gnu_attribute 8,1],,
4500       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4501           [Define if your assembler supports .gnu_attribute.])])
4502     ;;
4503 esac
4504
4505 # Mips and HP-UX need the GNU assembler.
4506 # Linux on IA64 might be able to use the Intel assembler.
4507
4508 case "$target" in
4509   mips*-*-* | *-*-hpux* )
4510     if test x$gas_flag = xyes \
4511        || test x"$host" != x"$build" \
4512        || test ! -x "$gcc_cv_as" \
4513        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4514       :
4515     else
4516       echo "*** This configuration requires the GNU assembler" >&2
4517       exit 1
4518     fi
4519     ;;
4520 esac
4521
4522 # ??? Not all targets support dwarf2 debug_line, even within a version
4523 # of gas.  Moreover, we need to emit a valid instruction to trigger any
4524 # info to the output file.  So, as supported targets are added to gas 2.11,
4525 # add some instruction here to (also) show we expect this might work.
4526 # ??? Once 2.11 is released, probably need to add first known working
4527 # version to the per-target configury.
4528 case "$cpu_type" in
4529   aarch64 | alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze \
4530   | mips | nios2 | pa | rs6000 | score | sparc | spu | tilegx | tilepro \
4531   | visium | xstormy16 | xtensa)
4532     insn="nop"
4533     ;;
4534   ia64 | s390)
4535     insn="nop 0"
4536     ;;
4537   mmix)
4538     insn="swym 0"
4539     ;;
4540 esac
4541 if test x"$insn" != x; then
4542  conftest_s="\
4543         .file 1 \"conftest.s\"
4544         .loc 1 3 0
4545         $insn"
4546  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4547   gcc_cv_as_dwarf2_debug_line,
4548   [elf,2,11,0],, [$conftest_s],
4549   [if test x$gcc_cv_objdump != x \
4550    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4551       | grep debug_line > /dev/null 2>&1; then
4552      gcc_cv_as_dwarf2_debug_line=yes
4553    fi])
4554
4555 # The .debug_line file table must be in the exact order that
4556 # we specified the files, since these indices are also used
4557 # by DW_AT_decl_file.  Approximate this test by testing if
4558 # the assembler bitches if the same index is assigned twice.
4559  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4560   gcc_cv_as_dwarf2_file_buggy,,,
4561 [       .file 1 "foo.s"
4562         .file 1 "bar.s"])
4563
4564  if test $gcc_cv_as_dwarf2_debug_line = yes \
4565  && test $gcc_cv_as_dwarf2_file_buggy = no; then
4566         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4567   [Define if your assembler supports dwarf2 .file/.loc directives,
4568    and preserves file table indices exactly as given.])
4569  fi
4570
4571  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4572   gcc_cv_as_gdwarf2_flag,
4573   [elf,2,11,0], [--gdwarf2], [$insn],,
4574   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4575 [Define if your assembler supports the --gdwarf2 option.])])
4576
4577  gcc_GAS_CHECK_FEATURE([--gstabs option],
4578   gcc_cv_as_gstabs_flag,
4579   [elf,2,11,0], [--gstabs], [$insn],,
4580   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4581 [Define if your assembler supports the --gstabs option.])])
4582
4583  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4584   gcc_cv_as_debug_prefix_map_flag,
4585   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4586   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4587 [Define if your assembler supports the --debug-prefix-map option.])])
4588 fi
4589
4590 gcc_GAS_CHECK_FEATURE([compressed debug sections],
4591   gcc_cv_as_compress_debug,,[--compress-debug-sections],,
4592   [# gas compiled without zlib cannot compress debug sections and warns
4593    # about it, but still exits successfully.  So check for this, too.
4594    if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
4595    then
4596      gcc_cv_as_compress_debug=0
4597    elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
4598    then
4599      gcc_cv_as_compress_debug=1
4600      gcc_cv_as_compress_debug_option="--compress-debug-sections"
4601      gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
4602    else
4603      gcc_cv_as_compress_debug=0
4604    # FIXME: Future gas versions will support ELF gABI style via
4605    # --compress-debug-sections[=type].
4606    fi])
4607 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
4608 [Define to the level of your assembler's compressed debug section support.])
4609 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
4610 [Define to the assembler option to enable compressed debug sections.])
4611 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
4612 [Define to the assembler option to disable compressed debug sections.])
4613
4614 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4615  ,,
4616 [.lcomm bar,4,16],,
4617 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4618   [Define if your assembler supports .lcomm with an alignment field.])])
4619
4620 if test x$with_sysroot = x && test x$host = x$target \
4621    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4622    && test "$prefix" != "NONE"; then
4623   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4624 [Define to PREFIX/include if cpp should also search that directory.])
4625 fi
4626
4627 # Determine the version of glibc, if any, used on the target.
4628 AC_MSG_CHECKING([for target glibc version])
4629 AC_ARG_WITH([glibc-version],
4630   [AS_HELP_STRING([--with-glibc-version=M.N],
4631     [assume GCC used with glibc version M.N or later])], [
4632 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
4633   glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
4634   glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
4635 else
4636   AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
4637 fi], [
4638 glibc_version_major=0
4639 glibc_version_minor=0
4640 [if test -f $target_header_dir/features.h \
4641   && glibc_version_major_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC__[    ]+[0-9]' $target_header_dir/features.h` \
4642   && glibc_version_minor_define=`$EGREP '^[     ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+[0-9]' $target_header_dir/features.h`; then
4643   glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[      ]*//'`
4644   glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[        ]*//'`
4645 fi]])
4646 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
4647 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
4648 [GNU C Library major version number used on the target, or 0.])
4649 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
4650 [GNU C Library minor version number used on the target, or 0.])
4651
4652 AC_ARG_ENABLE(gnu-unique-object,
4653  [AS_HELP_STRING([--enable-gnu-unique-object],
4654    [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4655  [case $enable_gnu_unique_object in
4656     yes | no) ;;
4657     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4658 Valid choices are 'yes' and 'no'.]) ;;
4659   esac],
4660  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4661    [elf,2,19,52],,
4662    [.type foo, '$target_type_format_char'gnu_unique_object],,
4663 # We need to unquote above to to use the definition from config.gcc.
4664 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4665    [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
4666    )])
4667 if test x$enable_gnu_unique_object = xyes; then
4668   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4669    [Define if your assembler supports @gnu_unique_object.])
4670 fi
4671
4672 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4673  [gcc_cv_as_line_zero],
4674  [gcc_cv_as_line_zero=no
4675   if test $in_tree_gas = yes; then
4676     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4677   elif test "x$gcc_cv_as" != x; then
4678     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4679     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4680        test "x`cat conftest.out`" = x
4681     then
4682       gcc_cv_as_line_zero=yes
4683     else
4684       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4685       cat conftest.s >&AS_MESSAGE_LOG_FD
4686       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4687       cat conftest.out >&AS_MESSAGE_LOG_FD
4688     fi
4689     rm -f conftest.o conftest.s conftest.out
4690   fi])
4691 if test "x$gcc_cv_as_line_zero" = xyes; then
4692   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4693 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4694 fi
4695
4696 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4697 gcc_cv_ld_eh_frame_hdr=no
4698 if test $in_tree_ld = yes ; then
4699   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 \
4700      && test $in_tree_ld_is_elf = yes; then
4701     gcc_cv_ld_eh_frame_hdr=yes
4702   fi
4703 elif test x$gcc_cv_ld != x; then
4704   if echo "$ld_ver" | grep GNU > /dev/null; then
4705     # Check if linker supports --eh-frame-hdr option
4706     if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4707       gcc_cv_ld_eh_frame_hdr=yes
4708     fi
4709   else
4710     case "$target" in
4711       *-*-solaris2*)
4712         # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4713         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4714           gcc_cv_ld_eh_frame_hdr=yes
4715         fi
4716         ;;
4717     esac
4718   fi
4719 fi
4720 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4721 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4722         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4723 [Define if your linker supports .eh_frame_hdr.])
4724 fi
4725 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4726
4727 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
4728 gcc_cv_ld_eh_frame_ciev3=no
4729 if test $in_tree_ld = yes ; then
4730   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 \
4731      && test $in_tree_ld_is_elf = yes; then
4732     gcc_cv_ld_eh_frame_ciev3=yes
4733   fi
4734 elif test x$gcc_cv_ld != x; then
4735   if echo "$ld_ver" | grep GNU > /dev/null; then
4736     gcc_cv_ld_eh_frame_ciev3=yes
4737     if test 0"$ld_date" -lt 20040513; then
4738       if test -n "$ld_date"; then
4739         # If there was date string, but was earlier than 2004-05-13, fail
4740         gcc_cv_ld_eh_frame_ciev3=no
4741       elif test "$ld_vers_major" -lt 2; then
4742         gcc_cv_ld_eh_frame_ciev3=no
4743       elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
4744         gcc_cv_ld_eh_frame_ciev3=no
4745       fi
4746     fi
4747   else
4748     case "$target" in
4749       *-*-solaris2*)
4750         # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
4751         if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
4752           gcc_cv_ld_eh_frame_ciev3=yes
4753         fi
4754         ;;
4755     esac
4756   fi
4757 fi
4758 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
4759   [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
4760   [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
4761 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
4762
4763 AC_MSG_CHECKING(linker position independent executable support)
4764 gcc_cv_ld_pie=no
4765 if test $in_tree_ld = yes ; then
4766   case "$target" in
4767     # Full PIE support on Solaris was only introduced in gld 2.26.
4768     *-*-solaris2*)  gcc_gld_pie_min_version=26 ;;
4769     *)              gcc_gld_pie_min_version=15 ;;
4770   esac
4771   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 \
4772      && test $in_tree_ld_is_elf = yes; then
4773     gcc_cv_ld_pie=yes
4774   fi
4775 elif test x$gcc_cv_ld != x; then
4776   # Check if linker supports -pie option
4777   if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4778     gcc_cv_ld_pie=yes
4779     case "$target" in
4780       *-*-solaris2*)
4781         if echo "$ld_ver" | grep GNU > /dev/null \
4782           && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
4783           gcc_cv_ld_pie=no
4784         fi
4785         ;;
4786     esac
4787   else
4788     case "$target" in
4789       *-*-solaris2.1[[1-9]]*)
4790         # Solaris 11.x and Solaris 12 added PIE support.
4791         if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
4792           gcc_cv_ld_pie=yes
4793         fi
4794         ;;
4795     esac
4796   fi
4797 fi
4798 if test x"$gcc_cv_ld_pie" = xyes; then
4799         AC_DEFINE(HAVE_LD_PIE, 1,
4800 [Define if your linker supports PIE option.])
4801 fi
4802 AC_MSG_RESULT($gcc_cv_ld_pie)
4803
4804 AC_MSG_CHECKING(linker PIE support with copy reloc)
4805 gcc_cv_ld_pie_copyreloc=no
4806 if test $gcc_cv_ld_pie = yes ; then
4807   if test $in_tree_ld = yes ; then
4808     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
4809       gcc_cv_ld_pie_copyreloc=yes
4810     fi
4811   elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4812     # Check if linker supports -pie option with copy reloc
4813     case "$target" in
4814     i?86-*-linux* | x86_64-*-linux*)
4815       cat > conftest1.s <<EOF
4816         .globl  a_glob
4817         .data
4818         .type   a_glob, @object
4819         .size   a_glob, 4
4820 a_glob:
4821         .long   2
4822 EOF
4823       cat > conftest2.s <<EOF
4824         .text
4825         .globl  main
4826         .type   main, @function
4827 main:
4828         movl    %eax, a_glob(%rip)
4829         .size   main, .-main
4830         .globl  ptr
4831         .section        .data.rel,"aw",@progbits
4832         .type   ptr, @object
4833 ptr:
4834         .quad   a_glob
4835 EOF
4836       if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4837          && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
4838          && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4839          && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
4840         gcc_cv_ld_pie_copyreloc=yes
4841       fi
4842       rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
4843       ;;
4844     esac
4845   fi
4846 fi
4847 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
4848   [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
4849   [Define 0/1 if your linker supports -pie option with copy reloc.])
4850 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
4851
4852 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4853 gcc_cv_ld_eh_gc_sections=no
4854 if test $in_tree_ld = yes ; then
4855   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 \
4856      && test $in_tree_ld_is_elf = yes; then
4857     gcc_cv_ld_eh_gc_sections=yes
4858   fi
4859 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4860   cat > conftest.s <<EOF
4861         .section        .text
4862 .globl _start
4863         .type _start, @function
4864 _start:
4865         .long foo
4866         .size _start, .-_start
4867         .section        .text.foo,"ax",@progbits
4868         .type foo, @function
4869 foo:
4870         .long 0
4871         .size foo, .-foo
4872         .section        .gcc_except_table.foo,"a",@progbits
4873 .L0:
4874         .long 0
4875         .section        .eh_frame,"a",@progbits
4876         .long .L0
4877 EOF
4878   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4879     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4880          | grep "gc-sections option ignored" > /dev/null; then
4881       gcc_cv_ld_eh_gc_sections=no
4882     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4883          | grep gcc_except_table > /dev/null; then
4884       gcc_cv_ld_eh_gc_sections=yes
4885       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4886       if test x$gcc_cv_as_comdat_group != xyes; then
4887         gcc_cv_ld_eh_gc_sections=no
4888         cat > conftest.s <<EOF
4889         .section        .text
4890 .globl _start
4891         .type _start, @function
4892 _start:
4893         .long foo
4894         .size _start, .-_start
4895         .section        .gnu.linkonce.t.foo,"ax",@progbits
4896         .type foo, @function
4897 foo:
4898         .long 0
4899         .size foo, .-foo
4900         .section        .gcc_except_table.foo,"a",@progbits
4901 .L0:
4902         .long 0
4903         .section        .eh_frame,"a",@progbits
4904         .long .L0
4905 EOF
4906         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4907           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4908                | grep "gc-sections option ignored" > /dev/null; then
4909             gcc_cv_ld_eh_gc_sections=no
4910           elif $gcc_cv_objdump -h conftest 2> /dev/null \
4911                | grep gcc_except_table > /dev/null; then
4912             gcc_cv_ld_eh_gc_sections=yes
4913           fi
4914         fi
4915       fi
4916     fi
4917   fi
4918   rm -f conftest.s conftest.o conftest
4919 fi
4920 case "$target" in
4921   hppa*-*-linux*)
4922     # ??? This apparently exposes a binutils bug with PC-relative relocations.
4923     gcc_cv_ld_eh_gc_sections=no
4924     ;;
4925 esac
4926 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4927         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4928   [Define if your linker supports garbage collection of
4929    sections in presence of EH frames.])
4930 fi
4931 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4932
4933 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4934 gcc_cv_ld_eh_gc_sections_bug=no
4935 if test $in_tree_ld = yes ; then
4936   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 \
4937      && test $in_tree_ld_is_elf = yes; then
4938     gcc_cv_ld_eh_gc_sections_bug=yes
4939   fi
4940 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
4941   gcc_cv_ld_eh_gc_sections_bug=yes
4942   cat > conftest.s <<EOF
4943         .section        .text
4944 .globl _start
4945         .type _start, @function
4946 _start:
4947         .long foo
4948         .size _start, .-_start
4949         .section        .text.startup.foo,"ax",@progbits
4950         .type foo, @function
4951 foo:
4952         .long 0
4953         .size foo, .-foo
4954         .section        .gcc_except_table.foo,"a",@progbits
4955 .L0:
4956         .long 0
4957         .section        .eh_frame,"a",@progbits
4958         .long .L0
4959 EOF
4960   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4961     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4962          | grep "gc-sections option ignored" > /dev/null; then
4963       :
4964     elif $gcc_cv_objdump -h conftest 2> /dev/null \
4965          | grep gcc_except_table > /dev/null; then
4966       gcc_cv_ld_eh_gc_sections_bug=no
4967     fi
4968   fi
4969   rm -f conftest.s conftest.o conftest
4970 fi
4971 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4972         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4973   [Define if your linker has buggy garbage collection of
4974    sections support when .text.startup.foo like sections are used.])
4975 fi
4976 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4977
4978 AC_MSG_CHECKING(linker for compressed debug sections)
4979 # gold/gld support compressed debug sections since binutils 2.19/2.21
4980 if test $in_tree_ld = yes ; then
4981   gcc_cv_ld_compress_debug=0
4982   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 \
4983      && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
4984     gcc_cv_ld_compress_debug=2
4985     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
4986   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 \
4987      && test $in_tree_ld_is_elf = yes; then
4988     gcc_cv_ld_compress_debug=1
4989   fi
4990 elif echo "$ld_ver" | grep GNU > /dev/null; then
4991   gcc_cv_ld_compress_debug=1
4992   if test 0"$ld_date" -lt 20050308; then
4993     if test -n "$ld_date"; then
4994       # If there was date string, but was earlier than 2005-03-08, fail
4995       gcc_cv_ld_compress_debug=0
4996     elif test "$ld_vers_major" -lt 2; then
4997       gcc_cv_ld_compress_debug=0
4998     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
4999       gcc_cv_ld_compress_debug=0
5000     fi
5001   fi
5002   if test $ld_is_gold = yes; then
5003     gcc_cv_ld_compress_debug=2
5004     gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5005   fi
5006 else
5007 changequote(,)dnl
5008   case "${target}" in
5009     *-*-solaris2*)
5010       # Introduced in Solaris 11.2.
5011       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5012         gcc_cv_ld_compress_debug=3
5013         gcc_cv_ld_compress_debug_option="-z compress-sections"
5014       else
5015         gcc_cv_ld_compress_debug=0
5016       fi
5017       ;;
5018     *)
5019       # Assume linkers other than GNU ld don't support compessed debug
5020       # sections.
5021       gcc_cv_ld_compress_debug=0
5022       ;;
5023   esac
5024 changequote([,])dnl
5025 fi
5026 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5027 [Define to the level of your linker's compressed debug section support.])
5028 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5029 [Define to the linker option to enable compressed debug sections.])
5030 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5031
5032 # --------
5033 # UNSORTED
5034 # --------
5035
5036 AC_CACHE_CHECK(linker --as-needed support,
5037 gcc_cv_ld_as_needed,
5038 [gcc_cv_ld_as_needed=no
5039 gcc_cv_ld_as_needed_option='--as-needed'
5040 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5041 if test $in_tree_ld = yes ; then
5042   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 \
5043      && test $in_tree_ld_is_elf = yes; then
5044     gcc_cv_ld_as_needed=yes
5045   fi
5046 elif test x$gcc_cv_ld != x; then
5047         # Check if linker supports --as-needed and --no-as-needed options
5048         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
5049                 gcc_cv_ld_as_needed=yes
5050         else
5051           case "$target" in
5052             # Solaris 2 ld always supports -z ignore/-z record.
5053             *-*-solaris2*)
5054               gcc_cv_ld_as_needed=yes
5055               gcc_cv_ld_as_needed_option="-z ignore"
5056               gcc_cv_ld_no_as_needed_option="-z record"
5057               ;;
5058           esac
5059         fi
5060 fi
5061 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5062 # dl_iterate_phdr, i.e. since Solaris 11.
5063 case "$target" in
5064   *-*-solaris2.1[[1-9]]*)
5065     case "$target" in
5066     i?86-*-* | x86_64-*-*)
5067       if echo "$ld_ver" | grep GNU > /dev/null; then
5068         # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5069         gcc_cv_ld_as_needed=no
5070       fi
5071       ;;
5072     esac
5073     ;;
5074   *-*-solaris2*)
5075     gcc_cv_ld_as_needed=no
5076     ;;
5077 esac
5078 ])
5079 if test x"$gcc_cv_ld_as_needed" = xyes; then
5080         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5081 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5082         AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5083 [Define to the linker option to ignore unused dependencies.])
5084         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5085 [Define to the linker option to keep unused dependencies.])
5086 fi
5087
5088 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5089 saved_LDFLAGS="$LDFLAGS"
5090 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5091   LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5092   AC_LINK_IFELSE([int main(void) {return 0;}],
5093     [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5094 done
5095 LDFLAGS="$saved_LDFLAGS"
5096 if test "x$gcc_cv_ld_clearcap" = xyes; then
5097   AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5098 [Define if the linker supports clearing hardware capabilities via mapfile.])
5099   AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5100 fi
5101 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5102
5103 case "$target:$tm_file" in
5104   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5105   case "$target" in
5106      *le-*-linux*)
5107      emul_name="-melf64lppc"
5108       ;;
5109      *-*-linux*)
5110      emul_name="-melf64ppc"
5111       ;;
5112      *-*-freebsd*)
5113      emul_name="-melf64ppc_fbsd"
5114       ;;
5115   esac
5116     AC_CACHE_CHECK(linker support for omitting dot symbols,
5117     gcc_cv_ld_no_dot_syms,
5118     [gcc_cv_ld_no_dot_syms=no
5119     if test x"$ld_is_gold" = xyes; then
5120       gcc_cv_ld_no_dot_syms=yes
5121     elif test $in_tree_ld = yes ; then
5122       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
5123         gcc_cv_ld_no_dot_syms=yes
5124       fi
5125     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5126       cat > conftest1.s <<EOF
5127         .text
5128         bl .foo
5129 EOF
5130       cat > conftest2.s <<EOF
5131         .section ".opd","aw"
5132         .align 3
5133         .globl foo
5134         .type foo,@function
5135 foo:
5136         .quad .LEfoo,.TOC.@tocbase,0
5137         .text
5138 .LEfoo:
5139         blr
5140         .size foo,.-.LEfoo
5141 EOF
5142       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5143          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5144          && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5145         gcc_cv_ld_no_dot_syms=yes
5146       fi
5147       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5148     fi
5149     ])
5150     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5151       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5152     [Define if your PowerPC64 linker only needs function descriptor syms.])
5153     fi
5154
5155     AC_CACHE_CHECK(linker large toc support,
5156     gcc_cv_ld_large_toc,
5157     [gcc_cv_ld_large_toc=no
5158     if test x"$ld_is_gold" = xyes; then
5159       gcc_cv_ld_large_toc=yes
5160     elif test $in_tree_ld = yes ; then
5161       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
5162         gcc_cv_ld_large_toc=yes
5163       fi
5164     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5165       cat > conftest.s <<EOF
5166         .section ".tbss","awT",@nobits
5167         .align 3
5168 ie0:    .space 8
5169         .global _start
5170         .text
5171 _start:
5172         addis 9,13,ie0@got@tprel@ha
5173         ld 9,ie0@got@tprel@l(9)
5174 EOF
5175       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5176          && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5177         gcc_cv_ld_large_toc=yes
5178       fi
5179       rm -f conftest conftest.o conftest.s
5180     fi
5181     ])
5182     if test x"$gcc_cv_ld_large_toc" = xyes; then
5183       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5184     [Define if your PowerPC64 linker supports a large TOC.])
5185     fi
5186
5187     AC_CACHE_CHECK(linker toc pointer alignment,
5188     gcc_cv_ld_toc_align,
5189     [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5190       cat > conftest.s <<EOF
5191         .global _start
5192         .text
5193 _start:
5194         addis 9,2,x@got@ha
5195         .section .data.rel.ro,"aw",@progbits
5196         .p2align 16
5197         .space 32768
5198 x:      .quad .TOC.
5199 EOF
5200       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5201          && $gcc_cv_ld $emul_name -o conftest conftest.o > /dev/null 2>&1; then
5202         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)) }'`
5203       fi
5204       rm -f conftest conftest.o conftest.s
5205     fi
5206     ])
5207     if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5208       AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5209     [Define to .TOC. alignment forced by your linker.])
5210     fi
5211     ;;
5212 esac
5213
5214 case "$target" in
5215   *-*-aix*)
5216     AC_CACHE_CHECK(linker large toc support,
5217     gcc_cv_ld_large_toc,
5218     [gcc_cv_ld_large_toc=no
5219     if test x$gcc_cv_as != x ; then
5220       cat > conftest.s <<EOF
5221         .toc
5222 LC..1:
5223         .tc a[[TC]],a[[RW]]
5224         .extern a[[RW]]
5225         .csect .text[[PR]]
5226 .largetoctest:
5227         addis 9,LC..1@u(2)
5228         ld 3,LC..1@l(9)
5229 EOF
5230       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5231         gcc_cv_ld_large_toc=yes
5232       fi
5233       rm -f conftest conftest.o conftest.s
5234     fi
5235     ])
5236     if test x"$gcc_cv_ld_large_toc" = xyes; then
5237       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5238     [Define if your PowerPC64 linker supports a large TOC.])
5239     fi
5240     ;;
5241 esac
5242
5243 AC_CACHE_CHECK(linker --build-id support,
5244   gcc_cv_ld_buildid,
5245   [gcc_cv_ld_buildid=no
5246   if test $in_tree_ld = yes ; then
5247     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5248        "$gcc_cv_gld_minor_version" -ge 18 -o \
5249        "$gcc_cv_gld_major_version" -gt 2 \
5250        && test $in_tree_ld_is_elf = yes; then
5251       gcc_cv_ld_buildid=yes
5252     fi
5253   elif test x$gcc_cv_ld != x; then
5254     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
5255       gcc_cv_ld_buildid=yes
5256     fi
5257   fi])
5258 if test x"$gcc_cv_ld_buildid" = xyes; then
5259   AC_DEFINE(HAVE_LD_BUILDID, 1,
5260   [Define if your linker supports --build-id.])
5261 fi
5262
5263 AC_ARG_ENABLE(linker-build-id,
5264 [AS_HELP_STRING([--enable-linker-build-id],
5265                 [compiler will always pass --build-id to linker])],
5266 [],
5267 enable_linker_build_id=no)
5268
5269 if test x"$enable_linker_build_id" = xyes; then
5270   if test x"$gcc_cv_ld_buildid" = xyes; then
5271     AC_DEFINE(ENABLE_LD_BUILDID, 1,
5272     [Define if gcc should always pass --build-id to linker.])
5273   else
5274     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5275   fi
5276 fi
5277
5278 # In binutils 2.21, GNU ld gained support for new emulations fully
5279 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
5280 AC_CACHE_CHECK(linker *_sol2 emulation support,
5281   gcc_cv_ld_sol2_emulation,
5282   [gcc_cv_ld_sol2_emulation=no
5283   if test $in_tree_ld = yes ; then
5284     if test "$gcc_cv_gld_major_version" -eq 2 -a \
5285        "$gcc_cv_gld_minor_version" -ge 21 -o \
5286        "$gcc_cv_gld_major_version" -gt 2 \
5287        && test $in_tree_ld_is_elf = yes; then
5288       gcc_cv_ld_sol2_emulation=yes
5289     fi
5290   elif test x$gcc_cv_ld != x; then
5291     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
5292        grep _sol2 > /dev/null; then
5293       gcc_cv_ld_sol2_emulation=yes
5294     fi
5295   fi])
5296 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
5297   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
5298   [Define if your linker supports the *_sol2 emulations.])
5299 fi
5300
5301 AC_CACHE_CHECK(linker --sysroot support,
5302   gcc_cv_ld_sysroot,
5303   [gcc_cv_ld_sysroot=no
5304   if test $in_tree_ld = yes ; then
5305       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
5306         gcc_cv_ld_sysroot=yes
5307       fi
5308   elif test x$gcc_cv_ld != x; then 
5309     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
5310       gcc_cv_ld_sysroot=yes
5311     fi
5312   fi])
5313 if test x"$gcc_cv_ld_sysroot" = xyes; then
5314   AC_DEFINE(HAVE_LD_SYSROOT, 1,
5315   [Define if your linker supports --sysroot.])
5316 fi        
5317
5318 case $target in
5319 *-*-solaris2*)
5320   # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
5321   AC_CACHE_CHECK([system-provided CRTs on Solaris],
5322     gcc_cv_solaris_crts,
5323     [gcc_cv_solaris_crts=no
5324      if test x$host != x$target; then
5325        if test "x$with_sysroot" = xyes; then
5326          target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
5327        else
5328          target_sysroot="${with_sysroot}"
5329        fi
5330      fi
5331      target_libdir="$target_sysroot/usr/lib"
5332      # At the time they were added, gcrt1.o became a symlink for backwards
5333      # compatibility on x86, while crt1.o was added on sparc, so check for that.
5334      case $target in
5335        i?86-*-solaris2* | x86_64-*-solaris2*)
5336          if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
5337          ;;
5338        sparc*-*-solaris2*)
5339          if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
5340          ;;
5341      esac])
5342   ;;
5343 esac
5344 if test x$gcc_cv_solaris_crts = xyes; then
5345   AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
5346             [Define if the system-provided CRTs are present on Solaris.])
5347 fi
5348
5349 # Test for stack protector support in target C library.
5350 AC_CACHE_CHECK(__stack_chk_fail in target C library,
5351       gcc_cv_libc_provides_ssp,
5352       [gcc_cv_libc_provides_ssp=no
5353     case "$target" in
5354        *-*-musl*)
5355          # All versions of musl provide stack protector
5356          gcc_cv_libc_provides_ssp=yes;;
5357        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
5358       # glibc 2.4 and later provides __stack_chk_fail and
5359       # either __stack_chk_guard, or TLS access to stack guard canary.
5360       GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
5361       [if test -f $target_header_dir/features.h \
5362          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
5363             $target_header_dir/features.h > /dev/null; then
5364         if $EGREP '^[   ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
5365              $target_header_dir/features.h > /dev/null && \
5366              test -f $target_header_dir/bits/uClibc_config.h && \
5367              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
5368              $target_header_dir/bits/uClibc_config.h > /dev/null; then
5369           gcc_cv_libc_provides_ssp=yes
5370         fi
5371       # all versions of Bionic support stack protector
5372       elif test -f $target_header_dir/sys/cdefs.h \
5373         && $EGREP '^[  ]*#[    ]*define[       ]+__BIONIC__[   ]+1' \
5374            $target_header_dir/sys/cdefs.h > /dev/null; then
5375          gcc_cv_libc_provides_ssp=yes
5376       fi]])
5377         ;;
5378        *-*-gnu*)
5379          # Avoid complicated tests (see
5380          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
5381          # simply assert that glibc does provide this, which is true for all
5382          # realistically usable GNU/Hurd configurations.
5383          # All supported versions of musl provide it as well
5384          gcc_cv_libc_provides_ssp=yes;;
5385        *-*-darwin* | *-*-freebsd*)
5386          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
5387            [echo "no __stack_chk_fail on this target"])
5388         ;;
5389   *) gcc_cv_libc_provides_ssp=no ;;
5390     esac])
5391
5392 if test x$gcc_cv_libc_provides_ssp = xyes; then
5393   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
5394             [Define if your target C library provides stack protector support])
5395 fi
5396
5397 # Check whether --enable-default-ssp was given.
5398 AC_ARG_ENABLE(default-ssp,
5399 [AS_HELP_STRING([--enable-default-ssp],
5400   [enable Stack Smashing Protection as default])],[
5401 if test x$gcc_cv_libc_provides_ssp = xyes; then
5402   case "$target" in
5403     ia64*-*-*) enable_default_ssp=no ;;
5404     *) enable_default_ssp=$enableval ;;
5405   esac
5406 else
5407   enable_default_ssp=no
5408 fi],
5409 enable_default_ssp=no)
5410 if test x$enable_default_ssp == xyes ; then
5411   AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
5412       [Define if your target supports default stack protector and it is enabled.])
5413 fi
5414 AC_SUBST([enable_default_ssp])
5415
5416 # Test for <sys/sdt.h> on the target.
5417 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
5418 AC_MSG_CHECKING(sys/sdt.h in the target C library)
5419 have_sys_sdt_h=no
5420 if test -f $target_header_dir/sys/sdt.h; then
5421   have_sys_sdt_h=yes
5422   AC_DEFINE(HAVE_SYS_SDT_H, 1,
5423             [Define if your target C library provides sys/sdt.h])
5424 fi
5425 AC_MSG_RESULT($have_sys_sdt_h)
5426
5427 # Check if TFmode long double should be used by default or not.
5428 # Some glibc targets used DFmode long double, but with glibc 2.4
5429 # and later they can use TFmode.
5430 case "$target" in
5431   powerpc*-*-linux* | \
5432   sparc*-*-linux* | \
5433   s390*-*-linux* | \
5434   alpha*-*-linux*)
5435     AC_ARG_WITH(long-double-128,
5436       [AS_HELP_STRING([--with-long-double-128],
5437                       [use 128-bit long double by default])],
5438       gcc_cv_target_ldbl128="$with_long_double_128",
5439       [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
5440       [gcc_cv_target_ldbl128=no
5441       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
5442         $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
5443       && gcc_cv_target_ldbl128=yes
5444       ]])])
5445     ;;
5446 esac
5447 if test x$gcc_cv_target_ldbl128 = xyes; then
5448   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
5449             [Define if TFmode long double should be the default])
5450 fi
5451
5452 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
5453 gcc_cv_target_dl_iterate_phdr=unknown
5454 case "$target" in
5455   # Restrict to Solaris 11+.  While most of the Solaris 11 linker changes
5456   # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
5457   # libdl there, both complicating its use and breaking compatibility
5458   # between Solaris 10 updates.
5459   *-*-solaris2.1[[1-9]]*)
5460     # <link.h> needs both a dl_iterate_phdr declaration and support for
5461     # compilation with largefile support.
5462     if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
5463       && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
5464       gcc_cv_target_dl_iterate_phdr=yes
5465     else
5466       gcc_cv_target_dl_iterate_phdr=no
5467     fi
5468     ;;
5469   *-*-dragonfly* | *-*-freebsd*)
5470     if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
5471       gcc_cv_target_dl_iterate_phdr=yes
5472     else
5473       gcc_cv_target_dl_iterate_phdr=no
5474     fi
5475     ;;
5476   *-linux-musl*)
5477     gcc_cv_target_dl_iterate_phdr=yes
5478     ;;
5479 esac
5480 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
5481 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
5482    AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
5483 [Define if your target C library provides the `dl_iterate_phdr' function.])
5484 fi
5485 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
5486
5487 # We no longer support different GC mechanisms.  Emit an error if
5488 # the user configures with --with-gc.
5489 AC_ARG_WITH(gc,
5490 [AS_HELP_STRING([--with-gc={page,zone}],
5491                 [this option is not supported anymore.  It used to choose
5492                  the garbage collection mechanism to use with the compiler])],
5493 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
5494 [])
5495
5496 # Libraries to use on the host.  This will normally be set by the top
5497 # level Makefile.  Here we simply capture the value for our Makefile.
5498 if test -z "${HOST_LIBS+set}"; then
5499   HOST_LIBS=
5500 fi
5501 AC_SUBST(HOST_LIBS)
5502
5503 # Use the system's zlib library.
5504 AM_ZLIB
5505
5506 dnl Very limited version of automake's enable-maintainer-mode
5507
5508 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
5509   dnl maintainer-mode is disabled by default
5510   AC_ARG_ENABLE(maintainer-mode,
5511 [AS_HELP_STRING([--enable-maintainer-mode],
5512                 [enable make rules and dependencies not useful
5513                  (and sometimes confusing) to the casual installer])],
5514       maintainer_mode=$enableval,
5515       maintainer_mode=no)
5516
5517 AC_MSG_RESULT($maintainer_mode)
5518
5519 if test "$maintainer_mode" = "yes"; then
5520   MAINT=''
5521 else
5522   MAINT='#'
5523 fi
5524 AC_SUBST(MAINT)dnl
5525
5526 dnl Whether to prevent multiple front-ends from linking at the same time
5527
5528 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
5529   AC_ARG_ENABLE(link-mutex,
5530 [AS_HELP_STRING([--enable-link-mutex],
5531                 [avoid linking multiple front-ends at once to avoid thrashing
5532                  on the build machine])],
5533       do_link_mutex=$enableval,
5534       do_link_mutex=no)
5535 AC_MSG_RESULT($do_link_mutex)
5536
5537 if test "$do_link_mutex" = "yes"; then
5538    DO_LINK_MUTEX=true
5539 else
5540    DO_LINK_MUTEX=false
5541 fi
5542 AC_SUBST(DO_LINK_MUTEX)
5543
5544 # --------------
5545 # Language hooks
5546 # --------------
5547
5548 # Make empty files to contain the specs and options for each language.
5549 # Then add #include lines to for a compiler that has specs and/or options.
5550
5551 subdirs=
5552 lang_opt_files=
5553 lang_specs_files=
5554 lang_tree_files=
5555 # These (without "all_") are set in each config-lang.in.
5556 # `language' must be a single word so is spelled singularly.
5557 all_languages=
5558 all_compilers=
5559 all_outputs='Makefile'
5560 # List of language makefile fragments.
5561 all_lang_makefrags=
5562 # Additional files for gengtype
5563 all_gtfiles="$target_gtfiles"
5564
5565 # These are the languages that are set in --enable-languages,
5566 # and are available in the GCC tree.
5567 all_selected_languages=
5568
5569 # Add the language fragments.
5570 # Languages are added via two mechanisms.  Some information must be
5571 # recorded in makefile variables, these are defined in config-lang.in.
5572 # We accumulate them and plug them into the main Makefile.
5573 # The other mechanism is a set of hooks for each of the main targets
5574 # like `clean', `install', etc.
5575
5576 language_hooks="Make-hooks"
5577
5578 for lang in ${srcdir}/*/config-lang.in
5579 do
5580 changequote(,)dnl
5581         test "$lang" = "${srcdir}/*/config-lang.in" && continue
5582
5583         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
5584         if test "x$lang_alias" = x
5585         then
5586               echo "$lang doesn't set \$language." 1>&2
5587               exit 1
5588         fi
5589         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
5590         subdirs="$subdirs $subdir"
5591
5592         # $gcc_subdir is where the gcc integration files are to be found
5593         # for a language, both for internal compiler purposes (compiler
5594         # sources implementing front-end to GCC tree converters), and for
5595         # build infrastructure purposes (Make-lang.in, etc.)
5596         #
5597         # This will be <subdir> (relative to $srcdir) if a line like 
5598         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
5599         # is found in <langdir>/config-lang.in, and will remain <langdir>
5600         # otherwise.
5601         #
5602         # Except for the language alias (fetched above), the regular
5603         # "config-lang.in" contents are always retrieved from $gcc_subdir,
5604         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
5605         # only this and the language alias.
5606
5607         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
5608         if [ "$gcc_subdir" = "" ]; then
5609            gcc_subdir="$subdir"
5610         fi
5611
5612         case ",$enable_languages," in
5613         *,$lang_alias,*)
5614             all_selected_languages="$all_selected_languages $lang_alias"
5615             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
5616                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
5617             fi
5618             ;;
5619         esac
5620 changequote([,])dnl
5621
5622         language=
5623         boot_language=
5624         compilers=
5625         outputs=
5626         gtfiles=
5627         subdir_requires=
5628         . ${srcdir}/$gcc_subdir/config-lang.in
5629         if test "x$language" = x
5630         then
5631                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
5632                 exit 1
5633         fi
5634
5635         ok=:
5636         case ",$enable_languages," in
5637                 *,$lang_alias,*) ;;
5638                 *)
5639                         for i in $subdir_requires; do
5640                                 test -f "${srcdir}/$i/config-lang.in" && continue
5641                                 ok=false
5642                                 break
5643                         done
5644                 ;;
5645         esac
5646         $ok || continue
5647
5648         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
5649         if test -f $srcdir/$gcc_subdir/lang.opt; then
5650             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
5651             all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
5652         fi
5653         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
5654             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
5655         fi
5656         all_languages="$all_languages $language"
5657         all_compilers="$all_compilers $compilers"
5658         all_outputs="$all_outputs $outputs"
5659         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
5660         case ",$enable_languages," in
5661                 *,lto,*)
5662                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
5663                     enable_lto=yes
5664                     AC_SUBST(enable_lto)
5665                     ;;
5666                 *) ;;
5667         esac
5668 done
5669
5670 check_languages=
5671 for language in $all_selected_languages
5672 do
5673         check_languages="$check_languages check-$language"
5674 done
5675
5676 # We link each language in with a set of hooks, reached indirectly via
5677 # lang.${target}.  Only do so for selected languages.
5678
5679 rm -f Make-hooks
5680 touch Make-hooks
5681 target_list="all.cross start.encap rest.encap tags \
5682         install-common install-man install-info install-pdf install-html dvi \
5683         pdf html uninstall info man srcextra srcman srcinfo \
5684         mostlyclean clean distclean maintainer-clean install-plugin"
5685
5686 for t in $target_list
5687 do
5688         x=
5689         for lang in $all_selected_languages
5690         do
5691                 x="$x $lang.$t"
5692         done
5693         echo "lang.$t: $x" >> Make-hooks
5694 done
5695
5696 # --------
5697 # Option include files
5698 # --------
5699
5700 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
5701 option_includes="option-includes.mk"
5702 AC_SUBST_FILE(option_includes)
5703
5704 # --------
5705 # UNSORTED
5706 # --------
5707
5708 # Create .gdbinit.
5709
5710 echo "dir ." > .gdbinit
5711 echo "dir ${srcdir}" >> .gdbinit
5712 if test x$gdb_needs_out_file_path = xyes
5713 then
5714         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
5715 fi
5716 if test "x$subdirs" != x; then
5717         for s in $subdirs
5718         do
5719                 echo "dir ${srcdir}/$s" >> .gdbinit
5720         done
5721 fi
5722 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
5723 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
5724
5725 # Put a breakpoint on __asan_report_error to help with debugging buffer
5726 # overflow.
5727 case "$CFLAGS" in
5728 *-fsanitize=address*)
5729   echo "source ${srcdir}/gdbasan.in" >> .gdbinit
5730   ;;
5731 esac
5732
5733 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
5734 AC_SUBST(gcc_tooldir)
5735 AC_SUBST(dollar)
5736
5737 # Find a directory in which to install a shared libgcc.
5738
5739 AC_ARG_ENABLE(version-specific-runtime-libs,
5740 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
5741                 [specify that runtime libraries should be
5742                  installed in a compiler-specific directory])])
5743
5744 # Substitute configuration variables
5745 AC_SUBST(subdirs)
5746 AC_SUBST(srcdir)
5747 AC_SUBST(all_compilers)
5748 AC_SUBST(all_gtfiles)
5749 AC_SUBST(all_lang_makefrags)
5750 AC_SUBST(all_languages)
5751 AC_SUBST(all_selected_languages)
5752 AC_SUBST(build_exeext)
5753 AC_SUBST(build_install_headers_dir)
5754 AC_SUBST(build_xm_file_list)
5755 AC_SUBST(build_xm_include_list)
5756 AC_SUBST(build_xm_defines)
5757 AC_SUBST(build_file_translate)
5758 AC_SUBST(check_languages)
5759 AC_SUBST(cpp_install_dir)
5760 AC_SUBST(xmake_file)
5761 AC_SUBST(tmake_file)
5762 AC_SUBST(TM_ENDIAN_CONFIG)
5763 AC_SUBST(TM_MULTILIB_CONFIG)
5764 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
5765 AC_SUBST(extra_gcc_objs)
5766 AC_SUBST(user_headers_inc_next_pre)
5767 AC_SUBST(user_headers_inc_next_post)
5768 AC_SUBST(extra_headers_list)
5769 AC_SUBST(extra_objs)
5770 AC_SUBST(extra_programs)
5771 AC_SUBST(float_h_file)
5772 AC_SUBST(gcc_config_arguments)
5773 AC_SUBST(gcc_gxx_include_dir)
5774 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
5775 AC_SUBST(host_exeext)
5776 AC_SUBST(host_xm_file_list)
5777 AC_SUBST(host_xm_include_list)
5778 AC_SUBST(host_xm_defines)
5779 AC_SUBST(out_host_hook_obj)
5780 AC_SUBST(install)
5781 AC_SUBST(lang_opt_files)
5782 AC_SUBST(lang_specs_files)
5783 AC_SUBST(lang_tree_files)
5784 AC_SUBST(local_prefix)
5785 AC_SUBST(md_file)
5786 AC_SUBST(objc_boehm_gc)
5787 AC_SUBST(out_file)
5788 AC_SUBST(out_object_file)
5789 AC_SUBST(common_out_file)
5790 AC_SUBST(common_out_object_file)
5791 AC_SUBST(tm_file_list)
5792 AC_SUBST(tm_include_list)
5793 AC_SUBST(tm_defines)
5794 AC_SUBST(tm_p_file_list)
5795 AC_SUBST(tm_p_include_list)
5796 AC_SUBST(xm_file_list)
5797 AC_SUBST(xm_include_list)
5798 AC_SUBST(xm_defines)
5799 AC_SUBST(use_gcc_stdint)
5800 AC_SUBST(c_target_objs)
5801 AC_SUBST(cxx_target_objs)
5802 AC_SUBST(fortran_target_objs)
5803 AC_SUBST(target_cpu_default)
5804
5805 AC_SUBST_FILE(language_hooks)
5806
5807 # Echo link setup.
5808 if test x${build} = x${host} ; then
5809   if test x${host} = x${target} ; then
5810     echo "Links are now set up to build a native compiler for ${target}." 1>&2
5811   else
5812     echo "Links are now set up to build a cross-compiler" 1>&2
5813     echo " from ${host} to ${target}." 1>&2
5814   fi
5815 else
5816   if test x${host} = x${target} ; then
5817     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5818     echo " for ${target}." 1>&2
5819   else
5820     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5821     echo " from ${host} to ${target}." 1>&2
5822   fi
5823 fi
5824
5825 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5826 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5827
5828 AC_ARG_VAR(ISLLIBS,[How to link ISL])
5829 AC_ARG_VAR(ISLINC,[How to find ISL include files])
5830 if test "x${ISLLIBS}" != "x" ; then 
5831    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
5832 fi
5833
5834 # Check whether isl_schedule_constraints_compute_schedule is available;
5835 # it's new in ISL-0.13.
5836 # Check whether isl_options_set_schedule_serialize_sccs is available;
5837 # it's new in ISL-0.15.
5838 if test "x${ISLLIBS}" != "x" ; then
5839   saved_CXXFLAGS="$CXXFLAGS"
5840   CXXFLAGS="$CXXFLAGS $ISLINC"
5841   saved_LIBS="$LIBS"
5842   LIBS="$LIBS $ISLLIBS $GMPLIBS"
5843
5844   AC_MSG_CHECKING([Checking for isl_schedule_constraints_compute_schedule])
5845   AC_TRY_LINK([#include <isl/schedule.h>],
5846               [isl_schedule_constraints_compute_schedule (NULL);],
5847               [ac_has_isl_schedule_constraints_compute_schedule=yes],
5848               [ac_has_isl_schedule_constraints_compute_schedule=no])
5849   AC_MSG_RESULT($ac_has_isl_schedule_constraints_compute_schedule)
5850
5851   AC_MSG_CHECKING([Checking for isl_options_set_schedule_serialize_sccs])
5852   AC_TRY_LINK([#include <isl/schedule.h>],
5853               [isl_options_set_schedule_serialize_sccs (NULL, 0);],
5854               [ac_has_isl_options_set_schedule_serialize_sccs=yes],
5855               [ac_has_isl_options_set_schedule_serialize_sccs=no])
5856   AC_MSG_RESULT($ac_has_isl_options_set_schedule_serialize_sccs)
5857
5858   AC_MSG_CHECKING([Checking for isl_ctx_get_max_operations])
5859   AC_TRY_LINK([#include <isl/ctx.h>],
5860               [isl_ctx_get_max_operations (isl_ctx_alloc ());],
5861               [ac_has_isl_ctx_get_max_operations=yes],
5862               [ac_has_isl_ctx_get_max_operations=no])
5863   AC_MSG_RESULT($ac_has_isl_ctx_get_max_operations)
5864
5865   LIBS="$saved_LIBS"
5866   CXXFLAGS="$saved_CXXFLAGS"
5867
5868   if test x"$ac_has_isl_schedule_constraints_compute_schedule" = x"yes"; then
5869      AC_DEFINE(HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE, 1,
5870                [Define if isl_schedule_constraints_compute_schedule exists.])
5871   fi
5872
5873   if test x"$ac_has_isl_options_set_schedule_serialize_sccs" = x"yes"; then
5874      AC_DEFINE(HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS, 1,
5875                [Define if isl_options_set_schedule_serialize_sccs exists.])
5876   fi
5877   if test x"$ac_has_isl_ctx_get_max_operations" = x"yes"; then
5878      AC_DEFINE(HAVE_ISL_CTX_MAX_OPERATIONS, 1,
5879                [Define if isl_ctx_get_max_operations exists.])
5880   fi
5881 fi
5882
5883 GCC_ENABLE_PLUGINS
5884 AC_SUBST(pluginlibs)
5885 AC_SUBST(enable_plugin)
5886 if test x"$enable_plugin" = x"yes"; then
5887   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5888 fi
5889
5890
5891 # Enable --enable-host-shared
5892 AC_ARG_ENABLE(host-shared,
5893 [AS_HELP_STRING([--enable-host-shared],
5894                 [build host code as shared libraries])],
5895 [PICFLAG=-fPIC], [PICFLAG=])
5896 AC_SUBST(enable_host_shared)
5897 AC_SUBST(PICFLAG)
5898
5899
5900 AC_ARG_ENABLE(libquadmath-support,
5901 [AS_HELP_STRING([--disable-libquadmath-support],
5902   [disable libquadmath support for Fortran])],
5903 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5904 ENABLE_LIBQUADMATH_SUPPORT=yes)
5905 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5906   AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5907             [Define to 1 to enable libquadmath support])
5908 fi
5909
5910
5911 # Specify what hash style to use by default.
5912 AC_ARG_WITH([linker-hash-style],
5913 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5914                 [specify the linker hash style])],
5915 [case x"$withval" in
5916    xsysv)
5917      LINKER_HASH_STYLE=sysv
5918      ;;
5919    xgnu)
5920      LINKER_HASH_STYLE=gnu
5921      ;;
5922    xboth)
5923      LINKER_HASH_STYLE=both
5924      ;;
5925    *)
5926      AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5927      ;;
5928  esac],
5929 [LINKER_HASH_STYLE=''])
5930 if test x"${LINKER_HASH_STYLE}" != x; then
5931   AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5932                                          [The linker hash style])
5933 fi
5934
5935 # Specify what should be the default of -fdiagnostics-color option.
5936 AC_ARG_WITH([diagnostics-color],
5937 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
5938                 [specify the default of -fdiagnostics-color option
5939                  auto-if-env stands for -fdiagnostics-color=auto if
5940                  GCC_COLOR environment variable is present and
5941                  -fdiagnostics-color=never otherwise])],
5942 [case x"$withval" in
5943    xnever)
5944      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
5945      ;;
5946    xauto)
5947      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
5948      ;;
5949    xauto-if-env)
5950      DIAGNOSTICS_COLOR_DEFAULT=-1
5951      ;;
5952    xalways)
5953      DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
5954      ;;
5955    *)
5956      AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
5957      ;;
5958  esac],
5959 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
5960 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
5961                    [The default for -fdiagnostics-color option])
5962
5963 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
5964 # of jit/jit-playback.c.
5965 cat > gcc-driver-name.h <<EOF
5966 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
5967 EOF
5968
5969 # Check whether --enable-default-pie was given.
5970 AC_ARG_ENABLE(default-pie,
5971 [AS_HELP_STRING([--enable-default-pie],
5972   [enable Position Independent Executable as default])],
5973 enable_default_pie=$enableval,
5974 enable_default_pie=no)
5975 if test x$enable_default_pie == xyes ; then
5976   AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
5977       [Define if your target supports default PIE and it is enabled.])
5978 fi
5979 AC_SUBST([enable_default_pie])
5980
5981 # Check if -fno-PIE works.
5982 AC_CACHE_CHECK([for -fno-PIE option],
5983   [gcc_cv_c_no_fpie],
5984   [saved_CXXFLAGS="$CXXFLAGS"
5985    CXXFLAGS="$CXXFLAGS -fno-PIE"
5986    AC_COMPILE_IFELSE([int main(void) {return 0;}],
5987      [gcc_cv_c_no_fpie=yes],
5988      [gcc_cv_c_no_fpie=no])
5989    CXXFLAGS="$saved_CXXFLAGS"])
5990 if test "$gcc_cv_c_no_fpie" = "yes"; then
5991   NO_PIE_CFLAGS="-fno-PIE"
5992 fi
5993 AC_SUBST([NO_PIE_CFLAGS])
5994
5995 # Check if -no-pie works.
5996 AC_CACHE_CHECK([for -no-pie option],
5997   [gcc_cv_no_pie],
5998   [saved_LDFLAGS="$LDFLAGS"
5999    LDFLAGS="$LDFLAGS -no-pie"
6000    AC_LINK_IFELSE([int main(void) {return 0;}],
6001      [gcc_cv_no_pie=yes],
6002      [gcc_cv_no_pie=no])
6003    LDFLAGS="$saved_LDFLAGS"])
6004 if test "$gcc_cv_no_pie" = "yes"; then
6005   NO_PIE_FLAG="-no-pie"
6006 fi
6007 AC_SUBST([NO_PIE_FLAG])
6008
6009 # Check linker supports '-z bndplt'
6010 ld_bndplt_support=no
6011 AC_MSG_CHECKING(linker -z bndplt option)
6012 if test x"$ld_is_gold" = xno; then
6013   if test $in_tree_ld = yes ; then
6014     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
6015       ld_bndplt_support=yes
6016     fi
6017   elif test x$gcc_cv_ld != x; then
6018     # Check if linker supports -a bndplt option
6019     if $gcc_cv_ld --help 2>/dev/null | grep -- '-z bndplt' > /dev/null; then
6020       ld_bndplt_support=yes
6021     fi
6022   fi
6023 fi
6024 if test x"$ld_bndplt_support" = xyes; then
6025   AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6026         [Define if your linker supports -z bndplt])
6027 fi
6028 AC_MSG_RESULT($ld_bndplt_support)
6029
6030 # Configure the subdirectories
6031 # AC_CONFIG_SUBDIRS($subdirs)
6032
6033 # Create the Makefile
6034 # and configure language subdirectories
6035 AC_CONFIG_FILES($all_outputs)
6036
6037 AC_CONFIG_COMMANDS([default],
6038 [
6039 case ${CONFIG_HEADERS} in
6040   *auto-host.h:config.in*)
6041   echo > cstamp-h ;;
6042 esac
6043 # Make sure all the subdirs exist.
6044 for d in $subdirs doc build common c-family
6045 do
6046     test -d $d || mkdir $d
6047 done
6048 ], 
6049 [subdirs='$subdirs'])
6050 AC_OUTPUT
6051