Remove extra_passes
[gcc.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 gnu_ld=`if test x"$gnu_ld_flag" = x"yes"; then echo 1; else echo 0; fi`
217 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld, [Define if using GNU ld.])
218
219 AC_MSG_CHECKING([whether a default linker was specified])
220 if test x"${DEFAULT_LINKER+set}" = x"set"; then
221 if test x"$gnu_ld_flag" = x"no"; then
222 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
223 else
224 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
225 fi
226 else
227 AC_MSG_RESULT(no)
228 fi
229
230 # With demangler in GNU ld
231 AC_ARG_WITH(demangler-in-ld,
232 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
233 demangler_in_ld="$with_demangler_in_ld",
234 demangler_in_ld=yes)
235
236 # ----------------------
237 # Find default assembler
238 # ----------------------
239
240 # With GNU as
241 AC_ARG_WITH(gnu-as,
242 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
243 gas_flag="$with_gnu_as",
244 gas_flag=no)
245
246 AC_ARG_WITH(as,
247 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
248 DEFAULT_ASSEMBLER="$with_as")
249 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
250 if test ! -x "$DEFAULT_ASSEMBLER"; then
251 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
252 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
253 gas_flag=yes
254 fi
255 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
256 [Define to enable the use of a default assembler.])
257 fi
258
259 gnu_as=`if test x"$gas_flag" = x"yes"; then echo 1; else echo 0; fi`
260 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as, [Define if using GNU as.])
261
262 AC_MSG_CHECKING([whether a default assembler was specified])
263 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
264 if test x"$gas_flag" = x"no"; then
265 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
266 else
267 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
268 fi
269 else
270 AC_MSG_RESULT(no)
271 fi
272
273 # ---------------
274 # Find C compiler
275 # ---------------
276
277 # If a non-executable a.out is present (e.g. created by GNU as above even if
278 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
279 # file, even when creating an executable, so an execution test fails.
280 # Remove possible default executable files to avoid this.
281 #
282 # FIXME: This really belongs into AC_PROG_CC and can be removed once
283 # Autoconf includes it.
284 rm -f a.out a.exe b.out
285
286 # Find the native compiler
287 AC_PROG_CC
288 AM_PROG_CC_C_O
289 AC_PROG_CXX
290 ACX_PROG_GNAT([-I"$srcdir"/ada])
291
292 # autoconf is lame and doesn't give us any substitution variable for this.
293 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
294 NO_MINUS_C_MINUS_O=yes
295 else
296 OUTPUT_OPTION='-o $@'
297 fi
298 AC_SUBST(NO_MINUS_C_MINUS_O)
299 AC_SUBST(OUTPUT_OPTION)
300
301 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
302 # optimizations to be activated explicitly by the toplevel.
303 case "$CC" in
304 */prev-gcc/xgcc*) ;;
305 *) CFLAGS=`echo $CFLAGS | sed "s/-O[[s0-9]]* *//" ` ;;
306 esac
307 AC_SUBST(CFLAGS)
308
309 # Determine PICFLAG for target gnatlib.
310 GCC_PICFLAG_FOR_TARGET
311 AC_SUBST(PICFLAG_FOR_TARGET)
312
313 # -------------------------
314 # Check C compiler features
315 # -------------------------
316
317 AC_USE_SYSTEM_EXTENSIONS
318 AC_PROG_CPP
319 AC_C_INLINE
320
321 AC_SYS_LARGEFILE
322
323 # sizeof(char) is 1 by definition.
324 AC_CHECK_SIZEOF(void *)
325 AC_CHECK_SIZEOF(short)
326 AC_CHECK_SIZEOF(int)
327 AC_CHECK_SIZEOF(long)
328 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
329 AC_CHECK_TYPES([__int64], [AC_CHECK_SIZEOF(__int64)])
330 GCC_STDINT_TYPES
331
332 # ---------------------
333 # Warnings and checking
334 # ---------------------
335
336 # Check $CC warning features (if it's GCC).
337 # We want to use -pedantic, but we don't want warnings about
338 # * 'long long'
339 # * variadic macros
340 # * overlong strings
341 # * C++11 narrowing conversions in { }
342 # So, we only use -pedantic if we can disable those warnings.
343
344 ACX_PROG_CC_WARNING_OPTS(
345 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual])), [loose_warn])
346 ACX_PROG_CC_WARNING_OPTS(
347 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
348 [c_loose_warn])
349 ACX_PROG_CC_WARNING_OPTS(
350 m4_quote(m4_do([-Wmissing-format-attribute])), [strict_warn])
351 ACX_PROG_CC_WARNING_OPTS(
352 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
353 ACX_PROG_CC_WARNING_ALMOST_PEDANTIC(
354 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
355 [-Wno-overlength-strings])), [strict_warn])
356 ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual], [strict_warn])
357
358 # The above macros do nothing if the compiler is not GCC. However, the
359 # Makefile has more goo to add other flags, so these variables are used
360 # to enable warnings only for GCC.
361 warn_cflags=
362 warn_cxxflags=
363 if test "x$GCC" = "xyes"; then
364 warn_cflags='$(GCC_WARN_CFLAGS)'
365 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
366 fi
367 AC_SUBST(warn_cflags)
368 AC_SUBST(warn_cxxflags)
369
370 # Disable exceptions and RTTI if building with g++
371 ACX_PROG_CC_WARNING_OPTS(
372 m4_quote(m4_do([-fno-exceptions -fno-rtti])), [noexception_flags])
373
374 # Enable expensive internal checks
375 is_release=
376 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
377 is_release=yes
378 fi
379
380 AC_ARG_ENABLE(checking,
381 [AS_HELP_STRING([[--enable-checking[=LIST]]],
382 [enable expensive run-time checks. With LIST,
383 enable only specific categories of checks.
384 Categories are: yes,no,all,none,release.
385 Flags are: assert,df,fold,gc,gcac,gimple,misc,
386 rtlflag,rtl,runtime,tree,valgrind,types])],
387 [ac_checking_flags="${enableval}"],[
388 # Determine the default checks.
389 if test x$is_release = x ; then
390 ac_checking_flags=yes
391 else
392 ac_checking_flags=release
393 fi])
394 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
395 for check in release $ac_checking_flags
396 do
397 case $check in
398 # these set all the flags to specific states
399 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
400 ac_fold_checking= ; ac_gc_checking=1 ;
401 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
402 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
403 ac_tree_checking=1 ; ac_valgrind_checking= ;
404 ac_types_checking=1 ;;
405 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
406 ac_fold_checking= ; ac_gc_checking= ;
407 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
408 ac_rtlflag_checking= ; ac_runtime_checking= ;
409 ac_tree_checking= ; ac_valgrind_checking= ;
410 ac_types_checking= ;;
411 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
412 ac_fold_checking=1 ; ac_gc_checking=1 ;
413 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
414 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
415 ac_tree_checking=1 ; ac_valgrind_checking= ;
416 ac_types_checking=1 ;;
417 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
418 ac_fold_checking= ; ac_gc_checking= ;
419 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
420 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
421 ac_tree_checking= ; ac_valgrind_checking= ;
422 ac_types_checking= ;;
423 # these enable particular checks
424 assert) ac_assert_checking=1 ;;
425 df) ac_df_checking=1 ;;
426 fold) ac_fold_checking=1 ;;
427 gc) ac_gc_checking=1 ;;
428 gcac) ac_gc_always_collect=1 ;;
429 gimple) ac_gimple_checking=1 ;;
430 misc) ac_checking=1 ;;
431 rtl) ac_rtl_checking=1 ;;
432 rtlflag) ac_rtlflag_checking=1 ;;
433 runtime) ac_runtime_checking=1 ;;
434 tree) ac_tree_checking=1 ;;
435 types) ac_types_checking=1 ;;
436 valgrind) ac_valgrind_checking=1 ;;
437 *) AC_MSG_ERROR(unknown check category $check) ;;
438 esac
439 done
440 IFS="$ac_save_IFS"
441
442 nocommon_flag=""
443 if test x$ac_checking != x ; then
444 AC_DEFINE(ENABLE_CHECKING, 1,
445 [Define if you want more run-time sanity checks. This one gets a grab
446 bag of miscellaneous but relatively cheap checks.])
447 nocommon_flag=-fno-common
448 fi
449 AC_SUBST(nocommon_flag)
450 if test x$ac_df_checking != x ; then
451 AC_DEFINE(ENABLE_DF_CHECKING, 1,
452 [Define if you want more run-time sanity checks for dataflow.])
453 fi
454 if test x$ac_assert_checking != x ; then
455 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
456 [Define if you want assertions enabled. This is a cheap check.])
457 fi
458 if test x$ac_gimple_checking != x ; then
459 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
460 [Define if you want operations on GIMPLE (the basic data structure of
461 the high-level optimizers) to be checked for dynamic type safety at
462 runtime. This is moderately expensive.])
463 fi
464 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
465 if test x$ac_runtime_checking != x ; then
466 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
467 [Define if you want runtime assertions enabled. This is a cheap check.])
468 fi
469 if test x$ac_tree_checking != x ; then
470 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
471 [Define if you want all operations on trees (the basic data
472 structure of the front ends) to be checked for dynamic type safety
473 at runtime. This is moderately expensive. The tree browser debugging
474 routines will also be enabled by this option.
475 ])
476 TREEBROWSER=tree-browser.o
477 fi
478 if test x$ac_types_checking != x ; then
479 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
480 [Define if you want all gimple types to be verified after gimplifiation.
481 This is cheap.
482 ])
483 fi
484 AC_SUBST(TREEBROWSER)
485 if test x$ac_rtl_checking != x ; then
486 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
487 [Define if you want all operations on RTL (the basic data structure
488 of the optimizer and back end) to be checked for dynamic type safety
489 at runtime. This is quite expensive.])
490 fi
491 if test x$ac_rtlflag_checking != x ; then
492 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
493 [Define if you want RTL flag accesses to be checked against the RTL
494 codes that are supported for each access macro. This is relatively
495 cheap.])
496 fi
497 if test x$ac_gc_checking != x ; then
498 AC_DEFINE(ENABLE_GC_CHECKING, 1,
499 [Define if you want the garbage collector to do object poisoning and
500 other memory allocation checks. This is quite expensive.])
501 fi
502 if test x$ac_gc_always_collect != x ; then
503 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
504 [Define if you want the garbage collector to operate in maximally
505 paranoid mode, validating the entire heap and collecting garbage at
506 every opportunity. This is extremely expensive.])
507 fi
508 if test x$ac_fold_checking != x ; then
509 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
510 [Define if you want fold checked that it never destructs its argument.
511 This is quite expensive.])
512 fi
513 valgrind_path_defines=
514 valgrind_command=
515
516 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
517 dnl # an if statement. This was the source of very frustrating bugs
518 dnl # in converting to autoconf 2.5x!
519 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
520
521 if test x$ac_valgrind_checking != x ; then
522 # It is certainly possible that there's valgrind but no valgrind.h.
523 # GCC relies on making annotations so we must have both.
524 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
525 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
526 [[#include <valgrind/memcheck.h>
527 #ifndef VALGRIND_DISCARD
528 #error VALGRIND_DISCARD not defined
529 #endif]])],
530 [gcc_cv_header_valgrind_memcheck_h=yes],
531 [gcc_cv_header_valgrind_memcheck_h=no])
532 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
533 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
534 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
535 [[#include <memcheck.h>
536 #ifndef VALGRIND_DISCARD
537 #error VALGRIND_DISCARD not defined
538 #endif]])],
539 [gcc_cv_header_memcheck_h=yes],
540 [gcc_cv_header_memcheck_h=no])
541 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
542 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
543 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
544 if test "x$valgrind_path" = "x" \
545 || (test $have_valgrind_h = no \
546 && test $gcc_cv_header_memcheck_h = no \
547 && test $gcc_cv_header_valgrind_memcheck_h = no); then
548 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
549 fi
550 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
551 valgrind_command="$valgrind_path -q"
552 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
553 [Define if you want to run subprograms and generated programs
554 through valgrind (a memory checker). This is extremely expensive.])
555 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
556 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
557 [Define if valgrind's valgrind/memcheck.h header is installed.])
558 fi
559 if test $gcc_cv_header_memcheck_h = yes; then
560 AC_DEFINE(HAVE_MEMCHECK_H, 1,
561 [Define if valgrind's memcheck.h header is installed.])
562 fi
563 fi
564 AC_SUBST(valgrind_path_defines)
565 AC_SUBST(valgrind_command)
566
567 # Enable code coverage collection
568 AC_ARG_ENABLE(coverage,
569 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
570 [enable compiler's code coverage collection.
571 Use to measure compiler performance and locate
572 unused parts of the compiler. With LEVEL, specify
573 optimization. Values are opt, noopt,
574 default is noopt])],
575 [case "${enableval}" in
576 yes|noopt)
577 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0"
578 ;;
579 opt)
580 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2"
581 ;;
582 no)
583 # a.k.a. --disable-coverage
584 coverage_flags=""
585 ;;
586 *)
587 AC_MSG_ERROR(unknown coverage setting $enableval)
588 ;;
589 esac],
590 [coverage_flags=""])
591 AC_SUBST(coverage_flags)
592
593 AC_ARG_ENABLE(gather-detailed-mem-stats,
594 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
595 [enable detailed memory allocation stats gathering])], [],
596 [enable_gather_detailed_mem_stats=no])
597 if test x$enable_gather_detailed_mem_stats = xyes ; then
598 AC_DEFINE(GATHER_STATISTICS, 1,
599 [Define to enable detailed memory allocation stats gathering.])
600 fi
601
602 # -------------------------------
603 # Miscenalleous configure options
604 # -------------------------------
605
606 # See if we are building gcc with C++.
607 AC_ARG_ENABLE(build-with-cxx,
608 [AS_HELP_STRING([--enable-build-with-cxx],
609 [build with C++ compiler instead of C compiler])],
610 ENABLE_BUILD_WITH_CXX=$enableval,
611 ENABLE_BUILD_WITH_CXX=no)
612 AC_SUBST(ENABLE_BUILD_WITH_CXX)
613 if test "$ENABLE_BUILD_WITH_CXX" = "yes"; then
614 AC_DEFINE(ENABLE_BUILD_WITH_CXX, 1,
615 [Define if building with C++.])
616 fi
617
618 # With stabs
619 AC_ARG_WITH(stabs,
620 [AS_HELP_STRING([--with-stabs],
621 [arrange to use stabs instead of host debug format])],
622 stabs="$with_stabs",
623 stabs=no)
624
625 # Determine whether or not multilibs are enabled.
626 AC_ARG_ENABLE(multilib,
627 [AS_HELP_STRING([--enable-multilib],
628 [enable library support for multiple ABIs])],
629 [], [enable_multilib=yes])
630 AC_SUBST(enable_multilib)
631
632 # Enable __cxa_atexit for C++.
633 AC_ARG_ENABLE(__cxa_atexit,
634 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
635 [], [])
636
637 # Enable C extension for decimal float if target supports it.
638 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
639
640 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
641 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
642 [Define to 1 to enable decimal float extension to C.])
643
644 # Use default_decimal_float for dependency.
645 enable_decimal_float=$default_decimal_float
646
647 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
648 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
649 [Define to 1 to specify that we are using the BID decimal floating
650 point format instead of DPD])
651
652 # Enable C extension for fixed-point arithmetic.
653 AC_ARG_ENABLE(fixed-point,
654 [AS_HELP_STRING([--enable-fixed-point],
655 [enable fixed-point arithmetic extension to C])],
656 [],
657 [
658 case $target in
659 arm*)
660 enable_fixed_point=yes
661 ;;
662
663 mips*-*-*)
664 case $host in
665 mips*-sgi-irix*)
666 AC_MSG_WARN([fixed-point is not supported on IRIX, ignored])
667 enable_fixed_point=no
668 ;;
669 *)
670 enable_fixed_point=yes
671 ;;
672 esac
673 ;;
674 *)
675 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
676 enable_fixed_point=no
677 ;;
678 esac
679 ])
680 AC_SUBST(enable_fixed_point)
681
682 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
683 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
684 [Define to 1 to enable fixed-point arithmetic extension to C.])
685
686 # Enable threads
687 # Pass with no value to take the default
688 # Pass with a value to specify a thread package
689 AC_ARG_ENABLE(threads,
690 [AS_HELP_STRING([[--enable-threads[=LIB]]],
691 [enable thread usage for target GCC,
692 using LIB thread package])],,
693 [enable_threads=''])
694
695 AC_ARG_ENABLE(tls,
696 [AS_HELP_STRING([--enable-tls],
697 [enable or disable generation of tls code
698 overriding the assembler check for tls support])],
699 [
700 case $enable_tls in
701 yes | no) ;;
702 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
703 Valid choices are 'yes' and 'no'.]) ;;
704 esac
705 ], [enable_tls=''])
706
707 AC_ARG_ENABLE(objc-gc,
708 [AS_HELP_STRING([--enable-objc-gc],
709 [enable the use of Boehm's garbage collector with
710 the GNU Objective-C runtime])],
711 if test x$enable_objc_gc = xno; then
712 objc_boehm_gc=''
713 else
714 objc_boehm_gc=1
715 fi,
716 objc_boehm_gc='')
717
718 AC_ARG_WITH(dwarf2,
719 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
720 dwarf2="$with_dwarf2",
721 dwarf2=no)
722
723 AC_ARG_ENABLE(shared,
724 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
725 [
726 case $enable_shared in
727 yes | no) ;;
728 *)
729 enable_shared=no
730 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
731 for pkg in $enableval; do
732 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
733 enable_shared=yes
734 fi
735 done
736 IFS="$ac_save_ifs"
737 ;;
738 esac
739 ], [enable_shared=yes])
740 AC_SUBST(enable_shared)
741
742 AC_ARG_WITH([native-system-header-dir],
743 [ --with-native-system-header-dir=dir
744 use dir as the directory to look for standard
745 system header files in. Defaults to /usr/include.],
746 [
747 case ${with_native_system_header_dir} in
748 yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
749 /* | [[A-Za-z]]:[[\\/]]*) ;;
750 *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
751 esac
752 configured_native_system_header_dir="${withval}"
753 ], [configured_native_system_header_dir=])
754
755 AC_ARG_WITH(build-sysroot,
756 [AS_HELP_STRING([--with-build-sysroot=sysroot],
757 [use sysroot as the system root during the build])],
758 [if test x"$withval" != x ; then
759 SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
760 fi],
761 [SYSROOT_CFLAGS_FOR_TARGET=])
762 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
763
764 AC_ARG_WITH(sysroot,
765 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
766 [search for usr/lib, usr/include, et al, within DIR])],
767 [
768 case ${with_sysroot} in
769 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
770 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
771 esac
772
773 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
774 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
775
776 if test "x$prefix" = xNONE; then
777 test_prefix=/usr/local
778 else
779 test_prefix=$prefix
780 fi
781 if test "x$exec_prefix" = xNONE; then
782 test_exec_prefix=$test_prefix
783 else
784 test_exec_prefix=$exec_prefix
785 fi
786 case ${TARGET_SYSTEM_ROOT} in
787 "${test_prefix}"|"${test_prefix}/"*|\
788 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
789 '${prefix}'|'${prefix}/'*|\
790 '${exec_prefix}'|'${exec_prefix}/'*)
791 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
792 TARGET_SYSTEM_ROOT_DEFINE="$t"
793 ;;
794 esac
795 ], [
796 TARGET_SYSTEM_ROOT=
797 TARGET_SYSTEM_ROOT_DEFINE=
798 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
799 ])
800 AC_SUBST(TARGET_SYSTEM_ROOT)
801 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
802 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
803
804 AC_ARG_WITH(specs,
805 [AS_HELP_STRING([--with-specs=SPECS],
806 [add SPECS to driver command-line processing])],
807 [CONFIGURE_SPECS=$withval],
808 [CONFIGURE_SPECS=]
809 )
810 AC_SUBST(CONFIGURE_SPECS)
811
812 ACX_PKGVERSION([GCC])
813 ACX_BUGURL([http://gcc.gnu.org/bugs.html])
814
815 # Sanity check enable_languages in case someone does not run the toplevel
816 # configure # script.
817 AC_ARG_ENABLE(languages,
818 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
819 [case ,${enable_languages}, in
820 ,,|,yes,)
821 # go safe -- we cannot be much sure without the toplevel
822 # configure's
823 # analysis of which target libs are present and usable
824 enable_languages=c
825 ;;
826 *,all,*)
827 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
828 ;;
829 *,c,*)
830 ;;
831 *)
832 enable_languages=c,${enable_languages}
833 ;;
834 esac],
835 [enable_languages=c])
836
837 AC_ARG_WITH(multilib-list,
838 [AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and x86-64 only)])],
839 :,
840 with_multilib_list=default)
841
842 # -------------------------
843 # Checks for other programs
844 # -------------------------
845
846 AC_PROG_MAKE_SET
847
848 # Find some useful tools
849 AC_PROG_AWK
850 # We need awk to create options.c and options.h.
851 # Bail out if it's missing.
852 case ${AWK} in
853 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
854 esac
855
856 gcc_AC_PROG_LN_S
857 ACX_PROG_LN($LN_S)
858 AC_PROG_RANLIB
859 ranlib_flags=""
860 AC_SUBST(ranlib_flags)
861
862 gcc_AC_PROG_INSTALL
863
864 # See if cmp has --ignore-initial.
865 gcc_AC_PROG_CMP_IGNORE_INITIAL
866
867 # See if we have the mktemp command.
868 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
869
870 # See if makeinfo has been installed and is modern enough
871 # that we can use it.
872 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
873 [GNU texinfo.* \([0-9][0-9.]*\)],
874 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
875 if test $gcc_cv_prog_makeinfo_modern = no; then
876 AC_MSG_WARN([
877 *** Makeinfo is missing or too old.
878 *** Info documentation will not be built.])
879 BUILD_INFO=
880 else
881 BUILD_INFO=info
882 fi
883 AC_SUBST(BUILD_INFO)
884
885 # Is pod2man recent enough to regenerate manpages?
886 AC_MSG_CHECKING([for recent Pod::Man])
887 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
888 AC_MSG_RESULT(yes)
889 GENERATED_MANPAGES=generated-manpages
890 else
891 AC_MSG_RESULT(no)
892 GENERATED_MANPAGES=
893 fi
894 AC_SUBST(GENERATED_MANPAGES)
895
896 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
897
898 # How about lex?
899 dnl Don't use AC_PROG_LEX; we insist on flex.
900 dnl LEXLIB is not useful in gcc.
901 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
902
903 # Bison?
904 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
905
906 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
907 # check for build == host before using them.
908
909 # NM
910 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
911 && test -d ../binutils ; then
912 NM='${objdir}/../binutils/nm-new'
913 else
914 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
915 fi
916
917 # AR
918 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
919 && test -d ../binutils ; then
920 AR='${objdir}/../binutils/ar'
921 else
922 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
923 fi
924
925
926 # --------------------
927 # Checks for C headers
928 # --------------------
929
930 # Need to reject headers which give warnings, so that the -Werror bootstrap
931 # works later. *sigh* This needs to come before all header checks.
932 AC_PROG_CPP_WERROR
933
934 AC_HEADER_STDC
935 AC_HEADER_TIME
936 ACX_HEADER_STRING
937 AC_HEADER_SYS_WAIT
938 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
939 fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
940 sys/resource.h sys/param.h sys/times.h sys/stat.h \
941 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
942
943 # Check for thread headers.
944 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
945 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
946
947 # These tests can't be done till we know if we have limits.h.
948 gcc_AC_C_CHAR_BIT
949 AC_C_BIGENDIAN
950
951 # ----------------------
952 # Checks for C++ headers
953 # ----------------------
954
955 dnl Autoconf will give an error in the configure script if there is no
956 dnl C++ preprocessor. Hack to prevent that.
957 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
958 AC_PROG_CXXCPP
959 m4_popdef([AC_MSG_ERROR])[]dnl
960
961 AC_LANG_PUSH(C++)
962
963 AC_CHECK_HEADERS(unordered_map)
964 AC_CHECK_HEADERS(tr1/unordered_map)
965 AC_CHECK_HEADERS(ext/hash_map)
966
967 AC_LANG_POP(C++)
968
969 # --------
970 # UNSORTED
971 # --------
972
973
974 # These libraries may be used by collect2.
975 # We may need a special search path to get them linked.
976 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
977 [save_LIBS="$LIBS"
978 for libs in '' -lld -lmld \
979 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
980 '-L/usr/lib/cmplrs/cc3.11 -lmld'
981 do
982 LIBS="$libs"
983 AC_TRY_LINK_FUNC(ldopen,
984 [gcc_cv_collect2_libs="$libs"; break])
985 done
986 LIBS="$save_LIBS"
987 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
988 case $gcc_cv_collect2_libs in
989 "none required") ;;
990 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
991 esac
992 AC_SUBST(COLLECT2_LIBS)
993
994 # When building Ada code on Alpha, we need exc_resume which is usually in
995 # -lexc. So test for it.
996 save_LIBS="$LIBS"
997 LIBS=
998 AC_SEARCH_LIBS(exc_resume, exc)
999 GNAT_LIBEXC="$LIBS"
1000 LIBS="$save_LIBS"
1001 AC_SUBST(GNAT_LIBEXC)
1002
1003 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1004 save_LIBS="$LIBS"
1005 LIBS=
1006 AC_SEARCH_LIBS(kstat_open, kstat)
1007 EXTRA_GCC_LIBS="$LIBS"
1008 LIBS="$save_LIBS"
1009 AC_SUBST(EXTRA_GCC_LIBS)
1010
1011 # Some systems put ldexp and frexp in libm instead of libc; assume
1012 # they're both in the same place. jcf-dump needs them.
1013 save_LIBS="$LIBS"
1014 LIBS=
1015 AC_SEARCH_LIBS(ldexp, m)
1016 LDEXP_LIB="$LIBS"
1017 LIBS="$save_LIBS"
1018 AC_SUBST(LDEXP_LIB)
1019
1020 # Use <inttypes.h> only if it exists,
1021 # doesn't clash with <sys/types.h>, and declares intmax_t.
1022 AC_MSG_CHECKING(for inttypes.h)
1023 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1024 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1025 [[#include <sys/types.h>
1026 #include <inttypes.h>]],
1027 [[intmax_t i = -1;]])],
1028 [gcc_cv_header_inttypes_h=yes],
1029 [gcc_cv_header_inttypes_h=no])])
1030 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1031 if test $gcc_cv_header_inttypes_h = yes; then
1032 AC_DEFINE(HAVE_INTTYPES_H, 1,
1033 [Define if you have a working <inttypes.h> header file.])
1034 fi
1035
1036 dnl Disabled until we have a complete test for buggy enum bitfields.
1037 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1038
1039 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1040 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1041 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1042 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1043 putchar_unlocked putc_unlocked)
1044 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoll atoq \
1045 sysconf strsignal getrusage nl_langinfo \
1046 gettimeofday mbstowcs wcswidth mmap setlocale \
1047 gcc_UNLOCKED_FUNCS madvise)
1048
1049 if test x$ac_cv_func_mbstowcs = xyes; then
1050 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1051 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1052 int main()
1053 {
1054 mbstowcs(0, "", 0);
1055 return 0;
1056 }]])],
1057 [gcc_cv_func_mbstowcs_works=yes],
1058 [gcc_cv_func_mbstowcs_works=no],
1059 [gcc_cv_func_mbstowcs_works=yes])])
1060 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1061 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1062 [Define this macro if mbstowcs does not crash when its
1063 first argument is NULL.])
1064 fi
1065 fi
1066
1067 AC_CHECK_TYPE(ssize_t, int)
1068 AC_CHECK_TYPE(caddr_t, char *)
1069
1070 gcc_AC_FUNC_MMAP_BLACKLIST
1071
1072 case "${host}" in
1073 *-*-*vms*)
1074 # Under VMS, vfork works very differently than on Unix. The standard test
1075 # won't work, and it isn't easily adaptable. It makes more sense to
1076 # just force it.
1077 ac_cv_func_vfork_works=yes
1078 ;;
1079 esac
1080 AC_FUNC_FORK
1081
1082 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which exposes a different
1083 # iconv() prototype.
1084 AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1085 [AC_LANG_PUSH([C++])
1086 AM_ICONV
1087 AC_LANG_POP([C++])],
1088 [AM_ICONV])
1089
1090 # Until we have in-tree GNU iconv:
1091 LIBICONV_DEP=
1092 AC_SUBST(LIBICONV_DEP)
1093
1094 AM_LC_MESSAGES
1095
1096 AM_LANGINFO_CODESET
1097
1098 # We will need to find libiberty.h and ansidecl.h
1099 saved_CFLAGS="$CFLAGS"
1100 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
1101 saved_CXXFLAGS="$CXXFLAGS"
1102 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include"
1103 gcc_AC_CHECK_DECLS(getenv atol asprintf sbrk abort atof getcwd getwd \
1104 strsignal strstr stpcpy strverscmp \
1105 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1106 free basename getopt clock getpagesize gcc_UNLOCKED_FUNCS, , ,[
1107 #include "ansidecl.h"
1108 #include "system.h"])
1109
1110 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1111 #include "ansidecl.h"
1112 #include "system.h"
1113 #ifdef HAVE_SYS_RESOURCE_H
1114 #include <sys/resource.h>
1115 #endif
1116 ])
1117
1118 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1119 #include "ansidecl.h"
1120 #include "system.h"
1121 #ifdef HAVE_SYS_RESOURCE_H
1122 #include <sys/resource.h>
1123 #endif
1124 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1125 [Define to `long' if <sys/resource.h> doesn't define.])])
1126
1127 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1128 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1129 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1130 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1131 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1132 #include "ansidecl.h"
1133 #include "system.h"
1134 #ifdef HAVE_LDFCN_H
1135 #undef FREAD
1136 #undef FWRITE
1137 #include <ldfcn.h>
1138 #endif
1139 ])
1140
1141 gcc_AC_CHECK_DECLS(times, , ,[
1142 #include "ansidecl.h"
1143 #include "system.h"
1144 #ifdef HAVE_SYS_TIMES_H
1145 #include <sys/times.h>
1146 #endif
1147 ])
1148
1149 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1150 #include "ansidecl.h"
1151 #include "system.h"
1152 #include <signal.h>
1153 ])
1154
1155 # g++ on Solaris 10+ defines _XOPEN_SOURCE=600, which hides the madvise()
1156 # prototype.
1157 AS_IF([test "$ENABLE_BUILD_WITH_CXX" = "yes"],
1158 [AC_LANG_PUSH([C++])
1159 gcc_AC_CHECK_DECLS(madvise, , ,[
1160 #include "ansidecl.h"
1161 #include "system.h"
1162 ])
1163 AC_LANG_POP([C++])],
1164 [gcc_AC_CHECK_DECLS(madvise, , ,[
1165 #include "ansidecl.h"
1166 #include "system.h"
1167 ])
1168 ])
1169
1170 # More time-related stuff.
1171 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1172 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1173 #include "ansidecl.h"
1174 #include "system.h"
1175 #ifdef HAVE_SYS_TIMES_H
1176 #include <sys/times.h>
1177 #endif
1178 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1179 if test $ac_cv_struct_tms = yes; then
1180 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1181 [Define if <sys/times.h> defines struct tms.])
1182 fi
1183
1184 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1185 # revisit after autoconf 2.50.
1186 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1187 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1188 #include "ansidecl.h"
1189 #include "system.h"
1190 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1191 if test $gcc_cv_type_clock_t = yes; then
1192 AC_DEFINE(HAVE_CLOCK_T, 1,
1193 [Define if <time.h> defines clock_t.])
1194 fi
1195
1196 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1197 CFLAGS="$saved_CFLAGS"
1198 CXXFLAGS="$saved_CXXFLAGS"
1199
1200 # mkdir takes a single argument on some systems.
1201 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1202
1203 # File extensions
1204 manext='.1'
1205 objext='.o'
1206 AC_SUBST(manext)
1207 AC_SUBST(objext)
1208
1209 # With Setjmp/Longjmp based exception handling.
1210 AC_ARG_ENABLE(sjlj-exceptions,
1211 [AS_HELP_STRING([--enable-sjlj-exceptions],
1212 [arrange to use setjmp/longjmp exception handling])],
1213 [case $target in
1214 *-*-hpux10*)
1215 if test $enableval != yes; then
1216 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1217 enableval=yes
1218 fi
1219 ;;
1220 esac
1221 force_sjlj_exceptions=yes],
1222 [case $target in
1223 *-*-hpux10*)
1224 force_sjlj_exceptions=yes
1225 enableval=yes
1226 ;;
1227 *)
1228 force_sjlj_exceptions=no
1229 ;;
1230 esac])
1231 if test $force_sjlj_exceptions = yes; then
1232 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1233 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1234 [Define 0/1 to force the choice for exception handling model.])
1235 fi
1236
1237 # --------------------------------------------------------
1238 # Build, host, and target specific configuration fragments
1239 # --------------------------------------------------------
1240
1241 # Collect build-machine-specific information.
1242 . ${srcdir}/config.build
1243
1244 # Collect host-machine-specific information.
1245 . ${srcdir}/config.host
1246
1247 target_gtfiles=
1248
1249 # Collect target-machine-specific information.
1250 . ${srcdir}/config.gcc
1251
1252 extra_objs="${host_extra_objs} ${extra_objs}"
1253 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1254
1255 # Default the target-machine variables that were not explicitly set.
1256 if test x"$tm_file" = x
1257 then tm_file=$cpu_type/$cpu_type.h; fi
1258
1259 if test x"$extra_headers" = x
1260 then extra_headers=; fi
1261
1262 if test x$md_file = x
1263 then md_file=$cpu_type/$cpu_type.md; fi
1264
1265 if test x$out_file = x
1266 then out_file=$cpu_type/$cpu_type.c; fi
1267
1268 if test x"$tmake_file" = x
1269 then tmake_file=$cpu_type/t-$cpu_type
1270 fi
1271
1272 # Support --enable-initfini-array.
1273 if test x$enable_initfini_array != xno; then
1274 tm_file="${tm_file} initfini-array.h"
1275 fi
1276
1277 if test x"$dwarf2" = xyes
1278 then tm_file="$tm_file tm-dwarf2.h"
1279 fi
1280
1281 # Say what files are being used for the output code and MD file.
1282 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1283 echo "Using \`$srcdir/config/$md_file' as machine description file."
1284
1285 # If any of the xm_file variables contain nonexistent files, warn
1286 # about them and drop them.
1287
1288 bx=
1289 for x in $build_xm_file; do
1290 if test -f $srcdir/config/$x
1291 then bx="$bx $x"
1292 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1293 fi
1294 done
1295 build_xm_file="$bx"
1296
1297 hx=
1298 for x in $host_xm_file; do
1299 if test -f $srcdir/config/$x
1300 then hx="$hx $x"
1301 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1302 fi
1303 done
1304 host_xm_file="$hx"
1305
1306 tx=
1307 for x in $xm_file; do
1308 if test -f $srcdir/config/$x
1309 then tx="$tx $x"
1310 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1311 fi
1312 done
1313 xm_file="$tx"
1314
1315 count=a
1316 for f in $tm_file; do
1317 count=${count}x
1318 done
1319 if test $count = ax; then
1320 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1321 else
1322 echo "Using the following target machine macro files:"
1323 for f in $tm_file; do
1324 echo " $srcdir/config/$f"
1325 done
1326 fi
1327
1328 if test x$need_64bit_hwint = xyes; then
1329 AC_DEFINE(NEED_64BIT_HOST_WIDE_INT, 1,
1330 [Define to 1 if HOST_WIDE_INT must be 64 bits wide (see hwint.h).])
1331 fi
1332
1333 if test x$use_long_long_for_widest_fast_int = xyes; then
1334 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1335 [Define to 1 if the 'long long' (or '__int64') is wider than 'long' but still
1336 efficiently supported by the host hardware.])
1337 fi
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 # TLS was introduced in the Solaris 9 FCS release and backported to
3187 # Solaris 8 patches. Support for GNU-style TLS on x86 was only
3188 # introduced in Solaris 9 4/04, replacing the earlier Sun style that Sun
3189 # ld and GCC don't support any longer.
3190 *-*-solaris2.*)
3191 AC_MSG_CHECKING(linker and ld.so.1 TLS support)
3192 ld_tls_support=no
3193 # Check ld and ld.so.1 TLS support.
3194 if echo "$ld_ver" | grep GNU > /dev/null; then
3195 # Assume all interesting versions of GNU ld have TLS support.
3196 # FIXME: still need ld.so.1 support, i.e. ld version checks below.
3197 ld_tls_support=yes
3198 else
3199 case "$target" in
3200 # Solaris 8/x86 ld has GNU style TLS support since version 1.280.
3201 i?86-*-solaris2.8)
3202 min_tls_ld_vers_minor=280
3203 ;;
3204 # Solaris 8/SPARC ld has TLS support since version 1.272.
3205 sparc*-*-solaris2.8)
3206 min_tls_ld_vers_minor=272
3207 ;;
3208 # Solaris 9/x86 ld has GNU style TLS support since version 1.374.
3209 i?86-*-solaris2.9)
3210 min_tls_ld_vers_minor=374
3211 ;;
3212 # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
3213 sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
3214 min_tls_ld_vers_minor=343
3215 ;;
3216 esac
3217 if test "$ld_vers_major" -gt 1 || \
3218 test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
3219 ld_tls_support=yes
3220 else
3221 set_have_as_tls=no
3222 fi
3223 fi
3224 AC_MSG_RESULT($ld_tls_support)
3225
3226 save_LIBS="$LIBS"
3227 save_LDFLAGS="$LDFLAGS"
3228 LIBS=
3229 LDFLAGS=
3230
3231 AC_MSG_CHECKING(alternate thread library)
3232 case "$target" in
3233 # TLS support was backported to Solaris 8 patches, but only lives in
3234 # the alternate thread library which became the default in Solaris 9.
3235 # We want to always use that, irrespective of TLS support.
3236 *-*-solaris2.8)
3237 # Take multilib subdir into account. There's no spec to handle
3238 # this. The 64 symlink exists since Solaris 8.
3239 lwp_dir=/usr/lib/lwp
3240 lwp_spec="-L$lwp_dir%{m64:/64} -R$lwp_dir%{m64:/64}"
3241 LDFLAGS="-L$lwp_dir -R$lwp_dir"
3242 ;;
3243 *-*-solaris2*)
3244 lwp_dir="none"
3245 lwp_spec=""
3246 ;;
3247 esac
3248 # Always define LIB_THREAD_LDFLAGS_SPEC, even without TLS support.
3249 AC_DEFINE_UNQUOTED(LIB_THREAD_LDFLAGS_SPEC, "$lwp_spec",
3250 [Define to the linker flags to use for -pthread.])
3251 AC_MSG_RESULT($lwp_dir)
3252
3253 AC_MSG_CHECKING(library containing $tga_func)
3254 # Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
3255 # (32-bit x86) only lived in libthread, so check for that. Keep
3256 # set_have_as_tls if found, disable if not.
3257 AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
3258 # Clear LIBS if we cannot support TLS.
3259 if test $set_have_as_tls = no; then
3260 LIBS=
3261 fi
3262 # Even without TLS support on Solaris 8, explicitly link with libthread
3263 # to guarantee that the alternate thread library is used.
3264 case "$target" in
3265 *-*-solaris2.8)
3266 LIBS=-lthread
3267 ;;
3268 esac
3269 # Always define LIB_TLS_SPEC, even without TLS support.
3270 AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
3271 [Define to the library containing __tls_get_addr/___tls_get_addr.])
3272 AC_MSG_RESULT($LIBS)
3273
3274 LIBS="$save_LIBS"
3275 LDFLAGS="$save_LDFLAGS"
3276 ;;
3277 esac
3278 if test $set_have_as_tls = yes ; then
3279 AC_DEFINE(HAVE_AS_TLS, 1,
3280 [Define if your assembler and linker support thread-local storage.])
3281 fi
3282
3283 # Target-specific assembler checks.
3284
3285 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3286 gcc_cv_ld_static_dynamic=no
3287 gcc_cv_ld_static_option='-Bstatic'
3288 gcc_cv_ld_dynamic_option='-Bdynamic'
3289 if test $in_tree_ld = yes ; then
3290 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
3291 gcc_cv_ld_static_dynamic=yes
3292 fi
3293 elif test x$gcc_cv_ld != x; then
3294 # Check if linker supports -Bstatic/-Bdynamic option
3295 if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
3296 && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
3297 gcc_cv_ld_static_dynamic=yes
3298 else
3299 case "$target" in
3300 # HP-UX ld uses -a flags to select between shared and archive.
3301 *-*-hpux*)
3302 if test x"$gnu_ld" = xno; then
3303 gcc_cv_ld_static_dynamic=yes
3304 gcc_cv_ld_static_option="-aarchive_shared"
3305 gcc_cv_ld_dynamic_option="-adefault"
3306 fi
3307 ;;
3308 # IRIX 6 ld supports -Bstatic/-Bdynamic.
3309 mips-sgi-irix6*)
3310 gcc_cv_ld_static_dynamic=yes
3311 ;;
3312 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3313 *-*-solaris2*)
3314 gcc_cv_ld_static_dynamic=yes
3315 ;;
3316 esac
3317 fi
3318 fi
3319 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3320 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3321 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3322 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3323 [Define to the linker option to disable use of shared objects.])
3324 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3325 [Define to the linker option to enable use of shared objects.])
3326 fi
3327 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3328
3329 if test x"$demangler_in_ld" = xyes; then
3330 AC_MSG_CHECKING(linker --demangle support)
3331 gcc_cv_ld_demangle=no
3332 if test $in_tree_ld = yes; then
3333 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 \
3334 gcc_cv_ld_demangle=yes
3335 fi
3336 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3337 # Check if the GNU linker supports --demangle option
3338 if $gcc_cv_ld --help 2>/dev/null | grep no-demangle > /dev/null; then
3339 gcc_cv_ld_demangle=yes
3340 fi
3341 fi
3342 if test x"$gcc_cv_ld_demangle" = xyes; then
3343 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3344 [Define if your linker supports --demangle option.])
3345 fi
3346 AC_MSG_RESULT($gcc_cv_ld_demangle)
3347 fi
3348
3349 AC_MSG_CHECKING(linker plugin support)
3350 gcc_cv_lto_plugin=0
3351 if test -f liblto_plugin.la; then
3352 save_ld_ver="$ld_ver"
3353 save_ld_vers_major="$ld_vers_major"
3354 save_ld_vers_minor="$ld_vers_minor"
3355 save_ld_is_gold="$ld_is_gold"
3356
3357 ld_is_gold=no
3358
3359 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
3360 ld_ver="GNU ld"
3361 # FIXME: ld_is_gold?
3362 ld_vers_major="$gcc_cv_gld_major_version"
3363 ld_vers_minor="$gcc_cv_gld_minor_version"
3364 else
3365 # Determine plugin linker version.
3366 # FIXME: Partial duplicate from above, generalize.
3367 changequote(,)dnl
3368 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
3369 if echo "$ld_ver" | grep GNU > /dev/null; then
3370 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
3371 ld_is_gold=yes
3372 ld_vers=`echo $ld_ver | sed -n \
3373 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
3374 else
3375 ld_vers=`echo $ld_ver | sed -n \
3376 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
3377 fi
3378 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
3379 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
3380 fi
3381 changequote([,])dnl
3382 fi
3383
3384 # Determine plugin support.
3385 if echo "$ld_ver" | grep GNU > /dev/null; then
3386 # Require GNU ld or gold 2.21+ for plugin support by default.
3387 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
3388 gcc_cv_lto_plugin=2
3389 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
3390 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
3391 gcc_cv_lto_plugin=1
3392 fi
3393 fi
3394
3395 ld_ver="$save_ld_ver"
3396 ld_vers_major="$save_ld_vers_major"
3397 ld_vers_minor="$save_ld_vers_minor"
3398 ld_is_gold="$save_ld_is_gold"
3399 fi
3400 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
3401 [Define to the level of your linker's plugin support.])
3402 AC_MSG_RESULT($gcc_cv_lto_plugin)
3403
3404 case "$target" in
3405 # All TARGET_ABI_OSF targets.
3406 alpha*-*-linux* | alpha*-*-*bsd*)
3407 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3408 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
3409 [ .set nomacro
3410 .text
3411 extbl $3, $2, $3 !lituse_bytoff!1
3412 ldq $2, a($29) !literal!1
3413 ldq $4, b($29) !literal!2
3414 ldq_u $3, 0($2) !lituse_base!1
3415 ldq $27, f($29) !literal!5
3416 jsr $26, ($27), f !lituse_jsr!5
3417 ldah $29, 0($26) !gpdisp!3
3418 lda $0, c($29) !gprel
3419 ldah $1, d($29) !gprelhigh
3420 lda $1, d($1) !gprellow
3421 lda $29, 0($29) !gpdisp!3],,
3422 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
3423 [Define if your assembler supports explicit relocations.])])
3424 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
3425 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
3426 [ .set nomacro
3427 .text
3428 ldq $27, a($29) !literal!1
3429 jsr $26, ($27), a !lituse_jsrdirect!1],,
3430 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
3431 [Define if your assembler supports the lituse_jsrdirect relocation.])])
3432 ;;
3433
3434 cris-*-*)
3435 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
3436 gcc_cv_as_cris_no_mul_bug,[2,15,91],
3437 [-no-mul-bug-abort], [.text],,
3438 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
3439 [Define if your assembler supports the -no-mul-bug-abort option.])])
3440 ;;
3441
3442 sparc*-*-*)
3443 gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,,
3444 [.register %g2, #scratch],,
3445 [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
3446 [Define if your assembler supports .register.])])
3447
3448 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
3449 [-relax], [.text],,
3450 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
3451 [Define if your assembler supports -relax option.])])
3452
3453 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
3454 gcc_cv_as_sparc_gotdata_op,,
3455 [-K PIC],
3456 [.text
3457 .align 4
3458 foo:
3459 nop
3460 bar:
3461 sethi %gdop_hix22(foo), %g1
3462 xor %g1, %gdop_lox10(foo), %g1
3463 ld [[%l7 + %g1]], %g2, %gdop(foo)],
3464 [if test x$gcc_cv_ld != x \
3465 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3466 if test x$gcc_cv_objdump != x; then
3467 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
3468 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
3469 gcc_cv_as_sparc_gotdata_op=no
3470 else
3471 gcc_cv_as_sparc_gotdata_op=yes
3472 fi
3473 fi
3474 fi
3475 rm -f conftest],
3476 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
3477 [Define if your assembler and linker support GOTDATA_OP relocs.])])
3478
3479 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
3480 gcc_cv_as_sparc_ua_pcrel,,
3481 [-K PIC],
3482 [.text
3483 foo:
3484 nop
3485 .data
3486 .align 4
3487 .byte 0
3488 .uaword %r_disp32(foo)],
3489 [if test x$gcc_cv_ld != x \
3490 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3491 gcc_cv_as_sparc_ua_pcrel=yes
3492 fi
3493 rm -f conftest],
3494 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
3495 [Define if your assembler and linker support unaligned PC relative relocs.])
3496
3497 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
3498 gcc_cv_as_sparc_ua_pcrel_hidden,,
3499 [-K PIC],
3500 [.data
3501 .align 4
3502 .byte 0x31
3503 .uaword %r_disp32(foo)
3504 .byte 0x32, 0x33, 0x34
3505 .global foo
3506 .hidden foo
3507 foo:
3508 .skip 4],
3509 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
3510 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
3511 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
3512 | grep ' 31000000 07323334' > /dev/null 2>&1; then
3513 if $gcc_cv_objdump -R conftest 2> /dev/null \
3514 | grep 'DISP32' > /dev/null 2>&1; then
3515 :
3516 else
3517 gcc_cv_as_sparc_ua_pcrel_hidden=yes
3518 fi
3519 fi
3520 rm -f conftest],
3521 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
3522 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
3523 ]) # unaligned pcrel relocs
3524
3525 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
3526 gcc_cv_as_sparc_offsetable_lo10,,
3527 [-xarch=v9],
3528 [.text
3529 or %g1, %lo(ab) + 12, %g1
3530 or %g1, %lo(ab + 12), %g1],
3531 [if test x$gcc_cv_objdump != x \
3532 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
3533 | grep ' 82106000 82106000' > /dev/null 2>&1; then
3534 gcc_cv_as_sparc_offsetable_lo10=yes
3535 fi],
3536 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
3537 [Define if your assembler supports offsetable %lo().])])
3538
3539 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
3540 gcc_cv_as_sparc_fmaf,,
3541 [-xarch=v9d],
3542 [.text
3543 .register %g2, #scratch
3544 .register %g3, #scratch
3545 .align 4
3546 fmaddd %f0, %f2, %f4, %f6
3547 addxccc %g1, %g2, %g3
3548 fsrl32 %f2, %f4, %f8
3549 fnaddd %f10, %f12, %f14],,
3550 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
3551 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
3552 ;;
3553
3554 changequote(,)dnl
3555 i[34567]86-*-* | x86_64-*-*)
3556 changequote([,])dnl
3557 case $target_os in
3558 cygwin*)
3559 # Full C++ conformance when using a shared libstdc++-v3 requires some
3560 # support from the Cygwin DLL, which in more recent versions exports
3561 # wrappers to aid in interposing and redirecting operators new, delete,
3562 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
3563 # are configuring for a version of Cygwin that exports the wrappers.
3564 if test x$host = x$target; then
3565 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
3566 else
3567 # Can't check presence of libc functions during cross-compile, so
3568 # we just have to assume we're building for an up-to-date target.
3569 gcc_ac_cygwin_dll_wrappers=yes
3570 fi
3571 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
3572 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
3573 [Define if you want to generate code by default that assumes that the
3574 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
3575 esac
3576 case $target_os in
3577 cygwin* | pe | mingw32* | interix*)
3578 # Recent binutils allows the three-operand form of ".comm" on PE. This
3579 # definition is used unconditionally to initialise the default state of
3580 # the target option variable that governs usage of the feature.
3581 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
3582 [2,19,52],,[.comm foo,1,32])
3583 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
3584 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
3585 [Define if your assembler supports specifying the alignment
3586 of objects allocated using the GAS .comm command.])
3587 # Used for DWARF 2 in PE
3588 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
3589 gcc_cv_as_ix86_pe_secrel32,
3590 [2,15,91],,
3591 [.text
3592 foo: nop
3593 .data
3594 .secrel32 foo],
3595 [if test x$gcc_cv_ld != x \
3596 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
3597 gcc_cv_as_ix86_pe_secrel32=yes
3598 fi
3599 rm -f conftest],
3600 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
3601 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
3602 # Test if the assembler supports the extended form of the .section
3603 # directive that specifies section alignment. LTO support uses this,
3604 # but normally only after installation, so we warn but don't fail the
3605 # configure if LTO is enabled but the assembler does not support it.
3606 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
3607 [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
3608 if test x$gcc_cv_as_section_has_align != xyes; then
3609 case ",$enable_languages," in
3610 *,lto,*)
3611 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
3612 ;;
3613 esac
3614 fi
3615 # Test if the assembler supports the section flag 'e' for specifying
3616 # an excluded section.
3617 gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
3618 [2,22,51],,
3619 [.section foo1,"e"
3620 .byte 0,0,0,0])
3621 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3622 [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
3623 [Define if your assembler supports specifying the section flag e.])
3624 ;;
3625 esac
3626
3627 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
3628 gcc_cv_as_ix86_filds,,,
3629 [filds mem; fists mem],,
3630 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
3631 [Define if your assembler uses filds and fists mnemonics.])])
3632
3633 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
3634 gcc_cv_as_ix86_fildq,,,
3635 [fildq mem; fistpq mem],,
3636 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
3637 [Define if your assembler uses fildq and fistq mnemonics.])])
3638
3639 gcc_GAS_CHECK_FEATURE([cmov syntax],
3640 gcc_cv_as_ix86_cmov_sun_syntax,,,
3641 [cmovl.l %edx, %eax],,
3642 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
3643 [Define if your assembler supports the Sun syntax for cmov.])])
3644
3645 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
3646 gcc_cv_as_ix86_ffreep,,,
3647 [ffreep %st(1)],,
3648 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
3649 [Define if your assembler supports the ffreep mnemonic.])])
3650
3651 gcc_GAS_CHECK_FEATURE([.quad directive],
3652 gcc_cv_as_ix86_quad,,,
3653 [.quad 0],,
3654 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
3655 [Define if your assembler supports the .quad directive.])])
3656
3657 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
3658 gcc_cv_as_ix86_sahf,,,
3659 [.code64
3660 sahf],,
3661 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
3662 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
3663
3664 gcc_GAS_CHECK_FEATURE([swap suffix],
3665 gcc_cv_as_ix86_swap,,,
3666 [movl.s %esp, %ebp],,
3667 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
3668 [Define if your assembler supports the swap suffix.])])
3669
3670 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
3671 gcc_cv_as_ix86_diff_sect_delta,,,
3672 [.section .rodata
3673 .L1:
3674 .long .L2-.L1
3675 .long .L3-.L1
3676 .text
3677 .L3: nop
3678 .L2: nop],,
3679 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
3680 [Define if your assembler supports the subtraction of symbols in different sections.])])
3681
3682 # These two are used unconditionally by i386.[ch]; it is to be defined
3683 # to 1 if the feature is present, 0 otherwise.
3684 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
3685 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],,
3686 [ .text
3687 .L0:
3688 nop
3689 .data
3690 .long .L0@GOTOFF])
3691 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
3692 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
3693 [Define true if the assembler supports '.long foo@GOTOFF'.])
3694
3695 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
3696 gcc_cv_as_ix86_rep_lock_prefix,,,
3697 [rep movsl
3698 lock addl %edi, (%eax,%esi)
3699 lock orl $0, (%esp)],,
3700 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
3701 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
3702
3703 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
3704 gcc_cv_as_ix86_tlsgdplt,,,
3705 [call tls_gd@tlsgdplt],
3706 [if test x$gcc_cv_ld != x \
3707 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3708 gcc_cv_as_ix86_tlsgdplt=yes
3709 fi
3710 rm -f conftest],
3711 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
3712 [Define if your assembler and linker support @tlsgdplt.])])
3713
3714 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
3715 gcc_cv_as_ix86_tlsldmplt,,,
3716 [tls_ld:
3717 call tls_ld@tlsldmplt],
3718 [if test x$gcc_cv_ld != x \
3719 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
3720 gcc_cv_as_ix86_tlsldmplt=yes
3721 fi
3722 rm -f conftest],
3723 [AC_DEFINE(HAVE_AS_IX86_TLSLDMPLT, 1,
3724 [Define if your assembler and linker support @tlsldmplt.])])
3725
3726 ;;
3727
3728 ia64*-*-*)
3729 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
3730 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
3731 [ .text
3732 addl r15 = @ltoffx(x#), gp
3733 ;;
3734 ld8.mov r16 = [[r15]], x#],,
3735 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
3736 [Define if your assembler supports ltoffx and ldxmov relocations.])])
3737
3738 ;;
3739
3740 powerpc*-*-*)
3741 case $target in
3742 *-*-aix*) conftest_s=' .machine "pwr5"
3743 .csect .text[[PR]]
3744 mfcr 3,128';;
3745 *-*-darwin*)
3746 gcc_GAS_CHECK_FEATURE([.machine directive support],
3747 gcc_cv_as_machine_directive,,,
3748 [ .machine ppc7400])
3749 if test x$gcc_cv_as_machine_directive != xyes; then
3750 echo "*** This target requires an assembler supporting \".machine\"" >&2
3751 echo you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
3752 test x$build = x$target && exit 1
3753 fi
3754 conftest_s=' .text
3755 mfcr r3,128';;
3756 *) conftest_s=' .machine power4
3757 .text
3758 mfcr 3,128';;
3759 esac
3760
3761 gcc_GAS_CHECK_FEATURE([mfcr field support],
3762 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
3763 [$conftest_s],,
3764 [AC_DEFINE(HAVE_AS_MFCRF, 1,
3765 [Define if your assembler supports mfcr field.])])
3766
3767 case $target in
3768 *-*-aix*) conftest_s=' .machine "pwr5"
3769 .csect .text[[PR]]
3770 popcntb 3,3';;
3771 *) conftest_s=' .machine power5
3772 .text
3773 popcntb 3,3';;
3774 esac
3775
3776 gcc_GAS_CHECK_FEATURE([popcntb support],
3777 gcc_cv_as_powerpc_popcntb, [2,17,0],,
3778 [$conftest_s],,
3779 [AC_DEFINE(HAVE_AS_POPCNTB, 1,
3780 [Define if your assembler supports popcntb field.])])
3781
3782 case $target in
3783 *-*-aix*) conftest_s=' .machine "pwr5x"
3784 .csect .text[[PR]]
3785 frin 1,1';;
3786 *) conftest_s=' .machine power5
3787 .text
3788 frin 1,1';;
3789 esac
3790
3791 gcc_GAS_CHECK_FEATURE([fp round support],
3792 gcc_cv_as_powerpc_fprnd, [2,17,0],,
3793 [$conftest_s],,
3794 [AC_DEFINE(HAVE_AS_FPRND, 1,
3795 [Define if your assembler supports fprnd.])])
3796
3797 case $target in
3798 *-*-aix*) conftest_s=' .machine "pwr6"
3799 .csect .text[[PR]]
3800 mffgpr 1,3';;
3801 *) conftest_s=' .machine power6
3802 .text
3803 mffgpr 1,3';;
3804 esac
3805
3806 gcc_GAS_CHECK_FEATURE([move fp gpr support],
3807 gcc_cv_as_powerpc_mfpgpr, [2,19,2],,
3808 [$conftest_s],,
3809 [AC_DEFINE(HAVE_AS_MFPGPR, 1,
3810 [Define if your assembler supports mffgpr and mftgpr.])])
3811
3812 case $target in
3813 *-*-aix*) conftest_s=' .csect .text[[PR]]
3814 LCF..0:
3815 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
3816 *-*-darwin*)
3817 conftest_s=' .text
3818 LCF0:
3819 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
3820 *) conftest_s=' .text
3821 .LCF0:
3822 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
3823 esac
3824
3825 gcc_GAS_CHECK_FEATURE([rel16 relocs],
3826 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
3827 [$conftest_s],,
3828 [AC_DEFINE(HAVE_AS_REL16, 1,
3829 [Define if your assembler supports R_PPC_REL16 relocs.])])
3830
3831 case $target in
3832 *-*-aix*) conftest_s=' .machine "pwr6"
3833 .csect .text[[PR]]
3834 cmpb 3,4,5';;
3835 *) conftest_s=' .machine power6
3836 .text
3837 cmpb 3,4,5';;
3838 esac
3839
3840 gcc_GAS_CHECK_FEATURE([compare bytes support],
3841 gcc_cv_as_powerpc_cmpb, [2,19,2], -a32,
3842 [$conftest_s],,
3843 [AC_DEFINE(HAVE_AS_CMPB, 1,
3844 [Define if your assembler supports cmpb.])])
3845
3846 case $target in
3847 *-*-aix*) conftest_s=' .machine "pwr6"
3848 .csect .text[[PR]]
3849 dadd 1,2,3';;
3850 *) conftest_s=' .machine power6
3851 .text
3852 dadd 1,2,3';;
3853 esac
3854
3855 gcc_GAS_CHECK_FEATURE([decimal float support],
3856 gcc_cv_as_powerpc_dfp, [2,19,2], -a32,
3857 [$conftest_s],,
3858 [AC_DEFINE(HAVE_AS_DFP, 1,
3859 [Define if your assembler supports DFP instructions.])])
3860
3861 case $target in
3862 *-*-aix*) conftest_s=' .machine "pwr7"
3863 .csect .text[[PR]]
3864 lxvd2x 1,2,3';;
3865 *) conftest_s=' .machine power7
3866 .text
3867 lxvd2x 1,2,3';;
3868 esac
3869
3870 gcc_GAS_CHECK_FEATURE([vector-scalar support],
3871 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
3872 [$conftest_s],,
3873 [AC_DEFINE(HAVE_AS_VSX, 1,
3874 [Define if your assembler supports VSX instructions.])])
3875
3876 case $target in
3877 *-*-aix*) conftest_s=' .machine "pwr7"
3878 .csect .text[[PR]]
3879 popcntd 3,3';;
3880 *) conftest_s=' .machine power7
3881 .text
3882 popcntd 3,3';;
3883 esac
3884
3885 gcc_GAS_CHECK_FEATURE([popcntd support],
3886 gcc_cv_as_powerpc_popcntd, [2,19,2], -a32,
3887 [$conftest_s],,
3888 [AC_DEFINE(HAVE_AS_POPCNTD, 1,
3889 [Define if your assembler supports POPCNTD instructions.])])
3890
3891 case $target in
3892 *-*-aix*) conftest_s=' .csect .text[[PR]]
3893 lwsync';;
3894 *) conftest_s=' .text
3895 lwsync';;
3896 esac
3897
3898 gcc_GAS_CHECK_FEATURE([lwsync support],
3899 gcc_cv_as_powerpc_lwsync, [2,19,2], -a32,
3900 [$conftest_s],,
3901 [AC_DEFINE(HAVE_AS_LWSYNC, 1,
3902 [Define if your assembler supports LWSYNC instructions.])])
3903
3904 case $target in
3905 *-*-aix*) conftest_s=' .machine "476"
3906 .csect .text[[PR]]
3907 dci 0';;
3908 *) conftest_s=' .machine "476"
3909 .text
3910 dci 0';;
3911 esac
3912
3913 gcc_GAS_CHECK_FEATURE([data cache invalidate support],
3914 gcc_cv_as_powerpc_dci, [9,99,0], -a32,
3915 [$conftest_s],,
3916 [AC_DEFINE(HAVE_AS_DCI, 1,
3917 [Define if your assembler supports the DCI/ICI instructions.])])
3918
3919 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3920 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
3921 [.gnu_attribute 4,1],,
3922 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3923 [Define if your assembler supports .gnu_attribute.])])
3924
3925 gcc_GAS_CHECK_FEATURE([tls marker support],
3926 gcc_cv_as_powerpc_tls_markers, [2,20,0],,
3927 [ bl __tls_get_addr(x@tlsgd)],,
3928 [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
3929 [Define if your assembler supports arg info for __tls_get_addr.])])
3930
3931 case $target in
3932 *-*-aix*)
3933 gcc_GAS_CHECK_FEATURE([.ref support],
3934 gcc_cv_as_aix_ref, [2.21.0],,
3935 [ .csect stuff[[rw]]
3936 stuff:
3937 .long 1
3938 .extern sym
3939 .ref sym
3940 ],,
3941 [AC_DEFINE(HAVE_AS_REF, 1,
3942 [Define if your assembler supports .ref])])
3943 ;;
3944 esac
3945 ;;
3946
3947 mips*-*-*)
3948 gcc_GAS_CHECK_FEATURE([explicit relocation support],
3949 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
3950 [ lw $4,%gp_rel(foo)($4)],,
3951 [if test x$target_cpu_default = x
3952 then target_cpu_default=MASK_EXPLICIT_RELOCS
3953 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
3954 fi])
3955 gcc_GAS_CHECK_FEATURE([-mno-shared support],
3956 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
3957 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
3958 [Define if the assembler understands -mno-shared.])])
3959
3960 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
3961 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
3962 [.gnu_attribute 4,1],,
3963 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
3964 [Define if your assembler supports .gnu_attribute.])])
3965
3966 gcc_GAS_CHECK_FEATURE([.dtprelword support],
3967 gcc_cv_as_mips_dtprelword, [2,18,0],,
3968 [.section .tdata,"awT",@progbits
3969 x:
3970 .word 2
3971 .text
3972 .dtprelword x+0x8000],,
3973 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
3974 [Define if your assembler supports .dtprelword.])])
3975
3976 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
3977 gcc_cv_as_mips_dspr1_mult,,,
3978 [ .set mips32r2
3979 .set nodspr2
3980 .set dsp
3981 madd $ac3,$4,$5
3982 maddu $ac3,$4,$5
3983 msub $ac3,$4,$5
3984 msubu $ac3,$4,$5
3985 mult $ac3,$4,$5
3986 multu $ac3,$4,$5],,
3987 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
3988 [Define if your assembler supports DSPR1 mult.])])
3989
3990 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
3991 gcc_cv_as_ld_jalr_reloc=no
3992 if test $gcc_cv_as_mips_explicit_relocs = yes; then
3993 if test $in_tree_ld = yes ; then
3994 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 \
3995 && test $in_tree_ld_is_elf = yes; then
3996 gcc_cv_as_ld_jalr_reloc=yes
3997 fi
3998 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
3999 echo ' .ent x' > conftest.s
4000 echo 'x: ld $2,%got_disp(y)($3)' >> conftest.s
4001 echo ' ld $25,%call16(y)($28)' >> conftest.s
4002 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
4003 echo '1: jalr $25' >> conftest.s
4004 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
4005 echo '1: jalr $25' >> conftest.s
4006 echo ' .end x' >> conftest.s
4007 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4008 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4009 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4010 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4011 gcc_cv_as_ld_jalr_reloc=yes
4012 fi
4013 fi
4014 rm -f conftest.*
4015 fi
4016 fi
4017 if test $gcc_cv_as_ld_jalr_reloc = yes; then
4018 if test x$target_cpu_default = x; then
4019 target_cpu_default=MASK_RELAX_PIC_CALLS
4020 else
4021 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4022 fi
4023 fi
4024 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4025
4026 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4027 [gcc_cv_ld_mips_personality_relaxation],
4028 [gcc_cv_ld_mips_personality_relaxation=no
4029 if test $in_tree_ld = yes ; then
4030 if test "$gcc_cv_gld_major_version" -eq 2 \
4031 -a "$gcc_cv_gld_minor_version" -ge 21 \
4032 -o "$gcc_cv_gld_major_version" -gt 2; then
4033 gcc_cv_ld_mips_personality_relaxation=yes
4034 fi
4035 elif test x$gcc_cv_as != x \
4036 -a x$gcc_cv_ld != x \
4037 -a x$gcc_cv_readelf != x ; then
4038 cat > conftest.s <<EOF
4039 .cfi_startproc
4040 .cfi_personality 0x80,indirect_ptr
4041 .ent test
4042 test:
4043 nop
4044 .end test
4045 .cfi_endproc
4046
4047 .section .data,"aw",@progbits
4048 indirect_ptr:
4049 .dc.a personality
4050 EOF
4051 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4052 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4053 if $gcc_cv_readelf -d conftest 2>&1 \
4054 | grep TEXTREL > /dev/null 2>&1; then
4055 :
4056 elif $gcc_cv_readelf --relocs conftest 2>&1 \
4057 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4058 :
4059 else
4060 gcc_cv_ld_mips_personality_relaxation=yes
4061 fi
4062 fi
4063 fi
4064 rm -f conftest.s conftest.o conftest])
4065 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4066 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4067 [Define if your linker can relax absolute .eh_frame personality
4068 pointers into PC-relative form.])
4069 fi
4070 ;;
4071 esac
4072
4073 # Mips and HP-UX need the GNU assembler.
4074 # Linux on IA64 might be able to use the Intel assembler.
4075
4076 case "$target" in
4077 mips*-*-* | *-*-hpux* )
4078 if test x$gas_flag = xyes \
4079 || test x"$host" != x"$build" \
4080 || test ! -x "$gcc_cv_as" \
4081 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
4082 :
4083 else
4084 echo "*** This configuration requires the GNU assembler" >&2
4085 exit 1
4086 fi
4087 ;;
4088 esac
4089
4090 # ??? Not all targets support dwarf2 debug_line, even within a version
4091 # of gas. Moreover, we need to emit a valid instruction to trigger any
4092 # info to the output file. So, as supported targets are added to gas 2.11,
4093 # add some instruction here to (also) show we expect this might work.
4094 # ??? Once 2.11 is released, probably need to add first known working
4095 # version to the per-target configury.
4096 case "$cpu_type" in
4097 alpha | arm | avr | bfin | cris | i386 | m32c | m68k | microblaze | mips \
4098 | pa | rs6000 | score | sparc | spu | tilegx | tilepro | xstormy16 | xtensa)
4099 insn="nop"
4100 ;;
4101 ia64 | s390)
4102 insn="nop 0"
4103 ;;
4104 mmix)
4105 insn="swym 0"
4106 ;;
4107 esac
4108 if test x"$insn" != x; then
4109 conftest_s="\
4110 .file 1 \"conftest.s\"
4111 .loc 1 3 0
4112 $insn"
4113 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
4114 gcc_cv_as_dwarf2_debug_line,
4115 [elf,2,11,0],, [$conftest_s],
4116 [if test x$gcc_cv_objdump != x \
4117 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
4118 | grep debug_line > /dev/null 2>&1; then
4119 gcc_cv_as_dwarf2_debug_line=yes
4120 fi])
4121
4122 # The .debug_line file table must be in the exact order that
4123 # we specified the files, since these indices are also used
4124 # by DW_AT_decl_file. Approximate this test by testing if
4125 # the assembler bitches if the same index is assigned twice.
4126 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
4127 gcc_cv_as_dwarf2_file_buggy,,,
4128 [ .file 1 "foo.s"
4129 .file 1 "bar.s"])
4130
4131 if test $gcc_cv_as_dwarf2_debug_line = yes \
4132 && test $gcc_cv_as_dwarf2_file_buggy = no; then
4133 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
4134 [Define if your assembler supports dwarf2 .file/.loc directives,
4135 and preserves file table indices exactly as given.])
4136 fi
4137
4138 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
4139 gcc_cv_as_gdwarf2_flag,
4140 [elf,2,11,0], [--gdwarf2], [$insn],,
4141 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
4142 [Define if your assembler supports the --gdwarf2 option.])])
4143
4144 gcc_GAS_CHECK_FEATURE([--gstabs option],
4145 gcc_cv_as_gstabs_flag,
4146 [elf,2,11,0], [--gstabs], [$insn],
4147 [# The native Solaris 9/Intel assembler doesn't understand --gstabs
4148 # and warns about it, but still exits successfully. So check for
4149 # this.
4150 if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null])
4151 then :
4152 else gcc_cv_as_gstabs_flag=yes
4153 fi],
4154 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
4155 [Define if your assembler supports the --gstabs option.])])
4156
4157 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
4158 gcc_cv_as_debug_prefix_map_flag,
4159 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
4160 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
4161 [Define if your assembler supports the --debug-prefix-map option.])])
4162 fi
4163
4164 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
4165 ,,
4166 [.lcomm bar,4,16],,
4167 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
4168 [Define if your assembler supports .lcomm with an alignment field.])])
4169
4170 AC_ARG_ENABLE(gnu-unique-object,
4171 [AS_HELP_STRING([--enable-gnu-unique-object],
4172 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
4173 [case $enable_gnu_unique_object in
4174 yes | no) ;;
4175 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
4176 Valid choices are 'yes' and 'no'.]) ;;
4177 esac],
4178 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
4179 [elf,2,19,52],,
4180 [.type foo, @gnu_unique_object],,
4181 # Also check for ld.so support, i.e. glibc 2.11 or higher.
4182 [[if test x$host = x$build -a x$host = x$target &&
4183 ldd --version 2>/dev/null &&
4184 glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
4185 glibcmajor=`expr "$glibcver" : "\([0-9]*\)"`
4186 glibcminor=`expr "$glibcver" : "[2-9]*\.\([0-9]*\)"`
4187 glibcnum=`expr $glibcmajor \* 1000 + $glibcminor`
4188 if test "$glibcnum" -ge 2011 ; then
4189 enable_gnu_unique_object=yes
4190 fi
4191 fi]])])
4192 if test x$enable_gnu_unique_object = xyes; then
4193 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
4194 [Define if your assembler supports @gnu_unique_object.])
4195 fi
4196
4197 AC_CACHE_CHECK([assembler for tolerance to line number 0],
4198 [gcc_cv_as_line_zero],
4199 [gcc_cv_as_line_zero=no
4200 if test $in_tree_gas = yes; then
4201 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
4202 elif test "x$gcc_cv_as" != x; then
4203 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
4204 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
4205 test "x`cat conftest.out`" = x
4206 then
4207 gcc_cv_as_line_zero=yes
4208 else
4209 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
4210 cat conftest.s >&AS_MESSAGE_LOG_FD
4211 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
4212 cat conftest.out >&AS_MESSAGE_LOG_FD
4213 fi
4214 rm -f conftest.o conftest.s conftest.out
4215 fi])
4216 if test "x$gcc_cv_as_line_zero" = xyes; then
4217 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
4218 [Define if the assembler won't complain about a line such as # 0 "" 2.])
4219 fi
4220
4221 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
4222 gcc_cv_ld_eh_frame_hdr=no
4223 if test $in_tree_ld = yes ; then
4224 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 \
4225 && test $in_tree_ld_is_elf = yes; then
4226 gcc_cv_ld_eh_frame_hdr=yes
4227 fi
4228 elif test x$gcc_cv_ld != x; then
4229 if echo "$ld_ver" | grep GNU > /dev/null; then
4230 # Check if linker supports --eh-frame-hdr option
4231 if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
4232 gcc_cv_ld_eh_frame_hdr=yes
4233 fi
4234 else
4235 case "$target" in
4236 *-*-solaris2*)
4237 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
4238 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
4239 gcc_cv_ld_eh_frame_hdr=yes
4240 fi
4241 ;;
4242 esac
4243 fi
4244 fi
4245 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
4246 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
4247 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
4248 [Define if your linker supports .eh_frame_hdr.])
4249 fi
4250 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
4251
4252 AC_MSG_CHECKING(linker position independent executable support)
4253 gcc_cv_ld_pie=no
4254 if test $in_tree_ld = yes ; then
4255 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 \
4256 && test $in_tree_ld_is_elf = yes; then
4257 gcc_cv_ld_pie=yes
4258 fi
4259 elif test x$gcc_cv_ld != x; then
4260 # Check if linker supports -pie option
4261 if $gcc_cv_ld --help 2>/dev/null | grep -- -pie > /dev/null; then
4262 gcc_cv_ld_pie=yes
4263 fi
4264 fi
4265 if test x"$gcc_cv_ld_pie" = xyes; then
4266 AC_DEFINE(HAVE_LD_PIE, 1,
4267 [Define if your linker supports -pie option.])
4268 fi
4269 AC_MSG_RESULT($gcc_cv_ld_pie)
4270
4271 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
4272 gcc_cv_ld_eh_gc_sections=no
4273 if test $in_tree_ld = yes ; then
4274 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 \
4275 && test $in_tree_ld_is_elf = yes; then
4276 gcc_cv_ld_eh_gc_sections=yes
4277 fi
4278 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
4279 cat > conftest.s <<EOF
4280 .section .text
4281 .globl _start
4282 .type _start, @function
4283 _start:
4284 .long foo
4285 .size _start, .-_start
4286 .section .text.foo,"ax",@progbits
4287 .type foo, @function
4288 foo:
4289 .long 0
4290 .size foo, .-foo
4291 .section .gcc_except_table.foo,"a",@progbits
4292 .L0:
4293 .long 0
4294 .section .eh_frame,"a",@progbits
4295 .long .L0
4296 EOF
4297 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4298 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4299 | grep "gc-sections option ignored" > /dev/null; then
4300 gcc_cv_ld_eh_gc_sections=no
4301 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4302 | grep gcc_except_table > /dev/null; then
4303 gcc_cv_ld_eh_gc_sections=yes
4304 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
4305 if test x$gcc_cv_as_comdat_group != xyes; then
4306 gcc_cv_ld_eh_gc_sections=no
4307 cat > conftest.s <<EOF
4308 .section .text
4309 .globl _start
4310 .type _start, @function
4311 _start:
4312 .long foo
4313 .size _start, .-_start
4314 .section .gnu.linkonce.t.foo,"ax",@progbits
4315 .type foo, @function
4316 foo:
4317 .long 0
4318 .size foo, .-foo
4319 .section .gcc_except_table.foo,"a",@progbits
4320 .L0:
4321 .long 0
4322 .section .eh_frame,"a",@progbits
4323 .long .L0
4324 EOF
4325 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4326 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4327 | grep "gc-sections option ignored" > /dev/null; then
4328 gcc_cv_ld_eh_gc_sections=no
4329 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4330 | grep gcc_except_table > /dev/null; then
4331 gcc_cv_ld_eh_gc_sections=yes
4332 fi
4333 fi
4334 fi
4335 fi
4336 fi
4337 rm -f conftest.s conftest.o conftest
4338 fi
4339 case "$target" in
4340 hppa*-*-linux*)
4341 # ??? This apparently exposes a binutils bug with PC-relative relocations.
4342 gcc_cv_ld_eh_gc_sections=no
4343 ;;
4344 esac
4345 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
4346 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
4347 [Define if your linker supports garbage collection of
4348 sections in presence of EH frames.])
4349 fi
4350 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
4351
4352 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
4353 gcc_cv_ld_eh_gc_sections_bug=no
4354 if test $in_tree_ld = yes ; then
4355 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 \
4356 && test $in_tree_ld_is_elf = yes; then
4357 gcc_cv_ld_eh_gc_sections_bug=yes
4358 fi
4359 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
4360 gcc_cv_ld_eh_gc_sections_bug=yes
4361 cat > conftest.s <<EOF
4362 .section .text
4363 .globl _start
4364 .type _start, @function
4365 _start:
4366 .long foo
4367 .size _start, .-_start
4368 .section .text.startup.foo,"ax",@progbits
4369 .type foo, @function
4370 foo:
4371 .long 0
4372 .size foo, .-foo
4373 .section .gcc_except_table.foo,"a",@progbits
4374 .L0:
4375 .long 0
4376 .section .eh_frame,"a",@progbits
4377 .long .L0
4378 EOF
4379 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
4380 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
4381 | grep "gc-sections option ignored" > /dev/null; then
4382 :
4383 elif $gcc_cv_objdump -h conftest 2> /dev/null \
4384 | grep gcc_except_table > /dev/null; then
4385 gcc_cv_ld_eh_gc_sections_bug=no
4386 fi
4387 fi
4388 rm -f conftest.s conftest.o conftest
4389 fi
4390 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
4391 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
4392 [Define if your linker has buggy garbage collection of
4393 sections support when .text.startup.foo like sections are used.])
4394 fi
4395 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
4396
4397 # --------
4398 # UNSORTED
4399 # --------
4400
4401 AC_CACHE_CHECK(linker --as-needed support,
4402 gcc_cv_ld_as_needed,
4403 [gcc_cv_ld_as_needed=no
4404 if test $in_tree_ld = yes ; then
4405 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 \
4406 && test $in_tree_ld_is_elf = yes; then
4407 gcc_cv_ld_as_needed=yes
4408 fi
4409 elif test x$gcc_cv_ld != x; then
4410 # Check if linker supports --as-needed and --no-as-needed options
4411 if $gcc_cv_ld --help 2>/dev/null | grep as-needed > /dev/null; then
4412 gcc_cv_ld_as_needed=yes
4413 fi
4414 fi
4415 ])
4416 if test x"$gcc_cv_ld_as_needed" = xyes; then
4417 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
4418 [Define if your linker supports --as-needed and --no-as-needed options.])
4419 fi
4420
4421 case "$target:$tm_file" in
4422 powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
4423 AC_CACHE_CHECK(linker support for omitting dot symbols,
4424 gcc_cv_ld_no_dot_syms,
4425 [gcc_cv_ld_no_dot_syms=no
4426 if test $in_tree_ld = yes ; then
4427 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
4428 gcc_cv_ld_no_dot_syms=yes
4429 fi
4430 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4431 cat > conftest1.s <<EOF
4432 .text
4433 bl .foo
4434 EOF
4435 cat > conftest2.s <<EOF
4436 .section ".opd","aw"
4437 .align 3
4438 .globl foo
4439 .type foo,@function
4440 foo:
4441 .quad .LEfoo,.TOC.@tocbase,0
4442 .text
4443 .LEfoo:
4444 blr
4445 .size foo,.-.LEfoo
4446 EOF
4447 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
4448 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
4449 && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
4450 gcc_cv_ld_no_dot_syms=yes
4451 fi
4452 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
4453 fi
4454 ])
4455 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
4456 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
4457 [Define if your PowerPC64 linker only needs function descriptor syms.])
4458 fi
4459
4460 AC_CACHE_CHECK(linker large toc support,
4461 gcc_cv_ld_large_toc,
4462 [gcc_cv_ld_large_toc=no
4463 if test $in_tree_ld = yes ; then
4464 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
4465 gcc_cv_ld_large_toc=yes
4466 fi
4467 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
4468 cat > conftest.s <<EOF
4469 .section ".tbss","awT",@nobits
4470 .align 3
4471 ie0: .space 8
4472 .global _start
4473 .text
4474 _start:
4475 addis 9,13,ie0@got@tprel@ha
4476 ld 9,ie0@got@tprel@l(9)
4477 EOF
4478 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
4479 && $gcc_cv_ld -melf64ppc --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
4480 gcc_cv_ld_large_toc=yes
4481 fi
4482 rm -f conftest conftest.o conftest.s
4483 fi
4484 ])
4485 if test x"$gcc_cv_ld_large_toc" = xyes; then
4486 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
4487 [Define if your PowerPC64 linker supports a large TOC.])
4488 fi
4489 ;;
4490 esac
4491
4492 AC_CACHE_CHECK(linker --build-id support,
4493 gcc_cv_ld_buildid,
4494 [gcc_cv_ld_buildid=no
4495 if test $in_tree_ld = yes ; then
4496 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4497 "$gcc_cv_gld_minor_version" -ge 18 -o \
4498 "$gcc_cv_gld_major_version" -gt 2 \
4499 && test $in_tree_ld_is_elf = yes; then
4500 gcc_cv_ld_buildid=yes
4501 fi
4502 elif test x$gcc_cv_ld != x; then
4503 if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then
4504 gcc_cv_ld_buildid=yes
4505 fi
4506 fi])
4507 if test x"$gcc_cv_ld_buildid" = xyes; then
4508 AC_DEFINE(HAVE_LD_BUILDID, 1,
4509 [Define if your linker supports --build-id.])
4510 fi
4511
4512 AC_ARG_ENABLE(linker-build-id,
4513 [AS_HELP_STRING([--enable-linker-build-id],
4514 [compiler will always pass --build-id to linker])],
4515 [],
4516 enable_linker_build_id=no)
4517
4518 if test x"$enable_linker_build_id" = xyes; then
4519 if test x"$gcc_cv_ld_buildid" = xyes; then
4520 AC_DEFINE(ENABLE_LD_BUILDID, 1,
4521 [Define if gcc should always pass --build-id to linker.])
4522 else
4523 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
4524 fi
4525 fi
4526
4527 # In binutils 2.21, GNU ld gained support for new emulations fully
4528 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
4529 AC_CACHE_CHECK(linker *_sol2 emulation support,
4530 gcc_cv_ld_sol2_emulation,
4531 [gcc_cv_ld_sol2_emulation=no
4532 if test $in_tree_ld = yes ; then
4533 if test "$gcc_cv_gld_major_version" -eq 2 -a \
4534 "$gcc_cv_gld_minor_version" -ge 21 -o \
4535 "$gcc_cv_gld_major_version" -gt 2 \
4536 && test $in_tree_ld_is_elf = yes; then
4537 gcc_cv_ld_sol2_emulation=yes
4538 fi
4539 elif test x$gcc_cv_ld != x; then
4540 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
4541 grep _sol2 > /dev/null; then
4542 gcc_cv_ld_sol2_emulation=yes
4543 fi
4544 fi])
4545 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
4546 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
4547 [Define if your linker supports the *_sol2 emulations.])
4548 fi
4549
4550 AC_CACHE_CHECK(linker --sysroot support,
4551 gcc_cv_ld_sysroot,
4552 [gcc_cv_ld_sysroot=no
4553 if test $in_tree_ld = yes ; then
4554 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
4555 gcc_cv_ld_sysroot=yes
4556 fi
4557 elif test x$gcc_cv_ld != x; then
4558 if $gcc_cv_ld --help 2>/dev/null | grep sysroot > /dev/null; then
4559 gcc_cv_ld_sysroot=yes
4560 fi
4561 fi])
4562 if test x"$gcc_cv_ld_sysroot" = xyes; then
4563 AC_DEFINE(HAVE_LD_SYSROOT, 1,
4564 [Define if your linker supports --sysroot.])
4565 fi
4566
4567 if test x$with_sysroot = x && test x$host = x$target \
4568 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
4569 && test "$prefix" != "NONE"; then
4570 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
4571 [Define to PREFIX/include if cpp should also search that directory.])
4572 fi
4573
4574 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
4575 if test "x$with_headers" != x; then
4576 target_header_dir=$with_headers
4577 elif test "x$with_sysroot" = x; then
4578 target_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
4579 elif test "x$with_build_sysroot" != "x"; then
4580 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
4581 elif test "x$with_sysroot" = xyes; then
4582 target_header_dir="${exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
4583 else
4584 target_header_dir="${with_sysroot}${native_system_header_dir}"
4585 fi
4586 else
4587 target_header_dir=${native_system_header_dir}
4588 fi
4589
4590 # Test for stack protector support in target C library.
4591 AC_CACHE_CHECK(__stack_chk_fail in target C library,
4592 gcc_cv_libc_provides_ssp,
4593 [gcc_cv_libc_provides_ssp=no
4594 case "$target" in
4595 *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
4596 [# glibc 2.4 and later provides __stack_chk_fail and
4597 # either __stack_chk_guard, or TLS access to stack guard canary.
4598 if test -f $target_header_dir/features.h \
4599 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
4600 $target_header_dir/features.h > /dev/null; then
4601 if $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+([1-9][0-9]|[3-9])' \
4602 $target_header_dir/features.h > /dev/null; then
4603 gcc_cv_libc_provides_ssp=yes
4604 elif $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+2' \
4605 $target_header_dir/features.h > /dev/null \
4606 && $EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+([1-9][0-9]|[4-9])' \
4607 $target_header_dir/features.h > /dev/null; then
4608 gcc_cv_libc_provides_ssp=yes
4609 elif $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
4610 $target_header_dir/features.h > /dev/null && \
4611 test -f $target_header_dir/bits/uClibc_config.h && \
4612 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
4613 $target_header_dir/bits/uClibc_config.h > /dev/null; then
4614 gcc_cv_libc_provides_ssp=yes
4615 fi
4616 fi]
4617 ;;
4618 *-*-gnu*)
4619 # Avoid complicated tests (see
4620 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
4621 # simply assert that glibc does provide this, which is true for all
4622 # realistically usable GNU/Hurd configurations.
4623 gcc_cv_libc_provides_ssp=yes;;
4624 *-*-darwin* | *-*-freebsd*)
4625 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
4626 [echo "no __stack_chk_fail on this target"])
4627 ;;
4628 *) gcc_cv_libc_provides_ssp=no ;;
4629 esac])
4630
4631 if test x$gcc_cv_libc_provides_ssp = xyes; then
4632 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
4633 [Define if your target C library provides stack protector support])
4634 fi
4635
4636 # Test for <sys/sdt.h> on the target.
4637 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
4638 AC_MSG_CHECKING(sys/sdt.h in the target C library)
4639 have_sys_sdt_h=no
4640 if test -f $target_header_dir/sys/sdt.h; then
4641 have_sys_sdt_h=yes
4642 AC_DEFINE(HAVE_SYS_SDT_H, 1,
4643 [Define if your target C library provides sys/sdt.h])
4644 fi
4645 AC_MSG_RESULT($have_sys_sdt_h)
4646
4647 # Check if TFmode long double should be used by default or not.
4648 # Some glibc targets used DFmode long double, but with glibc 2.4
4649 # and later they can use TFmode.
4650 case "$target" in
4651 powerpc*-*-linux* | \
4652 sparc*-*-linux* | \
4653 s390*-*-linux* | \
4654 alpha*-*-linux*)
4655 AC_ARG_WITH(long-double-128,
4656 [AS_HELP_STRING([--with-long-double-128],
4657 [use 128-bit long double by default])],
4658 gcc_cv_target_ldbl128="$with_long_double_128",
4659 [[gcc_cv_target_ldbl128=no
4660 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
4661 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
4662 && gcc_cv_target_ldbl128=yes
4663 ]])
4664 ;;
4665 esac
4666 if test x$gcc_cv_target_ldbl128 = xyes; then
4667 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
4668 [Define if TFmode long double should be the default])
4669 fi
4670
4671 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
4672 gcc_cv_target_dl_iterate_phdr=unknown
4673 case "$target" in
4674 # Restrict to Solaris 11+. While most of the Solaris 11 linker changes
4675 # were backported to Solaris 10 Update 10, dl_iterate_phdr only lives in
4676 # libdl there, both complicating its use and breaking compatibility
4677 # between Solaris 10 updates.
4678 *-*-solaris2.1[[1-9]]*)
4679 # <link.h> needs both a dl_iterate_phdr declaration and support for
4680 # compilation with largefile support.
4681 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
4682 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
4683 gcc_cv_target_dl_iterate_phdr=yes
4684 else
4685 gcc_cv_target_dl_iterate_phdr=no
4686 fi
4687 ;;
4688 esac
4689 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
4690 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
4691 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
4692 [Define if your target C library provides the `dl_iterate_phdr' function.])
4693 fi
4694 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
4695
4696 # Find out what GC implementation we want, or may, use.
4697 AC_ARG_WITH(gc,
4698 [AS_HELP_STRING([--with-gc={page,zone}],
4699 [choose the garbage collection mechanism to use
4700 with the compiler])],
4701 [case "$withval" in
4702 page)
4703 GGC=ggc-$withval
4704 ;;
4705 zone)
4706 GGC=ggc-$withval
4707 AC_DEFINE(GGC_ZONE, 1, [Define if the zone collector is in use])
4708 ;;
4709 *)
4710 AC_MSG_ERROR([$withval is an invalid option to --with-gc])
4711 ;;
4712 esac],
4713 [GGC=ggc-page])
4714 AC_SUBST(GGC)
4715 echo "Using $GGC for garbage collection."
4716
4717 # Libraries to use on the host. This will normally be set by the top
4718 # level Makefile. Here we simply capture the value for our Makefile.
4719 if test -z "${HOST_LIBS+set}"; then
4720 HOST_LIBS=
4721 fi
4722 AC_SUBST(HOST_LIBS)
4723
4724 # Use the system's zlib library.
4725 zlibdir=-L../zlib
4726 zlibinc="-I\$(srcdir)/../zlib"
4727 AC_ARG_WITH(system-zlib,
4728 [AS_HELP_STRING([--with-system-zlib], [use installed libz])],
4729 zlibdir=
4730 zlibinc=
4731 )
4732 AC_SUBST(zlibdir)
4733 AC_SUBST(zlibinc)
4734
4735 dnl Very limited version of automake's enable-maintainer-mode
4736
4737 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
4738 dnl maintainer-mode is disabled by default
4739 AC_ARG_ENABLE(maintainer-mode,
4740 [AS_HELP_STRING([--enable-maintainer-mode],
4741 [enable make rules and dependencies not useful
4742 (and sometimes confusing) to the casual installer])],
4743 maintainer_mode=$enableval,
4744 maintainer_mode=no)
4745
4746 AC_MSG_RESULT($maintainer_mode)
4747
4748 if test "$maintainer_mode" = "yes"; then
4749 MAINT=''
4750 else
4751 MAINT='#'
4752 fi
4753 AC_SUBST(MAINT)dnl
4754
4755 # --------------
4756 # Language hooks
4757 # --------------
4758
4759 # Make empty files to contain the specs and options for each language.
4760 # Then add #include lines to for a compiler that has specs and/or options.
4761
4762 subdirs=
4763 lang_opt_files=
4764 lang_specs_files=
4765 lang_tree_files=
4766 # These (without "all_") are set in each config-lang.in.
4767 # `language' must be a single word so is spelled singularly.
4768 all_languages=
4769 all_compilers=
4770 all_outputs='Makefile'
4771 # List of language makefile fragments.
4772 all_lang_makefrags=
4773 # Additional files for gengtype
4774 all_gtfiles="$target_gtfiles"
4775
4776 # These are the languages that are set in --enable-languages,
4777 # and are available in the GCC tree.
4778 all_selected_languages=
4779
4780 # Add the language fragments.
4781 # Languages are added via two mechanisms. Some information must be
4782 # recorded in makefile variables, these are defined in config-lang.in.
4783 # We accumulate them and plug them into the main Makefile.
4784 # The other mechanism is a set of hooks for each of the main targets
4785 # like `clean', `install', etc.
4786
4787 language_hooks="Make-hooks"
4788
4789 for lang in ${srcdir}/*/config-lang.in
4790 do
4791 changequote(,)dnl
4792 test "$lang" = "${srcdir}/*/config-lang.in" && continue
4793
4794 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
4795 if test "x$lang_alias" = x
4796 then
4797 echo "$lang doesn't set \$language." 1>&2
4798 exit 1
4799 fi
4800 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
4801 subdirs="$subdirs $subdir"
4802
4803 # $gcc_subdir is where the gcc integration files are to be found
4804 # for a language, both for internal compiler purposes (compiler
4805 # sources implementing front-end to GCC tree converters), and for
4806 # build infrastructure purposes (Make-lang.in, etc.)
4807 #
4808 # This will be <subdir> (relative to $srcdir) if a line like
4809 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
4810 # is found in <langdir>/config-lang.in, and will remain <langdir>
4811 # otherwise.
4812 #
4813 # Except for the language alias (fetched above), the regular
4814 # "config-lang.in" contents are always retrieved from $gcc_subdir,
4815 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
4816 # only this and the language alias.
4817
4818 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
4819 if [ "$gcc_subdir" = "" ]; then
4820 gcc_subdir="$subdir"
4821 fi
4822
4823 case ",$enable_languages," in
4824 *,$lang_alias,*)
4825 all_selected_languages="$all_selected_languages $lang_alias"
4826 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
4827 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
4828 fi
4829 ;;
4830 esac
4831 changequote([,])dnl
4832
4833 language=
4834 boot_language=
4835 compilers=
4836 outputs=
4837 gtfiles=
4838 subdir_requires=
4839 . ${srcdir}/$gcc_subdir/config-lang.in
4840 if test "x$language" = x
4841 then
4842 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
4843 exit 1
4844 fi
4845
4846 ok=:
4847 case ",$enable_languages," in
4848 *,$lang_alias,*) ;;
4849 *)
4850 for i in $subdir_requires; do
4851 test -f "${srcdir}/$i/config-lang.in" && continue
4852 ok=false
4853 break
4854 done
4855 ;;
4856 esac
4857 $ok || continue
4858
4859 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
4860 if test -f $srcdir/$gcc_subdir/lang.opt; then
4861 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
4862 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
4863 fi
4864 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
4865 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
4866 fi
4867 all_languages="$all_languages $language"
4868 all_compilers="$all_compilers $compilers"
4869 all_outputs="$all_outputs $outputs"
4870 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
4871 case ",$enable_languages," in
4872 *,lto,*)
4873 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
4874 enable_lto=yes
4875 AC_SUBST(enable_lto)
4876 ;;
4877 *) ;;
4878 esac
4879 done
4880
4881 # Pick up gtfiles for c
4882 gtfiles=
4883 . ${srcdir}/c-config-lang.in
4884 all_gtfiles="$all_gtfiles [[c]] $gtfiles"
4885
4886 check_languages=
4887 for language in $all_selected_languages
4888 do
4889 check_languages="$check_languages check-$language"
4890 done
4891
4892 # We link each language in with a set of hooks, reached indirectly via
4893 # lang.${target}. Only do so for selected languages.
4894
4895 rm -f Make-hooks
4896 touch Make-hooks
4897 target_list="all.cross start.encap rest.encap tags \
4898 install-common install-man install-info install-pdf install-html dvi \
4899 pdf html uninstall info man srcextra srcman srcinfo \
4900 mostlyclean clean distclean maintainer-clean install-plugin"
4901
4902 for t in $target_list
4903 do
4904 x=
4905 for lang in $all_selected_languages
4906 do
4907 x="$x $lang.$t"
4908 done
4909 echo "lang.$t: $x" >> Make-hooks
4910 done
4911
4912 # --------
4913 # Option include files
4914 # --------
4915
4916 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
4917 option_includes="option-includes.mk"
4918 AC_SUBST_FILE(option_includes)
4919
4920 # --------
4921 # UNSORTED
4922 # --------
4923
4924 # Create .gdbinit.
4925
4926 echo "dir ." > .gdbinit
4927 echo "dir ${srcdir}" >> .gdbinit
4928 if test x$gdb_needs_out_file_path = xyes
4929 then
4930 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
4931 fi
4932 if test "x$subdirs" != x; then
4933 for s in $subdirs
4934 do
4935 echo "dir ${srcdir}/$s" >> .gdbinit
4936 done
4937 fi
4938 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
4939
4940 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
4941 AC_SUBST(gcc_tooldir)
4942 AC_SUBST(dollar)
4943
4944 # Find a directory in which to install a shared libgcc.
4945
4946 AC_ARG_ENABLE(version-specific-runtime-libs,
4947 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
4948 [specify that runtime libraries should be
4949 installed in a compiler-specific directory])])
4950
4951 # Substitute configuration variables
4952 AC_SUBST(subdirs)
4953 AC_SUBST(srcdir)
4954 AC_SUBST(all_compilers)
4955 AC_SUBST(all_gtfiles)
4956 AC_SUBST(all_lang_makefrags)
4957 AC_SUBST(all_languages)
4958 AC_SUBST(all_selected_languages)
4959 AC_SUBST(build_exeext)
4960 AC_SUBST(build_install_headers_dir)
4961 AC_SUBST(build_xm_file_list)
4962 AC_SUBST(build_xm_include_list)
4963 AC_SUBST(build_xm_defines)
4964 AC_SUBST(build_file_translate)
4965 AC_SUBST(check_languages)
4966 AC_SUBST(cpp_install_dir)
4967 AC_SUBST(xmake_file)
4968 AC_SUBST(tmake_file)
4969 AC_SUBST(TM_ENDIAN_CONFIG)
4970 AC_SUBST(TM_MULTILIB_CONFIG)
4971 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
4972 AC_SUBST(extra_gcc_objs)
4973 AC_SUBST(user_headers_inc_next_pre)
4974 AC_SUBST(user_headers_inc_next_post)
4975 AC_SUBST(extra_headers_list)
4976 AC_SUBST(extra_objs)
4977 AC_SUBST(extra_programs)
4978 AC_SUBST(float_h_file)
4979 AC_SUBST(gcc_config_arguments)
4980 AC_SUBST(gcc_gxx_include_dir)
4981 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
4982 AC_SUBST(host_exeext)
4983 AC_SUBST(host_xm_file_list)
4984 AC_SUBST(host_xm_include_list)
4985 AC_SUBST(host_xm_defines)
4986 AC_SUBST(out_host_hook_obj)
4987 AC_SUBST(install)
4988 AC_SUBST(lang_opt_files)
4989 AC_SUBST(lang_specs_files)
4990 AC_SUBST(lang_tree_files)
4991 AC_SUBST(local_prefix)
4992 AC_SUBST(md_file)
4993 AC_SUBST(objc_boehm_gc)
4994 AC_SUBST(out_file)
4995 AC_SUBST(out_object_file)
4996 AC_SUBST(common_out_file)
4997 AC_SUBST(common_out_object_file)
4998 AC_SUBST(tm_file_list)
4999 AC_SUBST(tm_include_list)
5000 AC_SUBST(tm_defines)
5001 AC_SUBST(tm_p_file_list)
5002 AC_SUBST(tm_p_include_list)
5003 AC_SUBST(xm_file_list)
5004 AC_SUBST(xm_include_list)
5005 AC_SUBST(xm_defines)
5006 AC_SUBST(use_gcc_stdint)
5007 AC_SUBST(c_target_objs)
5008 AC_SUBST(cxx_target_objs)
5009 AC_SUBST(fortran_target_objs)
5010 AC_SUBST(target_cpu_default)
5011
5012 AC_SUBST_FILE(language_hooks)
5013
5014 # Echo link setup.
5015 if test x${build} = x${host} ; then
5016 if test x${host} = x${target} ; then
5017 echo "Links are now set up to build a native compiler for ${target}." 1>&2
5018 else
5019 echo "Links are now set up to build a cross-compiler" 1>&2
5020 echo " from ${host} to ${target}." 1>&2
5021 fi
5022 else
5023 if test x${host} = x${target} ; then
5024 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
5025 echo " for ${target}." 1>&2
5026 else
5027 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
5028 echo " from ${host} to ${target}." 1>&2
5029 fi
5030 fi
5031
5032 AC_ARG_VAR(GMPLIBS,[How to link GMP])
5033 AC_ARG_VAR(GMPINC,[How to find GMP include files])
5034
5035 AC_ARG_VAR(PPLLIBS,[How to link PPL])
5036 AC_ARG_VAR(PPLINC,[How to find PPL include files])
5037
5038 AC_ARG_VAR(CLOOGLIBS,[How to link CLOOG])
5039 AC_ARG_VAR(CLOOGINC,[How to find CLOOG include files])
5040 if test "x${CLOOGLIBS}" != "x" ; then
5041 AC_DEFINE(HAVE_cloog, 1, [Define if cloog is in use.])
5042 fi
5043
5044 # Check for plugin support
5045 AC_ARG_ENABLE(plugin,
5046 [AS_HELP_STRING([--enable-plugin], [enable plugin support])],
5047 enable_plugin=$enableval,
5048 enable_plugin=yes; default_plugin=yes)
5049
5050 pluginlibs=
5051
5052 case "${host}" in
5053 *-*-darwin*)
5054 if test x$build = x$host; then
5055 export_sym_check="nm${exeext} -g"
5056 elif test x$host = x$target; then
5057 export_sym_check="$gcc_cv_nm -g"
5058 else
5059 export_sym_check=
5060 fi
5061 ;;
5062 *)
5063 if test x$build = x$host; then
5064 export_sym_check="objdump${exeext} -T"
5065 elif test x$host = x$target; then
5066 export_sym_check="$gcc_cv_objdump -T"
5067 else
5068 export_sym_check=
5069 fi
5070 ;;
5071 esac
5072
5073 if test x"$enable_plugin" = x"yes"; then
5074
5075 AC_MSG_CHECKING([for exported symbols])
5076 if test "x$export_sym_check" != x; then
5077 echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
5078 ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
5079 if $export_sym_check conftest | grep foobar > /dev/null; then
5080 : # No need to use a flag
5081 AC_MSG_RESULT([yes])
5082 else
5083 AC_MSG_RESULT([yes])
5084 AC_MSG_CHECKING([for -rdynamic])
5085 ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
5086 if $export_sym_check conftest | grep foobar > /dev/null; then
5087 plugin_rdynamic=yes
5088 pluginlibs="-rdynamic"
5089 else
5090 plugin_rdynamic=no
5091 enable_plugin=no
5092 fi
5093 AC_MSG_RESULT([$plugin_rdynamic])
5094 fi
5095 else
5096 AC_MSG_RESULT([unable to check])
5097 fi
5098
5099 # Check -ldl
5100 saved_LIBS="$LIBS"
5101 AC_SEARCH_LIBS([dlopen], [dl])
5102 if test x"$ac_cv_search_dlopen" = x"-ldl"; then
5103 pluginlibs="$pluginlibs -ldl"
5104 fi
5105 LIBS="$saved_LIBS"
5106
5107 # Check that we can build shared objects with -fPIC -shared
5108 saved_LDFLAGS="$LDFLAGS"
5109 saved_CFLAGS="$CFLAGS"
5110 case "${host}" in
5111 *-*-darwin*)
5112 CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
5113 CFLAGS="$CFLAGS -fPIC"
5114 LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
5115 ;;
5116 *)
5117 CFLAGS="$CFLAGS -fPIC"
5118 LDFLAGS="$LDFLAGS -fPIC -shared"
5119 ;;
5120 esac
5121 AC_MSG_CHECKING([for -fPIC -shared])
5122 AC_TRY_LINK(
5123 [extern int X;],[return X == 0;],
5124 [AC_MSG_RESULT([yes]); have_pic_shared=yes],
5125 [AC_MSG_RESULT([no]); have_pic_shared=no])
5126 if test x"$have_pic_shared" != x"yes" -o x"$ac_cv_search_dlopen" = x"no"; then
5127 pluginlibs=
5128 enable_plugin=no
5129 fi
5130 LDFLAGS="$saved_LDFLAGS"
5131 CFLAGS="$saved_CFLAGS"
5132
5133 # If plugin support had been requested but not available, fail.
5134 if test x"$enable_plugin" = x"no" ; then
5135 if test x"$default_plugin" != x"yes"; then
5136 AC_MSG_ERROR([
5137 Building GCC with plugin support requires a host that supports
5138 -fPIC, -shared, -ldl and -rdynamic.])
5139 fi
5140 fi
5141 fi
5142
5143 AC_SUBST(pluginlibs)
5144 AC_SUBST(enable_plugin)
5145 if test x"$enable_plugin" = x"yes"; then
5146 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
5147 fi
5148
5149
5150 AC_ARG_ENABLE(libquadmath-support,
5151 [AS_HELP_STRING([--disable-libquadmath-support],
5152 [disable libquadmath support for Fortran])],
5153 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
5154 ENABLE_LIBQUADMATH_SUPPORT=yes)
5155 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
5156 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
5157 [Define to 1 to enable libquadmath support])
5158 fi
5159
5160
5161 # Specify what hash style to use by default.
5162 AC_ARG_WITH([linker-hash-style],
5163 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
5164 [specify the linker hash style])],
5165 [case x"$withval" in
5166 xsysv)
5167 LINKER_HASH_STYLE=sysv
5168 ;;
5169 xgnu)
5170 LINKER_HASH_STYLE=gnu
5171 ;;
5172 xboth)
5173 LINKER_HASH_STYLE=both
5174 ;;
5175 *)
5176 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
5177 ;;
5178 esac],
5179 [LINKER_HASH_STYLE=''])
5180 if test x"${LINKER_HASH_STYLE}" != x; then
5181 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
5182 [The linker hash style])
5183 fi
5184
5185 # Configure the subdirectories
5186 # AC_CONFIG_SUBDIRS($subdirs)
5187
5188 # Create the Makefile
5189 # and configure language subdirectories
5190 AC_CONFIG_FILES($all_outputs)
5191
5192 AC_CONFIG_COMMANDS([default],
5193 [
5194 case ${CONFIG_HEADERS} in
5195 *auto-host.h:config.in*)
5196 echo > cstamp-h ;;
5197 esac
5198 # Make sure all the subdirs exist.
5199 for d in $subdirs doc build common c-family
5200 do
5201 test -d $d || mkdir $d
5202 done
5203 ],
5204 [subdirs='$subdirs'])
5205 AC_OUTPUT
5206