OSDN Git Service

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