OSDN Git Service

c7b9bc99025baba71c3db1bc9be10de332441903
[pf3gnuchains/gcc-fork.git] / gcc / configure.ac
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
5 # Free Software Foundation, Inc.
6
7 #This file is part of GCC.
8
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.
13
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.
18
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/>.
22
23 # --------------------------------
24 # Initialization and sanity checks
25 # --------------------------------
26
27 AC_PREREQ(2.59)
28 AC_INIT
29 AC_CONFIG_SRCDIR(tree.c)
30 AC_CONFIG_HEADER(auto-host.h:config.in)
31
32 gcc_version=`cat $srcdir/BASE-VER`
33
34 # Determine the host, build, and target systems
35 AC_CANONICAL_BUILD
36 AC_CANONICAL_HOST
37 AC_CANONICAL_TARGET
38
39 # Determine the noncanonical target name, for directory use.
40 ACX_NONCANONICAL_TARGET
41
42 # Determine the target- and build-specific subdirectories
43 GCC_TOPLEV_SUBDIRS
44
45 # Set program_transform_name
46 AC_ARG_PROGRAM
47
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.])
73 fi
74
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.])
99 fi
100
101 # -----------
102 # Directories
103 # -----------
104
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])
114
115 # Default local prefix if it is empty
116 if test x$local_prefix = x; then
117         local_prefix=/usr/local
118 fi
119
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])
133
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
145 fi
146
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])
156
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.
162
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)
172
173 AC_MSG_RESULT($generated_files_in_srcdir)
174
175 if test "$generated_files_in_srcdir" = "yes"; then
176   GENINSRC=''
177 else
178   GENINSRC='#'
179 fi
180 AC_SUBST(GENINSRC)
181
182 # -------------------
183 # Find default linker
184 # -------------------
185
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)
191
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.])
204 fi
205
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.])
208
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)
218 fi
219
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)
225
226 # ----------------------
227 # Find default assembler
228 # ----------------------
229
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)
235
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.])
247 fi
248
249 AC_MSG_CHECKING([whether a default assembler was specified])
250 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
251   if test x"$gas_flag" = x"no"; then
252     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
253   else
254     AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
255   fi
256 else
257   AC_MSG_RESULT(no)
258 fi
259
260 # ---------------
261 # Find C compiler
262 # ---------------
263
264 # If a non-executable a.out is present (e.g. created by GNU as above even if
265 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
266 # file, even when creating an executable, so an execution test fails.
267 # Remove possible default executable files to avoid this.
268 #
269 # FIXME: This really belongs into AC_PROG_CC and can be removed once
270 # Autoconf includes it.
271 rm -f a.out a.exe b.out
272
273 # Find the native compiler
274 AC_PROG_CC
275 AM_PROG_CC_C_O
276 # autoconf is lame and doesn't give us any substitution variable for this.
277 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
278   NO_MINUS_C_MINUS_O=yes
279 else
280   OUTPUT_OPTION='-o $@'
281 fi
282 AC_SUBST(NO_MINUS_C_MINUS_O)
283 AC_SUBST(OUTPUT_OPTION)
284
285 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
286 # optimizations to be activated explicitly by the toplevel.
287 case "$CC" in
288   */prev-gcc/xgcc*) ;;
289   *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
290 esac
291 AC_SUBST(CFLAGS)
292
293 # -------------------------
294 # Check C compiler features
295 # -------------------------
296
297 AC_PROG_CPP
298 AC_C_INLINE
299
300 # sizeof(char) is 1 by definition.
301 AC_CHECK_SIZEOF(void *)
302 AC_CHECK_SIZEOF(short)
303 AC_CHECK_SIZEOF(int)
304 AC_CHECK_SIZEOF(long)
305 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
306 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
307
308 # ---------------------
309 # Warnings and checking
310 # ---------------------
311
312 # Check $CC warning features (if it's GCC).
313 # We want to use -pedantic, but we don't want warnings about
314 # * 'long long'
315 # * variadic macros
316 # * overlong strings
317 # So, we only use -pedantic if we can disable those warnings.
318
319 ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
320                           -Wmissing-prototypes], [loose_warn])
321 ACX_PROG_CC_WARNING_OPTS([-Wc++-compat], [cxx_compat_warn])
322 ACX_PROG_CC_WARNING_OPTS([-Wold-style-definition \
323                           -Wmissing-format-attribute], [strict_warn])
324 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long -Wno-variadic-macros \
325                                      -Wno-overlength-strings], [strict_warn])
326 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
327
328 # The above macros do nothing if the compiler is not GCC.  However, the
329 # Makefile has more goo to add other flags, so this variabl is used to
330 # enables warnings only for GCC.
331 warn_cflags=
332 if test "x$GCC" = "xyes"; then
333   warn_cflags='$(GCC_WARN_CFLAGS)'
334 fi
335 AC_SUBST(warn_cflags)
336
337 # Enable expensive internal checks
338 is_release=
339 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
340   is_release=yes
341 fi
342
343 AC_ARG_ENABLE(checking,
344 [  --enable-checking[=LIST]
345                           enable expensive run-time checks.  With LIST,
346                           enable only specific categories of checks.
347                           Categories are: yes,no,all,none,release.
348                           Flags are: assert,df,fold,gc,gcac,misc,
349                           rtlflag,rtl,runtime,tree,valgrind.],
350 [ac_checking_flags="${enableval}"],[
351 # Determine the default checks.
352 if test x$is_release = x ; then
353   ac_checking_flags=yes
354 else
355   ac_checking_flags=release
356 fi])
357 IFS="${IFS=     }"; ac_save_IFS="$IFS"; IFS="$IFS,"
358 for check in release $ac_checking_flags
359 do
360         case $check in
361         # these set all the flags to specific states
362         yes)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
363                         ac_fold_checking= ; ac_gc_checking=1 ;
364                         ac_gc_always_collect= ; ac_rtl_checking= ;
365                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
366                         ac_tree_checking=1 ; ac_valgrind_checking= ;;
367         no|none)        ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
368                         ac_fold_checking= ; ac_gc_checking= ;
369                         ac_gc_always_collect= ; ac_rtl_checking= ;
370                         ac_rtlflag_checking= ; ac_runtime_checking= ;
371                         ac_tree_checking= ; ac_valgrind_checking= ;;
372         all)            ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
373                         ac_fold_checking=1 ; ac_gc_checking=1 ;
374                         ac_gc_always_collect=1 ; ac_rtl_checking=1 ;
375                         ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
376                         ac_tree_checking=1 ; ac_valgrind_checking= ;;
377         release)        ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
378                         ac_fold_checking= ; ac_gc_checking= ;
379                         ac_gc_always_collect= ; ac_rtl_checking= ;
380                         ac_rtlflag_checking= ; ac_runtime_checking=1 ;
381                         ac_tree_checking= ; ac_valgrind_checking= ;;
382         # these enable particular checks
383         assert)         ac_assert_checking=1 ;;
384         df)             ac_df_checking=1 ;;
385         fold)           ac_fold_checking=1 ;;
386         gc)             ac_gc_checking=1 ;;
387         gcac)           ac_gc_always_collect=1 ;;
388         misc)           ac_checking=1 ;;
389         rtl)            ac_rtl_checking=1 ;;
390         rtlflag)        ac_rtlflag_checking=1 ;;
391         runtime)        ac_runtime_checking=1 ;;
392         tree)           ac_tree_checking=1 ;;
393         valgrind)       ac_valgrind_checking=1 ;;
394         *)      AC_MSG_ERROR(unknown check category $check) ;;
395         esac
396 done
397 IFS="$ac_save_IFS"
398
399 nocommon_flag=""
400 if test x$ac_checking != x ; then
401   AC_DEFINE(ENABLE_CHECKING, 1,
402 [Define if you want more run-time sanity checks.  This one gets a grab
403    bag of miscellaneous but relatively cheap checks.])
404   nocommon_flag=-fno-common
405 fi
406 AC_SUBST(nocommon_flag)
407 if test x$ac_df_checking != x ; then
408   AC_DEFINE(ENABLE_DF_CHECKING, 1,
409 [Define if you want more run-time sanity checks for dataflow.])
410 fi
411 if test x$ac_assert_checking != x ; then
412   AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
413 [Define if you want assertions enabled.  This is a cheap check.])
414 fi
415 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
416 if test x$ac_runtime_checking != x ; then
417   AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
418 [Define if you want runtime assertions enabled.  This is a cheap check.])
419 fi
420 if test x$ac_tree_checking != x ; then
421   AC_DEFINE(ENABLE_TREE_CHECKING, 1,
422 [Define if you want all operations on trees (the basic data
423    structure of the front ends) to be checked for dynamic type safety
424    at runtime.  This is moderately expensive.  The tree browser debugging
425    routines will also be enabled by this option.
426    ])
427   TREEBROWSER=tree-browser.o
428 fi
429 AC_SUBST(TREEBROWSER)
430 if test x$ac_rtl_checking != x ; then
431   AC_DEFINE(ENABLE_RTL_CHECKING, 1,
432 [Define if you want all operations on RTL (the basic data structure
433    of the optimizer and back end) to be checked for dynamic type safety
434    at runtime.  This is quite expensive.])
435 fi
436 if test x$ac_rtlflag_checking != x ; then
437   AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
438 [Define if you want RTL flag accesses to be checked against the RTL
439    codes that are supported for each access macro.  This is relatively
440    cheap.])
441 fi
442 if test x$ac_gc_checking != x ; then
443   AC_DEFINE(ENABLE_GC_CHECKING, 1,
444 [Define if you want the garbage collector to do object poisoning and
445    other memory allocation checks.  This is quite expensive.])
446 fi
447 if test x$ac_gc_always_collect != x ; then
448   AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
449 [Define if you want the garbage collector to operate in maximally
450    paranoid mode, validating the entire heap and collecting garbage at
451    every opportunity.  This is extremely expensive.])
452 fi
453 if test x$ac_fold_checking != x ; then
454   AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
455 [Define if you want fold checked that it never destructs its argument.
456    This is quite expensive.])
457 fi
458 valgrind_path_defines=
459 valgrind_command=
460
461 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
462 dnl # an if statement.  This was the source of very frustrating bugs
463 dnl # in converting to autoconf 2.5x!
464 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
465
466 if test x$ac_valgrind_checking != x ; then
467   # It is certainly possible that there's valgrind but no valgrind.h.
468   # GCC relies on making annotations so we must have both.
469   AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
470   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
471     [[#include <valgrind/memcheck.h>
472 #ifndef VALGRIND_DISCARD
473 #error VALGRIND_DISCARD not defined
474 #endif]])],
475   [gcc_cv_header_valgrind_memcheck_h=yes],
476   [gcc_cv_header_valgrind_memcheck_h=no])
477   AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
478   AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
479   AC_PREPROC_IFELSE([AC_LANG_SOURCE(
480     [[#include <memcheck.h>
481 #ifndef VALGRIND_DISCARD
482 #error VALGRIND_DISCARD not defined
483 #endif]])],
484   [gcc_cv_header_memcheck_h=yes],
485   [gcc_cv_header_memcheck_h=no])
486   AC_MSG_RESULT($gcc_cv_header_memcheck_h)
487   AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
488         [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
489   if test "x$valgrind_path" = "x" \
490     || (test $have_valgrind_h = no \
491         && test $gcc_cv_header_memcheck_h = no \
492         && test $gcc_cv_header_valgrind_memcheck_h = no); then
493         AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
494   fi
495   valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
496   valgrind_command="$valgrind_path -q"
497   AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
498 [Define if you want to run subprograms and generated programs
499    through valgrind (a memory checker).  This is extremely expensive.])
500   if test $gcc_cv_header_valgrind_memcheck_h = yes; then
501     AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
502         [Define if valgrind's valgrind/memcheck.h header is installed.])
503   fi
504   if test $gcc_cv_header_memcheck_h = yes; then
505     AC_DEFINE(HAVE_MEMCHECK_H, 1,
506         [Define if valgrind's memcheck.h header is installed.])
507   fi
508 fi
509 AC_SUBST(valgrind_path_defines)
510 AC_SUBST(valgrind_command)
511
512 AC_ARG_ENABLE(mapped-location,
513 [  --enable-mapped-location   location_t is fileline integer cookie],,
514 enable_mapped_location=no)
515
516 if test "$enable_mapped_location" = yes ; then
517   AC_DEFINE(USE_MAPPED_LOCATION, 1,
518 [Define if location_t is fileline integer cookie.])
519 fi
520
521 # Enable code coverage collection
522 AC_ARG_ENABLE(coverage,
523 [  --enable-coverage[=LEVEL]
524                           enable compiler's code coverage collection.
525                           Use to measure compiler performance and locate
526                           unused parts of the compiler. With LEVEL, specify
527                           optimization. Values are opt, noopt,
528                           default is noopt],
529 [case "${enableval}" in
530   yes|noopt)
531     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
532     ;;
533   opt)
534     coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
535     ;;
536   no)
537     # a.k.a. --disable-coverage
538     coverage_flags=""
539     ;;
540   *)
541     AC_MSG_ERROR(unknown coverage setting $enableval)
542     ;;
543 esac],
544 [coverage_flags=""])
545 AC_SUBST(coverage_flags)
546
547 AC_ARG_ENABLE(gather-detailed-mem-stats, 
548 [  --enable-gather-detailed-mem-stats         enable detailed memory allocation stats gathering], [],
549 [enable_gather_detailed_mem_stats=no])
550 if test x$enable_gather_detailed_mem_stats = xyes ; then
551   AC_DEFINE(GATHER_STATISTICS, 1,
552         [Define to enable detailed memory allocation stats gathering.])
553 fi
554
555 # -------------------------------
556 # Miscenalleous configure options
557 # -------------------------------
558
559 # With stabs
560 AC_ARG_WITH(stabs,
561 [  --with-stabs            arrange to use stabs instead of host debug format],
562 stabs="$with_stabs",
563 stabs=no)
564
565 # Determine whether or not multilibs are enabled.
566 AC_ARG_ENABLE(multilib,
567 [  --enable-multilib       enable library support for multiple ABIs],
568 [], [enable_multilib=yes])
569 AC_SUBST(enable_multilib)
570
571 # Enable __cxa_atexit for C++.
572 AC_ARG_ENABLE(__cxa_atexit,
573 [  --enable-__cxa_atexit   enable __cxa_atexit for C++],
574 [], [])
575
576 # Enable C extension for decimal float if target supports it.
577 AC_ARG_ENABLE(decimal-float,
578 [  --enable-decimal-float={no,yes,bid,dpd}
579                         enable decimal float extension to C.  Selecting 'bid'
580                         or 'dpd' choses which decimal floating point format
581                         to use],
582 [
583   case $enable_decimal_float in
584     yes | no | bid | dpd) ;;
585     *) AC_MSG_ERROR(['$enable_decimal_float' is an invalid value for --enable-decimal-float.
586 Valid choices are 'yes', 'bid', 'dpd', and 'no'.]) ;;
587   esac
588 ],
589 [
590   case $target in
591     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux*)
592       enable_decimal_float=yes
593       ;;
594     *)
595       AC_MSG_WARN(decimal float is not supported for this target, ignored)
596       enable_decimal_float=no
597       ;;
598   esac
599 ])
600
601 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
602 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
603 [Define to 1 to enable decimal float extension to C.])
604
605 # x86's use BID format instead of DPD
606 case x$enable_decimal_float in
607   xyes)
608     case $target in
609       i?86*-*-linux* | x86_64*-*-linux*)
610         enable_decimal_float=bid
611         ;;
612       *)
613         enable_decimal_float=dpd
614         ;;
615     esac
616     ;;
617   xno)
618     # ENABLE_DECIMAL_FLOAT is set to 0. But we have to have proper
619     # dependency on libdecnumber.
620     enable_decimal_float=dpd
621     ;;
622 esac
623 AC_SUBST(enable_decimal_float)
624
625 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
626 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
627 [Define to 1 to specify that we are using the BID decimal floating
628 point format instead of DPD])
629
630 # Enable threads
631 # Pass with no value to take the default
632 # Pass with a value to specify a thread package
633 AC_ARG_ENABLE(threads,
634 [  --enable-threads        enable thread usage for target GCC
635   --enable-threads=LIB    use LIB thread package for target GCC],,
636 [enable_threads=''])
637
638 AC_ARG_ENABLE(tls,
639 [  --enable-tls            enable or disable generation of tls code
640                           overriding the assembler check for tls support],
641 [
642   case $enable_tls in
643     yes | no) ;;
644     *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
645 Valid choices are 'yes' and 'no'.]) ;;
646   esac
647 ], [enable_tls=''])
648
649 AC_ARG_ENABLE(objc-gc,
650 [  --enable-objc-gc       enable the use of Boehm's garbage collector with
651                           the GNU Objective-C runtime],
652 if test x$enable_objc_gc = xno; then
653         objc_boehm_gc=''
654 else
655         objc_boehm_gc=1
656 fi,
657 objc_boehm_gc='')
658
659 AC_ARG_WITH(dwarf2,
660 [  --with-dwarf2           force the default debug format to be DWARF 2],
661 dwarf2="$with_dwarf2",
662 dwarf2=no)
663
664 AC_ARG_ENABLE(shared,
665 [  --disable-shared        don't provide a shared libgcc],
666 [
667   case $enable_shared in
668   yes | no) ;;
669   *)
670     enable_shared=no
671     IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
672     for pkg in $enableval; do
673       if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
674         enable_shared=yes
675       fi
676     done
677     IFS="$ac_save_ifs"
678     ;;
679   esac
680 ], [enable_shared=yes])
681 AC_SUBST(enable_shared)
682
683 AC_ARG_WITH(build-sysroot, 
684   [  --with-build-sysroot=sysroot
685                           use sysroot as the system root during the build])
686
687 AC_ARG_WITH(sysroot,
688 [  --with-sysroot[=DIR] Search for usr/lib, usr/include, et al, within DIR.],
689 [
690  case ${with_sysroot} in
691  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
692  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
693  esac
694    
695  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
696  CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
697         
698  if test "x$prefix" = xNONE; then
699   test_prefix=/usr/local
700  else
701   test_prefix=$prefix
702  fi
703  if test "x$exec_prefix" = xNONE; then
704   test_exec_prefix=$test_prefix
705  else
706   test_exec_prefix=$exec_prefix
707  fi
708  case ${TARGET_SYSTEM_ROOT} in
709  "${test_prefix}"|"${test_prefix}/"*|\
710  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
711  '${prefix}'|'${prefix}/'*|\
712  '${exec_prefix}'|'${exec_prefix}/'*)
713    t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
714    TARGET_SYSTEM_ROOT_DEFINE="$t"
715    ;;
716  esac
717 ], [
718  TARGET_SYSTEM_ROOT=
719  TARGET_SYSTEM_ROOT_DEFINE=
720  CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
721 ])
722 AC_SUBST(TARGET_SYSTEM_ROOT)
723 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
724 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
725
726 # Build with intermodule optimisations
727 AC_ARG_ENABLE(intermodule,
728 [  --enable-intermodule    build the compiler in one step],
729 [case ${enable_intermodule} in
730   yes) onestep="-onestep";;
731   *) onestep="";;
732 esac],
733 [onestep=""])
734 AC_SUBST(onestep)
735
736 # Sanity check enable_languages in case someone does not run the toplevel
737 # configure # script.
738 AC_ARG_ENABLE(languages,
739 [  --enable-languages=LIST specify which front-ends to build],
740 [case ,${enable_languages}, in
741        ,,|,yes,)
742                 # go safe -- we cannot be much sure without the toplevel
743                 # configure's
744                 # analysis of which target libs are present and usable
745                 enable_languages=c
746                 ;;
747          *,all,*)
748                 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
749                 ;;
750         *,c,*)
751                 ;;
752         *)
753                 enable_languages=c,${enable_languages}
754                 ;;
755 esac],
756 [enable_languages=c])
757
758 # Used by documentation targets
759 AC_SUBST(datarootdir)
760 AC_SUBST(docdir)
761 AC_SUBST(htmldir)
762
763 # -------------------------
764 # Checks for other programs
765 # -------------------------
766
767 AC_PROG_MAKE_SET
768
769 # Find some useful tools
770 AC_PROG_AWK
771 # We need awk to create options.c and options.h.
772 # Bail out if it's missing.
773 case ${AWK} in
774   "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
775 esac
776
777 gcc_AC_PROG_LN_S
778 ACX_PROG_LN($LN_S)
779 AC_PROG_RANLIB
780 case "${host}" in
781 *-*-darwin*)
782   # By default, the Darwin ranlib will not treat common symbols as
783   # definitions when  building the archive table of contents.  Other 
784   # ranlibs do that; pass an option to the Darwin ranlib that makes
785   # it behave similarly.
786   ranlib_flags="-c" 
787   ;;
788 *)
789   ranlib_flags=""
790 esac
791 AC_SUBST(ranlib_flags)
792      
793 gcc_AC_PROG_INSTALL
794
795 # See if cmp has --ignore-initial.
796 gcc_AC_PROG_CMP_IGNORE_INITIAL
797
798 # See if we have the mktemp command.
799 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
800
801 # See if makeinfo has been installed and is modern enough
802 # that we can use it.
803 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
804   [GNU texinfo.* \([0-9][0-9.]*\)],
805   [4.[4-9]*])
806 if test $gcc_cv_prog_makeinfo_modern = no; then
807   AC_MSG_WARN([
808 *** Makeinfo is missing or too old.
809 *** Info documentation will not be built.])
810   BUILD_INFO=
811 else
812   BUILD_INFO=info
813 fi
814 AC_SUBST(BUILD_INFO)
815
816 # Is pod2man recent enough to regenerate manpages?
817 AC_MSG_CHECKING([for recent Pod::Man])
818 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
819   AC_MSG_RESULT(yes)
820   GENERATED_MANPAGES=generated-manpages
821 else
822   AC_MSG_RESULT(no)
823   GENERATED_MANPAGES=
824 fi
825 AC_SUBST(GENERATED_MANPAGES)
826
827 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
828
829 # How about lex?
830 dnl Don't use AC_PROG_LEX; we insist on flex.
831 dnl LEXLIB is not useful in gcc.
832 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
833
834 # Bison?
835 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
836
837 # Binutils are not build modules, unlike bison/flex/makeinfo.  So we
838 # check for build == host before using them.
839
840 # NM
841 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
842   && test -d ../binutils ; then
843   NM='$(objdir)/../binutils/nm-new'
844 else
845   AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
846 fi
847
848 # AR
849 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
850   && test -d ../binutils ; then
851   AR='$(objdir)/../binutils/ar'
852 else
853   AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
854 fi
855
856
857 # --------------------
858 # Checks for C headers
859 # --------------------
860
861 AC_MSG_CHECKING(for GNU C library)
862 AC_CACHE_VAL(gcc_cv_glibc,
863 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
864   [[#include <features.h>]], [[
865 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
866 #error Not a GNU C library system
867 #endif]])],
868   [gcc_cv_glibc=yes],
869   [gcc_cv_glibc=no])])
870 AC_MSG_RESULT($gcc_cv_glibc)
871 if test $gcc_cv_glibc = yes; then
872   AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
873 fi
874
875 # Need to reject headers which give warnings, so that the -Werror bootstrap
876 # works later. *sigh*  This needs to come before all header checks.
877 AC_PROG_CPP_WERROR
878
879 AC_HEADER_STDC
880 AC_HEADER_TIME
881 ACX_HEADER_STRING
882 AC_HEADER_SYS_WAIT
883 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
884                  fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
885                  sys/resource.h sys/param.h sys/times.h sys/stat.h \
886                  direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
887
888 # Check for thread headers.
889 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
890 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
891
892 # These tests can't be done till we know if we have limits.h.
893 gcc_AC_C_CHAR_BIT
894 AC_C_BIGENDIAN
895
896 # --------
897 # UNSORTED
898 # --------
899
900
901 # These libraries may be used by collect2.
902 # We may need a special search path to get them linked.
903 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
904 [save_LIBS="$LIBS"
905 for libs in '' -lld -lmld \
906                 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
907                 '-L/usr/lib/cmplrs/cc3.11 -lmld'
908 do
909         LIBS="$libs"
910         AC_TRY_LINK_FUNC(ldopen,
911                 [gcc_cv_collect2_libs="$libs"; break])
912 done
913 LIBS="$save_LIBS"
914 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
915 case $gcc_cv_collect2_libs in
916         "none required")        ;;
917         *)      COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
918 esac
919 AC_SUBST(COLLECT2_LIBS)
920
921 # When building Ada code on Alpha, we need exc_resume which is usually in
922 # -lexc.  So test for it.
923 save_LIBS="$LIBS"
924 LIBS=
925 AC_SEARCH_LIBS(exc_resume, exc)
926 GNAT_LIBEXC="$LIBS"
927 LIBS="$save_LIBS"
928 AC_SUBST(GNAT_LIBEXC)
929
930 # Some systems put ldexp and frexp in libm instead of libc; assume
931 # they're both in the same place.  jcf-dump needs them.
932 save_LIBS="$LIBS"
933 LIBS=
934 AC_SEARCH_LIBS(ldexp, m)
935 LDEXP_LIB="$LIBS"
936 LIBS="$save_LIBS"
937 AC_SUBST(LDEXP_LIB)
938
939 # Use <inttypes.h> only if it exists,
940 # doesn't clash with <sys/types.h>, and declares intmax_t.
941 AC_MSG_CHECKING(for inttypes.h)
942 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
943 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
944 [[#include <sys/types.h>
945 #include <inttypes.h>]],
946   [[intmax_t i = -1;]])],
947   [gcc_cv_header_inttypes_h=yes],
948   [gcc_cv_header_inttypes_h=no])])
949 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
950 if test $gcc_cv_header_inttypes_h = yes; then
951   AC_DEFINE(HAVE_INTTYPES_H, 1,
952         [Define if you have a working <inttypes.h> header file.])
953 fi
954
955 dnl Disabled until we have a complete test for buggy enum bitfields.
956 dnl gcc_AC_C_ENUM_BF_UNSIGNED
957
958 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
959   ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
960   fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
961   fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
962   putchar_unlocked putc_unlocked)
963 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
964         sysconf strsignal getrusage nl_langinfo scandir alphasort \
965         gettimeofday mbstowcs wcswidth mmap mincore setlocale \
966         gcc_UNLOCKED_FUNCS)
967
968 if test x$ac_cv_func_mbstowcs = xyes; then
969   AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
970 [    AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
971 int main()
972 {
973   mbstowcs(0, "", 0);
974   return 0;
975 }]])],
976     [gcc_cv_func_mbstowcs_works=yes],
977     [gcc_cv_func_mbstowcs_works=no],
978     [gcc_cv_func_mbstowcs_works=yes])])
979   if test x$gcc_cv_func_mbstowcs_works = xyes; then
980     AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
981   [Define this macro if mbstowcs does not crash when its
982    first argument is NULL.])
983   fi
984 fi
985
986 AC_CHECK_TYPE(ssize_t, int)
987
988 # Try to determine the array type of the second argument of getgroups
989 # for the target system (int or gid_t).
990 AC_TYPE_GETGROUPS
991 if test "${target}" = "${build}"; then
992   TARGET_GETGROUPS_T=$ac_cv_type_getgroups
993 else
994   case "${target}" in
995         # This condition may need some tweaking.  It should include all
996         # targets where the array type of the second argument of getgroups
997         # is int and the type of gid_t is not equivalent to int.
998         *-*-sunos* | *-*-ultrix*)
999                 TARGET_GETGROUPS_T=int
1000                 ;;
1001         *)
1002                 TARGET_GETGROUPS_T=gid_t
1003                 ;;
1004   esac
1005 fi
1006 AC_SUBST(TARGET_GETGROUPS_T)
1007
1008 gcc_AC_FUNC_MMAP_BLACKLIST
1009
1010 case "${host}" in
1011 *-*-*vms*)
1012   # Under VMS, vfork works very differently than on Unix. The standard test 
1013   # won't work, and it isn't easily adaptable. It makes more sense to
1014   # just force it.
1015   ac_cv_func_vfork_works=yes
1016   ;;
1017 esac
1018 AC_FUNC_FORK
1019
1020 AM_ICONV
1021 # Until we have in-tree GNU iconv:
1022 LIBICONV_DEP=
1023 AC_SUBST(LIBICONV_DEP)
1024
1025 AM_LC_MESSAGES
1026
1027 AM_LANGINFO_CODESET
1028
1029 # We will need to find libiberty.h and ansidecl.h
1030 saved_CFLAGS="$CFLAGS"
1031 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1032 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1033         strsignal strstr strverscmp \
1034         errno snprintf vsnprintf vasprintf malloc realloc calloc \
1035         free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1036 #include "ansidecl.h"
1037 #include "system.h"])
1038
1039 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1040 #include "ansidecl.h"
1041 #include "system.h"
1042 #ifdef HAVE_SYS_RESOURCE_H
1043 #include <sys/resource.h>
1044 #endif
1045 ])
1046
1047 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1048 #include "ansidecl.h"
1049 #include "system.h"
1050 #ifdef HAVE_SYS_RESOURCE_H
1051 #include <sys/resource.h>
1052 #endif
1053 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1054 [Define to \`long' if <sys/resource.h> doesn't define.])])
1055
1056 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1057 # FREAD and FWRITE macros.  Fortunately, for GCC's single usage of ldgetname
1058 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1059 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1060 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1061 #include "ansidecl.h"
1062 #include "system.h"
1063 #ifdef HAVE_LDFCN_H
1064 #undef FREAD
1065 #undef FWRITE
1066 #include <ldfcn.h>
1067 #endif
1068 ])
1069
1070 gcc_AC_CHECK_DECLS(times, , ,[
1071 #include "ansidecl.h"
1072 #include "system.h"
1073 #ifdef HAVE_SYS_TIMES_H
1074 #include <sys/times.h>
1075 #endif
1076 ])
1077
1078 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1079 #include "ansidecl.h"
1080 #include "system.h"
1081 #include <signal.h>
1082 ])
1083
1084 # More time-related stuff.
1085 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1086 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1087 #include "ansidecl.h"
1088 #include "system.h"
1089 #ifdef HAVE_SYS_TIMES_H
1090 #include <sys/times.h>
1091 #endif
1092 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1093 if test $ac_cv_struct_tms = yes; then
1094   AC_DEFINE(HAVE_STRUCT_TMS, 1,
1095   [Define if <sys/times.h> defines struct tms.])
1096 fi
1097
1098 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1099 # revisit after autoconf 2.50.
1100 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1101 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1102 #include "ansidecl.h"
1103 #include "system.h"
1104 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1105 if test $gcc_cv_type_clock_t = yes; then
1106   AC_DEFINE(HAVE_CLOCK_T, 1,
1107   [Define if <time.h> defines clock_t.])
1108 fi
1109
1110 # Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1111 CFLAGS="$saved_CFLAGS"
1112
1113 gcc_AC_INITFINI_ARRAY
1114
1115 # mkdir takes a single argument on some systems. 
1116 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1117
1118 # File extensions
1119 manext='.1'
1120 objext='.o'
1121 AC_SUBST(manext)
1122 AC_SUBST(objext)
1123
1124 # With Setjmp/Longjmp based exception handling.
1125 AC_ARG_ENABLE(sjlj-exceptions,
1126 [  --enable-sjlj-exceptions
1127                           arrange to use setjmp/longjmp exception handling],
1128 [sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1129 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1130   [Define 0/1 to force the choice for exception handling model.])])
1131
1132 # For platforms with the unwind ABI which includes an unwind library,
1133 # libunwind, we can choose to use the system libunwind.
1134 AC_ARG_WITH(system-libunwind,
1135 [  --with-system-libunwind use installed libunwind])
1136
1137 # config.gcc also contains tests of with_system_libunwind.
1138 if test x$with_system_libunwind = xyes; then
1139         AC_DEFINE(HAVE_GETIPINFO, 1,
1140 [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1141 fi
1142
1143 # --------------------------------------------------------
1144 # Build, host, and target specific configuration fragments
1145 # --------------------------------------------------------
1146
1147 # Collect build-machine-specific information.
1148 . ${srcdir}/config.build
1149
1150 # Collect host-machine-specific information.
1151 . ${srcdir}/config.host
1152
1153 target_gtfiles=
1154
1155 # Collect target-machine-specific information.
1156 . ${srcdir}/config.gcc
1157
1158 extra_objs="${host_extra_objs} ${extra_objs}"
1159 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1160
1161 # Default the target-machine variables that were not explicitly set.
1162 if test x"$tm_file" = x
1163 then tm_file=$cpu_type/$cpu_type.h; fi
1164
1165 if test x"$extra_headers" = x
1166 then extra_headers=; fi
1167
1168 if test x$md_file = x
1169 then md_file=$cpu_type/$cpu_type.md; fi
1170
1171 if test x$out_file = x
1172 then out_file=$cpu_type/$cpu_type.c; fi
1173
1174 if test x"$tmake_file" = x
1175 then tmake_file=$cpu_type/t-$cpu_type
1176 fi
1177
1178 if test x"$dwarf2" = xyes
1179 then tm_file="$tm_file tm-dwarf2.h"
1180 fi
1181
1182 # Say what files are being used for the output code and MD file.
1183 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1184 echo "Using \`$srcdir/config/$md_file' as machine description file."
1185
1186 # If any of the xm_file variables contain nonexistent files, warn
1187 # about them and drop them.
1188
1189 bx=
1190 for x in $build_xm_file; do
1191   if    test -f $srcdir/config/$x
1192   then      bx="$bx $x"
1193   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1194   fi
1195 done
1196 build_xm_file="$bx"
1197
1198 hx=
1199 for x in $host_xm_file; do
1200   if    test -f $srcdir/config/$x
1201   then      hx="$hx $x"
1202   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1203   fi
1204 done
1205 host_xm_file="$hx"
1206
1207 tx=
1208 for x in $xm_file; do
1209   if    test -f $srcdir/config/$x
1210   then      tx="$tx $x"
1211   else      AC_MSG_WARN($srcdir/config/$x does not exist.)
1212   fi
1213 done
1214 xm_file="$tx"
1215
1216 count=a
1217 for f in $tm_file; do
1218         count=${count}x
1219 done
1220 if test $count = ax; then
1221         echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1222 else
1223         echo "Using the following target machine macro files:"
1224         for f in $tm_file; do
1225                 echo "  $srcdir/config/$f"
1226         done
1227 fi
1228
1229 if test x$need_64bit_hwint = xyes; then
1230         AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1231 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1232 fi
1233
1234 if test x$use_long_long_for_widest_fast_int = xyes; then
1235         AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1236 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1237 efficiently supported by the host hardware.])
1238 fi
1239
1240 count=a
1241 for f in $host_xm_file; do
1242         count=${count}x
1243 done
1244 if test $count = a; then
1245         :
1246 elif test $count = ax; then
1247         echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1248 else
1249         echo "Using the following host machine macro files:"
1250         for f in $host_xm_file; do
1251                 echo "  $srcdir/config/$f"
1252         done
1253 fi
1254 echo "Using ${out_host_hook_obj} for host machine hooks."
1255
1256 if test "$host_xm_file" != "$build_xm_file"; then
1257         count=a
1258         for f in $build_xm_file; do
1259                 count=${count}x
1260         done
1261         if test $count = a; then
1262                 :
1263         elif test $count = ax; then
1264                 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1265         else
1266                 echo "Using the following build machine macro files:"
1267                 for f in $build_xm_file; do
1268                         echo "  $srcdir/config/$f"
1269                 done
1270         fi
1271 fi
1272
1273 case ${host} in
1274   powerpc*-*-darwin*)
1275     AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1276       gcc_cv_mcontext_underscores,
1277       AC_COMPILE_IFELSE([
1278 #include <sys/cdefs.h>
1279 #include <sys/signal.h>
1280 #include <ucontext.h>
1281 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1282 ],
1283         gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1284       if test $gcc_cv_mcontext_underscores = yes; then
1285         AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1286           [mcontext_t fields start with __])
1287       fi
1288     ;;
1289 esac
1290
1291 # ---------
1292 # Threading
1293 # ---------
1294
1295 # Check if a valid thread package
1296 case ${enable_threads} in
1297   "" | no)
1298     # No threads
1299     target_thread_file='single'
1300     ;;
1301   yes)
1302     # default
1303     target_thread_file='single'
1304     ;;
1305   aix | dce | gnat | irix | posix | posix95 | rtems | \
1306   single | solaris | vxworks | win32 )
1307     target_thread_file=${enable_threads}
1308     ;;
1309   *)
1310     echo "${enable_threads} is an unknown thread package" 1>&2
1311     exit 1
1312     ;;
1313 esac
1314
1315 if test x${thread_file} = x; then
1316   # No thread file set by target-specific clauses in config.gcc,
1317   # so use file chosen by default logic above
1318   thread_file=${target_thread_file}
1319 fi
1320
1321 # Make gthr-default.h if we have a thread file.
1322 gthread_flags=
1323 if test $thread_file != single; then
1324   rm -f gthr-default.h
1325   echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
1326   gthread_flags=-DHAVE_GTHR_DEFAULT
1327 fi
1328 AC_SUBST(gthread_flags)
1329
1330 # --------
1331 # UNSORTED
1332 # --------
1333
1334 use_cxa_atexit=no
1335 if test x$enable___cxa_atexit = xyes || \
1336    test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1337   if test x$host = x$target; then
1338     case $host in
1339       # mingw32 doesn't have __cxa_atexit but uses atexit registration
1340       # keyed to flag_use_cxa_atexit
1341       *-*-mingw32*)
1342         use_cxa_atexit=yes
1343         ;;
1344       *)
1345         AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1346           [echo "__cxa_atexit can't be enabled on this target"])
1347         ;;
1348     esac
1349   else
1350     # We can't check for __cxa_atexit when building a cross, so assume
1351     # it is available 
1352     use_cxa_atexit=yes
1353   fi
1354   if test x$use_cxa_atexit = xyes; then
1355     AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1356       [Define if you want to use __cxa_atexit, rather than atexit, to
1357       register C++ destructors for local statics and global objects.
1358       This is essential for fully standards-compliant handling of
1359       destructors, but requires __cxa_atexit in libc.])
1360   fi
1361 fi
1362
1363 use_getipinfo=yes
1364 if test x$with_system_libunwind = xyes; then
1365    if test x$host = x$target; then
1366      AC_SEARCH_LIBS(_Unwind_GetIPInfo, unwind,, [use_getipinfo=no])
1367    fi
1368 fi
1369 GCC_TARGET_TEMPLATE(HAVE_GETIPINFO)
1370 if test x$use_getipinfo = xyes; then
1371    AC_DEFINE(HAVE_GETIPINFO, 1,
1372         [Define to 1 if system unwind library has _Unwind_GetIPInfo.])
1373 else
1374    echo "The system unwind library does not support _Unwind_GetIPInfo."
1375 fi
1376
1377 # Look for a file containing extra machine modes.
1378 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1379   extra_modes_file='$(srcdir)'/config/${extra_modes}
1380   AC_SUBST(extra_modes_file)
1381   AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1382   [Define to the name of a file containing a list of extra machine modes
1383    for this architecture.])
1384 fi
1385
1386 # Convert extra_options into a form suitable for Makefile use.
1387 extra_opt_files=
1388 for f in $extra_options; do
1389   extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1390 done
1391 AC_SUBST(extra_opt_files)
1392
1393 # auto-host.h is the file containing items generated by autoconf and is
1394 # the first file included by config.h.
1395 # If host=build, it is correct to have bconfig include auto-host.h
1396 # as well.  If host!=build, we are in error and need to do more 
1397 # work to find out the build config parameters.
1398 if test x$host = x$build
1399 then
1400         build_auto=auto-host.h
1401 else
1402         # We create a subdir, then run autoconf in the subdir.
1403         # To prevent recursion we set host and build for the new
1404         # invocation of configure to the build for this invocation
1405         # of configure. 
1406         tempdir=build.$$
1407         rm -rf $tempdir
1408         mkdir $tempdir
1409         cd $tempdir
1410         case ${srcdir} in
1411         /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1412         *) realsrcdir=../${srcdir};;
1413         esac
1414         saved_CFLAGS="${CFLAGS}"
1415         CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1416         ${realsrcdir}/configure \
1417                 --enable-languages=${enable_languages-all} \
1418                 --target=$target_alias --host=$build_alias --build=$build_alias
1419         CFLAGS="${saved_CFLAGS}"
1420
1421         # We just finished tests for the build machine, so rename
1422         # the file auto-build.h in the gcc directory.
1423         mv auto-host.h ../auto-build.h
1424         cd ..
1425         rm -rf $tempdir
1426         build_auto=auto-build.h
1427 fi
1428 AC_SUBST(build_subdir)
1429
1430 tm_file="${tm_file} defaults.h"
1431 tm_p_file="${tm_p_file} tm-preds.h"
1432 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1433 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1434 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1435 # put this back in temporarily.
1436 xm_file="auto-host.h ansidecl.h ${xm_file}"
1437
1438 # --------
1439 # UNSORTED
1440 # --------
1441
1442 changequote(,)dnl
1443 # Compile in configure arguments.
1444 if test -f configargs.h ; then
1445         # Being re-configured.
1446         gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1447         gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1448 else
1449         gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1450 fi
1451
1452 # Double all backslashes and backslash all quotes to turn
1453 # gcc_config_arguments into a C string.
1454 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1455 $gcc_config_arguments
1456 EOF
1457 gcc_config_arguments_str=`cat conftest.out`
1458 rm -f conftest.out
1459
1460 cat > configargs.h <<EOF
1461 /* Generated automatically. */
1462 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1463 static const char thread_model[] = "$thread_file";
1464
1465 static const struct {
1466   const char *name, *value;
1467 } configure_default_options[] = $configure_default_options;
1468 EOF
1469 changequote([,])dnl
1470
1471 # Internationalization
1472 ZW_GNU_GETTEXT_SISTER_DIR
1473
1474 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1475 # -liconv on the link line twice.
1476 case "$LIBINTL" in *$LIBICONV*)
1477         LIBICONV= ;;
1478 esac
1479
1480 AC_ARG_ENABLE(secureplt,
1481 [  --enable-secureplt      enable -msecure-plt by default for PowerPC],
1482 [], [])
1483
1484 # Windows32 Registry support for specifying GCC installation paths.
1485 AC_ARG_ENABLE(win32-registry,
1486 [  --disable-win32-registry
1487                           disable lookup of installation paths in the
1488                           Registry on Windows hosts
1489   --enable-win32-registry enable registry lookup (default)
1490   --enable-win32-registry=KEY
1491                           use KEY instead of GCC version as the last portion
1492                           of the registry key],,)
1493
1494 case $host_os in
1495   win32 | pe | cygwin* | mingw32* | uwin*)
1496     if test "x$enable_win32_registry" != xno; then
1497       AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
1498     fi
1499
1500     if test "x$enable_win32_registry" != xno; then
1501       AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
1502   [Define to 1 if installation paths should be looked up in the Windows
1503    Registry. Ignored on non-Windows hosts.])
1504
1505       if test "x$enable_win32_registry" != xyes \
1506          && test "x$enable_win32_registry" != x; then
1507         AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
1508   [Define to be the last component of the Windows registry key under which
1509    to look for installation paths.  The full key used will be 
1510    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
1511    The default is the GCC version number.])
1512       fi
1513     fi
1514   ;;
1515 esac
1516
1517 # Get an absolute path to the GCC top-level source directory
1518 holddir=`${PWDCMD-pwd}`
1519 cd $srcdir
1520 topdir=`${PWDCMD-pwd}`
1521 cd $holddir
1522
1523 # Conditionalize the makefile for this host machine.
1524 xmake_file=
1525 for f in ${host_xmake_file}
1526 do
1527         if test -f ${srcdir}/config/$f
1528         then
1529                 xmake_file="${xmake_file} \$(srcdir)/config/$f"
1530         fi
1531 done
1532
1533 # Conditionalize the makefile for this target machine.
1534 tmake_file_=
1535 for f in ${tmake_file}
1536 do
1537         if test -f ${srcdir}/config/$f
1538         then
1539                 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
1540         fi
1541 done
1542 tmake_file="${tmake_file_}"
1543
1544 # This is a terrible hack which will go away some day.
1545 host_cc_for_libada=${CC}
1546 AC_SUBST(host_cc_for_libada)
1547
1548 out_object_file=`basename $out_file .c`.o
1549
1550 tm_file_list="options.h"
1551 tm_include_list="options.h"
1552 for f in $tm_file; do
1553   case $f in
1554     ./* )
1555        f=`echo $f | sed 's/^..//'`
1556        tm_file_list="${tm_file_list} $f"
1557        tm_include_list="${tm_include_list} $f"
1558        ;;
1559     defaults.h )
1560        tm_file_list="${tm_file_list} \$(srcdir)/$f"
1561        tm_include_list="${tm_include_list} $f"
1562        ;;
1563     * )
1564        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
1565        tm_include_list="${tm_include_list} config/$f"
1566        ;;
1567   esac
1568 done
1569
1570 tm_p_file_list=
1571 tm_p_include_list=
1572 for f in $tm_p_file; do
1573   case $f in
1574     tm-preds.h )
1575        tm_p_file_list="${tm_p_file_list} $f"
1576        tm_p_include_list="${tm_p_include_list} $f"
1577        ;;
1578     * )
1579        tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
1580        tm_p_include_list="${tm_p_include_list} config/$f"
1581   esac
1582 done
1583
1584 xm_file_list=
1585 xm_include_list=
1586 for f in $xm_file; do
1587   case $f in
1588     ansidecl.h )
1589        xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
1590        xm_include_list="${xm_include_list} $f"
1591        ;;
1592     auto-host.h )
1593        xm_file_list="${xm_file_list} $f"
1594        xm_include_list="${xm_include_list} $f"
1595        ;;
1596     * )
1597        xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
1598        xm_include_list="${xm_include_list} config/$f"
1599        ;;
1600   esac
1601 done
1602
1603 host_xm_file_list=
1604 host_xm_include_list=
1605 for f in $host_xm_file; do
1606   case $f in
1607     ansidecl.h )
1608        host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
1609        host_xm_include_list="${host_xm_include_list} $f"
1610        ;;
1611     auto-host.h )
1612        host_xm_file_list="${host_xm_file_list} $f"
1613        host_xm_include_list="${host_xm_include_list} $f"
1614        ;;
1615     * )
1616        host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
1617        host_xm_include_list="${host_xm_include_list} config/$f"
1618        ;;
1619   esac
1620 done
1621
1622 build_xm_file_list=
1623 for f in $build_xm_file; do
1624   case $f in
1625     ansidecl.h )
1626        build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
1627        build_xm_include_list="${build_xm_include_list} $f"
1628        ;;
1629     auto-build.h | auto-host.h )
1630        build_xm_file_list="${build_xm_file_list} $f"
1631        build_xm_include_list="${build_xm_include_list} $f"
1632        ;;
1633     * )
1634        build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
1635        build_xm_include_list="${build_xm_include_list} config/$f"
1636        ;;
1637   esac
1638 done
1639
1640 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
1641 # cross-compiler which does not use the native headers and libraries.
1642 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
1643 CROSS=                                          AC_SUBST(CROSS)
1644 ALL=all.internal                                AC_SUBST(ALL)
1645 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
1646
1647 if test "x$with_build_sysroot" != x; then
1648   build_system_header_dir=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
1649 else
1650   # This value is used, even on a native system, because 
1651   # CROSS_SYSTEM_HEADER_DIR is just 
1652   # $(TARGET_SYSTEM_ROOT)$(NATIVE_SYSTEM_HEADER_DIR).
1653   build_system_header_dir='$(CROSS_SYSTEM_HEADER_DIR)'
1654 fi
1655
1656 if test x$host != x$target
1657 then
1658         CROSS="-DCROSS_DIRECTORY_STRUCTURE"
1659         ALL=all.cross
1660         SYSTEM_HEADER_DIR=$build_system_header_dir
1661         case "$host","$target" in
1662         # Darwin crosses can use the host system's libraries and headers,
1663         # because of the fat library support.  Of course, it must be the
1664         # same version of Darwin on both sides.  Allow the user to
1665         # just say --target=foo-darwin without a version number to mean
1666         # "the version on this system".
1667             *-*-darwin*,*-*-darwin*)
1668                 hostos=`echo $host | sed 's/.*-darwin/darwin/'`
1669                 targetos=`echo $target | sed 's/.*-darwin/darwin/'`
1670                 if test $hostos = $targetos -o $targetos = darwin ; then
1671                     CROSS=
1672                     SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)'
1673                     with_headers=yes
1674                 fi
1675                 ;;
1676
1677             i?86-*-*,x86_64-*-* \
1678             | powerpc*-*-*,powerpc64*-*-*)
1679                 CROSS="$CROSS -DNATIVE_CROSS" ;;
1680         esac
1681 elif test "x$TARGET_SYSTEM_ROOT" != x; then
1682         SYSTEM_HEADER_DIR=$build_system_header_dir 
1683 fi
1684
1685 # If this is a cross-compiler that does not
1686 # have its own set of headers then define
1687 # inhibit_libc
1688
1689 # If this is using newlib, without having the headers available now,
1690 # then define inhibit_libc in LIBGCC2_CFLAGS.
1691 # This prevents libgcc2 from containing any code which requires libc
1692 # support.
1693 inhibit_libc=false
1694 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
1695        test x$with_newlib = xyes ; } &&
1696      { test "x$with_headers" = x || test "x$with_headers" = xno ; } ; then
1697        inhibit_libc=true
1698 fi
1699 AC_SUBST(inhibit_libc)
1700
1701 # When building gcc with a cross-compiler, we need to adjust things so
1702 # that the generator programs are still built with the native compiler.
1703 # Also, we cannot run fixincludes or fix-header.
1704
1705 # These are the normal (build=host) settings:
1706 CC_FOR_BUILD='$(CC)'            AC_SUBST(CC_FOR_BUILD)
1707 BUILD_CFLAGS='$(ALL_CFLAGS)'    AC_SUBST(BUILD_CFLAGS)
1708 STMP_FIXINC=stmp-fixinc         AC_SUBST(STMP_FIXINC)
1709
1710 # Possibly disable fixproto, on a per-target basis.
1711 case ${use_fixproto} in
1712   no)
1713     STMP_FIXPROTO=
1714     ;;
1715   yes)
1716     STMP_FIXPROTO=stmp-fixproto
1717     ;;
1718 esac
1719 AC_SUBST(STMP_FIXPROTO)
1720
1721 # And these apply if build != host, or we are generating coverage data
1722 if test x$build != x$host || test "x$coverage_flags" != x
1723 then
1724     BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
1725
1726     if test "x$TARGET_SYSTEM_ROOT" = x; then
1727         if test "x$STMP_FIXPROTO" != x; then
1728           STMP_FIXPROTO=stmp-install-fixproto
1729         fi
1730     fi
1731 fi
1732
1733 # Expand extra_headers to include complete path.
1734 # This substitutes for lots of t-* files.
1735 extra_headers_list=
1736 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
1737 for file in ${extra_headers} ; do
1738   extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
1739 done
1740
1741 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
1742 if test x"$use_gcc_tgmath" = xyes
1743 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
1744 fi
1745
1746 # Define collect2 in Makefile.
1747 case $host_can_use_collect2 in
1748   no) collect2= ;;
1749   *) collect2='collect2$(exeext)' ;;
1750 esac
1751 AC_SUBST([collect2])
1752
1753 # Add a definition of USE_COLLECT2 if system wants one.
1754 case $use_collect2 in
1755   no) use_collect2= ;;
1756   "") ;;
1757   *) 
1758     host_xm_defines="${host_xm_defines} USE_COLLECT2"
1759     xm_defines="${xm_defines} USE_COLLECT2"
1760     case $host_can_use_collect2 in
1761       no)
1762         AC_MSG_ERROR([collect2 is required but cannot be built on this system])
1763         ;;
1764     esac
1765     ;;
1766 esac
1767
1768 # ---------------------------
1769 # Assembler & linker features
1770 # ---------------------------
1771
1772 # Identify the assembler which will work hand-in-glove with the newly
1773 # built GCC, so that we can examine its features.  This is the assembler
1774 # which will be driven by the driver program.
1775 #
1776 # If build != host, and we aren't building gas in-tree, we identify a
1777 # build->target assembler and hope that it will have the same features
1778 # as the host->target assembler we'll be using.
1779 gcc_cv_gas_major_version=
1780 gcc_cv_gas_minor_version=
1781 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
1782
1783 m4_pattern_allow([AS_FOR_TARGET])dnl
1784 AS_VAR_SET_IF(gcc_cv_as,, [
1785 if test -x "$DEFAULT_ASSEMBLER"; then
1786         gcc_cv_as="$DEFAULT_ASSEMBLER"
1787 elif test -f $gcc_cv_as_gas_srcdir/configure.in \
1788      && test -f ../gas/Makefile \
1789      && test x$build = x$host; then
1790         gcc_cv_as=../gas/as-new$build_exeext
1791 elif test -x as$build_exeext; then
1792         # Build using assembler in the current directory.
1793         gcc_cv_as=./as$build_exeext
1794 elif test -x $AS_FOR_TARGET; then
1795         gcc_cv_as="$AS_FOR_TARGET"
1796 else
1797         AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
1798 fi])
1799
1800 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
1801 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
1802 case "$ORIGINAL_AS_FOR_TARGET" in
1803   ./as | ./as$build_exeext) ;;
1804   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
1805 esac 
1806
1807 AC_MSG_CHECKING(what assembler to use)
1808 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
1809   # Single tree build which includes gas.  We want to prefer it
1810   # over whatever linker top-level may have detected, since
1811   # we'll use what we're building after installation anyway.
1812   AC_MSG_RESULT(newly built gas)
1813   in_tree_gas=yes
1814   _gcc_COMPUTE_GAS_VERSION
1815   in_tree_gas_is_elf=no
1816   if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
1817      || (grep 'obj_format = multi' ../gas/Makefile \
1818          && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
1819   then
1820     in_tree_gas_is_elf=yes
1821   fi
1822 else
1823   AC_MSG_RESULT($gcc_cv_as)
1824   in_tree_gas=no
1825 fi
1826
1827 # Identify the linker which will work hand-in-glove with the newly
1828 # built GCC, so that we can examine its features.  This is the linker
1829 # which will be driven by the driver program.
1830 #
1831 # If build != host, and we aren't building gas in-tree, we identify a
1832 # build->target linker and hope that it will have the same features
1833 # as the host->target linker we'll be using.
1834 gcc_cv_gld_major_version=
1835 gcc_cv_gld_minor_version=
1836 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
1837 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
1838
1839 AS_VAR_SET_IF(gcc_cv_ld,, [
1840 if test -x "$DEFAULT_LINKER"; then
1841         gcc_cv_ld="$DEFAULT_LINKER"
1842 elif test -f $gcc_cv_ld_gld_srcdir/configure.in \
1843      && test -f ../ld/Makefile \
1844      && test x$build = x$host; then
1845         gcc_cv_ld=../ld/ld-new$build_exeext
1846 elif test -x collect-ld$build_exeext; then
1847         # Build using linker in the current directory.
1848         gcc_cv_ld=./collect-ld$build_exeext
1849 elif test -x $LD_FOR_TARGET; then
1850         gcc_cv_ld="$LD_FOR_TARGET"
1851 else
1852         AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
1853 fi])
1854
1855 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
1856 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
1857 case "$ORIGINAL_LD_FOR_TARGET" in
1858   ./collect-ld | ./collect-ld$build_exeext) ;;
1859   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
1860 esac 
1861
1862 AC_MSG_CHECKING(what linker to use)
1863 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then
1864         # Single tree build which includes ld.  We want to prefer it
1865         # over whatever linker top-level may have detected, since
1866         # we'll use what we're building after installation anyway.
1867         AC_MSG_RESULT(newly built ld)
1868         in_tree_ld=yes
1869         in_tree_ld_is_elf=no
1870         if (grep 'EMUL = .*elf' ../ld/Makefile \
1871             || grep 'EMUL = .*linux' ../ld/Makefile \
1872             || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
1873           in_tree_ld_is_elf=yes
1874         fi
1875         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
1876         do
1877 changequote(,)dnl
1878                 gcc_cv_gld_version=`sed -n -e 's/^[     ]*\(VERSION=[0-9]*\.[0-9]*.*\)/\1/p' < $f`
1879                 if test x$gcc_cv_gld_version != x; then
1880                         break
1881                 fi
1882         done
1883         gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
1884         gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
1885 changequote([,])dnl
1886 else
1887         AC_MSG_RESULT($gcc_cv_ld)
1888         in_tree_ld=no
1889 fi
1890
1891 # Figure out what nm we will be using.
1892 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
1893 AS_VAR_SET_IF(gcc_cv_nm,, [
1894 if test -f $gcc_cv_binutils_srcdir/configure.in \
1895      && test -f ../binutils/Makefile \
1896      && test x$build = x$host; then
1897         gcc_cv_nm=../binutils/nm-new$build_exeext
1898 elif test -x nm$build_exeext; then
1899         gcc_cv_nm=./nm$build_exeext
1900 elif test -x $NM_FOR_TARGET; then
1901         gcc_cv_nm="$NM_FOR_TARGET"
1902 else
1903         AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
1904 fi])
1905
1906 AC_MSG_CHECKING(what nm to use)
1907 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
1908         # Single tree build which includes binutils.
1909         AC_MSG_RESULT(newly built nm)
1910         in_tree_nm=yes
1911 else
1912         AC_MSG_RESULT($gcc_cv_nm)
1913         in_tree_nm=no
1914 fi
1915
1916 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
1917 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
1918 case "$ORIGINAL_NM_FOR_TARGET" in
1919   ./nm | ./nm$build_exeext) ;;
1920   *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
1921 esac
1922
1923
1924 # Figure out what objdump we will be using.
1925 AS_VAR_SET_IF(gcc_cv_objdump,, [
1926 if test -f $gcc_cv_binutils_srcdir/configure.in \
1927      && test -f ../binutils/Makefile \
1928      && test x$build = x$host; then
1929         # Single tree build which includes binutils.
1930         gcc_cv_objdump=../binutils/objdump$build_exeext
1931 elif test -x objdump$build_exeext; then
1932         gcc_cv_objdump=./objdump$build_exeext
1933 elif test -x $OBJDUMP_FOR_TARGET; then
1934         gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
1935 else
1936         AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
1937 fi])
1938
1939 AC_MSG_CHECKING(what objdump to use)
1940 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
1941         # Single tree build which includes binutils.
1942         AC_MSG_RESULT(newly built objdump)
1943 elif test x$gcc_cv_objdump = x; then
1944         AC_MSG_RESULT(not found)
1945 else
1946         AC_MSG_RESULT($gcc_cv_objdump)
1947 fi
1948
1949 # Figure out what assembler alignment features are present.
1950 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
1951  [2,6,0],,
1952 [.balign 4
1953 .p2align 2],,
1954 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
1955   [Define if your assembler supports .balign and .p2align.])])
1956
1957 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
1958  [2,8,0],,
1959  [.p2align 4,,7],,
1960 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
1961   [Define if your assembler supports specifying the maximum number
1962    of bytes to skip when using the GAS .p2align command.])])
1963
1964 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
1965  [2,8,0],,
1966  [.literal16],,
1967 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
1968   [Define if your assembler supports .literal16.])])
1969
1970 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
1971  [elf,2,9,0],,
1972  [conftest_label1: .word 0
1973 .subsection -1
1974 conftest_label2: .word 0
1975 .previous],
1976  [if test x$gcc_cv_nm != x; then
1977     $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
1978     $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
1979     if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
1980     then :
1981     else gcc_cv_as_subsection_m1=yes
1982     fi
1983     rm -f conftest.nm1 conftest.nm2
1984   fi],
1985  [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
1986   [Define if your assembler supports .subsection and .subsection -1 starts
1987    emitting at the beginning of your section.])])
1988
1989 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
1990  [2,2,0],,
1991  [      .weak foobar],,
1992 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
1993
1994 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
1995  [2,17,0],,
1996  [      .weakref foobar, barfnot],,
1997 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
1998
1999 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2000  [2,15,91],,
2001  [      .SPACE $TEXT$
2002         .NSUBSPA $CODE$,COMDAT],,
2003 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2004
2005 # .hidden needs to be supported in both the assembler and the linker,
2006 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2007 # This is irritatingly difficult to feature test for; we have to check the
2008 # date string after the version number.  If we've got an in-tree
2009 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2010 # to be safe.
2011 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2012 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2013  [elf,2,13,0],,
2014 [       .hidden foobar
2015 foobar:])
2016
2017 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2018 [if test $in_tree_ld = yes ; then
2019   gcc_cv_ld_hidden=no
2020   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 \
2021      && test $in_tree_ld_is_elf = yes; then
2022      gcc_cv_ld_hidden=yes
2023   fi
2024 else
2025   gcc_cv_ld_hidden=yes
2026   ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2027   if echo "$ld_ver" | grep GNU > /dev/null; then
2028 changequote(,)dnl
2029     ld_vers=`echo $ld_ver | sed -n \
2030         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2031         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2032         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
2033         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\)[  ].*$,\1,p' \
2034         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[     ].*$,\1,p' \
2035         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[       ].*$,\1,p' \
2036         -e 's,^.*[       ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[   -].*$,\1,p'`
2037     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'`
2038     ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2039     ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2040     ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2041     if test 0"$ld_date" -lt 20020404; then
2042       if test -n "$ld_date"; then
2043         # If there was date string, but was earlier than 2002-04-04, fail
2044         gcc_cv_ld_hidden=no
2045       elif test -z "$ld_vers"; then
2046         # If there was no date string nor ld version number, something is wrong
2047         gcc_cv_ld_hidden=no
2048       else
2049         test -z "$ld_vers_patch" && ld_vers_patch=0
2050         if test "$ld_vers_major" -lt 2; then
2051           gcc_cv_ld_hidden=no
2052         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2053           gcc_cv_ld_hidden="no"
2054         elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2055           gcc_cv_ld_hidden=no
2056         fi
2057       fi
2058 changequote([,])dnl
2059     fi
2060   else
2061     case "${target}" in
2062       hppa64*-*-hpux* | ia64*-*-hpux*)
2063         gcc_cv_ld_hidden=yes
2064         ;;
2065       *)
2066         gcc_cv_ld_hidden=no
2067         ;;
2068     esac
2069   fi
2070 fi])
2071 libgcc_visibility=no
2072 AC_SUBST(libgcc_visibility)
2073 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2074 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2075   libgcc_visibility=yes
2076   AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2077   [Define if your assembler and linker support .hidden.])
2078 fi
2079
2080 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2081 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2082   [elf,2,11,0],,
2083 [       .data
2084         .uleb128 L2 - L1
2085 L1:
2086         .uleb128 1280
2087         .sleb128 -1010
2088 L2:],
2089  [# GAS versions before 2.11 do not support uleb128,
2090   # despite appearing to.
2091   # ??? There exists an elf-specific test that will crash
2092   # the assembler.  Perhaps it's better to figure out whether
2093   # arbitrary sections are supported and try the test.
2094   as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2095   if echo "$as_ver" | grep GNU > /dev/null; then
2096 changequote(,)dnl
2097     as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
2098     as_major=`echo $as_ver | sed 's/\..*//'`
2099     as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
2100 changequote([,])dnl
2101     if test $as_major -eq 2 && test $as_minor -lt 11
2102     then :
2103     else gcc_cv_as_leb128=yes
2104     fi
2105   fi],
2106   [AC_DEFINE(HAVE_AS_LEB128, 1,
2107     [Define if your assembler supports .sleb128 and .uleb128.])])
2108
2109 # GAS versions up to and including 2.11.0 may mis-optimize
2110 # .eh_frame data.
2111 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
2112   [elf,2,12,0],,
2113 [       .text
2114 .LFB1:
2115         .4byte  0
2116 .L1:
2117         .4byte  0
2118 .LFE1:
2119         .section        .eh_frame,"aw",@progbits
2120 __FRAME_BEGIN__:
2121         .4byte  .LECIE1-.LSCIE1
2122 .LSCIE1:
2123         .4byte  0x0
2124         .byte   0x1
2125         .ascii "z\0"
2126         .byte   0x1
2127         .byte   0x78
2128         .byte   0x1a
2129         .byte   0x0
2130         .byte   0x4
2131         .4byte  1
2132         .p2align 1
2133 .LECIE1:
2134 .LSFDE1:
2135         .4byte  .LEFDE1-.LASFDE1
2136 .LASFDE1:
2137         .4byte  .LASFDE1-__FRAME_BEGIN__
2138         .4byte  .LFB1
2139         .4byte  .LFE1-.LFB1
2140         .byte   0x4
2141         .4byte  .LFE1-.LFB1
2142         .byte   0x4
2143         .4byte  .L1-.LFB1
2144 .LEFDE1:],
2145 [  dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
2146 cat > conftest.lit <<EOF
2147  0000 10000000 00000000 017a0001 781a0004  .........z..x...
2148  0010 01000000 12000000 18000000 00000000  ................
2149  0020 08000000 04080000 0044               .........D      @&t@
2150 EOF
2151 cat > conftest.big <<EOF
2152  0000 00000010 00000000 017a0001 781a0004  .........z..x...
2153  0010 00000001 00000012 00000018 00000000  ................
2154  0020 00000008 04000000 0844               .........D      @&t@
2155 EOF
2156   # If the assembler didn't choke, and we can objdump,
2157   # and we got the correct data, then succeed.
2158   # The text in the here-document typically retains its unix-style line
2159   # endings, while the output of objdump will use host line endings.
2160   # Therefore, use diff -b for the comparisons.
2161   if test x$gcc_cv_objdump != x \
2162   && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
2163      | tail -3 > conftest.got \
2164   && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
2165     || diff -b conftest.big conftest.got > /dev/null 2>&1; }
2166   then
2167     gcc_cv_as_eh_frame=yes
2168   elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
2169     gcc_cv_as_eh_frame=buggy
2170   else
2171     # Uh oh, what do we do now?
2172     gcc_cv_as_eh_frame=no
2173   fi])
2174
2175 if test $gcc_cv_as_eh_frame = buggy; then
2176   AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
2177   [Define if your assembler mis-optimizes .eh_frame data.])
2178 fi
2179
2180 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2181  [elf,2,12,0], [--fatal-warnings],
2182  [.section .rodata.str, "aMS", @progbits, 1])
2183 if test $gcc_cv_as_shf_merge = no; then
2184   gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
2185     [elf,2,12,0], [--fatal-warnings],
2186     [.section .rodata.str, "aMS", %progbits, 1])
2187 fi
2188 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
2189   [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
2190 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
2191
2192 gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group,
2193  [elf,2,16,0], [--fatal-warnings],
2194  [.section .text,"axG",@progbits,.foo,comdat])
2195 if test $gcc_cv_as_comdat_group = yes; then
2196   gcc_cv_as_comdat_group_percent=no
2197 else
2198  gcc_GAS_CHECK_FEATURE(COMDAT group support, gcc_cv_as_comdat_group_percent,
2199    [elf,2,16,0], [--fatal-warnings],
2200    [.section .text,"axG",%progbits,.foo,comdat])
2201 fi
2202 if test $in_tree_ld != yes && test x"$ld_vers" != x; then
2203   comdat_group=yes
2204   if test 0"$ld_date" -lt 20050308; then
2205     if test -n "$ld_date"; then
2206       # If there was date string, but was earlier than 2005-03-08, fail
2207       comdat_group=no
2208     elif test "$ld_vers_major" -lt 2; then
2209       comdat_group=no
2210     elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
2211       comdat_group=no
2212     fi
2213   fi
2214 else
2215   # assume linkers other than GNU ld don't support COMDAT group
2216   comdat_group=no
2217 fi
2218 if test $comdat_group = no; then
2219   gcc_cv_as_comdat_group=no
2220   gcc_cv_as_comdat_group_percent=no
2221 fi
2222 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
2223   [`if test $gcc_cv_as_comdat_group = yes || test $gcc_cv_as_comdat_group_percent = yes; then echo 1; else echo 0; fi`],
2224 [Define 0/1 if your assembler and linker support COMDAT groups.])
2225
2226 # Thread-local storage - the check is heavily parametrized.
2227 conftest_s=
2228 tls_first_major=
2229 tls_first_minor=
2230 tls_as_opt=
2231 case "$target" in
2232 changequote(,)dnl
2233   alpha*-*-*)
2234     conftest_s='
2235         .section ".tdata","awT",@progbits
2236 foo:    .long   25
2237         .text
2238         ldq     $27,__tls_get_addr($29)         !literal!1
2239         lda     $16,foo($29)                    !tlsgd!1
2240         jsr     $26,($27),__tls_get_addr        !lituse_tlsgd!1
2241         ldq     $27,__tls_get_addr($29)         !literal!2
2242         lda     $16,foo($29)                    !tlsldm!2
2243         jsr     $26,($27),__tls_get_addr        !lituse_tlsldm!2
2244         ldq     $1,foo($29)                     !gotdtprel
2245         ldah    $2,foo($29)                     !dtprelhi
2246         lda     $3,foo($2)                      !dtprello
2247         lda     $4,foo($29)                     !dtprel
2248         ldq     $1,foo($29)                     !gottprel
2249         ldah    $2,foo($29)                     !tprelhi
2250         lda     $3,foo($2)                      !tprello
2251         lda     $4,foo($29)                     !tprel'
2252         tls_first_major=2
2253         tls_first_minor=13
2254         tls_as_opt=--fatal-warnings
2255         ;;
2256   frv*-*-*)
2257     conftest_s='
2258         .section ".tdata","awT",@progbits
2259 x:      .long   25
2260         .text
2261         call    #gettlsoff(x)'
2262         tls_first_major=2
2263         tls_first_minor=14
2264         ;;
2265   hppa*-*-linux*)
2266     conftest_s='
2267 t1:     .reg    %r20
2268 t2:     .reg    %r21
2269 gp:     .reg    %r19
2270         .section ".tdata","awT",@progbits
2271 foo:    .long   25
2272         .text
2273         .align  4
2274         addil LT%foo-$tls_gdidx$,gp
2275         ldo RT%foo-$tls_gdidx$(%r1),%arg0
2276         b __tls_get_addr
2277         nop             
2278         addil LT%foo-$tls_ldidx$,gp
2279         b __tls_get_addr
2280         ldo RT%foo-$tls_ldidx$(%r1),%arg0
2281         addil LR%foo-$tls_dtpoff$,%ret0
2282         ldo RR%foo-$tls_dtpoff$(%r1),%t1
2283         mfctl %cr27,%t1                 
2284         addil LT%foo-$tls_ieoff$,gp
2285         ldw RT%foo-$tls_ieoff$(%r1),%t2
2286         add %t1,%t2,%t3                 
2287         mfctl %cr27,%t1                 
2288         addil LR%foo-$tls_leoff$,%t1
2289         ldo RR%foo-$tls_leoff$(%r1),%t2'
2290         tls_first_major=2
2291         tls_first_minor=15
2292         tls_as_opt=--fatal-warnings
2293         ;;
2294   arm*-*-*)
2295     conftest_s='
2296         .section ".tdata","awT",%progbits
2297 foo:    .long   25
2298         .text
2299 .word foo(gottpoff)
2300 .word foo(tpoff)
2301 .word foo(tlsgd)
2302 .word foo(tlsldm)
2303 .word foo(tlsldo)'
2304         tls_first_major=2
2305         tls_first_minor=17
2306         ;;
2307   i[34567]86-*-*)
2308     conftest_s='
2309         .section ".tdata","awT",@progbits
2310 foo:    .long   25
2311         .text
2312         movl    %gs:0, %eax
2313         leal    foo@TLSGD(,%ebx,1), %eax
2314         leal    foo@TLSLDM(%ebx), %eax
2315         leal    foo@DTPOFF(%eax), %edx
2316         movl    foo@GOTTPOFF(%ebx), %eax
2317         subl    foo@GOTTPOFF(%ebx), %eax
2318         addl    foo@GOTNTPOFF(%ebx), %eax
2319         movl    foo@INDNTPOFF, %eax
2320         movl    $foo@TPOFF, %eax
2321         subl    $foo@TPOFF, %eax
2322         leal    foo@NTPOFF(%ecx), %eax'
2323         tls_first_major=2
2324         tls_first_minor=14
2325         tls_as_opt=--fatal-warnings
2326         ;;
2327   x86_64-*-*)
2328     conftest_s='
2329         .section ".tdata","awT",@progbits
2330 foo:    .long   25
2331         .text
2332         movq    %fs:0, %rax
2333         leaq    foo@TLSGD(%rip), %rdi
2334         leaq    foo@TLSLD(%rip), %rdi
2335         leaq    foo@DTPOFF(%rax), %rdx
2336         movq    foo@GOTTPOFF(%rip), %rax
2337         movq    $foo@TPOFF, %rax'
2338         tls_first_major=2
2339         tls_first_minor=14
2340         tls_as_opt=--fatal-warnings
2341         ;;
2342   ia64-*-*)
2343     conftest_s='
2344         .section ".tdata","awT",@progbits
2345 foo:    data8   25
2346         .text
2347         addl    r16 = @ltoff(@dtpmod(foo#)), gp
2348         addl    r17 = @ltoff(@dtprel(foo#)), gp
2349         addl    r18 = @ltoff(@tprel(foo#)), gp
2350         addl    r19 = @dtprel(foo#), gp
2351         adds    r21 = @dtprel(foo#), r13
2352         movl    r23 = @dtprel(foo#)
2353         addl    r20 = @tprel(foo#), gp
2354         adds    r22 = @tprel(foo#), r13
2355         movl    r24 = @tprel(foo#)'
2356         tls_first_major=2
2357         tls_first_minor=13
2358         tls_as_opt=--fatal-warnings
2359         ;;
2360   mips*-*-*)
2361     conftest_s='
2362         .section .tdata,"awT",@progbits
2363 x:
2364         .word 2
2365         .text
2366         addiu $4, $28, %tlsgd(x)
2367         addiu $4, $28, %tlsldm(x)
2368         lui $4, %dtprel_hi(x)
2369         addiu $4, $4, %dtprel_lo(x)
2370         lw $4, %gottprel(x)($28)
2371         lui $4, %tprel_hi(x)
2372         addiu $4, $4, %tprel_lo(x)'
2373         tls_first_major=2
2374         tls_first_minor=16
2375         tls_as_opt='-32 --fatal-warnings'
2376         ;;
2377   powerpc-*-*)
2378     conftest_s='
2379         .section ".tdata","awT",@progbits
2380         .align 2
2381 ld0:    .space 4
2382 ld1:    .space 4
2383 x1:     .space 4
2384 x2:     .space 4
2385 x3:     .space 4
2386         .text
2387         addi 3,31,ld0@got@tlsgd
2388         bl __tls_get_addr
2389         addi 3,31,x1@got@tlsld
2390         bl __tls_get_addr
2391         addi 9,3,x1@dtprel
2392         addis 9,3,x2@dtprel@ha
2393         addi 9,9,x2@dtprel@l
2394         lwz 9,x3@got@tprel(31)
2395         add 9,9,x@tls
2396         addi 9,2,x1@tprel
2397         addis 9,2,x2@tprel@ha
2398         addi 9,9,x2@tprel@l'
2399         tls_first_major=2
2400         tls_first_minor=14
2401         tls_as_opt="-a32 --fatal-warnings"
2402         ;;
2403   powerpc64-*-*)
2404     conftest_s='
2405         .section ".tdata","awT",@progbits
2406         .align 3
2407 ld0:    .space 8
2408 ld1:    .space 8
2409 x1:     .space 8
2410 x2:     .space 8
2411 x3:     .space 8
2412         .text
2413         addi 3,2,ld0@got@tlsgd
2414         bl .__tls_get_addr
2415         nop
2416         addi 3,2,ld1@toc
2417         bl .__tls_get_addr
2418         nop
2419         addi 3,2,x1@got@tlsld
2420         bl .__tls_get_addr
2421         nop
2422         addi 9,3,x1@dtprel
2423         bl .__tls_get_addr
2424         nop
2425         addis 9,3,x2@dtprel@ha
2426         addi 9,9,x2@dtprel@l
2427         bl .__tls_get_addr
2428         nop
2429         ld 9,x3@got@dtprel(2)
2430         add 9,9,3
2431         bl .__tls_get_addr
2432         nop'
2433         tls_first_major=2
2434         tls_first_minor=14
2435         tls_as_opt="-a64 --fatal-warnings"
2436         ;;
2437   s390-*-*)
2438     conftest_s='
2439         .section ".tdata","awT",@progbits
2440 foo:    .long   25
2441         .text
2442         .long   foo@TLSGD
2443         .long   foo@TLSLDM
2444         .long   foo@DTPOFF
2445         .long   foo@NTPOFF
2446         .long   foo@GOTNTPOFF
2447         .long   foo@INDNTPOFF
2448         l       %r1,foo@GOTNTPOFF(%r12)
2449         l       %r1,0(%r1):tls_load:foo
2450         bas     %r14,0(%r1,%r13):tls_gdcall:foo
2451         bas     %r14,0(%r1,%r13):tls_ldcall:foo'
2452         tls_first_major=2
2453         tls_first_minor=14
2454         tls_as_opt="-m31 --fatal-warnings"
2455         ;;
2456   s390x-*-*)
2457     conftest_s='
2458         .section ".tdata","awT",@progbits
2459 foo:    .long   25
2460         .text
2461         .quad   foo@TLSGD
2462         .quad   foo@TLSLDM
2463         .quad   foo@DTPOFF
2464         .quad   foo@NTPOFF
2465         .quad   foo@GOTNTPOFF
2466         lg      %r1,foo@GOTNTPOFF(%r12)
2467         larl    %r1,foo@INDNTPOFF
2468         brasl   %r14,__tls_get_offset@PLT:tls_gdcall:foo
2469         brasl   %r14,__tls_get_offset@PLT:tls_ldcall:foo'
2470         tls_first_major=2
2471         tls_first_minor=14
2472         tls_as_opt="-m64 -Aesame --fatal-warnings"
2473         ;;
2474   sh-*-* | sh[34]-*-*)
2475     conftest_s='
2476         .section ".tdata","awT",@progbits
2477 foo:    .long   25
2478         .text
2479         .long   foo@TLSGD
2480         .long   foo@TLSLDM
2481         .long   foo@DTPOFF
2482         .long   foo@GOTTPOFF
2483         .long   foo@TPOFF'
2484         tls_first_major=2
2485         tls_first_minor=13
2486         tls_as_opt=--fatal-warnings
2487         ;;
2488   sparc*-*-*)
2489     case "$target" in
2490       sparc*-sun-solaris2.[56789]*)
2491         # TLS was introduced in the Solaris 9 4/04 release but
2492         # we do not enable it by default on Solaris 9 either.
2493         if test "x$enable_tls" = xyes ; then
2494           on_solaris=yes
2495         else
2496           enable_tls=no;
2497         fi
2498         ;;
2499       sparc*-sun-solaris2.*)
2500         on_solaris=yes
2501         ;;
2502       *)
2503         on_solaris=no
2504         ;;
2505     esac
2506     if test x$on_solaris = xyes && test x$gas_flag = xno; then
2507       conftest_s='
2508         .section ".tdata",#alloc,#write,#tls
2509 foo:    .long   25
2510         .text
2511         sethi   %tgd_hi22(foo), %o0
2512         add     %o0, %tgd_lo10(foo), %o1
2513         add     %l7, %o1, %o0, %tgd_add(foo)
2514         call    __tls_get_addr, %tgd_call(foo)
2515         sethi   %tldm_hi22(foo), %l1
2516         add     %l1, %tldm_lo10(foo), %l2
2517         add     %l7, %l2, %o0, %tldm_add(foo)
2518         call    __tls_get_addr, %tldm_call(foo)
2519         sethi   %tldo_hix22(foo), %l3
2520         xor     %l3, %tldo_lox10(foo), %l4
2521         add     %o0, %l4, %l5, %tldo_add(foo)
2522         sethi   %tie_hi22(foo), %o3
2523         add     %o3, %tie_lo10(foo), %o3
2524         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2525         add     %g7, %o2, %o4, %tie_add(foo)
2526         sethi   %tle_hix22(foo), %l1
2527         xor     %l1, %tle_lox10(foo), %o5
2528         ld      [%g7 + %o5], %o1'
2529         tls_first_major=0
2530         tls_first_minor=0
2531     else
2532       conftest_s='
2533         .section ".tdata","awT",@progbits
2534 foo:    .long   25
2535         .text
2536         sethi   %tgd_hi22(foo), %o0
2537         add     %o0, %tgd_lo10(foo), %o1
2538         add     %l7, %o1, %o0, %tgd_add(foo)
2539         call    __tls_get_addr, %tgd_call(foo)
2540         sethi   %tldm_hi22(foo), %l1
2541         add     %l1, %tldm_lo10(foo), %l2
2542         add     %l7, %l2, %o0, %tldm_add(foo)
2543         call    __tls_get_addr, %tldm_call(foo)
2544         sethi   %tldo_hix22(foo), %l3
2545         xor     %l3, %tldo_lox10(foo), %l4
2546         add     %o0, %l4, %l5, %tldo_add(foo)
2547         sethi   %tie_hi22(foo), %o3
2548         add     %o3, %tie_lo10(foo), %o3
2549         ld      [%l7 + %o3], %o2, %tie_ld(foo)
2550         add     %g7, %o2, %o4, %tie_add(foo)
2551         sethi   %tle_hix22(foo), %l1
2552         xor     %l1, %tle_lox10(foo), %o5
2553         ld      [%g7 + %o5], %o1'
2554         tls_first_major=2
2555         tls_first_minor=14
2556         tls_as_opt="-32 --fatal-warnings"
2557       fi
2558         ;;
2559 changequote([,])dnl
2560 esac
2561 set_have_as_tls=no
2562 if test "x$enable_tls" = xno ; then
2563   : # TLS explicitly disabled.
2564 elif test "x$enable_tls" = xyes ; then
2565   set_have_as_tls=yes # TLS explicitly enabled.
2566 elif test -z "$tls_first_major"; then
2567   : # If we don't have a check, assume no support.
2568 else
2569   gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
2570   [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
2571   [set_have_as_tls=yes])
2572 fi
2573 if test $set_have_as_tls = yes ; then
2574   AC_DEFINE(HAVE_AS_TLS, 1,
2575             [Define if your assembler supports thread-local storage.])
2576 fi
2577
2578 # Target-specific assembler checks.
2579
2580 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
2581 gcc_cv_ld_static_dynamic=no
2582 if test $in_tree_ld = yes ; then
2583   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
2584     gcc_cv_ld_static_dynamic=yes
2585   fi
2586 elif test x$gcc_cv_ld != x; then
2587         # Check if linker supports -Bstatic/-Bdynamic option
2588         if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
2589           && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
2590                 gcc_cv_ld_static_dynamic=yes
2591         fi
2592 fi
2593 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
2594         AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
2595 [Define if your linker supports -Bstatic/-Bdynamic option.])
2596 fi
2597 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
2598
2599 if test x"$demangler_in_ld" = xyes; then
2600   AC_MSG_CHECKING(linker --demangle support)
2601   gcc_cv_ld_demangle=no
2602   if test $in_tree_ld = yes; then
2603     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 \
2604       gcc_cv_ld_demangle=yes
2605     fi
2606   elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
2607     # Check if the GNU linker supports --demangle option
2608     if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
2609       gcc_cv_ld_demangle=yes
2610     fi
2611   fi
2612   if test x"$gcc_cv_ld_demangle" = xyes; then
2613     AC_DEFINE(HAVE_LD_DEMANGLE, 1,
2614 [Define if your linker supports --demangle option.])
2615   fi
2616   AC_MSG_RESULT($gcc_cv_ld_demangle)
2617 fi
2618
2619 case "$target" in
2620   # All TARGET_ABI_OSF targets.
2621   alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
2622     gcc_GAS_CHECK_FEATURE([explicit relocation support],
2623         gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
2624 [       .set nomacro
2625         .text
2626         extbl   $3, $2, $3      !lituse_bytoff!1
2627         ldq     $2, a($29)      !literal!1
2628         ldq     $4, b($29)      !literal!2
2629         ldq_u   $3, 0($2)       !lituse_base!1
2630         ldq     $27, f($29)     !literal!5
2631         jsr     $26, ($27), f   !lituse_jsr!5
2632         ldah    $29, 0($26)     !gpdisp!3
2633         lda     $0, c($29)      !gprel
2634         ldah    $1, d($29)      !gprelhigh
2635         lda     $1, d($1)       !gprellow
2636         lda     $29, 0($29)     !gpdisp!3],,
2637     [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
2638   [Define if your assembler supports explicit relocations.])])
2639     gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
2640         gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
2641 [       .set nomacro
2642         .text
2643         ldq     $27, a($29)     !literal!1
2644         jsr     $26, ($27), a   !lituse_jsrdirect!1],,
2645     [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
2646   [Define if your assembler supports the lituse_jsrdirect relocation.])])
2647     ;;
2648
2649   cris-*-*)
2650     gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
2651       gcc_cv_as_cris_no_mul_bug,[2,15,91],
2652       [-no-mul-bug-abort], [.text],,
2653       [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
2654                 [Define if your assembler supports the -no-mul-bug-abort option.])])
2655     ;;
2656
2657   sparc*-*-*)
2658     gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
2659       [.register %g2, #scratch],,
2660       [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
2661                 [Define if your assembler supports .register.])])
2662
2663     gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
2664       [-relax], [.text],,
2665       [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
2666                 [Define if your assembler supports -relax option.])])
2667
2668     gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
2669       gcc_cv_as_sparc_ua_pcrel,,
2670       [-K PIC],
2671 [.text
2672 foo:
2673         nop
2674 .data
2675 .align 4
2676 .byte 0
2677 .uaword %r_disp32(foo)],
2678       [if test x$gcc_cv_ld != x \
2679        && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
2680          gcc_cv_as_sparc_ua_pcrel=yes
2681        fi
2682        rm -f conftest],
2683       [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
2684                 [Define if your assembler and linker support unaligned PC relative relocs.])
2685
2686       gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
2687         gcc_cv_as_sparc_ua_pcrel_hidden,,
2688         [-K PIC],
2689 [.data
2690 .align 4
2691 .byte 0x31
2692 .uaword %r_disp32(foo)
2693 .byte 0x32, 0x33, 0x34
2694 .global foo
2695 .hidden foo
2696 foo:
2697 .skip 4],
2698         [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
2699          && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
2700          && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
2701             | grep ' 31000000 07323334' > /dev/null 2>&1; then
2702             if $gcc_cv_objdump -R conftest 2> /dev/null \
2703                | grep 'DISP32' > /dev/null 2>&1; then
2704                 :
2705             else
2706                 gcc_cv_as_sparc_ua_pcrel_hidden=yes
2707             fi
2708          fi
2709          rm -f conftest],
2710          [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
2711                    [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
2712     ]) # unaligned pcrel relocs
2713
2714     gcc_GAS_CHECK_FEATURE([offsetable %lo()],
2715       gcc_cv_as_sparc_offsetable_lo10,,
2716       [-xarch=v9],
2717 [.text
2718         or %g1, %lo(ab) + 12, %g1
2719         or %g1, %lo(ab + 12), %g1],
2720       [if test x$gcc_cv_objdump != x \
2721        && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
2722           | grep ' 82106000 82106000' > /dev/null 2>&1; then
2723          gcc_cv_as_sparc_offsetable_lo10=yes
2724        fi],
2725        [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
2726                  [Define if your assembler supports offsetable %lo().])])
2727     ;;
2728
2729 changequote(,)dnl
2730   i[34567]86-*-* | x86_64-*-*)
2731 changequote([,])dnl
2732     case $target_os in
2733       cygwin* | pe | mingw32*)
2734         # Used for DWARF 2 in PE
2735         gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
2736           gcc_cv_as_ix86_pe_secrel32,
2737           [2,15,91],,
2738 [.text
2739 foo:    nop
2740 .data
2741         .secrel32 foo],
2742           [if test x$gcc_cv_ld != x \
2743            && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
2744              gcc_cv_as_ix86_pe_secrel32=yes
2745            fi
2746            rm -f conftest],
2747           [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
2748             [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
2749         ;;
2750     esac
2751
2752     gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
2753        gcc_cv_as_ix86_filds_fists,
2754       [2,9,0],, [filds mem; fists mem],,
2755       [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1,
2756         [Define if your assembler uses the new HImode fild and fist notation.])])
2757
2758     gcc_GAS_CHECK_FEATURE([cmov syntax],
2759       gcc_cv_as_ix86_cmov_sun_syntax,,,
2760       [cmovl.l %edx, %eax],,
2761       [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
2762         [Define if your assembler supports the Sun syntax for cmov.])])
2763
2764     gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
2765       gcc_cv_as_ix86_ffreep,,,
2766       [ffreep %st(1)],,
2767       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
2768         [Define if your assembler supports the ffreep mnemonic.])])
2769
2770     gcc_GAS_CHECK_FEATURE([sahf mnemonic],
2771       gcc_cv_as_ix86_sahf,,,
2772       [sahf],,
2773       [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
2774         [Define if your assembler supports the sahf mnemonic.])])
2775
2776     gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
2777       gcc_cv_as_ix86_diff_sect_delta,,,
2778       [.section .rodata
2779 .L1:
2780         .long .L2-.L1
2781         .long .L3-.L1
2782         .text
2783 .L3:    nop
2784 .L2:    nop],,
2785       [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
2786         [Define if your assembler supports the subtraction of symbols in different sections.])])
2787
2788     # This one is used unconditionally by i386.[ch]; it is to be defined
2789     # to 1 if the feature is present, 0 otherwise.
2790     gcc_GAS_CHECK_FEATURE([GOTOFF in data],
2791         gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
2792 [       .text
2793 .L0:
2794         nop
2795         .data
2796         .long .L0@GOTOFF])
2797     AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
2798       [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
2799       [Define true if the assembler supports '.long foo@GOTOFF'.])
2800     ;;
2801
2802   ia64*-*-*)
2803     gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
2804         gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
2805 [       .text
2806         addl r15 = @ltoffx(x#), gp
2807         ;;
2808         ld8.mov r16 = [[r15]], x#],,
2809     [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
2810           [Define if your assembler supports ltoffx and ldxmov relocations.])])
2811
2812     ;;
2813
2814   powerpc*-*-*)
2815     case $target in
2816       *-*-aix*) conftest_s='    .machine "pwr5"
2817         .csect .text[[PR]]
2818         mfcr 3,128';;
2819       *-*-darwin*)
2820         gcc_GAS_CHECK_FEATURE([.machine directive support],
2821           gcc_cv_as_machine_directive,,,
2822           [     .machine ppc7400])
2823         if test x$gcc_cv_as_machine_directive != xyes; then
2824           echo "*** This target requires an assembler supporting \".machine\"" >&2
2825           echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
2826           test x$build = x$target && exit 1
2827         fi
2828         conftest_s='    .text
2829         mfcr r3,128';;
2830       *) conftest_s='   .machine power4
2831         .text
2832         mfcr 3,128';;
2833     esac
2834
2835     gcc_GAS_CHECK_FEATURE([mfcr field support],
2836       gcc_cv_as_powerpc_mfcrf, [2,14,0],,
2837       [$conftest_s],,
2838       [AC_DEFINE(HAVE_AS_MFCRF, 1,
2839           [Define if your assembler supports mfcr field.])])
2840
2841     case $target in
2842       *-*-aix*) conftest_s='    .machine "pwr5"
2843         .csect .text[[PR]]
2844         popcntb 3,3';;
2845       *) conftest_s='   .machine power5
2846         .text
2847         popcntb 3,3';;
2848     esac
2849
2850     gcc_GAS_CHECK_FEATURE([popcntb support],
2851       gcc_cv_as_powerpc_popcntb, [2,17,0],,
2852       [$conftest_s],,
2853       [AC_DEFINE(HAVE_AS_POPCNTB, 1,
2854           [Define if your assembler supports popcntb field.])])
2855
2856     case $target in
2857       *-*-aix*) conftest_s='    .machine "pwr5x"
2858         .csect .text[[PR]]
2859         frin 1,1';;
2860       *) conftest_s='   .machine power5
2861         .text
2862         frin 1,1';;
2863     esac
2864
2865     gcc_GAS_CHECK_FEATURE([fp round support],
2866       gcc_cv_as_powerpc_fprnd, [2,17,0],,
2867       [$conftest_s],,
2868       [AC_DEFINE(HAVE_AS_FPRND, 1,
2869           [Define if your assembler supports fprnd.])])
2870
2871     case $target in
2872       *-*-aix*) conftest_s='    .machine "pwr6"
2873         .csect .text[[PR]]
2874         mffgpr 1,3';;
2875       *) conftest_s='   .machine power6
2876         .text
2877         mffgpr 1,3';;
2878     esac
2879
2880     gcc_GAS_CHECK_FEATURE([move fp gpr support],
2881       gcc_cv_as_powerpc_mfpgpr, [9,99,0],,
2882       [$conftest_s],,
2883       [AC_DEFINE(HAVE_AS_MFPGPR, 1,
2884           [Define if your assembler supports mffgpr and mftgpr.])])
2885
2886     case $target in
2887       *-*-aix*) conftest_s='    .csect .text[[PR]]
2888 LCF..0:
2889         addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
2890       *-*-darwin*)
2891         conftest_s='    .text
2892 LCF0:
2893         addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
2894       *) conftest_s='   .text
2895 .LCF0:
2896         addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
2897     esac
2898
2899     gcc_GAS_CHECK_FEATURE([rel16 relocs],
2900       gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
2901       [$conftest_s],,
2902       [AC_DEFINE(HAVE_AS_REL16, 1,
2903           [Define if your assembler supports R_PPC_REL16 relocs.])])
2904
2905     case $target in
2906       *-*-aix*) conftest_s='    .machine "pwr6"
2907         .csect .text[[PR]]
2908         cmpb 3,4,5';;
2909       *) conftest_s='   .machine power6
2910         .text
2911         cmpb 3,4,5';;
2912     esac
2913
2914     gcc_GAS_CHECK_FEATURE([compare bytes support],
2915       gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
2916       [$conftest_s],,
2917       [AC_DEFINE(HAVE_AS_CMPB, 1,
2918           [Define if your assembler supports cmpb.])])
2919
2920     case $target in
2921       *-*-aix*) conftest_s='    .machine "pwr6"
2922         .csect .text[[PR]]
2923         dadd 1,2,3';;
2924       *) conftest_s='   .machine power6
2925         .text
2926         dadd 1,2,3';;
2927     esac
2928
2929     gcc_GAS_CHECK_FEATURE([decimal float support],
2930       gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
2931       [$conftest_s],,
2932       [AC_DEFINE(HAVE_AS_DFP, 1,
2933           [Define if your assembler supports DFP instructions.])])
2934
2935     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
2936       gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
2937       [.gnu_attribute 4,1],,
2938       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
2939           [Define if your assembler supports .gnu_attribute.])])
2940     ;;
2941
2942   mips*-*-*)
2943     gcc_GAS_CHECK_FEATURE([explicit relocation support],
2944       gcc_cv_as_mips_explicit_relocs, [2,14,0],,
2945 [       lw $4,%gp_rel(foo)($4)],,
2946       [if test x$target_cpu_default = x
2947        then target_cpu_default=MASK_EXPLICIT_RELOCS
2948        else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
2949        fi])
2950     gcc_GAS_CHECK_FEATURE([-mno-shared support],
2951       gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
2952       [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
2953                  [Define if the assembler understands -mno-shared.])])
2954
2955     gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
2956       gcc_cv_as_mips_gnu_attribute, [2,18,0],,
2957       [.gnu_attribute 4,1],,
2958       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
2959           [Define if your assembler supports .gnu_attribute.])])
2960
2961     gcc_GAS_CHECK_FEATURE([.dtprelword support],
2962       gcc_cv_as_mips_dtprelword, [2,18,0],,
2963       [.section .tdata,"awT",@progbits
2964 x:
2965         .word 2
2966         .text
2967         .dtprelword x+0x8000],,
2968       [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
2969           [Define if your assembler supports .dtprelword.])])
2970     ;;
2971 esac
2972
2973 # Mips and HP-UX need the GNU assembler.
2974 # Linux on IA64 might be able to use the Intel assembler.
2975
2976 case "$target" in
2977   mips*-*-* | *-*-hpux* )
2978     if test x$gas_flag = xyes \
2979        || test x"$host" != x"$build" \
2980        || test ! -x "$gcc_cv_as" \
2981        || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
2982       :
2983     else
2984       echo "*** This configuration requires the GNU assembler" >&2
2985       exit 1
2986     fi
2987     ;;
2988 esac
2989
2990 # ??? Not all targets support dwarf2 debug_line, even within a version
2991 # of gas.  Moreover, we need to emit a valid instruction to trigger any
2992 # info to the output file.  So, as supported targets are added to gas 2.11,
2993 # add some instruction here to (also) show we expect this might work.
2994 # ??? Once 2.11 is released, probably need to add first known working
2995 # version to the per-target configury.
2996 case "$target" in
2997   i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
2998   | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
2999   | xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* | spu-*-*)
3000     insn="nop"
3001     ;;
3002   ia64*-*-* | s390*-*-*)
3003     insn="nop 0"
3004     ;;
3005   mmix-*-*)
3006     insn="swym 0"
3007     ;;
3008 esac
3009 if test x"$insn" != x; then
3010  conftest_s="\
3011         .file 1 \"conftest.s\"
3012         .loc 1 3 0
3013         $insn"
3014  gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
3015   gcc_cv_as_dwarf2_debug_line,
3016   [elf,2,11,0],, [$conftest_s],
3017   [if test x$gcc_cv_objdump != x \
3018    && $gcc_cv_objdump -h conftest.o 2> /dev/null \
3019       | grep debug_line > /dev/null 2>&1; then
3020      gcc_cv_as_dwarf2_debug_line=yes
3021    fi])
3022
3023 # The .debug_line file table must be in the exact order that
3024 # we specified the files, since these indices are also used
3025 # by DW_AT_decl_file.  Approximate this test by testing if
3026 # the assembler bitches if the same index is assigned twice.
3027  gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
3028   gcc_cv_as_dwarf2_file_buggy,,,
3029 [       .file 1 "foo.s"
3030         .file 1 "bar.s"])
3031
3032  if test $gcc_cv_as_dwarf2_debug_line = yes \
3033  && test $gcc_cv_as_dwarf2_file_buggy = no; then
3034         AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
3035   [Define if your assembler supports dwarf2 .file/.loc directives,
3036    and preserves file table indices exactly as given.])
3037  fi
3038
3039  gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
3040   gcc_cv_as_gdwarf2_flag,
3041   [elf,2,11,0], [--gdwarf2], [$insn],,
3042   [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
3043 [Define if your assembler supports the --gdwarf2 option.])])
3044
3045  gcc_GAS_CHECK_FEATURE([--gstabs option],
3046   gcc_cv_as_gstabs_flag,
3047   [elf,2,11,0], [--gstabs], [$insn],
3048   [# The native Solaris 9/Intel assembler doesn't understand --gstabs
3049    # and warns about it, but still exits successfully.  So check for
3050    # this.
3051    if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
3052    then :
3053    else gcc_cv_as_gstabs_flag=yes
3054    fi],
3055   [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
3056 [Define if your assembler supports the --gstabs option.])])
3057 fi
3058
3059 AC_CACHE_CHECK([assembler for tolerance to line number 0],
3060  [gcc_cv_as_line_zero],
3061  [gcc_cv_as_line_zero=no
3062   if test $in_tree_gas = yes; then
3063     gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
3064   elif test "x$gcc_cv_as" != x; then
3065     { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
3066     if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
3067        test "x`cat conftest.out`" = x
3068     then
3069       gcc_cv_as_line_zero=yes
3070     else
3071       echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
3072       cat conftest.s >&AS_MESSAGE_LOG_FD
3073       echo "configure: error output was" >&AS_MESSAGE_LOG_FD
3074       cat conftest.out >&AS_MESSAGE_LOG_FD
3075     fi
3076     rm -f conftest.o conftest.s conftest.out
3077   fi])
3078 if test "x$gcc_cv_as_line_zero" = xyes; then
3079   AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
3080 [Define if the assembler won't complain about a line such as # 0 "" 2.])
3081 fi
3082
3083 AC_MSG_CHECKING(linker read-only and read-write section mixing)
3084 gcc_cv_ld_ro_rw_mix=unknown
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 \
3087      && test $in_tree_ld_is_elf = yes; then
3088     gcc_cv_ld_ro_rw_mix=read-write
3089   fi
3090 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3091   echo '.section myfoosect, "a"' > conftest1.s
3092   echo '.section myfoosect, "aw"' > conftest2.s
3093   echo '.byte 1' >> conftest2.s
3094   echo '.section myfoosect, "a"' > conftest3.s
3095   echo '.byte 0' >> conftest3.s
3096   if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
3097      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
3098      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
3099      && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
3100         conftest2.o conftest3.o > /dev/null 2>&1; then
3101     gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
3102                          | sed -e '/myfoosect/!d' -e N`
3103     if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
3104       if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
3105         gcc_cv_ld_ro_rw_mix=read-only
3106       else
3107         gcc_cv_ld_ro_rw_mix=read-write
3108       fi
3109     fi
3110   fi
3111 changequote(,)dnl
3112   rm -f conftest.* conftest[123].*
3113 changequote([,])dnl
3114 fi
3115 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
3116         AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
3117   [Define if your linker links a mix of read-only
3118    and read-write sections into a read-write section.])
3119 fi
3120 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
3121
3122 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
3123 gcc_cv_ld_eh_frame_hdr=no
3124 if test $in_tree_ld = yes ; then
3125   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 \
3126      && test $in_tree_ld_is_elf = yes; then
3127     gcc_cv_ld_eh_frame_hdr=yes
3128   fi
3129 elif test x$gcc_cv_ld != x; then
3130         # Check if linker supports --eh-frame-hdr option
3131         if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
3132                 gcc_cv_ld_eh_frame_hdr=yes
3133         fi
3134 fi
3135 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
3136 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
3137         AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
3138 [Define if your linker supports --eh-frame-hdr option.])
3139 fi
3140 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
3141
3142 AC_MSG_CHECKING(linker position independent executable support)
3143 gcc_cv_ld_pie=no
3144 if test $in_tree_ld = yes ; then
3145   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 \
3146      && test $in_tree_ld_is_elf = yes; then
3147     gcc_cv_ld_pie=yes
3148   fi
3149 elif test x$gcc_cv_ld != x; then
3150         # Check if linker supports -pie option
3151         if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
3152                 gcc_cv_ld_pie=yes
3153         fi
3154 fi
3155 if test x"$gcc_cv_ld_pie" = xyes; then
3156         AC_DEFINE(HAVE_LD_PIE, 1,
3157 [Define if your linker supports -pie option.])
3158 fi
3159 AC_MSG_RESULT($gcc_cv_ld_pie)
3160
3161 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
3162 gcc_cv_ld_eh_gc_sections=no
3163 if test $in_tree_ld = yes ; then
3164   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 \
3165      && test $in_tree_ld_is_elf = yes; then
3166     gcc_cv_ld_eh_gc_sections=yes
3167   fi
3168 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
3169   cat > conftest.s <<EOF
3170         .section        .text
3171 .globl _start
3172         .type _start, @function
3173 _start:
3174         .long foo
3175         .size _start, .-_start
3176         .section        .text.foo,"ax",@progbits
3177         .type foo, @function
3178 foo:
3179         .long 0
3180         .size foo, .-foo
3181         .section        .gcc_except_table.foo,"a",@progbits
3182 .L0:
3183         .long 0
3184         .section        .eh_frame,"a",@progbits
3185         .long .L0
3186 EOF
3187   if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3188     if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3189          | grep "gc-sections option ignored" > /dev/null; then
3190       gcc_cv_ld_eh_gc_sections=no
3191     elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3192       gcc_cv_ld_eh_gc_sections=yes
3193       # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
3194       if test x$gcc_cv_as_comdat_group != xyes; then
3195         gcc_cv_ld_eh_gc_sections=no
3196         cat > conftest.s <<EOF
3197         .section        .text
3198 .globl _start
3199         .type _start, @function
3200 _start:
3201         .long foo
3202         .size _start, .-_start
3203         .section        .gnu.linkonce.t.foo,"ax",@progbits
3204         .type foo, @function
3205 foo:
3206         .long 0
3207         .size foo, .-foo
3208         .section        .gcc_except_table.foo,"a",@progbits
3209 .L0:
3210         .long 0
3211         .section        .eh_frame,"a",@progbits
3212         .long .L0
3213 EOF
3214         if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
3215           if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
3216                | grep "gc-sections option ignored" > /dev/null; then
3217             gcc_cv_ld_eh_gc_sections=no
3218           elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
3219             gcc_cv_ld_eh_gc_sections=yes
3220           fi
3221         fi
3222       fi
3223     fi
3224   fi
3225   rm -f conftest.s conftest.o conftest
3226 fi
3227 case "$target" in
3228   hppa*-*-linux*)
3229     # ??? This apparently exposes a binutils bug with PC-relative relocations.
3230     gcc_cv_ld_eh_gc_sections=no
3231     ;;
3232 esac
3233 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
3234         AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
3235   [Define if your linker supports garbage collection of
3236    sections in presence of EH frames.])
3237 fi
3238 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
3239
3240 # --------
3241 # UNSORTED
3242 # --------
3243
3244 AC_CACHE_CHECK(linker --as-needed support,
3245 gcc_cv_ld_as_needed,
3246 [gcc_cv_ld_as_needed=no
3247 if test $in_tree_ld = yes ; then
3248   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 \
3249      && test $in_tree_ld_is_elf = yes; then
3250     gcc_cv_ld_as_needed=yes
3251   fi
3252 elif test x$gcc_cv_ld != x; then
3253         # Check if linker supports --as-needed and --no-as-needed options
3254         if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
3255                 gcc_cv_ld_as_needed=yes
3256         fi
3257 fi
3258 ])
3259 if test x"$gcc_cv_ld_as_needed" = xyes; then
3260         AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
3261 [Define if your linker supports --as-needed and --no-as-needed options.])
3262 fi
3263
3264 case "$target:$tm_file" in
3265   powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
3266     AC_CACHE_CHECK(linker support for omitting dot symbols,
3267     gcc_cv_ld_no_dot_syms,
3268     [gcc_cv_ld_no_dot_syms=no
3269     if test $in_tree_ld = yes ; then
3270       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
3271         gcc_cv_ld_no_dot_syms=yes
3272       fi
3273     elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
3274       cat > conftest1.s <<EOF
3275         .text
3276         bl .foo
3277 EOF
3278       cat > conftest2.s <<EOF
3279         .section ".opd","aw"
3280         .align 3
3281         .globl foo
3282         .type foo,@function
3283 foo:
3284         .quad .LEfoo,.TOC.@tocbase,0
3285         .text
3286 .LEfoo:
3287         blr
3288         .size foo,.-.LEfoo
3289 EOF
3290       if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
3291          && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
3292          && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
3293         gcc_cv_ld_no_dot_syms=yes
3294       fi
3295       rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
3296     fi
3297     ])
3298     if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
3299       AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
3300     [Define if your PowerPC64 linker only needs function descriptor syms.])
3301     fi
3302     ;;
3303 esac
3304
3305 AC_CACHE_CHECK(linker --sysroot support,
3306   gcc_cv_ld_sysroot,
3307   [gcc_cv_ld_sysroot=no
3308   if test $in_tree_ld = yes ; then
3309       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
3310         gcc_cv_ld_sysroot=yes
3311       fi
3312   elif test x$gcc_cv_ld != x; then 
3313     if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
3314       gcc_cv_ld_sysroot=yes
3315     fi
3316   fi])
3317 if test x"$gcc_cv_ld_sysroot" = xyes; then
3318   AC_DEFINE(HAVE_LD_SYSROOT, 1,
3319   [Define if your linker supports --sysroot.])
3320 fi        
3321
3322 if test x$with_sysroot = x && test x$host = x$target \
3323    && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
3324    && test "$prefix" != "NONE"; then
3325   AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
3326 [Define to PREFIX/include if cpp should also search that directory.])
3327 fi
3328
3329 # Test for stack protector support in target C library.
3330 AC_CACHE_CHECK(__stack_chk_fail in target C library,
3331       gcc_cv_libc_provides_ssp,
3332       [gcc_cv_libc_provides_ssp=no
3333     case "$target" in
3334        *-*-linux*)
3335       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3336         if test "x$with_sysroot" = x; then
3337           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3338         elif test "x$with_build_sysroot" != "x"; then
3339           glibc_header_dir="${with_build_sysroot}/usr/include"
3340         elif test "x$with_sysroot" = xyes; then
3341           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3342         else
3343           glibc_header_dir="${with_sysroot}/usr/include"
3344         fi
3345       else
3346         glibc_header_dir=/usr/include
3347       fi
3348       # glibc 2.4 and later provides __stack_chk_fail and
3349       # either __stack_chk_guard, or TLS access to stack guard canary.
3350       if test -f $glibc_header_dir/features.h \
3351          && $EGREP '^@<:@       @:>@*#[         ]*define[       ]+__GNU_LIBRARY__[      ]+([1-9][0-9]|[6-9])' \
3352             $glibc_header_dir/features.h > /dev/null; then
3353         if $EGREP '^@<:@        @:>@*#[         ]*define[       ]+__GLIBC__[    ]+([1-9][0-9]|[3-9])' \
3354            $glibc_header_dir/features.h > /dev/null; then
3355           gcc_cv_libc_provides_ssp=yes
3356         elif $EGREP '^@<:@      @:>@*#[         ]*define[       ]+__GLIBC__[    ]+2' \
3357              $glibc_header_dir/features.h > /dev/null \
3358              && $EGREP '^@<:@   @:>@*#[         ]*define[       ]+__GLIBC_MINOR__[      ]+([1-9][0-9]|[4-9])' \
3359              $glibc_header_dir/features.h > /dev/null; then
3360           gcc_cv_libc_provides_ssp=yes
3361         fi
3362         fi
3363         ;;
3364        *-*-darwin*)
3365          AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
3366            [echo "no __stack_chk_fail on this target"])
3367         ;;
3368   *) gcc_cv_libc_provides_ssp=no ;;
3369     esac])
3370
3371 if test x$gcc_cv_libc_provides_ssp = xyes; then
3372   AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
3373             [Define if your target C library provides stack protector support])
3374 fi
3375
3376 # Check if TFmode long double should be used by default or not.
3377 # Some glibc targets used DFmode long double, but with glibc 2.4
3378 # and later they can use TFmode.
3379 case "$target" in
3380   powerpc*-*-linux* | \
3381   powerpc*-*-gnu* | \
3382   sparc*-*-linux* | \
3383   s390*-*-linux* | \
3384   alpha*-*-linux*)
3385     AC_ARG_WITH(long-double-128,
3386 [  --with-long-double-128  Use 128-bit long double by default.],
3387       gcc_cv_target_ldbl128="$with_long_double_128",
3388       [gcc_cv_target_ldbl128=no
3389       if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
3390         if test "x$with_sysroot" = x; then
3391           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
3392         elif test "x$with_build_sysroot" != "x"; then
3393           glibc_header_dir="${with_build_sysroot}/usr/include"
3394         elif test "x$with_sysroot" = xyes; then
3395           glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
3396         else
3397           glibc_header_dir="${with_sysroot}/usr/include"
3398         fi
3399       else
3400         glibc_header_dir=/usr/include
3401       fi
3402 changequote(,)dnl
3403       grep '^[  ]*#[    ]*define[       ][      ]*__LONG_DOUBLE_MATH_OPTIONAL' \
3404         $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
3405       && gcc_cv_target_ldbl128=yes
3406 changequote([,])dnl
3407       ])
3408     ;;
3409 esac
3410 if test x$gcc_cv_target_ldbl128 = xyes; then
3411   AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
3412             [Define if TFmode long double should be the default])
3413 fi
3414
3415 # Find out what GC implementation we want, or may, use.
3416 AC_ARG_WITH(gc,
3417 [  --with-gc={page,zone}   choose the garbage collection mechanism to use
3418                           with the compiler],
3419 [case "$withval" in
3420   page)
3421     GGC=ggc-$withval
3422     ;;
3423   zone)
3424     GGC=ggc-$withval
3425     AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
3426     ;;
3427   *)
3428     AC_MSG_ERROR([$withval is an invalid option to --with-gc])
3429     ;;
3430 esac],
3431 [GGC=ggc-page])
3432 AC_SUBST(GGC)
3433 echo "Using $GGC for garbage collection."
3434
3435 # Use the system's zlib library.
3436 zlibdir=-L../zlib
3437 zlibinc="-I\$(srcdir)/../zlib"
3438 AC_ARG_WITH(system-zlib,
3439 [  --with-system-zlib      use installed libz],
3440 zlibdir=
3441 zlibinc=
3442 )
3443 AC_SUBST(zlibdir)
3444 AC_SUBST(zlibinc)
3445
3446 dnl Very limited version of automake's enable-maintainer-mode
3447
3448 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
3449   dnl maintainer-mode is disabled by default
3450   AC_ARG_ENABLE(maintainer-mode,
3451 [  --enable-maintainer-mode
3452                           enable make rules and dependencies not useful
3453                           (and sometimes confusing) to the casual installer],
3454       maintainer_mode=$enableval,
3455       maintainer_mode=no)
3456
3457 AC_MSG_RESULT($maintainer_mode)
3458
3459 if test "$maintainer_mode" = "yes"; then
3460   MAINT=''
3461 else
3462   MAINT='#'
3463 fi
3464 AC_SUBST(MAINT)dnl
3465
3466 # --------------
3467 # Language hooks
3468 # --------------
3469
3470 # Make empty files to contain the specs and options for each language.
3471 # Then add #include lines to for a compiler that has specs and/or options.
3472
3473 subdirs=
3474 lang_opt_files=
3475 lang_specs_files=
3476 lang_tree_files=
3477 # These (without "all_") are set in each config-lang.in.
3478 # `language' must be a single word so is spelled singularly.
3479 all_languages=
3480 all_compilers=
3481 all_outputs='Makefile gccbug libada-mk'
3482 # List of language makefile fragments.
3483 all_lang_makefrags=
3484 # List of language subdirectory makefiles.  Deprecated.
3485 all_lang_makefiles=
3486 # Additional files for gengtype
3487 all_gtfiles="$target_gtfiles"
3488
3489 # These are the languages that are set in --enable-languages,
3490 # and are available in the GCC tree.
3491 all_selected_languages=
3492
3493 # Add the language fragments.
3494 # Languages are added via two mechanisms.  Some information must be
3495 # recorded in makefile variables, these are defined in config-lang.in.
3496 # We accumulate them and plug them into the main Makefile.
3497 # The other mechanism is a set of hooks for each of the main targets
3498 # like `clean', `install', etc.
3499
3500 language_hooks="Make-hooks"
3501
3502 for lang in ${srcdir}/*/config-lang.in
3503 do
3504 changequote(,)dnl
3505         test "$lang" = "${srcdir}/*/config-lang.in" && continue
3506
3507         lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^   ]*\).*$,\1,p' $lang`
3508         if test "x$lang_alias" = x
3509         then
3510               echo "$lang doesn't set \$language." 1>&2
3511               exit 1
3512         fi
3513         subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
3514         subdirs="$subdirs $subdir"
3515         case ",$enable_languages," in
3516         *,$lang_alias,*)
3517             all_selected_languages="$all_selected_languages $lang_alias"
3518             if test -f $srcdir/$subdir/lang-specs.h; then
3519                 lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
3520             fi
3521             ;;
3522         esac
3523 changequote([,])dnl
3524
3525         language=
3526         boot_language=
3527         compilers=
3528         outputs=
3529         gtfiles=
3530         subdir_requires=
3531         . ${srcdir}/$subdir/config-lang.in
3532         if test "x$language" = x
3533         then
3534                 echo "${srcdir}/$subdir/config-lang.in doesn't set \$language." 1>&2
3535                 exit 1
3536         fi
3537
3538         ok=:
3539         case ",$enable_languages," in
3540                 *,$lang_alias,*) ;;
3541                 *)
3542                         for i in $subdir_requires; do
3543                                 test -f "${srcdir}/$i/config-lang.in" && continue
3544                                 ok=false
3545                                 break
3546                         done
3547                 ;;
3548         esac
3549         $ok || continue
3550
3551         all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$subdir/Make-lang.in"
3552         if test -f $srcdir/$subdir/lang.opt; then
3553             lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"
3554         fi
3555         if test -f $srcdir/$subdir/$subdir-tree.def; then
3556             lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
3557         fi
3558         if test -f ${srcdir}/$subdir/Makefile.in
3559                 then all_lang_makefiles="$subdir/Makefile"
3560         fi
3561         all_languages="$all_languages $language"
3562         all_compilers="$all_compilers $compilers"
3563         all_outputs="$all_outputs $outputs"
3564         all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
3565 done
3566
3567 # Pick up gtfiles for c
3568 gtfiles=
3569 . ${srcdir}/c-config-lang.in
3570 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
3571
3572 check_languages=
3573 for language in $all_selected_languages
3574 do
3575         check_languages="$check_languages check-$language"
3576 done
3577
3578 # We link each language in with a set of hooks, reached indirectly via
3579 # lang.${target}.  Only do so for selected languages.
3580
3581 rm -f Make-hooks
3582 touch Make-hooks
3583 target_list="all.cross start.encap rest.encap tags \
3584         install-common install-man install-info install-pdf dvi pdf \
3585         html uninstall info man srcextra srcman srcinfo \
3586         mostlyclean clean distclean maintainer-clean"
3587
3588 for t in $target_list
3589 do
3590         x=
3591         for lang in $all_selected_languages
3592         do
3593                 x="$x $lang.$t"
3594         done
3595         echo "lang.$t: $x" >> Make-hooks
3596 done
3597
3598 # --------
3599 # UNSORTED
3600 # --------
3601
3602 # Create .gdbinit.
3603
3604 echo "dir ." > .gdbinit
3605 echo "dir ${srcdir}" >> .gdbinit
3606 if test x$gdb_needs_out_file_path = xyes
3607 then
3608         echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
3609 fi
3610 if test "x$subdirs" != x; then
3611         for s in $subdirs
3612         do
3613                 echo "dir ${srcdir}/$s" >> .gdbinit
3614         done
3615 fi
3616 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
3617
3618 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
3619 AC_SUBST(gcc_tooldir)
3620 AC_SUBST(dollar)
3621
3622 # Find a directory in which to install a shared libgcc.
3623
3624 AC_ARG_ENABLE(version-specific-runtime-libs,
3625 [  --enable-version-specific-runtime-libs
3626                           specify that runtime libraries should be
3627                           installed in a compiler-specific directory])
3628
3629 AC_ARG_WITH(slibdir,
3630 [  --with-slibdir=DIR      shared libraries in DIR [[LIBDIR]]],
3631 slibdir="$with_slibdir",
3632 if test "${enable_version_specific_runtime_libs+set}" = set; then
3633   slibdir='$(libsubdir)'
3634 elif test "$host" != "$target"; then
3635   slibdir='$(build_tooldir)/lib'
3636 else
3637   slibdir='$(libdir)'
3638 fi)
3639 AC_SUBST(slibdir)
3640
3641 objdir=`${PWDCMD-pwd}`
3642 AC_SUBST(objdir)
3643
3644 AC_ARG_WITH(datarootdir,
3645 [  --with-datarootdir=DIR  Use DIR as the data root [[PREFIX/share]]],
3646 datarootdir="\${prefix}/$with_datarootdir",
3647 datarootdir='$(prefix)/share')
3648 AC_SUBST(datarootdir)
3649
3650 AC_ARG_WITH(docdir,
3651 [  --with-docdir=DIR       Install documentation in DIR [[DATAROOTDIR]]],
3652 docdir="\${prefix}/$with_docdir",
3653 docdir='$(datarootdir)')
3654 AC_SUBST(docdir)
3655
3656 AC_ARG_WITH(htmldir,
3657 [  --with-htmldir=DIR      html documentation in in DIR [[DOCDIR]]],
3658 htmldir="\${prefix}/$with_htmldir",
3659 htmldir='$(docdir)')
3660 AC_SUBST(htmldir)
3661
3662 # Substitute configuration variables
3663 AC_SUBST(subdirs)
3664 AC_SUBST(srcdir)
3665 AC_SUBST(all_compilers)
3666 AC_SUBST(all_gtfiles)
3667 AC_SUBST(all_lang_makefrags)
3668 AC_SUBST(all_lang_makefiles)
3669 AC_SUBST(all_languages)
3670 AC_SUBST(all_selected_languages)
3671 AC_SUBST(build_exeext)
3672 AC_SUBST(build_install_headers_dir)
3673 AC_SUBST(build_xm_file_list)
3674 AC_SUBST(build_xm_include_list)
3675 AC_SUBST(build_xm_defines)
3676 AC_SUBST(check_languages)
3677 AC_SUBST(cpp_install_dir)
3678 AC_SUBST(xmake_file)
3679 AC_SUBST(tmake_file)
3680 AC_SUBST(extra_gcc_objs)
3681 AC_SUBST(extra_headers_list)
3682 AC_SUBST(extra_objs)
3683 AC_SUBST(extra_parts)
3684 AC_SUBST(extra_passes)
3685 AC_SUBST(extra_programs)
3686 AC_SUBST(float_h_file)
3687 AC_SUBST(gcc_config_arguments)
3688 AC_SUBST(gcc_gxx_include_dir)
3689 AC_SUBST(host_exeext)
3690 AC_SUBST(host_xm_file_list)
3691 AC_SUBST(host_xm_include_list)
3692 AC_SUBST(host_xm_defines)
3693 AC_SUBST(out_host_hook_obj)
3694 AC_SUBST(install)
3695 AC_SUBST(lang_opt_files)
3696 AC_SUBST(lang_specs_files)
3697 AC_SUBST(lang_tree_files)
3698 AC_SUBST(local_prefix)
3699 AC_SUBST(md_file)
3700 AC_SUBST(objc_boehm_gc)
3701 AC_SUBST(out_file)
3702 AC_SUBST(out_object_file)
3703 AC_SUBST(thread_file)
3704 AC_SUBST(tm_file_list)
3705 AC_SUBST(tm_include_list)
3706 AC_SUBST(tm_defines)
3707 AC_SUBST(tm_p_file_list)
3708 AC_SUBST(tm_p_include_list)
3709 AC_SUBST(xm_file_list)
3710 AC_SUBST(xm_include_list)
3711 AC_SUBST(xm_defines)
3712 AC_SUBST(c_target_objs)
3713 AC_SUBST(cxx_target_objs)
3714 AC_SUBST(target_cpu_default)
3715
3716 AC_SUBST_FILE(language_hooks)
3717
3718 # Echo link setup.
3719 if test x${build} = x${host} ; then
3720   if test x${host} = x${target} ; then
3721     echo "Links are now set up to build a native compiler for ${target}." 1>&2
3722   else
3723     echo "Links are now set up to build a cross-compiler" 1>&2
3724     echo " from ${host} to ${target}." 1>&2
3725   fi
3726 else
3727   if test x${host} = x${target} ; then
3728     echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
3729     echo " for ${target}." 1>&2
3730   else
3731     echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
3732     echo " from ${host} to ${target}." 1>&2
3733   fi
3734 fi
3735
3736 AC_ARG_VAR(GMPLIBS,[How to link GMP])
3737 AC_ARG_VAR(GMPINC,[How to find GMP include files])
3738
3739 # Configure the subdirectories
3740 # AC_CONFIG_SUBDIRS($subdirs)
3741
3742 # Create the Makefile
3743 # and configure language subdirectories
3744 AC_CONFIG_FILES($all_outputs)
3745
3746 AC_CONFIG_COMMANDS([default],
3747 [
3748 case ${CONFIG_HEADERS} in
3749   *auto-host.h:config.in*)
3750   echo > cstamp-h ;;
3751 esac
3752 # Make sure all the subdirs exist.
3753 for d in $subdirs doc build
3754 do
3755     test -d $d || mkdir $d
3756 done
3757 ], 
3758 [subdirs='$subdirs'])
3759 AC_OUTPUT