# configure.ac for GCC
# Process this file with autoconf to generate a configuration script.
-# Copyright (C) 1997-2021 Free Software Foundation, Inc.
+# Copyright (C) 1997-2022 Free Software Foundation, Inc.
#This file is part of GCC.
# --------------------------------
AC_INIT
-AC_CONFIG_SRCDIR(tree.c)
+AC_CONFIG_SRCDIR(tree.cc)
+AC_CONFIG_MACRO_DIRS([../config] [..])
AC_CONFIG_HEADER(auto-host.h:config.in)
gcc_version=`cat $srcdir/BASE-VER`
gnu_ld_flag=no)
case $target in
- *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
- *) ld64_flag=no;;
+ *darwin*)
+ ld64_flag=yes # Darwin can only use a ld64-compatible linker.
+ dsymutil_flag=yes # Darwin uses dsymutil to link debug.
+ ;;
+ *)
+ ld64_flag=no
+ dsymutil_flag=no
+ ;;
esac
# With pre-defined ld
demangler_in_ld="$with_demangler_in_ld",
demangler_in_ld=yes)
+# Allow the user to specify a dsymutil executable (used on Darwin only, so far)
+AC_ARG_WITH(dsymutil,
+[AS_HELP_STRING([--with-dsymutil], [arrange to use the specified dsymutil (full pathname)])],
+DEFAULT_DSYMUTIL="$with_dsymutil")
+
+dsymutil_vers=
+if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+ if test ! -x "$DEFAULT_DSYMUTIL"; then
+ AC_MSG_ERROR([cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL])
+ else
+ if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
+ dsymutil_flag=yes
+ fi
+ fi
+ AC_DEFINE_UNQUOTED(DEFAULT_DSYMUTIL,"$DEFAULT_DSYMUTIL",
+ [Define to enable the use of a default debug linker.])
+fi
+
+AC_MSG_CHECKING([whether a default dsymutil was specified])
+if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+ AC_MSG_RESULT([yes ($DEFAULT_DSYMUTIL)])
+else
+ AC_MSG_RESULT(no)
+fi
+
# ----------------------
# Find default assembler
# ----------------------
AC_PROG_CC
AC_PROG_CXX
ACX_PROG_GNAT([-I"$srcdir"/ada/libgnat])
+ACX_PROG_GDC([-I"$srcdir"/d])
# Do configure tests with the C++ compiler, since that's what we build with.
AC_LANG(C++)
esac
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
+AC_SUBST(GDCFLAGS)
# Determine PICFLAG for target gnatlib.
GCC_PICFLAG_FOR_TARGET
AC_C_INLINE
AC_SYS_LARGEFILE
+AC_CHECK_SIZEOF(ino_t)
+AC_CHECK_SIZEOF(dev_t)
+
+# Select the right stat being able to handle 64bit inodes, if needed.
+if test "$enable_largefile" != no; then
+ case "$host, $build" in
+ *-*-aix*,*|*,*-*-aix*)
+ if test "$ac_cv_sizeof_ino_t" == "4" -a "$ac_cv_sizeof_dev_t" == 4; then
+ AC_DEFINE(HOST_STAT_FOR_64BIT_INODES, stat64x,
+ [Define which stat syscall is able to handle 64bit indodes.])
+ fi;;
+ esac
+fi
+
# sizeof(char) is 1 by definition.
AC_CHECK_SIZEOF(void *)
[wf_opt=-Wno-format],[wf_opt=])
ACX_PROG_CXX_WARNING_OPTS(
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
- [-Wcast-qual -Wno-error=format-diag $wf_opt])),
+ [-Wcast-qual $wf_opt])),
[loose_warn])
ACX_PROG_CC_WARNING_OPTS(
m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
- [-Wno-error=format-diag])), [c_loose_warn])
+ [])), [c_loose_warn])
ACX_PROG_CXX_WARNING_OPTS(
m4_quote(m4_do([-Wmissing-format-attribute ],
[-Woverloaded-virtual])), [strict_warn])
# Miscenalleous configure options
# -------------------------------
-# With stabs
-AC_ARG_WITH(stabs,
-[AS_HELP_STRING([--with-stabs],
- [arrange to use stabs instead of host debug format])],
-stabs="$with_stabs",
-stabs=no)
-
# Determine whether or not multilibs are enabled.
AC_ARG_ENABLE(multilib,
[AS_HELP_STRING([--enable-multilib],
enable_multiarch=no
fi
fi
+if test x${enable_multiarch} = xyes; then
+ AC_DEFINE(ENABLE_MULTIARCH, 1)
+fi
AC_MSG_CHECKING(for multiarch configuration)
AC_SUBST(enable_multiarch)
AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
mips*-*-*)
enable_fixed_point=yes
;;
+ loongarch*-*-*)
+ enable_fixed_point=yes
+ ;;
*)
AC_MSG_WARN([fixed-point is not supported for this target, ignored])
enable_fixed_point=no
AC_ARG_ENABLE(gcov,
[ --disable-gcov don't provide libgcov and related host tools],
-[], [enable_gcov=yes])
+[], [case $target in
+ bpf-*-*)
+ enable_gcov=no
+ ;;
+ *)
+ enable_gcov=yes
+ ;;
+ esac])
+
AC_SUBST(enable_gcov)
AC_ARG_WITH(specs,
AC_DEFINE(ACCEL_COMPILER, 1,
[Define if this compiler should be built as the offload target compiler.])
enable_as_accelerator=yes
- case "${target}" in
- *-intelmicemul-*)
- # In this case we expect offload compiler to be built as native, so we
- # need to rename the driver to avoid clashes with host's drivers.
- program_transform_name="s&^&${target}-&" ;;
- esac
sedscript="s#${target_noncanonical}#${enable_as_accelerator_for}-accel-${target_noncanonical}#"
program_transform_name=`echo $program_transform_name | sed $sedscript`
accel_dir_suffix=/accel/${target_noncanonical}
enable_offloading=1
case "$tgt" in
- *-intelmic-* | *-intelmicemul-*)
- omp_device_property=omp-device-properties-i386
- omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/i386/t-omp-device"
- ;;
amdgcn*)
omp_device_property=omp-device-properties-gcn
omp_device_property_tmake_file="${omp_device_property_tmake_file} \$(srcdir)/config/gcn/t-omp-device"
[Define this to enable support for offloading.])
fi
+if test "x$enable_offload_defaulted" = xyes; then
+ AC_DEFINE(OFFLOAD_DEFAULTED, 1,
+ [Define to 1 to if -foffload is defaulted])
+fi
+
AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, AVR, OR1K, RISC-V, SH and x86-64 only)])],
:,
with_multilib_list=default)
# Find some useful tools
AC_PROG_AWK
-# We need awk to create options.c and options.h.
+# We need awk to create options.cc and options.h.
# Bail out if it's missing.
case ${AWK} in
"") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
AC_HEADER_SYS_WAIT
AC_HEADER_TIOCGWINSZ
AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
- fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
- sys/resource.h sys/param.h sys/times.h sys/stat.h \
+ fcntl.h ftw.h unistd.h sys/auxv.h sys/file.h sys/time.h sys/mman.h \
+ sys/resource.h sys/param.h sys/times.h sys/stat.h sys/locking.h \
direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
# Check for thread headers.
LIBS="$save_LIBS"
AC_SUBST(EXTRA_GCC_LIBS)
+# Solaris needs libsocket and libnsl for socket functions before 11.4.
+# C++ needs those for libcody.
+save_LIBS="$LIBS"
+LIBS=
+AX_LIB_SOCKET_NSL
+NETLIBS="$LIBS"
+LIBS="$save_LIBS"
+AC_SUBST(NETLIBS)
+
# Some systems put ldexp and frexp in libm instead of libc; assume
# they're both in the same place. jcf-dump needs them.
save_LIBS="$LIBS"
AC_CHECK_FUNCS(times clock kill getrlimit setrlimit atoq \
popen sysconf strsignal getrusage nl_langinfo \
gettimeofday mbstowcs wcswidth mmap posix_fallocate setlocale \
- gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat)
+ gcc_UNLOCKED_FUNCS madvise mallinfo mallinfo2 fstatat getauxval)
if test x$ac_cv_func_mbstowcs = xyes; then
AC_CACHE_CHECK(whether mbstowcs works, gcc_cv_func_mbstowcs_works,
# On AIX 5.2, <ldfcn.h> conflicts with <fcntl.h>, as both define incompatible
# FREAD and FWRITE macros. Fortunately, for GCC's single usage of ldgetname
-# in collect2.c, <fcntl.h> isn't visible, but the configure test below needs
+# in collect2.cc, <fcntl.h> isn't visible, but the configure test below needs
# to undef these macros to get the correct value for HAVE_DECL_LDGETNAME.
gcc_AC_CHECK_DECLS(ldgetname, , ,[
#include "ansidecl.h"
[Define if O_CLOEXEC supported by fcntl.])
fi
+# Check if O_NONBLOCK is defined by fcntl
+AC_CHECK_HEADERS([fcntl.h])
+AC_CHECK_DECL(O_NONBLOCK,,,[#include <fcntl.h>])
+if test $ac_cv_have_decl_O_NONBLOCK = yes; then
+ AC_DEFINE(HOST_HAS_O_NONBLOCK, 1,
+ [Define if O_NONBLOCK supported by fcntl.])
+fi
+
+
# C++ Modules would like some networking features to provide the mapping
# server. You can still use modules without them though.
# The following network-related checks could probably do with some
[Define if AF_INET6 supported.])
fi
+# Check if _LK_LOCK is supported by _locking
+AC_CACHE_CHECK(for _LK_LOCK, ac_cv_lk_lock, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <io.h>
+#include <sys/locking.h>]], [[
+ int fd;
+ return _locking (fd, _LK_LOCK, 0);]])],
+[ac_cv_lk_lock=yes],[ac_cv_lk_lock=no])])
+if test $ac_cv_lk_lock = yes; then
+ AC_DEFINE(HOST_HAS_LK_LOCK, 1,
+ [Define if _LK_LOC supported by _locking.])
+fi
+
# Restore CFLAGS, CXXFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
CFLAGS="$saved_CFLAGS"
CXXFLAGS="$saved_CXXFLAGS"
AC_ARG_ENABLE(sjlj-exceptions,
[AS_HELP_STRING([--enable-sjlj-exceptions],
[arrange to use setjmp/longjmp exception handling])],
+[force_sjlj_exceptions=yes],
[case $target in
- *-*-hpux10*)
- if test $enableval != yes; then
- AC_MSG_WARN([dwarf2 exceptions not supported, sjlj exceptions forced])
- enableval=yes
- fi
- ;;
-esac
-force_sjlj_exceptions=yes],
-[case $target in
- *-*-hpux10*)
- force_sjlj_exceptions=yes
- enableval=yes
- ;;
lm32*-*-*)
force_sjlj_exceptions=yes
enableval=yes
then md_file=$cpu_type/$cpu_type.md; fi
if test x$out_file = x
-then out_file=$cpu_type/$cpu_type.c; fi
+then out_file=$cpu_type/$cpu_type.cc; fi
if test x"$tmake_file" = x
then tmake_file=$cpu_type/t-$cpu_type
target_thread_file='single'
;;
aix | dce | lynx | mipssde | posix | rtems | \
- single | tpf | vxworks | win32)
+ single | tpf | vxworks | win32 | mcf)
target_thread_file=${enable_threads}
;;
*)
CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
- GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
+ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
${realsrcdir}/configure \
--enable-languages=${enable_languages-all} \
${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
tm_file="${tm_file} defaults.h"
tm_p_file="${tm_p_file} tm-preds.h"
-tm_d_file="${tm_d_file} defaults.h"
host_xm_file="auto-host.h ansidecl.h ${host_xm_file}"
build_xm_file="${build_auto} ansidecl.h ${build_xm_file}"
# We don't want ansidecl.h in target files, write code there in ISO/GNU C.
done
tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
-out_object_file=`basename $out_file .c`.o
-common_out_object_file=`basename $common_out_file .c`.o
+out_object_file=`basename $out_file .cc`.o
+common_out_object_file=`basename $common_out_file .cc`.o
tm_file_list="options.h"
tm_include_list="options.h insn-constants.h"
done
tm_d_file_list=
-tm_d_include_list="options.h insn-constants.h"
+tm_d_include_list=
for f in $tm_d_file; do
case $f in
- defaults.h )
- tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f"
- tm_d_include_list="${tm_d_include_list} $f"
- ;;
* )
tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f"
tm_d_include_list="${tm_d_include_list} config/$f"
BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
-BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
-BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
-
# And these apply if build != host, or we are generating coverage data
if test x$build != x$host || test "x$coverage_flags" != x
then
- BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
- BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
+ BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CFLAGS_FOR_BUILD)'
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS_FOR_BUILD)'
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
+fi
+
- NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
- NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
- BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
- BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
+if test x$enable_fixincludes = xno;
+then
+ STMP_FIXINC=''
fi
-AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
-AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
# Expand extra_headers to include complete path.
# This substitutes for lots of t-* files.
# If build != host, and we aren't building gas in-tree, we identify a
# build->target assembler and hope that it will have the same features
# as the host->target assembler we'll be using.
-gcc_cv_gas_major_version=
-gcc_cv_gas_minor_version=
gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
m4_pattern_allow([AS_FOR_TARGET])dnl
*) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
esac
-AC_MSG_CHECKING(what assembler to use)
-if test "$gcc_cv_as" = ../gas/as-new$build_exeext; then
- # Single tree build which includes gas. We want to prefer it
- # over whatever linker top-level may have detected, since
- # we'll use what we're building after installation anyway.
- AC_MSG_RESULT(newly built gas)
- in_tree_gas=yes
- _gcc_COMPUTE_GAS_VERSION
- in_tree_gas_is_elf=no
- if grep 'obj_format = elf' ../gas/Makefile > /dev/null \
- || (grep 'obj_format = multi' ../gas/Makefile \
- && grep 'extra_objects =.* obj-elf' ../gas/Makefile) > /dev/null
- then
- in_tree_gas_is_elf=yes
- fi
-else
- AC_MSG_RESULT($gcc_cv_as)
- in_tree_gas=no
-fi
-
default_ld=
AC_ARG_ENABLE(ld,
[[ --enable-ld[=ARG] build ld [ARG={default,yes,no}]]],
fi
AC_MSG_RESULT($ld_is_gold)
+# Check to see if we are using mold instead of ld
+AC_MSG_CHECKING(whether we are using mold)
+ld_is_mold=no
+if test x$gcc_cv_ld != x; then
+ if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+ | grep "mold" > /dev/null; then
+ ld_is_mold=yes
+ fi
+fi
+AC_MSG_RESULT($ld_is_mold)
+
+
AC_MSG_CHECKING(gold linker with split stack support as non default)
# Check to see if default ld is not gold, but gold is
# available and has support for split stack. If gcc was configured
AC_MSG_RESULT($gcc_cv_otool)
fi
+# Figure out the dsymutil we will use.
+AS_VAR_SET_IF(gcc_cv_dsymutil,, [
+if test -x "$DEFAULT_DSYMUTIL"; then
+ gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
+elif test -x dsymutil$build_exeext; then
+ gcc_cv_dsymutil=./dsymutil$build_exeext
+elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $[2] ); then
+ gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
+elif ( set dummy $DSYMUTIL; test -x $[2] ); then
+ gcc_cv_dsymutil=$DSYMUTIL
+else
+ AC_PATH_PROG(gcc_cv_dsymutil, $DSYMUTIL_FOR_TARGET)
+fi])
+
+ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
+AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
+case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
+ ./dsymutil | ./dsymutil$build_exeext) ;;
+ *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
+esac
+
# Figure out what assembler alignment features are present.
-gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
- [2,6,0],,
+gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,,
[.balign 4
.p2align 2],,
[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1,
[Define if your assembler supports .balign and .p2align.])])
-gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,
- [2,8,0],,
+gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align,,
[.p2align 4,,7],,
[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1,
[Define if your assembler supports specifying the maximum number
of bytes to skip when using the GAS .p2align command.])])
-gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,
- [2,8,0],,
+gcc_GAS_CHECK_FEATURE([.literal16], gcc_cv_as_literal16,,
[.literal16],,
[AC_DEFINE(HAVE_GAS_LITERAL16, 1,
[Define if your assembler supports .literal16.])])
-gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,
- [elf,2,9,0],,
+gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1,,
[conftest_label1: .word 0
.subsection -1
conftest_label2: .word 0
[Define if your assembler supports .subsection and .subsection -1 starts
emitting at the beginning of your section.])])
-gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,
- [2,2,0],,
+gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak,,
[ .weak foobar],,
[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])])
-gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,
- [2,17,0],,
+gcc_GAS_CHECK_FEATURE([.weakref], gcc_cv_as_weakref,,
[ .weakref foobar, barfnot],,
[AC_DEFINE(HAVE_GAS_WEAKREF, 1, [Define if your assembler supports .weakref.])])
-gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,
- [2,15,91],,
+gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_cv_as_nsubspa_comdat,,
[ .SPACE $TEXT$
.NSUBSPA $CODE$,COMDAT],,
[AC_DEFINE(HAVE_GAS_NSUBSPA_COMDAT, 1, [Define if your assembler supports .nsubspa comdat option.])])
foobar:'
;;
esac
-gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,
- [elf,2,13,0],, [$conftest_s])
+gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden,, [$conftest_s])
case "${target}" in
*-*-darwin*)
# Darwin as has some visibility support, though with a different syntax.
gcc_cv_ld_hidden=yes
if test x"$ld_is_gold" = xyes; then
:
+ elif test x"$ld_is_mold" = xyes; then
+ :
elif echo "$ld_ver" | grep GNU > /dev/null; then
if test 0"$ld_date" -lt 20020404; then
if test -n "$ld_date"; then
# Check if we have .[us]leb128, and support symbol arithmetic with it.
# Older versions of GAS and some non-GNU assemblers, have a bugs handling
# these directives, even when they appear to accept them.
-gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,
- [elf,2,11,0],,
+gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128,,
[ .data
.uleb128 L2 - L1
L1:
}
# Check if we have assembler support for unwind directives.
-gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
- ,,
+gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,,
[ .text
.cfi_startproc
.cfi_offset 0, 0
;;
esac])
if test $gcc_cv_as_cfi_directive = yes && test x$gcc_cv_objdump != x; then
-gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,
- ,,
+gcc_GAS_CHECK_FEATURE([working cfi advance], gcc_cv_as_cfi_advance_working,,
[ .text
.cfi_startproc
.cfi_adjust_cfa_offset 64
GCC_TARGET_TEMPLATE(HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
gcc_GAS_CHECK_FEATURE([cfi personality directive],
- gcc_cv_as_cfi_personality_directive, ,,
+ gcc_cv_as_cfi_personality_directive,,
[ .text
.cfi_startproc
.cfi_personality 0, symbol
[Define 0/1 if your assembler supports .cfi_personality.])
gcc_GAS_CHECK_FEATURE([cfi sections directive],
- gcc_cv_as_cfi_sections_directive, ,,
+ gcc_cv_as_cfi_sections_directive,,
[ .text
.cfi_sections .debug_frame, .eh_frame
.cfi_startproc
# GAS versions up to and including 2.11.0 may mis-optimize
# .eh_frame data.
-gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
- [elf,2,12,0],,
+gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,,
[ .text
.LFB1:
.4byte 0
# Test if the assembler supports the section flag 'e' or #exclude for
# specifying an excluded section.
gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_e,
- [2,22,51], [--fatal-warnings],
+ [--fatal-warnings],
[.section foo1,"e"
.byte 0,0,0,0])
if test $gcc_cv_as_section_exclude_e = no; then
esac
;;
esac
- gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,,
+ gcc_GAS_CHECK_FEATURE([section exclude flag], gcc_cv_as_section_exclude_hash,,
[$conftest_s
.byte 0,0,0,0])
fi
;;
*)
gcc_GAS_CHECK_FEATURE([section 'R' flag], gcc_cv_as_shf_gnu_retain,
- [elf,2,36,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .foo,"awR",%progbits
.byte 0])
;;
;;
*)
gcc_GAS_CHECK_FEATURE([section 'o' flag], gcc_cv_as_section_link_order,
- [2,35,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .foo,"a"
.byte 0
.section __patchable_function_entries,"awo",%progbits,.foo
[Define 0/1 if your assembler supports 'o' flag in .section directive.])
gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
- [elf,2,12,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .rodata.str, "aMS", @progbits, 1])
if test $gcc_cv_as_shf_merge = no; then
gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge,
- [elf,2,12,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .rodata.str, "aMS", %progbits, 1])
fi
AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
[`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
[Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
-gcc_GAS_CHECK_FEATURE([stabs directive], gcc_cv_as_stabs_directive, ,,
-[.stabs "gcc2_compiled.",60,0,0,0],,
-[AC_DEFINE(HAVE_AS_STABS_DIRECTIVE, 1,
- [Define if your assembler supports .stabs.])])
-
gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
gcc_cv_as_comdat_group,
- [elf,2,16,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .text,"axG",@progbits,.foo,comdat])
if test $gcc_cv_as_comdat_group = yes; then
gcc_cv_as_comdat_group_percent=no
else
gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as, %type)],
gcc_cv_as_comdat_group_percent,
- [elf,2,16,0], [--fatal-warnings],
+ [--fatal-warnings],
[.section .text,"axG",%progbits,.foo,comdat])
if test $gcc_cv_as_comdat_group_percent = yes; then
gcc_cv_as_comdat_group_group=no
esac
gcc_GAS_CHECK_FEATURE([COMDAT group support (Sun as, .group)],
gcc_cv_as_comdat_group_group,
- ,, [$conftest_s])
+ , [$conftest_s])
;;
esac
if test -z "${gcc_cv_as_comdat_group_group+set}"; then
fi
if test x"$ld_is_gold" = xyes; then
comdat_group=yes
+elif test x"$ld_is_mold" = xyes; then
+ comdat_group=yes
elif test $in_tree_ld = yes ; then
comdat_group=no
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 \
esac
gcc_GAS_CHECK_FEATURE([line table is_stmt support],
- gcc_cv_as_is_stmt,
- [2,16,92],,
+ gcc_cv_as_is_stmt,,
[ .text
.file 1 "conf.c"
.loc 1 1 0 is_stmt 1],,
[Define if your assembler supports the .loc is_stmt sub-directive.])])
gcc_GAS_CHECK_FEATURE([line table discriminator support],
- gcc_cv_as_discriminator,
- [2,19,51],,
+ gcc_cv_as_discriminator,,
[ .text
.file 1 "conf.c"
.loc 1 1 0 discriminator 1],,
# Thread-local storage - the check is heavily parameterized.
conftest_s=
-tls_first_major=
-tls_first_minor=
tls_as_opt=
case "$target" in
changequote(,)dnl
ldah $2,foo($29) !tprelhi
lda $3,foo($2) !tprello
lda $4,foo($29) !tprel'
- tls_first_major=2
- tls_first_minor=13
tls_as_opt=--fatal-warnings
;;
arc*-*-*)
conftest_s='
add_s r0,r0, @foo@tpoff'
- tls_first_major=2
- tls_first_minor=23
;;
cris-*-*|crisv32-*-*)
conftest_s='
.text
move.d x:IE,$r10
nop'
- tls_first_major=2
- tls_first_minor=20
tls_as_opt=--fatal-warnings
;;
frv*-*-*)
x: .long 25
.text
call #gettlsoff(x)'
- tls_first_major=2
- tls_first_minor=14
;;
hppa*-*-linux*)
conftest_s='
mfctl %cr27,%t1
addil LR%foo-$tls_leoff$,%t1
ldo RR%foo-$tls_leoff$(%r1),%t2'
- tls_first_major=2
- tls_first_minor=15
tls_as_opt=--fatal-warnings
;;
arm*-*-*)
.word foo(tlsgd)
.word foo(tlsldm)
.word foo(tlsldo)'
- tls_first_major=2
- tls_first_minor=17
;;
i[34567]86-*-* | x86_64-*-*)
case "$target" in
if test x$on_solaris = xyes && test x$gas_flag = xno; then
conftest_s='
.section .tdata,"awt",@progbits'
- tls_first_major=0
- tls_first_minor=0
tls_section_flag=t
changequote([,])dnl
AC_DEFINE(TLS_SECTION_ASM_FLAG, 't',
else
conftest_s='
.section ".tdata","awT",@progbits'
- tls_first_major=2
- tls_first_minor=14
tls_section_flag=T
tls_as_opt="--fatal-warnings"
fi
addl r20 = @tprel(foo#), gp
adds r22 = @tprel(foo#), r13
movl r24 = @tprel(foo#)'
- tls_first_major=2
- tls_first_minor=13
tls_as_opt=--fatal-warnings
;;
+ loongarch*-*-*)
+ conftest_s='
+ .section .tdata,"awT",@progbits
+x: .word 2
+ .text
+ la.tls.gd $a0,x
+ bl __tls_get_addr'
+ tls_first_major=0
+ tls_first_minor=0
+ tls_as_opt='--fatal-warnings'
+ ;;
microblaze*-*-*)
conftest_s='
.section .tdata,"awT",@progbits
.text
addik r5,r20,x@TLSGD
addik r5,r20,x@TLSLDM'
- tls_first_major=2
- tls_first_minor=20
tls_as_opt='--fatal-warnings'
;;
mips*-*-*)
lw $4, %gottprel(x)($28)
lui $4, %tprel_hi(x)
addiu $4, $4, %tprel_lo(x)'
- tls_first_major=2
- tls_first_minor=16
tls_as_opt='-32 --fatal-warnings'
;;
m68k-*-*)
move.l x@TLSLDO(%a5),%a0
move.l x@TLSIE(%a5),%a0
move.l x@TLSLE(%a5),%a0'
- tls_first_major=2
- tls_first_minor=19
tls_as_opt='--fatal-warnings'
;;
nios2-*-*)
conftest_s='
.section ".tdata","awT",@progbits'
- tls_first_major=2
- tls_first_minor=23
tls_as_opt="--fatal-warnings"
;;
aarch64*-*-*)
add x0, x0, #:tlsgd_lo12:x
bl __tls_get_addr
nop'
- tls_first_major=2
- tls_first_minor=20
tls_as_opt='--fatal-warnings'
;;
or1k*-*-*)
l.movhi r3, tpoffha(foo)
l.add r3, r3, r10
l.lwz r4, tpofflo(foo)(r3)'
- tls_first_major=2
- tls_first_minor=30
tls_as_opt=--fatal-warnings
;;
powerpc-ibm-aix*)
.csect a[TL],4
a:
.space 4'
- tls_first_major=0
- tls_first_minor=0
;;
powerpc64*-*-*)
conftest_s='
add 9,9,3
bl .__tls_get_addr
nop'
- tls_first_major=2
- tls_first_minor=14
tls_as_opt="-a64 --fatal-warnings"
;;
powerpc*-*-*)
addi 9,2,x1@tprel
addis 9,2,x2@tprel@ha
addi 9,9,x2@tprel@l'
- tls_first_major=2
- tls_first_minor=14
tls_as_opt="-a32 --fatal-warnings"
;;
riscv*-*-*)
.text
la.tls.gd a0,x
call __tls_get_addr'
- tls_first_major=2
- tls_first_minor=21
tls_as_opt='--fatal-warnings'
;;
s390-*-*)
l %r1,0(%r1):tls_load:foo
bas %r14,0(%r1,%r13):tls_gdcall:foo
bas %r14,0(%r1,%r13):tls_ldcall:foo'
- tls_first_major=2
- tls_first_minor=14
tls_as_opt="-m31 --fatal-warnings"
;;
s390x-*-*)
larl %r1,foo@INDNTPOFF
brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
- tls_first_major=2
- tls_first_minor=14
tls_as_opt="-m64 -Aesame --fatal-warnings"
;;
sh-*-* | sh[123456789lbe]*-*-*)
.long foo@DTPOFF
.long foo@GOTTPOFF
.long foo@TPOFF'
- tls_first_major=2
- tls_first_minor=13
tls_as_opt=--fatal-warnings
;;
sparc*-*-*)
if test x$on_solaris = xyes && test x$gas_flag = xno; then
conftest_s='
.section ".tdata",#alloc,#write,#tls'
- tls_first_major=0
- tls_first_minor=0
else
conftest_s='
.section ".tdata","awT",@progbits'
- tls_first_major=2
- tls_first_minor=14
tls_as_opt="-32 --fatal-warnings"
fi
conftest_s="$conftest_s
xor %l1, %tle_lox10(foo), %o5
ld [%g7 + %o5], %o1"
;;
- tilepro*-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- addli r0, zero, tls_gd(foo)
- auli r0, zero, tls_gd_ha16(foo)
- addli r0, r0, tls_gd_lo16(foo)
- jal __tls_get_addr
- addli r0, zero, tls_ie(foo)
- auli r0, r0, tls_ie_ha16(foo)
- addli r0, r0, tls_ie_lo16(foo)'
- tls_first_major=2
- tls_first_minor=22
- tls_as_opt="--fatal-warnings"
- ;;
- tilegx*-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- shl16insli r0, zero, hw0_last_tls_gd(foo)
- shl16insli r0, zero, hw1_last_tls_gd(foo)
- shl16insli r0, r0, hw0_tls_gd(foo)
- jal __tls_get_addr
- shl16insli r0, zero, hw1_last_tls_ie(foo)
- shl16insli r0, r0, hw0_tls_ie(foo)'
- tls_first_major=2
- tls_first_minor=22
- tls_as_opt="--fatal-warnings"
- ;;
xtensa*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
movi a8, foo@TLSFUNC
movi a10, foo@TLSARG
callx8.tls a8, foo@TLSCALL'
- tls_first_major=2
- tls_first_minor=19
;;
changequote([,])dnl
esac
: # TLS explicitly disabled.
elif test "x$enable_tls" = xyes ; then
set_have_as_tls=yes # TLS explicitly enabled.
-elif test -z "$tls_first_major"; then
+elif test -z "$conftest_s"; then
: # If we don't have a check, assume no support.
else
gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls,
- [$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
+ [$tls_as_opt], [$conftest_s],,
[set_have_as_tls=yes])
fi
if test $set_have_as_tls = yes ; then
# Require GNU ld or gold 2.21+ for plugin support by default.
if test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 21; then
gcc_cv_lto_plugin=2
+ elif test "$ld_is_mold" = yes; then
+ gcc_cv_lto_plugin=2
# Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
gcc_cv_lto_plugin=1
case "$target_os" in
darwin*)
gcc_GAS_CHECK_FEATURE([-mmacosx-version-min option],
- gcc_cv_as_mmacosx_version_min,,
+ gcc_cv_as_mmacosx_version_min,
[-mmacosx-version-min=10.1], [.text],,
[AC_DEFINE(HAVE_AS_MMACOSX_VERSION_MIN_OPTION, 1,
[Define if your Mac OS X assembler supports the -mmacos-version-min option.])])
case "$target" in
aarch64*-*-*)
- gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,,
+ gcc_GAS_CHECK_FEATURE([-mabi option], gcc_cv_as_aarch64_mabi,
[-mabi=lp64], [.text],,,)
if test x$gcc_cv_as_aarch64_mabi = xyes; then
AC_DEFINE(HAVE_AS_MABI_OPTION, 1,
fi
fi
# Check if we have binutils support for relocations types needed by -fpic
- gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,,
+ gcc_GAS_CHECK_FEATURE([-fpic relocs], gcc_cv_as_aarch64_picreloc,,
[
.text
ldr x0, [[x2, #:gotpage_lo15:globalsym]]
# All TARGET_ABI_OSF targets.
alpha*-*-linux* | alpha*-*-*bsd*)
gcc_GAS_CHECK_FEATURE([explicit relocation support],
- gcc_cv_as_alpha_explicit_relocs, [2,12,0],,
+ gcc_cv_as_alpha_explicit_relocs,,
[ .set nomacro
.text
extbl $3, $2, $3 !lituse_bytoff!1
[AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
[Define if your assembler supports explicit relocations.])])
gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
- gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
+ gcc_cv_as_alpha_jsrdirect_relocs,,
[ .set nomacro
.text
ldq $27, a($29) !literal!1
;;
avr-*-*)
- gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,,
+ gcc_GAS_CHECK_FEATURE([--mlink-relax option], gcc_cv_as_avr_mlink_relax,
[--mlink-relax], [.text],,
[AC_DEFINE(HAVE_AS_AVR_MLINK_RELAX_OPTION, 1,
[Define if your avr assembler supports --mlink-relax option.])])
- gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,,
+ gcc_GAS_CHECK_FEATURE([-mrmw option], gcc_cv_as_avr_mrmw,
[-mrmw], [.text],,
[AC_DEFINE(HAVE_AS_AVR_MRMW_OPTION, 1,
[Define if your avr assembler supports -mrmw option.])])
gcc_GAS_CHECK_FEATURE([__gcc_isr pseudo instruction],
- gcc_cv_as_avr_mgccisr,,
+ gcc_cv_as_avr_mgccisr,
[-mgcc-isr], [.text
__gcc_isr 1
__gcc_isr 2
cris-*-*)
gcc_GAS_CHECK_FEATURE([-no-mul-bug-abort option],
- gcc_cv_as_cris_no_mul_bug,[2,15,91],
+ gcc_cv_as_cris_no_mul_bug,
[-no-mul-bug-abort], [.text],,
[AC_DEFINE(HAVE_AS_NO_MUL_BUG_ABORT_OPTION, 1,
[Define if your assembler supports the -no-mul-bug-abort option.])])
;;
sparc*-*-*)
- gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,,
+ gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,
[-relax], [.text],,
[AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
[Define if your assembler supports -relax option.])])
gcc_GAS_CHECK_FEATURE([GOTDATA_OP relocs],
- gcc_cv_as_sparc_gotdata_op,,
+ gcc_cv_as_sparc_gotdata_op,
[-K PIC],
[.text
.align 4
[Define if your assembler and linker support GOTDATA_OP relocs.])])
gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs],
- gcc_cv_as_sparc_ua_pcrel,,
+ gcc_cv_as_sparc_ua_pcrel,
[-K PIC],
[.text
foo:
[Define if your assembler and linker support unaligned PC relative relocs.])
gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols],
- gcc_cv_as_sparc_ua_pcrel_hidden,,
+ gcc_cv_as_sparc_ua_pcrel_hidden,
[-K PIC],
[.data
.align 4
]) # unaligned pcrel relocs
gcc_GAS_CHECK_FEATURE([offsetable %lo()],
- gcc_cv_as_sparc_offsetable_lo10,,
+ gcc_cv_as_sparc_offsetable_lo10,
[-xarch=v9],
[.text
or %g1, %lo(ab) + 12, %g1
[Define if your assembler supports offsetable %lo().])])
gcc_GAS_CHECK_FEATURE([FMAF, HPC, and VIS 3.0 instructions],
- gcc_cv_as_sparc_fmaf,,
+ gcc_cv_as_sparc_fmaf,
[-xarch=v9d],
[.text
.register %g2, #scratch
[Define if your assembler supports FMAF, HPC, and VIS 3.0 instructions.])])
gcc_GAS_CHECK_FEATURE([SPARC4 instructions],
- gcc_cv_as_sparc_sparc4,,
+ gcc_cv_as_sparc_sparc4,
[-xarch=sparc4],
[.text
.register %g2, #scratch
[Define if your assembler supports SPARC4 instructions.])])
gcc_GAS_CHECK_FEATURE([SPARC5 and VIS 4.0 instructions],
- gcc_cv_as_sparc_sparc5,,
+ gcc_cv_as_sparc_sparc5,
[-xarch=sparc5],
[.text
.register %g2, #scratch
[Define if your assembler supports SPARC5 and VIS 4.0 instructions.])])
gcc_GAS_CHECK_FEATURE([SPARC6 instructions],
- gcc_cv_as_sparc_sparc6,,
+ gcc_cv_as_sparc_sparc6,
[-xarch=sparc6],
[.text
.register %g2, #scratch
[Define if your assembler supports SPARC6 instructions.])])
gcc_GAS_CHECK_FEATURE([LEON instructions],
- gcc_cv_as_sparc_leon,,
+ gcc_cv_as_sparc_leon,
[-Aleon],
[.text
.register %g2, #scratch
# Recent binutils allows the three-operand form of ".comm" on PE. This
# definition is used unconditionally to initialise the default state of
# the target option variable that governs usage of the feature.
- gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,
- [2,19,52],,[.comm foo,1,32])
+ gcc_GAS_CHECK_FEATURE([.comm with alignment], gcc_cv_as_comm_has_align,,
+ [.comm foo,1,32])
AC_DEFINE_UNQUOTED(HAVE_GAS_ALIGNED_COMM,
[`if test $gcc_cv_as_comm_has_align = yes; then echo 1; else echo 0; fi`],
[Define if your assembler supports specifying the alignment
of objects allocated using the GAS .comm command.])
# Used for DWARF 2 in PE
gcc_GAS_CHECK_FEATURE([.secrel32 relocs],
- gcc_cv_as_ix86_pe_secrel32,
- [2,15,91],,
+ gcc_cv_as_ix86_pe_secrel32,,
[.text
foo: nop
.data
# but normally only after installation, so we warn but don't fail the
# configure if LTO is enabled but the assembler does not support it.
gcc_GAS_CHECK_FEATURE([.section with alignment], gcc_cv_as_section_has_align,
- [2,20,1],-fatal-warnings,[.section lto_test,"dr0"])
+ -fatal-warnings,[.section lto_test,"dr0"])
if test x$gcc_cv_as_section_has_align != xyes; then
case ",$enable_languages," in
*,lto,*)
fi
;;
esac
+ case $target_os in
+ darwin2* | darwin19*)
+ gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
+ gcc_cv_as_mllvm_x86_pad_for_align,
+ [-mllvm -x86-pad-for-align=false], [.text],,
+ [AC_DEFINE(HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN, 1,
+ [Define if your Mac OS X assembler supports -mllvm -x86-pad-for-align=false.])])
+ ;;
+ esac
- gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
+ gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,
[-xbrace_comment=no], [.text],,
[AC_DEFINE(HAVE_AS_XBRACE_COMMENT_OPTION, 1,
[Define if your assembler supports -xbrace_comment option.])])
gcc_GAS_CHECK_FEATURE([filds and fists mnemonics],
- gcc_cv_as_ix86_filds,,,
+ gcc_cv_as_ix86_filds,,
[filds (%ebp); fists (%ebp)],,
[AC_DEFINE(HAVE_AS_IX86_FILDS, 1,
[Define if your assembler uses filds and fists mnemonics.])])
gcc_GAS_CHECK_FEATURE([fildq and fistpq mnemonics],
- gcc_cv_as_ix86_fildq,,,
+ gcc_cv_as_ix86_fildq,,
[fildq (%ebp); fistpq (%ebp)],,
[AC_DEFINE(HAVE_AS_IX86_FILDQ, 1,
[Define if your assembler uses fildq and fistq mnemonics.])])
gcc_GAS_CHECK_FEATURE([cmov syntax],
- gcc_cv_as_ix86_cmov_sun_syntax,,,
+ gcc_cv_as_ix86_cmov_sun_syntax,,
[cmovl.l %edx, %eax],,
[AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
[Define if your assembler supports the Sun syntax for cmov.])])
gcc_GAS_CHECK_FEATURE([ffreep mnemonic],
- gcc_cv_as_ix86_ffreep,,,
+ gcc_cv_as_ix86_ffreep,,
[ffreep %st(1)],,
[AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
[Define if your assembler supports the ffreep mnemonic.])])
gcc_GAS_CHECK_FEATURE([.quad directive],
- gcc_cv_as_ix86_quad,,,
+ gcc_cv_as_ix86_quad,,
[.quad 0],,
[AC_DEFINE(HAVE_AS_IX86_QUAD, 1,
[Define if your assembler supports the .quad directive.])])
gcc_GAS_CHECK_FEATURE([sahf mnemonic],
- gcc_cv_as_ix86_sahf,,,
+ gcc_cv_as_ix86_sahf,,
[.code64
sahf],,
[AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
[Define if your assembler supports the sahf mnemonic in 64bit mode.])])
gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
- gcc_cv_as_ix86_interunit_movq,,,
+ gcc_cv_as_ix86_interunit_movq,,
[.code64
movq %mm0, %rax
movq %rax, %xmm0])
[Define if your assembler supports interunit movq mnemonic.])
gcc_GAS_CHECK_FEATURE([hle prefixes],
- gcc_cv_as_ix86_hle,,,
+ gcc_cv_as_ix86_hle,,
[lock xacquire cmpxchg %esi, (%ecx)],,
[AC_DEFINE(HAVE_AS_IX86_HLE, 1,
[Define if your assembler supports HLE prefixes.])])
gcc_GAS_CHECK_FEATURE([swap suffix],
- gcc_cv_as_ix86_swap,,,
+ gcc_cv_as_ix86_swap,,
[movl.s %esp, %ebp],,
[AC_DEFINE(HAVE_AS_IX86_SWAP, 1,
[Define if your assembler supports the swap suffix.])])
gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
- gcc_cv_as_ix86_diff_sect_delta,,,
+ gcc_cv_as_ix86_diff_sect_delta,,
[.section .rodata
.L1:
.long .L2-.L1
[Define if your assembler supports the subtraction of symbols in different sections.])])
gcc_GAS_CHECK_FEATURE([rep and lock prefix],
- gcc_cv_as_ix86_rep_lock_prefix,,,
+ gcc_cv_as_ix86_rep_lock_prefix,,
[rep movsl
rep ret
rep nop
[Define if the assembler supports 'rep <insn>, lock <insn>'.])])
gcc_GAS_CHECK_FEATURE([ud2 mnemonic],
- gcc_cv_as_ix86_ud2,,,
+ gcc_cv_as_ix86_ud2,,
[ud2],,
[AC_DEFINE(HAVE_AS_IX86_UD2, 1,
[Define if your assembler supports the 'ud2' mnemonic.])])
fi
gcc_GAS_CHECK_FEATURE([R_386_TLS_GD_PLT reloc],
- gcc_cv_as_ix86_tlsgdplt,,
+ gcc_cv_as_ix86_tlsgdplt,
[$as_ix86_gas_32_opt],
[call tls_gd@tlsgdplt],
[if test x$gcc_cv_ld != x \
call tls_ld@tlsldmplt'
gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM_PLT reloc],
- gcc_cv_as_ix86_tlsldmplt,,
+ gcc_cv_as_ix86_tlsldmplt,
[$as_ix86_gas_32_opt],
[$conftest_s],
[if test x$gcc_cv_ld != x \
.type value, @object
value:'
gcc_GAS_CHECK_FEATURE([R_386_TLS_LDM reloc],
- gcc_cv_as_ix86_tlsldm,,
+ gcc_cv_as_ix86_tlsldm,
[$as_ix86_gas_32_opt],
[$conftest_s],
[if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
cmpl $0, bar@GOT
jmp *_start@GOT'
gcc_GAS_CHECK_FEATURE([R_386_GOT32X reloc],
- gcc_cv_as_ix86_got32x,,
+ gcc_cv_as_ix86_got32x,
[$as_ix86_gas_32_opt],
[$conftest_s],
[if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \
[Define 0/1 if your assembler and linker support @GOT.])
gcc_GAS_CHECK_FEATURE([GOTOFF in data],
- gcc_cv_as_ix86_gotoff_in_data, [2,11,0],
+ gcc_cv_as_ix86_gotoff_in_data,
[$as_ix86_gas_32_opt],
[ .text
.L0:
gd:
.byte 0'
gcc_GAS_CHECK_FEATURE([calling ___tls_get_addr via GOT],
- gcc_cv_as_ix86_tls_get_addr_via_got,,
+ gcc_cv_as_ix86_tls_get_addr_via_got,
[$as_ix86_gas_32_opt],
[$conftest_s],
[if test x$gcc_cv_ld != x \
ia64*-*-*)
gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs],
- gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],,
+ gcc_cv_as_ia64_ltoffx_ldxmov_relocs,,
[ .text
addl r15 = @ltoffx(x#), gp
;;
case $target in
*-*-darwin*)
gcc_GAS_CHECK_FEATURE([.machine directive support],
- gcc_cv_as_machine_directive,,,
+ gcc_cv_as_machine_directive,,
[ .machine ppc7400])
if test x$gcc_cv_as_machine_directive != xyes; then
echo "*** This target requires an assembler supporting \".machine\"" >&2
esac
gcc_GAS_CHECK_FEATURE([mfcr field support],
- gcc_cv_as_powerpc_mfcrf, [2,14,0],,
+ gcc_cv_as_powerpc_mfcrf,,
[$conftest_s],,
[AC_DEFINE(HAVE_AS_MFCRF, 1,
[Define if your assembler supports mfcr field.])])
esac
gcc_GAS_CHECK_FEATURE([rel16 relocs],
- gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
+ gcc_cv_as_powerpc_rel16, -a32,
[$conftest_s],,
[AC_DEFINE(HAVE_AS_REL16, 1,
[Define if your assembler supports R_PPC_REL16 relocs.])])
esac
gcc_GAS_CHECK_FEATURE([vector-scalar support],
- gcc_cv_as_powerpc_vsx, [2,19,2], -a32,
+ gcc_cv_as_powerpc_vsx, -a32,
[$conftest_s],,
[AC_DEFINE(HAVE_AS_VSX, 1,
[Define if your assembler supports VSX instructions.])])
gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
- gcc_cv_as_powerpc_gnu_attribute, [2,18,0],,
+ gcc_cv_as_powerpc_gnu_attribute,,
[.gnu_attribute 4,1],,
[AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
[Define if your assembler supports .gnu_attribute.])])
gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
- gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
+ gcc_cv_as_powerpc_entry_markers,-a64 --fatal-warnings,
[ .reloc .,R_PPC64_ENTRY; nop],,
[AC_DEFINE(HAVE_AS_ENTRY_MARKERS, 1,
[Define if your assembler supports the R_PPC64_ENTRY relocation.])])
gcc_GAS_CHECK_FEATURE([plt sequence marker support],
- gcc_cv_as_powerpc_pltseq_markers, [2,31,0],-a32 --fatal-warnings,
+ gcc_cv_as_powerpc_pltseq_markers,-a32 --fatal-warnings,
[ .reloc .,R_PPC_PLTSEQ; nop],,
[AC_DEFINE(HAVE_AS_PLTSEQ, 1,
[Define if your assembler supports R_PPC*_PLTSEQ relocations.])])
case $target in
*-*-aix*)
gcc_GAS_CHECK_FEATURE([AIX .ref support],
- gcc_cv_as_aix_ref, [2,21,0],,
+ gcc_cv_as_aix_ref,,
[ .csect stuff[[rw]]
stuff:
.long 1
[Define if your assembler supports .ref])])
gcc_GAS_CHECK_FEATURE([AIX DWARF location lists section support],
- gcc_cv_as_aix_dwloc, [2,21,0],,
+ gcc_cv_as_aix_dwloc,,
[ .dwsect 0xA0000
Lframe..0:
.vbyte 4,Lframe..0
mips*-*-*)
gcc_GAS_CHECK_FEATURE([explicit relocation support],
- gcc_cv_as_mips_explicit_relocs, [2,14,0],,
+ gcc_cv_as_mips_explicit_relocs,,
[ lw $4,%gp_rel(foo)($4)],,
[if test x$target_cpu_default = x
then target_cpu_default=MASK_EXPLICIT_RELOCS
fi])
gcc_GAS_CHECK_FEATURE([-mno-shared support],
- gcc_cv_as_mips_no_shared, [2,16,0], [-mno-shared], [nop],,
+ gcc_cv_as_mips_no_shared,[-mno-shared], [nop],,
[AC_DEFINE(HAVE_AS_NO_SHARED, 1,
[Define if the assembler understands -mno-shared.])])
gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
- gcc_cv_as_mips_gnu_attribute, [2,18,0],,
+ gcc_cv_as_mips_gnu_attribute,,
[.gnu_attribute 4,1],,
[AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
[Define if your assembler supports .gnu_attribute.])])
gcc_GAS_CHECK_FEATURE([.module support],
- gcc_cv_as_mips_dot_module,,[-32],
+ gcc_cv_as_mips_dot_module,[-32],
[.module mips2
.module fp=xx],,
[AC_DEFINE(HAVE_AS_DOT_MODULE, 1,
fi
gcc_GAS_CHECK_FEATURE([.micromips support],
- gcc_cv_as_micromips_support,,[--fatal-warnings],
+ gcc_cv_as_micromips_support,[--fatal-warnings],
[.set micromips],,
[AC_DEFINE(HAVE_GAS_MICROMIPS, 1,
[Define if your assembler supports the .set micromips directive])])
gcc_GAS_CHECK_FEATURE([.dtprelword support],
- gcc_cv_as_mips_dtprelword, [2,18,0],,
+ gcc_cv_as_mips_dtprelword,,
[.section .tdata,"awT",@progbits
x:
.word 2
[Define if your assembler supports .dtprelword.])])
gcc_GAS_CHECK_FEATURE([DSPR1 mult with four accumulators support],
- gcc_cv_as_mips_dspr1_mult,,,
+ gcc_cv_as_mips_dspr1_mult,,
[ .set mips32r2
.set nodspr2
.set dsp
fi
gcc_GAS_CHECK_FEATURE([-mnan= support],
- gcc_cv_as_mips_nan,,
+ gcc_cv_as_mips_nan,
[-mnan=2008],,,
[AC_DEFINE(HAVE_AS_NAN, 1,
[Define if the assembler understands -mnan=.])])
# Earlier GAS versions generically support .gnu_attribute, but the
# msp430 assembler will not do anything with it.
gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
- gcc_cv_as_msp430_gnu_attribute, [2,33,50],,
+ gcc_cv_as_msp430_gnu_attribute,,
[.gnu_attribute 4,1],,
[AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
[Define if your assembler supports .gnu_attribute.])])
gcc_GAS_CHECK_FEATURE([.mspabi_attribute support],
- gcc_cv_as_msp430_mspabi_attribute, [2,33,50],,
+ gcc_cv_as_msp430_mspabi_attribute,,
[.mspabi_attribute 4,2],,
[AC_DEFINE(HAVE_AS_MSPABI_ATTRIBUTE, 1,
[Define if your assembler supports .mspabi_attribute.])])
# Versions 2.33 and earlier lacked support for the %gotoff relocation
# syntax that is documented in the ABI specification.
gcc_GAS_CHECK_FEATURE([support for %gotoff relocations in constant data],
- gcc_cv_as_nios2_gotoff_relocation,,,
+ gcc_cv_as_nios2_gotoff_relocation,,
[ .extern foo
.data
.long %gotoff(foo)],,
;;
riscv*-*-*)
gcc_GAS_CHECK_FEATURE([.attribute support],
- gcc_cv_as_riscv_attribute, [2,32,0],,
+ gcc_cv_as_riscv_attribute,,
[.attribute stack_align,4],,
[AC_DEFINE(HAVE_AS_RISCV_ATTRIBUTE, 1,
[Define if your assembler supports .attribute.])])
gcc_GAS_CHECK_FEATURE([-misa-spec= support],
- gcc_cv_as_riscv_isa_spec,,
+ gcc_cv_as_riscv_isa_spec,
[-misa-spec=2.2],,,
[AC_DEFINE(HAVE_AS_MISA_SPEC, 1,
[Define if the assembler understands -misa-spec=.])])
gcc_GAS_CHECK_FEATURE([-march=rv32i_zifencei support],
- gcc_cv_as_riscv_march_zifencei,,
- [-march=rv32i_zifencei],,,
+ gcc_cv_as_riscv_march_zifencei,
+ [-march=rv32i_zifencei2p0],,,
[AC_DEFINE(HAVE_AS_MARCH_ZIFENCEI, 1,
[Define if the assembler understands -march=rv*_zifencei.])])
;;
+ loongarch*-*-*)
+ gcc_GAS_CHECK_FEATURE([.dtprelword support],
+ gcc_cv_as_loongarch_dtprelword, [2,18,0],,
+ [.section .tdata,"awT",@progbits
+x:
+ .word 2
+ .text
+ .dtprelword x+0x8000],,
+ [AC_DEFINE(HAVE_AS_DTPRELWORD, 1,
+ [Define if your assembler supports .dtprelword.])])
+ gcc_GAS_CHECK_FEATURE([explicit relocation support],
+ gcc_cv_as_loongarch_explicit_relocs,,
+ [a:pcalau12i $t0,%pc_hi20(a)],,
+ [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
+ [Define if your assembler supports explicit relocation.])])
+ gcc_GAS_CHECK_FEATURE([eh_frame pcrel encoding support],
+ gcc_cv_as_loongarch_eh_frame_pcrel_encoding_support,,
+ [.cfi_startproc
+ .cfi_personality 0x9b,a
+ .cfi_lsda 0x1b,b
+ .cfi_endproc],,
+ [AC_DEFINE(HAVE_AS_EH_FRAME_PCREL_ENCODING_SUPPORT, 1,
+ [Define if your assembler supports eh_frame pcrel encoding.])])
+ ;;
s390*-*-*)
gcc_GAS_CHECK_FEATURE([.gnu_attribute support],
- gcc_cv_as_s390_gnu_attribute, [2,18,0],,
+ gcc_cv_as_s390_gnu_attribute,,
[.gnu_attribute 8,1],,
[AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
[Define if your assembler supports .gnu_attribute.])])
gcc_GAS_CHECK_FEATURE([.machine and .machinemode support],
- gcc_cv_as_s390_machine_machinemode, [2,24,0],,
+ gcc_cv_as_s390_machine_machinemode,,
[ .machinemode push
.machinemode pop
.machine push
[AC_DEFINE(HAVE_AS_MACHINE_MACHINEMODE, 1,
[Define if your assembler supports .machine and .machinemode.])])
gcc_GAS_CHECK_FEATURE([architecture modifiers support],
- gcc_cv_as_s390_architecture_modifiers, [2,26,0],,
+ gcc_cv_as_s390_architecture_modifiers,,
[ .machine z13+vx ],,
[AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1,
[Define if your assembler supports architecture modifiers.])])
gcc_GAS_CHECK_FEATURE([vector load/store alignment hints],
- gcc_cv_as_s390_vector_loadstore_alignment_hints, [2,31,0],,
+ gcc_cv_as_s390_vector_loadstore_alignment_hints,,
[ vl %v24,0(%r15),3 ],,
[AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1,
[Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])])
gcc_GAS_CHECK_FEATURE([vector load/store alignment hints on z13],
- gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13,, [-mzarch -march=z13],
+ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13, [-mzarch -march=z13],
[ vl %v24,0(%r15),3 ],,
[AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13, 1,
[Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument on z13.])])
;;
esac
-# Mips and HP-UX need the GNU assembler.
+# Mips, LoongArch and HP-UX need the GNU assembler.
# Linux on IA64 might be able to use the Intel assembler.
case "$target" in
- mips*-*-* | *-*-hpux* )
+ mips*-*-* | loongarch*-*-* | *-*-hpux* )
if test x$gas_flag = xyes \
|| test x"$host" != x"$build" \
|| test ! -x "$gcc_cv_as" \
;;
esac
+# AMD GCN needs the LLVM assembler and linker.
+# Test that LLVM is at least 13.0.1.
+case "$target" in
+ amdgcn-* | gcn-*)
+ AC_MSG_CHECKING(llvm assembler version)
+ gcc_cv_as_version="unknown"
+ if test x$gcc_cv_as != x; then
+ gcc_cv_as_version=`$gcc_cv_as --version 2>&1 | sed -ne '/version/s/.* \([[0-9]]\)/\1/p' || echo error`
+ case "$gcc_cv_as_version" in
+ 13.0.[[1-9]]*) ;; # 13.0.1+
+ 13.[[1-9]]*) ;; # 13.1+
+ 1[[4-9]]*) ;; # 14..19
+ [[2-9]][[0-9]]*) ;; # 20..99
+ [[1-9]][[0-9]][[0-9]]*) ;; # 100+
+ error) AC_MSG_ERROR([cannot determine LLVM version]) ;;
+ *) AC_MSG_ERROR([LLVM 13.0.1 or later is required (found LLVM $gcc_cv_as_version)]) ;;
+ esac
+ fi
+ AC_MSG_RESULT([$gcc_cv_as_version, ok])
+ ;;
+esac
+
+case "$target" in
+ arm*)
+ gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions],
+ gcc_cv_as_arm_option_extensions,
+ [-march=armv8.1-m.main+mve],
+ [.text
+ .thumb
+ .syntax unified
+ vmov.f32 s0, s1],,
+ [AC_DEFINE(HAVE_GAS_ARM_EXTENDED_ARCH, 1,
+ [Define if your Arm assembler permits context-specific feature extensions.])])
+esac
+
# ??? Not all targets support dwarf2 debug_line, even within a version
# of gas. Moreover, we need to emit a valid instruction to trigger any
# info to the output file. So, as supported targets are added to gas 2.11,
# ??? Once 2.11 is released, probably need to add first known working
# version to the per-target configury.
case "$cpu_type" in
- aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | m32c | m68k \
- | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
- | tilegx | tilepro | visium | xstormy16 | xtensa)
+ aarch64 | alpha | arc | arm | avr | bfin | cris | csky | i386 | loongarch | m32c \
+ | m68k | microblaze | mips | nds32 | nios2 | pa | riscv | rs6000 | score | sparc \
+ | visium | xstormy16 | xtensa)
insn="nop"
;;
ia64 | s390)
.loc 1 3 0
$insn"
gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support],
- gcc_cv_as_dwarf2_debug_line,
- [elf,2,11,0],, [$conftest_s],
+ gcc_cv_as_dwarf2_debug_line,,
+ [$conftest_s],
[if test x$gcc_cv_objdump != x \
&& $gcc_cv_objdump -h conftest.o 2> /dev/null \
| grep debug_line > /dev/null 2>&1; then
# by DW_AT_decl_file. Approximate this test by testing if
# the assembler bitches if the same index is assigned twice.
gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive],
- gcc_cv_as_dwarf2_file_buggy,,,
+ gcc_cv_as_dwarf2_file_buggy,,
[ .file 1 "foo.s"
.file 1 "bar.s"])
.uleb128 .LVU1
"
gcc_GAS_CHECK_FEATURE([dwarf2 debug_view support],
- gcc_cv_as_dwarf2_debug_view,
- [elf,2,27,0],,[$conftest_s],,
+ gcc_cv_as_dwarf2_debug_view,,
+ [$conftest_s],,
[AC_DEFINE(HAVE_AS_DWARF2_DEBUG_VIEW, 1,
[Define if your assembler supports views in dwarf2 .loc directives.])])
fi
gcc_GAS_CHECK_FEATURE([--gdwarf2 option],
gcc_cv_as_gdwarf2_flag,
- [elf,2,11,0], [--gdwarf2], [$insn],,
+ [--gdwarf2], [$insn],,
[AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
[Define if your assembler supports the --gdwarf2 option.])])
gcc_GAS_CHECK_FEATURE([--gdwarf-5 option],
gcc_cv_as_gdwarf_5_flag,
- [elf,2,36,0], [--gdwarf-5], [$insn],,
- [AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
+ [--gdwarf-5], [$insn],
+ [if test x$gcc_cv_objdump != x \
+ && $gcc_cv_objdump -Wi conftest.o 2>&1 \
+ | grep DW_TAG_compile_unit > /dev/null 2>&1; then
+ gcc_cv_as_gdwarf_5_flag=yes;
+ fi],[AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
[Define if your assembler supports the --gdwarf-5 option.])])
+ case $target_os in
+ win32 | pe | cygwin* | mingw32*)
+ section_flags=\"dr\"
+ function_type=".def foo; .scl 2; .type 32; .endef"
+ function_size="";;
+ *)
+ section_flags=\"\",%progbits
+ function_type=".type foo, %function"
+ function_size=".size foo, .-foo";;
+ esac
dwarf4_debug_info_size=0x46
dwarf4_high_pc_form=7
dwarf4_debug_aranges_size=0x2c
.Ltext0:
.p2align 4
.globl foo
- .type foo, %function
+ $function_type
foo:
.LFB0:
.LM1:
$insn
.LM2:
.LFE0:
- .size foo, .-foo
+ $function_size
.Letext0:
- .section .debug_info,\"\",%progbits
+ .section .debug_info,$section_flags
.Ldebug_info0:
.4byte $dwarf4_debug_info_size
.2byte 0x4
.byte 0x1
.byte 0x9c
.byte 0
- .section .debug_abbrev,\"\",%progbits
+ .section .debug_abbrev,$section_flags
.Ldebug_abbrev0:
.byte 0x1
.byte 0x11
.byte 0
.byte 0
.byte 0
- .section .debug_aranges,\"\",%progbits
+ .section .debug_aranges,$section_flags
.4byte $dwarf4_debug_aranges_size
.2byte 0x2
.4byte .Ldebug_info0
.${dwarf4_addr_size}byte .Letext0-.Ltext0
.${dwarf4_addr_size}byte 0
.${dwarf4_addr_size}byte 0
- .section .debug_line,\"\",%progbits
+ .section .debug_line,$section_flags
.Ldebug_line0:
.4byte .LELT0-.LSLT0
.LSLT0:
.byte 0x1
.byte 0x1
.LELT0:
- .section .debug_str,\"\",%progbits
+ .section .debug_str,$section_flags
.ident \"GCC\"
"
dwarf4_success=no
if test $dwarf4_addr_size = 4; then
gcc_GAS_CHECK_FEATURE([assembly of compiler generated 32-bit .debug_line],
- gcc_cv_as_debug_line_32_flag,
- [elf,2,36,0], [], [$conftest_s],,
+ gcc_cv_as_debug_line_32_flag,,
+ [$conftest_s],,
[dwarf4_success=yes])
else
gcc_GAS_CHECK_FEATURE([assembly of compiler generated 64-bit .debug_line],
- gcc_cv_as_debug_line_64_flag,
- [elf,2,36,0], [], [$conftest_s],,
+ gcc_cv_as_debug_line_64_flag,,
+ [$conftest_s],,
[dwarf4_success=yes])
fi
if test $dwarf4_success = yes; then
dwarf4_success=no
gcc_GAS_CHECK_FEATURE([--gdwarf-4 not refusing compiler generated .debug_line],
gcc_cv_as_dwarf_4_debug_line_flag,
- [elf,2,36,0], [--gdwarf-4], [$conftest_s],,
+ [--gdwarf-4], [$conftest_s],,
[dwarf4_success=yes])
break
fi
"
dwarf4_success=no
gcc_GAS_CHECK_FEATURE([--gdwarf-4 with the APP marker],
- gcc_cv_as_dwarf_4_app_flag,,
+ gcc_cv_as_dwarf_4_app_flag,
[--gdwarf-4], [$conftest_s],, [dwarf4_success=yes])
fi
conftest_s="\
.text
.globl foo
- .type foo, %function
+ $function_type
foo:
$insn
- .size foo, .-foo
+ $function_size
.file 1 \"foo.c\"
"
gcc_GAS_CHECK_FEATURE([working --gdwarf-4/--gdwarf-5 for all sources],
- gcc_cv_as_working_gdwarf_n_flag,,
+ gcc_cv_as_working_gdwarf_n_flag,
[--gdwarf-4],
[$conftest_s],
[changequote(,)dnl
- if test x$gcc_cv_readelf != x \
- && $gcc_cv_readelf -w conftest.o 2>&1 \
+ if test x$gcc_cv_objdump != x \
+ && $gcc_cv_objdump -W conftest.o 2>&1 \
| grep conftest.s > /dev/null 2>&1; then
gcc_cv_as_working_gdwarf_n_flag=no
else
fi
fi
- gcc_GAS_CHECK_FEATURE([--gstabs option],
- gcc_cv_as_gstabs_flag,
- [elf,2,11,0], [--gstabs], [$insn],,
- [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
-[Define if your assembler supports the --gstabs option.])])
-
gcc_GAS_CHECK_FEATURE([--debug-prefix-map option],
gcc_cv_as_debug_prefix_map_flag,
- [2,18,0], [--debug-prefix-map /a=/b], [$insn],,
+ [--debug-prefix-map /a=/b], [$insn],,
[AC_DEFINE(HAVE_AS_DEBUG_PREFIX_MAP, 1,
[Define if your assembler supports the --debug-prefix-map option.])])
fi
gcc_GAS_CHECK_FEATURE([compressed debug sections],
- gcc_cv_as_compress_debug,,,,
+ gcc_cv_as_compress_debug,,,
[# gas compiled without zlib cannot compress debug sections and warns
# about it, but still exits successfully. So check for this, too.
if $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null
then
gcc_cv_as_compress_debug=0
- # Since binutils 2.26, gas supports --compress-debug-sections=type,
- # defaulting to the ELF gABI format.
- elif $gcc_cv_as --compress-debug-sections=zlib-gnu -o conftest.o conftest.s > /dev/null 2>&1
- then
- gcc_cv_as_compress_debug=2
- gcc_cv_as_compress_debug_option="--compress-debug-sections"
- gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
- # Before binutils 2.26, gas only supported --compress-debug-options and
- # emitted the traditional GNU format.
- elif $gcc_cv_as --compress-debug-sections -o conftest.o conftest.s > /dev/null 2>&1
+ elif $gcc_cv_as --compress-debug-sections=zlib -o conftest.o conftest.s > /dev/null 2>&1
then
gcc_cv_as_compress_debug=1
gcc_cv_as_compress_debug_option="--compress-debug-sections"
gcc_cv_as_no_compress_debug_option="--nocompress-debug-sections"
+ # Since binutils 2.40, gas supports --compress-debug-sections=zstd.
+ if $gcc_cv_as --compress-debug-sections=zstd -o conftest.o conftest.s > /dev/null 2>&1
+ then
+ gcc_cv_as_compress_debug=2
+ fi
else
gcc_cv_as_compress_debug=0
fi])
AC_DEFINE_UNQUOTED(AS_NO_COMPRESS_DEBUG_OPTION, "$gcc_cv_as_no_compress_debug_option",
[Define to the assembler option to disable compressed debug sections.])
-gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,
- ,,
+gcc_GAS_CHECK_FEATURE([.lcomm with alignment], gcc_cv_as_lcomm_with_alignment,,
[.lcomm bar,4,16],,
[AC_DEFINE(HAVE_GAS_LCOMM_WITH_ALIGNMENT, 1,
[Define if your assembler supports .lcomm with an alignment field.])])
*) AC_MSG_ERROR(['$enable_gnu_unique_object' is an invalid value for --enable-gnu-unique-object.
Valid choices are 'yes' and 'no'.]) ;;
esac],
- [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,
- [elf,2,19,52],,
+ [gcc_GAS_CHECK_FEATURE([gnu_unique_object], gcc_cv_as_gnu_unique_object,,
[.type foo, '$target_type_format_char'gnu_unique_object],,
# We need to unquote above to to use the definition from config.gcc.
# Also check for ld.so support, i.e. glibc 2.11 or higher.
AC_CACHE_CHECK([assembler for tolerance to line number 0],
[gcc_cv_as_line_zero],
[gcc_cv_as_line_zero=no
- if test $in_tree_gas = yes; then
- gcc_GAS_VERSION_GTE_IFELSE(2, 16, 91, [gcc_cv_as_line_zero=yes])
- elif test "x$gcc_cv_as" != x; then
+ if test "x$gcc_cv_as" != x; then
{ echo '# 1 "test.s" 1'; echo '# 0 "" 2'; } > conftest.s
if AC_TRY_COMMAND([$gcc_cv_as -o conftest.o conftest.s >&AS_MESSAGE_LOG_FD 2>conftest.out]) &&
test "x`cat conftest.out`" = x
AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections_bug)
AC_MSG_CHECKING(linker for compressed debug sections)
-# gold/gld support compressed debug sections since binutils 2.19/2.21
-# In binutils 2.26, gld gained support for the ELF gABI format.
-if test $in_tree_ld = yes ; then
- gcc_cv_ld_compress_debug=0
- 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 \
- && test $in_tree_ld_is_elf = yes && test $ld_is_gold = yes; then
- gcc_cv_ld_compress_debug=2
- gcc_cv_ld_compress_debug_option="--compress-debug-sections"
- 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 \
- && test $in_tree_ld_is_elf = yes && test $ld_is_gold = no; then
- gcc_cv_ld_compress_debug=3
- gcc_cv_ld_compress_debug_option="--compress-debug-sections"
- 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 \
- && test $in_tree_ld_is_elf = yes; then
- gcc_cv_ld_compress_debug=1
- fi
-elif echo "$ld_ver" | grep GNU > /dev/null; then
- if test "$ld_vers_major" -lt 2 \
- || test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 21; then
- gcc_cv_ld_compress_debug=0
- elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 26; then
+# GNU ld/gold support --compressed-debug-sections=zlib since binutils 2.26.
+if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zlib-gabi\>' > /dev/null; then
gcc_cv_ld_compress_debug=1
- else
- gcc_cv_ld_compress_debug=3
gcc_cv_ld_compress_debug_option="--compress-debug-sections"
- fi
- if test $ld_is_gold = yes; then
- gcc_cv_ld_compress_debug=2
- gcc_cv_ld_compress_debug_option="--compress-debug-sections"
- fi
+ # Detect zstd debug section compression support
+ if $gcc_cv_ld --help 2>&1 | grep -- '--compress-debug-sections.*\<zstd\>' > /dev/null; then
+ gcc_cv_ld_compress_debug=2
+ fi
else
changequote(,)dnl
case "${target}" in
*-*-solaris2*)
# Introduced in Solaris 11.2.
if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections' > /dev/null; then
- gcc_cv_ld_compress_debug=3
+ gcc_cv_ld_compress_debug=1
gcc_cv_ld_compress_debug_option="-z compress-sections"
else
gcc_cv_ld_compress_debug=0
# Set defaults for possibly untestable items.
gcc_cv_ld64_export_dynamic=0
+ gcc_cv_ld64_platform_version=0
if test "$build" = "$host"; then
darwin_try_test=1
AC_MSG_CHECKING(ld64 specified version)
gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
AC_MSG_RESULT($gcc_cv_ld64_major)
- if test "$gcc_cv_ld64_major" -ge 236; then
+ if test "$gcc_cv_ld64_major" -ge 236; then
gcc_cv_ld64_export_dynamic=1
fi
+ if test "$gcc_cv_ld64_major" -ge 512; then
+ gcc_cv_ld64_platform_version=1
+ fi
elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
# If the version was not specified, try to find it.
AC_MSG_CHECKING(linker version)
gcc_cv_ld64_export_dynamic=0
fi
AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
+
+ AC_MSG_CHECKING(linker for -platform_version support)
+ gcc_cv_ld64_platform_version=1
+ if $gcc_cv_ld -platform_version macos 10.5 0.0 < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
+ gcc_cv_ld64_platform_version=0
+ fi
+ AC_MSG_RESULT($gcc_cv_ld64_platform_version)
fi
if test x"${gcc_cv_ld64_version}" != x; then
AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
[Define to 1 if ld64 supports '-export_dynamic'.])
+
+ AC_DEFINE_UNQUOTED(LD64_HAS_PLATFORM_VERSION, $gcc_cv_ld64_platform_version,
+ [Define to 1 if ld64 supports '-platform_version'.])
+fi
+
+if test x"$dsymutil_flag" = x"yes"; then
+
+ # If the user specified a dsymutil path, then we will already have the
+ # version string, otherwise, pick it up.
+ if test x"$gcc_cv_dsymutil" = x; then
+ AC_MSG_WARN([dsymutil is a required tool for this system, but not found])
+ dsymutil_vers="tool unspecified"
+ elif test x"$dsymutil_vers" = x; then
+ dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
+ fi
+
+ dsymutil_temp=`echo $dsymutil_vers | sed 1q`
+ AC_MSG_CHECKING(dsymutil version "$dsymutil_temp")
+ if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
+ dsymutil_kind=DWARFUTILS
+ dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([[0-9\.]]*\).*/\1/'`
+ elif echo $dsymutil_temp | grep clang- > /dev/null; then
+ dsymutil_kind=CLANG
+ dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([[0-9\.]]*\).*/\1/'`
+ elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
+ dsymutil_kind=LLVM
+ dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([[0-9\.]]*\).*/\1/'`
+ else
+ dsymutil_kind=UNKNOWN
+ dsymutil_vers="0.0"
+ fi
+ dsymutil_major=`expr "$dsymutil_vers" : '\([[0-9]]*\)'`
+ dsymutil_minor=`expr "$dsymutil_vers" : '[[0-9]]*\.\([[0-9]]*\)'`
+ dsymutil_tiny=`expr "$dsymutil_vers" : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+ if test x"${dsymutil_minor}" = x; then
+ dsymutil_minor=0
+ fi
+ if test x"${dsymutil_tiny}" = x; then
+ dsymutil_tiny=0
+ fi
+ AC_DEFINE_UNQUOTED(DSYMUTIL_VERSION, [$dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}],
+ [Define to the dsymutil version.])
+ AC_MSG_RESULT($dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} )
fi
+case $target_os in
+ win32 | pe | cygwin* | mingw32*)
+ AC_MSG_CHECKING(broken PE linker dwarf5 support)
+ gcc_cv_ld_broken_pe_dwarf5=yes
+ if test $in_tree_ld = yes ; then
+ if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
+ && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
+ gcc_cv_ld_broken_pe_dwarf5=no
+ fi
+ else
+ if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
+ gcc_cv_ld_broken_pe_dwarf5=no
+ fi
+ fi
+ if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
+ AC_DEFINE(HAVE_LD_BROKEN_PE_DWARF5, 1,
+ [Define if the PE linker has broken DWARF 5 support.])
+ fi
+ AC_MSG_RESULT($gcc_cv_ld_broken_pe_dwarf5)
+
+ AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
+ gcc_cv_ld_disable_dynamicbase=no
+ if test $in_tree_ld = yes; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
+ gcc_cv_ld_disable_dynamicbase=yes
+ fi
+ else
+ if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
+ gcc_cv_ld_disable_dynamicbase=yes
+ fi
+ fi
+ if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
+ AC_DEFINE(HAVE_LD_PE_DISABLE_DYNAMICBASE, 1,
+ [Define if the PE linker supports --disable-dynamicbase option.])
+ fi
+ AC_MSG_RESULT($gcc_cv_ld_disable_dynamicbase)
+ ;;
+esac
+
# --------
# UNSORTED
# --------
esac
case "$target:$tm_file" in
- powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
+ powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
case "$target" in
*le-*-linux*)
emul_name="-melf64lppc"
# Test for <sys/sdt.h> on the target.
GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
-AC_MSG_CHECKING(sys/sdt.h in the target C library)
-have_sys_sdt_h=no
-if test -f $target_header_dir/sys/sdt.h; then
- have_sys_sdt_h=yes
- AC_DEFINE(HAVE_SYS_SDT_H, 1,
+AC_CACHE_CHECK([sys/sdt.h in the target C library], [gcc_cv_sys_sdt_h], [
+ gcc_cv_sys_sdt_h=no
+ if test -f $target_header_dir/sys/sdt.h; then
+ gcc_cv_sys_sdt_h=yes
+ fi
+])
+AS_IF([test x$gcc_cv_sys_sdt_h = xyes], [
+ AC_DEFINE([HAVE_SYS_SDT_H], [1],
[Define if your target C library provides sys/sdt.h])
-fi
-AC_MSG_RESULT($have_sys_sdt_h)
+])
# Check if TFmode long double should be used by default or not.
# Some glibc targets used DFmode long double, but with glibc 2.4
# Check if the target LIBC handles PT_GNU_STACK.
gcc_cv_libc_gnustack=unknown
case "$target" in
+ mips*-*-linux-musl*)
+ gcc_cv_libc_gnustack=yes
+ ;;
mips*-*-linux*)
GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
;;
fi
AC_SUBST(MAINT)dnl
+dnl Variables for tags utilities; copied from automake 1.16.4+'s init.m4
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+AC_SUBST([CTAGS])
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+AC_SUBST([ETAGS])
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+AC_SUBST([CSCOPE])
+
dnl Whether to prevent multiple front-ends from linking at the same time
AC_MSG_CHECKING([whether to avoid linking multiple front-ends at once])
$ok || continue
all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in"
- all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
+ if test "x$language" = xc && test -n "$all_lang_makefrags"; then
+ # Put c/Make-lang.in fragment first to match serialization languages order.
+ all_lang_makefrags="\$(srcdir)/$gcc_subdir/Make-lang.in $all_lang_makefrags"
+ else
+ all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in"
+ fi
if test -f $srcdir/$gcc_subdir/lang.opt; then
lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt"
all_opt_files="$all_opt_files $srcdir/$gcc_subdir/lang.opt"
rm -f Make-hooks
touch Make-hooks
target_list="all.cross start.encap rest.encap tags \
- install-common install-man install-info install-pdf install-html dvi \
- pdf html uninstall info man srcextra srcman srcinfo \
+ install-common install-man install-info install-dvi install-pdf \
+ install-html dvi pdf html uninstall info man srcextra srcman srcinfo \
mostlyclean clean distclean maintainer-clean install-plugin"
for t in $target_list
# Enable --enable-host-shared
AC_ARG_ENABLE(host-shared,
[AS_HELP_STRING([--enable-host-shared],
- [build host code as shared libraries])],
-[PICFLAG=-fPIC], [PICFLAG=])
+ [build host code as shared libraries])])
AC_SUBST(enable_host_shared)
-AC_SUBST(PICFLAG)
+# Enable --enable-host-pie
+AC_ARG_ENABLE(host-pie,
+[AS_HELP_STRING([--enable-host-pie],
+ [build host code as PIE])])
+AC_SUBST(enable_host_pie)
AC_ARG_ENABLE(libquadmath-support,
[AS_HELP_STRING([--disable-libquadmath-support],
[The default for -fdiagnostics-urls option])
# Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit
-# of jit/jit-playback.c.
+# of jit/jit-playback.cc.
gcc_driver_version=`eval "${get_gcc_base_ver} $srcdir/BASE-VER"`
echo "gcc_driver_version: ${gcc_driver_version}"
cat > gcc-driver-name.h <<EOF
[gcc_cv_c_no_fpie=yes],
[gcc_cv_c_no_fpie=no])
CXXFLAGS="$saved_CXXFLAGS"])
-if test "$gcc_cv_c_no_fpie" = "yes"; then
- NO_PIE_CFLAGS="-fno-PIE"
-fi
-AC_SUBST([NO_PIE_CFLAGS])
# Check if -no-pie works.
AC_CACHE_CHECK([for -no-pie option],
[gcc_cv_no_pie=yes],
[gcc_cv_no_pie=no])
LDFLAGS="$saved_LDFLAGS"])
-if test "$gcc_cv_no_pie" = "yes"; then
- NO_PIE_FLAG="-no-pie"
+
+if test x$enable_host_shared = xyes; then
+ PICFLAG=-fPIC
+elif test x$enable_host_pie = xyes; then
+ PICFLAG=-fPIE
+elif test x$gcc_cv_c_no_fpie = xyes; then
+ PICFLAG=-fno-PIE
+else
+ PICFLAG=
fi
-AC_SUBST([NO_PIE_FLAG])
+
+if test x$enable_host_pie = xyes; then
+ LD_PICFLAG=-pie
+elif test x$gcc_cv_no_pie = xyes; then
+ LD_PICFLAG=-no-pie
+else
+ LD_PICFLAG=
+fi
+
+AC_SUBST([PICFLAG])
+AC_SUBST([LD_PICFLAG])
# Enable Intel CET on Intel CET enabled host if jit is enabled.
GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
# cross build. are target headers available?
# carefully coerce the build-system compiler to use target headers
saved_CXXFLAGS="$CXXFLAGS"
- CROSS_TEST_CXXFLAGS="-nostdinc ${XGCC_FLAGS_FOR_TARGET//-B/-idirafter/}"
+ fixed_XGCC_FLAGS_FOR_TARGET=`echo "$XGCC_FLAGS_FOR_TARGET" | sed 's/-B/-idirafter/g'`
+ CROSS_TEST_CXXFLAGS="-nostdinc $fixed_XGCC_FLAGS_FOR_TARGET"
CXXFLAGS="$CROSS_TEST_CXXFLAGS"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <math.h>