OSDN Git Service

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