Fix change log
[official-gcc.git] / gcc / configure.ac
blob9dd9c5d086ac7013f096f096e96957d8c46b7da3
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
5 # 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
7 #This file is part of GCC.
9 #GCC is free software; you can redistribute it and/or modify it under
10 #the terms of the GNU General Public License as published by the Free
11 #Software Foundation; either version 3, or (at your option) any later
12 #version.
14 #GCC is distributed in the hope that it will be useful, but WITHOUT
15 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 #for more details.
19 #You should have received a copy of the GNU General Public License
20 #along with GCC; see the file COPYING3.  If not see
21 #<http://www.gnu.org/licenses/>.
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
27 AC_PREREQ(2.64)
28 AC_INIT
29 AC_CONFIG_SRCDIR(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
32 gcc_version=`cat $srcdir/BASE-VER`
34 # Determine the host, build, and target systems
35 AC_CANONICAL_BUILD
36 AC_CANONICAL_HOST
37 AC_CANONICAL_TARGET
39 # Determine the noncanonical target name, for directory use.
40 ACX_NONCANONICAL_TARGET
42 # Determine the target- and build-specific subdirectories
43 GCC_TOPLEV_SUBDIRS
45 # Set program_transform_name
46 AC_ARG_PROGRAM
48 # Check for bogus environment variables.
49 # Test if LIBRARY_PATH contains the notation for the current directory
50 # since this would lead to problems installing/building glibc.
51 # LIBRARY_PATH contains the current directory if one of the following
52 # is true:
53 # - one of the terminals (":" and ";") is the first or last sign
54 # - two terminals occur directly after each other
55 # - the path contains an element with a dot in it
56 AC_MSG_CHECKING(LIBRARY_PATH variable)
57 changequote(,)dnl
58 case ${LIBRARY_PATH} in
59   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
60     library_path_setting="contains current directory"
61     ;;
62   *)
63     library_path_setting="ok"
64     ;;
65 esac
66 changequote([,])dnl
67 AC_MSG_RESULT($library_path_setting)
68 if test "$library_path_setting" != "ok"; then
69 AC_MSG_ERROR([
70 *** LIBRARY_PATH shouldn't contain the current directory when
71 *** building gcc. Please change the environment variable
72 *** and run configure again.])
75 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
76 # since this would lead to problems installing/building glibc.
77 # GCC_EXEC_PREFIX contains the current directory if one of the following
78 # is true:
79 # - one of the terminals (":" and ";") is the first or last sign
80 # - two terminals occur directly after each other
81 # - the path contains an element with a dot in it
82 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
83 changequote(,)dnl
84 case ${GCC_EXEC_PREFIX} in
85   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
86     gcc_exec_prefix_setting="contains current directory"
87     ;;
88   *)
89     gcc_exec_prefix_setting="ok"
90     ;;
91 esac
92 changequote([,])dnl
93 AC_MSG_RESULT($gcc_exec_prefix_setting)
94 if test "$gcc_exec_prefix_setting" != "ok"; then
95 AC_MSG_ERROR([
96 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
97 *** building gcc. Please change the environment variable
98 *** and run configure again.])
101 # -----------
102 # Directories
103 # -----------
105 # Specify the local prefix
106 local_prefix=
107 AC_ARG_WITH(local-prefix,
108 [  --with-local-prefix=DIR specifies directory to put local include],
109 [case "${withval}" in
110 yes)    AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
111 no)     ;;
112 *)      local_prefix=$with_local_prefix ;;
113 esac])
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117         local_prefix=/usr/local
120 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
121 # passed in by the toplevel make and thus we'd get different behavior
122 # depending on where we built the sources.
123 gcc_gxx_include_dir=
124 # Specify the g++ header file directory
125 AC_ARG_WITH(gxx-include-dir,
126 [  --with-gxx-include-dir=DIR
127                           specifies directory to put g++ header files],
128 [case "${withval}" in
129 yes)    AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
130 no)     ;;
131 *)      gcc_gxx_include_dir=$with_gxx_include_dir ;;
132 esac])
134 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
135 if test x${gcc_gxx_include_dir} = x; then
136   if test x${enable_version_specific_runtime_libs} = xyes; then
137     gcc_gxx_include_dir='${libsubdir}/include/c++'
138   else
139     libstdcxx_incdir='include/c++/$(version)'
140     if test x$host != x$target; then
141        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
142     fi
143     gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
144   fi
147 AC_ARG_WITH(cpp_install_dir,
148 [  --with-cpp-install-dir=DIR
149                           install the user visible C preprocessor in DIR
150                           (relative to PREFIX) as well as PREFIX/bin],
151 [if test x$withval = xyes; then
152   AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
153 elif test x$withval != xno; then
154   cpp_install_dir=$withval
155 fi])
157 # We would like to our source tree to be readonly.  However when releases or
158 # pre-releases are generated, the flex/bison generated files as well as the 
159 # various formats of manuals need to be included along with the rest of the
160 # sources.  Therefore we have --enable-generated-files-in-srcdir to do 
161 # just that.
163 AC_MSG_CHECKING([whether to place generated files in the source directory])
164   dnl generated-files-in-srcdir is disabled by default
165   AC_ARG_ENABLE(generated-files-in-srcdir, 
166 [  --enable-generated-files-in-srcdir
167                           put copies of generated files in source dir
168                           intended for creating source tarballs for users
169                           without texinfo bison or flex.],
170       generated_files_in_srcdir=$enableval,
171       generated_files_in_srcdir=no)
173 AC_MSG_RESULT($generated_files_in_srcdir)
175 if test "$generated_files_in_srcdir" = "yes"; then
176   GENINSRC=''
177 else
178   GENINSRC='#'
180 AC_SUBST(GENINSRC)
182 # -------------------
183 # Find default linker
184 # -------------------
186 # With GNU ld
187 AC_ARG_WITH(gnu-ld,
188 [  --with-gnu-ld           arrange to work with GNU ld.],
189 gnu_ld_flag="$with_gnu_ld",
190 gnu_ld_flag=no)
192 # With pre-defined ld
193 AC_ARG_WITH(ld,
194 [  --with-ld               arrange to use the specified ld (full pathname)],
195 DEFAULT_LINKER="$with_ld")
196 if test x"${DEFAULT_LINKER+set}" = x"set"; then
197   if test ! -x "$DEFAULT_LINKER"; then
198     AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
199   elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
200     gnu_ld_flag=yes
201   fi
202   AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
203         [Define to enable the use of a default linker.])
206 gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
207 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
209 AC_MSG_CHECKING([whether a default linker was specified])
210 if test x"${DEFAULT_LINKER+set}" = x"set"; then
211   if test x"$gnu_ld_flag" = x"no"; then
212     AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
213   else
214     AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
215   fi
216 else
217   AC_MSG_RESULT(no)
220 # With demangler in GNU ld
221 AC_ARG_WITH(demangler-in-ld,
222 [  --with-demangler-in-ld  try to use demangler in GNU ld.],
223 demangler_in_ld="$with_demangler_in_ld",
224 demangler_in_ld=no)
226 # ----------------------
227 # Find default assembler
228 # ----------------------
230 # With GNU as
231 AC_ARG_WITH(gnu-as,
232 [  --with-gnu-as           arrange to work with GNU as],
233 gas_flag="$with_gnu_as",
234 gas_flag=no)
236 AC_ARG_WITH(as,
237 [  --with-as               arrange to use the specified as (full pathname)],
238 DEFAULT_ASSEMBLER="$with_as")
239 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
240   if test ! -x "$DEFAULT_ASSEMBLER"; then
241     AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
242   elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
243     gas_flag=yes
244   fi
245   AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
246         [Define to enable the use of a default assembler.])
249 gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi`
250 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.])
252 AC_MSG_CHECKING([whether a default assembler was specified])
253 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
254   if test x"$gas_flag" = x"no"; then
255     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
256   else
257     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
258   fi
259 else
260   AC_MSG_RESULT(no)
263 # ---------------
264 # Find C compiler
265 # ---------------
267 # If a non-executable a.out is present (e.g. created by GNU as above even if
268 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
269 # file, even when creating an executable, so an execution test fails.
270 # Remove possible default executable files to avoid this.
272 # FIXME: This really belongs into AC_PROG_CC and can be removed once
273 # Autoconf includes it.
274 rm -f a.out a.exe b.out
276 # Find the native compiler
277 AC_PROG_CC
278 AM_PROG_CC_C_O
279 AC_PROG_CXX
280 ACX_PROG_GNAT([-I"$srcdir"/ada])
282 # autoconf is lame and doesn't give us any substitution variable for this.
283 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
284   NO_MINUS_C_MINUS_O=yes
285 else
286   OUTPUT_OPTION='-o $@'
288 AC_SUBST(NO_MINUS_C_MINUS_O)
289 AC_SUBST(OUTPUT_OPTION)
291 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
292 # optimizations to be activated explicitly by the toplevel.
293 case "$CC" in
294   */prev-gcc/xgcc*) ;;
295   *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
296 esac
297 AC_SUBST(CFLAGS)
299 # -------------------------
300 # Check C compiler features
301 # -------------------------
303 AC_USE_SYSTEM_EXTENSIONS
304 AC_PROG_CPP
305 AC_C_INLINE
307 # sizeof(char) is 1 by definition.
308 AC_CHECK_SIZEOF(void *)
309 AC_CHECK_SIZEOF(short)
310 AC_CHECK_SIZEOF(int)
311 AC_CHECK_SIZEOF(long)
312 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
313 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
314 GCC_STDINT_TYPES
316 # ---------------------
317 # Warnings and checking
318 # ---------------------
320 # Check $CC warning features (if it's GCC).
321 # We want to use -pedantic, but we don't want warnings about
322 # * 'long long'
323 # * variadic macros
324 # * overlong strings
325 # So, we only use -pedantic if we can disable those warnings.
327 ACX_PROG_CC_WARNING_OPTS(
328         m4_quote(m4_do([-W -Wall -Wwrite-strings -Wcast-qual])), [loose_warn])
329 ACX_PROG_CC_WARNING_OPTS(
330         m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
331         [c_loose_warn])
332 ACX_PROG_CC_WARNING_OPTS(
333         m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
334 ACX_PROG_CC_WARNING_OPTS(
335         m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
336 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
337         m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
338                        [-Wno-overlength-strings])), [strict_warn])
339 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
341 # The above macros do nothing if the compiler is not GCC.  However, the
342 # Makefile has more goo to add other flags, so these variables are used
343 # to enable warnings only for GCC.
344 warn_cflags=
345 warn_cxxflags=
346 if test "x$GCC" = "xyes"; then
347   warn_cflags='$(GCC_WARN_CFLAGS)'
348   warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
350 AC_SUBST(warn_cflags)
351 AC_SUBST(warn_cxxflags)
353 # Enable expensive internal checks
354 is_release=
355 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
356   is_release=yes
359 AC_ARG_ENABLE(checking,
360 [  --enable-checking[=LIST]
361                           enable expensive run-time checks.  With LIST,
362                           enable only specific categories of checks.
363                           Categories are: yes,no,all,none,release.
364                           Flags are: assert,df,fold,gc,gcac,gimple,misc,
365                           rtlflag,rtl,runtime,tree,valgrind,types.],
366 [ac_checking_flags="${enableval}"],[
367 # Determine the default checks.
368 if test x$is_release = x ; then
369   ac_checking_flags=yes
370 else
371   ac_checking_flags=release
372 fi])
373 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
374 for check in release $ac_checking_flags
376         case $check in
377         # these set all the flags to specific states
378         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
379                         ac_fold_checking= ; ac_gc_checking=1 ;
380                         ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
381                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
382                         ac_tree_checking=1 ; ac_valgrind_checking= ;
383                         ac_types_checking=1 ;;
384         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
385                         ac_fold_checking= ; ac_gc_checking= ;
386                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
387                         ac_rtlflag_checking= ; ac_runtime_checking= ;
388                         ac_tree_checking= ; ac_valgrind_checking= ;
389                         ac_types_checking= ;;
390         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
391                         ac_fold_checking=1 ; ac_gc_checking=1 ;
392                         ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
393                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
394                         ac_tree_checking=1 ; ac_valgrind_checking= ;
395                         ac_types_checking=1 ;;
396         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
397                         ac_fold_checking= ; ac_gc_checking= ;
398                         ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
399                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
400                         ac_tree_checking= ; ac_valgrind_checking= ;
401                         ac_types_checking= ;;
402         # these enable particular checks
403         assert)         ac_assert_checking=1 ;;
404         df)             ac_df_checking=1 ;;
405         fold)           ac_fold_checking=1 ;;
406         gc)             ac_gc_checking=1 ;;
407         gcac)           ac_gc_always_collect=1 ;;
408         gimple)         ac_gimple_checking=1 ;;
409         misc)           ac_checking=1 ;;
410         rtl)            ac_rtl_checking=1 ;;
411         rtlflag)        ac_rtlflag_checking=1 ;;
412         runtime)        ac_runtime_checking=1 ;;
413         tree)           ac_tree_checking=1 ;;
414         types)          ac_types_checking=1 ;;
415         valgrind)       ac_valgrind_checking=1 ;;
416         *)      AC_MSG_ERROR(unknown check category $check) ;;
417         esac
418 done
419 IFS="$ac_save_IFS"
421 nocommon_flag=""
422 if test x$ac_checking != x ; then
423   AC_DEFINE(ENABLE_CHECKING, 1,
424 [Define if you want more run-time sanity checks.  This one gets a grab
425    bag of miscellaneous but relatively cheap checks.])
426   nocommon_flag=-fno-common
428 AC_SUBST(nocommon_flag)
429 if test x$ac_df_checking != x ; then
430   AC_DEFINE(ENABLE_DF_CHECKING, 1,
431 [Define if you want more run-time sanity checks for dataflow.])
433 if test x$ac_assert_checking != x ; then
434   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
435 [Define if you want assertions enabled.  This is a cheap check.])
437 if test x$ac_gimple_checking != x ; then
438   AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
439 [Define if you want operations on GIMPLE (the basic data structure of
440 the high-level optimizers) to be checked for dynamic type safety at
441 runtime.  This is moderately expensive.])
443 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
444 if test x$ac_runtime_checking != x ; then
445   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
446 [Define if you want runtime assertions enabled.  This is a cheap check.])
448 if test x$ac_tree_checking != x ; then
449   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
450 [Define if you want all operations on trees (the basic data
451    structure of the front ends) to be checked for dynamic type safety
452    at runtime.  This is moderately expensive.  The tree browser debugging
453    routines will also be enabled by this option.
454    ])
455   TREEBROWSER=tree-browser.o
457 if test x$ac_types_checking != x ; then
458   AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
459 [Define if you want all gimple types to be verified after gimplifiation.
460    This is cheap.
461    ])
463 AC_SUBST(TREEBROWSER)
464 if test x$ac_rtl_checking != x ; then
465   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
466 [Define if you want all operations on RTL (the basic data structure
467    of the optimizer and back end) to be checked for dynamic type safety
468    at runtime.  This is quite expensive.])
470 if test x$ac_rtlflag_checking != x ; then
471   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
472 [Define if you want RTL flag accesses to be checked against the RTL
473    codes that are supported for each access macro.  This is relatively
474    cheap.])
476 if test x$ac_gc_checking != x ; then
477   AC_DEFINE(ENABLE_GC_CHECKING, 1,
478 [Define if you want the garbage collector to do object poisoning and
479    other memory allocation checks.  This is quite expensive.])
481 if test x$ac_gc_always_collect != x ; then
482   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
483 [Define if you want the garbage collector to operate in maximally
484    paranoid mode, validating the entire heap and collecting garbage at
485    every opportunity.  This is extremely expensive.])
487 if test x$ac_fold_checking != x ; then
488   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
489 [Define if you want fold checked that it never destructs its argument.
490    This is quite expensive.])
492 valgrind_path_defines=
493 valgrind_command=
495 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
496 dnl # an if statement.  This was the source of very frustrating bugs
497 dnl # in converting to autoconf 2.5x!
498 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
500 if test x$ac_valgrind_checking != x ; then
501   # It is certainly possible that there's valgrind but no valgrind.h.
502   # GCC relies on making annotations so we must have both.
503   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
504   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
505     [[#include <valgrind/memcheck.h>
506 #ifndef VALGRIND_DISCARD
507 #error VALGRIND_DISCARD not defined
508 #endif]])],
509   [gcc_cv_header_valgrind_memcheck_h=yes],
510   [gcc_cv_header_valgrind_memcheck_h=no])
511   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
512   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
513   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
514     [[#include <memcheck.h>
515 #ifndef VALGRIND_DISCARD
516 #error VALGRIND_DISCARD not defined
517 #endif]])],
518   [gcc_cv_header_memcheck_h=yes],
519   [gcc_cv_header_memcheck_h=no])
520   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
521   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
522         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
523   if test "x$valgrind_path" = "x" \
524     || (test $have_valgrind_h = no \
525         && test $gcc_cv_header_memcheck_h = no \
526         && test $gcc_cv_header_valgrind_memcheck_h = no); then
527         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
528   fi
529   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
530   valgrind_command="$valgrind_path -q"
531   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
532 [Define if you want to run subprograms and generated programs
533    through valgrind (a memory checker).  This is extremely expensive.])
534   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
535     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
536         [Define if valgrind's valgrind/memcheck.h header is installed.])
537   fi
538   if test $gcc_cv_header_memcheck_h = yes; then
539     AC_DEFINE(HAVE_MEMCHECK_H, 1,
540         [Define if valgrind's memcheck.h header is installed.])
541   fi
543 AC_SUBST(valgrind_path_defines)
544 AC_SUBST(valgrind_command)
546 # Enable code coverage collection
547 AC_ARG_ENABLE(coverage,
548 [  --enable-coverage[=LEVEL]
549                           enable compiler's code coverage collection.
550                           Use to measure compiler performance and locate
551                           unused parts of the compiler. With LEVEL, specify
552                           optimization. Values are opt, noopt,
553                           default is noopt],
554 [case "${enableval}" in
555   yes|noopt)
556     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
557     ;;
558   opt)
559     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
560     ;;
561   no)
562     # a.k.a. --disable-coverage
563     coverage_flags=""
564     ;;
565   *)
566     AC_MSG_ERROR(unknown coverage setting $enableval)
567     ;;
568 esac],
569 [coverage_flags=""])
570 AC_SUBST(coverage_flags)
572 AC_ARG_ENABLE(gather-detailed-mem-stats, 
573 [  --enable-gather-detailed-mem-stats         enable detailed memory allocation stats gathering], [],
574 [enable_gather_detailed_mem_stats=no])
575 if test x$enable_gather_detailed_mem_stats = xyes ; then
576   AC_DEFINE(GATHER_STATISTICS, 1,
577         [Define to enable detailed memory allocation stats gathering.])
580 # -------------------------------
581 # Miscenalleous configure options
582 # -------------------------------
584 # See if we are building gcc with C++.
585 AC_ARG_ENABLE(build-with-cxx,
586 [  --enable-build-with-cxx build with C++ compiler instead of C compiler],
587 ENABLE_BUILD_WITH_CXX=$enableval,
588 ENABLE_BUILD_WITH_CXX=no)
589 AC_SUBST(ENABLE_BUILD_WITH_CXX)
591 # With stabs
592 AC_ARG_WITH(stabs,
593 [  --with-stabs            arrange to use stabs instead of host debug format],
594 stabs="$with_stabs",
595 stabs=no)
597 # Determine whether or not multilibs are enabled.
598 AC_ARG_ENABLE(multilib,
599 [  --enable-multilib       enable library support for multiple ABIs],
600 [], [enable_multilib=yes])
601 AC_SUBST(enable_multilib)
603 # Enable __cxa_atexit for C++.
604 AC_ARG_ENABLE(__cxa_atexit,
605 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
606 [], [])
608 # Enable C extension for decimal float if target supports it.
609 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
611 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
612 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
613 [Define to 1 to enable decimal float extension to C.])
615 # Use default_decimal_float for dependency.
616 enable_decimal_float=$default_decimal_float
618 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
619 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
620 [Define to 1 to specify that we are using the BID decimal floating
621 point format instead of DPD])
623 # Enable C extension for fixed-point arithmetic.
624 AC_ARG_ENABLE(fixed-point,
625 [  --enable-fixed-point    enable fixed-point arithmetic extension to C],
629   case $target in
630     mips*-*-*)
631       case $host in
632         mips*-sgi-irix*)
633           AC_MSG_WARN([fixed-point is not supported on IRIX, ignored])
634           enable_fixed_point=no
635           ;;
636         *)
637           enable_fixed_point=yes
638           ;;
639       esac
640       ;;
641     *)
642       AC_MSG_WARN([fixed-point is not supported for this target, ignored])
643       enable_fixed_point=no
644       ;;
645   esac
647 AC_SUBST(enable_fixed_point)
649 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
650 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
651 [Define to 1 to enable fixed-point arithmetic extension to C.])
653 # Enable threads
654 # Pass with no value to take the default
655 # Pass with a value to specify a thread package
656 AC_ARG_ENABLE(threads,
657 [  --enable-threads        enable thread usage for target GCC
658   --enable-threads=LIB    use LIB thread package for target GCC],,
659 [enable_threads=''])
661 AC_ARG_ENABLE(tls,
662 [  --enable-tls            enable or disable generation of tls code
663                           overriding the assembler check for tls support],
665   case $enable_tls in
666     yes | no) ;;
667     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
668 Valid choices are 'yes' and 'no'.]) ;;
669   esac
670 ], [enable_tls=''])
672 AC_ARG_ENABLE(objc-gc,
673 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
674                           the GNU Objective-C runtime],
675 if test x$enable_objc_gc = xno; then
676         objc_boehm_gc=''
677 else
678         objc_boehm_gc=1
680 objc_boehm_gc='')
682 AC_ARG_WITH(dwarf2,
683 [  --with-dwarf2           force the default debug format to be DWARF 2],
684 dwarf2="$with_dwarf2",
685 dwarf2=no)
687 AC_ARG_ENABLE(shared,
688 [  --disable-shared        don't provide a shared libgcc],
690   case $enable_shared in
691   yes | no) ;;
692   *)
693     enable_shared=no
694     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
695     for pkg in $enableval; do
696       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
697         enable_shared=yes
698       fi
699     done
700     IFS="$ac_save_ifs"
701     ;;
702   esac
703 ], [enable_shared=yes])
704 AC_SUBST(enable_shared)
706 AC_ARG_WITH(build-sysroot, 
707   [  --with-build-sysroot=sysroot
708                           use sysroot as the system root during the build])
710 AC_ARG_WITH(sysroot,
711 [  --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
713  case ${with_sysroot} in
714  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
715  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
716  esac
717    
718  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
719  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
720         
721  if test "x$prefix" = xNONE; then
722   test_prefix=/usr/local
723  else
724   test_prefix=$prefix
725  fi
726  if test "x$exec_prefix" = xNONE; then
727   test_exec_prefix=$test_prefix
728  else
729   test_exec_prefix=$exec_prefix
730  fi
731  case ${TARGET_SYSTEM_ROOT} in
732  "${test_prefix}"|"${test_prefix}/"*|\
733  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
734  '${prefix}'|'${prefix}/'*|\
735  '${exec_prefix}'|'${exec_prefix}/'*)
736    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
737    TARGET_SYSTEM_ROOT_DEFINE="$t"
738    ;;
739  esac
740 ], [
741  TARGET_SYSTEM_ROOT=
742  TARGET_SYSTEM_ROOT_DEFINE=
743  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
745 AC_SUBST(TARGET_SYSTEM_ROOT)
746 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
747 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
749 AC_ARG_WITH(specs,
750   [AS_HELP_STRING([--with-specs=SPECS],
751                   [add SPECS to driver command-line processing])],
752   [CONFIGURE_SPECS=$withval],
753   [CONFIGURE_SPECS=]
755 AC_SUBST(CONFIGURE_SPECS)
757 ACX_PKGVERSION([GCC])
758 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
760 # Sanity check enable_languages in case someone does not run the toplevel
761 # configure # script.
762 AC_ARG_ENABLE(languages,
763 [  --enable-languages=LIST specify which front-ends to build],
764 [case ,${enable_languages}, in
765        ,,|,yes,)
766                 # go safe -- we cannot be much sure without the toplevel
767                 # configure's
768                 # analysis of which target libs are present and usable
769                 enable_languages=c
770                 ;;
771          *,all,*)
772                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
773                 ;;
774         *,c,*)
775                 ;;
776         *)
777                 enable_languages=c,${enable_languages}
778                 ;;
779 esac],
780 [enable_languages=c])
782 AC_ARG_WITH(multilib-list,
783 [  --with-multilib-list    Select multilibs (SH only)],
785 with_multilib_list=default)
787 # -------------------------
788 # Checks for other programs
789 # -------------------------
791 AC_PROG_MAKE_SET
793 # Find some useful tools
794 AC_PROG_AWK
795 # We need awk to create options.c and options.h.
796 # Bail out if it's missing.
797 case ${AWK} in
798   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
799 esac
801 gcc_AC_PROG_LN_S
802 ACX_PROG_LN($LN_S)
803 AC_PROG_RANLIB
804 case "${host}" in
805 *-*-darwin*)
806   # By default, the Darwin ranlib will not treat common symbols as
807   # definitions when  building the archive table of contents.  Other 
808   # ranlibs do that; pass an option to the Darwin ranlib that makes
809   # it behave similarly.
810   ranlib_flags="-c" 
811   ;;
813   ranlib_flags=""
814 esac
815 AC_SUBST(ranlib_flags)
816      
817 gcc_AC_PROG_INSTALL
819 # See if cmp has --ignore-initial.
820 gcc_AC_PROG_CMP_IGNORE_INITIAL
822 # See if we have the mktemp command.
823 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
825 # See if makeinfo has been installed and is modern enough
826 # that we can use it.
827 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
828   [GNU texinfo.* \([0-9][0-9.]*\)],
829   [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
830 if test $gcc_cv_prog_makeinfo_modern = no; then
831   AC_MSG_WARN([
832 *** Makeinfo is missing or too old.
833 *** Info documentation will not be built.])
834   BUILD_INFO=
835 else
836   BUILD_INFO=info
838 AC_SUBST(BUILD_INFO)
840 # Is pod2man recent enough to regenerate manpages?
841 AC_MSG_CHECKING([for recent Pod::Man])
842 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
843   AC_MSG_RESULT(yes)
844   GENERATED_MANPAGES=generated-manpages
845 else
846   AC_MSG_RESULT(no)
847   GENERATED_MANPAGES=
849 AC_SUBST(GENERATED_MANPAGES)
851 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
853 # How about lex?
854 dnl Don't use AC_PROG_LEX; we insist on flex.
855 dnl LEXLIB is not useful in gcc.
856 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
858 # Bison?
859 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
861 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
862 # check for build == host before using them.
864 # NM
865 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
866   && test -d ../binutils ; then
867   NM='${objdir}/../binutils/nm-new'
868 else
869   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
872 # AR
873 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
874   && test -d ../binutils ; then
875   AR='${objdir}/../binutils/ar'
876 else
877   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
881 # --------------------
882 # Checks for C headers
883 # --------------------
885 # Need to reject headers which give warnings, so that the -Werror bootstrap
886 # works later. *sigh*  This needs to come before all header checks.
887 AC_PROG_CPP_WERROR
889 AC_HEADER_STDC
890 AC_HEADER_TIME
891 ACX_HEADER_STRING
892 AC_HEADER_SYS_WAIT
893 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
894                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
895                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
896                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
898 # Check for thread headers.
899 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
900 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
902 # These tests can't be done till we know if we have limits.h.
903 gcc_AC_C_CHAR_BIT
904 AC_C_BIGENDIAN
906 # --------
907 # UNSORTED
908 # --------
911 # These libraries may be used by collect2.
912 # We may need a special search path to get them linked.
913 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
914 [save_LIBS="$LIBS"
915 for libs in '' -lld -lmld \
916                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
917                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
919         LIBS="$libs"
920         AC_TRY_LINK_FUNC(ldopen,
921                 [gcc_cv_collect2_libs="$libs"; break])
922 done
923 LIBS="$save_LIBS"
924 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
925 case $gcc_cv_collect2_libs in
926         "none required")        ;;
927         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
928 esac
929 AC_SUBST(COLLECT2_LIBS)
931 # When building Ada code on Alpha, we need exc_resume which is usually in
932 # -lexc.  So test for it.
933 save_LIBS="$LIBS"
934 LIBS=
935 AC_SEARCH_LIBS(exc_resume, exc)
936 GNAT_LIBEXC="$LIBS"
937 LIBS="$save_LIBS"
938 AC_SUBST(GNAT_LIBEXC)
940 # Some systems put ldexp and frexp in libm instead of libc; assume
941 # they're both in the same place.  jcf-dump needs them.
942 save_LIBS="$LIBS"
943 LIBS=
944 AC_SEARCH_LIBS(ldexp, m)
945 LDEXP_LIB="$LIBS"
946 LIBS="$save_LIBS"
947 AC_SUBST(LDEXP_LIB)
949 # Use <inttypes.h> only if it exists,
950 # doesn't clash with <sys/types.h>, and declares intmax_t.
951 AC_MSG_CHECKING(for inttypes.h)
952 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
953 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
954 [[#include <sys/types.h>
955 #include <inttypes.h>]],
956   [[intmax_t i = -1;]])],
957   [gcc_cv_header_inttypes_h=yes],
958   [gcc_cv_header_inttypes_h=no])])
959 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
960 if test $gcc_cv_header_inttypes_h = yes; then
961   AC_DEFINE(HAVE_INTTYPES_H, 1,
962         [Define if you have a working <inttypes.h> header file.])
965 dnl Disabled until we have a complete test for buggy enum bitfields.
966 dnl gcc_AC_C_ENUM_BF_UNSIGNED
968 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
969   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
970   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
971   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
972   putchar_unlocked putc_unlocked)
973 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
974         sysconf strsignal getrusage nl_langinfo \
975         gettimeofday mbstowcs wcswidth mmap mincore setlocale \
976         gcc_UNLOCKED_FUNCS)
978 save_CPPFLAGS="$CPPFLAGS"
979 save_LIBS="$LIBS"
980 LIBS="$LIBS $LIBELFLIBS"
981 AC_CHECK_FUNCS(elf_getshdrstrndx,,
982   [AC_CHECK_FUNCS(elf_getshstrndx,
983     [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
984 #include <libelf.h>
985 int main()
987   return elf_getshstrndx (NULL, 0) == 0;
988 }]])], AC_DEFINE(HAVE_ELF_GETSHSTRNDX_GABI, 1,
989         [Define if elf_getshstrndx has gABI conformant return values.]))])]
990   )
991 LIBS="$save_LIBS"
992 CPPFLAGS="$save_CPPFLAGS"
994 if test x$ac_cv_func_mbstowcs = xyes; then
995   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
996 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
997 int main()
999   mbstowcs(0, "", 0);
1000   return 0;
1001 }]])],
1002     [gcc_cv_func_mbstowcs_works=yes],
1003     [gcc_cv_func_mbstowcs_works=no],
1004     [gcc_cv_func_mbstowcs_works=yes])])
1005   if test x$gcc_cv_func_mbstowcs_works = xyes; then
1006     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1007   [Define this macro if mbstowcs does not crash when its
1008    first argument is NULL.])
1009   fi
1012 AC_CHECK_TYPE(ssize_t, int)
1013 AC_CHECK_TYPE(caddr_t, char *)
1015 gcc_AC_FUNC_MMAP_BLACKLIST
1017 case "${host}" in
1018 *-*-*vms*)
1019   # Under VMS, vfork works very differently than on Unix. The standard test 
1020   # won't work, and it isn't easily adaptable. It makes more sense to
1021   # just force it.
1022   ac_cv_func_vfork_works=yes
1023   ;;
1024 esac
1025 AC_FUNC_FORK
1027 AM_ICONV
1028 # Until we have in-tree GNU iconv:
1029 LIBICONV_DEP=
1030 AC_SUBST(LIBICONV_DEP)
1032 AM_LC_MESSAGES
1034 AM_LANGINFO_CODESET
1036 # We will need to find libiberty.h and ansidecl.h
1037 saved_CFLAGS="$CFLAGS"
1038 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1039 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1040         strsignal strstr strverscmp \
1041         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1042         free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1043 #include "ansidecl.h"
1044 #include "system.h"])
1046 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1047 #include "ansidecl.h"
1048 #include "system.h"
1049 #ifdef HAVE_SYS_RESOURCE_H
1050 #include <sys/resource.h>
1051 #endif
1054 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1055 #include "ansidecl.h"
1056 #include "system.h"
1057 #ifdef HAVE_SYS_RESOURCE_H
1058 #include <sys/resource.h>
1059 #endif
1060 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1061 [Define to `long' if <sys/resource.h> doesn't define.])])
1063 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1064 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1065 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1066 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1067 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1068 #include "ansidecl.h"
1069 #include "system.h"
1070 #ifdef HAVE_LDFCN_H
1071 #undef FREAD
1072 #undef FWRITE
1073 #include <ldfcn.h>
1074 #endif
1077 gcc_AC_CHECK_DECLS(times, , ,[
1078 #include "ansidecl.h"
1079 #include "system.h"
1080 #ifdef HAVE_SYS_TIMES_H
1081 #include <sys/times.h>
1082 #endif
1085 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1086 #include "ansidecl.h"
1087 #include "system.h"
1088 #include <signal.h>
1091 # More time-related stuff.
1092 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1093 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1094 #include "ansidecl.h"
1095 #include "system.h"
1096 #ifdef HAVE_SYS_TIMES_H
1097 #include <sys/times.h>
1098 #endif
1099 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1100 if test $ac_cv_struct_tms = yes; then
1101   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1102   [Define if <sys/times.h> defines struct tms.])
1105 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1106 # revisit after autoconf 2.50.
1107 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1108 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1109 #include "ansidecl.h"
1110 #include "system.h"
1111 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1112 if test $gcc_cv_type_clock_t = yes; then
1113   AC_DEFINE(HAVE_CLOCK_T, 1,
1114   [Define if <time.h> defines clock_t.])
1117 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1118 CFLAGS="$saved_CFLAGS"
1120 gcc_AC_INITFINI_ARRAY
1122 # mkdir takes a single argument on some systems. 
1123 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1125 # File extensions
1126 manext='.1'
1127 objext='.o'
1128 AC_SUBST(manext)
1129 AC_SUBST(objext)
1131 # With Setjmp/Longjmp based exception handling.
1132 AC_ARG_ENABLE(sjlj-exceptions,
1133 [  --enable-sjlj-exceptions
1134                           arrange to use setjmp/longjmp exception handling],
1135 [case $target in
1136   *-*-hpux10*)
1137     if test $enableval != yes; then
1138       AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1139       enableval=yes
1140     fi
1141     ;;
1142 esac
1143 force_sjlj_exceptions=yes],
1144 [case $target in
1145   *-*-hpux10*)
1146     force_sjlj_exceptions=yes
1147     enableval=yes
1148     ;;
1149   *)
1150     force_sjlj_exceptions=no
1151     ;;
1152 esac])
1153 if test $force_sjlj_exceptions = yes; then
1154   sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1155   AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1156     [Define 0/1 to force the choice for exception handling model.])
1159 # For platforms with the unwind ABI which includes an unwind library,
1160 # libunwind, we can choose to use the system libunwind.
1161 # config.gcc also contains tests of with_system_libunwind.
1162 GCC_CHECK_UNWIND_GETIPINFO
1164 # --------------------------------------------------------
1165 # Build, host, and target specific configuration fragments
1166 # --------------------------------------------------------
1168 # Collect build-machine-specific information.
1169 . ${srcdir}/config.build
1171 # Collect host-machine-specific information.
1172 . ${srcdir}/config.host
1174 target_gtfiles=
1176 # Collect target-machine-specific information.
1177 . ${srcdir}/config.gcc
1179 extra_objs="${host_extra_objs} ${extra_objs}"
1180 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1182 # Default the target-machine variables that were not explicitly set.
1183 if test x"$tm_file" = x
1184 then tm_file=$cpu_type/$cpu_type.h; fi
1186 if test x"$extra_headers" = x
1187 then extra_headers=; fi
1189 if test x$md_file = x
1190 then md_file=$cpu_type/$cpu_type.md; fi
1192 if test x$out_file = x
1193 then out_file=$cpu_type/$cpu_type.c; fi
1195 if test x"$tmake_file" = x
1196 then tmake_file=$cpu_type/t-$cpu_type
1199 if test x"$dwarf2" = xyes
1200 then tm_file="$tm_file tm-dwarf2.h"
1203 # Say what files are being used for the output code and MD file.
1204 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1205 echo "Using \`$srcdir/config/$md_file' as machine description file."
1207 # If any of the xm_file variables contain nonexistent files, warn
1208 # about them and drop them.
1211 for x in $build_xm_file; do
1212   if    test -f $srcdir/config/$x
1213   then      bx="$bx $x"
1214   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1215   fi
1216 done
1217 build_xm_file="$bx"
1220 for x in $host_xm_file; do
1221   if    test -f $srcdir/config/$x
1222   then      hx="$hx $x"
1223   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1224   fi
1225 done
1226 host_xm_file="$hx"
1229 for x in $xm_file; do
1230   if    test -f $srcdir/config/$x
1231   then      tx="$tx $x"
1232   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1233   fi
1234 done
1235 xm_file="$tx"
1237 count=a
1238 for f in $tm_file; do
1239         count=${count}x
1240 done
1241 if test $count = ax; then
1242         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1243 else
1244         echo "Using the following target machine macro files:"
1245         for f in $tm_file; do
1246                 echo "  $srcdir/config/$f"
1247         done
1250 if test x$need_64bit_hwint = xyes; then
1251         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1252 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1255 if test x$use_long_long_for_widest_fast_int = xyes; then
1256         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1257 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1258 efficiently supported by the host hardware.])
1261 count=a
1262 for f in $host_xm_file; do
1263         count=${count}x
1264 done
1265 if test $count = a; then
1266         :
1267 elif test $count = ax; then
1268         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1269 else
1270         echo "Using the following host machine macro files:"
1271         for f in $host_xm_file; do
1272                 echo "  $srcdir/config/$f"
1273         done
1275 echo "Using ${out_host_hook_obj} for host machine hooks."
1277 if test "$host_xm_file" != "$build_xm_file"; then
1278         count=a
1279         for f in $build_xm_file; do
1280                 count=${count}x
1281         done
1282         if test $count = a; then
1283                 :
1284         elif test $count = ax; then
1285                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1286         else
1287                 echo "Using the following build machine macro files:"
1288                 for f in $build_xm_file; do
1289                         echo "  $srcdir/config/$f"
1290                 done
1291         fi
1294 case ${host} in
1295   powerpc*-*-darwin*)
1296     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1297       gcc_cv_mcontext_underscores,
1298       AC_COMPILE_IFELSE([
1299 #include <sys/cdefs.h>
1300 #include <sys/signal.h>
1301 #include <ucontext.h>
1302 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1304         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1305       if test $gcc_cv_mcontext_underscores = yes; then
1306         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1307           [mcontext_t fields start with __])
1308       fi
1309     ;;
1310 esac
1312 # ---------
1313 # Threading
1314 # ---------
1316 # Check if a valid thread package
1317 case ${enable_threads} in
1318   "" | no)
1319     # No threads
1320     target_thread_file='single'
1321     ;;
1322   yes)
1323     # default
1324     target_thread_file='single'
1325     ;;
1326   aix | dce | gnat | irix | posix | posix95 | rtems | \
1327   single | solaris | vxworks | win32 | mipssde)
1328     target_thread_file=${enable_threads}
1329     ;;
1330   *)
1331     echo "${enable_threads} is an unknown thread package" 1>&2
1332     exit 1
1333     ;;
1334 esac
1336 if test x${thread_file} = x; then
1337   # No thread file set by target-specific clauses in config.gcc,
1338   # so use file chosen by default logic above
1339   thread_file=${target_thread_file}
1342 # Make gthr-default.h if we have a thread file.
1343 gthread_flags=
1344 if test $thread_file != single; then
1345   echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h-t
1346   if diff gthr-default.h-t gthr-default.h 2>/dev/null; then
1347     rm -f gthr-default.h-t
1348   else
1349     mv -f gthr-default.h-t gthr-default.h
1350   fi
1351   gthread_flags=-DHAVE_GTHR_DEFAULT
1353 AC_SUBST(gthread_flags)
1355 # --------
1356 # UNSORTED
1357 # --------
1359 use_cxa_atexit=no
1360 if test x$enable___cxa_atexit = xyes || \
1361    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1362   if test x$host = x$target; then
1363     case $host in
1364       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1365       # keyed to flag_use_cxa_atexit
1366       *-*-mingw32*)
1367         use_cxa_atexit=yes
1368         ;;
1369       *)
1370         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1371           [echo "__cxa_atexit can't be enabled on this target"])
1372         ;;
1373     esac
1374   else
1375     # We can't check for __cxa_atexit when building a cross, so assume
1376     # it is available 
1377     use_cxa_atexit=yes
1378   fi
1379   if test x$use_cxa_atexit = xyes; then
1380     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1381       [Define if you want to use __cxa_atexit, rather than atexit, to
1382       register C++ destructors for local statics and global objects.
1383       This is essential for fully standards-compliant handling of
1384       destructors, but requires __cxa_atexit in libc.])
1385   fi
1388 # Look for a file containing extra machine modes.
1389 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1390   extra_modes_file='$(srcdir)'/config/${extra_modes}
1391   AC_SUBST(extra_modes_file)
1392   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1393   [Define to the name of a file containing a list of extra machine modes
1394    for this architecture.])
1397 # Convert extra_options into a form suitable for Makefile use.
1398 extra_opt_files=
1399 for f in $extra_options; do
1400   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1401 done
1402 AC_SUBST(extra_opt_files)
1404 # auto-host.h is the file containing items generated by autoconf and is
1405 # the first file included by config.h.
1406 # If host=build, it is correct to have bconfig include auto-host.h
1407 # as well.  If host!=build, we are in error and need to do more 
1408 # work to find out the build config parameters.
1409 if test x$host = x$build
1410 then
1411         build_auto=auto-host.h
1412 else
1413         # We create a subdir, then run autoconf in the subdir.
1414         # To prevent recursion we set host and build for the new
1415         # invocation of configure to the build for this invocation
1416         # of configure. 
1417         tempdir=build.$$
1418         rm -rf $tempdir
1419         mkdir $tempdir
1420         cd $tempdir
1421         case ${srcdir} in
1422         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1423         *) realsrcdir=../${srcdir};;
1424         esac
1425         saved_CFLAGS="${CFLAGS}"
1426         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1427         LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1428         ${realsrcdir}/configure \
1429                 --enable-languages=${enable_languages-all} \
1430                 --target=$target_alias --host=$build_alias --build=$build_alias
1431         CFLAGS="${saved_CFLAGS}"
1433         # We just finished tests for the build machine, so rename
1434         # the file auto-build.h in the gcc directory.
1435         mv auto-host.h ../auto-build.h
1436         cd ..
1437         rm -rf $tempdir
1438         build_auto=auto-build.h
1440 AC_SUBST(build_subdir)
1442 tm_file="${tm_file} defaults.h"
1443 tm_p_file="${tm_p_file} tm-preds.h"
1444 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1445 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1446 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1447 # put this back in temporarily.
1448 xm_file="auto-host.h ansidecl.h ${xm_file}"
1450 # --------
1451 # UNSORTED
1452 # --------
1454 changequote(,)dnl
1455 # Compile in configure arguments.
1456 if test -f configargs.h ; then
1457         # Being re-configured.
1458         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1459         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1460 else
1461         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1464 # Double all backslashes and backslash all quotes to turn
1465 # gcc_config_arguments into a C string.
1466 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1467 $gcc_config_arguments
1469 gcc_config_arguments_str=`cat conftest.out`
1470 rm -f conftest.out
1472 cat > configargs.h <<EOF
1473 /* Generated automatically. */
1474 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1475 static const char thread_model[] = "$thread_file";
1477 static const struct {
1478   const char *name, *value;
1479 } configure_default_options[] = $configure_default_options;
1481 changequote([,])dnl
1483 changequote(,)dnl
1484 gcc_BASEVER=`cat $srcdir/BASE-VER`
1485 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1486 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1487 if test -f $srcdir/REVISION ; then
1488         gcc_REVISION=`cat $srcdir/REVISION`
1489 else
1490         gcc_REVISION=""
1492 cat > plugin-version.h <<EOF
1493 #include "configargs.h"
1495 static char basever[] = "$gcc_BASEVER";
1496 static char datestamp[] = "$gcc_DATESTAMP";
1497 static char devphase[] = "$gcc_DEVPHASE";
1498 static char revision[] = "$gcc_REVISION";
1500 /* FIXME plugins: We should make the version information more precise.
1501    One way to do is to add a checksum. */
1503 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1504                                                 devphase, revision,
1505                                                 configuration_arguments};
1507 changequote([,])dnl
1509 # Internationalization
1510 ZW_GNU_GETTEXT_SISTER_DIR
1512 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1513 # -liconv on the link line twice.
1514 case "$LIBINTL" in *$LIBICONV*)
1515         LIBICONV= ;;
1516 esac
1518 AC_ARG_ENABLE(secureplt,
1519 [  --enable-secureplt      enable -msecure-plt by default for PowerPC],
1520 [], [])
1522 AC_ARG_ENABLE(leading-mingw64-underscores,
1523   AS_HELP_STRING([--enable-leading-mingw64-underscores],
1524                  [Enable leading underscores on 64 bit mingw targets]),
1525   [],[])
1526 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1527   [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
1528     [Define if we should use leading underscore on 64 bit mingw targets])])
1530 AC_ARG_ENABLE(cld,
1531 [  --enable-cld            enable -mcld by default for 32bit x86], [],
1532 [enable_cld=no])
1534 AC_ARG_ENABLE(frame-pointer,
1535 [  --enable-frame-pointer  enable -fno-omit-frame-pointer by default for 32bit x86], [],
1537 case $target_os in
1538 linux* | darwin[[8912]]*)
1539   # Enable -fomit-frame-pointer by default for Linux and Darwin with
1540   # DWARF2.
1541   enable_frame_pointer=no
1542   ;;
1544   enable_frame_pointer=yes
1545   ;;
1546 esac
1549 # Windows32 Registry support for specifying GCC installation paths.
1550 AC_ARG_ENABLE(win32-registry,
1551 [  --disable-win32-registry
1552                           disable lookup of installation paths in the
1553                           Registry on Windows hosts
1554   --enable-win32-registry enable registry lookup (default)
1555   --enable-win32-registry=KEY
1556                           use KEY instead of GCC version as the last portion
1557                           of the registry key],,)
1559 case $host_os in
1560   win32 | pe | cygwin* | mingw32* | uwin*)
1561     if test "x$enable_win32_registry" != xno; then
1562       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1563     fi
1565     if test "x$enable_win32_registry" != xno; then
1566       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1567   [Define to 1 if installation paths should be looked up in the Windows
1568    Registry. Ignored on non-Windows hosts.])
1570       if test "x$enable_win32_registry" != xyes \
1571          && test "x$enable_win32_registry" != x; then
1572         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1573   [Define to be the last component of the Windows registry key under which
1574    to look for installation paths.  The full key used will be 
1575    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1576    The default is the GCC version number.])
1577       fi
1578     fi
1579   ;;
1580 esac
1582 # Get an absolute path to the GCC top-level source directory
1583 holddir=`${PWDCMD-pwd}`
1584 cd $srcdir
1585 topdir=`${PWDCMD-pwd}`
1586 cd $holddir
1588 # Conditionalize the makefile for this host machine.
1589 xmake_file=
1590 for f in ${host_xmake_file}
1592         if test -f ${srcdir}/config/$f
1593         then
1594                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1595         fi
1596 done
1598 # Conditionalize the makefile for this target machine.
1599 tmake_file_=
1600 for f in ${tmake_file}
1602         if test -f ${srcdir}/config/$f
1603         then
1604                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1605         fi
1606 done
1607 tmake_file="${tmake_file_}"
1609 out_object_file=`basename $out_file .c`.o
1611 tm_file_list="options.h"
1612 tm_include_list="options.h insn-constants.h"
1613 for f in $tm_file; do
1614   case $f in
1615     ./* )
1616        f=`echo $f | sed 's/^..//'`
1617        tm_file_list="${tm_file_list} $f"
1618        tm_include_list="${tm_include_list} $f"
1619        ;;
1620     defaults.h )
1621        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1622        tm_include_list="${tm_include_list} $f"
1623        ;;
1624     * )
1625        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1626        tm_include_list="${tm_include_list} config/$f"
1627        ;;
1628   esac
1629 done
1631 tm_p_file_list=
1632 tm_p_include_list=
1633 for f in $tm_p_file; do
1634   case $f in
1635     tm-preds.h )
1636        tm_p_file_list="${tm_p_file_list} $f"
1637        tm_p_include_list="${tm_p_include_list} $f"
1638        ;;
1639     * )
1640        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1641        tm_p_include_list="${tm_p_include_list} config/$f"
1642   esac
1643 done
1645 xm_file_list=
1646 xm_include_list=
1647 for f in $xm_file; do
1648   case $f in
1649     ansidecl.h )
1650        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1651        xm_include_list="${xm_include_list} $f"
1652        ;;
1653     auto-host.h )
1654        xm_file_list="${xm_file_list} $f"
1655        xm_include_list="${xm_include_list} $f"
1656        ;;
1657     * )
1658        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1659        xm_include_list="${xm_include_list} config/$f"
1660        ;;
1661   esac
1662 done
1664 host_xm_file_list=
1665 host_xm_include_list=
1666 for f in $host_xm_file; do
1667   case $f in
1668     ansidecl.h )
1669        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1670        host_xm_include_list="${host_xm_include_list} $f"
1671        ;;
1672     auto-host.h )
1673        host_xm_file_list="${host_xm_file_list} $f"
1674        host_xm_include_list="${host_xm_include_list} $f"
1675        ;;
1676     * )
1677        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1678        host_xm_include_list="${host_xm_include_list} config/$f"
1679        ;;
1680   esac
1681 done
1683 build_xm_file_list=
1684 for f in $build_xm_file; do
1685   case $f in
1686     ansidecl.h )
1687        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1688        build_xm_include_list="${build_xm_include_list} $f"
1689        ;;
1690     auto-build.h | auto-host.h )
1691        build_xm_file_list="${build_xm_file_list} $f"
1692        build_xm_include_list="${build_xm_include_list} $f"
1693        ;;
1694     * )
1695        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1696        build_xm_include_list="${build_xm_include_list} config/$f"
1697        ;;
1698   esac
1699 done
1701 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1702 # cross-compiler which does not use the native headers and libraries.
1703 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1704 CROSS=                                          AC_SUBST(CROSS)
1705 ALL=all.internal                                AC_SUBST(ALL)
1706 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1708 if test "x$with_build_sysroot" != x; then
1709   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1710 else
1711   # This value is used, even on a native system, because 
1712   # CROSS_SYSTEM_HEADER_DIR is just 
1713   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1714   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1717 if test x$host != x$target
1718 then
1719         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1720         ALL=all.cross
1721         SYSTEM_HEADER_DIR=$build_system_header_dir
1722         case "$host","$target" in
1723         # Darwin crosses can use the host system's libraries and headers,
1724         # because of the fat library support.  Of course, it must be the
1725         # same version of Darwin on both sides.  Allow the user to
1726         # just say --target=foo-darwin without a version number to mean
1727         # "the version on this system".
1728             *-*-darwin*,*-*-darwin*)
1729                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1730                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1731                 if test $hostos = $targetos -o $targetos = darwin ; then
1732                     CROSS=
1733                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1734                     with_headers=yes
1735                 fi
1736                 ;;
1738             i?86-*-*,x86_64-*-* \
1739             | powerpc*-*-*,powerpc64*-*-*)
1740                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1741         esac
1742 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1743         SYSTEM_HEADER_DIR=$build_system_header_dir 
1746 # If this is a cross-compiler that does not
1747 # have its own set of headers then define
1748 # inhibit_libc
1750 # If this is using newlib, without having the headers available now,
1751 # then define inhibit_libc in LIBGCC2_CFLAGS.
1752 # This prevents libgcc2 from containing any code which requires libc
1753 # support.
1754 : ${inhibit_libc=false}
1755 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1756        test x$with_newlib = xyes ; } &&
1757      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1758        inhibit_libc=true
1760 AC_SUBST(inhibit_libc)
1762 # When building gcc with a cross-compiler, we need to adjust things so
1763 # that the generator programs are still built with the native compiler.
1764 # Also, we cannot run fixincludes.
1766 # These are the normal (build=host) settings:
1767 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
1768 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1769 BUILD_LDFLAGS='$(LDFLAGS)'      AC_SUBST(BUILD_LDFLAGS)
1770 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1772 # And these apply if build != host, or we are generating coverage data
1773 if test x$build != x$host || test "x$coverage_flags" != x
1774 then
1775     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1776     BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
1779 # Expand extra_headers to include complete path.
1780 # This substitutes for lots of t-* files.
1781 extra_headers_list=
1782 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1783 for file in ${extra_headers} ; do
1784   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1785 done
1787 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1788 if test x"$use_gcc_tgmath" = xyes
1789 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1792 # Define collect2 in Makefile.
1793 case $host_can_use_collect2 in
1794   no) collect2= ;;
1795   *) collect2='collect2$(exeext)' ;;
1796 esac
1797 AC_SUBST([collect2])
1799 # Add a definition of USE_COLLECT2 if system wants one.
1800 case $use_collect2 in
1801   no) use_collect2= ;;
1802   "") ;;
1803   *) 
1804     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1805     xm_defines="${xm_defines} USE_COLLECT2"
1806     case $host_can_use_collect2 in
1807       no)
1808         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1809         ;;
1810     esac
1811     ;;
1812 esac
1814 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
1815 [Define to the name of the LTO plugin DSO that must be
1816   passed to the linker's -plugin=LIB option.])
1818 # ---------------------------
1819 # Assembler & linker features
1820 # ---------------------------
1822 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
1823 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
1824 # However when ld-new is first executed from the build tree, libtool will
1825 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
1826 # to the build tree.  While doing this we need to use the previous-stage
1827 # linker, or we have an infinite loop.  The presence of a shell script as
1828 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
1829 # the gcc/collect-ld script.  So we need to know how libtool works, or
1830 # exec-tool will fail.
1832 m4_defun([_LT_CONFIG_COMMANDS], [])
1833 AC_PROG_LIBTOOL
1834 AC_SUBST(objdir)
1835 AC_SUBST(enable_fast_install)
1837 # Identify the assembler which will work hand-in-glove with the newly
1838 # built GCC, so that we can examine its features.  This is the assembler
1839 # which will be driven by the driver program.
1841 # If build != host, and we aren't building gas in-tree, we identify a
1842 # build->target assembler and hope that it will have the same features
1843 # as the host->target assembler we'll be using.
1844 gcc_cv_gas_major_version=
1845 gcc_cv_gas_minor_version=
1846 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1848 m4_pattern_allow([AS_FOR_TARGET])dnl
1849 AS_VAR_SET_IF(gcc_cv_as,, [
1850 if test -x "$DEFAULT_ASSEMBLER"; then
1851         gcc_cv_as="$DEFAULT_ASSEMBLER"
1852 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1853      && test -f ../gas/Makefile \
1854      && test x$build = x$host; then
1855         gcc_cv_as=../gas/as-new$build_exeext
1856 elif test -x as$build_exeext; then
1857         # Build using assembler in the current directory.
1858         gcc_cv_as=./as$build_exeext
1859 elif test -x $AS_FOR_TARGET; then
1860         gcc_cv_as="$AS_FOR_TARGET"
1861 else
1862         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1863 fi])
1865 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1866 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1867 case "$ORIGINAL_AS_FOR_TARGET" in
1868   ./as | ./as$build_exeext) ;;
1869   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1870 esac 
1872 AC_MSG_CHECKING(what assembler to use)
1873 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1874   # Single tree build which includes gas.  We want to prefer it
1875   # over whatever linker top-level may have detected, since
1876   # we'll use what we're building after installation anyway.
1877   AC_MSG_RESULT(newly built gas)
1878   in_tree_gas=yes
1879   _gcc_COMPUTE_GAS_VERSION
1880   in_tree_gas_is_elf=no
1881   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1882      || (grep 'obj_format = multi' ../gas/Makefile \
1883          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1884   then
1885     in_tree_gas_is_elf=yes
1886   fi
1887 else
1888   AC_MSG_RESULT($gcc_cv_as)
1889   in_tree_gas=no
1892 # Identify the linker which will work hand-in-glove with the newly
1893 # built GCC, so that we can examine its features.  This is the linker
1894 # which will be driven by the driver program.
1896 # If build != host, and we aren't building gas in-tree, we identify a
1897 # build->target linker and hope that it will have the same features
1898 # as the host->target linker we'll be using.
1899 gcc_cv_gld_major_version=
1900 gcc_cv_gld_minor_version=
1901 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1902 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1904 AS_VAR_SET_IF(gcc_cv_ld,, [
1905 if test -x "$DEFAULT_LINKER"; then
1906         gcc_cv_ld="$DEFAULT_LINKER"
1907 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1908      && test -f ../ld/Makefile \
1909      && test x$build = x$host; then
1910         gcc_cv_ld=../ld/ld-new$build_exeext
1911 elif test -x collect-ld$build_exeext; then
1912         # Build using linker in the current directory.
1913         gcc_cv_ld=./collect-ld$build_exeext
1914 elif test -x $LD_FOR_TARGET; then
1915         gcc_cv_ld="$LD_FOR_TARGET"
1916 else
1917         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1918 fi])
1920 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
1921 PLUGIN_LD=`basename $gcc_cv_ld`
1922 AC_ARG_WITH(plugin-ld,
1923 [  --with-plugin-ld=[[ARG]]  specify the plugin linker],
1924 [if test x"$withval" != x; then
1925    ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
1926    PLUGIN_LD="$withval"
1927  fi])
1928 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
1929 AC_DEFINE_UNQUOTED(PLUGIN_LD, "$PLUGIN_LD", [Specify plugin linker])
1931 # Check to see if we are using gold instead of ld
1932 AC_MSG_CHECKING(whether we are using gold)
1933 ld_is_gold=no
1934 if test x$gcc_cv_ld != x; then
1935   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
1936      | grep "GNU gold" > /dev/null; then
1937     ld_is_gold=yes
1938   fi
1940 AC_MSG_RESULT($ld_is_gold)
1942 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1943 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
1944 case "$ORIGINAL_LD_FOR_TARGET" in
1945   ./collect-ld | ./collect-ld$build_exeext) ;;
1946   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
1947 esac 
1949 AC_MSG_CHECKING(what linker to use)
1950 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
1951         # Single tree build which includes ld.  We want to prefer it
1952         # over whatever linker top-level may have detected, since
1953         # we'll use what we're building after installation anyway.
1954         AC_MSG_RESULT(newly built ld)
1955         in_tree_ld=yes
1956         in_tree_ld_is_elf=no
1957         if (grep 'EMUL = .*elf' ../ld/Makefile \
1958             || grep 'EMUL = .*linux' ../ld/Makefile \
1959             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1960           in_tree_ld_is_elf=yes
1961         fi
1962         for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.in $gcc_cv_ld_gld_srcdir/Makefile.in
1963         do
1964 changequote(,)dnl
1965                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1966                 if test x$gcc_cv_gld_version != x; then
1967                         break
1968                 fi
1969         done
1970         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1971         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1972 changequote([,])dnl
1973 else
1974         AC_MSG_RESULT($gcc_cv_ld)
1975         in_tree_ld=no
1978 # Figure out what nm we will be using.
1979 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1980 AS_VAR_SET_IF(gcc_cv_nm,, [
1981 if test -f $gcc_cv_binutils_srcdir/configure.in \
1982      && test -f ../binutils/Makefile \
1983      && test x$build = x$host; then
1984         gcc_cv_nm=../binutils/nm-new$build_exeext
1985 elif test -x nm$build_exeext; then
1986         gcc_cv_nm=./nm$build_exeext
1987 elif test -x $NM_FOR_TARGET; then
1988         gcc_cv_nm="$NM_FOR_TARGET"
1989 else
1990         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1991 fi])
1993 AC_MSG_CHECKING(what nm to use)
1994 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1995         # Single tree build which includes binutils.
1996         AC_MSG_RESULT(newly built nm)
1997         in_tree_nm=yes
1998 else
1999         AC_MSG_RESULT($gcc_cv_nm)
2000         in_tree_nm=no
2003 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2004 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2005 case "$ORIGINAL_NM_FOR_TARGET" in
2006   ./nm | ./nm$build_exeext) ;;
2007   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2008 esac
2011 # Figure out what objdump we will be using.
2012 AS_VAR_SET_IF(gcc_cv_objdump,, [
2013 if test -f $gcc_cv_binutils_srcdir/configure.in \
2014      && test -f ../binutils/Makefile \
2015      && test x$build = x$host; then
2016         # Single tree build which includes binutils.
2017         gcc_cv_objdump=../binutils/objdump$build_exeext
2018 elif test -x objdump$build_exeext; then
2019         gcc_cv_objdump=./objdump$build_exeext
2020 elif test -x $OBJDUMP_FOR_TARGET; then
2021         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2022 else
2023         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2024 fi])
2026 AC_MSG_CHECKING(what objdump to use)
2027 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2028         # Single tree build which includes binutils.
2029         AC_MSG_RESULT(newly built objdump)
2030 elif test x$gcc_cv_objdump = x; then
2031         AC_MSG_RESULT(not found)
2032 else
2033         AC_MSG_RESULT($gcc_cv_objdump)
2036 # Figure out what readelf we will be using.
2037 AS_VAR_SET_IF(gcc_cv_readelf,, [
2038 if test -f $gcc_cv_binutils_srcdir/configure.in \
2039      && test -f ../binutils/Makefile \
2040      && test x$build = x$host; then
2041         # Single tree build which includes binutils.
2042         gcc_cv_readelf=../binutils/readelf$build_exeext
2043 elif test -x readelf$build_exeext; then
2044         gcc_cv_readelf=./readelf$build_exeext
2045 else
2046         AC_PATH_PROG(gcc_cv_readelf, readelf)
2047 fi])
2049 AC_MSG_CHECKING(what readelf to use)
2050 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2051         # Single tree build which includes binutils.
2052         AC_MSG_RESULT(newly built readelf)
2053 elif test x$gcc_cv_readelf = x; then
2054         AC_MSG_RESULT(not found)
2055 else
2056         AC_MSG_RESULT($gcc_cv_readelf)
2059 # Figure out what assembler alignment features are present.
2060 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2061  [2,6,0],,
2062 [.balign 4
2063 .p2align 2],,
2064 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2065   [Define if your assembler supports .balign and .p2align.])])
2067 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2068  [2,8,0],,
2069  [.p2align 4,,7],,
2070 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2071   [Define if your assembler supports specifying the maximum number
2072    of bytes to skip when using the GAS .p2align command.])])
2074 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2075  [2,8,0],,
2076  [.literal16],,
2077 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2078   [Define if your assembler supports .literal16.])])
2080 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2081  [elf,2,9,0],,
2082  [conftest_label1: .word 0
2083 .subsection -1
2084 conftest_label2: .word 0
2085 .previous],
2086  [if test x$gcc_cv_nm != x; then
2087     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2088     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2089     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2090     then :
2091     else gcc_cv_as_subsection_m1=yes
2092     fi
2093     rm -f conftest.nm1 conftest.nm2
2094   fi],
2095  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2096   [Define if your assembler supports .subsection and .subsection -1 starts
2097    emitting at the beginning of your section.])])
2099 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2100  [2,2,0],,
2101  [      .weak foobar],,
2102 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2104 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2105  [2,17,0],,
2106  [      .weakref foobar, barfnot],,
2107 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2109 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2110  [2,15,91],,
2111  [      .SPACE $TEXT$
2112         .NSUBSPA $CODE$,COMDAT],,
2113 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2115 # .hidden needs to be supported in both the assembler and the linker,
2116 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2117 # This is irritatingly difficult to feature test for; we have to check the
2118 # date string after the version number.  If we've got an in-tree
2119 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2120 # to be safe.
2121 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2122 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2123  [elf,2,13,0],,
2124 [       .hidden foobar
2125 foobar:],[
2126 # Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
2127 # STV_HIDDEN, so disable .hidden support if so.
2128 case "${target}" in
2129   i?86-*-solaris2*)
2130     if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
2131       cat > conftest.s <<EOF
2132 .globl hidden
2133         .hidden hidden
2134 hidden:
2135 .globl default
2136         .set    default,hidden
2138       if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
2139         && $gcc_cv_objdump -t conftest.o 2>/dev/null | \
2140         grep '\.hidden default' > /dev/null; then
2141         gcc_cv_as_hidden=no
2142       else
2143         gcc_cv_as_hidden=yes
2144       fi
2145     else
2146       # Assume bug is present if objdump is missing.
2147       gcc_cv_as_hidden=no
2148     fi
2149     ;;
2150   *)
2151     gcc_cv_as_hidden=yes
2152     ;;
2153 esac])
2155 # gnu_indirect_function type is an extension proposed at
2156 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2157 # selection of function implementation
2158 AC_ARG_ENABLE(gnu-indirect-function,
2159  [AS_HELP_STRING([--enable-gnu-indirect-function],
2160                  [enable the use of the @gnu_indirect_function to glibc systems])],
2161  [case $enable_gnu_indirect_function in
2162     yes | no) ;;
2163     *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2164 Valid choices are 'yes' and 'no'.]) ;;
2165   esac],
2166  [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2167 if test x$enable_gnu_indirect_function = xyes; then
2168   AC_DEFINE(HAVE_GNU_INDIRECT_FUNCTION, 1,
2169    [Define if your system supports gnu indirect functions.])
2172 changequote(,)dnl
2173 if test $in_tree_ld != yes ; then
2174   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2175   if test x"$ld_is_gold" = xyes; then
2176     gcc_cv_ld_hidden=yes
2177   elif echo "$ld_ver" | grep GNU > /dev/null; then
2178     ld_vers=`echo $ld_ver | sed -n \
2179         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2180     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'`
2181     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2182     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2183     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2184   else
2185     case "${target}" in
2186       *-*-solaris2*)
2187         #
2188         # Solaris 2 ld -V output looks like this for a regular version:
2189         #
2190         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
2191         #
2192         # but test versions add stuff at the end:
2193         #
2194         # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
2195         #
2196         ld_ver=`$gcc_cv_ld -V 2>&1`
2197         if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2198           ld_vers=`echo $ld_ver | sed -n \
2199             -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2200           ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2201           ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2202         fi
2203         ;;
2204     esac
2205   fi
2207 changequote([,])dnl
2209 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2210 [[if test $in_tree_ld = yes ; then
2211   gcc_cv_ld_hidden=no
2212   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 \
2213      && test $in_tree_ld_is_elf = yes; then
2214      gcc_cv_ld_hidden=yes
2215   fi
2216 else
2217   gcc_cv_ld_hidden=yes
2218   if echo "$ld_ver" | grep GNU > /dev/null; then
2219     if test 0"$ld_date" -lt 20020404; then
2220       if test -n "$ld_date"; then
2221         # If there was date string, but was earlier than 2002-04-04, fail
2222         gcc_cv_ld_hidden=no
2223       elif test -z "$ld_vers"; then
2224         # If there was no date string nor ld version number, something is wrong
2225         gcc_cv_ld_hidden=no
2226       else
2227         test -z "$ld_vers_patch" && ld_vers_patch=0
2228         if test "$ld_vers_major" -lt 2; then
2229           gcc_cv_ld_hidden=no
2230         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2231           gcc_cv_ld_hidden="no"
2232         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2233           gcc_cv_ld_hidden=no
2234         fi
2235       fi
2236     fi
2237   else
2238     case "${target}" in
2239       hppa64*-*-hpux* | ia64*-*-hpux*)
2240         gcc_cv_ld_hidden=yes
2241         ;;
2242       *-*-solaris2.8*)
2243         # .hidden support was backported to Solaris 8, starting with ld
2244         # version 1.276.
2245         if test "$ld_vers_minor" -ge 276; then
2246           gcc_cv_ld_hidden=yes
2247         else
2248           gcc_cv_ld_hidden=no
2249         fi
2250         ;;
2251       *-*-solaris2.9* | *-*-solaris2.1[0-9]*)
2252         # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2253         # .symbolic was only added in Solaris 9 12/02.
2254         gcc_cv_ld_hidden=yes
2255         ;;
2256       *)
2257         gcc_cv_ld_hidden=no
2258         ;;
2259     esac
2260   fi
2261 fi]])
2262 libgcc_visibility=no
2263 AC_SUBST(libgcc_visibility)
2264 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2265 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2266   libgcc_visibility=yes
2267   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2268   [Define if your assembler and linker support .hidden.])
2271 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2272 gcc_cv_ld_ro_rw_mix=unknown
2273 if test $in_tree_ld = yes ; then
2274   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 \
2275      && test $in_tree_ld_is_elf = yes; then
2276     gcc_cv_ld_ro_rw_mix=read-write
2277   fi
2278 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2279   echo '.section myfoosect, "a"' > conftest1.s
2280   echo '.section myfoosect, "aw"' > conftest2.s
2281   echo '.byte 1' >> conftest2.s
2282   echo '.section myfoosect, "a"' > conftest3.s
2283   echo '.byte 0' >> conftest3.s
2284   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2285      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2286      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2287      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2288         conftest2.o conftest3.o > /dev/null 2>&1; then
2289     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2290                          | sed -e '/myfoosect/!d' -e N`
2291     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2292       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2293         gcc_cv_ld_ro_rw_mix=read-only
2294       else
2295         gcc_cv_ld_ro_rw_mix=read-write
2296       fi
2297     fi
2298   fi
2299 changequote(,)dnl
2300   rm -f conftest.* conftest[123].*
2301 changequote([,])dnl
2303 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2304         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2305   [Define if your linker links a mix of read-only
2306    and read-write sections into a read-write section.])
2308 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2310 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2311 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2312   [elf,2,11,0],,
2313 [       .data
2314         .uleb128 L2 - L1
2316         .uleb128 1280
2317         .sleb128 -1010
2318 L2:],
2319 [[# GAS versions before 2.11 do not support uleb128,
2320   # despite appearing to.
2321   # ??? There exists an elf-specific test that will crash
2322   # the assembler.  Perhaps it's better to figure out whether
2323   # arbitrary sections are supported and try the test.
2324   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2325   if echo "$as_ver" | grep GNU > /dev/null; then
2326     as_vers=`echo $as_ver | sed -n \
2327         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2328     as_major=`expr "$as_vers" : '\([0-9]*\)'`
2329     as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2330     if test $as_major -eq 2 && test $as_minor -lt 11
2331     then :
2332     else gcc_cv_as_leb128=yes
2333     fi
2334   fi]],
2335   [AC_DEFINE(HAVE_AS_LEB128, 1,
2336     [Define if your assembler supports .sleb128 and .uleb128.])])
2338 # Check if we have assembler support for unwind directives.
2339 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2340   ,,
2341 [       .text
2342         .cfi_startproc
2343         .cfi_offset 0, 0
2344         .cfi_same_value 1
2345         .cfi_def_cfa 1, 2
2346         .cfi_escape 1, 2, 3, 4, 5
2347         .cfi_endproc],
2348 [case "$target" in
2349   *-*-solaris*)
2350     # If the linker used on Solaris (like Sun ld) isn't capable of merging
2351     # read-only and read-write sections, we need to make sure that the
2352     # assembler used emits read-write .eh_frame sections.
2353     if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then
2354       if test "x$gcc_cv_objdump" != x; then
2355         if $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2356                 sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then
2357           gcc_cv_as_cfi_directive=no
2358         else
2359           case "$target" in
2360             i?86-*-solaris2.1[[0-9]]*)
2361               # On Solaris/x86, make sure that GCC and gas agree on using
2362               # read-only .eh_frame sections for 64-bit.
2363               if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
2364                 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2365                         sed -e /.eh_frame/!d -e N | \
2366                         grep READONLY > /dev/null; then
2367                 gcc_cv_as_cfi_directive=yes
2368               else
2369                 gcc_cv_as_cfi_directive=no
2370               fi
2371               ;;
2372             *)
2373               gcc_cv_as_cfi_directive=yes
2374               ;;
2375           esac 
2376         fi
2377       else
2378         # no objdump, err on the side of caution
2379         gcc_cv_as_cfi_directive=no
2380       fi
2381     else
2382       gcc_cv_as_cfi_directive=yes
2383     fi
2384     ;;
2385   *-*-*)
2386     gcc_cv_as_cfi_directive=yes
2387     ;;
2388 esac])
2389 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
2390 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
2391   ,,
2392 [       .text
2393         .cfi_startproc
2394         .cfi_adjust_cfa_offset 64
2395         .skip 75040, 0
2396         .cfi_adjust_cfa_offset 128
2397         .cfi_endproc],
2399 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
2400     | grep 'DW_CFA_advance_loc[24]:[    ][      ]*75040[        ]' >/dev/null; then
2401    gcc_cv_as_cfi_advance_working=yes
2404 else
2405   # no objdump, err on the side of caution
2406   gcc_cv_as_cfi_advance_working=no
2408 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
2409 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
2410   [`if test $gcc_cv_as_cfi_directive = yes \
2411        && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
2412   [Define 0/1 if your assembler supports CFI directives.])
2414 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
2415 gcc_GAS_CHECK_FEATURE([cfi personality directive],
2416   gcc_cv_as_cfi_personality_directive, ,,
2417 [       .text
2418         .cfi_startproc
2419         .cfi_personality 0, symbol
2420         .cfi_endproc])
2421 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
2422   [`if test $gcc_cv_as_cfi_personality_directive = yes;
2423     then echo 1; else echo 0; fi`],
2424   [Define 0/1 if your assembler supports .cfi_personality.])
2426 gcc_GAS_CHECK_FEATURE([cfi sections directive],
2427   gcc_cv_as_cfi_sections_directive, ,,
2428 [       .text
2429         .cfi_sections .debug_frame, .eh_frame
2430         .cfi_startproc
2431         .cfi_endproc],
2432 [case $target_os in
2433   win32 | pe | cygwin* | mingw32* | uwin*)
2434     # Need to check that we generated the correct relocation for the
2435     # .debug_frame section.  This was fixed for binutils 2.21.
2436     gcc_cv_as_cfi_sections_directive=no
2437     if test "x$gcc_cv_objdump" != x; then
2438      if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
2439         grep secrel > /dev/null; then
2440       gcc_cv_as_cfi_sections_directive=yes
2441      fi
2442     fi
2443     ;;
2444   *)
2445     gcc_cv_as_cfi_sections_directive=yes
2446     ;;
2447 esac])
2448 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
2449 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
2450   [`if test $gcc_cv_as_cfi_sections_directive = yes;
2451     then echo 1; else echo 0; fi`],
2452   [Define 0/1 if your assembler supports .cfi_sections.])
2454 # GAS versions up to and including 2.11.0 may mis-optimize
2455 # .eh_frame data.
2456 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2457   [elf,2,12,0],,
2458 [       .text
2459 .LFB1:
2460         .4byte  0
2461 .L1:
2462         .4byte  0
2463 .LFE1:
2464         .section        .eh_frame,"aw",@progbits
2465 __FRAME_BEGIN__:
2466         .4byte  .LECIE1-.LSCIE1
2467 .LSCIE1:
2468         .4byte  0x0
2469         .byte   0x1
2470         .ascii "z\0"
2471         .byte   0x1
2472         .byte   0x78
2473         .byte   0x1a
2474         .byte   0x0
2475         .byte   0x4
2476         .4byte  1
2477         .p2align 1
2478 .LECIE1:
2479 .LSFDE1:
2480         .4byte  .LEFDE1-.LASFDE1
2481 .LASFDE1:
2482         .4byte  .LASFDE1-__FRAME_BEGIN__
2483         .4byte  .LFB1
2484         .4byte  .LFE1-.LFB1
2485         .byte   0x4
2486         .4byte  .LFE1-.LFB1
2487         .byte   0x4
2488         .4byte  .L1-.LFB1
2489 .LEFDE1:],
2490 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2491 cat > conftest.lit <<EOF
2492  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2493  0010 01000000 12000000 18000000 00000000  ................
2494  0020 08000000 04080000 0044               .........D      @&t@
2496 cat > conftest.big <<EOF
2497  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2498  0010 00000001 00000012 00000018 00000000  ................
2499  0020 00000008 04000000 0844               .........D      @&t@
2501   # If the assembler didn't choke, and we can objdump,
2502   # and we got the correct data, then succeed.
2503   # The text in the here-document typically retains its unix-style line
2504   # endings, while the output of objdump will use host line endings.
2505   # Therefore, use diff -b for the comparisons.
2506   if test x$gcc_cv_objdump != x \
2507   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2508      | tail -3 > conftest.got \
2509   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2510     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2511   then
2512     gcc_cv_as_eh_frame=yes
2513   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2514     gcc_cv_as_eh_frame=buggy
2515   else
2516     # Uh oh, what do we do now?
2517     gcc_cv_as_eh_frame=no
2518   fi])
2520 if test $gcc_cv_as_eh_frame = buggy; then
2521   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2522   [Define if your assembler mis-optimizes .eh_frame data.])
2525 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2526  [elf,2,12,0], [--fatal-warnings],
2527  [.section .rodata.str, "aMS", @progbits, 1])
2528 if test $gcc_cv_as_shf_merge = no; then
2529   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2530     [elf,2,12,0], [--fatal-warnings],
2531     [.section .rodata.str, "aMS", %progbits, 1])
2533 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2534   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2535 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2537 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2538  [elf,2,16,0], [--fatal-warnings],
2539  [.section .text,"axG",@progbits,.foo,comdat])
2540 if test $gcc_cv_as_comdat_group = yes; then
2541   gcc_cv_as_comdat_group_percent=no
2542 else
2543  gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2544    [elf,2,16,0], [--fatal-warnings],
2545    [.section .text,"axG",%progbits,.foo,comdat])
2547 if test x"$ld_is_gold" = xyes; then
2548   comdat_group=yes
2549 elif test $in_tree_ld = yes ; then
2550   comdat_group=no
2551   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 \
2552      && test $in_tree_ld_is_elf = yes; then
2553      comdat_group=yes
2554   fi
2555 elif echo "$ld_ver" | grep GNU > /dev/null; then
2556   comdat_group=yes
2557   if test 0"$ld_date" -lt 20050308; then
2558     if test -n "$ld_date"; then
2559       # If there was date string, but was earlier than 2005-03-08, fail
2560       comdat_group=no
2561     elif test "$ld_vers_major" -lt 2; then
2562       comdat_group=no
2563     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2564       comdat_group=no
2565     fi
2566   fi
2567 else
2568 changequote(,)dnl
2569   case "${target}" in
2570     *-*-solaris2.1[1-9]*)
2571       # Sun ld has COMDAT group support since Solaris 9, but it doesn't
2572       # interoperate with GNU as until Solaris 11 build 130, i.e. ld
2573       # version 1.688.
2574       #
2575       # FIXME: Maybe need to refine later when COMDAT group support with
2576       # Sun as is implemented.
2577       if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 1688; then
2578         comdat_group=yes
2579       else
2580         comdat_group=no
2581       fi
2582       ;;
2583     *)
2584       # Assume linkers other than GNU ld don't support COMDAT group.
2585       comdat_group=no
2586       ;;
2587   esac
2588 changequote([,])dnl
2590 # Allow overriding the automatic COMDAT group tests above.
2591 AC_ARG_ENABLE(comdat,
2592   [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
2593   [comdat_group="$enable_comdat"])
2594 if test $comdat_group = no; then
2595   gcc_cv_as_comdat_group=no
2596   gcc_cv_as_comdat_group_percent=no
2598 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2599   [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2600 [Define 0/1 if your assembler and linker support COMDAT groups.])
2602 gcc_GAS_CHECK_FEATURE([line table discriminator support],
2603  gcc_cv_as_discriminator,
2604  [2,19,51],,
2605 [       .text
2606         .file 1 "conf.c"
2607         .loc 1 1 0 discriminator 1],,
2608 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
2609   [Define if your assembler supports the .loc discriminator sub-directive.])])
2611 # Thread-local storage - the check is heavily parameterized.
2612 conftest_s=
2613 tls_first_major=
2614 tls_first_minor=
2615 tls_as_opt=
2616 case "$target" in
2617 changequote(,)dnl
2618   alpha*-*-*)
2619     conftest_s='
2620         .section ".tdata","awT",@progbits
2621 foo:    .long   25
2622         .text
2623         ldq     $27,__tls_get_addr($29)         !literal!1
2624         lda     $16,foo($29)                    !tlsgd!1
2625         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2626         ldq     $27,__tls_get_addr($29)         !literal!2
2627         lda     $16,foo($29)                    !tlsldm!2
2628         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2629         ldq     $1,foo($29)                     !gotdtprel
2630         ldah    $2,foo($29)                     !dtprelhi
2631         lda     $3,foo($2)                      !dtprello
2632         lda     $4,foo($29)                     !dtprel
2633         ldq     $1,foo($29)                     !gottprel
2634         ldah    $2,foo($29)                     !tprelhi
2635         lda     $3,foo($2)                      !tprello
2636         lda     $4,foo($29)                     !tprel'
2637         tls_first_major=2
2638         tls_first_minor=13
2639         tls_as_opt=--fatal-warnings
2640         ;;
2641   cris-*-*|crisv32-*-*)
2642     conftest_s='
2643         .section ".tdata","awT",@progbits
2644 x:      .long   25
2645         .text
2646         move.d x:IE,$r10
2647         nop'
2648         tls_first_major=2
2649         tls_first_minor=20
2650         tls_as_opt=--fatal-warnings
2651         ;;
2652   frv*-*-*)
2653     conftest_s='
2654         .section ".tdata","awT",@progbits
2655 x:      .long   25
2656         .text
2657         call    #gettlsoff(x)'
2658         tls_first_major=2
2659         tls_first_minor=14
2660         ;;
2661   hppa*-*-linux*)
2662     conftest_s='
2663 t1:     .reg    %r20
2664 t2:     .reg    %r21
2665 gp:     .reg    %r19
2666         .section ".tdata","awT",@progbits
2667 foo:    .long   25
2668         .text
2669         .align  4
2670         addil LT%foo-$tls_gdidx$,gp
2671         ldo RT%foo-$tls_gdidx$(%r1),%arg0
2672         b __tls_get_addr
2673         nop             
2674         addil LT%foo-$tls_ldidx$,gp
2675         b __tls_get_addr
2676         ldo RT%foo-$tls_ldidx$(%r1),%arg0
2677         addil LR%foo-$tls_dtpoff$,%ret0
2678         ldo RR%foo-$tls_dtpoff$(%r1),%t1
2679         mfctl %cr27,%t1                 
2680         addil LT%foo-$tls_ieoff$,gp
2681         ldw RT%foo-$tls_ieoff$(%r1),%t2
2682         add %t1,%t2,%t3                 
2683         mfctl %cr27,%t1                 
2684         addil LR%foo-$tls_leoff$,%t1
2685         ldo RR%foo-$tls_leoff$(%r1),%t2'
2686         tls_first_major=2
2687         tls_first_minor=15
2688         tls_as_opt=--fatal-warnings
2689         ;;
2690   arm*-*-*)
2691     conftest_s='
2692         .section ".tdata","awT",%progbits
2693 foo:    .long   25
2694         .text
2695 .word foo(gottpoff)
2696 .word foo(tpoff)
2697 .word foo(tlsgd)
2698 .word foo(tlsldm)
2699 .word foo(tlsldo)'
2700         tls_first_major=2
2701         tls_first_minor=17
2702         ;;
2703   i[34567]86-*-*)
2704     case "$target" in
2705       i[34567]86-*-solaris2.*)
2706         on_solaris=yes
2707         tga_func=___tls_get_addr
2708         ;;
2709       *)
2710         on_solaris=no
2711         ;;
2712     esac
2713     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2714       conftest_s='
2715         .section .tdata,"awt",@progbits'
2716       tls_first_major=0
2717       tls_first_minor=0
2718 changequote([,])dnl
2719       AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
2720 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
2721 changequote(,)dnl
2722     else
2723       conftest_s='
2724         .section ".tdata","awT",@progbits'
2725       tls_first_major=2
2726       tls_first_minor=14
2727       tls_as_opt="--fatal-warnings"
2728     fi
2729     conftest_s="$conftest_s
2730 foo:    .long   25
2731         .text
2732         movl    %gs:0, %eax
2733         leal    foo@tlsgd(,%ebx,1), %eax
2734         leal    foo@tlsldm(%ebx), %eax
2735         leal    foo@dtpoff(%eax), %edx
2736         movl    foo@gottpoff(%ebx), %eax
2737         subl    foo@gottpoff(%ebx), %eax
2738         addl    foo@gotntpoff(%ebx), %eax
2739         movl    foo@indntpoff, %eax
2740         movl    \$foo@tpoff, %eax
2741         subl    \$foo@tpoff, %eax
2742         leal    foo@ntpoff(%ecx), %eax"
2743     ;;
2744   x86_64-*-*)
2745     conftest_s='
2746         .section ".tdata","awT",@progbits
2747 foo:    .long   25
2748         .text
2749         movq    %fs:0, %rax
2750         leaq    foo@TLSGD(%rip), %rdi
2751         leaq    foo@TLSLD(%rip), %rdi
2752         leaq    foo@DTPOFF(%rax), %rdx
2753         movq    foo@GOTTPOFF(%rip), %rax
2754         movq    $foo@TPOFF, %rax'
2755         tls_first_major=2
2756         tls_first_minor=14
2757         tls_as_opt=--fatal-warnings
2758         ;;
2759   ia64-*-*)
2760     conftest_s='
2761         .section ".tdata","awT",@progbits
2762 foo:    data8   25
2763         .text
2764         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2765         addl    r17 = @ltoff(@dtprel(foo#)), gp
2766         addl    r18 = @ltoff(@tprel(foo#)), gp
2767         addl    r19 = @dtprel(foo#), gp
2768         adds    r21 = @dtprel(foo#), r13
2769         movl    r23 = @dtprel(foo#)
2770         addl    r20 = @tprel(foo#), gp
2771         adds    r22 = @tprel(foo#), r13
2772         movl    r24 = @tprel(foo#)'
2773         tls_first_major=2
2774         tls_first_minor=13
2775         tls_as_opt=--fatal-warnings
2776         ;;
2777   mips*-*-*)
2778     conftest_s='
2779         .section .tdata,"awT",@progbits
2781         .word 2
2782         .text
2783         addiu $4, $28, %tlsgd(x)
2784         addiu $4, $28, %tlsldm(x)
2785         lui $4, %dtprel_hi(x)
2786         addiu $4, $4, %dtprel_lo(x)
2787         lw $4, %gottprel(x)($28)
2788         lui $4, %tprel_hi(x)
2789         addiu $4, $4, %tprel_lo(x)'
2790         tls_first_major=2
2791         tls_first_minor=16
2792         tls_as_opt='-32 --fatal-warnings'
2793         ;;
2794   m68k-*-*)
2795     conftest_s='
2796         .section .tdata,"awT",@progbits
2798         .word 2
2799         .text
2800 foo:
2801         move.l x@TLSGD(%a5),%a0
2802         move.l x@TLSLDM(%a5),%a0
2803         move.l x@TLSLDO(%a5),%a0
2804         move.l x@TLSIE(%a5),%a0
2805         move.l x@TLSLE(%a5),%a0'
2806         tls_first_major=2
2807         tls_first_minor=19
2808         tls_as_opt='--fatal-warnings'
2809         ;;
2810   powerpc-*-*)
2811     conftest_s='
2812         .section ".tdata","awT",@progbits
2813         .align 2
2814 ld0:    .space 4
2815 ld1:    .space 4
2816 x1:     .space 4
2817 x2:     .space 4
2818 x3:     .space 4
2819         .text
2820         addi 3,31,ld0@got@tlsgd
2821         bl __tls_get_addr
2822         addi 3,31,x1@got@tlsld
2823         bl __tls_get_addr
2824         addi 9,3,x1@dtprel
2825         addis 9,3,x2@dtprel@ha
2826         addi 9,9,x2@dtprel@l
2827         lwz 9,x3@got@tprel(31)
2828         add 9,9,x@tls
2829         addi 9,2,x1@tprel
2830         addis 9,2,x2@tprel@ha
2831         addi 9,9,x2@tprel@l'
2832         tls_first_major=2
2833         tls_first_minor=14
2834         tls_as_opt="-a32 --fatal-warnings"
2835         ;;
2836   powerpc64-*-*)
2837     conftest_s='
2838         .section ".tdata","awT",@progbits
2839         .align 3
2840 ld0:    .space 8
2841 ld1:    .space 8
2842 x1:     .space 8
2843 x2:     .space 8
2844 x3:     .space 8
2845         .text
2846         addi 3,2,ld0@got@tlsgd
2847         bl .__tls_get_addr
2848         nop
2849         addi 3,2,ld1@toc
2850         bl .__tls_get_addr
2851         nop
2852         addi 3,2,x1@got@tlsld
2853         bl .__tls_get_addr
2854         nop
2855         addi 9,3,x1@dtprel
2856         bl .__tls_get_addr
2857         nop
2858         addis 9,3,x2@dtprel@ha
2859         addi 9,9,x2@dtprel@l
2860         bl .__tls_get_addr
2861         nop
2862         ld 9,x3@got@dtprel(2)
2863         add 9,9,3
2864         bl .__tls_get_addr
2865         nop'
2866         tls_first_major=2
2867         tls_first_minor=14
2868         tls_as_opt="-a64 --fatal-warnings"
2869         ;;
2870   s390-*-*)
2871     conftest_s='
2872         .section ".tdata","awT",@progbits
2873 foo:    .long   25
2874         .text
2875         .long   foo@TLSGD
2876         .long   foo@TLSLDM
2877         .long   foo@DTPOFF
2878         .long   foo@NTPOFF
2879         .long   foo@GOTNTPOFF
2880         .long   foo@INDNTPOFF
2881         l       %r1,foo@GOTNTPOFF(%r12)
2882         l       %r1,0(%r1):tls_load:foo
2883         bas     %r14,0(%r1,%r13):tls_gdcall:foo
2884         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
2885         tls_first_major=2
2886         tls_first_minor=14
2887         tls_as_opt="-m31 --fatal-warnings"
2888         ;;
2889   s390x-*-*)
2890     conftest_s='
2891         .section ".tdata","awT",@progbits
2892 foo:    .long   25
2893         .text
2894         .quad   foo@TLSGD
2895         .quad   foo@TLSLDM
2896         .quad   foo@DTPOFF
2897         .quad   foo@NTPOFF
2898         .quad   foo@GOTNTPOFF
2899         lg      %r1,foo@GOTNTPOFF(%r12)
2900         larl    %r1,foo@INDNTPOFF
2901         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
2902         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2903         tls_first_major=2
2904         tls_first_minor=14
2905         tls_as_opt="-m64 -Aesame --fatal-warnings"
2906         ;;
2907   sh-*-* | sh[34]-*-*)
2908     conftest_s='
2909         .section ".tdata","awT",@progbits
2910 foo:    .long   25
2911         .text
2912         .long   foo@TLSGD
2913         .long   foo@TLSLDM
2914         .long   foo@DTPOFF
2915         .long   foo@GOTTPOFF
2916         .long   foo@TPOFF'
2917         tls_first_major=2
2918         tls_first_minor=13
2919         tls_as_opt=--fatal-warnings
2920         ;;
2921   sparc*-*-*)
2922     case "$target" in
2923       sparc*-sun-solaris2.*)
2924         on_solaris=yes
2925         tga_func=__tls_get_addr
2926         ;;
2927       *)
2928         on_solaris=no
2929         ;;
2930     esac
2931     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2932       conftest_s='
2933         .section ".tdata",#alloc,#write,#tls'
2934         tls_first_major=0
2935         tls_first_minor=0
2936     else
2937       conftest_s='
2938         .section ".tdata","awT",@progbits'
2939         tls_first_major=2
2940         tls_first_minor=14
2941         tls_as_opt="-32 --fatal-warnings"
2942     fi
2943     conftest_s="$conftest_s
2944 foo:    .long   25
2945         .text
2946         sethi   %tgd_hi22(foo), %o0
2947         add     %o0, %tgd_lo10(foo), %o1
2948         add     %l7, %o1, %o0, %tgd_add(foo)
2949         call    __tls_get_addr, %tgd_call(foo)
2950         sethi   %tldm_hi22(foo), %l1
2951         add     %l1, %tldm_lo10(foo), %l2
2952         add     %l7, %l2, %o0, %tldm_add(foo)
2953         call    __tls_get_addr, %tldm_call(foo)
2954         sethi   %tldo_hix22(foo), %l3
2955         xor     %l3, %tldo_lox10(foo), %l4
2956         add     %o0, %l4, %l5, %tldo_add(foo)
2957         sethi   %tie_hi22(foo), %o3
2958         add     %o3, %tie_lo10(foo), %o3
2959         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2960         add     %g7, %o2, %o4, %tie_add(foo)
2961         sethi   %tle_hix22(foo), %l1
2962         xor     %l1, %tle_lox10(foo), %o5
2963         ld      [%g7 + %o5], %o1"
2964         ;;
2965   xtensa*-*-*)
2966     conftest_s='
2967         .section ".tdata","awT",@progbits
2968 foo:    .long   25
2969         .text
2970         movi    a8, foo@TLSFUNC
2971         movi    a10, foo@TLSARG
2972         callx8.tls a8, foo@TLSCALL'
2973         tls_first_major=2
2974         tls_first_minor=19
2975         ;;
2976 changequote([,])dnl
2977 esac
2978 set_have_as_tls=no
2979 if test "x$enable_tls" = xno ; then
2980   : # TLS explicitly disabled.
2981 elif test "x$enable_tls" = xyes ; then
2982   set_have_as_tls=yes # TLS explicitly enabled.
2983 elif test -z "$tls_first_major"; then
2984   : # If we don't have a check, assume no support.
2985 else
2986   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2987   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2988   [set_have_as_tls=yes])
2990 case "$target" in
2991   # TLS was introduced in the Solaris 9 FCS release and backported to
2992   # Solaris 8 patches.  Support for GNU-style TLS on x86 was only
2993   # introduced in Solaris 9 4/04, replacing the earlier Sun style that Sun
2994   # ld and GCC don't support any longer.
2995   *-*-solaris2.*)
2996     AC_MSG_CHECKING(linker and ld.so.1 TLS support)
2997     ld_tls_support=no
2998     # Check ld and ld.so.1 TLS support.
2999     if echo "$ld_ver" | grep GNU > /dev/null; then
3000       # Assume all interesting versions of GNU ld have TLS support.
3001       # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3002       ld_tls_support=yes
3003     else
3004       case "$target" in
3005         # Solaris 8/x86 ld has GNU style TLS support since version 1.280.
3006         i?86-*-solaris2.8)
3007           min_tls_ld_vers_minor=280
3008           ;;
3009         # Solaris 8/SPARC ld has TLS support since version 1.272.
3010         sparc*-*-solaris2.8)
3011           min_tls_ld_vers_minor=272
3012           ;;
3013         # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3014         i?86-*-solaris2.9)
3015           min_tls_ld_vers_minor=374
3016           ;;
3017         # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3018         sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3019           min_tls_ld_vers_minor=343
3020           ;;
3021       esac
3022       if test "$ld_vers_major" -gt 1 || \
3023         test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3024         ld_tls_support=yes
3025       else
3026         set_have_as_tls=no
3027       fi
3028     fi
3029     AC_MSG_RESULT($ld_tls_support)
3031     save_LIBS="$LIBS"
3032     save_LDFLAGS="$LDFLAGS"
3033     LIBS=
3034     LDFLAGS=
3036     AC_MSG_CHECKING(alternate thread library)
3037     case "$target" in
3038       # TLS support was backported to Solaris 8 patches, but only lives in
3039       # the alternate thread library which became the default in Solaris 9. 
3040       # We want to always use that, irrespective of TLS support.
3041       *-*-solaris2.8)
3042         # Take multilib subdir into account.  There's no spec to handle
3043         # this.  The 64 symlink exists since Solaris 8.
3044         lwp_dir=/usr/lib/lwp
3045         lwp_spec="-L$lwp_dir%{m64:/64} -R$lwp_dir%{m64:/64}"
3046         LDFLAGS="-L$lwp_dir -R$lwp_dir"
3047         ;;
3048       *-*-solaris2*)
3049         lwp_dir="none"
3050         lwp_spec=""
3051         ;;
3052     esac    
3053     # Always define LIB_THREAD_LDFLAGS_SPEC, even without TLS support.
3054     AC_DEFINE_UNQUOTED(LIB_THREAD_LDFLAGS_SPEC, "$lwp_spec",
3055         [Define to the linker flags to use for -pthread.])
3056     AC_MSG_RESULT($lwp_dir)
3058     AC_MSG_CHECKING(library containing $tga_func)
3059     # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3060     # (32-bit x86) only lived in libthread, so check for that.  Keep
3061     # set_have_as_tls if found, disable if not.
3062     AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3063     # Clear LIBS if we cannot support TLS.
3064     if test $set_have_as_tls = no; then
3065       LIBS=
3066     fi
3067     # Always define LIB_TLS_SPEC, even without TLS support.
3068     AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3069         [Define to the library containing __tls_get_addr/___tls_get_addr.])
3070     AC_MSG_RESULT($LIBS)
3072     LIBS="$save_LIBS"
3073     LDFLAGS="$save_LDFLAGS"
3074     ;;
3075 esac
3076 if test $set_have_as_tls = yes ; then
3077   AC_DEFINE(HAVE_AS_TLS, 1,
3078             [Define if your assembler and linker support thread-local storage.])
3081 # Target-specific assembler checks.
3083 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3084 gcc_cv_ld_static_dynamic=no
3085 if test $in_tree_ld = yes ; then
3086   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
3087     gcc_cv_ld_static_dynamic=yes
3088   fi
3089 elif test x$gcc_cv_ld != x; then
3090         # Check if linker supports -Bstatic/-Bdynamic option
3091         if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3092           && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3093                 gcc_cv_ld_static_dynamic=yes
3094         fi
3096 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3097         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3098 [Define if your linker supports -Bstatic/-Bdynamic option.])
3100 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3102 if test x"$demangler_in_ld" = xyes; then
3103   AC_MSG_CHECKING(linker --demangle support)
3104   gcc_cv_ld_demangle=no
3105   if test $in_tree_ld = yes; then
3106     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 \
3107       gcc_cv_ld_demangle=yes
3108     fi
3109   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3110     # Check if the GNU linker supports --demangle option
3111     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3112       gcc_cv_ld_demangle=yes
3113     fi
3114   fi
3115   if test x"$gcc_cv_ld_demangle" = xyes; then
3116     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3117 [Define if your linker supports --demangle option.])
3118   fi
3119   AC_MSG_RESULT($gcc_cv_ld_demangle)
3122 case "$target" in
3123   # All TARGET_ABI_OSF targets.
3124   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
3125     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3126         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3127 [       .set nomacro
3128         .text
3129         extbl   $3, $2, $3      !lituse_bytoff!1
3130         ldq     $2, a($29)      !literal!1
3131         ldq     $4, b($29)      !literal!2
3132         ldq_u   $3, 0($2)       !lituse_base!1
3133         ldq     $27, f($29)     !literal!5
3134         jsr     $26, ($27), f   !lituse_jsr!5
3135         ldah    $29, 0($26)     !gpdisp!3
3136         lda     $0, c($29)      !gprel
3137         ldah    $1, d($29)      !gprelhigh
3138         lda     $1, d($1)       !gprellow
3139         lda     $29, 0($29)     !gpdisp!3],,
3140     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3141   [Define if your assembler supports explicit relocations.])])
3142     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3143         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3144 [       .set nomacro
3145         .text
3146         ldq     $27, a($29)     !literal!1
3147         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
3148     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3149   [Define if your assembler supports the lituse_jsrdirect relocation.])])
3150     ;;
3152   cris-*-*)
3153     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3154       gcc_cv_as_cris_no_mul_bug,[2,15,91],
3155       [-no-mul-bug-abort], [.text],,
3156       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3157                 [Define if your assembler supports the -no-mul-bug-abort option.])])
3158     ;;
3160   sparc*-*-*)
3161     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3162       [.register %g2, #scratch],,
3163       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3164                 [Define if your assembler supports .register.])])
3166     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3167       [-relax], [.text],,
3168       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3169                 [Define if your assembler supports -relax option.])])
3171     gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3172       gcc_cv_as_sparc_gotdata_op,,
3173       [-K PIC],
3174 [.text
3175 foo:
3176         nop
3177 bar:
3178         sethi %gdop_hix22(foo), %g1
3179         xor    %g1, %gdop_lox10(foo), %g1
3180         ld    [[%l7 + %g1]], %g2, %gdop(foo)],
3181       [if test x$gcc_cv_ld != x \
3182        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3183          if $gcc_cv_ld -v | grep GNU >/dev/null 2>&1; then
3184            if test x$gcc_cv_objdump != x; then
3185              if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3186                 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3187                gcc_cv_as_sparc_gotdata_op=no
3188              else
3189                gcc_cv_as_sparc_gotdata_op=yes
3190              fi
3191            fi
3192          else
3193            gcc_cv_as_sparc_gotdata_op=yes
3194          fi
3195        fi
3196        rm -f conftest],
3197       [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3198                 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3200     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3201       gcc_cv_as_sparc_ua_pcrel,,
3202       [-K PIC],
3203 [.text
3204 foo:
3205         nop
3206 .data
3207 .align 4
3208 .byte 0
3209 .uaword %r_disp32(foo)],
3210       [if test x$gcc_cv_ld != x \
3211        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3212          gcc_cv_as_sparc_ua_pcrel=yes
3213        fi
3214        rm -f conftest],
3215       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3216                 [Define if your assembler and linker support unaligned PC relative relocs.])
3218       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3219         gcc_cv_as_sparc_ua_pcrel_hidden,,
3220         [-K PIC],
3221 [.data
3222 .align 4
3223 .byte 0x31
3224 .uaword %r_disp32(foo)
3225 .byte 0x32, 0x33, 0x34
3226 .global foo
3227 .hidden foo
3228 foo:
3229 .skip 4],
3230         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3231          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3232          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3233             | grep ' 31000000 07323334' > /dev/null 2>&1; then
3234             if $gcc_cv_objdump -R conftest 2> /dev/null \
3235                | grep 'DISP32' > /dev/null 2>&1; then
3236                 :
3237             else
3238                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3239             fi
3240          fi
3241          rm -f conftest],
3242          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3243                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3244     ]) # unaligned pcrel relocs
3246     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3247       gcc_cv_as_sparc_offsetable_lo10,,
3248       [-xarch=v9],
3249 [.text
3250         or %g1, %lo(ab) + 12, %g1
3251         or %g1, %lo(ab + 12), %g1],
3252       [if test x$gcc_cv_objdump != x \
3253        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3254           | grep ' 82106000 82106000' > /dev/null 2>&1; then
3255          gcc_cv_as_sparc_offsetable_lo10=yes
3256        fi],
3257        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3258                  [Define if your assembler supports offsetable %lo().])])
3259     ;;
3261 changequote(,)dnl
3262   i[34567]86-*-* | x86_64-*-*)
3263 changequote([,])dnl
3264     case $target_os in
3265       cygwin*)
3266         # Full C++ conformance when using a shared libstdc++-v3 requires some
3267         # support from the Cygwin DLL, which in more recent versions exports
3268         # wrappers to aid in interposing and redirecting operators new, delete,
3269         # etc., as per n2800 #17.6.4.6 [replacement.functions].  Check if we
3270         # are configuring for a version of Cygwin that exports the wrappers.
3271         if test x$host = x$target; then
3272           AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3273         else
3274           # Can't check presence of libc functions during cross-compile, so
3275           # we just have to assume we're building for an up-to-date target.
3276           gcc_ac_cygwin_dll_wrappers=yes
3277         fi
3278         AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3279           [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3280           [Define if you want to generate code by default that assumes that the
3281            Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3282     esac
3283     case $target_os in
3284       cygwin* | pe | mingw32*)
3285         # Recent binutils allows the three-operand form of ".comm" on PE.  This
3286         # definition is used unconditionally to initialise the default state of
3287         # the target option variable that governs usage of the feature.
3288         gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3289          [2,19,52],,[.comm foo,1,32])
3290         AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3291           [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3292           [Define if your assembler supports specifying the alignment
3293            of objects allocated using the GAS .comm command.])
3294         # Used for DWARF 2 in PE
3295         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3296           gcc_cv_as_ix86_pe_secrel32,
3297           [2,15,91],,
3298 [.text
3299 foo:    nop
3300 .data
3301         .secrel32 foo],
3302           [if test x$gcc_cv_ld != x \
3303            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3304              gcc_cv_as_ix86_pe_secrel32=yes
3305            fi
3306            rm -f conftest],
3307           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3308             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3309         # Test if the assembler supports the extended form of the .section
3310         # directive that specifies section alignment.  LTO support uses this,
3311         # but normally only after installation, so we warn but don't fail the
3312         # configure if LTO is enabled but the assembler does not support it.
3313         gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3314           [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3315         if test x$gcc_cv_as_section_has_align != xyes; then
3316           case ",$enable_languages," in
3317             *,lto,*)
3318               AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3319               ;;
3320           esac
3321         fi
3322         ;;
3323     esac
3325     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3326        gcc_cv_as_ix86_filds,,,
3327        [filds mem; fists mem],,
3328        [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3329          [Define if your assembler uses filds and fists mnemonics.])])
3331     gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3332        gcc_cv_as_ix86_fildq,,,
3333        [fildq mem; fistpq mem],,
3334        [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3335          [Define if your assembler uses fildq and fistq mnemonics.])])
3337     gcc_GAS_CHECK_FEATURE([cmov syntax],
3338       gcc_cv_as_ix86_cmov_sun_syntax,,,
3339       [cmovl.l %edx, %eax],,
3340       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3341         [Define if your assembler supports the Sun syntax for cmov.])])
3343     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3344       gcc_cv_as_ix86_ffreep,,,
3345       [ffreep %st(1)],,
3346       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3347         [Define if your assembler supports the ffreep mnemonic.])])
3349     gcc_GAS_CHECK_FEATURE([.quad directive],
3350       gcc_cv_as_ix86_quad,,,
3351       [.quad 0],,
3352       [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3353         [Define if your assembler supports the .quad directive.])])
3355     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3356       gcc_cv_as_ix86_sahf,,,
3357       [.code64
3358        sahf],,
3359       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3360         [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3362     gcc_GAS_CHECK_FEATURE([swap suffix],
3363       gcc_cv_as_ix86_swap,,,
3364       [movl.s %esp, %ebp],,
3365       [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3366         [Define if your assembler supports the swap suffix.])])
3368     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3369       gcc_cv_as_ix86_diff_sect_delta,,,
3370       [.section .rodata
3371 .L1:
3372         .long .L2-.L1
3373         .long .L3-.L1
3374         .text
3375 .L3:    nop
3376 .L2:    nop],,
3377       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3378         [Define if your assembler supports the subtraction of symbols in different sections.])])
3380     # These two are used unconditionally by i386.[ch]; it is to be defined
3381     # to 1 if the feature is present, 0 otherwise.
3382     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3383         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3384 [       .text
3385 .L0:
3386         nop
3387         .data
3388         .long .L0@GOTOFF])
3389     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3390       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3391       [Define true if the assembler supports '.long foo@GOTOFF'.])
3393     gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3394         gcc_cv_as_ix86_rep_lock_prefix,,,
3395         [rep movsl
3396          lock addl %edi, (%eax,%esi)
3397          lock orl $0, (%esp)],,
3398         [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3399           [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3401     ;;
3403   ia64*-*-*)
3404     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3405         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3406 [       .text
3407         addl r15 = @ltoffx(x#), gp
3408         ;;
3409         ld8.mov r16 = [[r15]], x#],,
3410     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3411           [Define if your assembler supports ltoffx and ldxmov relocations.])])
3413     ;;
3415   powerpc*-*-*)
3416     case $target in
3417       *-*-aix*) conftest_s='    .machine "pwr5"
3418         .csect .text[[PR]]
3419         mfcr 3,128';;
3420       *-*-darwin*)
3421         gcc_GAS_CHECK_FEATURE([.machine directive support],
3422           gcc_cv_as_machine_directive,,,
3423           [     .machine ppc7400])
3424         if test x$gcc_cv_as_machine_directive != xyes; then
3425           echo "*** This target requires an assembler supporting \".machine\"" >&2
3426           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3427           test x$build = x$target && exit 1
3428         fi
3429         conftest_s='    .text
3430         mfcr r3,128';;
3431       *) conftest_s='   .machine power4
3432         .text
3433         mfcr 3,128';;
3434     esac
3436     gcc_GAS_CHECK_FEATURE([mfcr field support],
3437       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3438       [$conftest_s],,
3439       [AC_DEFINE(HAVE_AS_MFCRF, 1,
3440           [Define if your assembler supports mfcr field.])])
3442     case $target in
3443       *-*-aix*) conftest_s='    .machine "pwr5"
3444         .csect .text[[PR]]
3445         popcntb 3,3';;
3446       *) conftest_s='   .machine power5
3447         .text
3448         popcntb 3,3';;
3449     esac
3451     gcc_GAS_CHECK_FEATURE([popcntb support],
3452       gcc_cv_as_powerpc_popcntb, [2,17,0],,
3453       [$conftest_s],,
3454       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3455           [Define if your assembler supports popcntb field.])])
3457     case $target in
3458       *-*-aix*) conftest_s='    .machine "pwr5x"
3459         .csect .text[[PR]]
3460         frin 1,1';;
3461       *) conftest_s='   .machine power5
3462         .text
3463         frin 1,1';;
3464     esac
3466     gcc_GAS_CHECK_FEATURE([fp round support],
3467       gcc_cv_as_powerpc_fprnd, [2,17,0],,
3468       [$conftest_s],,
3469       [AC_DEFINE(HAVE_AS_FPRND, 1,
3470           [Define if your assembler supports fprnd.])])
3472     case $target in
3473       *-*-aix*) conftest_s='    .machine "pwr6"
3474         .csect .text[[PR]]
3475         mffgpr 1,3';;
3476       *) conftest_s='   .machine power6
3477         .text
3478         mffgpr 1,3';;
3479     esac
3481     gcc_GAS_CHECK_FEATURE([move fp gpr support],
3482       gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
3483       [$conftest_s],,
3484       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3485           [Define if your assembler supports mffgpr and mftgpr.])])
3487     case $target in
3488       *-*-aix*) conftest_s='    .csect .text[[PR]]
3489 LCF..0:
3490         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3491       *-*-darwin*)
3492         conftest_s='    .text
3493 LCF0:
3494         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3495       *) conftest_s='   .text
3496 .LCF0:
3497         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3498     esac
3500     gcc_GAS_CHECK_FEATURE([rel16 relocs],
3501       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3502       [$conftest_s],,
3503       [AC_DEFINE(HAVE_AS_REL16, 1,
3504           [Define if your assembler supports R_PPC_REL16 relocs.])])
3506     case $target in
3507       *-*-aix*) conftest_s='    .machine "pwr6"
3508         .csect .text[[PR]]
3509         cmpb 3,4,5';;
3510       *) conftest_s='   .machine power6
3511         .text
3512         cmpb 3,4,5';;
3513     esac
3515     gcc_GAS_CHECK_FEATURE([compare bytes support],
3516       gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3517       [$conftest_s],,
3518       [AC_DEFINE(HAVE_AS_CMPB, 1,
3519           [Define if your assembler supports cmpb.])])
3521     case $target in
3522       *-*-aix*) conftest_s='    .machine "pwr6"
3523         .csect .text[[PR]]
3524         dadd 1,2,3';;
3525       *) conftest_s='   .machine power6
3526         .text
3527         dadd 1,2,3';;
3528     esac
3530     gcc_GAS_CHECK_FEATURE([decimal float support],
3531       gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
3532       [$conftest_s],,
3533       [AC_DEFINE(HAVE_AS_DFP, 1,
3534           [Define if your assembler supports DFP instructions.])])
3536     case $target in
3537       *-*-aix*) conftest_s='    .machine "pwr7"
3538         .csect .text[[PR]]
3539         lxvd2x 1,2,3';;
3540       *) conftest_s='   .machine power7
3541         .text
3542         lxvd2x 1,2,3';;
3543     esac
3545     gcc_GAS_CHECK_FEATURE([vector-scalar support],
3546       gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
3547       [$conftest_s],,
3548       [AC_DEFINE(HAVE_AS_VSX, 1,
3549           [Define if your assembler supports VSX instructions.])])
3551     case $target in
3552       *-*-aix*) conftest_s='    .machine "pwr7"
3553         .csect .text[[PR]]
3554         popcntd 3,3';;
3555       *) conftest_s='   .machine power7
3556         .text
3557         popcntd 3,3';;
3558     esac
3560     gcc_GAS_CHECK_FEATURE([popcntd support],
3561       gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3562       [$conftest_s],,
3563       [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3564           [Define if your assembler supports POPCNTD instructions.])])
3566     case $target in
3567       *-*-aix*) conftest_s='    .csect .text[[PR]]
3568         lwsync';;
3569       *) conftest_s='   .text
3570         lwsync';;
3571     esac
3573     gcc_GAS_CHECK_FEATURE([lwsync support],
3574       gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3575       [$conftest_s],,
3576       [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3577           [Define if your assembler supports LWSYNC instructions.])])
3579     case $target in
3580       *-*-aix*) conftest_s='    .machine "476"
3581         .csect .text[[PR]]
3582         dci 0';;
3583       *) conftest_s='   .machine "476"
3584         .text
3585         dci 0';;
3586     esac
3588     gcc_GAS_CHECK_FEATURE([data cache invalidate support],
3589       gcc_cv_as_powerpc_dci, [9,99,0], -a32,
3590       [$conftest_s],,
3591       [AC_DEFINE(HAVE_AS_DCI, 1,
3592           [Define if your assembler supports the DCI/ICI instructions.])])
3594     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3595       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3596       [.gnu_attribute 4,1],,
3597       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3598           [Define if your assembler supports .gnu_attribute.])])
3600     gcc_GAS_CHECK_FEATURE([tls marker support],
3601       gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3602       [ bl __tls_get_addr(x@tlsgd)],,
3603       [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3604           [Define if your assembler supports arg info for __tls_get_addr.])])
3606     case $target in
3607       *-*-aix*)
3608         gcc_GAS_CHECK_FEATURE([.ref support],
3609           gcc_cv_as_aix_ref, [2.21.0],,
3610           [     .csect stuff[[rw]]
3611              stuff:
3612                 .long 1
3613                 .extern sym
3614                 .ref sym
3615           ],,
3616           [AC_DEFINE(HAVE_AS_REF, 1,
3617             [Define if your assembler supports .ref])])
3618         ;;
3619     esac
3620     ;;
3622   mips*-*-*)
3623     gcc_GAS_CHECK_FEATURE([explicit relocation support],
3624       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3625 [       lw $4,%gp_rel(foo)($4)],,
3626       [if test x$target_cpu_default = x
3627        then target_cpu_default=MASK_EXPLICIT_RELOCS
3628        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3629        fi])
3630     gcc_GAS_CHECK_FEATURE([-mno-shared support],
3631       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3632       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3633                  [Define if the assembler understands -mno-shared.])])
3635     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3636       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3637       [.gnu_attribute 4,1],,
3638       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3639           [Define if your assembler supports .gnu_attribute.])])
3641     gcc_GAS_CHECK_FEATURE([.dtprelword support],
3642       gcc_cv_as_mips_dtprelword, [2,18,0],,
3643       [.section .tdata,"awT",@progbits
3645         .word 2
3646         .text
3647         .dtprelword x+0x8000],,
3648       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3649           [Define if your assembler supports .dtprelword.])])
3651     AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3652     gcc_cv_as_ld_jalr_reloc=no
3653     if test $gcc_cv_as_mips_explicit_relocs = yes; then
3654       if test $in_tree_ld = yes ; then
3655         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 \
3656            && test $in_tree_ld_is_elf = yes; then
3657           gcc_cv_as_ld_jalr_reloc=yes
3658         fi
3659       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3660         echo '  .ent x' > conftest.s
3661         echo 'x:        ld $2,%got_disp(y)($3)' >> conftest.s
3662         echo '  ld $25,%call16(y)($28)' >> conftest.s
3663         echo '  .reloc  1f,R_MIPS_JALR,y' >> conftest.s
3664         echo '1:        jalr $25' >> conftest.s
3665         echo '  .reloc  1f,R_MIPS_JALR,x' >> conftest.s
3666         echo '1:        jalr $25' >> conftest.s
3667         echo '  .end x' >> conftest.s
3668         if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
3669            && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
3670           if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
3671              && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
3672             gcc_cv_as_ld_jalr_reloc=yes
3673           fi
3674         fi
3675         rm -f conftest.*
3676       fi
3677     fi
3678     if test $gcc_cv_as_ld_jalr_reloc = yes; then
3679       if test x$target_cpu_default = x; then
3680         target_cpu_default=MASK_RELAX_PIC_CALLS
3681       else
3682         target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
3683       fi
3684     fi
3685     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
3687     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
3688       [gcc_cv_ld_mips_personality_relaxation],
3689       [gcc_cv_ld_mips_personality_relaxation=no
3690        if test $in_tree_ld = yes ; then
3691          if test "$gcc_cv_gld_major_version" -eq 2 \
3692                  -a "$gcc_cv_gld_minor_version" -ge 21 \
3693                  -o "$gcc_cv_gld_major_version" -gt 2; then
3694            gcc_cv_ld_mips_personality_relaxation=yes
3695          fi
3696        elif test x$gcc_cv_as != x \
3697                  -a x$gcc_cv_ld != x \
3698                  -a x$gcc_cv_readelf != x ; then
3699          cat > conftest.s <<EOF
3700         .cfi_startproc
3701         .cfi_personality 0x80,indirect_ptr
3702         .ent test
3703 test:
3704         nop
3705         .end test
3706         .cfi_endproc
3708         .section .data,"aw",@progbits
3709 indirect_ptr:
3710         .dc.a personality
3712          if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
3713             && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
3714            if $gcc_cv_readelf -d conftest 2>&1 \
3715               | grep TEXTREL > /dev/null 2>&1; then
3716              :
3717            elif $gcc_cv_readelf --relocs conftest 2>&1 \
3718                 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
3719              :
3720            else
3721              gcc_cv_ld_mips_personality_relaxation=yes
3722            fi
3723          fi
3724        fi
3725        rm -f conftest.s conftest.o conftest])
3726     if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
3727             AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
3728       [Define if your linker can relax absolute .eh_frame personality
3729 pointers into PC-relative form.])
3730     fi
3731     ;;
3732 esac
3734 # Mips and HP-UX need the GNU assembler.
3735 # Linux on IA64 might be able to use the Intel assembler.
3737 case "$target" in
3738   mips*-*-* | *-*-hpux* )
3739     if test x$gas_flag = xyes \
3740        || test x"$host" != x"$build" \
3741        || test ! -x "$gcc_cv_as" \
3742        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
3743       :
3744     else
3745       echo "*** This configuration requires the GNU assembler" >&2
3746       exit 1
3747     fi
3748     ;;
3749 esac
3751 # ??? Not all targets support dwarf2 debug_line, even within a version
3752 # of gas.  Moreover, we need to emit a valid instruction to trigger any
3753 # info to the output file.  So, as supported targets are added to gas 2.11,
3754 # add some instruction here to (also) show we expect this might work.
3755 # ??? Once 2.11 is released, probably need to add first known working
3756 # version to the per-target configury.
3757 case "$target" in
3758   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
3759   | x86_64*-*-* | hppa*-*-* | arm*-*-* | avr*-*-* \
3760   | xstormy16*-*-* | cris-*-* | crisv32-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \
3761   | spu-*-* | fido*-*-* | m32c-*-* | microblaze-*-*)
3762     insn="nop"
3763     ;;
3764   ia64*-*-* | s390*-*-*)
3765     insn="nop 0"
3766     ;;
3767   mmix-*-*)
3768     insn="swym 0"
3769     ;;
3770 esac
3771 if test x"$insn" != x; then
3772  conftest_s="\
3773         .file 1 \"conftest.s\"
3774         .loc 1 3 0
3775         $insn"
3776  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3777   gcc_cv_as_dwarf2_debug_line,
3778   [elf,2,11,0],, [$conftest_s],
3779   [if test x$gcc_cv_objdump != x \
3780    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3781       | grep debug_line > /dev/null 2>&1; then
3782      gcc_cv_as_dwarf2_debug_line=yes
3783    fi])
3785 # The .debug_line file table must be in the exact order that
3786 # we specified the files, since these indices are also used
3787 # by DW_AT_decl_file.  Approximate this test by testing if
3788 # the assembler bitches if the same index is assigned twice.
3789  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3790   gcc_cv_as_dwarf2_file_buggy,,,
3791 [       .file 1 "foo.s"
3792         .file 1 "bar.s"])
3794  if test $gcc_cv_as_dwarf2_debug_line = yes \
3795  && test $gcc_cv_as_dwarf2_file_buggy = no; then
3796         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
3797   [Define if your assembler supports dwarf2 .file/.loc directives,
3798    and preserves file table indices exactly as given.])
3799  fi
3801  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3802   gcc_cv_as_gdwarf2_flag,
3803   [elf,2,11,0], [--gdwarf2], [$insn],,
3804   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3805 [Define if your assembler supports the --gdwarf2 option.])])
3807  gcc_GAS_CHECK_FEATURE([--gstabs option],
3808   gcc_cv_as_gstabs_flag,
3809   [elf,2,11,0], [--gstabs], [$insn],
3810   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3811    # and warns about it, but still exits successfully.  So check for
3812    # this.
3813    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3814    then :
3815    else gcc_cv_as_gstabs_flag=yes
3816    fi],
3817   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3818 [Define if your assembler supports the --gstabs option.])])
3820  gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
3821   gcc_cv_as_debug_prefix_map_flag,
3822   [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
3823   [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
3824 [Define if your assembler supports the --debug-prefix-map option.])])
3827 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
3828  ,,
3829 [.lcomm bar,4,16],,
3830 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
3831   [Define if your assembler supports .lcomm with an alignment field.])])
3833 AC_ARG_ENABLE(gnu-unique-object,
3834  [  --enable-gnu-unique-object  enable the use of the @gnu_unique_object ELF extension on
3835                                 glibc systems],
3836  [case $enable_gnu_unique_object in
3837     yes | no) ;;
3838     *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
3839 Valid choices are 'yes' and 'no'.]) ;;
3840   esac],
3841  [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
3842    [elf,2,19,52],,
3843    [.type foo, @gnu_unique_object],,
3844 # Also check for ld.so support, i.e. glibc 2.11 or higher.
3845    [[if test x$host = x$build -a x$host = x$target &&
3846        glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
3847       glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
3848       glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
3849       glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
3850       if test "$glibcnum" -ge 2011 ; then
3851         enable_gnu_unique_object=yes
3852       fi
3853     fi]])])
3854 if test x$enable_gnu_unique_object = xyes; then
3855   AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
3856    [Define if your assembler supports @gnu_unique_object.])
3859 AC_CACHE_CHECK([assembler for tolerance to line number 0],
3860  [gcc_cv_as_line_zero],
3861  [gcc_cv_as_line_zero=no
3862   if test $in_tree_gas = yes; then
3863     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
3864   elif test "x$gcc_cv_as" != x; then
3865     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3866     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3867        test "x`cat conftest.out`" = x
3868     then
3869       gcc_cv_as_line_zero=yes
3870     else
3871       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3872       cat conftest.s >&AS_MESSAGE_LOG_FD
3873       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3874       cat conftest.out >&AS_MESSAGE_LOG_FD
3875     fi
3876     rm -f conftest.o conftest.s conftest.out
3877   fi])
3878 if test "x$gcc_cv_as_line_zero" = xyes; then
3879   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3880 [Define if the assembler won't complain about a line such as # 0 "" 2.])
3883 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3884 gcc_cv_ld_eh_frame_hdr=no
3885 if test $in_tree_ld = yes ; then
3886   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 \
3887      && test $in_tree_ld_is_elf = yes; then
3888     gcc_cv_ld_eh_frame_hdr=yes
3889   fi
3890 elif test x$gcc_cv_ld != x; then
3891         # Check if linker supports --eh-frame-hdr option
3892         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3893                 gcc_cv_ld_eh_frame_hdr=yes
3894         fi
3896 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
3897 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3898         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3899 [Define if your linker supports --eh-frame-hdr option.])
3901 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3903 AC_MSG_CHECKING(linker position independent executable support)
3904 gcc_cv_ld_pie=no
3905 if test $in_tree_ld = yes ; then
3906   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 \
3907      && test $in_tree_ld_is_elf = yes; then
3908     gcc_cv_ld_pie=yes
3909   fi
3910 elif test x$gcc_cv_ld != x; then
3911         # Check if linker supports -pie option
3912         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3913                 gcc_cv_ld_pie=yes
3914         fi
3916 if test x"$gcc_cv_ld_pie" = xyes; then
3917         AC_DEFINE(HAVE_LD_PIE, 1,
3918 [Define if your linker supports -pie option.])
3920 AC_MSG_RESULT($gcc_cv_ld_pie)
3922 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3923 gcc_cv_ld_eh_gc_sections=no
3924 if test $in_tree_ld = yes ; then
3925   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 \
3926      && test $in_tree_ld_is_elf = yes; then
3927     gcc_cv_ld_eh_gc_sections=yes
3928   fi
3929 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3930   cat > conftest.s <<EOF
3931         .section        .text
3932 .globl _start
3933         .type _start, @function
3934 _start:
3935         .long foo
3936         .size _start, .-_start
3937         .section        .text.foo,"ax",@progbits
3938         .type foo, @function
3939 foo:
3940         .long 0
3941         .size foo, .-foo
3942         .section        .gcc_except_table.foo,"a",@progbits
3943 .L0:
3944         .long 0
3945         .section        .eh_frame,"a",@progbits
3946         .long .L0
3948   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3949     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3950          | grep "gc-sections option ignored" > /dev/null; then
3951       gcc_cv_ld_eh_gc_sections=no
3952     elif $gcc_cv_objdump -h conftest 2> /dev/null \
3953          | grep gcc_except_table > /dev/null; then
3954       gcc_cv_ld_eh_gc_sections=yes
3955       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3956       if test x$gcc_cv_as_comdat_group != xyes; then
3957         gcc_cv_ld_eh_gc_sections=no
3958         cat > conftest.s <<EOF
3959         .section        .text
3960 .globl _start
3961         .type _start, @function
3962 _start:
3963         .long foo
3964         .size _start, .-_start
3965         .section        .gnu.linkonce.t.foo,"ax",@progbits
3966         .type foo, @function
3967 foo:
3968         .long 0
3969         .size foo, .-foo
3970         .section        .gcc_except_table.foo,"a",@progbits
3971 .L0:
3972         .long 0
3973         .section        .eh_frame,"a",@progbits
3974         .long .L0
3976         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3977           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3978                | grep "gc-sections option ignored" > /dev/null; then
3979             gcc_cv_ld_eh_gc_sections=no
3980           elif $gcc_cv_objdump -h conftest 2> /dev/null \
3981                | grep gcc_except_table > /dev/null; then
3982             gcc_cv_ld_eh_gc_sections=yes
3983           fi
3984         fi
3985       fi
3986     fi
3987   fi
3988   rm -f conftest.s conftest.o conftest
3990 case "$target" in
3991   hppa*-*-linux*)
3992     # ??? This apparently exposes a binutils bug with PC-relative relocations.
3993     gcc_cv_ld_eh_gc_sections=no
3994     ;;
3995 esac
3996 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3997         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3998   [Define if your linker supports garbage collection of
3999    sections in presence of EH frames.])
4001 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4003 # --------
4004 # UNSORTED
4005 # --------
4007 AC_CACHE_CHECK(linker --as-needed support,
4008 gcc_cv_ld_as_needed,
4009 [gcc_cv_ld_as_needed=no
4010 if test $in_tree_ld = yes ; then
4011   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 \
4012      && test $in_tree_ld_is_elf = yes; then
4013     gcc_cv_ld_as_needed=yes
4014   fi
4015 elif test x$gcc_cv_ld != x; then
4016         # Check if linker supports --as-needed and --no-as-needed options
4017         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4018                 gcc_cv_ld_as_needed=yes
4019         fi
4022 if test x"$gcc_cv_ld_as_needed" = xyes; then
4023         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4024 [Define if your linker supports --as-needed and --no-as-needed options.])
4027 case "$target:$tm_file" in
4028   powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4029     AC_CACHE_CHECK(linker support for omitting dot symbols,
4030     gcc_cv_ld_no_dot_syms,
4031     [gcc_cv_ld_no_dot_syms=no
4032     if test $in_tree_ld = yes ; then
4033       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
4034         gcc_cv_ld_no_dot_syms=yes
4035       fi
4036     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4037       cat > conftest1.s <<EOF
4038         .text
4039         bl .foo
4041       cat > conftest2.s <<EOF
4042         .section ".opd","aw"
4043         .align 3
4044         .globl foo
4045         .type foo,@function
4046 foo:
4047         .quad .LEfoo,.TOC.@tocbase,0
4048         .text
4049 .LEfoo:
4050         blr
4051         .size foo,.-.LEfoo
4053       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4054          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4055          && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4056         gcc_cv_ld_no_dot_syms=yes
4057       fi
4058       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4059     fi
4060     ])
4061     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4062       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4063     [Define if your PowerPC64 linker only needs function descriptor syms.])
4064     fi
4066     AC_CACHE_CHECK(linker large toc support,
4067     gcc_cv_ld_large_toc,
4068     [gcc_cv_ld_large_toc=no
4069     if test $in_tree_ld = yes ; then
4070       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
4071         gcc_cv_ld_large_toc=yes
4072       fi
4073     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4074       cat > conftest.s <<EOF
4075         .section ".tbss","awT",@nobits
4076         .align 3
4077 ie0:    .space 8
4078         .global _start
4079         .text
4080 _start:
4081         addis 9,13,ie0@got@tprel@ha
4082         ld 9,ie0@got@tprel@l(9)
4084       if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4085          && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4086         gcc_cv_ld_large_toc=yes
4087       fi
4088       rm -f conftest conftest.o conftest.s
4089     fi
4090     ])
4091     if test x"$gcc_cv_ld_large_toc" = xyes; then
4092       AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4093     [Define if your PowerPC64 linker supports a large TOC.])
4094     fi
4095     ;;
4096 esac
4098 AC_CACHE_CHECK(linker --build-id support,
4099   gcc_cv_ld_buildid,
4100   [gcc_cv_ld_buildid=no
4101   if test $in_tree_ld = yes ; then
4102     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4103        "$gcc_cv_gld_minor_version" -ge 18 -o \
4104        "$gcc_cv_gld_major_version" -gt 2 \
4105        && test $in_tree_ld_is_elf = yes; then
4106       gcc_cv_ld_buildid=yes
4107     fi
4108   elif test x$gcc_cv_ld != x; then
4109     if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4110       gcc_cv_ld_buildid=yes
4111     fi
4112   fi])
4113 if test x"$gcc_cv_ld_buildid" = xyes; then
4114   AC_DEFINE(HAVE_LD_BUILDID, 1,
4115   [Define if your linker supports --build-id.])
4118 AC_ARG_ENABLE(linker-build-id,
4119 [  --enable-linker-build-id
4120                           compiler will always pass --build-id to linker],
4122 enable_linker_build_id=no)
4124 if test x"$enable_linker_build_id" = xyes; then
4125   if test x"$gcc_cv_ld_buildid" = xyes; then
4126     AC_DEFINE(ENABLE_LD_BUILDID, 1,
4127     [Define if gcc should always pass --build-id to linker.])
4128   else
4129     AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4130   fi
4133 # In binutils 2.21, GNU ld gained support for new emulations fully
4134 # supporting the Solaris 2 ABI.  Detect their presence in the linker used.
4135 AC_CACHE_CHECK(linker *_sol2 emulation support,
4136   gcc_cv_ld_sol2_emulation,
4137   [gcc_cv_ld_sol2_emulation=no
4138   if test $in_tree_ld = yes ; then
4139     if test "$gcc_cv_gld_major_version" -eq 2 -a \
4140        "$gcc_cv_gld_minor_version" -ge 21 -o \
4141        "$gcc_cv_gld_major_version" -gt 2 \
4142        && test $in_tree_ld_is_elf = yes; then
4143       gcc_cv_ld_sol2_emulation=yes
4144     fi
4145   elif test x$gcc_cv_ld != x; then
4146     if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4147        grep _sol2 > /dev/null; then
4148       gcc_cv_ld_sol2_emulation=yes
4149     fi
4150   fi])
4151 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4152   AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4153   [Define if your linker supports the *_sol2 emulations.])
4156 AC_CACHE_CHECK(linker --sysroot support,
4157   gcc_cv_ld_sysroot,
4158   [gcc_cv_ld_sysroot=no
4159   if test $in_tree_ld = yes ; then
4160       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
4161         gcc_cv_ld_sysroot=yes
4162       fi
4163   elif test x$gcc_cv_ld != x; then 
4164     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4165       gcc_cv_ld_sysroot=yes
4166     fi
4167   fi])
4168 if test x"$gcc_cv_ld_sysroot" = xyes; then
4169   AC_DEFINE(HAVE_LD_SYSROOT, 1,
4170   [Define if your linker supports --sysroot.])
4171 fi        
4173 if test x$with_sysroot = x && test x$host = x$target \
4174    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4175    && test "$prefix" != "NONE"; then
4176   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4177 [Define to PREFIX/include if cpp should also search that directory.])
4180 # Test for stack protector support in target C library.
4181 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4182       gcc_cv_libc_provides_ssp,
4183       [gcc_cv_libc_provides_ssp=no
4184     case "$target" in
4185        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4186       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4187         if test "x$with_headers" != x; then
4188           glibc_header_dir=$with_headers
4189         elif test "x$with_sysroot" = x; then
4190           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
4191         elif test "x$with_build_sysroot" != "x"; then
4192           glibc_header_dir="${with_build_sysroot}/usr/include"
4193         elif test "x$with_sysroot" = xyes; then
4194           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
4195         else
4196           glibc_header_dir="${with_sysroot}/usr/include"
4197         fi
4198       else
4199         glibc_header_dir=/usr/include
4200       fi
4201       [# glibc 2.4 and later provides __stack_chk_fail and
4202       # either __stack_chk_guard, or TLS access to stack guard canary.
4203       if test -f $glibc_header_dir/features.h \
4204          && $EGREP '^[  ]*#[    ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
4205             $glibc_header_dir/features.h > /dev/null; then
4206         if $EGREP '^[   ]*#[    ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
4207            $glibc_header_dir/features.h > /dev/null; then
4208           gcc_cv_libc_provides_ssp=yes
4209         elif $EGREP '^[         ]*#[    ]*define[       ]+__GLIBC__[    ]+2' \
4210              $glibc_header_dir/features.h > /dev/null \
4211              && $EGREP '^[      ]*#[    ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
4212              $glibc_header_dir/features.h > /dev/null; then
4213           gcc_cv_libc_provides_ssp=yes
4214         elif $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC__[   ]+1' \
4215              $glibc_header_dir/features.h > /dev/null && \
4216              test -f $glibc_header_dir/bits/uClibc_config.h && \
4217              $EGREP '^[         ]*#[    ]*define[       ]+__UCLIBC_HAS_SSP__[   ]+1' \
4218              $glibc_header_dir/bits/uClibc_config.h > /dev/null; then
4219           gcc_cv_libc_provides_ssp=yes
4220         fi
4221       fi]
4222         ;;
4223        *-*-gnu*)
4224          # Avoid complicated tests (see
4225          # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4226          # simply assert that glibc does provide this, which is true for all
4227          # realistically usable GNU/Hurd configurations.
4228          gcc_cv_libc_provides_ssp=yes;;
4229        *-*-darwin* | *-*-freebsd*)
4230          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4231            [echo "no __stack_chk_fail on this target"])
4232         ;;
4233   *) gcc_cv_libc_provides_ssp=no ;;
4234     esac])
4236 if test x$gcc_cv_libc_provides_ssp = xyes; then
4237   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4238             [Define if your target C library provides stack protector support])
4241 # Check if TFmode long double should be used by default or not.
4242 # Some glibc targets used DFmode long double, but with glibc 2.4
4243 # and later they can use TFmode.
4244 case "$target" in
4245   powerpc*-*-linux* | \
4246   powerpc*-*-gnu* | \
4247   sparc*-*-linux* | \
4248   s390*-*-linux* | \
4249   alpha*-*-linux*)
4250     AC_ARG_WITH(long-double-128,
4251 [  --with-long-double-128  Use 128-bit long double by default.],
4252       gcc_cv_target_ldbl128="$with_long_double_128",
4253       [[gcc_cv_target_ldbl128=no
4254       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4255         if test "x$with_sysroot" = x; then
4256           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
4257         elif test "x$with_build_sysroot" != "x"; then
4258           glibc_header_dir="${with_build_sysroot}/usr/include"
4259         elif test "x$with_sysroot" = xyes; then
4260           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
4261         else
4262           glibc_header_dir="${with_sysroot}/usr/include"
4263         fi
4264       else
4265         glibc_header_dir=/usr/include
4266       fi
4267       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4268         $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4269       && gcc_cv_target_ldbl128=yes
4270       ]])
4271     ;;
4272 esac
4273 if test x$gcc_cv_target_ldbl128 = xyes; then
4274   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4275             [Define if TFmode long double should be the default])
4278 # Find out what GC implementation we want, or may, use.
4279 AC_ARG_WITH(gc,
4280 [  --with-gc={page,zone}   choose the garbage collection mechanism to use
4281                           with the compiler],
4282 [case "$withval" in
4283   page)
4284     GGC=ggc-$withval
4285     ;;
4286   zone)
4287     GGC=ggc-$withval
4288     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4289     ;;
4290   *)
4291     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4292     ;;
4293 esac],
4294 [GGC=ggc-page])
4295 AC_SUBST(GGC)
4296 echo "Using $GGC for garbage collection."
4298 # Libraries to use on the host.  This will normally be set by the top
4299 # level Makefile.  Here we simply capture the value for our Makefile.
4300 if test -z "${HOST_LIBS+set}"; then
4301   HOST_LIBS=
4303 AC_SUBST(HOST_LIBS)
4305 # Use the system's zlib library.
4306 zlibdir=-L../zlib
4307 zlibinc="-I\$(srcdir)/../zlib"
4308 AC_ARG_WITH(system-zlib,
4309 [  --with-system-zlib      use installed libz],
4310 zlibdir=
4311 zlibinc=
4313 AC_SUBST(zlibdir)
4314 AC_SUBST(zlibinc)
4316 dnl Very limited version of automake's enable-maintainer-mode
4318 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4319   dnl maintainer-mode is disabled by default
4320   AC_ARG_ENABLE(maintainer-mode,
4321 [  --enable-maintainer-mode
4322                           enable make rules and dependencies not useful
4323                           (and sometimes confusing) to the casual installer],
4324       maintainer_mode=$enableval,
4325       maintainer_mode=no)
4327 AC_MSG_RESULT($maintainer_mode)
4329 if test "$maintainer_mode" = "yes"; then
4330   MAINT=''
4331 else
4332   MAINT='#'
4334 AC_SUBST(MAINT)dnl
4336 # --------------
4337 # Language hooks
4338 # --------------
4340 # Make empty files to contain the specs and options for each language.
4341 # Then add #include lines to for a compiler that has specs and/or options.
4343 subdirs=
4344 lang_opt_files=
4345 lang_specs_files=
4346 lang_tree_files=
4347 # These (without "all_") are set in each config-lang.in.
4348 # `language' must be a single word so is spelled singularly.
4349 all_languages=
4350 all_compilers=
4351 all_outputs='Makefile gccbug'
4352 # List of language makefile fragments.
4353 all_lang_makefrags=
4354 # Additional files for gengtype
4355 all_gtfiles="$target_gtfiles"
4357 # These are the languages that are set in --enable-languages,
4358 # and are available in the GCC tree.
4359 all_selected_languages=
4361 # Add the language fragments.
4362 # Languages are added via two mechanisms.  Some information must be
4363 # recorded in makefile variables, these are defined in config-lang.in.
4364 # We accumulate them and plug them into the main Makefile.
4365 # The other mechanism is a set of hooks for each of the main targets
4366 # like `clean', `install', etc.
4368 language_hooks="Make-hooks"
4370 for lang in ${srcdir}/*/config-lang.in
4372 changequote(,)dnl
4373         test "$lang" = "${srcdir}/*/config-lang.in" && continue
4375         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
4376         if test "x$lang_alias" = x
4377         then
4378               echo "$lang doesn't set \$language." 1>&2
4379               exit 1
4380         fi
4381         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
4382         subdirs="$subdirs $subdir"
4384         # $gcc_subdir is where the gcc integration files are to be found
4385         # for a language, both for internal compiler purposes (compiler
4386         # sources implementing front-end to GCC tree converters), and for
4387         # build infrastructure purposes (Make-lang.in, etc.)
4388         #
4389         # This will be <subdir> (relative to $srcdir) if a line like 
4390         # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
4391         # is found in <langdir>/config-lang.in, and will remain <langdir>
4392         # otherwise.
4393         #
4394         # Except for the language alias (fetched above), the regular
4395         # "config-lang.in" contents are always retrieved from $gcc_subdir,
4396         # so a <langdir>/config-lang.in setting gcc_subdir typically sets
4397         # only this and the language alias.
4399         gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^   ]*\).*$,\1,p' $lang`
4400         if [ "$gcc_subdir" = "" ]; then
4401            gcc_subdir="$subdir"
4402         fi
4404         case ",$enable_languages," in
4405         *,$lang_alias,*)
4406             all_selected_languages="$all_selected_languages $lang_alias"
4407             if test -f $srcdir/$gcc_subdir/lang-specs.h; then
4408                 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
4409             fi
4410             ;;
4411         esac
4412 changequote([,])dnl
4414         language=
4415         boot_language=
4416         compilers=
4417         outputs=
4418         gtfiles=
4419         subdir_requires=
4420         . ${srcdir}/$gcc_subdir/config-lang.in
4421         if test "x$language" = x
4422         then
4423                 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
4424                 exit 1
4425         fi
4427         ok=:
4428         case ",$enable_languages," in
4429                 *,$lang_alias,*) ;;
4430                 *)
4431                         for i in $subdir_requires; do
4432                                 test -f "${srcdir}/$i/config-lang.in" && continue
4433                                 ok=false
4434                                 break
4435                         done
4436                 ;;
4437         esac
4438         $ok || continue
4440         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4441         if test -f $srcdir/$gcc_subdir/lang.opt; then
4442             lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
4443         fi
4444         if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4445             lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
4446         fi
4447         all_languages="$all_languages $language"
4448         all_compilers="$all_compilers $compilers"
4449         all_outputs="$all_outputs $outputs"
4450         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
4451         case ",$enable_languages," in
4452                 *,lto,*)
4453                     AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4454                     enable_lto=yes
4455                     AC_SUBST(enable_lto)
4456                     # LTO needs to speak the platform's object file format, and has a
4457                     # number of implementations of the required binary file access APIs.
4458                     # ELF is the most common, and default.  We only link libelf if ELF
4459                     # is indeed the selected format.
4460                     LTO_BINARY_READER=${lto_binary_reader}
4461                     LTO_USE_LIBELF=-lelf
4462                     if test "x$lto_binary_reader" != "xlto-elf" ; then
4463                       LTO_USE_LIBELF=
4464                     fi
4465                     AC_SUBST(LTO_BINARY_READER)
4466                     AC_SUBST(LTO_USE_LIBELF)
4467                     ;;
4468                 *) ;;
4469         esac
4470 done
4472 # Pick up gtfiles for c
4473 gtfiles=
4474 . ${srcdir}/c-config-lang.in
4475 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
4477 check_languages=
4478 for language in $all_selected_languages
4480         check_languages="$check_languages check-$language"
4481 done
4483 # We link each language in with a set of hooks, reached indirectly via
4484 # lang.${target}.  Only do so for selected languages.
4486 rm -f Make-hooks
4487 touch Make-hooks
4488 target_list="all.cross start.encap rest.encap tags \
4489         install-common install-man install-info install-pdf install-html dvi \
4490         pdf html uninstall info man srcextra srcman srcinfo \
4491         mostlyclean clean distclean maintainer-clean install-plugin"
4493 for t in $target_list
4495         x=
4496         for lang in $all_selected_languages
4497         do
4498                 x="$x $lang.$t"
4499         done
4500         echo "lang.$t: $x" >> Make-hooks
4501 done
4503 # --------
4504 # UNSORTED
4505 # --------
4507 # Create .gdbinit.
4509 echo "dir ." > .gdbinit
4510 echo "dir ${srcdir}" >> .gdbinit
4511 if test x$gdb_needs_out_file_path = xyes
4512 then
4513         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4515 if test "x$subdirs" != x; then
4516         for s in $subdirs
4517         do
4518                 echo "dir ${srcdir}/$s" >> .gdbinit
4519         done
4521 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
4523 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
4524 AC_SUBST(gcc_tooldir)
4525 AC_SUBST(dollar)
4527 # Find a directory in which to install a shared libgcc.
4529 AC_ARG_ENABLE(version-specific-runtime-libs,
4530 [  --enable-version-specific-runtime-libs
4531                           specify that runtime libraries should be
4532                           installed in a compiler-specific directory])
4534 AC_ARG_WITH(slibdir,
4535 [  --with-slibdir=DIR      shared libraries in DIR [[LIBDIR]]],
4536 slibdir="$with_slibdir",
4537 if test "${enable_version_specific_runtime_libs+set}" = set; then
4538   slibdir='$(libsubdir)'
4539 elif test "$host" != "$target"; then
4540   slibdir='$(build_tooldir)/lib'
4541 else
4542   slibdir='$(libdir)'
4544 AC_SUBST(slibdir)
4546 # Substitute configuration variables
4547 AC_SUBST(subdirs)
4548 AC_SUBST(srcdir)
4549 AC_SUBST(all_compilers)
4550 AC_SUBST(all_gtfiles)
4551 AC_SUBST(all_lang_makefrags)
4552 AC_SUBST(all_languages)
4553 AC_SUBST(all_selected_languages)
4554 AC_SUBST(build_exeext)
4555 AC_SUBST(build_install_headers_dir)
4556 AC_SUBST(build_xm_file_list)
4557 AC_SUBST(build_xm_include_list)
4558 AC_SUBST(build_xm_defines)
4559 AC_SUBST(build_file_translate)
4560 AC_SUBST(check_languages)
4561 AC_SUBST(cpp_install_dir)
4562 AC_SUBST(xmake_file)
4563 AC_SUBST(tmake_file)
4564 AC_SUBST(TM_ENDIAN_CONFIG)
4565 AC_SUBST(TM_MULTILIB_CONFIG)
4566 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
4567 AC_SUBST(extra_gcc_objs)
4568 AC_SUBST(user_headers_inc_next_pre)
4569 AC_SUBST(user_headers_inc_next_post)
4570 AC_SUBST(extra_headers_list)
4571 AC_SUBST(extra_objs)
4572 AC_SUBST(extra_parts)
4573 AC_SUBST(extra_passes)
4574 AC_SUBST(extra_programs)
4575 AC_SUBST(float_h_file)
4576 AC_SUBST(gcc_config_arguments)
4577 AC_SUBST(gcc_gxx_include_dir)
4578 AC_SUBST(host_exeext)
4579 AC_SUBST(host_xm_file_list)
4580 AC_SUBST(host_xm_include_list)
4581 AC_SUBST(host_xm_defines)
4582 AC_SUBST(out_host_hook_obj)
4583 AC_SUBST(install)
4584 AC_SUBST(lang_opt_files)
4585 AC_SUBST(lang_specs_files)
4586 AC_SUBST(lang_tree_files)
4587 AC_SUBST(local_prefix)
4588 AC_SUBST(md_file)
4589 AC_SUBST(objc_boehm_gc)
4590 AC_SUBST(out_file)
4591 AC_SUBST(out_object_file)
4592 AC_SUBST(thread_file)
4593 AC_SUBST(tm_file_list)
4594 AC_SUBST(tm_include_list)
4595 AC_SUBST(tm_defines)
4596 AC_SUBST(tm_p_file_list)
4597 AC_SUBST(tm_p_include_list)
4598 AC_SUBST(xm_file_list)
4599 AC_SUBST(xm_include_list)
4600 AC_SUBST(xm_defines)
4601 AC_SUBST(use_gcc_stdint)
4602 AC_SUBST(c_target_objs)
4603 AC_SUBST(cxx_target_objs)
4604 AC_SUBST(fortran_target_objs)
4605 AC_SUBST(target_cpu_default)
4607 AC_SUBST_FILE(language_hooks)
4609 # Echo link setup.
4610 if test x${build} = x${host} ; then
4611   if test x${host} = x${target} ; then
4612     echo "Links are now set up to build a native compiler for ${target}." 1>&2
4613   else
4614     echo "Links are now set up to build a cross-compiler" 1>&2
4615     echo " from ${host} to ${target}." 1>&2
4616   fi
4617 else
4618   if test x${host} = x${target} ; then
4619     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
4620     echo " for ${target}." 1>&2
4621   else
4622     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
4623     echo " from ${host} to ${target}." 1>&2
4624   fi
4627 AC_ARG_VAR(GMPLIBS,[How to link GMP])
4628 AC_ARG_VAR(GMPINC,[How to find GMP include files])
4630 AC_ARG_VAR(PPLLIBS,[How to link PPL])
4631 AC_ARG_VAR(PPLINC,[How to find PPL include files])
4633 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
4634 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
4635 if test "x${CLOOGLIBS}" != "x" ; then 
4636    AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
4639 AC_ARG_VAR(LIBELFLIBS,[How to link libelf])
4640 AC_ARG_VAR(LIBELFINC,[How to find libelf include files])
4641 if test "x${LIBELFLIBS}" != "x" ; then 
4642    AC_DEFINE(HAVE_libelf, 1, [Define if libelf is in use.])
4645 # Check for plugin support
4646 AC_ARG_ENABLE(plugin,
4647 [  --enable-plugin         enable plugin support],
4648 enable_plugin=$enableval,
4649 enable_plugin=yes; default_plugin=yes)
4651 pluginlibs=
4653 case "${host}" in
4654   *-*-darwin*)
4655     if test x$build = x$host; then
4656       export_sym_check="nm${exeext} -g"
4657     elif test x$host = x$target; then
4658       export_sym_check="$gcc_cv_nm -g"
4659     else
4660       export_sym_check=
4661     fi
4662   ;;
4663   *)
4664     if test x$build = x$host; then
4665       export_sym_check="objdump${exeext} -T"
4666     elif test x$host = x$target; then
4667       export_sym_check="$gcc_cv_objdump -T"
4668     else
4669       export_sym_check=
4670     fi
4671   ;;
4672 esac
4674 if test x"$enable_plugin" = x"yes"; then
4676   AC_MSG_CHECKING([for exported symbols])
4677   if test "x$export_sym_check" != x; then
4678     echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
4679     ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
4680     if $export_sym_check conftest | grep foobar > /dev/null; then
4681       : # No need to use a flag
4682       AC_MSG_RESULT([yes])
4683     else
4684       AC_MSG_RESULT([yes])
4685       AC_MSG_CHECKING([for -rdynamic])
4686       ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
4687       if $export_sym_check conftest | grep foobar > /dev/null; then
4688         plugin_rdynamic=yes
4689         pluginlibs="-rdynamic"
4690       else
4691         plugin_rdynamic=no
4692         enable_plugin=no
4693       fi
4694       AC_MSG_RESULT([$plugin_rdynamic])
4695     fi
4696   else
4697     AC_MSG_RESULT([unable to check])
4698   fi
4700   # Check -ldl
4701   saved_LIBS="$LIBS"
4702   AC_SEARCH_LIBS([dlopen], [dl])
4703   if test x"$ac_cv_search_dlopen" = x"-ldl"; then
4704     pluginlibs="$pluginlibs -ldl"
4705   fi
4706   LIBS="$saved_LIBS"
4708   # Check that we can build shared objects with -fPIC -shared
4709   saved_LDFLAGS="$LDFLAGS"
4710   case "${host}" in
4711     *-*-darwin*)
4712       LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup"
4713     ;;
4714     *)
4715       LDFLAGS="$LDFLAGS -fPIC -shared"
4716     ;;
4717   esac
4718   AC_MSG_CHECKING([for -fPIC -shared])
4719   AC_TRY_LINK(
4720     [extern int X;],[return X == 0;],
4721     [AC_MSG_RESULT([yes]); have_pic_shared=yes],
4722     [AC_MSG_RESULT([no]); have_pic_shared=no])
4723   if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
4724     pluginlibs=
4725     enable_plugin=no
4726   fi
4727   LDFLAGS="$saved_LDFLAGS"
4729   # If plugin support had been requested but not available, fail.
4730   if test x"$enable_plugin" = x"no" ; then
4731     if test x"$default_plugin" != x"yes"; then
4732       AC_MSG_ERROR([
4733 Building GCC with plugin support requires a host that supports
4734 -fPIC, -shared, -ldl and -rdynamic.])
4735     fi
4736   fi
4739 AC_SUBST(pluginlibs)
4740 AC_SUBST(enable_plugin)
4741 if test x"$enable_plugin" = x"yes"; then
4742   AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
4745 # Configure the subdirectories
4746 # AC_CONFIG_SUBDIRS($subdirs)
4748 # Create the Makefile
4749 # and configure language subdirectories
4750 AC_CONFIG_FILES($all_outputs)
4752 AC_CONFIG_COMMANDS([default],
4754 case ${CONFIG_HEADERS} in
4755   *auto-host.h:config.in*)
4756   echo > cstamp-h ;;
4757 esac
4758 # Make sure all the subdirs exist.
4759 for d in $subdirs doc build c-family
4761     test -d $d || mkdir $d
4762 done
4763 ], 
4764 [subdirs='$subdirs'])
4765 AC_OUTPUT