re PR target/92744 (error: insn does not satisfy its constraints since r278439)
[gcc.git] / gcc / configure.ac
1 # configure.ac for GCC
2 # Process this file with autoconf to generate a configuration script.
3
4 # Copyright (C) 1997-2019 Free Software Foundation, Inc.
5
6 #This file is part of GCC.
7
8 #GCC is free software; you can redistribute it and/or modify it under
9 #the terms of the GNU General Public License as published by the Free
10 #Software Foundation; either version 3, or (at your option) any later
11 #version.
12
13 #GCC is distributed in the hope that it will be useful, but WITHOUT
14 #ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 #FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 #for more details.
17
18 #You should have received a copy of the GNU General Public License
19 #along with GCC; see the file COPYING3. If not see
20 #<http://www.gnu.org/licenses/>.
21
22 # --------------------------------
23 # Initialization and sanity checks
24 # --------------------------------
25
26 AC_INIT
27 AC_CONFIG_SRCDIR(tree.c)
28 AC_CONFIG_HEADER(auto-host.h:config.in)
29
30 gcc_version=`cat $srcdir/BASE-VER`
31
32 # Determine the host, build, and target systems
33 AC_CANONICAL_BUILD
34 AC_CANONICAL_HOST
35 AC_CANONICAL_TARGET
36
37 # Determine the noncanonical host name, for Ada.
38 ACX_NONCANONICAL_HOST
39
40 # Determine the noncanonical target name, for directory use.
41 ACX_NONCANONICAL_TARGET
42
43 # Used for constructing correct paths for offload compilers.
44 real_target_noncanonical=${target_noncanonical}
45 accel_dir_suffix=
46
47 # Determine the target- and build-specific subdirectories
48 GCC_TOPLEV_SUBDIRS
49
50 # Set program_transform_name
51 AC_ARG_PROGRAM
52
53 # Check for bogus environment variables.
54 # Test if LIBRARY_PATH contains the notation for the current directory
55 # since this would lead to problems installing/building glibc.
56 # LIBRARY_PATH contains the current directory if one of the following
57 # is true:
58 # - one of the terminals (":" and ";") is the first or last sign
59 # - two terminals occur directly after each other
60 # - the path contains an element with a dot in it
61 AC_MSG_CHECKING(LIBRARY_PATH variable)
62 changequote(,)dnl
63 case ${LIBRARY_PATH} in
64 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
65 library_path_setting="contains current directory"
66 ;;
67 *)
68 library_path_setting="ok"
69 ;;
70 esac
71 changequote([,])dnl
72 AC_MSG_RESULT($library_path_setting)
73 if test "$library_path_setting" != "ok"; then
74 AC_MSG_ERROR([
75 *** LIBRARY_PATH shouldn't contain the current directory when
76 *** building gcc. Please change the environment variable
77 *** and run configure again.])
78 fi
79
80 # Test if GCC_EXEC_PREFIX contains the notation for the current directory
81 # since this would lead to problems installing/building glibc.
82 # GCC_EXEC_PREFIX contains the current directory if one of the following
83 # is true:
84 # - one of the terminals (":" and ";") is the first or last sign
85 # - two terminals occur directly after each other
86 # - the path contains an element with a dot in it
87 AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
88 changequote(,)dnl
89 case ${GCC_EXEC_PREFIX} in
90 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
91 gcc_exec_prefix_setting="contains current directory"
92 ;;
93 *)
94 gcc_exec_prefix_setting="ok"
95 ;;
96 esac
97 changequote([,])dnl
98 AC_MSG_RESULT($gcc_exec_prefix_setting)
99 if test "$gcc_exec_prefix_setting" != "ok"; then
100 AC_MSG_ERROR([
101 *** GCC_EXEC_PREFIX shouldn't contain the current directory when
102 *** building gcc. Please change the environment variable
103 *** and run configure again.])
104 fi
105
106 # -----------
107 # Directories
108 # -----------
109
110 # Specify the local prefix
111 local_prefix=
112 AC_ARG_WITH(local-prefix,
113 [AS_HELP_STRING([--with-local-prefix=DIR],
114 [specifies directory to put local include])],
115 [case "${withval}" in
116 yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
117 no) ;;
118 *) local_prefix=$with_local_prefix ;;
119 esac])
120
121 # Default local prefix if it is empty
122 if test x$local_prefix = x; then
123 local_prefix=/usr/local
124 fi
125
126 AC_ARG_WITH([native-system-header-dir],
127 [ --with-native-system-header-dir=dir
128 use dir as the directory to look for standard
129 system header files in. Defaults to /usr/include.],
130 [
131 case ${with_native_system_header_dir} in
132 yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
133 /* | [[A-Za-z]]:[[\\/]]*) ;;
134 *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
135 esac
136 configured_native_system_header_dir="${withval}"
137 ], [configured_native_system_header_dir=])
138
139 AC_ARG_WITH(build-sysroot,
140 [AS_HELP_STRING([--with-build-sysroot=sysroot],
141 [use sysroot as the system root during the build])],
142 [if test x"$withval" != x ; then
143 SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
144 fi],
145 [SYSROOT_CFLAGS_FOR_TARGET=])
146 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
147
148 if test "x$prefix" = xNONE; then
149 test_prefix=/usr/local
150 else
151 test_prefix=$prefix
152 fi
153 if test "x$exec_prefix" = xNONE; then
154 test_exec_prefix=$test_prefix
155 else
156 test_exec_prefix=$exec_prefix
157 fi
158
159 AC_ARG_WITH(sysroot,
160 [AS_HELP_STRING([[--with-sysroot[=DIR]]],
161 [search for usr/lib, usr/include, et al, within DIR])],
162 [
163 case ${with_sysroot} in
164 /) ;;
165 */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
166 esac
167 case ${with_sysroot} in
168 yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
169 *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
170 esac
171
172 TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
173 CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
174
175 case ${TARGET_SYSTEM_ROOT} in
176 "${test_prefix}"|"${test_prefix}/"*|\
177 "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
178 '${prefix}'|'${prefix}/'*|\
179 '${exec_prefix}'|'${exec_prefix}/'*)
180 t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
181 TARGET_SYSTEM_ROOT_DEFINE="$t"
182 ;;
183 esac
184 ], [
185 TARGET_SYSTEM_ROOT=
186 TARGET_SYSTEM_ROOT_DEFINE=
187 CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
188 ])
189 AC_SUBST(TARGET_SYSTEM_ROOT)
190 AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
191 AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
192
193 # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
194 # passed in by the toplevel make and thus we'd get different behavior
195 # depending on where we built the sources.
196 gcc_gxx_include_dir=
197 # Specify the g++ header file directory
198 AC_ARG_WITH(gxx-include-dir,
199 [AS_HELP_STRING([--with-gxx-include-dir=DIR],
200 [specifies directory to put g++ header files])],
201 [case "${withval}" in
202 yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
203 no) ;;
204 *) gcc_gxx_include_dir=$with_gxx_include_dir ;;
205 esac])
206
207 # If both --with-sysroot and --with-gxx-include-dir are passed, we interpolate
208 # the former in the latter and, upon success, compute gcc_gxx_include_dir as
209 # relative to the sysroot.
210 gcc_gxx_include_dir_add_sysroot=0
211
212 # This logic must match libstdc++-v3/acinclude.m4:GLIBCXX_EXPORT_INSTALL_INFO.
213 if test x${gcc_gxx_include_dir} = x; then
214 if test x${enable_version_specific_runtime_libs} = xyes; then
215 gcc_gxx_include_dir='${libsubdir}/include/c++'
216 else
217 libstdcxx_incdir='include/c++/$(version)'
218 if test x$host != x$target; then
219 libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
220 fi
221 gcc_gxx_include_dir="\$(libsubdir)/\$(libsubdir_to_prefix)$libstdcxx_incdir"
222 fi
223 elif test "${with_sysroot+set}" = set; then
224 gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
225 if test "${gcc_gxx_without_sysroot}"; then
226 gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
227 gcc_gxx_include_dir_add_sysroot=1
228 fi
229 fi
230
231 AC_ARG_WITH(cpp_install_dir,
232 [AC_HELP_STRING([--with-cpp-install-dir=DIR],
233 [install the user visible C preprocessor in DIR
234 (relative to PREFIX) as well as PREFIX/bin])],
235 [if test x$withval = xyes; then
236 AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
237 elif test x$withval != xno; then
238 cpp_install_dir=$withval
239 fi])
240
241 # We would like to our source tree to be readonly. However when releases or
242 # pre-releases are generated, the flex/bison generated files as well as the
243 # various formats of manuals need to be included along with the rest of the
244 # sources. Therefore we have --enable-generated-files-in-srcdir to do
245 # just that.
246
247 AC_MSG_CHECKING([whether to place generated files in the source directory])
248 dnl generated-files-in-srcdir is disabled by default
249 AC_ARG_ENABLE(generated-files-in-srcdir,
250 [AS_HELP_STRING([--enable-generated-files-in-srcdir],
251 [put copies of generated files in source dir
252 intended for creating source tarballs for users
253 without texinfo bison or flex])],
254 generated_files_in_srcdir=$enableval,
255 generated_files_in_srcdir=no)
256
257 AC_MSG_RESULT($generated_files_in_srcdir)
258
259 if test "$generated_files_in_srcdir" = "yes"; then
260 GENINSRC=''
261 else
262 GENINSRC='#'
263 fi
264 AC_SUBST(GENINSRC)
265
266 # -------------------
267 # Find default linker
268 # -------------------
269
270 # With GNU ld
271 AC_ARG_WITH(gnu-ld,
272 [AS_HELP_STRING([--with-gnu-ld], [arrange to work with GNU ld])],
273 gnu_ld_flag="$with_gnu_ld",
274 gnu_ld_flag=no)
275
276 case $target in
277 *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
278 *) ld64_flag=no;;
279 esac
280
281 # With pre-defined ld
282 AC_ARG_WITH(ld,
283 [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full pathname)])],
284 DEFAULT_LINKER="$with_ld")
285 if test x"${DEFAULT_LINKER+set}" = x"set"; then
286 if test ! -x "$DEFAULT_LINKER"; then
287 AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
288 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
289 gnu_ld_flag=yes
290 elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
291 ld64_flag=yes
292 fi
293 AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
294 [Define to enable the use of a default linker.])
295 fi
296
297 AC_MSG_CHECKING([whether a default linker was specified])
298 if test x"${DEFAULT_LINKER+set}" = x"set"; then
299 if test x"$gnu_ld_flag" = x"no"; then
300 AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
301 else
302 AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
303 fi
304 else
305 AC_MSG_RESULT(no)
306 fi
307
308 # With demangler in GNU ld
309 AC_ARG_WITH(demangler-in-ld,
310 [AS_HELP_STRING([--with-demangler-in-ld], [try to use demangler in GNU ld])],
311 demangler_in_ld="$with_demangler_in_ld",
312 demangler_in_ld=yes)
313
314 # ----------------------
315 # Find default assembler
316 # ----------------------
317
318 # With GNU as
319 AC_ARG_WITH(gnu-as,
320 [AS_HELP_STRING([--with-gnu-as], [arrange to work with GNU as])],
321 gas_flag="$with_gnu_as",
322 gas_flag=no)
323
324 AC_ARG_WITH(as,
325 [AS_HELP_STRING([--with-as], [arrange to use the specified as (full pathname)])],
326 DEFAULT_ASSEMBLER="$with_as")
327 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
328 if test ! -x "$DEFAULT_ASSEMBLER"; then
329 AC_MSG_ERROR([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
330 elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
331 gas_flag=yes
332 fi
333 AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
334 [Define to enable the use of a default assembler.])
335 fi
336
337 AC_MSG_CHECKING([whether a default assembler was specified])
338 if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
339 if test x"$gas_flag" = x"no"; then
340 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
341 else
342 AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
343 fi
344 else
345 AC_MSG_RESULT(no)
346 fi
347
348 # ---------------
349 # Find C compiler
350 # ---------------
351
352 # If a non-executable a.out is present (e.g. created by GNU as above even if
353 # invoked with -v only), the IRIX 6 native ld just overwrites the existing
354 # file, even when creating an executable, so an execution test fails.
355 # Remove possible default executable files to avoid this.
356 #
357 # FIXME: This really belongs into AC_PROG_CC and can be removed once
358 # Autoconf includes it.
359 rm -f a.out a.exe b.out
360
361 # Find the native compiler
362 AC_PROG_CC
363 AC_PROG_CXX
364 ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
365
366 # Do configure tests with the C++ compiler, since that's what we build with.
367 AC_LANG(C++)
368
369 # Remove the -O2: for historical reasons, unless bootstrapping we prefer
370 # optimizations to be activated explicitly by the toplevel.
371 case "$CC" in
372 */prev-gcc/xgcc*) ;;
373 *) CFLAGS=`echo "$CFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" `
374 CXXFLAGS=`echo "$CXXFLAGS " | sed -e "s/-Ofast[[ ]]//" -e "s/-O[[gs]][[ ]]//" -e "s/-O[[0-9]]*[[ ]]//" ` ;;
375 esac
376 AC_SUBST(CFLAGS)
377 AC_SUBST(CXXFLAGS)
378
379 # Determine PICFLAG for target gnatlib.
380 GCC_PICFLAG_FOR_TARGET
381 AC_SUBST(PICFLAG_FOR_TARGET)
382
383 # -------------------------
384 # Check C compiler features
385 # -------------------------
386
387 AC_USE_SYSTEM_EXTENSIONS
388 AC_PROG_CPP
389 AC_C_INLINE
390
391 AC_SYS_LARGEFILE
392
393 # sizeof(char) is 1 by definition.
394 AC_CHECK_SIZEOF(void *)
395 AC_CHECK_SIZEOF(short)
396 AC_CHECK_SIZEOF(int)
397 AC_CHECK_SIZEOF(long)
398 AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
399 GCC_STDINT_TYPES
400 if test x"$ac_cv_c_uint64_t" = x"no" -o x"$ac_cv_c_int64_t" = x"no"; then
401 AC_MSG_ERROR([uint64_t or int64_t not found])
402 fi
403
404 # check what underlying integer type int64_t uses
405 AC_CACHE_CHECK(for int64_t underlying type, ac_cv_int64_t_type, [
406 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
407 #ifdef HAVE_STDINT_H
408 #include <stdint.h>
409 #endif
410 template <typename T> struct X { };
411 template <>
412 struct X<long> { typedef long t; };
413 ]], [[X<int64_t>::t x;]])],[ac_cv_int64_t_type=long],[ac_cv_int64_t_type="long long"])])
414 if test "$ac_cv_int64_t_type" = "long"; then
415 AC_DEFINE(INT64_T_IS_LONG, 1,
416 [Define if int64_t uses long as underlying type.])
417 else
418 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
419 #ifdef HAVE_STDINT_H
420 #include <stdint.h>
421 #endif
422 template <typename T> struct X { };
423 template <>
424 struct X<long long> { typedef long long t; };
425 ]], [[X<int64_t>::t x;]])],[],[AC_MSG_ERROR([error verifying int64_t uses long long])])
426 fi
427
428 AC_CACHE_CHECK(for std::swap in <utility>, ac_cv_std_swap_in_utility, [
429 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
430 #include <utility>
431 ]], [[int a, b; std::swap(a,b);]])],[ac_cv_std_swap_in_utility=yes],[ac_cv_std_swap_in_utility=no])])
432 if test $ac_cv_std_swap_in_utility = yes; then
433 AC_DEFINE(HAVE_SWAP_IN_UTILITY, 1,
434 [Define if <utility> defines std::swap.])
435 fi
436
437 # Check whether compiler is affected by placement new aliasing bug (PR 29286).
438 # If the host compiler is affected by the bug, and we build with optimization
439 # enabled (which happens e.g. when cross-compiling), the pool allocator may
440 # get miscompiled. Use -fno-strict-aliasing to work around this problem.
441 # Since there is no reliable feature check for the presence of this bug,
442 # we simply use a GCC version number check. (This should never trigger for
443 # stages 2 or 3 of a native bootstrap.)
444 aliasing_flags=
445 if test "$GCC" = yes; then
446 saved_CXXFLAGS="$CXXFLAGS"
447
448 # The following test compilation will succeed if and only if $CXX accepts
449 # -fno-strict-aliasing *and* is older than GCC 4.3.
450 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
451 AC_MSG_CHECKING([whether $CXX is affected by placement new aliasing bug])
452 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
453 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
454 #error compiler not affected by placement new aliasing bug
455 #endif
456 ])],
457 [AC_MSG_RESULT([yes]); aliasing_flags='-fno-strict-aliasing'],
458 [AC_MSG_RESULT([no])])
459
460 CXXFLAGS="$saved_CXXFLAGS"
461 fi
462 AC_SUBST(aliasing_flags)
463
464
465
466 # ---------------------
467 # Warnings and checking
468 # ---------------------
469
470 # Check $CC warning features (if it's GCC).
471 # We want to use -pedantic, but we don't want warnings about
472 # * 'long long'
473 # * variadic macros
474 # * overlong strings
475 # * C++11 narrowing conversions in { }
476 # So, we only use -pedantic if we can disable those warnings.
477
478 # In stage 1, disable -Wformat warnings from old GCCs about new % codes
479 AC_ARG_ENABLE(build-format-warnings,
480 AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
481 [],[enable_build_format_warnings=yes])
482 AS_IF([test $enable_build_format_warnings = no],
483 [wf_opt=-Wno-format],[wf_opt=])
484 ACX_PROG_CXX_WARNING_OPTS(
485 m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
486 [-Wcast-qual -Wno-error=format-diag $wf_opt])),
487 [loose_warn])
488 ACX_PROG_CC_WARNING_OPTS(
489 m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
490 [-Wno-error=format-diag])), [c_loose_warn])
491 ACX_PROG_CXX_WARNING_OPTS(
492 m4_quote(m4_do([-Wmissing-format-attribute ],
493 [-Woverloaded-virtual])), [strict_warn])
494 ACX_PROG_CC_WARNING_OPTS(
495 m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
496 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
497 m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
498 [-Wno-overlength-strings])), [strict_warn])
499 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
500
501 # The above macros do nothing if the compiler is not GCC. However, the
502 # Makefile has more goo to add other flags, so these variables are used
503 # to enable warnings only for GCC.
504 warn_cflags=
505 warn_cxxflags=
506 if test "x$GCC" = "xyes"; then
507 warn_cflags='$(GCC_WARN_CFLAGS)'
508 warn_cxxflags='$(GCC_WARN_CXXFLAGS)'
509 fi
510 AC_SUBST(warn_cflags)
511 AC_SUBST(warn_cxxflags)
512
513 # Disable exceptions and RTTI if building with g++
514 ACX_PROG_CC_WARNING_OPTS(
515 m4_quote(m4_do([-fno-exceptions -fno-rtti -fasynchronous-unwind-tables])),
516 [noexception_flags])
517
518 # Enable expensive internal checks
519 is_release=
520 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
521 is_release=yes
522 fi
523
524 AC_ARG_ENABLE(checking,
525 [AS_HELP_STRING([[--enable-checking[=LIST]]],
526 [enable expensive run-time checks. With LIST,
527 enable only specific categories of checks.
528 Categories are: yes,no,all,none,release.
529 Flags are: assert,df,extra,fold,gc,gcac,gimple,misc,
530 rtlflag,rtl,runtime,tree,valgrind,types])],
531 [ac_checking_flags="${enableval}"],[
532 # Determine the default checks.
533 if test x$is_release = x ; then
534 ac_checking_flags=yes,extra
535 else
536 ac_checking_flags=release
537 fi])
538 IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
539 for check in release $ac_checking_flags
540 do
541 case $check in
542 # these set all the flags to specific states
543 yes) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking= ;
544 ac_fold_checking= ; ac_gc_checking=1 ; ac_extra_checking= ;
545 ac_gc_always_collect= ; ac_gimple_checking=1 ; ac_rtl_checking= ;
546 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
547 ac_tree_checking=1 ; ac_valgrind_checking= ;
548 ac_types_checking=1 ;;
549 no|none) ac_assert_checking= ; ac_checking= ; ac_df_checking= ;
550 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
551 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
552 ac_rtlflag_checking= ; ac_runtime_checking= ;
553 ac_tree_checking= ; ac_valgrind_checking= ;
554 ac_types_checking= ;;
555 all) ac_assert_checking=1 ; ac_checking=1 ; ac_df_checking=1 ;
556 ac_fold_checking=1 ; ac_gc_checking=1 ; ac_extra_checking=1 ;
557 ac_gc_always_collect=1 ; ac_gimple_checking=1 ; ac_rtl_checking=1 ;
558 ac_rtlflag_checking=1 ; ac_runtime_checking=1 ;
559 ac_tree_checking=1 ; ac_valgrind_checking= ;
560 ac_types_checking=1 ;;
561 release) ac_assert_checking=1 ; ac_checking= ; ac_df_checking= ;
562 ac_fold_checking= ; ac_gc_checking= ; ac_extra_checking= ;
563 ac_gc_always_collect= ; ac_gimple_checking= ; ac_rtl_checking= ;
564 ac_rtlflag_checking= ; ac_runtime_checking=1 ;
565 ac_tree_checking= ; ac_valgrind_checking= ;
566 ac_types_checking= ;;
567 # these enable particular checks
568 assert) ac_assert_checking=1 ;;
569 df) ac_df_checking=1 ;;
570 extra) ac_extra_checking=1 ;;
571 fold) ac_fold_checking=1 ;;
572 gc) ac_gc_checking=1 ;;
573 gcac) ac_gc_always_collect=1 ;;
574 gimple) ac_gimple_checking=1 ;;
575 misc) ac_checking=1 ;;
576 rtl) ac_rtl_checking=1 ;;
577 rtlflag) ac_rtlflag_checking=1 ;;
578 runtime) ac_runtime_checking=1 ;;
579 tree) ac_tree_checking=1 ;;
580 types) ac_types_checking=1 ;;
581 valgrind) ac_valgrind_checking=1 ;;
582 *) AC_MSG_ERROR(unknown check category $check) ;;
583 esac
584 done
585 IFS="$ac_save_IFS"
586
587 nocommon_flag=""
588 if test x$ac_checking != x ; then
589 AC_DEFINE(CHECKING_P, 1,
590 [Define to 0/1 if you want more run-time sanity checks. This one gets a grab
591 bag of miscellaneous but relatively cheap checks.])
592 nocommon_flag=-fno-common
593 else
594 AC_DEFINE(CHECKING_P, 0)
595 fi
596 AC_SUBST(nocommon_flag)
597 if test x$ac_extra_checking != x ; then
598 AC_DEFINE(ENABLE_EXTRA_CHECKING, 1,
599 [Define to 0/1 if you want extra run-time checking that might affect code
600 generation.])
601 else
602 AC_DEFINE(ENABLE_EXTRA_CHECKING, 0)
603 fi
604 if test x$ac_df_checking != x ; then
605 AC_DEFINE(ENABLE_DF_CHECKING, 1,
606 [Define if you want more run-time sanity checks for dataflow.])
607 fi
608 if test x$ac_assert_checking != x ; then
609 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
610 [Define if you want assertions enabled. This is a cheap check.])
611 fi
612 if test x$ac_gimple_checking != x ; then
613 AC_DEFINE(ENABLE_GIMPLE_CHECKING, 1,
614 [Define if you want operations on GIMPLE (the basic data structure of
615 the high-level optimizers) to be checked for dynamic type safety at
616 runtime. This is moderately expensive.])
617 fi
618 GCC_TARGET_TEMPLATE(ENABLE_RUNTIME_CHECKING)
619 if test x$ac_runtime_checking != x ; then
620 AC_DEFINE(ENABLE_RUNTIME_CHECKING, 1,
621 [Define if you want runtime assertions enabled. This is a cheap check.])
622 fi
623 if test x$ac_tree_checking != x ; then
624 AC_DEFINE(ENABLE_TREE_CHECKING, 1,
625 [Define if you want all operations on trees (the basic data
626 structure of the front ends) to be checked for dynamic type safety
627 at runtime. This is moderately expensive.
628 ])
629 TREECHECKING=yes
630 fi
631 if test x$ac_types_checking != x ; then
632 AC_DEFINE(ENABLE_TYPES_CHECKING, 1,
633 [Define if you want all gimple types to be verified after gimplifiation.
634 This is cheap.
635 ])
636 fi
637 AC_SUBST(TREECHECKING)
638 if test x$ac_rtl_checking != x ; then
639 AC_DEFINE(ENABLE_RTL_CHECKING, 1,
640 [Define if you want all operations on RTL (the basic data structure
641 of the optimizer and back end) to be checked for dynamic type safety
642 at runtime. This is quite expensive.])
643 fi
644 if test x$ac_rtlflag_checking != x ; then
645 AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
646 [Define if you want RTL flag accesses to be checked against the RTL
647 codes that are supported for each access macro. This is relatively
648 cheap.])
649 fi
650 if test x$ac_gc_checking != x ; then
651 AC_DEFINE(ENABLE_GC_CHECKING, 1,
652 [Define if you want the garbage collector to do object poisoning and
653 other memory allocation checks. This is quite expensive.])
654 fi
655 if test x$ac_gc_always_collect != x ; then
656 AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
657 [Define if you want the garbage collector to operate in maximally
658 paranoid mode, validating the entire heap and collecting garbage at
659 every opportunity. This is extremely expensive.])
660 fi
661 if test x$ac_fold_checking != x ; then
662 AC_DEFINE(ENABLE_FOLD_CHECKING, 1,
663 [Define if you want fold checked that it never destructs its argument.
664 This is quite expensive.])
665 fi
666 valgrind_path_defines=
667 valgrind_command=
668
669 dnl # This check AC_REQUIREs various stuff, so it *must not* be inside
670 dnl # an if statement. This was the source of very frustrating bugs
671 dnl # in converting to autoconf 2.5x!
672 AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
673
674 # It is certainly possible that there's valgrind but no valgrind.h.
675 # GCC relies on making annotations so we must have both.
676 AC_MSG_CHECKING(for VALGRIND_DISCARD in <valgrind/memcheck.h>)
677 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
678 [[#include <valgrind/memcheck.h>
679 #ifndef VALGRIND_DISCARD
680 #error VALGRIND_DISCARD not defined
681 #endif]])],
682 [gcc_cv_header_valgrind_memcheck_h=yes],
683 [gcc_cv_header_valgrind_memcheck_h=no])
684 AC_MSG_RESULT($gcc_cv_header_valgrind_memcheck_h)
685 AC_MSG_CHECKING(for VALGRIND_DISCARD in <memcheck.h>)
686 AC_PREPROC_IFELSE([AC_LANG_SOURCE(
687 [[#include <memcheck.h>
688 #ifndef VALGRIND_DISCARD
689 #error VALGRIND_DISCARD not defined
690 #endif]])],
691 [gcc_cv_header_memcheck_h=yes],
692 [gcc_cv_header_memcheck_h=no])
693 AC_MSG_RESULT($gcc_cv_header_memcheck_h)
694 if test $gcc_cv_header_valgrind_memcheck_h = yes; then
695 AC_DEFINE(HAVE_VALGRIND_MEMCHECK_H, 1,
696 [Define if valgrind's valgrind/memcheck.h header is installed.])
697 fi
698 if test $gcc_cv_header_memcheck_h = yes; then
699 AC_DEFINE(HAVE_MEMCHECK_H, 1,
700 [Define if valgrind's memcheck.h header is installed.])
701 fi
702
703 if test x$ac_valgrind_checking != x ; then
704 AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
705 [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
706 if test "x$valgrind_path" = "x" \
707 || (test $have_valgrind_h = no \
708 && test $gcc_cv_header_memcheck_h = no \
709 && test $gcc_cv_header_valgrind_memcheck_h = no); then
710 AC_MSG_ERROR([*** Can't find both valgrind and valgrind/memcheck.h, memcheck.h or valgrind.h])
711 fi
712 valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
713 valgrind_command="$valgrind_path -q"
714 AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
715 [Define if you want to run subprograms and generated programs
716 through valgrind (a memory checker). This is extremely expensive.])
717 fi
718 AC_SUBST(valgrind_path_defines)
719 AC_SUBST(valgrind_command)
720
721 # Enable code coverage collection
722 AC_ARG_ENABLE(coverage,
723 [AS_HELP_STRING([[--enable-coverage[=LEVEL]]],
724 [enable compiler's code coverage collection.
725 Use to measure compiler performance and locate
726 unused parts of the compiler. With LEVEL, specify
727 optimization. Values are opt, noopt,
728 default is noopt])],
729 [case "${enableval}" in
730 yes|noopt)
731 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O0 -fkeep-static-functions"
732 ;;
733 opt)
734 coverage_flags="-fprofile-arcs -ftest-coverage -frandom-seed=\$@ -O2 -fkeep-static-functions"
735 ;;
736 no)
737 # a.k.a. --disable-coverage
738 coverage_flags=""
739 ;;
740 *)
741 AC_MSG_ERROR(unknown coverage setting $enableval)
742 ;;
743 esac],
744 [coverage_flags=""])
745 AC_SUBST(coverage_flags)
746
747 AC_ARG_ENABLE(gather-detailed-mem-stats,
748 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
749 [enable detailed memory allocation stats gathering])], [],
750 [enable_gather_detailed_mem_stats=no])
751 gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else echo 0; fi`
752 AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats,
753 [Define to enable detailed memory allocation stats gathering.])
754
755 AC_ARG_ENABLE(valgrind-annotations,
756 [AS_HELP_STRING([--enable-valgrind-annotations],
757 [enable valgrind runtime interaction])], [],
758 [enable_valgrind_annotations=no])
759 if test x$enable_valgrind_annotations != xno \
760 || test x$ac_valgrind_checking != x; then
761 if (test $have_valgrind_h = no \
762 && test $gcc_cv_header_memcheck_h = no \
763 && test $gcc_cv_header_valgrind_memcheck_h = no); then
764 AC_MSG_ERROR([*** Can't find valgrind/memcheck.h, memcheck.h or valgrind.h])
765 fi
766 AC_DEFINE(ENABLE_VALGRIND_ANNOTATIONS, 1,
767 [Define to get calls to the valgrind runtime enabled.])
768 fi
769
770 # -------------------------------
771 # Miscenalleous configure options
772 # -------------------------------
773
774 # With stabs
775 AC_ARG_WITH(stabs,
776 [AS_HELP_STRING([--with-stabs],
777 [arrange to use stabs instead of host debug format])],
778 stabs="$with_stabs",
779 stabs=no)
780
781 # Determine whether or not multilibs are enabled.
782 AC_ARG_ENABLE(multilib,
783 [AS_HELP_STRING([--enable-multilib],
784 [enable library support for multiple ABIs])],
785 [], [enable_multilib=yes])
786 AC_SUBST(enable_multilib)
787
788 # Determine whether or not multiarch is enabled.
789 AC_ARG_ENABLE(multiarch,
790 [AS_HELP_STRING([--enable-multiarch],
791 [enable support for multiarch paths])],
792 [case "${enableval}" in
793 yes|no|auto) enable_multiarch=$enableval;;
794 *) AC_MSG_ERROR(bad value ${enableval} given for --enable-multiarch option) ;;
795 esac], [enable_multiarch=auto])
796 if test x${enable_multiarch} = xauto; then
797 if test x${with_native_system_header_dir} != x; then
798 ma_msg_suffix=", disabled auto check (configured with --native-system-header-dir)"
799 enable_multiarch=no
800 fi
801 if test x$host != x$target && test "x$with_sysroot" = x; then
802 ma_msg_suffix=", disabled auto check (cross build configured without --with-sysroot)"
803 enable_multiarch=no
804 fi
805 fi
806 AC_MSG_CHECKING(for multiarch configuration)
807 AC_SUBST(enable_multiarch)
808 AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
809
810 # needed for setting the multiarch name for soft-float/hard-float ABIs
811 AC_SUBST(with_cpu)
812 AC_SUBST(with_float)
813
814 # default stack clash protection guard size as power of twos in bytes.
815 # Please keep these in sync with params.def.
816 stk_clash_min=12
817 stk_clash_max=30
818
819 # Keep the default value when the option is not used to 0, this allows us to
820 # distinguish between the cases where the user specifially set a value via
821 # configure and when the normal default value is used.
822 AC_ARG_WITH(stack-clash-protection-guard-size,
823 [AS_HELP_STRING([--with-stack-clash-protection-guard-size=size],
824 [Set the default stack clash protection guard size for specific targets as a power of two in bytes.])],
825 [DEFAULT_STK_CLASH_GUARD_SIZE="$with_stack_clash_protection_guard_size"], [DEFAULT_STK_CLASH_GUARD_SIZE=0])
826 if test $DEFAULT_STK_CLASH_GUARD_SIZE -ne 0 \
827 && (test $DEFAULT_STK_CLASH_GUARD_SIZE -lt $stk_clash_min \
828 || test $DEFAULT_STK_CLASH_GUARD_SIZE -gt $stk_clash_max); then
829 AC_MSG_ERROR(m4_normalize([
830 Invalid value $DEFAULT_STK_CLASH_GUARD_SIZE for --with-stack-clash-protection-guard-size. \
831 Must be between $stk_clash_min and $stk_clash_max.]))
832 fi
833
834 AC_DEFINE_UNQUOTED(DEFAULT_STK_CLASH_GUARD_SIZE, $DEFAULT_STK_CLASH_GUARD_SIZE,
835 [Define to larger than zero set the default stack clash protector size.])
836
837 # Enable __cxa_atexit for C++.
838 AC_ARG_ENABLE(__cxa_atexit,
839 [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
840 [], [])
841
842 # Enable C extension for decimal float if target supports it.
843 GCC_AC_ENABLE_DECIMAL_FLOAT([$target])
844
845 dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi`
846 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_FLOAT, $dfp,
847 [Define to 1 to enable decimal float extension to C.])
848
849 # Use default_decimal_float for dependency.
850 enable_decimal_float=$default_decimal_float
851
852 bid=`if test $enable_decimal_float = bid; then echo 1; else echo 0; fi`
853 AC_DEFINE_UNQUOTED(ENABLE_DECIMAL_BID_FORMAT, $bid,
854 [Define to 1 to specify that we are using the BID decimal floating
855 point format instead of DPD])
856
857 # Enable C extension for fixed-point arithmetic.
858 AC_ARG_ENABLE(fixed-point,
859 [AS_HELP_STRING([--enable-fixed-point],
860 [enable fixed-point arithmetic extension to C])],
861 [],
862 [
863 case $target in
864 arm*)
865 enable_fixed_point=yes
866 ;;
867
868 mips*-*-*)
869 enable_fixed_point=yes
870 ;;
871 *)
872 AC_MSG_WARN([fixed-point is not supported for this target, ignored])
873 enable_fixed_point=no
874 ;;
875 esac
876 ])
877 AC_SUBST(enable_fixed_point)
878
879 fixedpoint=`if test $enable_fixed_point = yes; then echo 1; else echo 0; fi`
880 AC_DEFINE_UNQUOTED(ENABLE_FIXED_POINT, $fixedpoint,
881 [Define to 1 to enable fixed-point arithmetic extension to C.])
882
883 # Enable threads
884 # Pass with no value to take the default
885 # Pass with a value to specify a thread package
886 AC_ARG_ENABLE(threads,
887 [AS_HELP_STRING([[--enable-threads[=LIB]]],
888 [enable thread usage for target GCC,
889 using LIB thread package])],,
890 [enable_threads=''])
891
892 AC_ARG_ENABLE(tls,
893 [AS_HELP_STRING([--enable-tls],
894 [enable or disable generation of tls code
895 overriding the assembler check for tls support])],
896 [
897 case $enable_tls in
898 yes | no) ;;
899 *) AC_MSG_ERROR(['$enable_tls' is an invalid value for --enable-tls.
900 Valid choices are 'yes' and 'no'.]) ;;
901 esac
902 ], [enable_tls=''])
903
904 AC_ARG_ENABLE(vtable-verify,
905 [AS_HELP_STRING([--enable-vtable-verify],
906 [enable vtable verification feature])],,
907 [enable_vtable_verify=no])
908 vtable_verify=`if test x$enable_vtable_verify = xyes; then echo 1; else echo 0; fi`
909 AC_DEFINE_UNQUOTED(ENABLE_VTABLE_VERIFY, $vtable_verify,
910 [Define 0/1 if vtable verification feature is enabled.])
911
912 AC_ARG_ENABLE(objc-gc,
913 [AS_HELP_STRING([--enable-objc-gc],
914 [enable the use of Boehm's garbage collector with
915 the GNU Objective-C runtime])],
916 if test x$enable_objc_gc = xno; then
917 objc_boehm_gc=''
918 else
919 objc_boehm_gc=1
920 fi,
921 objc_boehm_gc='')
922
923 AC_ARG_WITH(dwarf2,
924 [AS_HELP_STRING([--with-dwarf2], [force the default debug format to be DWARF 2])],
925 dwarf2="$with_dwarf2",
926 dwarf2=no)
927
928 AC_ARG_ENABLE(shared,
929 [AS_HELP_STRING([--disable-shared], [don't provide a shared libgcc])],
930 [
931 case $enable_shared in
932 yes | no) ;;
933 *)
934 enable_shared=no
935 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
936 for pkg in $enableval; do
937 if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
938 enable_shared=yes
939 fi
940 done
941 IFS="$ac_save_ifs"
942 ;;
943 esac
944 ], [enable_shared=yes])
945 AC_SUBST(enable_shared)
946
947 AC_ARG_ENABLE(gcov,
948 [ --disable-gcov don't provide libgcov and related host tools],
949 [], [enable_gcov=yes])
950 AC_SUBST(enable_gcov)
951
952 AC_ARG_WITH(specs,
953 [AS_HELP_STRING([--with-specs=SPECS],
954 [add SPECS to driver command-line processing])],
955 [CONFIGURE_SPECS=$withval],
956 [CONFIGURE_SPECS=]
957 )
958 AC_SUBST(CONFIGURE_SPECS)
959
960 ACX_PKGVERSION([GCC])
961 ACX_BUGURL([https://gcc.gnu.org/bugs/])
962
963 # Allow overriding the default URL for documentation
964 AC_ARG_WITH(documentation-root-url,
965 AS_HELP_STRING([--with-documentation-root-url=URL],
966 [Root for documentation URLs]),
967 [case "$withval" in
968 yes) AC_MSG_ERROR([documentation root URL not specified]) ;;
969 no) AC_MSG_ERROR([documentation root URL not specified]) ;;
970 *) DOCUMENTATION_ROOT_URL="$withval"
971 ;;
972 esac],
973 DOCUMENTATION_ROOT_URL="https://gcc.gnu.org/onlinedocs/gcc/"
974 )
975 AC_SUBST(DOCUMENTATION_ROOT_URL)
976
977 # Sanity check enable_languages in case someone does not run the toplevel
978 # configure # script.
979 AC_ARG_ENABLE(languages,
980 [AS_HELP_STRING([--enable-languages=LIST], [specify which front-ends to build])],
981 [case ,${enable_languages}, in
982 ,,|,yes,)
983 # go safe -- we cannot be much sure without the toplevel
984 # configure's
985 # analysis of which target libs are present and usable
986 enable_languages=c
987 ;;
988 *,all,*)
989 AC_MSG_ERROR([only the toplevel supports --enable-languages=all])
990 ;;
991 *,c,*)
992 ;;
993 *)
994 enable_languages=c,${enable_languages}
995 ;;
996 esac],
997 [enable_languages=c])
998
999 # If top-level libada has been disabled, then wire in install-gnatlib
1000 # invocation with `make install', so that one can build and install
1001 # the library manually with `make -C gcc all gnatlib gnattools install'.
1002 if test x"$enable_libada" = xno; then
1003 gnat_install_lib=gnat-install-lib
1004 else
1005 gnat_install_lib=
1006 fi
1007 AC_SUBST(gnat_install_lib)
1008
1009 if test x"$enable_as_accelerator_for" != x; then
1010 AC_DEFINE(ACCEL_COMPILER, 1,
1011 [Define if this compiler should be built as the offload target compiler.])
1012 enable_as_accelerator=yes
1013 case "${target}" in
1014 *-intelmicemul-*)
1015 # In this case we expect offload compiler to be built as native, so we
1016 # need to rename the driver to avoid clashes with host's drivers.
1017 program_transform_name="s&^&${target}-&" ;;
1018 esac
1019 sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
1020 program_transform_name=`echo $program_transform_name | sed $sedscript`
1021 accel_dir_suffix=/accel/${target_noncanonical}
1022 real_target_noncanonical=${enable_as_accelerator_for}
1023 fi
1024 AC_SUBST(enable_as_accelerator)
1025 AC_SUBST(real_target_noncanonical)
1026 AC_SUBST(accel_dir_suffix)
1027
1028 for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
1029 tgt=`echo $tgt | sed 's/=.*//'`
1030
1031 if echo "$tgt" | grep "^hsa" > /dev/null ; then
1032 enable_hsa=1
1033 else
1034 enable_offloading=1
1035 case "$tgt" in
1036 *-intelmicemul-*)
1037 omp_device_property=omp-device-properties-i386
1038 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
1039 ;;
1040 gcn*-*)
1041 omp_device_property=omp-device-properties-gcn
1042 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
1043 ;;
1044 nvptx*-*)
1045 omp_device_property=omp-device-properties-nvptx
1046 omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/nvptx/t-omp-device"
1047 ;;
1048 esac
1049 omp_device_properties="${omp_device_properties} ${tgt}=${omp_device_property}"
1050 omp_device_property_deps="${omp_device_property_deps} ${omp_device_property}"
1051 fi
1052
1053 if test x"$offload_targets" = x; then
1054 offload_targets=$tgt
1055 else
1056 offload_targets="$offload_targets,$tgt"
1057 fi
1058 done
1059 AC_SUBST(omp_device_properties)
1060 AC_SUBST(omp_device_property_deps)
1061
1062 AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
1063 [Define to offload targets, separated by commas.])
1064 if test x"$enable_offloading" != x; then
1065 AC_DEFINE(ENABLE_OFFLOADING, 1,
1066 [Define this to enable support for offloading.])
1067 else
1068 AC_DEFINE(ENABLE_OFFLOADING, 0,
1069 [Define this to enable support for offloading.])
1070 fi
1071
1072 if test x"$enable_hsa" = x1 ; then
1073 AC_DEFINE(ENABLE_HSA, 1,
1074 [Define this to enable support for generating HSAIL.])
1075 fi
1076
1077 AC_ARG_WITH(multilib-list,
1078 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
1079 :,
1080 with_multilib_list=default)
1081
1082 # -------------------------
1083 # Checks for other programs
1084 # -------------------------
1085
1086 AC_PROG_MAKE_SET
1087
1088 # Find some useful tools
1089 AC_PROG_AWK
1090 # We need awk to create options.c and options.h.
1091 # Bail out if it's missing.
1092 case ${AWK} in
1093 "") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
1094 esac
1095
1096 gcc_AC_PROG_LN_S
1097 ACX_PROG_LN($LN_S)
1098 AC_PROG_RANLIB
1099 ranlib_flags=""
1100 AC_SUBST(ranlib_flags)
1101
1102 gcc_AC_PROG_INSTALL
1103
1104 # See if cmp has --ignore-initial.
1105 gcc_AC_PROG_CMP_IGNORE_INITIAL
1106
1107 # See if we have the mktemp command.
1108 AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
1109
1110 # See if makeinfo has been installed and is modern enough
1111 # that we can use it.
1112 ACX_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1113 [GNU texinfo.* \([0-9][0-9.]*\)],
1114 [4.[7-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
1115 if test $gcc_cv_prog_makeinfo_modern = no; then
1116 AC_MSG_WARN([
1117 *** Makeinfo is missing or too old.
1118 *** Info documentation will not be built.])
1119 BUILD_INFO=
1120 else
1121 BUILD_INFO=info
1122 fi
1123 AC_SUBST(BUILD_INFO)
1124
1125 # Is pod2man recent enough to regenerate manpages?
1126 AC_MSG_CHECKING([for recent Pod::Man])
1127 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
1128 AC_MSG_RESULT(yes)
1129 GENERATED_MANPAGES=generated-manpages
1130 else
1131 AC_MSG_RESULT(no)
1132 GENERATED_MANPAGES=
1133 fi
1134 AC_SUBST(GENERATED_MANPAGES)
1135
1136 MISSING="${CONFIG_SHELL-/bin/sh} $ac_aux_dir/missing"
1137
1138 # How about lex?
1139 dnl Don't use AC_PROG_LEX; we insist on flex.
1140 dnl LEXLIB is not useful in gcc.
1141 AC_CHECK_PROGS([FLEX], flex, [$MISSING flex])
1142
1143 # Bison?
1144 AC_CHECK_PROGS([BISON], bison, [$MISSING bison])
1145
1146 # Binutils are not build modules, unlike bison/flex/makeinfo. So we
1147 # check for build == host before using them.
1148
1149 # NM
1150 if test x${build} = x${host} && test -f $srcdir/../binutils/nm.c \
1151 && test -d ../binutils ; then
1152 NM='${objdir}/../binutils/nm-new'
1153 else
1154 AC_CHECK_PROG(NM, nm, nm, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing nm)
1155 fi
1156
1157 # AR
1158 if test x${build} = x${host} && test -f $srcdir/../binutils/ar.c \
1159 && test -d ../binutils ; then
1160 AR='${objdir}/../binutils/ar'
1161 else
1162 AC_CHECK_PROG(AR, ar, ar, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing ar)
1163 fi
1164
1165 # The jit documentation looks better if built with sphinx, but can be
1166 # built with texinfo if sphinx is not available.
1167 # Set "doc_build_sys" to "sphinx" or "texinfo" accordingly.
1168 AC_CHECK_PROG(doc_build_sys, sphinx-build, sphinx, texinfo)
1169
1170 # --------------------
1171 # Checks for C headers
1172 # --------------------
1173
1174 # Need to reject headers which give warnings, so that the -Werror bootstrap
1175 # works later. *sigh* This needs to come before all header checks.
1176 AC_PROG_CPP_WERROR
1177
1178 AC_HEADER_STDC
1179 AC_HEADER_TIME
1180 ACX_HEADER_STRING
1181 AC_HEADER_SYS_WAIT
1182 AC_HEADER_TIOCGWINSZ
1183 AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
1184 fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
1185 sys/resource.h sys/param.h sys/times.h sys/stat.h \
1186 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
1187
1188 # Check for thread headers.
1189 AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
1190 AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
1191
1192 # These tests can't be done till we know if we have limits.h.
1193 gcc_AC_C_CHAR_BIT
1194 AC_C_BIGENDIAN
1195
1196 # ----------------------
1197 # Checks for C++ headers
1198 # ----------------------
1199
1200 dnl Autoconf will give an error in the configure script if there is no
1201 dnl C++ preprocessor. Hack to prevent that.
1202 m4_pushdef([AC_MSG_ERROR], m4_defn([AC_MSG_WARN]))[]dnl
1203 AC_PROG_CXXCPP
1204 m4_popdef([AC_MSG_ERROR])[]dnl
1205
1206 AC_CHECK_HEADERS(unordered_map)
1207 AC_CHECK_HEADERS(tr1/unordered_map)
1208 AC_CHECK_HEADERS(ext/hash_map)
1209
1210 # --------
1211 # Dependency checking.
1212 # --------
1213
1214 ZW_CREATE_DEPDIR
1215 AC_CONFIG_COMMANDS([gccdepdir],[
1216 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
1217 for lang in $subdirs c-family common
1218 do
1219 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
1220 done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
1221
1222 ZW_PROG_COMPILER_DEPENDENCIES([CXX])
1223
1224 # --------
1225 # UNSORTED
1226 # --------
1227
1228
1229 # These libraries may be used by collect2.
1230 # We may need a special search path to get them linked.
1231 AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
1232 [save_LIBS="$LIBS"
1233 for libs in '' -lld -lmld \
1234 '-L/usr/lib/cmplrs/cc2.11 -lmld' \
1235 '-L/usr/lib/cmplrs/cc3.11 -lmld'
1236 do
1237 LIBS="$libs"
1238 AC_TRY_LINK_FUNC(ldopen,
1239 [gcc_cv_collect2_libs="$libs"; break])
1240 done
1241 LIBS="$save_LIBS"
1242 test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
1243 case $gcc_cv_collect2_libs in
1244 "none required") ;;
1245 *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
1246 esac
1247 AC_SUBST(COLLECT2_LIBS)
1248
1249 # When building Ada code on Alpha, we need exc_resume which is usually in
1250 # -lexc. So test for it.
1251 save_LIBS="$LIBS"
1252 LIBS=
1253 AC_SEARCH_LIBS(exc_resume, exc)
1254 GNAT_LIBEXC="$LIBS"
1255 LIBS="$save_LIBS"
1256 AC_SUBST(GNAT_LIBEXC)
1257
1258 # To support -mcpu=native on Solaris/SPARC, we need libkstat.
1259 save_LIBS="$LIBS"
1260 LIBS=
1261 AC_SEARCH_LIBS(kstat_open, kstat)
1262 EXTRA_GCC_LIBS="$LIBS"
1263 LIBS="$save_LIBS"
1264 AC_SUBST(EXTRA_GCC_LIBS)
1265
1266 # Some systems put ldexp and frexp in libm instead of libc; assume
1267 # they're both in the same place. jcf-dump needs them.
1268 save_LIBS="$LIBS"
1269 LIBS=
1270 AC_SEARCH_LIBS(ldexp, m)
1271 LDEXP_LIB="$LIBS"
1272 LIBS="$save_LIBS"
1273 AC_SUBST(LDEXP_LIB)
1274
1275 # Some systems need dlopen
1276 save_LIBS="$LIBS"
1277 LIBS=
1278 AC_SEARCH_LIBS(dlopen, dl)
1279 DL_LIB="$LIBS"
1280 LIBS="$save_LIBS"
1281 AC_SUBST(DL_LIB)
1282
1283 # Use <inttypes.h> only if it exists,
1284 # doesn't clash with <sys/types.h>, declares intmax_t and defines
1285 # PRId64
1286 AC_MSG_CHECKING(for inttypes.h)
1287 AC_CACHE_VAL(gcc_cv_header_inttypes_h,
1288 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1289 [[#define __STDC_FORMAT_MACROS
1290 #include <sys/types.h>
1291 #include <inttypes.h>]],
1292 [[intmax_t i = -1;
1293 #ifndef PRId64
1294 choke me
1295 #endif]])],
1296 [gcc_cv_header_inttypes_h=yes],
1297 [gcc_cv_header_inttypes_h=no])])
1298 AC_MSG_RESULT($gcc_cv_header_inttypes_h)
1299 if test $gcc_cv_header_inttypes_h = yes; then
1300 AC_DEFINE(HAVE_INTTYPES_H, 1,
1301 [Define if you have a working <inttypes.h> header file.])
1302 fi
1303
1304 # Look for the ZSTD package.
1305 ZSTD_INCLUDE=
1306 ZSTD_LIB=
1307 AC_SUBST(ZSTD_INCLUDE)
1308 AC_SUBST(ZSTD_LIB)
1309 ZSTD_CPPFLAGS=
1310 ZSTD_LDFLAGS=
1311 AC_ARG_WITH(zstd,
1312 [AS_HELP_STRING([--with-zstd=PATH],
1313 [specify prefix directory for installed zstd library.
1314 Equivalent to --with-zstd-include=PATH/include
1315 plus --with-zstd-lib=PATH/lib])])
1316 AC_ARG_WITH(zstd-include,
1317 [AS_HELP_STRING([--with-zstd-include=PATH],
1318 [specify directory for installed zstd include files])])
1319 AC_ARG_WITH(zstd-lib,
1320 [AS_HELP_STRING([--with-zstd-lib=PATH],
1321 [specify directory for the installed zstd library])])
1322 case "x$with_zstd" in
1323 x) ;;
1324 xno)
1325 ZSTD_INCLUDE=no
1326 ZSTD_LIB=no
1327 ;;
1328 *) ZSTD_INCLUDE=$with_zstd/include
1329 ZSTD_LIB=$with_zstd/lib
1330 ;;
1331 esac
1332 if test "x$with_zstd_include" != x; then
1333 ZSTD_INCLUDE=$with_zstd_include
1334 fi
1335 if test "x$with_zstd_lib" != x; then
1336 ZSTD_LIB=$with_zstd_lib
1337 fi
1338 if test "x$ZSTD_INCLUDE" != x \
1339 && test "x$ZSTD_INCLUDE" != xno; then
1340 ZSTD_CPPFLAGS=-I$ZSTD_INCLUDE
1341 fi
1342 if test "x$ZSTD_LIB" != x \
1343 && test "x$ZSTD_LIB" != xno; then
1344 ZSTD_LDFLAGS=-L$ZSTD_LIB
1345 fi
1346
1347 CXXFLAGS="$CXXFLAGS $ZSTD_CPPFLAGS"
1348 LDFLAGS="$LDFLAGS $ZSTD_LDFLAGS"
1349
1350 AC_MSG_CHECKING(for zstd.h)
1351 AC_CACHE_VAL(gcc_cv_header_zstd_h,
1352 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
1353 [[#include <zstd.h>]])],
1354 [gcc_cv_header_zstd_h=yes],
1355 [gcc_cv_header_zstd_h=no])])
1356 AC_MSG_RESULT($gcc_cv_header_zstd_h)
1357 if test $gcc_cv_header_zstd_h = yes; then
1358 AC_DEFINE(HAVE_ZSTD_H, 1,
1359 [Define if you have a working <zstd.h> header file.])
1360 fi
1361
1362 # LTO can use zstd compression algorithm
1363 save_LIBS="$LIBS"
1364 LIBS=
1365 AC_SEARCH_LIBS(ZSTD_compress, zstd)
1366 ZSTD_LIB="$LIBS"
1367 LIBS="$save_LIBS"
1368 AC_SUBST(ZSTD_LIB)
1369
1370 dnl Disabled until we have a complete test for buggy enum bitfields.
1371 dnl gcc_AC_C_ENUM_BF_UNSIGNED
1372
1373 define(gcc_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
1374 ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
1375 fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
1376 fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
1377 putchar_unlocked putc_unlocked)
1378 AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
1379 popen sysconf strsignal getrusage nl_langinfo \
1380 gettimeofday mbstowcs wcswidth mmap setlocale \
1381 gcc_UNLOCKED_FUNCS madvise mallinfo)
1382
1383 if test x$ac_cv_func_mbstowcs = xyes; then
1384 AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
1385 [ AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1386 int main()
1387 {
1388 mbstowcs(0, "", 0);
1389 return 0;
1390 }]])],
1391 [gcc_cv_func_mbstowcs_works=yes],
1392 [gcc_cv_func_mbstowcs_works=no],
1393 [gcc_cv_func_mbstowcs_works=yes])])
1394 if test x$gcc_cv_func_mbstowcs_works = xyes; then
1395 AC_DEFINE(HAVE_WORKING_MBSTOWCS, 1,
1396 [Define this macro if mbstowcs does not crash when its
1397 first argument is NULL.])
1398 fi
1399 fi
1400
1401 AC_CHECK_TYPE(ssize_t, int)
1402 AC_CHECK_TYPE(caddr_t, char *)
1403
1404 GCC_AC_FUNC_MMAP_BLACKLIST
1405
1406 case "${host}" in
1407 *-*-*vms*)
1408 # Under VMS, vfork works very differently than on Unix. The standard test
1409 # won't work, and it isn't easily adaptable. It makes more sense to
1410 # just force it.
1411 ac_cv_func_vfork_works=yes
1412 ;;
1413 esac
1414 AC_FUNC_FORK
1415
1416 AM_ICONV
1417
1418 # Until we have in-tree GNU iconv:
1419 LIBICONV_DEP=
1420 if test -f "$LTLIBICONV"; then
1421 LIBICONV_DEP=$LTLIBICONV
1422 fi
1423 AC_SUBST(LIBICONV_DEP)
1424
1425 AM_LC_MESSAGES
1426
1427 AM_LANGINFO_CODESET
1428
1429 # We will need to find libiberty.h and ansidecl.h
1430 saved_CFLAGS="$CFLAGS"
1431 CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1432 saved_CXXFLAGS="$CXXFLAGS"
1433 CXXFLAGS="$CXXFLAGS -I${srcdir} -I${srcdir}/../include $GMPINC"
1434
1435 # gcc_AC_CHECK_DECLS doesn't support overloaded functions, so use the
1436 # normal autoconf function for these. But force definition of
1437 # HAVE_DECL_BASENAME like gcc_AC_CHECK_DECLS does, to suppress the bizarre
1438 # basename handling in libiberty.h.
1439 AC_CHECK_DECLS([basename(const char*), strstr(const char*,const char*)], , ,[
1440 #undef HAVE_DECL_BASENAME
1441 #define HAVE_DECL_BASENAME 1
1442 #include "ansidecl.h"
1443 #include "system.h"])
1444
1445 gcc_AC_CHECK_DECLS(getenv atol atoll asprintf sbrk abort atof getcwd getwd \
1446 madvise stpcpy strnlen strsignal strverscmp \
1447 strtol strtoul strtoll strtoull setenv unsetenv \
1448 errno snprintf vsnprintf vasprintf malloc realloc calloc \
1449 free getopt clock getpagesize ffs gcc_UNLOCKED_FUNCS, , ,[
1450 #include "ansidecl.h"
1451 #include "system.h"])
1452
1453 gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
1454 #include "ansidecl.h"
1455 #include "system.h"
1456 #ifdef HAVE_SYS_RESOURCE_H
1457 #include <sys/resource.h>
1458 #endif
1459 ])
1460
1461 gcc_AC_CHECK_DECLS(mallinfo, , ,[
1462 #include "ansidecl.h"
1463 #include "system.h"
1464 #ifdef HAVE_MALLOC_H
1465 #include <malloc.h>
1466 #endif
1467 ])
1468
1469 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1470 #include "ansidecl.h"
1471 #include "system.h"
1472 #ifdef HAVE_SYS_RESOURCE_H
1473 #include <sys/resource.h>
1474 #endif
1475 ]], [[rlim_t l = 0;]])],[],[AC_DEFINE([rlim_t],[long],
1476 [Define to `long' if <sys/resource.h> doesn't define.])])
1477
1478 # On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
1479 # FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
1480 # in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
1481 # to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
1482 gcc_AC_CHECK_DECLS(ldgetname, , ,[
1483 #include "ansidecl.h"
1484 #include "system.h"
1485 #ifdef HAVE_LDFCN_H
1486 #undef FREAD
1487 #undef FWRITE
1488 #include <ldfcn.h>
1489 #endif
1490 ])
1491
1492 gcc_AC_CHECK_DECLS(times, , ,[
1493 #include "ansidecl.h"
1494 #include "system.h"
1495 #ifdef HAVE_SYS_TIMES_H
1496 #include <sys/times.h>
1497 #endif
1498 ])
1499
1500 gcc_AC_CHECK_DECLS(sigaltstack, , ,[
1501 #include "ansidecl.h"
1502 #include "system.h"
1503 #include <signal.h>
1504 ])
1505
1506 # More time-related stuff.
1507 AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
1508 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1509 #include "ansidecl.h"
1510 #include "system.h"
1511 #ifdef HAVE_SYS_TIMES_H
1512 #include <sys/times.h>
1513 #endif
1514 ]], [[struct tms tms;]])],[ac_cv_struct_tms=yes],[ac_cv_struct_tms=no])])
1515 if test $ac_cv_struct_tms = yes; then
1516 AC_DEFINE(HAVE_STRUCT_TMS, 1,
1517 [Define if <sys/times.h> defines struct tms.])
1518 fi
1519
1520 # use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
1521 # revisit after autoconf 2.50.
1522 AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
1523 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1524 #include "ansidecl.h"
1525 #include "system.h"
1526 ]], [[clock_t x;]])],[gcc_cv_type_clock_t=yes],[gcc_cv_type_clock_t=no])])
1527 if test $gcc_cv_type_clock_t = yes; then
1528 AC_DEFINE(HAVE_CLOCK_T, 1,
1529 [Define if <time.h> defines clock_t.])
1530 fi
1531
1532 # Check if F_SETLKW is supported by fcntl.
1533 AC_CACHE_CHECK(for F_SETLKW, ac_cv_f_setlkw, [
1534 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1535 #include <fcntl.h>]], [[
1536 struct flock fl;
1537 fl.l_whence = 0;
1538 fl.l_start = 0;
1539 fl.l_len = 0;
1540 fl.l_pid = 0;
1541 return fcntl (1, F_SETLKW, &fl);]])],
1542 [ac_cv_f_setlkw=yes],[ac_cv_f_setlkw=no])])
1543 if test $ac_cv_f_setlkw = yes; then
1544 AC_DEFINE(HOST_HAS_F_SETLKW, 1,
1545 [Define if F_SETLKW supported by fcntl.])
1546 fi
1547
1548 # Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
1549 CFLAGS="$saved_CFLAGS"
1550 CXXFLAGS="$saved_CXXFLAGS"
1551
1552 # mkdir takes a single argument on some systems.
1553 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
1554
1555 # File extensions
1556 manext='.1'
1557 objext='.o'
1558 AC_SUBST(manext)
1559 AC_SUBST(objext)
1560
1561 # With Setjmp/Longjmp based exception handling.
1562 AC_ARG_ENABLE(sjlj-exceptions,
1563 [AS_HELP_STRING([--enable-sjlj-exceptions],
1564 [arrange to use setjmp/longjmp exception handling])],
1565 [case $target in
1566 *-*-hpux10*)
1567 if test $enableval != yes; then
1568 AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
1569 enableval=yes
1570 fi
1571 ;;
1572 esac
1573 force_sjlj_exceptions=yes],
1574 [case $target in
1575 *-*-hpux10*)
1576 force_sjlj_exceptions=yes
1577 enableval=yes
1578 ;;
1579 lm32*-*-*)
1580 force_sjlj_exceptions=yes
1581 enableval=yes
1582 ;;
1583 *)
1584 force_sjlj_exceptions=no
1585 ;;
1586 esac])
1587 if test $force_sjlj_exceptions = yes; then
1588 sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
1589 AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
1590 [Define 0/1 to force the choice for exception handling model.])
1591 fi
1592
1593 # --------------------------------------------------------
1594 # Build, host, and target specific configuration fragments
1595 # --------------------------------------------------------
1596
1597 # Collect build-machine-specific information.
1598 . ${srcdir}/config.build || exit 1
1599
1600 # Collect host-machine-specific information.
1601 . ${srcdir}/config.host || exit 1
1602
1603 target_gtfiles=
1604
1605 # Collect target-machine-specific information.
1606 . ${srcdir}/config.gcc || exit 1
1607
1608 extra_objs="${host_extra_objs} ${extra_objs}"
1609 extra_gcc_objs="${host_extra_gcc_objs} ${extra_gcc_objs}"
1610
1611 # Default the target-machine variables that were not explicitly set.
1612 if test x"$tm_file" = x
1613 then tm_file=$cpu_type/$cpu_type.h; fi
1614
1615 if test x"$extra_headers" = x
1616 then extra_headers=; fi
1617
1618 if test x$md_file = x
1619 then md_file=$cpu_type/$cpu_type.md; fi
1620
1621 if test x$out_file = x
1622 then out_file=$cpu_type/$cpu_type.c; fi
1623
1624 if test x"$tmake_file" = x
1625 then tmake_file=$cpu_type/t-$cpu_type
1626 fi
1627
1628 # Support --enable-initfini-array.
1629 if test x$enable_initfini_array != xno; then
1630 tm_file="${tm_file} initfini-array.h"
1631 fi
1632
1633 if test x"$dwarf2" = xyes
1634 then tm_file="$tm_file tm-dwarf2.h"
1635 fi
1636
1637 # Say what files are being used for the output code and MD file.
1638 echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
1639 echo "Using \`$srcdir/config/$md_file' as machine description file."
1640
1641 # If any of the xm_file variables contain nonexistent files, warn
1642 # about them and drop them.
1643
1644 bx=
1645 for x in $build_xm_file; do
1646 if test -f $srcdir/config/$x
1647 then bx="$bx $x"
1648 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1649 fi
1650 done
1651 build_xm_file="$bx"
1652
1653 hx=
1654 for x in $host_xm_file; do
1655 if test -f $srcdir/config/$x
1656 then hx="$hx $x"
1657 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1658 fi
1659 done
1660 host_xm_file="$hx"
1661
1662 tx=
1663 for x in $xm_file; do
1664 if test -f $srcdir/config/$x
1665 then tx="$tx $x"
1666 else AC_MSG_WARN($srcdir/config/$x does not exist.)
1667 fi
1668 done
1669 xm_file="$tx"
1670
1671 count=a
1672 for f in $tm_file; do
1673 count=${count}x
1674 done
1675 if test $count = ax; then
1676 echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
1677 else
1678 echo "Using the following target machine macro files:"
1679 for f in $tm_file; do
1680 echo " $srcdir/config/$f"
1681 done
1682 fi
1683
1684 if test x$use_long_long_for_widest_fast_int = xyes; then
1685 AC_DEFINE(USE_LONG_LONG_FOR_WIDEST_FAST_INT, 1,
1686 [Define to 1 if the 'long long' type is wider than 'long' but still
1687 efficiently supported by the host hardware.])
1688 fi
1689
1690 gnu_ld_bool=`if test x"$gnu_ld" = x"yes"; then echo 1; else echo 0; fi`
1691 AC_DEFINE_UNQUOTED(HAVE_GNU_LD, $gnu_ld_bool, [Define to 1 if using GNU ld.])
1692
1693 gnu_as_bool=`if test x"$gas" = x"yes"; then echo 1; else echo 0; fi`
1694 AC_DEFINE_UNQUOTED(HAVE_GNU_AS, $gnu_as_bool, [Define to 1 if using GNU as.])
1695
1696 count=a
1697 for f in $host_xm_file; do
1698 count=${count}x
1699 done
1700 if test $count = a; then
1701 :
1702 elif test $count = ax; then
1703 echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
1704 else
1705 echo "Using the following host machine macro files:"
1706 for f in $host_xm_file; do
1707 echo " $srcdir/config/$f"
1708 done
1709 fi
1710 echo "Using ${out_host_hook_obj} for host machine hooks."
1711
1712 if test "$host_xm_file" != "$build_xm_file"; then
1713 count=a
1714 for f in $build_xm_file; do
1715 count=${count}x
1716 done
1717 if test $count = a; then
1718 :
1719 elif test $count = ax; then
1720 echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
1721 else
1722 echo "Using the following build machine macro files:"
1723 for f in $build_xm_file; do
1724 echo " $srcdir/config/$f"
1725 done
1726 fi
1727 fi
1728
1729 if test -n "$configured_native_system_header_dir"; then
1730 native_system_header_dir=$configured_native_system_header_dir
1731 fi
1732 NATIVE_SYSTEM_HEADER_DIR="$native_system_header_dir"
1733 AC_SUBST(NATIVE_SYSTEM_HEADER_DIR)
1734
1735 case ${host} in
1736 powerpc*-*-darwin*)
1737 AC_CACHE_CHECK([whether mcontext_t fields have underscores],
1738 gcc_cv_mcontext_underscores,
1739 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1740 #include <sys/cdefs.h>
1741 #include <sys/signal.h>
1742 #include <ucontext.h>
1743 int main() { mcontext_t m; if (m->ss.srr0) return 0; return 0; }
1744 ])],
1745 gcc_cv_mcontext_underscores=no, gcc_cv_mcontext_underscores=yes))
1746 if test $gcc_cv_mcontext_underscores = yes; then
1747 AC_DEFINE(HAS_MCONTEXT_T_UNDERSCORES,,dnl
1748 [mcontext_t fields start with __])
1749 fi
1750 ;;
1751 esac
1752
1753 # ---------
1754 # Threading
1755 # ---------
1756
1757 # Check if a valid thread package
1758 case ${enable_threads} in
1759 "" | no)
1760 # No threads
1761 target_thread_file='single'
1762 ;;
1763 yes)
1764 # default
1765 target_thread_file='single'
1766 ;;
1767 aix | dce | lynx | mipssde | posix | rtems | \
1768 single | tpf | vxworks | win32)
1769 target_thread_file=${enable_threads}
1770 ;;
1771 *)
1772 echo "${enable_threads} is an unknown thread package" 1>&2
1773 exit 1
1774 ;;
1775 esac
1776
1777 if test x${thread_file} = x; then
1778 # No thread file set by target-specific clauses in config.gcc,
1779 # so use file chosen by default logic above
1780 thread_file=${target_thread_file}
1781 fi
1782
1783 # --------
1784 # UNSORTED
1785 # --------
1786
1787 use_cxa_atexit=no
1788 if test x$enable___cxa_atexit = xyes || \
1789 test x$enable___cxa_atexit = x -a x$default_use_cxa_atexit = xyes; then
1790 if test x$host = x$target; then
1791 case $host in
1792 # mingw32 doesn't have __cxa_atexit but uses atexit registration
1793 # keyed to flag_use_cxa_atexit
1794 *-*-mingw32*)
1795 use_cxa_atexit=yes
1796 ;;
1797 powerpc-ibm-aix*)
1798 use_cxa_atexit=yes
1799 ;;
1800 *)
1801 AC_CHECK_FUNC(__cxa_atexit,[use_cxa_atexit=yes],
1802 [echo "__cxa_atexit can't be enabled on this target"])
1803 ;;
1804 esac
1805 else
1806 # We can't check for __cxa_atexit when building a cross, so assume
1807 # it is available
1808 use_cxa_atexit=yes
1809 fi
1810 if test x$use_cxa_atexit = xyes; then
1811 AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 2,
1812 [Define if you want to use __cxa_atexit, rather than atexit, to
1813 register C++ destructors for local statics and global objects.
1814 This is essential for fully standards-compliant handling of
1815 destructors, but requires __cxa_atexit in libc.])
1816 fi
1817 fi
1818
1819 # Look for a file containing extra machine modes.
1820 if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
1821 extra_modes_file='$(srcdir)'/config/${extra_modes}
1822 AC_SUBST(extra_modes_file)
1823 AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "config/$extra_modes",
1824 [Define to the name of a file containing a list of extra machine modes
1825 for this architecture.])
1826 fi
1827
1828 # Convert extra_options into a form suitable for Makefile use.
1829 extra_opt_files=
1830 all_opt_files=
1831 for f in $extra_options; do
1832 extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"
1833 all_opt_files="$all_opt_files $srcdir/config/$f"
1834 done
1835 AC_SUBST(extra_opt_files)
1836
1837 # auto-host.h is the file containing items generated by autoconf and is
1838 # the first file included by config.h.
1839 # If host=build, it is correct to have bconfig include auto-host.h
1840 # as well. If host!=build, we are in error and need to do more
1841 # work to find out the build config parameters.
1842 if test x$host = x$build
1843 then
1844 build_auto=auto-host.h
1845 HAVE_AUTO_BUILD='# '
1846 else
1847 # We create a subdir, then run autoconf in the subdir.
1848 # To prevent recursion we set host and build for the new
1849 # invocation of configure to the build for this invocation
1850 # of configure.
1851 tempdir=build.$$
1852 rm -rf $tempdir
1853 mkdir $tempdir
1854 cd $tempdir
1855 case ${srcdir} in
1856 /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
1857 *) realsrcdir=../${srcdir};;
1858 esac
1859 # Clearing GMPINC is necessary to prevent host headers being
1860 # used by the build compiler. Defining GENERATOR_FILE stops
1861 # system.h from including gmp.h.
1862 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
1863 CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
1864 LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
1865 GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
1866 ${realsrcdir}/configure \
1867 --enable-languages=${enable_languages-all} \
1868 ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
1869 ${enable_option_checking+--enable-option-checking="$enable_option_checking"} \
1870 --target=$target_alias --host=$build_alias \
1871 --build=$build_alias || exit # retaining $tempdir
1872
1873 # We just finished tests for the build machine, so rename
1874 # the file auto-build.h in the gcc directory.
1875 mv auto-host.h ../auto-build.h
1876 cd ..
1877 rm -rf $tempdir
1878 build_auto=auto-build.h
1879 HAVE_AUTO_BUILD=
1880 fi
1881 AC_SUBST(build_subdir)
1882 AC_SUBST(HAVE_AUTO_BUILD)
1883
1884 tm_file="${tm_file} defaults.h"
1885 tm_p_file="${tm_p_file} tm-preds.h"
1886 tm_d_file="${tm_d_file} defaults.h"
1887 host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
1888 build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
1889 # We don't want ansidecl.h in target files, write code there in ISO/GNU C.
1890 # put this back in temporarily.
1891 xm_file="auto-host.h ansidecl.h ${xm_file}"
1892
1893 # --------
1894 # UNSORTED
1895 # --------
1896
1897 changequote(,)dnl
1898 # Compile in configure arguments.
1899 if test -f configargs.h ; then
1900 # Being re-configured.
1901 gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
1902 gcc_reconf_arguments=`echo "$gcc_config_arguments" | sed -e 's/^.*\( : (reconfigured) .*$\)/\1/'`
1903 if [ "$gcc_reconf_arguments" != " : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" ]; then
1904 gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
1905 fi
1906 else
1907 gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
1908 fi
1909
1910 # Double all backslashes and backslash all quotes to turn
1911 # gcc_config_arguments into a C string.
1912 sed -e 's/\\/\\\\/g; s/"/\\"/g' <<EOF >conftest.out
1913 $gcc_config_arguments
1914 EOF
1915 gcc_config_arguments_str=`cat conftest.out`
1916 rm -f conftest.out
1917
1918 cat > configargs.h <<EOF
1919 /* Generated automatically. */
1920 static const char configuration_arguments[] = "$gcc_config_arguments_str";
1921 static const char thread_model[] = "$thread_file";
1922
1923 static const struct {
1924 const char *name, *value;
1925 } configure_default_options[] = $configure_default_options;
1926 EOF
1927 changequote([,])dnl
1928
1929 changequote(,)dnl
1930 gcc_BASEVER=`cat $srcdir/BASE-VER`
1931 gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
1932 gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
1933 if test -f $srcdir/REVISION ; then
1934 gcc_REVISION=`cat $srcdir/REVISION`
1935 else
1936 gcc_REVISION=""
1937 fi
1938 cat > plugin-version.h <<EOF
1939 #include "configargs.h"
1940
1941 #define GCCPLUGIN_VERSION_MAJOR `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
1942 #define GCCPLUGIN_VERSION_MINOR `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
1943 #define GCCPLUGIN_VERSION_PATCHLEVEL `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
1944 #define GCCPLUGIN_VERSION (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
1945
1946 static char basever[] = "$gcc_BASEVER";
1947 static char datestamp[] = "$gcc_DATESTAMP";
1948 static char devphase[] = "$gcc_DEVPHASE";
1949 static char revision[] = "$gcc_REVISION";
1950
1951 /* FIXME plugins: We should make the version information more precise.
1952 One way to do is to add a checksum. */
1953
1954 static struct plugin_gcc_version gcc_version = {basever, datestamp,
1955 devphase, revision,
1956 configuration_arguments};
1957 EOF
1958 changequote([,])dnl
1959
1960 # Determine what GCC version number to use in filesystem paths.
1961 GCC_BASE_VER
1962
1963 # Internationalization
1964 ZW_GNU_GETTEXT_SISTER_DIR
1965
1966 # If LIBINTL contains LIBICONV, then clear LIBICONV so we don't get
1967 # -liconv on the link line twice.
1968 case "$LIBINTL" in *$LIBICONV*)
1969 LIBICONV= ;;
1970 esac
1971
1972 AC_ARG_ENABLE(secureplt,
1973 [AS_HELP_STRING([--enable-secureplt],
1974 [enable -msecure-plt by default for PowerPC])],
1975 [], [])
1976
1977 AC_ARG_ENABLE(mingw-wildcard,
1978 [AS_HELP_STRING([--enable-mingw-wildcard],
1979 [Set whether to expand wildcard on command-line.
1980 Default to platform configuration])],
1981 [],[enable_mingw_wildcard=platform])
1982 AS_IF([test x"$enable_mingw_wildcard" != xplatform ],
1983 [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD,
1984 $(test x"$enable_mingw_wildcard" = xno; echo $?),
1985 [Value to set mingw's _dowildcard to.])])
1986
1987 AC_ARG_ENABLE(large-address-aware,
1988 [AS_HELP_STRING([--enable-large-address-aware],
1989 [Link mingw executables with --large-address-aware])])
1990 AS_IF([test x"$enable_large_address_aware" = xyes],
1991 [AC_DEFINE([MINGW_DEFAULT_LARGE_ADDR_AWARE], 1,
1992 [Define if we should link mingw executables with --large-address-aware])])
1993
1994 AC_ARG_ENABLE(leading-mingw64-underscores,
1995 AS_HELP_STRING([--enable-leading-mingw64-underscores],
1996 [enable leading underscores on 64 bit mingw targets]),
1997 [],[])
1998 AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
1999 [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
2000 [Define if we should use leading underscore on 64 bit mingw targets])])
2001
2002 AC_ARG_ENABLE(cld,
2003 [AS_HELP_STRING([--enable-cld], [enable -mcld by default for 32bit x86])], [],
2004 [enable_cld=no])
2005
2006 AC_ARG_ENABLE(frame-pointer,
2007 [AS_HELP_STRING([--enable-frame-pointer],
2008 [enable -fno-omit-frame-pointer by default for x86])], [],
2009 [
2010 case $target_os in
2011 linux* | gnu* | darwin[[8912]]* | cygwin* | mingw*)
2012 # Enable -fomit-frame-pointer by default for these systems with DWARF2.
2013 enable_frame_pointer=no
2014 ;;
2015 *)
2016 enable_frame_pointer=yes
2017 ;;
2018 esac
2019 ])
2020
2021 case $target in
2022 i[[34567]]86-*-* | x86_64-*-*)
2023 if test "x$enable_cld" = xyes; then
2024 tm_defines="${tm_defines} USE_IX86_CLD=1"
2025 fi
2026 if test "x$enable_frame_pointer" = xyes; then
2027 tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
2028 fi
2029 ;;
2030 esac
2031
2032 # Windows32 Registry support for specifying GCC installation paths.
2033 AC_ARG_ENABLE(win32-registry,
2034 [AS_HELP_STRING([--disable-win32-registry],
2035 [disable lookup of installation paths in the
2036 Registry on Windows hosts])
2037 AS_HELP_STRING([--enable-win32-registry], [enable registry lookup (default)])
2038 AS_HELP_STRING([--enable-win32-registry=KEY],
2039 [use KEY instead of GCC version as the last portion
2040 of the registry key])],,)
2041
2042 case $host_os in
2043 win32 | pe | cygwin* | mingw32*)
2044 if test "x$enable_win32_registry" != xno; then
2045 AC_SEARCH_LIBS(RegOpenKeyExA, advapi32,, [enable_win32_registry=no])
2046 fi
2047
2048 if test "x$enable_win32_registry" != xno; then
2049 AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
2050 [Define to 1 if installation paths should be looked up in the Windows
2051 Registry. Ignored on non-Windows hosts.])
2052
2053 if test "x$enable_win32_registry" != xyes \
2054 && test "x$enable_win32_registry" != x; then
2055 AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
2056 [Define to be the last component of the Windows registry key under which
2057 to look for installation paths. The full key used will be
2058 HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
2059 The default is the GCC version number.])
2060 fi
2061 fi
2062 ;;
2063 esac
2064
2065 # Get an absolute path to the GCC top-level source directory
2066 holddir=`${PWDCMD-pwd}`
2067 cd $srcdir
2068 topdir=`${PWDCMD-pwd}`
2069 cd $holddir
2070
2071 # Conditionalize the makefile for this host machine.
2072 xmake_file=
2073 for f in ${host_xmake_file}
2074 do
2075 if test -f ${srcdir}/config/$f
2076 then
2077 xmake_file="${xmake_file} \$(srcdir)/config/$f"
2078 fi
2079 done
2080
2081 # Conditionalize the makefile for this target machine.
2082 tmake_file_=
2083 for f in ${tmake_file}
2084 do
2085 if test -f ${srcdir}/config/$f
2086 then
2087 tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
2088 fi
2089 done
2090 tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
2091
2092 out_object_file=`basename $out_file .c`.o
2093 common_out_object_file=`basename $common_out_file .c`.o
2094
2095 tm_file_list="options.h"
2096 tm_include_list="options.h insn-constants.h"
2097 for f in $tm_file; do
2098 case $f in
2099 ./* )
2100 f=`echo $f | sed 's/^..//'`
2101 tm_file_list="${tm_file_list} $f"
2102 tm_include_list="${tm_include_list} $f"
2103 ;;
2104 defaults.h )
2105 tm_file_list="${tm_file_list} \$(srcdir)/$f"
2106 tm_include_list="${tm_include_list} $f"
2107 ;;
2108 * )
2109 tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
2110 tm_include_list="${tm_include_list} config/$f"
2111 ;;
2112 esac
2113 done
2114
2115 tm_p_file_list=
2116 tm_p_include_list=
2117 for f in $tm_p_file; do
2118 case $f in
2119 tm-preds.h )
2120 tm_p_file_list="${tm_p_file_list} $f"
2121 tm_p_include_list="${tm_p_include_list} $f"
2122 ;;
2123 * )
2124 tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
2125 tm_p_include_list="${tm_p_include_list} config/$f"
2126 esac
2127 done
2128
2129 tm_d_file_list=
2130 tm_d_include_list="options.h insn-constants.h"
2131 for f in $tm_d_file; do
2132 case $f in
2133 defaults.h )
2134 tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
2135 tm_d_include_list="${tm_d_include_list} $f"
2136 ;;
2137 * )
2138 tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
2139 tm_d_include_list="${tm_d_include_list} config/$f"
2140 ;;
2141 esac
2142 done
2143
2144 xm_file_list=
2145 xm_include_list=
2146 for f in $xm_file; do
2147 case $f in
2148 ansidecl.h )
2149 xm_file_list="${xm_file_list} \$(srcdir)/../include/$f"
2150 xm_include_list="${xm_include_list} $f"
2151 ;;
2152 auto-host.h )
2153 xm_file_list="${xm_file_list} $f"
2154 xm_include_list="${xm_include_list} $f"
2155 ;;
2156 * )
2157 xm_file_list="${xm_file_list} \$(srcdir)/config/$f"
2158 xm_include_list="${xm_include_list} config/$f"
2159 ;;
2160 esac
2161 done
2162
2163 host_xm_file_list=
2164 host_xm_include_list=
2165 for f in $host_xm_file; do
2166 case $f in
2167 ansidecl.h )
2168 host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/$f"
2169 host_xm_include_list="${host_xm_include_list} $f"
2170 ;;
2171 auto-host.h )
2172 host_xm_file_list="${host_xm_file_list} $f"
2173 host_xm_include_list="${host_xm_include_list} $f"
2174 ;;
2175 * )
2176 host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
2177 host_xm_include_list="${host_xm_include_list} config/$f"
2178 ;;
2179 esac
2180 done
2181
2182 build_xm_file_list=
2183 for f in $build_xm_file; do
2184 case $f in
2185 ansidecl.h )
2186 build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/$f"
2187 build_xm_include_list="${build_xm_include_list} $f"
2188 ;;
2189 auto-build.h | auto-host.h )
2190 build_xm_file_list="${build_xm_file_list} $f"
2191 build_xm_include_list="${build_xm_include_list} $f"
2192 ;;
2193 * )
2194 build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
2195 build_xm_include_list="${build_xm_include_list} config/$f"
2196 ;;
2197 esac
2198 done
2199
2200 # Define macro CROSS_DIRECTORY_STRUCTURE in compilation if this is a
2201 # cross-compiler which does not use the native headers and libraries.
2202 # Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
2203 CROSS= AC_SUBST(CROSS)
2204 ALL=all.internal AC_SUBST(ALL)
2205 SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
2206 BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR)
2207
2208 if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x ||
2209 test x$build != x$host || test "x$with_build_sysroot" != x; then
2210 if test "x$with_build_sysroot" != x; then
2211 BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
2212 else
2213 BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2214 fi
2215
2216 if test x$host != x$target
2217 then
2218 CROSS="-DCROSS_DIRECTORY_STRUCTURE"
2219 ALL=all.cross
2220 SYSTEM_HEADER_DIR=$BUILD_SYSTEM_HEADER_DIR
2221 elif test "x$TARGET_SYSTEM_ROOT" != x; then
2222 SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
2223 fi
2224
2225 if test "x$with_build_sysroot" != "x"; then
2226 target_header_dir="${with_build_sysroot}${native_system_header_dir}"
2227 elif test "x$with_sysroot" = x; then
2228 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-include"
2229 elif test "x$with_sysroot" = xyes; then
2230 target_header_dir="${test_exec_prefix}/${target_noncanonical}/sys-root${native_system_header_dir}"
2231 else
2232 target_header_dir="${with_sysroot}${native_system_header_dir}"
2233 fi
2234 else
2235 target_header_dir=${native_system_header_dir}
2236 fi
2237
2238 # If this is a cross-compiler that does not
2239 # have its own set of headers then define
2240 # inhibit_libc
2241
2242 # If this is using newlib, without having the headers available now,
2243 # then define inhibit_libc in LIBGCC2_CFLAGS.
2244 # This prevents libgcc2 from containing any code which requires libc
2245 # support.
2246 : ${inhibit_libc=false}
2247 if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
2248 test x$with_newlib = xyes ; } &&
2249 { test "x$with_headers" = xno || test ! -f "$target_header_dir/stdio.h"; } ; then
2250 inhibit_libc=true
2251 fi
2252 AC_SUBST(inhibit_libc)
2253
2254 # When building gcc with a cross-compiler, we need to adjust things so
2255 # that the generator programs are still built with the native compiler.
2256 # Also, we cannot run fixincludes.
2257
2258 # These are the normal (build=host) settings:
2259 CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
2260 CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
2261 BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
2262 BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
2263 BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
2264 STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
2265
2266 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
2267 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
2268
2269 # And these apply if build != host, or we are generating coverage data
2270 if test x$build != x$host || test "x$coverage_flags" != x
2271 then
2272 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
2273 BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
2274 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
2275
2276 NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
2277 NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
2278 BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
2279 BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
2280 fi
2281 AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
2282 AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
2283
2284 # Expand extra_headers to include complete path.
2285 # This substitutes for lots of t-* files.
2286 extra_headers_list=
2287 # Prepend $(srcdir)/config/${cpu_type}/ to every entry in extra_headers.
2288 for file in ${extra_headers} ; do
2289 extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
2290 done
2291
2292 # If use_gcc_tgmath is set, append ginclude/tgmath.h.
2293 if test x"$use_gcc_tgmath" = xyes
2294 then extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/tgmath.h"
2295 fi
2296
2297 # Define collect2 in Makefile.
2298 case $host_can_use_collect2 in
2299 no) collect2= ;;
2300 *) collect2='collect2$(exeext)' ;;
2301 esac
2302 AC_SUBST([collect2])
2303
2304 # Add a definition of USE_COLLECT2 if system wants one.
2305 case $use_collect2 in
2306 no) use_collect2= ;;
2307 "") ;;
2308 *)
2309 host_xm_defines="${host_xm_defines} USE_COLLECT2"
2310 xm_defines="${xm_defines} USE_COLLECT2"
2311 case $host_can_use_collect2 in
2312 no)
2313 AC_MSG_ERROR([collect2 is required but cannot be built on this system])
2314 ;;
2315 esac
2316 ;;
2317 esac
2318
2319 AC_DEFINE_UNQUOTED(LTOPLUGINSONAME,"${host_lto_plugin_soname}",
2320 [Define to the name of the LTO plugin DSO that must be
2321 passed to the linker's -plugin=LIB option.])
2322
2323 # ---------------------------
2324 # Assembler & linker features
2325 # ---------------------------
2326
2327 # During stage 2, ld is actually gcc/collect-ld, which is a small script to
2328 # discern between when to use prev-ld/ld-new and when to use ld/ld-new.
2329 # However when ld-new is first executed from the build tree, libtool will
2330 # relink it as .libs/lt-ld-new, so that it can give it an RPATH that refers
2331 # to the build tree. While doing this we need to use the previous-stage
2332 # linker, or we have an infinite loop. The presence of a shell script as
2333 # ld/ld-new, and the fact that the script *uses ld itself*, is what confuses
2334 # the gcc/collect-ld script. So we need to know how libtool works, or
2335 # exec-tool will fail.
2336
2337 m4_defun([_LT_CONFIG_COMMANDS], [])
2338 AC_PROG_LIBTOOL
2339 AC_SUBST(objdir)
2340 AC_SUBST(enable_fast_install)
2341
2342 # Identify the assembler which will work hand-in-glove with the newly
2343 # built GCC, so that we can examine its features. This is the assembler
2344 # which will be driven by the driver program.
2345 #
2346 # If build != host, and we aren't building gas in-tree, we identify a
2347 # build->target assembler and hope that it will have the same features
2348 # as the host->target assembler we'll be using.
2349 gcc_cv_gas_major_version=
2350 gcc_cv_gas_minor_version=
2351 gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
2352
2353 m4_pattern_allow([AS_FOR_TARGET])dnl
2354 AS_VAR_SET_IF(gcc_cv_as,, [
2355 if test -x "$DEFAULT_ASSEMBLER"; then
2356 gcc_cv_as="$DEFAULT_ASSEMBLER"
2357 elif test -f $gcc_cv_as_gas_srcdir/configure.ac \
2358 && test -f ../gas/Makefile \
2359 && test x$build = x$host; then
2360 gcc_cv_as=../gas/as-new$build_exeext
2361 elif test -x as$build_exeext; then
2362 # Build using assembler in the current directory.
2363 gcc_cv_as=./as$build_exeext
2364 elif ( set dummy $AS_FOR_TARGET; test -x $[2] ); then
2365 gcc_cv_as="$AS_FOR_TARGET"
2366 else
2367 AC_PATH_PROG(gcc_cv_as, $AS_FOR_TARGET)
2368 fi])
2369
2370 ORIGINAL_AS_FOR_TARGET=$gcc_cv_as
2371 AC_SUBST(ORIGINAL_AS_FOR_TARGET)
2372 case "$ORIGINAL_AS_FOR_TARGET" in
2373 ./as | ./as$build_exeext) ;;
2374 *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
2375 esac
2376
2377 AC_MSG_CHECKING(what assembler to use)
2378 if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
2379 # Single tree build which includes gas. We want to prefer it
2380 # over whatever linker top-level may have detected, since
2381 # we'll use what we're building after installation anyway.
2382 AC_MSG_RESULT(newly built gas)
2383 in_tree_gas=yes
2384 _gcc_COMPUTE_GAS_VERSION
2385 in_tree_gas_is_elf=no
2386 if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
2387 || (grep 'obj_format = multi' ../gas/Makefile \
2388 && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
2389 then
2390 in_tree_gas_is_elf=yes
2391 fi
2392 else
2393 AC_MSG_RESULT($gcc_cv_as)
2394 in_tree_gas=no
2395 fi
2396
2397 default_ld=
2398 AC_ARG_ENABLE(ld,
2399 [[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
2400 [case "${enableval}" in
2401 no)
2402 default_ld=ld.gold
2403 ;;
2404 esac])
2405
2406 install_gold_as_default=no
2407 AC_ARG_ENABLE(gold,
2408 [[ --enable-gold[=ARG] build gold [ARG={default,yes,no}]]],
2409 [case "${enableval}" in
2410 default)
2411 install_gold_as_default=yes
2412 ;;
2413 yes)
2414 if test x${default_ld} != x; then
2415 install_gold_as_default=yes
2416 fi
2417 ;;
2418 no)
2419 ;;
2420 *)
2421 AC_MSG_ERROR([invalid --enable-gold argument])
2422 ;;
2423 esac])
2424
2425 # Identify the linker which will work hand-in-glove with the newly
2426 # built GCC, so that we can examine its features. This is the linker
2427 # which will be driven by the driver program.
2428 #
2429 # If build != host, and we aren't building gas in-tree, we identify a
2430 # build->target linker and hope that it will have the same features
2431 # as the host->target linker we'll be using.
2432 gcc_cv_gld_major_version=
2433 gcc_cv_gld_minor_version=
2434 gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
2435 gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold
2436 gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
2437
2438 AS_VAR_SET_IF(gcc_cv_ld,, [
2439 if test -x "$DEFAULT_LINKER"; then
2440 gcc_cv_ld="$DEFAULT_LINKER"
2441 elif test $install_gold_as_default = yes \
2442 && test -f $gcc_cv_ld_gold_srcdir/configure.ac \
2443 && test -f ../gold/Makefile \
2444 && test x$build = x$host; then
2445 gcc_cv_ld=../gold/ld-new$build_exeext
2446 elif test -f $gcc_cv_ld_gld_srcdir/configure.ac \
2447 && test -f ../ld/Makefile \
2448 && test x$build = x$host; then
2449 gcc_cv_ld=../ld/ld-new$build_exeext
2450 elif test -x collect-ld$build_exeext; then
2451 # Build using linker in the current directory.
2452 gcc_cv_ld=./collect-ld$build_exeext
2453 elif ( set dummy $LD_FOR_TARGET; test -x $[2] ); then
2454 gcc_cv_ld="$LD_FOR_TARGET"
2455 else
2456 AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET)
2457 fi])
2458
2459 ORIGINAL_PLUGIN_LD_FOR_TARGET=$gcc_cv_ld
2460 PLUGIN_LD_SUFFIX=`basename $gcc_cv_ld | sed -e "s,$target_alias-,,"`
2461 # if the PLUGIN_LD is set ld-new, just have it as ld
2462 # as that is the installed named.
2463 if test x$PLUGIN_LD_SUFFIX = xld-new \
2464 || test x$PLUGIN_LD_SUFFIX = xcollect-ld ; then
2465 PLUGIN_LD_SUFFIX=ld
2466 fi
2467 AC_ARG_WITH(plugin-ld,
2468 [AS_HELP_STRING([[--with-plugin-ld=[ARG]]], [specify the plugin linker])],
2469 [if test x"$withval" != x; then
2470 ORIGINAL_PLUGIN_LD_FOR_TARGET="$withval"
2471 PLUGIN_LD_SUFFIX="$withval"
2472 fi])
2473 AC_SUBST(ORIGINAL_PLUGIN_LD_FOR_TARGET)
2474 AC_DEFINE_UNQUOTED(PLUGIN_LD_SUFFIX, "$PLUGIN_LD_SUFFIX", [Specify plugin linker])
2475
2476 # Check to see if we are using gold instead of ld
2477 AC_MSG_CHECKING(whether we are using gold)
2478 ld_is_gold=no
2479 if test x$gcc_cv_ld != x; then
2480 if $gcc_cv_ld --version 2>/dev/null | sed 1q \
2481 | grep "GNU gold" > /dev/null; then
2482 ld_is_gold=yes
2483 fi
2484 fi
2485 AC_MSG_RESULT($ld_is_gold)
2486
2487 AC_MSG_CHECKING(gold linker with split stack support as non default)
2488 # Check to see if default ld is not gold, but gold is
2489 # available and has support for split stack. If gcc was configured
2490 # with gold then no checking is done.
2491 #
2492 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
2493
2494 # For platforms other than powerpc64*, enable as appropriate.
2495
2496 gold_non_default=no
2497 ld_gold=`which ${gcc_cv_ld}.gold`
2498 # Make sure this gold has minimal split stack support
2499 if $ld_gold --help 2>/dev/null | grep split-stack-adjust-size >/dev/null 2>&1; then
2500 ld_vers=`$ld_gold --version | sed 1q`
2501 gold_vers=`echo $ld_vers | sed -n \
2502 -e 's,^[[^)]]*[[ ]]\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*[[^)]]*\)) .*$,\1,p'`
2503 case $target in
2504 # check that the gold version contains the complete split stack support
2505 # on powerpc64 big and little endian
2506 powerpc64*-*-*)
2507 case "$gold_vers" in
2508 2.25.[[1-9]]*|2.2[[6-9]][[.0-9]]*|2.[[3-9]][[.0-9]]*|[[3-9]].[[.0-9]]*) gold_non_default=yes
2509 ;;
2510 *) gold_non_default=no
2511 ;;
2512 esac
2513 ;;
2514 esac
2515 fi
2516 if test $gold_non_default = yes; then
2517 AC_DEFINE(HAVE_GOLD_NON_DEFAULT_SPLIT_STACK, 1,
2518 [Define if the gold linker supports split stack and is available as a non-default])
2519 fi
2520 fi
2521 AC_MSG_RESULT($gold_non_default)
2522
2523 ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
2524 AC_SUBST(ORIGINAL_LD_FOR_TARGET)
2525 case "$ORIGINAL_LD_FOR_TARGET" in
2526 ./collect-ld | ./collect-ld$build_exeext) ;;
2527 *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
2528 esac
2529
2530 AC_MSG_CHECKING(what linker to use)
2531 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
2532 || test "$gcc_cv_ld" = ../gold/ld-new$build_exeext; then
2533 # Single tree build which includes ld. We want to prefer it
2534 # over whatever linker top-level may have detected, since
2535 # we'll use what we're building after installation anyway.
2536 AC_MSG_RESULT(newly built ld)
2537 in_tree_ld=yes
2538 in_tree_ld_is_elf=no
2539 if (grep 'EMUL = .*elf' ../ld/Makefile \
2540 || grep 'EMUL = .*linux' ../ld/Makefile \
2541 || grep 'EMUL = .*lynx' ../ld/Makefile) > /dev/null; then
2542 in_tree_ld_is_elf=yes
2543 elif test "$ld_is_gold" = yes; then
2544 in_tree_ld_is_elf=yes
2545 fi
2546 for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.ac $gcc_cv_ld_gld_srcdir/Makefile.in
2547 do
2548 changequote(,)dnl
2549 gcc_cv_gld_version=`sed -n -e 's/^[ ]*VERSION=[^0-9A-Za-z_]*\([0-9]*\.[0-9]*.*\)/VERSION=\1/p' < $f`
2550 if test x$gcc_cv_gld_version != x; then
2551 break
2552 fi
2553 done
2554 case $gcc_cv_gld_version in
2555 VERSION=[0-9]*) ;;
2556 changequote([,])dnl
2557 *) AC_MSG_ERROR([[cannot find version of in-tree linker]]) ;;
2558 changequote(,)dnl
2559 esac
2560 gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
2561 gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
2562 changequote([,])dnl
2563 ORIGINAL_LD_BFD_FOR_TARGET=../ld/ld-new$build_exeext
2564 ORIGINAL_LD_GOLD_FOR_TARGET=../gold/ld-new$build_exeext
2565 else
2566 AC_MSG_RESULT($gcc_cv_ld)
2567 in_tree_ld=no
2568 gcc_cvs_ld_program=`dirname $gcc_cv_ld`/`basename $gcc_cv_ld $host_exeext`
2569 ORIGINAL_LD_BFD_FOR_TARGET=${gcc_cvs_ld_program}.bfd$host_exeext
2570 ORIGINAL_LD_GOLD_FOR_TARGET=${gcc_cvs_ld_program}.gold$host_exeext
2571 fi
2572
2573 AC_SUBST(ORIGINAL_LD_BFD_FOR_TARGET)
2574 AC_SUBST(ORIGINAL_LD_GOLD_FOR_TARGET)
2575
2576 # Figure out what nm we will be using.
2577 gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils
2578 AS_VAR_SET_IF(gcc_cv_nm,, [
2579 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2580 && test -f ../binutils/Makefile \
2581 && test x$build = x$host; then
2582 gcc_cv_nm=../binutils/nm-new$build_exeext
2583 elif test -x nm$build_exeext; then
2584 gcc_cv_nm=./nm$build_exeext
2585 elif ( set dummy $NM_FOR_TARGET; test -x $[2] ); then
2586 gcc_cv_nm="$NM_FOR_TARGET"
2587 else
2588 AC_PATH_PROG(gcc_cv_nm, $NM_FOR_TARGET)
2589 fi])
2590
2591 AC_MSG_CHECKING(what nm to use)
2592 if test "$gcc_cv_nm" = ../binutils/nm-new$build_exeext; then
2593 # Single tree build which includes binutils.
2594 AC_MSG_RESULT(newly built nm)
2595 in_tree_nm=yes
2596 else
2597 AC_MSG_RESULT($gcc_cv_nm)
2598 in_tree_nm=no
2599 fi
2600
2601 ORIGINAL_NM_FOR_TARGET=$gcc_cv_nm
2602 AC_SUBST(ORIGINAL_NM_FOR_TARGET)
2603 case "$ORIGINAL_NM_FOR_TARGET" in
2604 ./nm | ./nm$build_exeext) ;;
2605 *) AC_CONFIG_FILES(nm:exec-tool.in, [chmod +x nm]) ;;
2606 esac
2607
2608
2609 # Figure out what objdump we will be using.
2610 AS_VAR_SET_IF(gcc_cv_objdump,, [
2611 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2612 && test -f ../binutils/Makefile \
2613 && test x$build = x$host; then
2614 # Single tree build which includes binutils.
2615 gcc_cv_objdump=../binutils/objdump$build_exeext
2616 elif test -x objdump$build_exeext; then
2617 gcc_cv_objdump=./objdump$build_exeext
2618 elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
2619 gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
2620 else
2621 AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
2622 fi])
2623
2624 AC_MSG_CHECKING(what objdump to use)
2625 if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
2626 # Single tree build which includes binutils.
2627 AC_MSG_RESULT(newly built objdump)
2628 elif test x$gcc_cv_objdump = x; then
2629 AC_MSG_RESULT(not found)
2630 else
2631 AC_MSG_RESULT($gcc_cv_objdump)
2632 fi
2633
2634 # Figure out what readelf we will be using.
2635 AS_VAR_SET_IF(gcc_cv_readelf,, [
2636 if test -f $gcc_cv_binutils_srcdir/configure.ac \
2637 && test -f ../binutils/Makefile \
2638 && test x$build = x$host; then
2639 # Single tree build which includes binutils.
2640 gcc_cv_readelf=../binutils/readelf$build_exeext
2641 elif test -x readelf$build_exeext; then
2642 gcc_cv_readelf=./readelf$build_exeext
2643 elif ( set dummy $READELF_FOR_TARGET; test -x $[2] ); then
2644 gcc_cv_readelf="$READELF_FOR_TARGET"
2645 else
2646 AC_PATH_PROG(gcc_cv_readelf, $READELF_FOR_TARGET)
2647 fi])
2648
2649 AC_MSG_CHECKING(what readelf to use)
2650 if test "$gcc_cv_readelf" = ../binutils/readelf$build_exeext; then
2651 # Single tree build which includes binutils.
2652 AC_MSG_RESULT(newly built readelf)
2653 elif test x$gcc_cv_readelf = x; then
2654 AC_MSG_RESULT(not found)
2655 else
2656 AC_MSG_RESULT($gcc_cv_readelf)
2657 fi
2658
2659 # Figure out what otool we will be using.
2660 AS_VAR_SET_IF(gcc_cv_otool,, [
2661 if test -x otool$build_exeext; then
2662 gcc_cv_otool=./otool$build_exeext
2663 elif ( set dummy $OTOOL_FOR_TARGET; test -x $[2] ); then
2664 gcc_cv_otool="$OTOOL_FOR_TARGET"
2665 else
2666 AC_PATH_PROG(gcc_cv_otool, $OTOOL_FOR_TARGET)
2667 fi])
2668
2669 AC_MSG_CHECKING(what otool to use)
2670 if test x$gcc_cv_otool = x; then
2671 AC_MSG_RESULT(not found)
2672 else
2673 AC_MSG_RESULT($gcc_cv_otool)
2674 fi
2675
2676 # Figure out what assembler alignment features are present.
2677 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
2678 [2,6,0],,
2679 [.balign 4
2680 .p2align 2],,
2681 [AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
2682 [Define if your assembler supports .balign and .p2align.])])
2683
2684 gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
2685 [2,8,0],,
2686 [.p2align 4,,7],,
2687 [AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
2688 [Define if your assembler supports specifying the maximum number
2689 of bytes to skip when using the GAS .p2align command.])])
2690
2691 gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
2692 [2,8,0],,
2693 [.literal16],,
2694 [AC_DEFINE(HAVE_GAS_LITERAL16, 1,
2695 [Define if your assembler supports .literal16.])])
2696
2697 gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
2698 [elf,2,9,0],,
2699 [conftest_label1: .word 0
2700 .subsection -1
2701 conftest_label2: .word 0
2702 .previous],
2703 [if test x$gcc_cv_nm != x; then
2704 $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
2705 $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
2706 if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1
2707 then :
2708 else gcc_cv_as_subsection_m1=yes
2709 fi
2710 rm -f conftest.nm1 conftest.nm2
2711 fi],
2712 [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
2713 [Define if your assembler supports .subsection and .subsection -1 starts
2714 emitting at the beginning of your section.])])
2715
2716 gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
2717 [2,2,0],,
2718 [ .weak foobar],,
2719 [AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
2720
2721 gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
2722 [2,17,0],,
2723 [ .weakref foobar, barfnot],,
2724 [AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
2725
2726 gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
2727 [2,15,91],,
2728 [ .SPACE $TEXT$
2729 .NSUBSPA $CODE$,COMDAT],,
2730 [AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
2731
2732 # .hidden needs to be supported in both the assembler and the linker,
2733 # because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
2734 # This is irritatingly difficult to feature test for; we have to check the
2735 # date string after the version number. If we've got an in-tree
2736 # ld, we don't know its patchlevel version, so we set the baseline at 2.13
2737 # to be safe.
2738 # The gcc_GAS_CHECK_FEATURE call just sets a cache variable.
2739 case "${target}" in
2740 *-*-aix*)
2741 conftest_s=' .globl foobar,hidden'
2742 ;;
2743 *)
2744 conftest_s=' .hidden foobar
2745 foobar:'
2746 ;;
2747 esac
2748 gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
2749 [elf,2,13,0],, [$conftest_s])
2750 case "${target}" in
2751 *-*-darwin*)
2752 # Darwin as has some visibility support, though with a different syntax.
2753 gcc_cv_as_hidden=yes
2754 ;;
2755 esac
2756
2757 # gnu_indirect_function type is an extension proposed at
2758 # http://groups.google/com/group/generic-abi/files. It allows dynamic runtime
2759 # selection of function implementation
2760 AC_ARG_ENABLE(gnu-indirect-function,
2761 [AS_HELP_STRING([--enable-gnu-indirect-function],
2762 [enable the use of the @gnu_indirect_function to glibc systems])],
2763 [case $enable_gnu_indirect_function in
2764 yes | no) ;;
2765 *) AC_MSG_ERROR(['$enable_gnu_indirect_function' is an invalid value for --enable-gnu-indirect-function.
2766 Valid choices are 'yes' and 'no'.]) ;;
2767 esac],
2768 [enable_gnu_indirect_function="$default_gnu_indirect_function"])
2769
2770 gif=`if test x$enable_gnu_indirect_function = xyes; then echo 1; else echo 0; fi`
2771 AC_DEFINE_UNQUOTED(HAVE_GNU_INDIRECT_FUNCTION, $gif,
2772 [Define if your system supports gnu indirect functions.])
2773
2774
2775 changequote(,)dnl
2776 if test $in_tree_ld != yes ; then
2777 ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
2778 if echo "$ld_ver" | grep GNU > /dev/null; then
2779 if test x"$ld_is_gold" = xyes; then
2780 # GNU gold --version looks like this:
2781 #
2782 # GNU gold (GNU Binutils 2.21.51.20110225) 1.11
2783 #
2784 # We extract the binutils version which is more familiar and specific
2785 # than the gold version.
2786 ld_vers=`echo $ld_ver | sed -n \
2787 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
2788 else
2789 # GNU ld --version looks like this:
2790 #
2791 # GNU ld (GNU Binutils) 2.21.51.20110225
2792 ld_vers=`echo $ld_ver | sed -n \
2793 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2794 fi
2795 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'`
2796 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2797 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2798 ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
2799 else
2800 case "${target}" in
2801 *-*-solaris2*)
2802 # Solaris 2 ld -V output looks like this for a regular version:
2803 #
2804 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1699
2805 #
2806 # but test versions add stuff at the end:
2807 #
2808 # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10
2809 #
2810 # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version
2811 # numbers can be used in ld.so.1 feature checks even if a different
2812 # linker is configured.
2813 ld_ver=`$gcc_cv_ld -V 2>&1`
2814 if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then
2815 ld_vers=`echo $ld_ver | sed -n \
2816 -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'`
2817 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
2818 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
2819 fi
2820 ;;
2821 esac
2822 fi
2823 fi
2824 changequote([,])dnl
2825
2826 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
2827 [[if test $in_tree_ld = yes ; then
2828 gcc_cv_ld_hidden=no
2829 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 \
2830 && test $in_tree_ld_is_elf = yes; then
2831 gcc_cv_ld_hidden=yes
2832 fi
2833 else
2834 gcc_cv_ld_hidden=yes
2835 if test x"$ld_is_gold" = xyes; then
2836 :
2837 elif echo "$ld_ver" | grep GNU > /dev/null; then
2838 case "${target}" in
2839 mmix-knuth-mmixware)
2840 # The linker emits by default mmo, not ELF, so "no" is appropriate.
2841 gcc_cv_ld_hidden=no
2842 ;;
2843 esac
2844 if test 0"$ld_date" -lt 20020404; then
2845 if test -n "$ld_date"; then
2846 # If there was date string, but was earlier than 2002-04-04, fail
2847 gcc_cv_ld_hidden=no
2848 elif test -z "$ld_vers"; then
2849 # If there was no date string nor ld version number, something is wrong
2850 gcc_cv_ld_hidden=no
2851 else
2852 test -z "$ld_vers_patch" && ld_vers_patch=0
2853 if test "$ld_vers_major" -lt 2; then
2854 gcc_cv_ld_hidden=no
2855 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
2856 gcc_cv_ld_hidden="no"
2857 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then
2858 gcc_cv_ld_hidden=no
2859 fi
2860 fi
2861 fi
2862 else
2863 case "${target}" in
2864 *-*-aix[789]*)
2865 gcc_cv_ld_hidden=yes
2866 ;;
2867 *-*-darwin*)
2868 # Darwin ld has some visibility support.
2869 gcc_cv_ld_hidden=yes
2870 ;;
2871 hppa64*-*-hpux* | ia64*-*-hpux*)
2872 gcc_cv_ld_hidden=yes
2873 ;;
2874 *-*-solaris2*)
2875 # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but
2876 # .symbolic was only added in Solaris 9 12/02.
2877 gcc_cv_ld_hidden=yes
2878 ;;
2879 *)
2880 gcc_cv_ld_hidden=no
2881 ;;
2882 esac
2883 fi
2884 fi]])
2885 libgcc_visibility=no
2886 AC_SUBST(libgcc_visibility)
2887 GCC_TARGET_TEMPLATE([HAVE_GAS_HIDDEN])
2888 if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then
2889 libgcc_visibility=yes
2890 AC_DEFINE(HAVE_GAS_HIDDEN, 1,
2891 [Define if your assembler and linker support .hidden.])
2892 fi
2893
2894 AC_MSG_CHECKING(linker read-only and read-write section mixing)
2895 gcc_cv_ld_ro_rw_mix=unknown
2896 if test $in_tree_ld = yes ; then
2897 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 \
2898 && test $in_tree_ld_is_elf = yes; then
2899 gcc_cv_ld_ro_rw_mix=read-write
2900 fi
2901 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
2902 echo '.section myfoosect, "a"' > conftest1.s
2903 echo '.section myfoosect, "aw"' > conftest2.s
2904 echo '.byte 1' >> conftest2.s
2905 echo '.section myfoosect, "a"' > conftest3.s
2906 echo '.byte 0' >> conftest3.s
2907 if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
2908 && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
2909 && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
2910 && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
2911 conftest2.o conftest3.o > /dev/null 2>&1; then
2912 gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
2913 | sed -e '/myfoosect/!d' -e N`
2914 if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
2915 if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
2916 gcc_cv_ld_ro_rw_mix=read-only
2917 else
2918 gcc_cv_ld_ro_rw_mix=read-write
2919 fi
2920 fi
2921 fi
2922 changequote(,)dnl
2923 rm -f conftest.* conftest[123].*
2924 changequote([,])dnl
2925 fi
2926 if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
2927 AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
2928 [Define if your linker links a mix of read-only
2929 and read-write sections into a read-write section.])
2930 fi
2931 AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
2932
2933 gcc_AC_INITFINI_ARRAY
2934
2935 # Check if we have .[us]leb128, and support symbol arithmetic with it.
2936 gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
2937 [elf,2,11,0],,
2938 [ .data
2939 .uleb128 L2 - L1
2940 L1:
2941 .uleb128 1280
2942 .sleb128 -1010
2943 L2:],
2944 [[# GAS versions before 2.11 do not support uleb128,
2945 # despite appearing to.
2946 # ??? There exists an elf-specific test that will crash
2947 # the assembler. Perhaps it's better to figure out whether
2948 # arbitrary sections are supported and try the test.
2949 as_ver=`$gcc_cv_as --version 2>/dev/null | sed 1q`
2950 if echo "$as_ver" | grep GNU > /dev/null; then
2951 as_vers=`echo $as_ver | sed -n \
2952 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
2953 as_major=`expr "$as_vers" : '\([0-9]*\)'`
2954 as_minor=`expr "$as_vers" : '[0-9]*\.\([0-9]*\)'`
2955 if test $as_major -eq 2 && test $as_minor -lt 11
2956 then :
2957 else gcc_cv_as_leb128=yes
2958 fi
2959 fi]],
2960 [AC_DEFINE(HAVE_AS_LEB128, 1,
2961 [Define if your assembler supports .sleb128 and .uleb128.])],
2962 [AC_DEFINE(HAVE_AS_LEB128, 0,
2963 [Define if your assembler supports .sleb128 and .uleb128.])])
2964
2965 # Determine if an .eh_frame section is read-only.
2966 gcc_fn_eh_frame_ro () {
2967 $gcc_cv_as $1 -o conftest.o conftest.s > /dev/null 2>&1 && \
2968 $gcc_cv_objdump -h conftest.o 2>/dev/null | \
2969 sed -e '/.eh_frame/!d' -e N | grep READONLY > /dev/null
2970 }
2971
2972 # Check if we have assembler support for unwind directives.
2973 gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
2974 ,,
2975 [ .text
2976 .cfi_startproc
2977 .cfi_offset 0, 0
2978 .cfi_same_value 1
2979 .cfi_def_cfa 1, 2
2980 .cfi_escape 1, 2, 3, 4, 5
2981 .cfi_endproc],
2982 [case "$target" in
2983 *-*-solaris*)
2984 # If the linker used on Solaris (like Sun ld) isn't capable of merging
2985 # read-only and read-write sections, we need to make sure that the
2986 # assembler used emits read-write .eh_frame sections.
2987 if test "x$gcc_cv_ld_ro_rw_mix" = xread-write; then
2988 gcc_cv_as_cfi_directive=yes
2989 elif test "x$gcc_cv_objdump" = x; then
2990 # No objdump, err on the side of caution.
2991 gcc_cv_as_cfi_directive=no
2992 else
2993 if test x$gas = xyes; then
2994 as_32_opt="--32"
2995 as_64_opt="--64"
2996 else
2997 as_32_opt="-m32"
2998 as_64_opt="-m64"
2999 fi
3000 case "$target" in
3001 sparc*-*-solaris2.*)
3002 # On Solaris/SPARC, .eh_frame sections should always be read-write.
3003 if gcc_fn_eh_frame_ro $as_32_opt \
3004 || gcc_fn_eh_frame_ro $as_64_opt; then
3005 gcc_cv_as_cfi_directive=no
3006 else
3007 gcc_cv_as_cfi_directive=yes
3008 fi
3009 ;;
3010 i?86-*-solaris2.* | x86_64-*-solaris2.*)
3011 # On Solaris/x86, make sure that GCC and assembler agree on using
3012 # read-only .eh_frame sections for 64-bit.
3013 if gcc_fn_eh_frame_ro $as_32_opt; then
3014 gcc_cv_as_cfi_directive=no
3015 elif gcc_fn_eh_frame_ro $as_64_opt; then
3016 gcc_cv_as_cfi_directive=yes
3017 else
3018 gcc_cv_as_cfi_directive=no
3019 fi
3020 ;;
3021 esac
3022 fi
3023 ;;
3024 *-*-*)
3025 gcc_cv_as_cfi_directive=yes
3026 ;;
3027 esac])
3028 if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
3029 gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
3030 ,,
3031 [ .text
3032 .cfi_startproc
3033 .cfi_adjust_cfa_offset 64
3034 .skip 75040, 0
3035 .cfi_adjust_cfa_offset 128
3036 .cfi_endproc],
3037 [[
3038 if $gcc_cv_objdump -Wf conftest.o 2>/dev/null \
3039 | grep 'DW_CFA_advance_loc[24]:[ ][ ]*75040[ ]' >/dev/null; then
3040 gcc_cv_as_cfi_advance_working=yes
3041 fi
3042 ]])
3043 else
3044 # no objdump, err on the side of caution
3045 gcc_cv_as_cfi_advance_working=no
3046 fi
3047 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_DIRECTIVE)
3048 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE,
3049 [`if test $gcc_cv_as_cfi_directive = yes \
3050 && test $gcc_cv_as_cfi_advance_working = yes; then echo 1; else echo 0; fi`],
3051 [Define 0/1 if your assembler supports CFI directives.])
3052
3053 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
3054 gcc_GAS_CHECK_FEATURE([cfi personality directive],
3055 gcc_cv_as_cfi_personality_directive, ,,
3056 [ .text
3057 .cfi_startproc
3058 .cfi_personality 0, symbol
3059 .cfi_endproc])
3060 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE,
3061 [`if test $gcc_cv_as_cfi_personality_directive = yes; then echo 1; else echo 0; fi`],
3062 [Define 0/1 if your assembler supports .cfi_personality.])
3063
3064 gcc_GAS_CHECK_FEATURE([cfi sections directive],
3065 gcc_cv_as_cfi_sections_directive, ,,
3066 [ .text
3067 .cfi_sections .debug_frame, .eh_frame
3068 .cfi_startproc
3069 .cfi_endproc],
3070 [case $target_os in
3071 win32 | pe | cygwin* | mingw32*)
3072 # Need to check that we generated the correct relocation for the
3073 # .debug_frame section. This was fixed for binutils 2.21.
3074 gcc_cv_as_cfi_sections_directive=no
3075 if test "x$gcc_cv_objdump" != x; then
3076 if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
3077 grep secrel > /dev/null; then
3078 gcc_cv_as_cfi_sections_directive=yes
3079 fi
3080 fi
3081 ;;
3082 *)
3083 gcc_cv_as_cfi_sections_directive=yes
3084 ;;
3085 esac])
3086 GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
3087 AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
3088 [`if test $gcc_cv_as_cfi_sections_directive = yes; then echo 1; else echo 0; fi`],
3089 [Define 0/1 if your assembler supports .cfi_sections.])
3090
3091 # GAS versions up to and including 2.11.0 may mis-optimize
3092 # .eh_frame data.
3093 gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
3094 [elf,2,12,0],,
3095 [ .text
3096 .LFB1:
3097 .4byte 0
3098 .L1:
3099 .4byte 0
3100 .LFE1:
3101 .section .eh_frame,"aw",@progbits
3102 __FRAME_BEGIN__:
3103 .4byte .LECIE1-.LSCIE1
3104 .LSCIE1:
3105 .4byte 0x0
3106 .byte 0x1
3107 .ascii "z\0"
3108 .byte 0x1
3109 .byte 0x78
3110 .byte 0x1a
3111 .byte 0x0
3112 .byte 0x4
3113 .4byte 1
3114 .p2align 1
3115 .LECIE1:
3116 .LSFDE1:
3117 .4byte .LEFDE1-.LASFDE1
3118 .LASFDE1:
3119 .4byte .LASFDE1-__FRAME_BEGIN__
3120 .4byte .LFB1
3121 .4byte .LFE1-.LFB1
3122 .byte 0x4
3123 .4byte .LFE1-.LFB1
3124 .byte 0x4
3125 .4byte .L1-.LFB1
3126 .LEFDE1:],
3127 [ dnl # For autoconf 2.5x, must protect trailing spaces with @&t@.
3128 cat > conftest.lit <<EOF
3129 0000 10000000 00000000 017a0001 781a0004 .........z..x...
3130 0010 01000000 12000000 18000000 00000000 ................
3131 0020 08000000 04080000 0044 .........D @&t@
3132 EOF
3133 cat > conftest.big <<EOF
3134 0000 00000010 00000000 017a0001 781a0004 .........z..x...
3135 0010 00000001 00000012 00000018 00000000 ................
3136 0020 00000008 04000000 0844 .........D @&t@
3137 EOF
3138 # If the assembler didn't choke, and we can objdump,
3139 # and we got the correct data, then succeed.
3140 # The text in the here-document typically retains its unix-style line
3141 # endings, while the output of objdump will use host line endings.
3142 # Therefore, use diff -b for the comparisons.
3143 if test x$gcc_cv_objdump != x \
3144 && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
3145 | tail -3 > conftest.got \
3146 && { diff -b conftest.lit conftest.got > /dev/null 2>&1 \
3147 || diff -b conftest.big conftest.got > /dev/null 2>&1; }
3148 then
3149 gcc_cv_as_eh_frame=yes
3150 elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then
3151 gcc_cv_as_eh_frame=buggy
3152 else
3153 # Uh oh, what do we do now?
3154 gcc_cv_as_eh_frame=no
3155 fi])
3156
3157 if test $gcc_cv_as_eh_frame = buggy; then
3158 AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
3159 [Define if your assembler mis-optimizes .eh_frame data.])
3160 fi
3161
3162 # Test if the assembler supports the section flag 'e' or #exclude for
3163 # specifying an excluded section.
3164 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
3165 [2,22,51], [--fatal-warnings],
3166 [.section foo1,"e"
3167 .byte 0,0,0,0])
3168 if test $gcc_cv_as_section_exclude_e = no; then
3169 case "${target}" in
3170 # Solaris as uses #exclude instead.
3171 *-*-solaris2*)
3172 case "${target}" in
3173 sparc*-*-solaris2*)
3174 conftest_s='.section "foo1", #exclude'
3175 ;;
3176 i?86-*-solaris2* | x86_64-*-solaris2*)
3177 conftest_s='.section foo1, #exclude'
3178 ;;
3179 esac
3180 ;;
3181 esac
3182 gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,,
3183 [$conftest_s
3184 .byte 0,0,0,0])
3185 fi
3186 AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
3187 [`if test $gcc_cv_as_section_exclude_e = yes || test $gcc_cv_as_section_exclude_hash = yes; then echo 1; else echo 0; fi`],
3188 [Define if your assembler supports specifying the exclude section flag.])
3189
3190 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3191 [elf,2,12,0], [--fatal-warnings],
3192 [.section .rodata.str, "aMS", @progbits, 1])
3193 if test $gcc_cv_as_shf_merge = no; then
3194 gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
3195 [elf,2,12,0], [--fatal-warnings],
3196 [.section .rodata.str, "aMS", %progbits, 1])
3197 fi
3198 AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
3199 [`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
3200 [Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
3201
3202 gcc_cv_ld_aligned_shf_merge=yes
3203 case "$target" in
3204 # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
3205 # alignment > 1.
3206 sparc*-*-solaris2.11*)
3207 if test x"$gnu_ld" = xno \
3208 && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
3209 gcc_cv_ld_aligned_shf_merge=no
3210 fi
3211 ;;
3212 esac
3213 AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
3214 [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
3215 [Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
3216
3217 gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
3218 [.stabs "gcc2_compiled.",60,0,0,0],,
3219 [AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
3220 [Define if your assembler supports .stabs.])])
3221
3222 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
3223 gcc_cv_as_comdat_group,
3224 [elf,2,16,0], [--fatal-warnings],
3225 [.section .text,"axG",@progbits,.foo,comdat])
3226 if test $gcc_cv_as_comdat_group = yes; then
3227 gcc_cv_as_comdat_group_percent=no
3228 gcc_cv_as_comdat_group_group=no
3229 else
3230 gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
3231 gcc_cv_as_comdat_group_percent,
3232 [elf,2,16,0], [--fatal-warnings],
3233 [.section .text,"axG",%progbits,.foo,comdat])
3234 if test $gcc_cv_as_comdat_group_percent = yes; then
3235 gcc_cv_as_comdat_group_group=no
3236 else
3237 case "${target}" in
3238 # Sun as uses a completely different syntax.
3239 *-*-solaris2*)
3240 case "${target}" in
3241 sparc*-*-solaris2*)
3242 conftest_s='
3243 .group foo,".text%foo",#comdat
3244 .section ".text%foo", #alloc,#execinstr,#progbits
3245 .globl foo
3246 foo:
3247 '
3248 ;;
3249 i?86-*-solaris2* | x86_64-*-solaris2*)
3250 conftest_s='
3251 .group foo,.text%foo,#comdat
3252 .section .text%foo, "ax", @progbits
3253 .globl foo
3254 foo:
3255 '
3256 ;;
3257 esac
3258 gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
3259 gcc_cv_as_comdat_group_group,
3260 ,, [$conftest_s])
3261 ;;
3262 esac
3263 if test -z "${gcc_cv_as_comdat_group_group+set}"; then
3264 gcc_cv_as_comdat_group_group=no
3265 fi
3266 fi
3267 fi
3268 if test x"$ld_is_gold" = xyes; then
3269 comdat_group=yes
3270 elif test $in_tree_ld = yes ; then
3271 comdat_group=no
3272 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 \
3273 && test $in_tree_ld_is_elf = yes; then
3274 comdat_group=yes
3275 fi
3276 elif echo "$ld_ver" | grep GNU > /dev/null; then
3277 comdat_group=yes
3278 if test 0"$ld_date" -lt 20050308; then
3279 if test -n "$ld_date"; then
3280 # If there was date string, but was earlier than 2005-03-08, fail
3281 comdat_group=no
3282 elif test "$ld_vers_major" -lt 2; then
3283 comdat_group=no
3284 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
3285 comdat_group=no
3286 fi
3287 fi
3288 else
3289 changequote(,)dnl
3290 case "${target}" in
3291 *-*-solaris2.1[1-9]*)
3292 comdat_group=no
3293 # Sun ld has COMDAT group support since Solaris 9, but it doesn't
3294 # interoperate with GNU as until Solaris 11 build 130, i.e. ld
3295 # version 1.688.
3296 #
3297 # If using Sun as for COMDAT group as emitted by GCC, one needs at
3298 # least ld version 1.2267.
3299 if test "$ld_vers_major" -gt 1; then
3300 comdat_group=yes
3301 elif test "x$gas_flag" = xyes && test "$ld_vers_minor" -ge 1688; then
3302 comdat_group=yes
3303 elif test "$ld_vers_minor" -ge 2267; then
3304 comdat_group=yes
3305 fi
3306 ;;
3307 *)
3308 # Assume linkers other than GNU ld don't support COMDAT group.
3309 comdat_group=no
3310 ;;
3311 esac
3312 changequote([,])dnl
3313 fi
3314 # Allow overriding the automatic COMDAT group tests above.
3315 AC_ARG_ENABLE(comdat,
3316 [AS_HELP_STRING([--enable-comdat], [enable COMDAT group support])],
3317 [comdat_group="$enable_comdat"])
3318 if test $comdat_group = no; then
3319 gcc_cv_as_comdat_group=no
3320 gcc_cv_as_comdat_group_percent=no
3321 gcc_cv_as_comdat_group_group=no
3322 fi
3323 AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
3324 [`if test $gcc_cv_as_comdat_group = yes \
3325 || test $gcc_cv_as_comdat_group_percent = yes \
3326 || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
3327 [Define 0/1 if your assembler and linker support COMDAT groups.])
3328
3329 # Restrict this test to Solaris/x86: other targets define this statically.
3330 case "${target}" in
3331 i?86-*-solaris2* | x86_64-*-solaris2*)
3332 AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
3333 if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
3334 hidden_linkonce=yes
3335 else
3336 case "${target}" in
3337 # Full support for hidden thunks in linkonce sections only appeared in
3338 # Solaris 11/OpenSolaris.
3339 *-*-solaris2.1[[1-9]]*)
3340 hidden_linkonce=yes
3341 ;;
3342 *)
3343 hidden_linkonce=no
3344 ;;
3345 esac
3346 fi
3347 AC_MSG_RESULT($hidden_linkonce)
3348 AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
3349 [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
3350 [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
3351 ;;
3352 esac
3353
3354 gcc_GAS_CHECK_FEATURE([line table is_stmt support],
3355 gcc_cv_as_is_stmt,
3356 [2,16,92],,
3357 [ .text
3358 .file 1 "conf.c"
3359 .loc 1 1 0 is_stmt 1],,
3360 [AC_DEFINE(HAVE_GAS_LOC_STMT, 1,
3361 [Define if your assembler supports the .loc is_stmt sub-directive.])])
3362
3363 gcc_GAS_CHECK_FEATURE([line table discriminator support],
3364 gcc_cv_as_discriminator,
3365 [2,19,51],,
3366 [ .text
3367 .file 1 "conf.c"
3368 .loc 1 1 0 discriminator 1],,
3369 [AC_DEFINE(HAVE_GAS_DISCRIMINATOR, 1,
3370 [Define if your assembler supports the .loc discriminator sub-directive.])])
3371
3372 # Catch the newlib flag of the same name so we can gate GCC features on it.
3373 AC_ARG_ENABLE(newlib-nano-formatted-io,
3374 [AS_HELP_STRING([--enable-newlib-nano-formatted-io], [Use nano version
3375 formatted IO])],
3376 [case "${enableval}" in
3377 yes|no)
3378 ;;
3379 *)
3380 AC_MSG_ERROR([unknown newlib-nano-formatted-io setting $enableval])
3381 ;;
3382 esac], [])
3383
3384 # Thread-local storage - the check is heavily parameterized.
3385 conftest_s=
3386 tls_first_major=
3387 tls_first_minor=
3388 tls_as_opt=
3389 case "$target" in
3390 changequote(,)dnl
3391 alpha*-*-*)
3392 conftest_s='
3393 .section ".tdata","awT",@progbits
3394 foo: .long 25
3395 .text
3396 ldq $27,__tls_get_addr($29) !literal!1
3397 lda $16,foo($29) !tlsgd!1
3398 jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
3399 ldq $27,__tls_get_addr($29) !literal!2
3400 lda $16,foo($29) !tlsldm!2
3401 jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
3402 ldq $1,foo($29) !gotdtprel
3403 ldah $2,foo($29) !dtprelhi
3404 lda $3,foo($2) !dtprello
3405 lda $4,foo($29) !dtprel
3406 ldq $1,foo($29) !gottprel
3407 ldah $2,foo($29) !tprelhi
3408 lda $3,foo($2) !tprello
3409 lda $4,foo($29) !tprel'
3410 tls_first_major=2
3411 tls_first_minor=13
3412 tls_as_opt=--fatal-warnings
3413 ;;
3414 arc*-*-*)
3415 conftest_s='
3416 add_s r0,r0, @foo@tpoff'
3417 tls_first_major=2
3418 tls_first_minor=23
3419 ;;
3420 cris-*-*|crisv32-*-*)
3421 conftest_s='
3422 .section ".tdata","awT",@progbits
3423 x: .long 25
3424 .text
3425 move.d x:IE,$r10
3426 nop'
3427 tls_first_major=2
3428 tls_first_minor=20
3429 tls_as_opt=--fatal-warnings
3430 ;;
3431 frv*-*-*)
3432 conftest_s='
3433 .section ".tdata","awT",@progbits
3434 x: .long 25
3435 .text
3436 call #gettlsoff(x)'
3437 tls_first_major=2
3438 tls_first_minor=14
3439 ;;
3440 hppa*-*-linux*)
3441 conftest_s='
3442 t1: .reg %r20
3443 t2: .reg %r21
3444 gp: .reg %r19
3445 .section ".tdata","awT",@progbits
3446 foo: .long 25
3447 .text
3448 .align 4
3449 addil LT%foo-$tls_gdidx$,gp
3450 ldo RT%foo-$tls_gdidx$(%r1),%arg0
3451 b __tls_get_addr
3452 nop
3453 addil LT%foo-$tls_ldidx$,gp
3454 b __tls_get_addr
3455 ldo RT%foo-$tls_ldidx$(%r1),%arg0
3456 addil LR%foo-$tls_dtpoff$,%ret0
3457 ldo RR%foo-$tls_dtpoff$(%r1),%t1
3458 mfctl %cr27,%t1
3459 addil LT%foo-$tls_ieoff$,gp
3460 ldw RT%foo-$tls_ieoff$(%r1),%t2
3461 add %t1,%t2,%t3
3462 mfctl %cr27,%t1
3463 addil LR%foo-$tls_leoff$,%t1
3464 ldo RR%foo-$tls_leoff$(%r1),%t2'
3465 tls_first_major=2
3466 tls_first_minor=15
3467 tls_as_opt=--fatal-warnings
3468 ;;
3469 arm*-*-*)
3470 conftest_s='
3471 .section ".tdata","awT",%progbits
3472 foo: .long 25
3473 .text
3474 .word foo(gottpoff)
3475 .word foo(tpoff)
3476 .word foo(tlsgd)
3477 .word foo(tlsldm)
3478 .word foo(tlsldo)'
3479 tls_first_major=2
3480 tls_first_minor=17
3481 ;;
3482 i[34567]86-*-* | x86_64-*-*)
3483 case "$target" in
3484 i[34567]86-*-solaris2.* | x86_64-*-solaris2.*)
3485 on_solaris=yes
3486 ;;
3487 *)
3488 on_solaris=no
3489 ;;
3490 esac
3491 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3492 conftest_s='
3493 .section .tdata,"awt",@progbits'
3494 tls_first_major=0
3495 tls_first_minor=0
3496 tls_section_flag=t
3497 changequote([,])dnl
3498 AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
3499 [Define to the flag used to mark TLS sections if the default (`T') doesn't work.])
3500 changequote(,)dnl
3501 else
3502 conftest_s='
3503 .section ".tdata","awT",@progbits'
3504 tls_first_major=2
3505 tls_first_minor=14
3506 tls_section_flag=T
3507 tls_as_opt="--fatal-warnings"
3508 fi
3509 case "$target" in
3510 i[34567]86-*-*)
3511 conftest_s="$conftest_s
3512 foo: .long 25
3513 .text
3514 movl %gs:0, %eax
3515 leal foo@tlsgd(,%ebx,1), %eax
3516 leal foo@tlsldm(%ebx), %eax
3517 leal foo@dtpoff(%eax), %edx
3518 movl foo@gottpoff(%ebx), %eax
3519 subl foo@gottpoff(%ebx), %eax
3520 addl foo@gotntpoff(%ebx), %eax
3521 movl foo@indntpoff, %eax
3522 movl \$foo@tpoff, %eax
3523 subl \$foo@tpoff, %eax
3524 leal foo@ntpoff(%ecx), %eax"
3525 ;;
3526 x86_64-*-*)
3527 if test x$on_solaris = xyes; then
3528 case $gas_flag in
3529 yes) tls_as_opt="$tls_as_opt --64" ;;
3530 no) tls_as_opt="$tls_as_opt -xarch=amd64" ;;
3531 esac
3532 fi
3533 conftest_s="$conftest_s
3534 foo: .long 25
3535 .text
3536 movq %fs:0, %rax
3537 leaq foo@tlsgd(%rip), %rdi
3538 leaq foo@tlsld(%rip), %rdi
3539 leaq foo@dtpoff(%rax), %rdx
3540 movq foo@gottpoff(%rip), %rax
3541 movq \$foo@tpoff, %rax"
3542 ;;
3543 esac
3544 ;;
3545 ia64-*-*)
3546 conftest_s='
3547 .section ".tdata","awT",@progbits
3548 foo: data8 25
3549 .text
3550 addl r16 = @ltoff(@dtpmod(foo#)), gp
3551 addl r17 = @ltoff(@dtprel(foo#)), gp
3552 addl r18 = @ltoff(@tprel(foo#)), gp
3553 addl r19 = @dtprel(foo#), gp
3554 adds r21 = @dtprel(foo#), r13
3555 movl r23 = @dtprel(foo#)
3556 addl r20 = @tprel(foo#), gp
3557 adds r22 = @tprel(foo#), r13
3558 movl r24 = @tprel(foo#)'
3559 tls_first_major=2
3560 tls_first_minor=13
3561 tls_as_opt=--fatal-warnings
3562 ;;
3563 microblaze*-*-*)
3564 conftest_s='
3565 .section .tdata,"awT",@progbits
3566 x:
3567 .word 2
3568 .text
3569 addik r5,r20,x@TLSGD
3570 addik r5,r20,x@TLSLDM'
3571 tls_first_major=2
3572 tls_first_minor=20
3573 tls_as_opt='--fatal-warnings'
3574 ;;
3575 mips*-*-*)
3576 conftest_s='
3577 .section .tdata,"awT",@progbits
3578 x:
3579 .word 2
3580 .text
3581 addiu $4, $28, %tlsgd(x)
3582 addiu $4, $28, %tlsldm(x)
3583 lui $4, %dtprel_hi(x)
3584 addiu $4, $4, %dtprel_lo(x)
3585 lw $4, %gottprel(x)($28)
3586 lui $4, %tprel_hi(x)
3587 addiu $4, $4, %tprel_lo(x)'
3588 tls_first_major=2
3589 tls_first_minor=16
3590 tls_as_opt='-32 --fatal-warnings'
3591 ;;
3592 m68k-*-*)
3593 conftest_s='
3594 .section .tdata,"awT",@progbits
3595 x:
3596 .word 2
3597 .text
3598 foo:
3599 move.l x@TLSGD(%a5),%a0
3600 move.l x@TLSLDM(%a5),%a0
3601 move.l x@TLSLDO(%a5),%a0
3602 move.l x@TLSIE(%a5),%a0
3603 move.l x@TLSLE(%a5),%a0'
3604 tls_first_major=2
3605 tls_first_minor=19
3606 tls_as_opt='--fatal-warnings'
3607 ;;
3608 nios2-*-*)
3609 conftest_s='
3610 .section ".tdata","awT",@progbits'
3611 tls_first_major=2
3612 tls_first_minor=23
3613 tls_as_opt="--fatal-warnings"
3614 ;;
3615 aarch64*-*-*)
3616 conftest_s='
3617 .section ".tdata","awT",%progbits
3618 foo: .long 25
3619 .text
3620 adrp x0, :tlsgd:x
3621 add x0, x0, #:tlsgd_lo12:x
3622 bl __tls_get_addr
3623 nop'
3624 tls_first_major=2
3625 tls_first_minor=20
3626 tls_as_opt='--fatal-warnings'
3627 ;;
3628 or1k*-*-*)
3629 conftest_s='
3630 .section ".tdata","awT",@progbits
3631 foo: .long 25
3632 .text
3633 l.movhi r3, tpoffha(foo)
3634 l.add r3, r3, r10
3635 l.lwz r4, tpofflo(foo)(r3)'
3636 tls_first_major=2
3637 tls_first_minor=30
3638 tls_as_opt=--fatal-warnings
3639 ;;
3640 powerpc-ibm-aix*)
3641 conftest_s='
3642 .extern __get_tpointer
3643 .toc
3644 LC..1:
3645 .tc a[TC],a[TL]@le
3646 .csect .text[PR]
3647 .tlstest:
3648 lwz 9,LC..1(2)
3649 bla __get_tpointer
3650 lwzx 3,9,3
3651 .globl a
3652 .csect a[TL],4
3653 a:
3654 .space 4'
3655 tls_first_major=0
3656 tls_first_minor=0
3657 ;;
3658 powerpc64*-*-*)
3659 conftest_s='
3660 .section ".tdata","awT",@progbits
3661 .align 3
3662 ld0: .space 8
3663 ld1: .space 8
3664 x1: .space 8
3665 x2: .space 8
3666 x3: .space 8
3667 .text
3668 addi 3,2,ld0@got@tlsgd
3669 bl .__tls_get_addr
3670 nop
3671 addi 3,2,ld1@toc
3672 bl .__tls_get_addr
3673 nop
3674 addi 3,2,x1@got@tlsld
3675 bl .__tls_get_addr
3676 nop
3677 addi 9,3,x1@dtprel
3678 bl .__tls_get_addr
3679 nop
3680 addis 9,3,x2@dtprel@ha
3681 addi 9,9,x2@dtprel@l
3682 bl .__tls_get_addr
3683 nop
3684 ld 9,x3@got@dtprel(2)
3685 add 9,9,3
3686 bl .__tls_get_addr
3687 nop'
3688 tls_first_major=2
3689 tls_first_minor=14
3690 tls_as_opt="-a64 --fatal-warnings"
3691 ;;
3692 powerpc*-*-*)
3693 conftest_s='
3694 .section ".tdata","awT",@progbits
3695 .align 2
3696 ld0: .space 4
3697 ld1: .space 4
3698 x1: .space 4
3699 x2: .space 4
3700 x3: .space 4
3701 .text
3702 addi 3,31,ld0@got@tlsgd
3703 bl __tls_get_addr
3704 addi 3,31,x1@got@tlsld
3705 bl __tls_get_addr
3706 addi 9,3,x1@dtprel
3707 addis 9,3,x2@dtprel@ha
3708 addi 9,9,x2@dtprel@l
3709 lwz 9,x3@got@tprel(31)
3710 add 9,9,x@tls
3711 addi 9,2,x1@tprel
3712 addis 9,2,x2@tprel@ha
3713 addi 9,9,x2@tprel@l'
3714 tls_first_major=2
3715 tls_first_minor=14
3716 tls_as_opt="-a32 --fatal-warnings"
3717 ;;
3718 riscv*-*-*)
3719 conftest_s='
3720 .section .tdata,"awT",@progbits
3721 x: .word 2
3722 .text
3723 la.tls.gd a0,x
3724 call __tls_get_addr'
3725 tls_first_major=2
3726 tls_first_minor=21
3727 tls_as_opt='--fatal-warnings'
3728 ;;
3729 s390-*-*)
3730 conftest_s='
3731 .section ".tdata","awT",@progbits
3732 foo: .long 25
3733 .text
3734 .long foo@TLSGD
3735 .long foo@TLSLDM
3736 .long foo@DTPOFF
3737 .long foo@NTPOFF
3738 .long foo@GOTNTPOFF
3739 .long foo@INDNTPOFF
3740 l %r1,foo@GOTNTPOFF(%r12)
3741 l %r1,0(%r1):tls_load:foo
3742 bas %r14,0(%r1,%r13):tls_gdcall:foo
3743 bas %r14,0(%r1,%r13):tls_ldcall:foo'
3744 tls_first_major=2
3745 tls_first_minor=14
3746 tls_as_opt="-m31 --fatal-warnings"
3747 ;;
3748 s390x-*-*)
3749 conftest_s='
3750 .section ".tdata","awT",@progbits
3751 foo: .long 25
3752 .text
3753 .quad foo@TLSGD
3754 .quad foo@TLSLDM
3755 .quad foo@DTPOFF
3756 .quad foo@NTPOFF
3757 .quad foo@GOTNTPOFF
3758 lg %r1,foo@GOTNTPOFF(%r12)
3759 larl %r1,foo@INDNTPOFF
3760 brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
3761 brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
3762 tls_first_major=2
3763 tls_first_minor=14
3764 tls_as_opt="-m64 -Aesame --fatal-warnings"
3765 ;;
3766 sh-*-* | sh[123456789lbe]*-*-*)
3767 conftest_s='
3768 .section ".tdata","awT",@progbits
3769 foo: .long 25
3770 .text
3771 .long foo@TLSGD
3772 .long foo@TLSLDM
3773 .long foo@DTPOFF
3774 .long foo@GOTTPOFF
3775 .long foo@TPOFF'
3776 tls_first_major=2
3777 tls_first_minor=13
3778 tls_as_opt=--fatal-warnings
3779 ;;
3780 sparc*-*-*)
3781 case "$target" in
3782 sparc*-sun-solaris2.*)
3783 on_solaris=yes
3784 ;;
3785 *)
3786 on_solaris=no
3787 ;;
3788 esac
3789 if test x$on_solaris = xyes && test x$gas_flag = xno; then
3790 conftest_s='
3791 .section ".tdata",#alloc,#write,#tls'
3792 tls_first_major=0
3793 tls_first_minor=0
3794 else
3795 conftest_s='
3796 .section ".tdata","awT",@progbits'
3797 tls_first_major=2
3798 tls_first_minor=14
3799 tls_as_opt="-32 --fatal-warnings"
3800 fi
3801 conftest_s="$conftest_s
3802 foo: .long 25
3803 .text
3804 sethi %tgd_hi22(foo), %o0
3805 add %o0, %tgd_lo10(foo), %o1
3806 add %l7, %o1, %o0, %tgd_add(foo)
3807 call __tls_get_addr, %tgd_call(foo)
3808 sethi %tldm_hi22(foo), %l1
3809 add %l1, %tldm_lo10(foo), %l2
3810 add %l7, %l2, %o0, %tldm_add(foo)
3811 call __tls_get_addr, %tldm_call(foo)
3812 sethi %tldo_hix22(foo), %l3
3813 xor %l3, %tldo_lox10(foo), %l4
3814 add %o0, %l4, %l5, %tldo_add(foo)
3815 sethi %tie_hi22(foo), %o3
3816 add %o3, %tie_lo10(foo), %o3
3817 ld [%l7 + %o3], %o2, %tie_ld(foo)
3818 add %g7, %o2, %o4, %tie_add(foo)
3819 sethi %tle_hix22(foo), %l1
3820 xor %l1, %tle_lox10(foo), %o5
3821 ld [%g7 + %o5], %o1"
3822 ;;
3823 tilepro*-*-*)
3824 conftest_s='
3825 .section ".tdata","awT",@progbits
3826 foo: .long 25
3827 .text
3828 addli r0, zero, tls_gd(foo)
3829 auli r0, zero, tls_gd_ha16(foo)
3830 addli r0, r0, tls_gd_lo16(foo)
3831 jal __tls_get_addr
3832 addli r0, zero, tls_ie(foo)
3833 auli r0, r0, tls_ie_ha16(foo)
3834 addli r0, r0, tls_ie_lo16(foo)'
3835 tls_first_major=2
3836 tls_first_minor=22
3837 tls_as_opt="--fatal-warnings"
3838 ;;
3839 tilegx*-*-*)
3840 conftest_s='
3841 .section ".tdata","awT",@progbits
3842 foo: .long 25
3843 .text
3844 shl16insli r0, zero, hw0_last_tls_gd(foo)
3845 shl16insli r0, zero, hw1_last_tls_gd(foo)
3846 shl16insli r0, r0, hw0_tls_gd(foo)
3847 jal __tls_get_addr
3848 shl16insli r0, zero, hw1_last_tls_ie(foo)
3849 shl16insli r0, r0, hw0_tls_ie(foo)'
3850 tls_first_major=2
3851 tls_first_minor=22
3852 tls_as_opt="--fatal-warnings"
3853 ;;
3854 xtensa*-*-*)
3855 conftest_s='
3856 .section ".tdata","awT",@progbits
3857 foo: .long 25
3858 .text
3859 movi a8, foo@TLSFUNC
3860 movi a10, foo@TLSARG
3861 callx8.tls a8, foo@TLSCALL'
3862 tls_first_major=2
3863 tls_first_minor=19
3864 ;;
3865 changequote([,])dnl
3866 esac
3867 set_have_as_tls=no
3868 if test "x$enable_tls" = xno ; then
3869 : # TLS explicitly disabled.
3870 elif test "x$enable_tls" = xyes ; then
3871 set_have_as_tls=yes # TLS explicitly enabled.
3872 elif test -z "$tls_first_major"; then
3873 : # If we don't have a check, assume no support.
3874 else
3875 gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
3876 [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
3877 [set_have_as_tls=yes])
3878 fi
3879 if test $set_have_as_tls = yes ; then
3880 AC_DEFINE(HAVE_AS_TLS, 1,
3881 [Define if your assembler and linker support thread-local storage.])
3882 fi
3883
3884 # Target-specific assembler checks.
3885
3886 AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
3887 gcc_cv_ld_static_dynamic=no
3888 gcc_cv_ld_static_option='-Bstatic'
3889 gcc_cv_ld_dynamic_option='-Bdynamic'
3890 if test $in_tree_ld = yes ; then
3891 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
3892 gcc_cv_ld_static_dynamic=yes
3893 fi
3894 elif test x$gcc_cv_ld != x; then
3895 # Check if linker supports -Bstatic/-Bdynamic option
3896 if $gcc_cv_ld --help 2>&1 | grep -- -Bstatic > /dev/null \
3897 && $gcc_cv_ld --help 2>&1 | grep -- -Bdynamic > /dev/null; then
3898 gcc_cv_ld_static_dynamic=yes
3899 else
3900 case "$target" in
3901 # AIX ld uses -b flags
3902 *-*-aix4.[[23]]* | *-*-aix[[5-9]]*)
3903 gcc_cv_ld_static_dynamic=yes
3904 gcc_cv_ld_static_option="-bstatic"
3905 gcc_cv_ld_dynamic_option="-bdynamic"
3906 ;;
3907 # HP-UX ld uses -a flags to select between shared and archive.
3908 *-*-hpux*)
3909 if test x"$gnu_ld" = xno; then
3910 gcc_cv_ld_static_dynamic=yes
3911 gcc_cv_ld_static_option="-aarchive_shared"
3912 gcc_cv_ld_dynamic_option="-adefault"
3913 fi
3914 ;;
3915 # Solaris 2 ld always supports -Bstatic/-Bdynamic.
3916 *-*-solaris2*)
3917 gcc_cv_ld_static_dynamic=yes
3918 ;;
3919 esac
3920 fi
3921 fi
3922 if test x"$gcc_cv_ld_static_dynamic" = xyes; then
3923 AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
3924 [Define if your linker supports -Bstatic/-Bdynamic or equivalent options.])
3925 AC_DEFINE_UNQUOTED(LD_STATIC_OPTION, "$gcc_cv_ld_static_option",
3926 [Define to the linker option to disable use of shared objects.])
3927 AC_DEFINE_UNQUOTED(LD_DYNAMIC_OPTION, "$gcc_cv_ld_dynamic_option",
3928 [Define to the linker option to enable use of shared objects.])
3929 fi
3930 AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
3931
3932 AC_MSG_CHECKING(linker --version-script option)
3933 gcc_cv_ld_version_script=no
3934 ld_version_script_option=''
3935 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3936 gcc_cv_ld_version_script=yes
3937 ld_version_script_option='--version-script'
3938 elif test x$gcc_cv_ld != x; then
3939 case "$target" in
3940 # Solaris 2 ld always supports -M. It also supports a subset of
3941 # --version-script since Solaris 11.4, but requires
3942 # -z gnu-version-script-compat to activate.
3943 *-*-solaris2*)
3944 gcc_cv_ld_version_script=yes
3945 ld_version_script_option='-M'
3946 ;;
3947 esac
3948 fi
3949 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3950 AC_MSG_RESULT($gcc_cv_ld_version_script)
3951 AC_SUBST(ld_version_script_option)
3952
3953 AC_MSG_CHECKING(linker soname option)
3954 gcc_cv_ld_soname=no
3955 if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then
3956 gcc_cv_ld_soname=yes
3957 ld_soname_option='-soname'
3958 elif test x$gcc_cv_ld != x; then
3959 case "$target" in
3960 *-*-darwin*)
3961 gcc_cv_ld_soname=yes
3962 ld_soname_option='-install_name'
3963 ;;
3964 # Solaris 2 ld always supports -h. It also supports --soname for GNU
3965 # ld compatiblity since some Solaris 10 update.
3966 *-*-solaris2*)
3967 gcc_cv_ld_soname=yes
3968 ld_soname_option='-h'
3969 ;;
3970 esac
3971 fi
3972 # Don't AC_DEFINE result, only used in jit/Make-lang.in so far.
3973 AC_MSG_RESULT($gcc_cv_ld_soname)
3974 AC_SUBST(ld_soname_option)
3975
3976 if test x"$demangler_in_ld" = xyes; then
3977 AC_MSG_CHECKING(linker --demangle support)
3978 gcc_cv_ld_demangle=no
3979 if test $in_tree_ld = yes; then
3980 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 \
3981 gcc_cv_ld_demangle=yes
3982 fi
3983 elif test x$gcc_cv_ld != x -a x"$gnu_ld" = xyes; then
3984 # Check if the GNU linker supports --demangle option
3985 if $gcc_cv_ld --help 2>&1 | grep no-demangle > /dev/null; then
3986 gcc_cv_ld_demangle=yes
3987 fi
3988 fi
3989 if test x"$gcc_cv_ld_demangle" = xyes; then
3990 AC_DEFINE(HAVE_LD_DEMANGLE, 1,
3991 [Define if your linker supports --demangle option.])
3992 fi
3993 AC_MSG_RESULT($gcc_cv_ld_demangle)
3994 fi
3995
3996 AC_MSG_CHECKING(linker plugin support)
3997 gcc_cv_lto_plugin=0
3998 if test -f liblto_plugin.la; then
3999 save_ld_ver="$ld_ver"
4000 save_ld_vers_major="$ld_vers_major"
4001 save_ld_vers_minor="$ld_vers_minor"
4002 save_ld_is_gold="$ld_is_gold"
4003
4004 ld_is_gold=no
4005
4006 if test $in_tree_ld = yes -a x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" = x"$gcc_cv_ld"; then
4007 ld_ver="GNU ld"
4008 # FIXME: ld_is_gold?
4009 ld_vers_major="$gcc_cv_gld_major_version"
4010 ld_vers_minor="$gcc_cv_gld_minor_version"
4011 else
4012 # Determine plugin linker version.
4013 # FIXME: Partial duplicate from above, generalize.
4014 changequote(,)dnl
4015 ld_ver=`$ORIGINAL_PLUGIN_LD_FOR_TARGET --version 2>/dev/null | sed 1q`
4016 if echo "$ld_ver" | grep GNU > /dev/null; then
4017 if echo "$ld_ver" | grep "GNU gold" > /dev/null; then
4018 ld_is_gold=yes
4019 ld_vers=`echo $ld_ver | sed -n \
4020 -e 's,^[^)]*[ ]\([0-9][0-9]*\.[0-9][0-9]*[^)]*\)) .*$,\1,p'`
4021 else
4022 ld_vers=`echo $ld_ver | sed -n \
4023 -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p'`
4024 fi
4025 ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
4026 ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
4027 fi
4028 changequote([,])dnl
4029 fi
4030
4031 # Determine plugin support.
4032 if echo "$ld_ver" | grep GNU > /dev/null; then
4033 # Require GNU ld or gold 2.21+ for plugin support by default.
4034 if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
4035 gcc_cv_lto_plugin=2
4036 # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
4037 elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
4038 gcc_cv_lto_plugin=1
4039 fi
4040 fi
4041
4042 ld_ver="$save_ld_ver"
4043 ld_vers_major="$save_ld_vers_major"
4044 ld_vers_minor="$save_ld_vers_minor"
4045 ld_is_gold="$save_ld_is_gold"
4046 fi
4047 AC_DEFINE_UNQUOTED(HAVE_LTO_PLUGIN, $gcc_cv_lto_plugin,
4048 [Define to the level of your linker's plugin support.])
4049 AC_MSG_RESULT($gcc_cv_lto_plugin)
4050
4051 # Target OS-specific assembler checks.
4052
4053 case "$target_os" in
4054 darwin*)
4055 gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
4056 gcc_cv_as_mmacosx_version_min,,
4057 [-mmacosx-version-min=10.1], [.text],,
4058 [AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
4059 [Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
4060 ;;
4061 esac
4062
4063 # Target CPU-specific assembler checks.
4064
4065 case "$target" in
4066 aarch64*-*-*)
4067 gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
4068 [-mabi=lp64], [.text],,,)
4069 if test x$gcc_cv_as_aarch64_mabi = xyes; then
4070 AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
4071 [Define if your assembler supports the -mabi option.])
4072 else
4073 if test x$with_abi = xilp32; then
4074 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4075 Upgrade the Assembler.])
4076 fi
4077 if test x"$with_multilib_list" = xdefault; then
4078 TM_MULTILIB_CONFIG=lp64
4079 else
4080 aarch64_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
4081 for aarch64_multilib in ${aarch64_multilibs}; do
4082 case ${aarch64_multilib} in
4083 ilp32)
4084 AC_MSG_ERROR([Assembler does not support -mabi=ilp32.\
4085 Upgrade the Assembler.])
4086 ;;
4087 *)
4088 ;;
4089 esac
4090 done
4091 fi
4092 fi
4093 # Check if we have binutils support for relocations types needed by -fpic
4094 gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
4095 [
4096 .text
4097 ldr x0, [[x2, #:gotpage_lo15:globalsym]]
4098 ],,[AC_DEFINE(HAVE_AS_SMALL_PIC_RELOCS, 1,
4099 [Define if your assembler supports relocs needed by -fpic.])])
4100 # Enable Branch Target Identification Mechanism and Return Address
4101 # Signing by default.
4102 AC_ARG_ENABLE(standard-branch-protection,
4103 [
4104 AS_HELP_STRING([--enable-standard-branch-protection],
4105 [enable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4106 AS_HELP_STRING([--disable-standard-branch-protection],
4107 [disable Branch Target Identification Mechanism and Return Address Signing by default for AArch64])
4108 ],
4109 [
4110 case $enableval in
4111 yes)
4112 tm_defines="${tm_defines} TARGET_ENABLE_BTI=1 TARGET_ENABLE_PAC_RET=1"
4113 ;;
4114 no)
4115 ;;
4116 *)
4117 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-standard-branch-protection.\
4118 Valid choices are 'yes' and 'no'.])
4119 ;;
4120 esac
4121 ],
4122 [])
4123 # Enable default workaround for AArch64 Cortex-A53 erratum 835769.
4124 AC_ARG_ENABLE(fix-cortex-a53-835769,
4125 [
4126 AS_HELP_STRING([--enable-fix-cortex-a53-835769],
4127 [enable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4128 AS_HELP_STRING([--disable-fix-cortex-a53-835769],
4129 [disable workaround for AArch64 Cortex-A53 erratum 835769 by default])
4130 ],
4131 [
4132 case $enableval in
4133 yes)
4134 tm_defines="${tm_defines} TARGET_FIX_ERR_A53_835769_DEFAULT=1"
4135 ;;
4136 no)
4137 ;;
4138 *)
4139 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-835769.\
4140 Valid choices are 'yes' and 'no'.])
4141 ;;
4142
4143 esac
4144 ],
4145 [])
4146 # Enable default workaround for AArch64 Cortex-A53 erratum 843419.
4147 AC_ARG_ENABLE(fix-cortex-a53-843419,
4148 [
4149 AS_HELP_STRING([--enable-fix-cortex-a53-843419],
4150 [enable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4151 AS_HELP_STRING([--disable-fix-cortex-a53-843419],
4152 [disable workaround for AArch64 Cortex-A53 erratum 843419 by default])
4153 ],
4154 [
4155 case $enableval in
4156 yes)
4157 tm_defines="${tm_defines} TARGET_FIX_ERR_A53_843419_DEFAULT=1"
4158 ;;
4159 no)
4160 ;;
4161 *)
4162 AC_MSG_ERROR(['$enableval' is an invalid value for --enable-fix-cortex-a53-843419.\
4163 Valid choices are 'yes' and 'no'.])
4164 ;;
4165
4166 esac
4167 ],
4168 [])
4169 ;;
4170
4171 # All TARGET_ABI_OSF targets.
4172 alpha*-*-linux* | alpha*-*-*bsd*)
4173 gcc_GAS_CHECK_FEATURE([explicit relocation support],
4174 gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
4175 [ .set nomacro
4176 .text
4177 extbl $3, $2, $3 !lituse_bytoff!1
4178 ldq $2, a($29) !literal!1
4179 ldq $4, b($29) !literal!2
4180 ldq_u $3, 0($2) !lituse_base!1
4181 ldq $27, f($29) !literal!5
4182 jsr $26, ($27), f !lituse_jsr!5
4183 ldah $29, 0($26) !gpdisp!3
4184 lda $0, c($29) !gprel
4185 ldah $1, d($29) !gprelhigh
4186 lda $1, d($1) !gprellow
4187 lda $29, 0($29) !gpdisp!3],,
4188 [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
4189 [Define if your assembler supports explicit relocations.])])
4190 gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
4191 gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
4192 [ .set nomacro
4193 .text
4194 ldq $27, a($29) !literal!1
4195 jsr $26, ($27), a !lituse_jsrdirect!1],,
4196 [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
4197 [Define if your assembler supports the lituse_jsrdirect relocation.])])
4198 ;;
4199
4200 avr-*-*)
4201 gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
4202 [--mlink-relax], [.text],,
4203 [AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
4204 [Define if your avr assembler supports --mlink-relax option.])])
4205
4206 gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
4207 [-mrmw], [.text],,
4208 [AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
4209 [Define if your avr assembler supports -mrmw option.])])
4210
4211 gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
4212 gcc_cv_as_avr_mgccisr,,
4213 [-mgcc-isr], [.text
4214 __gcc_isr 1
4215 __gcc_isr 2
4216 __gcc_isr 0,r24
4217 ],,
4218 [AC_DEFINE(HAVE_AS_AVR_MGCCISR_OPTION, 1,
4219 [Define if your avr assembler supports -mgcc-isr option.])])
4220
4221 # Check how default linker description file implements .rodata for
4222 # avrxmega3 (PR21472). avr-gcc assumes .rodata is *not* loaded to
4223 # RAM so avr-gcc skips __do_copy_data for .rodata objects.
4224 AC_MSG_CHECKING(binutils for avrxmega3 .rodata support)
4225 cat > conftest.s <<EOF
4226 .section .rodata,"a",@progbits
4227 .global xxvaryy
4228 ;; avr-nm should print "... R xxvaryy", not "... D xxvaryy".
4229 xxvaryy:
4230 .word 1
4231 EOF
4232 rm -f conftest.nm
4233 AC_TRY_COMMAND([$gcc_cv_as -mmcu=avrxmega3 conftest.s -o conftest.o])
4234 AC_TRY_COMMAND([$gcc_cv_ld -mavrxmega3 conftest.o -o conftest.elf])
4235 AC_TRY_COMMAND([$gcc_cv_nm conftest.elf > conftest.nm])
4236 if test -s conftest.nm
4237 then
4238 if grep ' R xxvaryy' conftest.nm > /dev/null; then
4239 AC_MSG_RESULT(yes)
4240 AC_DEFINE(HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH, 1,
4241 [Define if your default avr linker script for avrxmega3 leaves .rodata in flash.])
4242 else
4243 AC_MSG_RESULT(no: avrxmega3 .rodata located in RAM)
4244 echo "$as_me: nm output was" >&AS_MESSAGE_LOG_FD
4245 cat conftest.nm >&AS_MESSAGE_LOG_FD
4246 avr_ld_ver="`$gcc_cv_ld -v | sed -e 's:^.* ::'`"
4247 AC_MSG_WARN([[support for avrxmega3 .rodata in flash needs Binutils 2.29 or higher (have $avr_ld_ver)]])
4248 fi
4249 else
4250 AC_MSG_RESULT(test failed)
4251 echo "$as_me: failed program was" >&AS_MESSAGE_LOG_FD
4252 cat conftest.s >&AS_MESSAGE_LOG_FD
4253 AC_MSG_WARN([[see `config.log' for details]])
4254 fi
4255 rm -f conftest.s conftest.o conftest.elf conftest.nm
4256 ;;
4257
4258 cris-*-*)
4259 gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
4260 gcc_cv_as_cris_no_mul_bug,[2,15,91],
4261 [-no-mul-bug-abort], [.text],,
4262 [AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
4263 [Define if your assembler supports the -no-mul-bug-abort option.])])
4264 ;;
4265
4266 sparc*-*-*)
4267 gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
4268 [-relax], [.text],,
4269 [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
4270 [Define if your assembler supports -relax option.])])
4271
4272 gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
4273 gcc_cv_as_sparc_gotdata_op,,
4274 [-K PIC],
4275 [.text
4276 .align 4
4277 foo:
4278 nop
4279 bar:
4280 sethi %gdop_hix22(foo), %g1
4281 xor %g1, %gdop_lox10(foo), %g1
4282 ld [[%l7 + %g1]], %g2, %gdop(foo)],
4283 [if test x$gcc_cv_ld != x \
4284 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4285 if test x$gcc_cv_objdump != x; then
4286 if $gcc_cv_objdump -s -j .text conftest 2> /dev/null \
4287 | grep ' 03000004 82186004 c405c001'> /dev/null 2>&1; then
4288 gcc_cv_as_sparc_gotdata_op=no
4289 else
4290 gcc_cv_as_sparc_gotdata_op=yes
4291 fi
4292 fi
4293 fi
4294 rm -f conftest],
4295 [AC_DEFINE(HAVE_AS_SPARC_GOTDATA_OP, 1,
4296 [Define if your assembler and linker support GOTDATA_OP relocs.])])
4297
4298 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
4299 gcc_cv_as_sparc_ua_pcrel,,
4300 [-K PIC],
4301 [.text
4302 foo:
4303 nop
4304 .data
4305 .align 4
4306 .byte 0
4307 .uaword %r_disp32(foo)],
4308 [if test x$gcc_cv_ld != x \
4309 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
4310 gcc_cv_as_sparc_ua_pcrel=yes
4311 fi
4312 rm -f conftest],
4313 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
4314 [Define if your assembler and linker support unaligned PC relative relocs.])
4315
4316 gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
4317 gcc_cv_as_sparc_ua_pcrel_hidden,,
4318 [-K PIC],
4319 [.data
4320 .align 4
4321 .byte 0x31
4322 .uaword %r_disp32(foo)
4323 .byte 0x32, 0x33, 0x34
4324 .global foo
4325 .hidden foo
4326 foo:
4327 .skip 4],
4328 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4329 && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
4330 && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
4331 | grep ' 31000000 07323334' > /dev/null 2>&1; then
4332 if $gcc_cv_objdump -R conftest 2> /dev/null \
4333 | grep 'DISP32' > /dev/null 2>&1; then
4334 :
4335 else
4336 gcc_cv_as_sparc_ua_pcrel_hidden=yes
4337 fi
4338 fi
4339 rm -f conftest],
4340 [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
4341 [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])])
4342 ]) # unaligned pcrel relocs
4343
4344 gcc_GAS_CHECK_FEATURE([offsetable %lo()],
4345 gcc_cv_as_sparc_offsetable_lo10,,
4346 [-xarch=v9],
4347 [.text
4348 or %g1, %lo(ab) + 12, %g1
4349 or %g1, %lo(ab + 12), %g1],
4350 [if test x$gcc_cv_objdump != x \
4351 && $gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \
4352 | grep ' 82106000 82106000' > /dev/null 2>&1; then
4353 gcc_cv_as_sparc_offsetable_lo10=yes
4354 fi],
4355 [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
4356 [Define if your assembler supports offsetable %lo().])])
4357
4358 gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
4359 gcc_cv_as_sparc_fmaf,,
4360 [-xarch=v9d],
4361 [.text
4362 .register %g2, #scratch
4363 .register %g3, #scratch
4364 .align 4
4365 fmaddd %f0, %f2, %f4, %f6
4366 addxccc %g1, %g2, %g3
4367 fsrl32 %f2, %f4, %f8
4368 fnaddd %f10, %f12, %f14],,
4369 [AC_DEFINE(HAVE_AS_FMAF_HPC_VIS3, 1,
4370 [Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
4371
4372 gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
4373 gcc_cv_as_sparc_sparc4,,
4374 [-xarch=sparc4],
4375 [.text
4376 .register %g2, #scratch
4377 .register %g3, #scratch
4378 .align 4
4379 cxbe %g2, %g3, 1f
4380 1: cwbneg %g2, %g3, 1f
4381 1: sha1
4382 md5
4383 aes_kexpand0 %f4, %f6, %f8
4384 des_round %f38, %f40, %f42, %f44
4385 camellia_f %f54, %f56, %f58, %f60
4386 kasumi_fi_xor %f46, %f48, %f50, %f52],,
4387 [AC_DEFINE(HAVE_AS_SPARC4, 1,
4388 [Define if your assembler supports SPARC4 instructions.])])
4389
4390 gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
4391 gcc_cv_as_sparc_sparc5,,
4392 [-xarch=sparc5],
4393 [.text
4394 .register %g2, #scratch
4395 .register %g3, #scratch
4396 .align 4
4397 subxc %g1, %g2, %g3
4398 fpadd8 %f0, %f2, %f4],,
4399 [AC_DEFINE(HAVE_AS_SPARC5_VIS4, 1,
4400 [Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
4401
4402 gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
4403 gcc_cv_as_sparc_sparc6,,
4404 [-xarch=sparc6],
4405 [.text
4406 .register %g2, #scratch
4407 .register %g3, #scratch
4408 .align 4
4409 rd %entropy, %g1
4410 fpsll64x %f0, %f2, %f4],,
4411 [AC_DEFINE(HAVE_AS_SPARC6, 1,
4412 [Define if your assembler supports SPARC6 instructions.])])
4413
4414 gcc_GAS_CHECK_FEATURE([LEON instructions],
4415 gcc_cv_as_sparc_leon,,
4416 [-Aleon],
4417 [.text
4418 .register %g2, #scratch
4419 .register %g3, #scratch
4420 .align 4
4421 smac %g2, %g3, %g1
4422 umac %g2, %g3, %g1
4423 casa [[%g2]] 0xb, %g3, %g1],,
4424 [AC_DEFINE(HAVE_AS_LEON, 1,
4425 [Define if your assembler supports LEON instructions.])])
4426 ;;
4427
4428 changequote(,)dnl
4429 i[34567]86-*-* | x86_64-*-*)
4430 changequote([,])dnl
4431 case $target_os in
4432 cygwin*)
4433 # Full C++ conformance when using a shared libstdc++-v3 requires some
4434 # support from the Cygwin DLL, which in more recent versions exports
4435 # wrappers to aid in interposing and redirecting operators new, delete,
4436 # etc., as per n2800 #17.6.4.6 [replacement.functions]. Check if we
4437 # are configuring for a version of Cygwin that exports the wrappers.
4438 if test x$host = x$target && test x$host_cpu = xi686; then
4439 AC_CHECK_FUNC([__wrap__Znaj],[gcc_ac_cygwin_dll_wrappers=yes],[gcc_ac_cygwin_dll_wrappers=no])
4440 else
4441 # Can't check presence of libc functions during cross-compile, so
4442 # we just have to assume we're building for an up-to-date target.
4443 gcc_ac_cygwin_dll_wrappers=yes
4444 fi
4445 AC_DEFINE_UNQUOTED(USE_CYGWIN_LIBSTDCXX_WRAPPERS,
4446 [`if test $gcc_ac_cygwin_dll_wrappers = yes; then echo 1; else echo 0; fi`],
4447 [Define if you want to generate code by default that assumes that the
4448 Cygwin DLL exports wrappers to support libstdc++ function replacement.])
4449 esac
4450 case $target_os in
4451 cygwin* | pe | mingw32*)
4452 # Recent binutils allows the three-operand form of ".comm" on PE. This
4453 # definition is used unconditionally to initialise the default state of
4454 # the target option variable that governs usage of the feature.
4455 gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
4456 [2,19,52],,[.comm foo,1,32])
4457 AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
4458 [`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
4459 [Define if your assembler supports specifying the alignment
4460 of objects allocated using the GAS .comm command.])
4461 # Used for DWARF 2 in PE
4462 gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
4463 gcc_cv_as_ix86_pe_secrel32,
4464 [2,15,91],,
4465 [.text
4466 foo: nop
4467 .data
4468 .secrel32 foo],
4469 [if test x$gcc_cv_ld != x \
4470 && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1; then
4471 gcc_cv_as_ix86_pe_secrel32=yes
4472 fi
4473 rm -f conftest],
4474 [AC_DEFINE(HAVE_GAS_PE_SECREL32_RELOC, 1,
4475 [Define if your assembler and linker support 32-bit section relative relocs via '.secrel32 label'.])])
4476 # Test if the assembler supports the extended form of the .section
4477 # directive that specifies section alignment. LTO support uses this,
4478 # but normally only after installation, so we warn but don't fail the
4479 # configure if LTO is enabled but the assembler does not support it.
4480 gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
4481 [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
4482 if test x$gcc_cv_as_section_has_align != xyes; then
4483 case ",$enable_languages," in
4484 *,lto,*)
4485 AC_MSG_WARN([LTO for $target requires binutils >= 2.20.1, but version found appears insufficient; LTO will not work until binutils is upgraded.])
4486 ;;
4487 esac
4488 fi
4489 ;;
4490 esac
4491
4492 gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
4493 [-xbrace_comment=no], [.text],,
4494 [AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
4495 [Define if your assembler supports -xbrace_comment option.])])
4496
4497 gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
4498 gcc_cv_as_ix86_filds,,,
4499 [filds (%ebp); fists (%ebp)],,
4500 [AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
4501 [Define if your assembler uses filds and fists mnemonics.])])
4502
4503 gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
4504 gcc_cv_as_ix86_fildq,,,
4505 [fildq (%ebp); fistpq (%ebp)],,
4506 [AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
4507 [Define if your assembler uses fildq and fistq mnemonics.])])
4508
4509 gcc_GAS_CHECK_FEATURE([cmov syntax],
4510 gcc_cv_as_ix86_cmov_sun_syntax,,,
4511 [cmovl.l %edx, %eax],,
4512 [AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
4513 [Define if your assembler supports the Sun syntax for cmov.])])
4514
4515 gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
4516 gcc_cv_as_ix86_ffreep,,,
4517 [ffreep %st(1)],,
4518 [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
4519 [Define if your assembler supports the ffreep mnemonic.])])
4520
4521 gcc_GAS_CHECK_FEATURE([.quad directive],
4522 gcc_cv_as_ix86_quad,,,
4523 [.quad 0],,
4524 [AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
4525 [Define if your assembler supports the .quad directive.])])
4526
4527 gcc_GAS_CHECK_FEATURE([sahf mnemonic],
4528 gcc_cv_as_ix86_sahf,,,
4529 [.code64
4530 sahf],,
4531 [AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
4532 [Define if your assembler supports the sahf mnemonic in 64bit mode.])])
4533
4534 gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
4535 gcc_cv_as_ix86_interunit_movq,,,
4536 [.code64
4537 movq %mm0, %rax
4538 movq %rax, %xmm0])
4539 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
4540 [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
4541 [Define if your assembler supports interunit movq mnemonic.])
4542
4543 gcc_GAS_CHECK_FEATURE([hle prefixes],
4544 gcc_cv_as_ix86_hle,,,
4545 [lock xacquire cmpxchg %esi, (%ecx)],,
4546 [AC_DEFINE(HAVE_AS_IX86_HLE, 1,
4547 [Define if your assembler supports HLE prefixes.])])
4548
4549 gcc_GAS_CHECK_FEATURE([swap suffix],
4550 gcc_cv_as_ix86_swap,,,
4551 [movl.s %esp, %ebp],,
4552 [AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
4553 [Define if your assembler supports the swap suffix.])])
4554
4555 gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
4556 gcc_cv_as_ix86_diff_sect_delta,,,
4557 [.section .rodata
4558 .L1:
4559 .long .L2-.L1
4560 .long .L3-.L1
4561 .text
4562 .L3: nop
4563 .L2: nop],,
4564 [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
4565 [Define if your assembler supports the subtraction of symbols in different sections.])])
4566
4567 gcc_GAS_CHECK_FEATURE([rep and lock prefix],
4568 gcc_cv_as_ix86_rep_lock_prefix,,,
4569 [rep movsl
4570 rep ret
4571 rep nop
4572 rep bsf %ecx, %eax
4573 rep bsr %ecx, %eax
4574 lock addl %edi, (%eax,%esi)
4575 lock orl $0, (%esp)],,
4576 [AC_DEFINE(HAVE_AS_IX86_REP_LOCK_PREFIX, 1,
4577 [Define if the assembler supports 'rep <insn>, lock <insn>'.])])
4578
4579 gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
4580 gcc_cv_as_ix86_ud2,,,
4581 [ud2],,
4582 [AC_DEFINE(HAVE_AS_IX86_UD2, 1,
4583 [Define if your assembler supports the 'ud2' mnemonic.])])
4584
4585 # Enforce 32-bit output with gas and gld.
4586 if test x$gas = xyes; then
4587 as_ix86_gas_32_opt="--32"
4588 fi
4589 if echo "$ld_ver" | grep GNU > /dev/null; then
4590 if $gcc_cv_ld -V 2>/dev/null | grep elf_i386_sol2 > /dev/null; then
4591 ld_ix86_gld_32_opt="-melf_i386_sol2"
4592 else
4593 ld_ix86_gld_32_opt="-melf_i386"
4594 fi
4595 fi
4596
4597 gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
4598 gcc_cv_as_ix86_tlsgdplt,,
4599 [$as_ix86_gas_32_opt],
4600 [call tls_gd@tlsgdplt],
4601 [if test x$gcc_cv_ld != x \
4602 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4603 gcc_cv_as_ix86_tlsgdplt=yes
4604 fi
4605 rm -f conftest],
4606 [AC_DEFINE(HAVE_AS_IX86_TLSGDPLT, 1,
4607 [Define if your assembler and linker support @tlsgdplt.])])
4608
4609 conftest_s='
4610 .section .tdata,"aw'$tls_section_flag'",@progbits
4611 tls_ld:
4612 .section .text,"ax",@progbits
4613 call tls_ld@tlsldmplt'
4614
4615 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
4616 gcc_cv_as_ix86_tlsldmplt,,
4617 [$as_ix86_gas_32_opt],
4618 [$conftest_s],
4619 [if test x$gcc_cv_ld != x \
4620 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o -G > /dev/null 2>&1; then
4621 gcc_cv_as_ix86_tlsldmplt=yes
4622 fi
4623 rm -f conftest])
4624 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDMPLT,
4625 [`if test $gcc_cv_as_ix86_tlsldmplt = yes; then echo 1; else echo 0; fi`],
4626 [Define to 1 if your assembler and linker support @tlsldmplt.])
4627
4628 conftest_s='
4629 .section .text,"ax",@progbits
4630 .globl _start
4631 .type _start, @function
4632 _start:
4633 leal value@tlsldm(%ebx), %eax
4634 call ___tls_get_addr@plt
4635
4636 .section .tdata,"aw'$tls_section_flag'",@progbits
4637 .type value, @object
4638 value:'
4639 gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
4640 gcc_cv_as_ix86_tlsldm,,
4641 [$as_ix86_gas_32_opt],
4642 [$conftest_s],
4643 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4644 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o $ld_tls_libs -lc > /dev/null 2>&1; then
4645 if $gcc_cv_objdump -d conftest 2>/dev/null | grep nop > /dev/null \
4646 || dis conftest 2>/dev/null | grep nop > /dev/null; then
4647 gcc_cv_as_ix86_tlsldm=yes
4648 fi
4649 fi
4650 rm -f conftest])
4651 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLSLDM,
4652 [`if test $gcc_cv_as_ix86_tlsldm = yes; then echo 1; else echo 0; fi`],
4653 [Define to 1 if your assembler and linker support @tlsldm.])
4654
4655 conftest_s='
4656 .data
4657 bar:
4658 .byte 1
4659 .text
4660 .global _start
4661 _start:
4662 cmpl $0, bar@GOT
4663 jmp *_start@GOT'
4664 gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
4665 gcc_cv_as_ix86_got32x,,
4666 [$as_ix86_gas_32_opt],
4667 [$conftest_s],
4668 [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
4669 && test x$gcc_cv_readelf != x \
4670 && $gcc_cv_readelf --relocs --wide conftest.o 2>&1 \
4671 | grep R_386_GOT32X > /dev/null 2>&1 \
4672 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4673 if $gcc_cv_objdump -dw conftest 2>&1 \
4674 | grep 0xffffff > /dev/null 2>&1; then
4675 gcc_cv_as_ix86_got32x=no
4676 else
4677 gcc_cv_as_ix86_got32x=yes
4678 fi
4679 fi
4680 rm -f conftest])
4681 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_GOT32X,
4682 [`if test x"$gcc_cv_as_ix86_got32x" = xyes; then echo 1; else echo 0; fi`],
4683 [Define 0/1 if your assembler and linker support @GOT.])
4684
4685 gcc_GAS_CHECK_FEATURE([GOTOFF in data],
4686 gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
4687 [$as_ix86_gas_32_opt],
4688 [ .text
4689 .L0:
4690 nop
4691 .data
4692 .long .L0@GOTOFF])
4693 AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
4694 [`if test $gcc_cv_as_ix86_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
4695 [Define true if the assembler supports '.long foo@GOTOFF'.])
4696
4697 conftest_s='
4698 .section .text,"ax",@progbits
4699 .globl _start
4700 .type _start, @function
4701 _start:
4702 leal ld@tlsldm(%ecx), %eax
4703 call *___tls_get_addr@GOT(%ecx)
4704 leal gd@tlsgd(%ecx), %eax
4705 call *___tls_get_addr@GOT(%ecx)
4706
4707 .section .tdata,"aw'$tls_section_flag'",@progbits
4708 .type ld, @object
4709 ld:
4710 .byte 0
4711 .globl gd
4712 .type gd, @object
4713 gd:
4714 .byte 0'
4715 gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
4716 gcc_cv_as_ix86_tls_get_addr_via_got,,
4717 [$as_ix86_gas_32_opt],
4718 [$conftest_s],
4719 [if test x$gcc_cv_ld != x \
4720 && $gcc_cv_ld $ld_ix86_gld_32_opt -o conftest conftest.o > /dev/null 2>&1; then
4721 gcc_cv_as_ix86_tls_get_addr_via_got=yes
4722 fi
4723 rm -f conftest])
4724 AC_DEFINE_UNQUOTED(HAVE_AS_IX86_TLS_GET_ADDR_GOT,
4725 [`if test x"$gcc_cv_as_ix86_tls_get_addr_via_got" = xyes; then echo 1; else echo 0; fi`],
4726 [Define 0/1 if your assembler and linker support calling ___tls_get_addr via GOT.])
4727 ;;
4728
4729 ia64*-*-*)
4730 gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
4731 gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
4732 [ .text
4733 addl r15 = @ltoffx(x#), gp
4734 ;;
4735 ld8.mov r16 = [[r15]], x#
4736 ],,
4737 [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
4738 [Define if your assembler supports ltoffx and ldxmov relocations.])])
4739
4740 ;;
4741
4742 powerpc*-*-*)
4743
4744 case $target in
4745 *-*-darwin*)
4746 gcc_GAS_CHECK_FEATURE([.machine directive support],
4747 gcc_cv_as_machine_directive,,,
4748 [ .machine ppc7400])
4749 if test x$gcc_cv_as_machine_directive != xyes; then
4750 echo "*** This target requires an assembler supporting \".machine\"" >&2
4751 echo you can get it from: https://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg >&2
4752 test x$build = x$target && exit 1
4753 fi
4754 ;;
4755 esac
4756
4757 case $target in
4758 *-*-aix*) conftest_s=' .machine "pwr5"
4759 .csect .text[[PR]]
4760 mfcr 3,128';;
4761 *-*-darwin*) conftest_s=' .text
4762 mfcr r3,128';;
4763 *) conftest_s=' .machine power4
4764 .text
4765 mfcr 3,128';;
4766 esac
4767
4768 gcc_GAS_CHECK_FEATURE([mfcr field support],
4769 gcc_cv_as_powerpc_mfcrf, [2,14,0],,
4770 [$conftest_s],,
4771 [AC_DEFINE(HAVE_AS_MFCRF, 1,
4772 [Define if your assembler supports mfcr field.])])
4773
4774 case $target in
4775 *-*-aix*) conftest_s=' .csect .text[[PR]]
4776 LCF..0:
4777 addis 11,30,_GLOBAL_OFFSET_TABLE_-LCF..0@ha';;
4778 *-*-darwin*)
4779 conftest_s=' .text
4780 LCF0:
4781 addis r11,r30,_GLOBAL_OFFSET_TABLE_-LCF0@ha';;
4782 *) conftest_s=' .text
4783 .LCF0:
4784 addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
4785 esac
4786
4787 gcc_GAS_CHECK_FEATURE([rel16 relocs],
4788 gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
4789 [$conftest_s],,
4790 [AC_DEFINE(HAVE_AS_REL16, 1,
4791 [Define if your assembler supports R_PPC_REL16 relocs.])])
4792
4793 case $target in
4794 *-*-aix*) conftest_s=' .machine "pwr7"
4795 .csect .text[[PR]]
4796 lxvd2x 1,2,3';;
4797 *) conftest_s=' .machine power7
4798 .text
4799 lxvd2x 1,2,3';;
4800 esac
4801
4802 gcc_GAS_CHECK_FEATURE([vector-scalar support],
4803 gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
4804 [$conftest_s],,
4805 [AC_DEFINE(HAVE_AS_VSX, 1,
4806 [Define if your assembler supports VSX instructions.])])
4807
4808 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4809 gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
4810 [.gnu_attribute 4,1],,
4811 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4812 [Define if your assembler supports .gnu_attribute.])])
4813
4814 gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
4815 gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
4816 [ .reloc .,R_PPC64_ENTRY; nop],,
4817 [AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
4818 [Define if your assembler supports the R_PPC64_ENTRY relocation.])])
4819
4820 gcc_GAS_CHECK_FEATURE([plt sequence marker support],
4821 gcc_cv_as_powerpc_pltseq_markers, [2,31,0],-a32 --fatal-warnings,
4822 [ .reloc .,R_PPC_PLTSEQ; nop],,
4823 [AC_DEFINE(HAVE_AS_PLTSEQ, 1,
4824 [Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
4825
4826 case $target in
4827 *-*-aix*)
4828 gcc_GAS_CHECK_FEATURE([AIX .ref support],
4829 gcc_cv_as_aix_ref, [2,21,0],,
4830 [ .csect stuff[[rw]]
4831 stuff:
4832 .long 1
4833 .extern sym
4834 .ref sym
4835 ],,
4836 [AC_DEFINE(HAVE_AS_REF, 1,
4837 [Define if your assembler supports .ref])])
4838
4839 gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
4840 gcc_cv_as_aix_dwloc, [2,21,0],,
4841 [ .dwsect 0xA0000
4842 Lframe..0:
4843 .vbyte 4,Lframe..0
4844 ],,
4845 [AC_DEFINE(HAVE_XCOFF_DWARF_EXTRAS, 1,
4846 [Define if your assembler supports AIX debug frame section label reference.])])
4847 ;;
4848 esac
4849 ;;
4850
4851 mips*-*-*)
4852 gcc_GAS_CHECK_FEATURE([explicit relocation support],
4853 gcc_cv_as_mips_explicit_relocs, [2,14,0],,
4854 [ lw $4,%gp_rel(foo)($4)],,
4855 [if test x$target_cpu_default = x
4856 then target_cpu_default=MASK_EXPLICIT_RELOCS
4857 else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS"
4858 fi])
4859
4860 gcc_GAS_CHECK_FEATURE([-mno-shared support],
4861 gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
4862 [AC_DEFINE(HAVE_AS_NO_SHARED, 1,
4863 [Define if the assembler understands -mno-shared.])])
4864
4865 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
4866 gcc_cv_as_mips_gnu_attribute, [2,18,0],,
4867 [.gnu_attribute 4,1],,
4868 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
4869 [Define if your assembler supports .gnu_attribute.])])
4870
4871 gcc_GAS_CHECK_FEATURE([.module support],
4872 gcc_cv_as_mips_dot_module,,[-32],
4873 [.module mips2
4874 .module fp=xx],,
4875 [AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
4876 [Define if your assembler supports .module.])])
4877 if test x$gcc_cv_as_mips_dot_module = xno \
4878 && test x$with_fp_32 != x; then
4879 AC_MSG_ERROR(
4880 [Requesting --with-fp-32= requires assembler support for .module.])
4881 fi
4882
4883 gcc_GAS_CHECK_FEATURE([.micromips support],
4884 gcc_cv_as_micromips_support,,[--fatal-warnings],
4885 [.set micromips],,
4886 [AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
4887 [Define if your assembler supports the .set micromips directive])])
4888
4889 gcc_GAS_CHECK_FEATURE([.dtprelword support],
4890 gcc_cv_as_mips_dtprelword, [2,18,0],,
4891 [.section .tdata,"awT",@progbits
4892 x:
4893 .word 2
4894 .text
4895 .dtprelword x+0x8000],,
4896 [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
4897 [Define if your assembler supports .dtprelword.])])
4898
4899 gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
4900 gcc_cv_as_mips_dspr1_mult,,,
4901 [ .set mips32r2
4902 .set nodspr2
4903 .set dsp
4904 madd $ac3,$4,$5
4905 maddu $ac3,$4,$5
4906 msub $ac3,$4,$5
4907 msubu $ac3,$4,$5
4908 mult $ac3,$4,$5
4909 multu $ac3,$4,$5],,
4910 [AC_DEFINE(HAVE_AS_DSPR1_MULT, 1,
4911 [Define if your assembler supports DSPR1 mult.])])
4912
4913 AC_MSG_CHECKING(assembler and linker for explicit JALR relocation)
4914 gcc_cv_as_ld_jalr_reloc=no
4915 if test $gcc_cv_as_mips_explicit_relocs = yes; then
4916 if test $in_tree_ld = yes ; then
4917 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 \
4918 && test $in_tree_ld_is_elf = yes; then
4919 gcc_cv_as_ld_jalr_reloc=yes
4920 fi
4921 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
4922 echo ' .ent x' > conftest.s
4923 echo 'x: lw $2,%got_disp(y)($3)' >> conftest.s
4924 echo ' lw $25,%call16(y)($28)' >> conftest.s
4925 echo ' .reloc 1f,R_MIPS_JALR,y' >> conftest.s
4926 echo '1: jalr $25' >> conftest.s
4927 echo ' .reloc 1f,R_MIPS_JALR,x' >> conftest.s
4928 echo '1: jalr $25' >> conftest.s
4929 echo ' .end x' >> conftest.s
4930 if $gcc_cv_as -o conftest.o conftest.s >/dev/null 2>&AS_MESSAGE_LOG_FD \
4931 && $gcc_cv_ld -shared -o conftest.so conftest.o >/dev/null 2>&AS_MESSAGE_LOG_FD; then
4932 if $gcc_cv_objdump -d conftest.so | grep jalr >/dev/null 2>&1 \
4933 && $gcc_cv_objdump -d conftest.so | grep "bal.*<x>" >/dev/null 2>&1; then
4934 gcc_cv_as_ld_jalr_reloc=yes
4935 fi
4936 fi
4937 rm -f conftest.*
4938 fi
4939 fi
4940 if test $gcc_cv_as_ld_jalr_reloc = yes; then
4941 if test x$target_cpu_default = x; then
4942 target_cpu_default=MASK_RELAX_PIC_CALLS
4943 else
4944 target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
4945 fi
4946 fi
4947 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
4948
4949 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
4950 [gcc_cv_ld_mips_personality_relaxation],
4951 [gcc_cv_ld_mips_personality_relaxation=no
4952 if test $in_tree_ld = yes ; then
4953 if test "$gcc_cv_gld_major_version" -eq 2 \
4954 -a "$gcc_cv_gld_minor_version" -ge 21 \
4955 -o "$gcc_cv_gld_major_version" -gt 2; then
4956 gcc_cv_ld_mips_personality_relaxation=yes
4957 fi
4958 elif test x$gcc_cv_as != x \
4959 -a x$gcc_cv_ld != x \
4960 -a x$gcc_cv_readelf != x ; then
4961 cat > conftest.s <<EOF
4962 .cfi_startproc
4963 .cfi_personality 0x80,indirect_ptr
4964 .ent test
4965 test:
4966 nop
4967 .end test
4968 .cfi_endproc
4969
4970 .section .data,"aw",@progbits
4971 indirect_ptr:
4972 .dc.a personality
4973 EOF
4974 if $gcc_cv_as -KPIC -o conftest.o conftest.s > /dev/null 2>&1 \
4975 && $gcc_cv_ld -o conftest conftest.o -shared > /dev/null 2>&1; then
4976 if $gcc_cv_readelf -d conftest 2>&1 \
4977 | grep TEXTREL > /dev/null 2>&1; then
4978 :
4979 elif $gcc_cv_readelf --relocs conftest 2>&1 \
4980 | grep 'R_MIPS_REL32 *$' > /dev/null 2>&1; then
4981 :
4982 else
4983 gcc_cv_ld_mips_personality_relaxation=yes
4984 fi
4985 fi
4986 fi
4987 rm -f conftest.s conftest.o conftest])
4988 if test x$gcc_cv_ld_mips_personality_relaxation = xyes; then
4989 AC_DEFINE(HAVE_LD_PERSONALITY_RELAXATION, 1,
4990 [Define if your linker can relax absolute .eh_frame personality
4991 pointers into PC-relative form.])
4992 fi
4993
4994 gcc_GAS_CHECK_FEATURE([-mnan= support],
4995 gcc_cv_as_mips_nan,,
4996 [-mnan=2008],,,
4997 [AC_DEFINE(HAVE_AS_NAN, 1,
4998 [Define if the assembler understands -mnan=.])])
4999 if test x$gcc_cv_as_mips_nan = xno \
5000 && test x$with_nan != x; then
5001 AC_MSG_ERROR(
5002 [Requesting --with-nan= requires assembler support for -mnan=])
5003 fi
5004 ;;
5005 msp430-*-*)
5006 # Earlier GAS versions generically support .gnu_attribute, but the
5007 # msp430 assembler will not do anything with it.
5008 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5009 gcc_cv_as_msp430_gnu_attribute, [2,33,50],,
5010 [.gnu_attribute 4,1],,
5011 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5012 [Define if your assembler supports .gnu_attribute.])])
5013 gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
5014 gcc_cv_as_msp430_mspabi_attribute, [2,33,50],,
5015 [.mspabi_attribute 4,1],,
5016 [AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
5017 [Define if your assembler supports .mspabi_attribute.])])
5018 if test x$enable_newlib_nano_formatted_io = xyes; then
5019 AC_DEFINE(HAVE_NEWLIB_NANO_FORMATTED_IO, 1, [Define if GCC has been
5020 configured with --enable-newlib-nano-formatted-io.])
5021 fi
5022 ;;
5023 riscv*-*-*)
5024 gcc_GAS_CHECK_FEATURE([.attribute support],
5025 gcc_cv_as_riscv_attribute, [2,32,0],,
5026 [.attribute stack_align,4],,
5027 [AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
5028 [Define if your assembler supports .attribute.])])
5029 ;;
5030 s390*-*-*)
5031 gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
5032 gcc_cv_as_s390_gnu_attribute, [2,18,0],,
5033 [.gnu_attribute 8,1],,
5034 [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
5035 [Define if your assembler supports .gnu_attribute.])])
5036 gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
5037 gcc_cv_as_s390_machine_machinemode, [2,24,0],,
5038 [ .machinemode push
5039 .machinemode pop
5040 .machine push
5041 .machine pop],,
5042 [AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
5043 [Define if your assembler supports .machine and .machinemode.])])
5044 gcc_GAS_CHECK_FEATURE([architecture modifiers support],
5045 gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
5046 [ .machine z13+vx ],,
5047 [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
5048 [Define if your assembler supports architecture modifiers.])])
5049 gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
5050 gcc_cv_as_s390_vector_loadstore_alignment_hints, [2,31,0],,
5051 [ vl %v24,0(%r15),3 ],,
5052 [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
5053 [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
5054
5055 ;;
5056 esac
5057
5058 # Mips and HP-UX need the GNU assembler.
5059 # Linux on IA64 might be able to use the Intel assembler.
5060
5061 case "$target" in
5062 mips*-*-* | *-*-hpux* )
5063 if test x$gas_flag = xyes \
5064 || test x"$host" != x"$build" \
5065 || test ! -x "$gcc_cv_as" \
5066 || "$gcc_cv_as" -v < /dev/null 2>&1 | grep GNU > /dev/null; then
5067 :
5068 else
5069 echo "*** This configuration requires the GNU assembler" >&2
5070 exit 1
5071 fi
5072 ;;
5073 esac
5074
5075 # ??? Not all targets support dwarf2 debug_line, even within a version
5076 # of gas. Moreover, we need to emit a valid instruction to trigger any
5077 # info to the output file. So, as supported targets are added to gas 2.11,
5078 # add some instruction here to (also) show we expect this might work.
5079 # ??? Once 2.11 is released, probably need to add first known working
5080 # version to the per-target configury.
5081 case "$cpu_type" in
5082 aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \
5083 | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
5084 | tilegx | tilepro | visium | xstormy16 | xtensa)
5085 insn="nop"
5086 ;;
5087 ia64 | s390)
5088 insn="nop 0"
5089 ;;
5090 mmix)
5091 insn="swym 0"
5092 ;;
5093 esac
5094 if test x"$insn" != x; then
5095 conftest_s="\
5096 .file 1 \"conftest.s\"
5097 .loc 1 3 0
5098 $insn"
5099 gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
5100 gcc_cv_as_dwarf2_debug_line,
5101 [elf,2,11,0],, [$conftest_s],
5102 [if test x$gcc_cv_objdump != x \
5103 && $gcc_cv_objdump -h conftest.o 2> /dev/null \
5104 | grep debug_line > /dev/null 2>&1; then
5105 gcc_cv_as_dwarf2_debug_line=yes
5106 elif test x$gcc_cv_otool != x \
5107 && $gcc_cv_otool -l conftest.o 2> /dev/null \
5108 | grep debug_line > /dev/null 2>&1; then
5109 gcc_cv_as_dwarf2_debug_line=yes
5110 fi])
5111
5112 # The .debug_line file table must be in the exact order that
5113 # we specified the files, since these indices are also used
5114 # by DW_AT_decl_file. Approximate this test by testing if
5115 # the assembler bitches if the same index is assigned twice.
5116 gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
5117 gcc_cv_as_dwarf2_file_buggy,,,
5118 [ .file 1 "foo.s"
5119 .file 1 "bar.s"])
5120
5121 if test $gcc_cv_as_dwarf2_debug_line = yes \
5122 && test $gcc_cv_as_dwarf2_file_buggy = no; then
5123 AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
5124 [Define if your assembler supports dwarf2 .file/.loc directives,
5125 and preserves file table indices exactly as given.])
5126
5127 if test $gcc_cv_as_leb128 = yes; then
5128 conftest_s="\
5129 .file 1 \"conftest.s\"
5130 .loc 1 3 0 view .LVU1
5131 $insn
5132 .data
5133 .uleb128 .LVU1
5134 .uleb128 .LVU1
5135 "
5136 gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
5137 gcc_cv_as_dwarf2_debug_view,
5138 [elf,2,27,0],,[$conftest_s],,
5139 [AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
5140 [Define if your assembler supports views in dwarf2 .loc directives.])])
5141 fi
5142 fi
5143
5144 gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
5145 gcc_cv_as_gdwarf2_flag,
5146 [elf,2,11,0], [--gdwarf2], [$insn],,
5147 [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
5148 [Define if your assembler supports the --gdwarf2 option.])])
5149
5150 gcc_GAS_CHECK_FEATURE([--gstabs option],
5151 gcc_cv_as_gstabs_flag,
5152 [elf,2,11,0], [--gstabs], [$insn],,
5153 [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
5154 [Define if your assembler supports the --gstabs option.])])
5155
5156 gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
5157 gcc_cv_as_debug_prefix_map_flag,
5158 [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
5159 [AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
5160 [Define if your assembler supports the --debug-prefix-map option.])])
5161 fi
5162
5163 gcc_GAS_CHECK_FEATURE([compressed debug sections],
5164 gcc_cv_as_compress_debug,,,,
5165 [# gas compiled without zlib cannot compress debug sections and warns
5166 # about it, but still exits successfully. So check for this, too.
5167 if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
5168 then
5169 gcc_cv_as_compress_debug=0
5170 # Since binutils 2.26, gas supports --compress-debug-sections=type,
5171 # defaulting to the ELF gABI format.
5172 elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
5173 then
5174 gcc_cv_as_compress_debug=2
5175 gcc_cv_as_compress_debug_option="--compress-debug-sections"
5176 gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5177 # Before binutils 2.26, gas only supported --compress-debug-options and
5178 # emitted the traditional GNU format.
5179 elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
5180 then
5181 gcc_cv_as_compress_debug=1
5182 gcc_cv_as_compress_debug_option="--compress-debug-sections"
5183 gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
5184 else
5185 gcc_cv_as_compress_debug=0
5186 fi])
5187 AC_DEFINE_UNQUOTED(HAVE_AS_COMPRESS_DEBUG, $gcc_cv_as_compress_debug,
5188 [Define to the level of your assembler's compressed debug section support.])
5189 AC_DEFINE_UNQUOTED(AS_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_compress_debug_option",
5190 [Define to the assembler option to enable compressed debug sections.])
5191 AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
5192 [Define to the assembler option to disable compressed debug sections.])
5193
5194 gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
5195 ,,
5196 [.lcomm bar,4,16],,
5197 [AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
5198 [Define if your assembler supports .lcomm with an alignment field.])])
5199
5200 if test x$with_sysroot = x && test x$host = x$target \
5201 && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" \
5202 && test "$prefix" != "NONE"; then
5203 AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",
5204 [Define to PREFIX/include if cpp should also search that directory.])
5205 fi
5206
5207 # Determine the version of glibc, if any, used on the target.
5208 AC_MSG_CHECKING([for target glibc version])
5209 AC_ARG_WITH([glibc-version],
5210 [AS_HELP_STRING([--with-glibc-version=M.N],
5211 [assume GCC used with glibc version M.N or later])], [
5212 if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
5213 glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
5214 glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
5215 else
5216 AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
5217 fi], [
5218 glibc_version_major=0
5219 glibc_version_minor=0
5220 [if test -f $target_header_dir/features.h \
5221 && glibc_version_major_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC__[ ]+[0-9]' $target_header_dir/features.h` \
5222 && glibc_version_minor_define=`$EGREP '^[ ]*#[ ]*define[ ]+__GLIBC_MINOR__[ ]+[0-9]' $target_header_dir/features.h`; then
5223 glibc_version_major=`echo "$glibc_version_major_define" | sed -e 's/.*__GLIBC__[ ]*//'`
5224 glibc_version_minor=`echo "$glibc_version_minor_define" | sed -e 's/.*__GLIBC_MINOR__[ ]*//'`
5225 fi]])
5226 AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
5227 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MAJOR], [$glibc_version_major],
5228 [GNU C Library major version number used on the target, or 0.])
5229 AC_DEFINE_UNQUOTED([TARGET_GLIBC_MINOR], [$glibc_version_minor],
5230 [GNU C Library minor version number used on the target, or 0.])
5231
5232 AC_ARG_ENABLE(gnu-unique-object,
5233 [AS_HELP_STRING([--enable-gnu-unique-object],
5234 [enable the use of the @gnu_unique_object ELF extension on glibc systems])],
5235 [case $enable_gnu_unique_object in
5236 yes | no) ;;
5237 *) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
5238 Valid choices are 'yes' and 'no'.]) ;;
5239 esac],
5240 [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
5241 [elf,2,19,52],,
5242 [.type foo, '$target_type_format_char'gnu_unique_object],,
5243 # We need to unquote above to to use the definition from config.gcc.
5244 # Also check for ld.so support, i.e. glibc 2.11 or higher.
5245 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [11], [enable_gnu_unique_object=yes], )]
5246 )])
5247 if test x$enable_gnu_unique_object = xyes; then
5248 AC_DEFINE(HAVE_GAS_GNU_UNIQUE_OBJECT, 1,
5249 [Define if your assembler supports @gnu_unique_object.])
5250 fi
5251
5252 AC_CACHE_CHECK([assembler for tolerance to line number 0],
5253 [gcc_cv_as_line_zero],
5254 [gcc_cv_as_line_zero=no
5255 if test $in_tree_gas = yes; then
5256 gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
5257 elif test "x$gcc_cv_as" != x; then
5258 { echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
5259 if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
5260 test "x`cat conftest.out`" = x
5261 then
5262 gcc_cv_as_line_zero=yes
5263 else
5264 echo "configure: failed program was" >&AS_MESSAGE_LOG_FD
5265 cat conftest.s >&AS_MESSAGE_LOG_FD
5266 echo "configure: error output was" >&AS_MESSAGE_LOG_FD
5267 cat conftest.out >&AS_MESSAGE_LOG_FD
5268 fi
5269 rm -f conftest.o conftest.s conftest.out
5270 fi])
5271 if test "x$gcc_cv_as_line_zero" = xyes; then
5272 AC_DEFINE([HAVE_AS_LINE_ZERO], 1,
5273 [Define if the assembler won't complain about a line such as # 0 "" 2.])
5274 fi
5275
5276 AC_MSG_CHECKING(support for thin archives)
5277 thin_archive_support=no
5278 echo 'int main (void) { return 0; }' > conftest.c
5279 if ($AR --version | sed 1q | grep "GNU ar" \
5280 && $CC $CFLAGS -c conftest.c \
5281 && $AR rcT conftest.a conftest.o \
5282 && $CC $CFLAGS $LDFLAGS -o conftest conftest.a) >/dev/null 2>&1; then
5283 thin_archive_support=yes
5284 fi
5285 rm -f conftest.c conftest.o conftest.a conftest
5286 AC_MSG_RESULT($thin_archive_support)
5287 AC_SUBST(thin_archive_support)
5288
5289 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
5290 gcc_cv_ld_eh_frame_hdr=no
5291 if test $in_tree_ld = yes ; then
5292 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 \
5293 && test $in_tree_ld_is_elf = yes; then
5294 gcc_cv_ld_eh_frame_hdr=yes
5295 fi
5296 elif test x$gcc_cv_ld != x; then
5297 if echo "$ld_ver" | grep GNU > /dev/null; then
5298 # Check if linker supports --eh-frame-hdr option
5299 if $gcc_cv_ld --help 2>&1 | grep eh-frame-hdr > /dev/null; then
5300 gcc_cv_ld_eh_frame_hdr=yes
5301 fi
5302 else
5303 case "$target" in
5304 *-*-solaris2*)
5305 # Sun ld has various bugs in .eh_frame_hdr support before version 1.2251.
5306 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2251; then
5307 gcc_cv_ld_eh_frame_hdr=yes
5308 fi
5309 ;;
5310 esac
5311 fi
5312 fi
5313 GCC_TARGET_TEMPLATE([HAVE_LD_EH_FRAME_HDR])
5314 if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
5315 AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
5316 [Define if your linker supports .eh_frame_hdr.])
5317 fi
5318 AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
5319
5320 AC_MSG_CHECKING(linker CIEv3 in .eh_frame support)
5321 gcc_cv_ld_eh_frame_ciev3=no
5322 if test $in_tree_ld = yes ; then
5323 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 \
5324 && test $in_tree_ld_is_elf = yes; then
5325 gcc_cv_ld_eh_frame_ciev3=yes
5326 fi
5327 elif test x$gcc_cv_ld != x; then
5328 if echo "$ld_ver" | grep GNU > /dev/null; then
5329 gcc_cv_ld_eh_frame_ciev3=yes
5330 if test 0"$ld_date" -lt 20040513; then
5331 if test -n "$ld_date"; then
5332 # If there was date string, but was earlier than 2004-05-13, fail
5333 gcc_cv_ld_eh_frame_ciev3=no
5334 elif test "$ld_vers_major" -lt 2; then
5335 gcc_cv_ld_eh_frame_ciev3=no
5336 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 16; then
5337 gcc_cv_ld_eh_frame_ciev3=no
5338 fi
5339 fi
5340 else
5341 case "$target" in
5342 *-*-solaris2*)
5343 # Sun ld added support for CIE v3 in .eh_frame in Solaris 11.1.
5344 if test "$ld_vers_major" -gt 1 || test "$ld_vers_minor" -ge 2324; then
5345 gcc_cv_ld_eh_frame_ciev3=yes
5346 fi
5347 ;;
5348 esac
5349 fi
5350 fi
5351 AC_DEFINE_UNQUOTED(HAVE_LD_EH_FRAME_CIEV3,
5352 [`if test x"$gcc_cv_ld_eh_frame_ciev3" = xyes; then echo 1; else echo 0; fi`],
5353 [Define 0/1 if your linker supports CIE v3 in .eh_frame.])
5354 AC_MSG_RESULT($gcc_cv_ld_eh_frame_ciev3)
5355
5356 AC_MSG_CHECKING(linker position independent executable support)
5357 gcc_cv_ld_pie=no
5358 if test $in_tree_ld = yes ; then
5359 case "$target" in
5360 # Full PIE support on Solaris was only introduced in gld 2.26.
5361 *-*-solaris2*) gcc_gld_pie_min_version=26 ;;
5362 *) gcc_gld_pie_min_version=15 ;;
5363 esac
5364 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
5365 && test $in_tree_ld_is_elf = yes; then
5366 gcc_cv_ld_pie=yes
5367 fi
5368 elif test x$gcc_cv_ld != x; then
5369 # Check if linker supports -pie option
5370 if $gcc_cv_ld --help 2>&1 | grep -- -pie > /dev/null; then
5371 gcc_cv_ld_pie=yes
5372 case "$target" in
5373 *-*-solaris2*)
5374 if echo "$ld_ver" | grep GNU > /dev/null \
5375 && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5376 gcc_cv_ld_pie=no
5377 fi
5378 ;;
5379 esac
5380 else
5381 case "$target" in
5382 *-*-solaris2.1[[1-9]]*)
5383 # Solaris 11.3 added PIE support.
5384 if $gcc_cv_ld -z help 2>&1 | grep -- type.*pie > /dev/null; then
5385 gcc_cv_ld_pie=yes
5386 fi
5387 ;;
5388 esac
5389 fi
5390 fi
5391 if test x"$gcc_cv_ld_pie" = xyes; then
5392 AC_DEFINE(HAVE_LD_PIE, 1,
5393 [Define if your linker supports PIE option.])
5394 fi
5395 AC_MSG_RESULT($gcc_cv_ld_pie)
5396
5397 AC_MSG_CHECKING(linker PIE support with copy reloc)
5398 gcc_cv_ld_pie_copyreloc=no
5399 if test $gcc_cv_ld_pie = yes ; then
5400 if test $in_tree_ld = yes ; then
5401 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
5402 gcc_cv_ld_pie_copyreloc=yes
5403 fi
5404 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5405 # Check if linker supports -pie option with copy reloc
5406 case "$target" in
5407 i?86-*-linux* | x86_64-*-linux*)
5408 cat > conftest1.s <<EOF
5409 .globl a_glob
5410 .data
5411 .type a_glob, @object
5412 .size a_glob, 4
5413 a_glob:
5414 .long 2
5415 EOF
5416 cat > conftest2.s <<EOF
5417 .text
5418 .globl main
5419 .type main, @function
5420 main:
5421 movl %eax, a_glob(%rip)
5422 .size main, .-main
5423 .globl ptr
5424 .section .data.rel,"aw",@progbits
5425 .type ptr, @object
5426 ptr:
5427 .quad a_glob
5428 EOF
5429 if $gcc_cv_as --64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5430 && $gcc_cv_ld -shared -melf_x86_64 -o conftest1.so conftest1.o > /dev/null 2>&1 \
5431 && $gcc_cv_as --64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5432 && $gcc_cv_ld -pie -melf_x86_64 -o conftest conftest2.o conftest1.so > /dev/null 2>&1; then
5433 gcc_cv_ld_pie_copyreloc=yes
5434 fi
5435 rm -f conftest conftest1.so conftest1.o conftest2.o conftest1.s conftest2.s
5436 ;;
5437 esac
5438 fi
5439 fi
5440 AC_DEFINE_UNQUOTED(HAVE_LD_PIE_COPYRELOC,
5441 [`if test x"$gcc_cv_ld_pie_copyreloc" = xyes; then echo 1; else echo 0; fi`],
5442 [Define 0/1 if your linker supports -pie option with copy reloc.])
5443 AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
5444
5445 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
5446 gcc_cv_ld_eh_gc_sections=no
5447 if test $in_tree_ld = yes ; then
5448 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 \
5449 && test $in_tree_ld_is_elf = yes; then
5450 gcc_cv_ld_eh_gc_sections=yes
5451 fi
5452 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
5453 cat > conftest.s <<EOF
5454 .section .text
5455 .globl _start
5456 .type _start, @function
5457 _start:
5458 .long foo
5459 .size _start, .-_start
5460 .section .text.foo,"ax",@progbits
5461 .type foo, @function
5462 foo:
5463 .long 0
5464 .size foo, .-foo
5465 .section .gcc_except_table.foo,"a",@progbits
5466 .L0:
5467 .long 0
5468 .section .eh_frame,"a",@progbits
5469 .long .L0
5470 EOF
5471 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5472 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5473 | grep "gc-sections option ignored" > /dev/null; then
5474 gcc_cv_ld_eh_gc_sections=no
5475 elif $gcc_cv_objdump -h conftest 2> /dev/null \
5476 | grep gcc_except_table > /dev/null; then
5477 gcc_cv_ld_eh_gc_sections=yes
5478 # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
5479 if test x$gcc_cv_as_comdat_group != xyes; then
5480 gcc_cv_ld_eh_gc_sections=no
5481 cat > conftest.s <<EOF
5482 .section .text
5483 .globl _start
5484 .type _start, @function
5485 _start:
5486 .long foo
5487 .size _start, .-_start
5488 .section .gnu.linkonce.t.foo,"ax",@progbits
5489 .type foo, @function
5490 foo:
5491 .long 0
5492 .size foo, .-foo
5493 .section .gcc_except_table.foo,"a",@progbits
5494 .L0:
5495 .long 0
5496 .section .eh_frame,"a",@progbits
5497 .long .L0
5498 EOF
5499 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5500 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5501 | grep "gc-sections option ignored" > /dev/null; then
5502 gcc_cv_ld_eh_gc_sections=no
5503 elif $gcc_cv_objdump -h conftest 2> /dev/null \
5504 | grep gcc_except_table > /dev/null; then
5505 gcc_cv_ld_eh_gc_sections=yes
5506 fi
5507 fi
5508 fi
5509 fi
5510 fi
5511 rm -f conftest.s conftest.o conftest
5512 fi
5513 case "$target" in
5514 hppa*-*-linux*)
5515 # ??? This apparently exposes a binutils bug with PC-relative relocations.
5516 gcc_cv_ld_eh_gc_sections=no
5517 ;;
5518 esac
5519 if test x$gcc_cv_ld_eh_gc_sections = xyes; then
5520 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS, 1,
5521 [Define if your linker supports garbage collection of
5522 sections in presence of EH frames.])
5523 fi
5524 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
5525
5526 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
5527 gcc_cv_ld_eh_gc_sections_bug=no
5528 if test $in_tree_ld = yes ; then
5529 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 \
5530 && test $in_tree_ld_is_elf = yes; then
5531 gcc_cv_ld_eh_gc_sections_bug=yes
5532 fi
5533 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
5534 gcc_cv_ld_eh_gc_sections_bug=yes
5535 cat > conftest.s <<EOF
5536 .section .text
5537 .globl _start
5538 .type _start, @function
5539 _start:
5540 .long foo
5541 .size _start, .-_start
5542 .section .text.startup.foo,"ax",@progbits
5543 .type foo, @function
5544 foo:
5545 .long 0
5546 .size foo, .-foo
5547 .section .gcc_except_table.foo,"a",@progbits
5548 .L0:
5549 .long 0
5550 .section .eh_frame,"a",@progbits
5551 .long .L0
5552 EOF
5553 if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
5554 if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
5555 | grep "gc-sections option ignored" > /dev/null; then
5556 :
5557 elif $gcc_cv_objdump -h conftest 2> /dev/null \
5558 | grep gcc_except_table > /dev/null; then
5559 gcc_cv_ld_eh_gc_sections_bug=no
5560 fi
5561 fi
5562 rm -f conftest.s conftest.o conftest
5563 fi
5564 if test x$gcc_cv_ld_eh_gc_sections_bug = xyes; then
5565 AC_DEFINE(HAVE_LD_EH_GC_SECTIONS_BUG, 1,
5566 [Define if your linker has buggy garbage collection of
5567 sections support when .text.startup.foo like sections are used.])
5568 fi
5569 AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
5570
5571 AC_MSG_CHECKING(linker for compressed debug sections)
5572 # gold/gld support compressed debug sections since binutils 2.19/2.21
5573 # In binutils 2.26, gld gained support for the ELF gABI format.
5574 if test $in_tree_ld = yes ; then
5575 gcc_cv_ld_compress_debug=0
5576 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 19 -o "$gcc_cv_gld_major_version" -gt 2 \
5577 && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
5578 gcc_cv_ld_compress_debug=2
5579 gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5580 elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 26 -o "$gcc_cv_gld_major_version" -gt 2 \
5581 && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
5582 gcc_cv_ld_compress_debug=3
5583 gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5584 elif test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2 \
5585 && test $in_tree_ld_is_elf = yes; then
5586 gcc_cv_ld_compress_debug=1
5587 fi
5588 elif echo "$ld_ver" | grep GNU > /dev/null; then
5589 if test "$ld_vers_major" -lt 2 \
5590 || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
5591 gcc_cv_ld_compress_debug=0
5592 elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
5593 gcc_cv_ld_compress_debug=1
5594 else
5595 gcc_cv_ld_compress_debug=3
5596 gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5597 fi
5598 if test $ld_is_gold = yes; then
5599 gcc_cv_ld_compress_debug=2
5600 gcc_cv_ld_compress_debug_option="--compress-debug-sections"
5601 fi
5602 else
5603 changequote(,)dnl
5604 case "${target}" in
5605 *-*-solaris2*)
5606 # Introduced in Solaris 11.2.
5607 if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
5608 gcc_cv_ld_compress_debug=3
5609 gcc_cv_ld_compress_debug_option="-z compress-sections"
5610 else
5611 gcc_cv_ld_compress_debug=0
5612 fi
5613 ;;
5614 *)
5615 # Assume linkers other than GNU ld don't support compessed debug
5616 # sections.
5617 gcc_cv_ld_compress_debug=0
5618 ;;
5619 esac
5620 changequote([,])dnl
5621 fi
5622 AC_DEFINE_UNQUOTED(HAVE_LD_COMPRESS_DEBUG, $gcc_cv_ld_compress_debug,
5623 [Define to the level of your linker's compressed debug section support.])
5624 AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, "$gcc_cv_ld_compress_debug_option",
5625 [Define to the linker option to enable compressed debug sections.])
5626 AC_MSG_RESULT($gcc_cv_ld_compress_debug)
5627
5628 if test x"$ld64_flag" = x"yes"; then
5629
5630 # Set defaults for possibly untestable items.
5631 gcc_cv_ld64_export_dynamic=0
5632
5633 if test "$build" = "$host"; then
5634 darwin_try_test=1
5635 else
5636 darwin_try_test=0
5637 fi
5638
5639 # On Darwin, because of FAT library support, it is often possible to execute
5640 # exes from compatible archs even when the host differs from the build system.
5641 case "$build","$host" in
5642 x86_64-*-darwin*,i?86-*-darwin* | powerpc64*-*-darwin*,powerpc*-*-darwin*)
5643 darwin_try_test=1;;
5644 *) ;;
5645 esac
5646
5647 # If the configurer specified a minimum ld64 version to be supported, then use
5648 # that to determine feature support.
5649 if test x"${gcc_cv_ld64_version}" != x; then
5650 AC_MSG_CHECKING(ld64 specified version)
5651 gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
5652 AC_MSG_RESULT($gcc_cv_ld64_major)
5653 if test "$gcc_cv_ld64_major" -ge 236; then
5654 gcc_cv_ld64_export_dynamic=1
5655 fi
5656 elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
5657 # If the version was not specified, try to find it.
5658 AC_MSG_CHECKING(linker version)
5659 if test x"${gcc_cv_ld64_version}" = x; then
5660 gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// | awk '{print $1}'`
5661 fi
5662 AC_MSG_RESULT($gcc_cv_ld64_version)
5663
5664 AC_MSG_CHECKING(linker for -export_dynamic support)
5665 gcc_cv_ld64_export_dynamic=1
5666 if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
5667 gcc_cv_ld64_export_dynamic=0
5668 fi
5669 AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
5670 fi
5671
5672 if test x"${gcc_cv_ld64_version}" != x; then
5673 AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
5674 [Define to ld64 version.])
5675 fi
5676
5677 AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
5678 [Define to 1 if ld64 supports '-export_dynamic'.])
5679 fi
5680
5681 # --------
5682 # UNSORTED
5683 # --------
5684
5685 AC_CACHE_CHECK(linker --as-needed support,
5686 gcc_cv_ld_as_needed,
5687 [gcc_cv_ld_as_needed=no
5688 gcc_cv_ld_as_needed_option='--as-needed'
5689 gcc_cv_ld_no_as_needed_option='--no-as-needed'
5690 if test $in_tree_ld = yes ; then
5691 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 \
5692 && test $in_tree_ld_is_elf = yes; then
5693 gcc_cv_ld_as_needed=yes
5694 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
5695 gcc_cv_ld_as_needed_option='--push-state --as-needed'
5696 gcc_cv_ld_no_as_needed_option='--pop-state'
5697 fi
5698 fi
5699 elif test x$gcc_cv_ld != x; then
5700 # Check if linker supports --as-needed and --no-as-needed options
5701 if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
5702 gcc_cv_ld_as_needed=yes
5703 if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
5704 && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
5705 && echo "$ld_ver" | grep GNU > /dev/null \
5706 && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
5707 # Use these options only when both ld.bfd and ld.gold support
5708 # --push-state/--pop-state, which unfortunately wasn't added
5709 # at the same time.
5710 gcc_cv_ld_as_needed_option='--push-state --as-needed'
5711 gcc_cv_ld_no_as_needed_option='--pop-state'
5712 fi
5713 fi
5714 case "$target:$gnu_ld" in
5715 *-*-solaris2*:no)
5716 # Solaris 2 ld always supports -z ignore/-z record. Prefer the native
5717 # forms.
5718 gcc_cv_ld_as_needed=yes
5719 gcc_cv_ld_as_needed_option="-z ignore"
5720 gcc_cv_ld_no_as_needed_option="-z record"
5721 ;;
5722 esac
5723 fi
5724 # --as-needed/-z ignore can only be used if libgcc_s.so.1 uses
5725 # dl_iterate_phdr, i.e. since Solaris 11.
5726 case "$target" in
5727 *-*-solaris2.1[[1-9]]*)
5728 case "$target" in
5729 i?86-*-* | x86_64-*-*)
5730 if echo "$ld_ver" | grep GNU > /dev/null; then
5731 # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
5732 gcc_cv_ld_as_needed=no
5733 fi
5734 ;;
5735 esac
5736 ;;
5737 *-*-solaris2*)
5738 gcc_cv_ld_as_needed=no
5739 ;;
5740 esac
5741 ])
5742 if test x"$gcc_cv_ld_as_needed" = xyes; then
5743 AC_DEFINE(HAVE_LD_AS_NEEDED, 1,
5744 [Define if your linker supports --as-needed/--no-as-needed or equivalent options.])
5745 AC_DEFINE_UNQUOTED(LD_AS_NEEDED_OPTION, "$gcc_cv_ld_as_needed_option",
5746 [Define to the linker option to ignore unused dependencies.])
5747 AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, "$gcc_cv_ld_no_as_needed_option",
5748 [Define to the linker option to keep unused dependencies.])
5749 fi
5750
5751 AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
5752 saved_LDFLAGS="$LDFLAGS"
5753 for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
5754 LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
5755 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
5756 [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
5757 done
5758 LDFLAGS="$saved_LDFLAGS"
5759 if test "x$gcc_cv_ld_clearcap" = xyes; then
5760 AC_DEFINE([HAVE_LD_CLEARCAP], 1,
5761 [Define if the linker supports clearing hardware capabilities via mapfile.])
5762 AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
5763 fi
5764 AC_MSG_RESULT($gcc_cv_ld_clearcap)
5765
5766 case "$target" in
5767 powerpc*-*-*)
5768 case "$target" in
5769 *le-*-linux*)
5770 emul_name="-melf32lppc"
5771 ;;
5772 *)
5773 emul_name="-melf32ppc"
5774 ;;
5775 esac
5776 AC_CACHE_CHECK(linker .gnu.attributes long double support,
5777 gcc_cv_ld_ppc_attr,
5778 [gcc_cv_ld_ppc_attr=no
5779 if test x"$ld_is_gold" = xyes; then
5780 gcc_cv_ld_ppc_attr=yes
5781 elif test $in_tree_ld = yes ; then
5782 if test "$gcc_cv_gld_major_version" -eq 2 \
5783 -a "$gcc_cv_gld_minor_version" -ge 28 \
5784 -o "$gcc_cv_gld_major_version" -gt 2; then
5785 gcc_cv_ld_ppc_attr=yes
5786 fi
5787 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5788 # check that merging the long double .gnu_attribute doesn't warn
5789 cat > conftest1.s <<EOF
5790 .gnu_attribute 4,1
5791 EOF
5792 cat > conftest2.s <<EOF
5793 .gnu_attribute 4,9
5794 EOF
5795 if $gcc_cv_as -a32 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5796 && $gcc_cv_as -a32 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5797 && $gcc_cv_ld $emul_name -r -o conftest.o conftest1.o conftest2.o > /dev/null 2> conftest.err \
5798 && test ! -s conftest.err; then
5799 gcc_cv_ld_ppc_attr=yes
5800 fi
5801 rm -f conftest.err conftest.o conftest1.o conftest2.o conftest1.s conftest2.s
5802 fi
5803 ])
5804 if test x$gcc_cv_ld_ppc_attr = xyes; then
5805 AC_DEFINE(HAVE_LD_PPC_GNU_ATTR_LONG_DOUBLE, 1,
5806 [Define if your PowerPC linker has .gnu.attributes long double support.])
5807 fi
5808 ;;
5809 esac
5810
5811 case "$target:$tm_file" in
5812 powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
5813 case "$target" in
5814 *le-*-linux*)
5815 emul_name="-melf64lppc"
5816 ;;
5817 *-*-linux*)
5818 emul_name="-melf64ppc"
5819 ;;
5820 *-*-freebsd*)
5821 emul_name="-melf64ppc_fbsd"
5822 ;;
5823 esac
5824 AC_CACHE_CHECK(linker support for omitting dot symbols,
5825 gcc_cv_ld_no_dot_syms,
5826 [gcc_cv_ld_no_dot_syms=no
5827 if test x"$ld_is_gold" = xyes; then
5828 gcc_cv_ld_no_dot_syms=yes
5829 elif test $in_tree_ld = yes ; then
5830 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
5831 gcc_cv_ld_no_dot_syms=yes
5832 fi
5833 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5834 cat > conftest1.s <<EOF
5835 .text
5836 bl .foo
5837 EOF
5838 cat > conftest2.s <<EOF
5839 .section ".opd","aw"
5840 .align 3
5841 .globl foo
5842 .type foo,@function
5843 foo:
5844 .quad .LEfoo,.TOC.@tocbase,0
5845 .text
5846 .LEfoo:
5847 blr
5848 .size foo,.-.LEfoo
5849 EOF
5850 if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
5851 && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
5852 && $gcc_cv_ld $emul_name -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
5853 gcc_cv_ld_no_dot_syms=yes
5854 fi
5855 rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
5856 fi
5857 ])
5858 if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
5859 AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
5860 [Define if your PowerPC64 linker only needs function descriptor syms.])
5861 fi
5862
5863 AC_CACHE_CHECK(linker large toc support,
5864 gcc_cv_ld_large_toc,
5865 [gcc_cv_ld_large_toc=no
5866 if test x"$ld_is_gold" = xyes; then
5867 gcc_cv_ld_large_toc=yes
5868 elif test $in_tree_ld = yes ; then
5869 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
5870 gcc_cv_ld_large_toc=yes
5871 fi
5872 elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
5873 cat > conftest.s <<EOF
5874 .section ".tbss","awT",@nobits
5875 .align 3
5876 ie0: .space 8
5877 .global _start
5878 .text
5879 _start:
5880 addis 9,13,ie0@got@tprel@ha
5881 ld 9,ie0@got@tprel@l(9)
5882 EOF
5883 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5884 && $gcc_cv_ld $emul_name --no-toc-sort -o conftest conftest.o > /dev/null 2>&1; then
5885 gcc_cv_ld_large_toc=yes
5886 fi
5887 rm -f conftest conftest.o conftest.s
5888 fi
5889 ])
5890 if test x"$gcc_cv_ld_large_toc" = xyes; then
5891 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5892 [Define if your PowerPC64 linker supports a large TOC.])
5893 fi
5894
5895 AC_CACHE_CHECK(linker toc pointer alignment,
5896 gcc_cv_ld_toc_align,
5897 [if test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_nm != x; then
5898 cat > conftest.s <<EOF
5899 .global _start
5900 .text
5901 _start:
5902 addis 9,2,x@got@ha
5903 .section .data.rel.ro,"aw",@progbits
5904 .p2align 16
5905 .space 32768
5906 x: .quad .TOC.
5907 EOF
5908 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1 \
5909 && $gcc_cv_ld $emul_name -z norelro -o conftest conftest.o > /dev/null 2>&1; then
5910 gcc_cv_ld_toc_align=`$gcc_cv_nm conftest | ${AWK} '/\.TOC\./ { match ($0, "0[[[:xdigit:]]]*", a); print strtonum ("0x" substr(a[[0]], length(a[[0]])-3)) }'`
5911 fi
5912 rm -f conftest conftest.o conftest.s
5913 fi
5914 ])
5915 if test -n "$gcc_cv_ld_toc_align" && test $gcc_cv_ld_toc_align -gt 8; then
5916 AC_DEFINE_UNQUOTED(POWERPC64_TOC_POINTER_ALIGNMENT, $gcc_cv_ld_toc_align,
5917 [Define to .TOC. alignment forced by your linker.])
5918 fi
5919 ;;
5920 esac
5921
5922 case "$target" in
5923 *-*-aix*)
5924 AC_CACHE_CHECK(linker large toc support,
5925 gcc_cv_ld_large_toc,
5926 [gcc_cv_ld_large_toc=no
5927 if test x$gcc_cv_as != x ; then
5928 cat > conftest.s <<EOF
5929 .toc
5930 LC..1:
5931 .tc a[[TC]],a[[RW]]
5932 .extern a[[RW]]
5933 .csect .text[[PR]]
5934 .largetoctest:
5935 addis 9,LC..1@u(2)
5936 ld 3,LC..1@l(9)
5937 EOF
5938 if $gcc_cv_as -a64 -o conftest.o conftest.s > /dev/null 2>&1; then
5939 gcc_cv_ld_large_toc=yes
5940 fi
5941 rm -f conftest conftest.o conftest.s
5942 fi
5943 ])
5944 if test x"$gcc_cv_ld_large_toc" = xyes; then
5945 AC_DEFINE(HAVE_LD_LARGE_TOC, 1,
5946 [Define if your PowerPC64 linker supports a large TOC.])
5947 fi
5948 ;;
5949 esac
5950
5951 AC_CACHE_CHECK(linker --build-id support,
5952 gcc_cv_ld_buildid,
5953 [gcc_cv_ld_buildid=no
5954 if test $in_tree_ld = yes ; then
5955 if test "$gcc_cv_gld_major_version" -eq 2 -a \
5956 "$gcc_cv_gld_minor_version" -ge 18 -o \
5957 "$gcc_cv_gld_major_version" -gt 2 \
5958 && test $in_tree_ld_is_elf = yes; then
5959 gcc_cv_ld_buildid=yes
5960 fi
5961 elif test x$gcc_cv_ld != x; then
5962 if $gcc_cv_ld --help 2>&1 | grep build-id > /dev/null; then
5963 gcc_cv_ld_buildid=yes
5964 fi
5965 fi])
5966 if test x"$gcc_cv_ld_buildid" = xyes; then
5967 AC_DEFINE(HAVE_LD_BUILDID, 1,
5968 [Define if your linker supports --build-id.])
5969 fi
5970
5971 AC_ARG_ENABLE(linker-build-id,
5972 [AS_HELP_STRING([--enable-linker-build-id],
5973 [compiler will always pass --build-id to linker])],
5974 [],
5975 enable_linker_build_id=no)
5976
5977 if test x"$enable_linker_build_id" = xyes; then
5978 if test x"$gcc_cv_ld_buildid" = xyes; then
5979 AC_DEFINE(ENABLE_LD_BUILDID, 1,
5980 [Define if gcc should always pass --build-id to linker.])
5981 else
5982 AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored)
5983 fi
5984 fi
5985
5986 # In binutils 2.21, GNU ld gained support for new emulations fully
5987 # supporting the Solaris 2 ABI. Detect their presence in the linker used.
5988 AC_CACHE_CHECK(linker *_sol2 emulation support,
5989 gcc_cv_ld_sol2_emulation,
5990 [gcc_cv_ld_sol2_emulation=no
5991 if test $in_tree_ld = yes ; then
5992 if test "$gcc_cv_gld_major_version" -eq 2 -a \
5993 "$gcc_cv_gld_minor_version" -ge 21 -o \
5994 "$gcc_cv_gld_major_version" -gt 2 \
5995 && test $in_tree_ld_is_elf = yes; then
5996 gcc_cv_ld_sol2_emulation=yes
5997 fi
5998 elif test x$gcc_cv_ld != x; then
5999 if $gcc_cv_ld -V 2>/dev/null | sed -e '1,/Supported emulations/d;q' | \
6000 grep _sol2 > /dev/null; then
6001 gcc_cv_ld_sol2_emulation=yes
6002 fi
6003 fi])
6004 if test x"$gcc_cv_ld_sol2_emulation" = xyes; then
6005 AC_DEFINE(HAVE_LD_SOL2_EMULATION, 1,
6006 [Define if your linker supports the *_sol2 emulations.])
6007 fi
6008
6009 AC_CACHE_CHECK(linker --sysroot support,
6010 gcc_cv_ld_sysroot,
6011 [gcc_cv_ld_sysroot=no
6012 if test $in_tree_ld = yes ; then
6013 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
6014 gcc_cv_ld_sysroot=yes
6015 fi
6016 elif test x$gcc_cv_ld != x; then
6017 if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
6018 gcc_cv_ld_sysroot=yes
6019 fi
6020 fi])
6021 if test x"$gcc_cv_ld_sysroot" = xyes; then
6022 AC_DEFINE(HAVE_LD_SYSROOT, 1,
6023 [Define if your linker supports --sysroot.])
6024 fi
6025
6026 case $target in
6027 *-*-solaris2*)
6028 # Check for system-provided CRTs on Solaris 11.x and Solaris 12.
6029 AC_CACHE_CHECK([system-provided CRTs on Solaris],
6030 gcc_cv_solaris_crts,
6031 [gcc_cv_solaris_crts=no
6032 if test x$host != x$target; then
6033 if test "x$with_sysroot" = xyes; then
6034 target_sysroot="${test_exec_prefix}/${target_noncanonical}/sys-root"
6035 else
6036 target_sysroot="${with_sysroot}"
6037 fi
6038 fi
6039 target_libdir="$target_sysroot/usr/lib"
6040 # At the time they were added, gcrt1.o became a symlink for backwards
6041 # compatibility on x86, while crt1.o was added on sparc, so check for that.
6042 case $target in
6043 i?86-*-solaris2* | x86_64-*-solaris2*)
6044 if test -h "$target_libdir/gcrt1.o"; then gcc_cv_solaris_crts=yes; fi
6045 ;;
6046 sparc*-*-solaris2*)
6047 if test -f "$target_libdir/crt1.o"; then gcc_cv_solaris_crts=yes; fi
6048 ;;
6049 esac])
6050 ;;
6051 esac
6052 if test x$gcc_cv_solaris_crts = xyes; then
6053 AC_DEFINE(HAVE_SOLARIS_CRTS, 1,
6054 [Define if the system-provided CRTs are present on Solaris.])
6055 fi
6056
6057 AC_ARG_ENABLE(libssp,
6058 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
6059 [case "${enableval}" in
6060 yes|no)
6061 ;;
6062 *)
6063 AC_MSG_ERROR([unknown libssp setting $enableval])
6064 ;;
6065 esac], [])
6066
6067 # Test for stack protector support in target C library.
6068 AC_CACHE_CHECK(__stack_chk_fail in target C library,
6069 gcc_cv_libc_provides_ssp,
6070 [gcc_cv_libc_provides_ssp=no
6071 if test "x$enable_libssp" = "xno"; then
6072 gcc_cv_libc_provides_ssp=yes
6073 elif test "x$enable_libssp" = "xyes"; then
6074 gcc_cv_libc_provides_ssp=no
6075 else
6076 case "$target" in
6077 *-*-musl*)
6078 # All versions of musl provide stack protector
6079 gcc_cv_libc_provides_ssp=yes;;
6080 *-*-linux* | *-*-kfreebsd*-gnu)
6081 # glibc 2.4 and later provides __stack_chk_fail and
6082 # either __stack_chk_guard, or TLS access to stack guard canary.
6083 GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_libc_provides_ssp=yes], [
6084 [if test -f $target_header_dir/features.h \
6085 && $EGREP '^[ ]*#[ ]*define[ ]+__GNU_LIBRARY__[ ]+([1-9][0-9]|[6-9])' \
6086 $target_header_dir/features.h > /dev/null; then
6087 if $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC__[ ]+1' \
6088 $target_header_dir/features.h > /dev/null && \
6089 test -f $target_header_dir/bits/uClibc_config.h && \
6090 $EGREP '^[ ]*#[ ]*define[ ]+__UCLIBC_HAS_SSP__[ ]+1' \
6091 $target_header_dir/bits/uClibc_config.h > /dev/null; then
6092 gcc_cv_libc_provides_ssp=yes
6093 fi
6094 # all versions of Bionic support stack protector
6095 elif test -f $target_header_dir/sys/cdefs.h \
6096 && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
6097 $target_header_dir/sys/cdefs.h > /dev/null; then
6098 gcc_cv_libc_provides_ssp=yes
6099 fi]])
6100 ;;
6101 *-*-gnu*)
6102 # Avoid complicated tests (see
6103 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
6104 # simply assert that glibc does provide this, which is true for all
6105 # realistically usable GNU/Hurd configurations.
6106 # All supported versions of musl provide it as well
6107 gcc_cv_libc_provides_ssp=yes;;
6108 *-*-darwin* | *-*-freebsd* | *-*-netbsd*)
6109 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
6110 [echo "no __stack_chk_fail on this target"])
6111 ;;
6112 *) gcc_cv_libc_provides_ssp=no ;;
6113 esac
6114 fi])
6115
6116 if test x$gcc_cv_libc_provides_ssp = xyes; then
6117 AC_DEFINE(TARGET_LIBC_PROVIDES_SSP, 1,
6118 [Define if your target C library provides stack protector support])
6119 fi
6120
6121 # Check whether --enable-default-ssp was given.
6122 AC_ARG_ENABLE(default-ssp,
6123 [AS_HELP_STRING([--enable-default-ssp],
6124 [enable Stack Smashing Protection as default])],[
6125 if test x$gcc_cv_libc_provides_ssp = xyes; then
6126 case "$target" in
6127 ia64*-*-*) enable_default_ssp=no ;;
6128 *) enable_default_ssp=$enableval ;;
6129 esac
6130 else
6131 enable_default_ssp=no
6132 fi],
6133 enable_default_ssp=no)
6134 if test x$enable_default_ssp = xyes ; then
6135 AC_DEFINE(ENABLE_DEFAULT_SSP, 1,
6136 [Define if your target supports default stack protector and it is enabled.])
6137 fi
6138 AC_SUBST([enable_default_ssp])
6139
6140 # Test for <sys/sdt.h> on the target.
6141 GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
6142 AC_MSG_CHECKING(sys/sdt.h in the target C library)
6143 have_sys_sdt_h=no
6144 if test -f $target_header_dir/sys/sdt.h; then
6145 have_sys_sdt_h=yes
6146 AC_DEFINE(HAVE_SYS_SDT_H, 1,
6147 [Define if your target C library provides sys/sdt.h])
6148 fi
6149 AC_MSG_RESULT($have_sys_sdt_h)
6150
6151 # Check if TFmode long double should be used by default or not.
6152 # Some glibc targets used DFmode long double, but with glibc 2.4
6153 # and later they can use TFmode.
6154 case "$target" in
6155 powerpc*-*-linux* | \
6156 sparc*-*-linux* | \
6157 s390*-*-linux* | \
6158 alpha*-*-linux*)
6159 AC_ARG_WITH(long-double-128,
6160 [AS_HELP_STRING([--with-long-double-128],
6161 [use 128-bit long double by default])],
6162 gcc_cv_target_ldbl128="$with_long_double_128", [
6163 case "$target" in
6164 s390*-*-linux-musl*)
6165 gcc_cv_target_ldbl128=yes
6166 ;;
6167 powerpc*-*-linux-musl*)
6168 gcc_cv_target_ldbl128=no
6169 ;;
6170 *)]
6171 [GCC_GLIBC_VERSION_GTE_IFELSE([2], [4], [gcc_cv_target_ldbl128=yes], [
6172 [gcc_cv_target_ldbl128=no
6173 grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
6174 $target_header_dir/bits/wordsize.h > /dev/null 2>&1 \
6175 && gcc_cv_target_ldbl128=yes
6176 ]])]
6177 [
6178 ;;
6179 esac
6180 ])
6181 ;;
6182 esac
6183 if test x$gcc_cv_target_ldbl128 = xyes; then
6184 AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
6185 [Define if TFmode long double should be the default])
6186 fi
6187
6188 # Check if TFmode long double target should use the IBM extended double or IEEE
6189 # 128-bit floating point formats if long doubles are 128-bits long. The long
6190 # double type can only be switched on powerpc64 bit Linux systems where VSX is
6191 # supported. Other PowerPC systems do not build the IEEE 128-bit emulator in
6192 # libgcc.
6193 AC_ARG_WITH([long-double-format],
6194 [AS_HELP_STRING([--with-long-double-format={ieee,ibm}]
6195 [Specify whether PowerPC long double uses IEEE or IBM format])],[
6196 case "$target:$with_long_double_format" in
6197 powerpc64le-*-linux*:ieee | powerpc64le-*-linux*:ibm)
6198 :
6199 ;;
6200 powerpc64-*-linux*:ieee | powerpc64-*-linux*:ibm)
6201 # IEEE 128-bit emulation is only built on 64-bit VSX Linux systems
6202 case "$with_cpu" in
6203 power7 | power8 | power9 | power1*)
6204 :
6205 ;;
6206 *)
6207 AC_MSG_ERROR([Configuration option --with-long-double-format is only \
6208 supported if the default cpu is power7 or newer])
6209 with_long_double_format=""
6210 ;;
6211 esac
6212 ;;
6213 xpowerpc64*-*-linux*:*)
6214 AC_MSG_ERROR([--with-long-double-format argument should be ibm or ieee])
6215 with_long_double_format=""
6216 ;;
6217 *)
6218 AC_MSG_ERROR([Configure option --with-long-double-format is only supported \
6219 on 64-bit PowerPC VSX Linux systems])
6220 with_long_double_format=""
6221 ;;
6222 esac],
6223 [])
6224
6225 # Check if the target LIBC supports exporting the AT_PLATFORM and AT_HWCAP
6226 # values in the TCB. Currently, only GLIBC 2.23 and later support this.
6227 gcc_cv_libc_provides_hwcap_in_tcb=no
6228 case "$target" in
6229 powerpc*-*-linux*)
6230 GCC_GLIBC_VERSION_GTE_IFELSE([2], [23], [gcc_cv_libc_provides_hwcap_in_tcb=yes], )
6231 ;;
6232 esac
6233 if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
6234 AC_DEFINE(TARGET_LIBC_PROVIDES_HWCAP_IN_TCB, 1,
6235 [Define if your target C Library provides the AT_HWCAP value in the TCB])
6236 fi
6237
6238 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
6239 gcc_cv_target_dl_iterate_phdr=unknown
6240 case "$target" in
6241 *-*-solaris2*)
6242 # <link.h> needs both a dl_iterate_phdr declaration and support for
6243 # compilation with largefile support.
6244 if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
6245 && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
6246 gcc_cv_target_dl_iterate_phdr=yes
6247 else
6248 gcc_cv_target_dl_iterate_phdr=no
6249 fi
6250 ;;
6251 *-*-dragonfly* | *-*-freebsd*)
6252 if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
6253 gcc_cv_target_dl_iterate_phdr=yes
6254 else
6255 gcc_cv_target_dl_iterate_phdr=no
6256 fi
6257 ;;
6258 *-linux-musl*)
6259 gcc_cv_target_dl_iterate_phdr=yes
6260 ;;
6261 esac
6262 GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
6263 if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
6264 AC_DEFINE(TARGET_DL_ITERATE_PHDR, 1,
6265 [Define if your target C library provides the `dl_iterate_phdr' function.])
6266 fi
6267 AC_MSG_RESULT($gcc_cv_target_dl_iterate_phdr)
6268
6269 # We no longer support different GC mechanisms. Emit an error if
6270 # the user configures with --with-gc.
6271 AC_ARG_WITH(gc,
6272 [AS_HELP_STRING([--with-gc={page,zone}],
6273 [this option is not supported anymore. It used to choose
6274 the garbage collection mechanism to use with the compiler])],
6275 [AC_MSG_ERROR([Configure option --with-gc is only supported up to GCC 4.7.x])],
6276 [])
6277
6278 # Libraries to use on the host. This will normally be set by the top
6279 # level Makefile. Here we simply capture the value for our Makefile.
6280 if test -z "${HOST_LIBS+set}"; then
6281 HOST_LIBS=
6282 fi
6283 AC_SUBST(HOST_LIBS)
6284
6285 # Use the system's zlib library.
6286 AM_ZLIB
6287
6288 dnl Very limited version of automake's enable-maintainer-mode
6289
6290 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
6291 dnl maintainer-mode is disabled by default
6292 AC_ARG_ENABLE(maintainer-mode,
6293 [AS_HELP_STRING([--enable-maintainer-mode],
6294 [enable make rules and dependencies not useful
6295 (and sometimes confusing) to the casual installer])],
6296 maintainer_mode=$enableval,
6297 maintainer_mode=no)
6298
6299 AC_MSG_RESULT($maintainer_mode)
6300
6301 if test "$maintainer_mode" = "yes"; then
6302 MAINT=''
6303 else
6304 MAINT='#'
6305 fi
6306 AC_SUBST(MAINT)dnl
6307
6308 dnl Whether to prevent multiple front-ends from linking at the same time
6309
6310 AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
6311 AC_ARG_ENABLE(link-mutex,
6312 [AS_HELP_STRING([--enable-link-mutex],
6313 [avoid linking multiple front-ends at once to avoid thrashing
6314 on the build machine])],
6315 do_link_mutex=$enableval,
6316 do_link_mutex=no)
6317 AC_MSG_RESULT($do_link_mutex)
6318
6319 if test "$do_link_mutex" = "yes"; then
6320 DO_LINK_MUTEX=true
6321 else
6322 DO_LINK_MUTEX=false
6323 fi
6324 AC_SUBST(DO_LINK_MUTEX)
6325
6326 # --------------
6327 # Language hooks
6328 # --------------
6329
6330 # Make empty files to contain the specs and options for each language.
6331 # Then add #include lines to for a compiler that has specs and/or options.
6332
6333 subdirs=
6334 lang_opt_files=
6335 lang_specs_files=
6336 lang_tree_files=
6337 # These (without "all_") are set in each config-lang.in.
6338 # `language' must be a single word so is spelled singularly.
6339 all_languages=
6340 all_compilers=
6341 all_outputs='Makefile'
6342 # List of language configure and makefile fragments.
6343 all_lang_configurefrags=
6344 all_lang_makefrags=
6345 # Additional files for gengtype
6346 all_gtfiles="$target_gtfiles"
6347
6348 # These are the languages that are set in --enable-languages,
6349 # and are available in the GCC tree.
6350 all_selected_languages=
6351
6352 # Add the language fragments.
6353 # Languages are added via two mechanisms. Some information must be
6354 # recorded in makefile variables, these are defined in config-lang.in.
6355 # We accumulate them and plug them into the main Makefile.
6356 # The other mechanism is a set of hooks for each of the main targets
6357 # like `clean', `install', etc.
6358
6359 language_hooks="Make-hooks"
6360
6361 for lang in ${srcdir}/*/config-lang.in
6362 do
6363 changequote(,)dnl
6364 test "$lang" = "${srcdir}/*/config-lang.in" && continue
6365
6366 lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
6367 if test "x$lang_alias" = x
6368 then
6369 echo "$lang doesn't set \$language." 1>&2
6370 exit 1
6371 fi
6372 subdir="`echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
6373 subdirs="$subdirs $subdir"
6374
6375 # $gcc_subdir is where the gcc integration files are to be found
6376 # for a language, both for internal compiler purposes (compiler
6377 # sources implementing front-end to GCC tree converters), and for
6378 # build infrastructure purposes (Make-lang.in, etc.)
6379 #
6380 # This will be <subdir> (relative to $srcdir) if a line like
6381 # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
6382 # is found in <langdir>/config-lang.in, and will remain <langdir>
6383 # otherwise.
6384 #
6385 # Except for the language alias (fetched above), the regular
6386 # "config-lang.in" contents are always retrieved from $gcc_subdir,
6387 # so a <langdir>/config-lang.in setting gcc_subdir typically sets
6388 # only this and the language alias.
6389
6390 gcc_subdir=`sed -n -e 's,^gcc_subdir=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^gcc_subdir=\([^ ]*\).*$,\1,p' $lang`
6391 if [ "$gcc_subdir" = "" ]; then
6392 gcc_subdir="$subdir"
6393 fi
6394
6395 case ",$enable_languages," in
6396 *,$lang_alias,*)
6397 all_selected_languages="$all_selected_languages $lang_alias"
6398 if test -f $srcdir/$gcc_subdir/lang-specs.h; then
6399 lang_specs_files="$lang_specs_files $srcdir/$gcc_subdir/lang-specs.h"
6400 fi
6401 ;;
6402 esac
6403 changequote([,])dnl
6404
6405 language=
6406 boot_language=
6407 compilers=
6408 outputs=
6409 gtfiles=
6410 subdir_requires=
6411 . ${srcdir}/$gcc_subdir/config-lang.in
6412 if test "x$language" = x
6413 then
6414 echo "${srcdir}/$gcc_subdir/config-lang.in doesn't set \$language." 1>&2
6415 exit 1
6416 fi
6417
6418 ok=:
6419 case ",$enable_languages," in
6420 *,$lang_alias,*) ;;
6421 *)
6422 for i in $subdir_requires; do
6423 test -f "${srcdir}/$i/config-lang.in" && continue
6424 ok=false
6425 break
6426 done
6427 ;;
6428 esac
6429 $ok || continue
6430
6431 all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
6432 all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
6433 if test -f $srcdir/$gcc_subdir/lang.opt; then
6434 lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
6435 all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
6436 fi
6437 if test -f $srcdir/$gcc_subdir/$subdir-tree.def; then
6438 lang_tree_files="$lang_tree_files $srcdir/$gcc_subdir/$subdir-tree.def"
6439 fi
6440 all_languages="$all_languages $language"
6441 all_compilers="$all_compilers $compilers"
6442 all_outputs="$all_outputs $outputs"
6443 all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
6444 case ",$enable_languages," in
6445 *,lto,*)
6446 AC_DEFINE(ENABLE_LTO, 1, [Define to enable LTO support.])
6447 enable_lto=yes
6448 AC_SUBST(enable_lto)
6449 ;;
6450 *) ;;
6451 esac
6452 done
6453
6454 check_languages=
6455 for language in $all_selected_languages
6456 do
6457 check_languages="$check_languages check-$language"
6458 done
6459
6460 selftest_languages=
6461 for language in $all_selected_languages
6462 do
6463 selftest_languages="$selftest_languages selftest-$language"
6464 done
6465
6466 # We link each language in with a set of hooks, reached indirectly via
6467 # lang.${target}. Only do so for selected languages.
6468
6469 rm -f Make-hooks
6470 touch Make-hooks
6471 target_list="all.cross start.encap rest.encap tags \
6472 install-common install-man install-info install-pdf install-html dvi \
6473 pdf html uninstall info man srcextra srcman srcinfo \
6474 mostlyclean clean distclean maintainer-clean install-plugin"
6475
6476 for t in $target_list
6477 do
6478 x=
6479 for lang in $all_selected_languages
6480 do
6481 x="$x $lang.$t"
6482 done
6483 echo "lang.$t: $x" >> Make-hooks
6484 done
6485
6486 # --------
6487 # Option include files
6488 # --------
6489
6490 ${AWK} -f $srcdir/opt-include.awk $all_opt_files > option-includes.mk
6491 option_includes="option-includes.mk"
6492 AC_SUBST_FILE(option_includes)
6493
6494 # --------
6495 # UNSORTED
6496 # --------
6497
6498 # Create .gdbinit.
6499
6500 echo "dir ." > .gdbinit
6501 echo "dir ${srcdir}" >> .gdbinit
6502 if test x$gdb_needs_out_file_path = xyes
6503 then
6504 echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
6505 fi
6506 if test "x$subdirs" != x; then
6507 for s in $subdirs
6508 do
6509 echo "dir ${srcdir}/$s" >> .gdbinit
6510 done
6511 fi
6512 echo "source ${srcdir}/gdbinit.in" >> .gdbinit
6513 echo "python import sys; sys.path.append('${srcdir}'); import gdbhooks" >> .gdbinit
6514
6515 # Put a breakpoint on __asan_report_error to help with debugging buffer
6516 # overflow.
6517 case "$CFLAGS" in
6518 *-fsanitize=address*)
6519 echo "source ${srcdir}/gdbasan.in" >> .gdbinit
6520 ;;
6521 esac
6522
6523 gcc_tooldir='$(libsubdir)/$(libsubdir_to_prefix)$(target_noncanonical)'
6524 AC_SUBST(gcc_tooldir)
6525 AC_SUBST(dollar)
6526
6527 # Find a directory in which to install a shared libgcc.
6528
6529 AC_ARG_ENABLE(version-specific-runtime-libs,
6530 [AS_HELP_STRING([--enable-version-specific-runtime-libs],
6531 [specify that runtime libraries should be
6532 installed in a compiler-specific directory])])
6533
6534 # Substitute configuration variables
6535 AC_SUBST(subdirs)
6536 AC_SUBST(srcdir)
6537 AC_SUBST(all_compilers)
6538 AC_SUBST(all_gtfiles)
6539 AC_SUBST(all_lang_configurefrags)
6540 AC_SUBST(all_lang_makefrags)
6541 AC_SUBST(all_languages)
6542 AC_SUBST(all_selected_languages)
6543 AC_SUBST(build_exeext)
6544 AC_SUBST(build_install_headers_dir)
6545 AC_SUBST(build_xm_file_list)
6546 AC_SUBST(build_xm_include_list)
6547 AC_SUBST(build_xm_defines)
6548 AC_SUBST(build_file_translate)
6549 AC_SUBST(check_languages)
6550 AC_SUBST(selftest_languages)
6551 AC_SUBST(cpp_install_dir)
6552 AC_SUBST(xmake_file)
6553 AC_SUBST(tmake_file)
6554 AC_SUBST(TM_ENDIAN_CONFIG)
6555 AC_SUBST(TM_MULTILIB_CONFIG)
6556 AC_SUBST(TM_MULTILIB_EXCEPTIONS_CONFIG)
6557 AC_SUBST(extra_gcc_objs)
6558 AC_SUBST(user_headers_inc_next_pre)
6559 AC_SUBST(user_headers_inc_next_post)
6560 AC_SUBST(extra_headers_list)
6561 AC_SUBST(extra_objs)
6562 AC_SUBST(extra_programs)
6563 AC_SUBST(float_h_file)
6564 AC_SUBST(gcc_config_arguments)
6565 AC_SUBST(gcc_gxx_include_dir)
6566 AC_SUBST(gcc_gxx_include_dir_add_sysroot)
6567 AC_SUBST(host_exeext)
6568 AC_SUBST(host_xm_file_list)
6569 AC_SUBST(host_xm_include_list)
6570 AC_SUBST(host_xm_defines)
6571 AC_SUBST(out_host_hook_obj)
6572 AC_SUBST(install)
6573 AC_SUBST(lang_opt_files)
6574 AC_SUBST(lang_specs_files)
6575 AC_SUBST(lang_tree_files)
6576 AC_SUBST(local_prefix)
6577 AC_SUBST(md_file)
6578 AC_SUBST(objc_boehm_gc)
6579 AC_SUBST(out_file)
6580 AC_SUBST(out_object_file)
6581 AC_SUBST(common_out_file)
6582 AC_SUBST(common_out_object_file)
6583 AC_SUBST(tm_file_list)
6584 AC_SUBST(tm_include_list)
6585 AC_SUBST(tm_defines)
6586 AC_SUBST(tm_p_file_list)
6587 AC_SUBST(tm_p_include_list)
6588 AC_SUBST(tm_d_file_list)
6589 AC_SUBST(tm_d_include_list)
6590 AC_SUBST(xm_file_list)
6591 AC_SUBST(xm_include_list)
6592 AC_SUBST(xm_defines)
6593 AC_SUBST(use_gcc_stdint)
6594 AC_SUBST(c_target_objs)
6595 AC_SUBST(cxx_target_objs)
6596 AC_SUBST(fortran_target_objs)
6597 AC_SUBST(d_target_objs)
6598 AC_SUBST(target_cpu_default)
6599
6600 AC_SUBST_FILE(language_hooks)
6601
6602 # Echo link setup.
6603 if test x${build} = x${host} ; then
6604 if test x${host} = x${target} ; then
6605 echo "Links are now set up to build a native compiler for ${target}." 1>&2
6606 else
6607 echo "Links are now set up to build a cross-compiler" 1>&2
6608 echo " from ${host} to ${target}." 1>&2
6609 fi
6610 else
6611 if test x${host} = x${target} ; then
6612 echo "Links are now set up to build (on ${build}) a native compiler" 1>&2
6613 echo " for ${target}." 1>&2
6614 else
6615 echo "Links are now set up to build (on ${build}) a cross-compiler" 1>&2
6616 echo " from ${host} to ${target}." 1>&2
6617 fi
6618 fi
6619
6620 AC_ARG_VAR(GMPLIBS,[How to link GMP])
6621 AC_ARG_VAR(GMPINC,[How to find GMP include files])
6622
6623 AC_ARG_VAR(ISLLIBS,[How to link isl])
6624 AC_ARG_VAR(ISLINC,[How to find isl include files])
6625 if test "x${ISLLIBS}" != "x" ; then
6626 AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
6627 fi
6628
6629 GCC_ENABLE_PLUGINS
6630 AC_SUBST(pluginlibs)
6631 AC_SUBST(enable_plugin)
6632 if test x"$enable_plugin" = x"yes"; then
6633 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
6634 fi
6635
6636
6637 # Enable --enable-host-shared
6638 AC_ARG_ENABLE(host-shared,
6639 [AS_HELP_STRING([--enable-host-shared],
6640 [build host code as shared libraries])],
6641 [PICFLAG=-fPIC], [PICFLAG=])
6642 AC_SUBST(enable_host_shared)
6643 AC_SUBST(PICFLAG)
6644
6645
6646 AC_ARG_ENABLE(libquadmath-support,
6647 [AS_HELP_STRING([--disable-libquadmath-support],
6648 [disable libquadmath support for Fortran])],
6649 ENABLE_LIBQUADMATH_SUPPORT=$enableval,
6650 ENABLE_LIBQUADMATH_SUPPORT=yes)
6651 if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then
6652 AC_DEFINE(ENABLE_LIBQUADMATH_SUPPORT, 1,
6653 [Define to 1 to enable libquadmath support])
6654 fi
6655
6656
6657 # Specify what hash style to use by default.
6658 AC_ARG_WITH([linker-hash-style],
6659 [AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
6660 [specify the linker hash style])],
6661 [case x"$withval" in
6662 xsysv)
6663 LINKER_HASH_STYLE=sysv
6664 ;;
6665 xgnu)
6666 LINKER_HASH_STYLE=gnu
6667 ;;
6668 xboth)
6669 LINKER_HASH_STYLE=both
6670 ;;
6671 *)
6672 AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
6673 ;;
6674 esac],
6675 [LINKER_HASH_STYLE=''])
6676 if test x"${LINKER_HASH_STYLE}" != x; then
6677 AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
6678 [The linker hash style])
6679 fi
6680
6681 # Specify what should be the default of -fdiagnostics-color option.
6682 AC_ARG_WITH([diagnostics-color],
6683 [AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}],
6684 [specify the default of -fdiagnostics-color option
6685 auto-if-env stands for -fdiagnostics-color=auto if
6686 GCC_COLOR environment variable is present and
6687 -fdiagnostics-color=never otherwise])],
6688 [case x"$withval" in
6689 xnever)
6690 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO
6691 ;;
6692 xauto)
6693 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO
6694 ;;
6695 xauto-if-env)
6696 DIAGNOSTICS_COLOR_DEFAULT=-1
6697 ;;
6698 xalways)
6699 DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES
6700 ;;
6701 *)
6702 AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color])
6703 ;;
6704 esac],
6705 [DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO])
6706 AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT,
6707 [The default for -fdiagnostics-color option])
6708
6709 # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
6710 # of jit/jit-playback.c.
6711 gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
6712 echo "gcc_driver_version: ${gcc_driver_version}"
6713 cat > gcc-driver-name.h <<EOF
6714 #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_driver_version}${exeext}"
6715 EOF
6716
6717 # Check whether --enable-default-pie was given.
6718 AC_ARG_ENABLE(default-pie,
6719 [AS_HELP_STRING([--enable-default-pie],
6720 [enable Position Independent Executable as default])],
6721 enable_default_pie=$enableval,
6722 enable_default_pie=no)
6723 if test x$enable_default_pie = xyes ; then
6724 AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
6725 [Define if your target supports default PIE and it is enabled.])
6726 fi
6727 AC_SUBST([enable_default_pie])
6728
6729 # Check if -fno-PIE works.
6730 AC_CACHE_CHECK([for -fno-PIE option],
6731 [gcc_cv_c_no_fpie],
6732 [saved_CXXFLAGS="$CXXFLAGS"
6733 CXXFLAGS="$CXXFLAGS -fno-PIE"
6734 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6735 [gcc_cv_c_no_fpie=yes],
6736 [gcc_cv_c_no_fpie=no])
6737 CXXFLAGS="$saved_CXXFLAGS"])
6738 if test "$gcc_cv_c_no_fpie" = "yes"; then
6739 NO_PIE_CFLAGS="-fno-PIE"
6740 fi
6741 AC_SUBST([NO_PIE_CFLAGS])
6742
6743 # Check if -no-pie works.
6744 AC_CACHE_CHECK([for -no-pie option],
6745 [gcc_cv_no_pie],
6746 [saved_LDFLAGS="$LDFLAGS"
6747 LDFLAGS="$LDFLAGS -no-pie"
6748 AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
6749 [gcc_cv_no_pie=yes],
6750 [gcc_cv_no_pie=no])
6751 LDFLAGS="$saved_LDFLAGS"])
6752 if test "$gcc_cv_no_pie" = "yes"; then
6753 NO_PIE_FLAG="-no-pie"
6754 fi
6755 AC_SUBST([NO_PIE_FLAG])
6756
6757 # Check linker supports '-z bndplt'
6758 ld_bndplt_support=no
6759 AC_MSG_CHECKING(linker -z bndplt option)
6760 if test x"$ld_is_gold" = xno; then
6761 if test $in_tree_ld = yes ; then
6762 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6763 ld_bndplt_support=yes
6764 fi
6765 elif test x$gcc_cv_ld != x; then
6766 # Check if linker supports -a bndplt option
6767 if $gcc_cv_ld --help 2>&1 | grep -- '-z bndplt' > /dev/null; then
6768 ld_bndplt_support=yes
6769 fi
6770 fi
6771 fi
6772 if test x"$ld_bndplt_support" = xyes; then
6773 AC_DEFINE(HAVE_LD_BNDPLT_SUPPORT, 1,
6774 [Define if your linker supports -z bndplt])
6775 fi
6776 AC_MSG_RESULT($ld_bndplt_support)
6777
6778 # Check linker supports '--push-state'/'--pop-state'
6779 ld_pushpopstate_support=no
6780 AC_MSG_CHECKING(linker --push-state/--pop-state options)
6781 if test x"$ld_is_gold" = xno; then
6782 if test $in_tree_ld = yes ; then
6783 if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
6784 ld_pushpopstate_support=yes
6785 fi
6786 elif test x$gcc_cv_ld != x; then
6787 # Check if linker supports --push-state/--pop-state options
6788 if $gcc_cv_ld --help 2>&1 | grep -- '--push-state' > /dev/null; then
6789 ld_pushpopstate_support=yes
6790 fi
6791 fi
6792 fi
6793 if test x"$ld_pushpopstate_support" = xyes; then
6794 AC_DEFINE(HAVE_LD_PUSHPOPSTATE_SUPPORT, 1,
6795 [Define if your linker supports --push-state/--pop-state])
6796 fi
6797 AC_MSG_RESULT($ld_pushpopstate_support)
6798
6799 # Configure the subdirectories
6800 # AC_CONFIG_SUBDIRS($subdirs)
6801
6802 # Create the Makefile
6803 # and configure language subdirectories
6804 AC_CONFIG_FILES($all_outputs)
6805
6806 AC_CONFIG_COMMANDS([default],
6807 [
6808 case ${CONFIG_HEADERS} in
6809 *auto-host.h:config.in*)
6810 echo > cstamp-h ;;
6811 esac
6812 # Make sure all the subdirs exist.
6813 for d in $subdirs doc build common c-family
6814 do
6815 test -d $d || mkdir $d
6816 done
6817 ],
6818 [subdirs='$subdirs'])
6819 AC_OUTPUT
6820