OSDN Git Service

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