# 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`
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])
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"
fi
AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, ARM, OR1K, RISC-V, 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 \
+ 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)
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
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}
;;
*)
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_FOR_BUILD)'
fi
+
+if test x$enable_fixincludes = xno;
+then
+ STMP_FIXINC=''
+fi
+
# Expand extra_headers to include complete path.
# This substitutes for lots of t-* files.
extra_headers_list=
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
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
[`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,
[--fatal-warnings],
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 \
movl r24 = @tprel(foo#)'
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
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_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_as_opt="--fatal-warnings"
- ;;
xtensa*-*-*)
conftest_s='
.section ".tdata","awT",@progbits
# 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
;;
esac
case $target_os in
- darwin2[[0-9]]* | darwin19*)
+ 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],,
[Define if the assembler understands -misa-spec=.])])
gcc_GAS_CHECK_FEATURE([-march=rv32i_zifencei support],
gcc_cv_as_riscv_march_zifencei,
- [-march=rv32i_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,,
;;
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
-# This tests if the assembler supports two registers for global_load functions
-# (like in LLVM versions <12) or one register (like in LLVM 12).
+# 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(assembler fix for global_load functions)
- gcc_cv_as_gcn_global_load_fixed=yes
+ AC_MSG_CHECKING(llvm assembler version)
+ gcc_cv_as_version="unknown"
if test x$gcc_cv_as != x; then
- cat > conftest.s <<EOF
- global_store_dwordx2 v[[1:2]], v[[4:5]], s[[14:15]]
-EOF
- if $gcc_cv_as -triple=amdgcn--amdhsa -filetype=obj -mcpu=gfx900 -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_gcn_global_load_fixed=no
- fi
- rm -f conftest.s conftest.o conftest
+ 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
- global_load_fixed=`if test x$gcc_cv_as_gcn_global_load_fixed = xyes; then echo 1; else echo 0; fi`
- AC_DEFINE_UNQUOTED(HAVE_GCN_ASM_GLOBAL_LOAD_FIXED, $global_load_fixed,
- [Define if your assembler has fixed global_load functions.])
- AC_MSG_RESULT($gcc_cv_as_gcn_global_load_fixed)
+ AC_MSG_RESULT([$gcc_cv_as_version, ok])
;;
esac
case "$target" in
- amdgcn-* | gcn-*)
- # Test the LLVM assembler syntax dialect; they have made a number of
- # changes between LLVM 12 & 13 without any backward compatibility.
- gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v2/3 syntax],
- gcc_cv_as_gcn_asm_v3_syntax,
- [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack],
- [.amdgcn_target "amdgcn-unknown-amdhsa--gfx906+xnack"],,
- [AC_DEFINE(HAVE_GCN_ASM_V3_SYNTAX, 1,
- [Define if your assembler expects amdgcn_target gfx908+xnack syntax.])])
- gcc_GAS_CHECK_FEATURE([assembler amdgcn_target v4 syntax],
- gcc_cv_as_gcn_asm_v4_syntax,
- [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack],
- [.amdgcn_target "amdgcn-unknown-amdhsa--gfx908:xnack+"],,
- [AC_DEFINE(HAVE_GCN_ASM_V4_SYNTAX, 1,
- [Define if your assembler expects amdgcn_target gfx908:xnack+ syntax.])])
-
- # Some attribute names changed in the move to v4 ...
- if test $gcc_cv_as_gcn_asm_v3_syntax = yes; then
- sramopt="+sram-ecc"
- sramattr="+sram-ecc"
- xnackattr="+xnack"
- elif test $gcc_cv_as_gcn_asm_v4_syntax = yes; then
- sramopt="+sramecc"
- sramattr=":sramecc+"
- xnackattr=":xnack+"
- else
- AC_MSG_ERROR([Unrecognised assembler version])
- fi
-
- # Test whether the LLVM assembler accepts -mattr=+xnack without any
- # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
- # LLVM 12+ throws a warning for GPUs without support.
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for fiji],
- gcc_cv_as_gcn_xnack_ecc_fiji,
- [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=+xnack 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_xnack_ecc_fiji=yes],
- [AC_DEFINE(HAVE_GCN_XNACK_FIJI, 1,
- [Define if your assembler allows -mattr=+xnack for fiji.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx900],
- gcc_cv_as_gcn_xnack_ecc_gfx900,
- [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+xnack 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_xnack_ecc_gfx900=yes],
- [AC_DEFINE(HAVE_GCN_XNACK_GFX900, 1,
- [Define if your assembler allows -mattr=+xnack for gfx900.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx906],
- gcc_cv_as_gcn_xnack_ecc_gfx906,
- [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=+xnack 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_xnack_ecc_gfx906=yes],
- [AC_DEFINE(HAVE_GCN_XNACK_GFX906, 1,
- [Define if your assembler allows -mattr=+xnack for gfx906.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=+xnack for gfx908],
- gcc_cv_as_gcn_xnack_ecc_gfx908,
- [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=+xnack 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_xnack_ecc_gfx908=yes],
- [AC_DEFINE(HAVE_GCN_XNACK_GFX908, 1,
- [Define if your assembler allows -mattr=+xnack for gfx908.])])
- rm -f conftest.err
-
- # Test whether the LLVM assembler accepts -mattr=+sramecc without any
- # diagnostic. LLVM 9 & 10 accept the option whether it makes sense or not,
- # (some?) LLVM 12 rejects it for all GPUs, and LLVM13 throws a warning
- # for GPUs without support.
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for fiji],
- gcc_cv_as_gcn_sram_ecc_fiji,
- [-triple=amdgcn--amdhsa -mcpu=fiji -mattr=$sramopt 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_sram_ecc_fiji=yes],
- [AC_DEFINE(HAVE_GCN_SRAM_ECC_FIJI, 1,
- [Define if your assembler allows -mattr=+sramecc for fiji.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx900],
- gcc_cv_as_gcn_sram_ecc_gfx900,
- [-triple=amdgcn--amdhsa -mcpu=gfx900 -mattr=$sramopt 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_sram_ecc_gfx900=yes],
- [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX900, 1,
- [Define if your assembler allows -mattr=+sramecc for gfx900.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx906],
- gcc_cv_as_gcn_sram_ecc_gfx906,
- [-triple=amdgcn--amdhsa -mcpu=gfx906 -mattr=$sramopt 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_sram_ecc_gfx906=yes],
- [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX906, 1,
- [Define if your assembler allows -mattr=+sramecc for gfx906.])])
- rm -f conftest.err
- gcc_GAS_CHECK_FEATURE([assembler accepts -mattr=$sramopt for gfx908],
- gcc_cv_as_gcn_sram_ecc_gfx908,
- [-triple=amdgcn--amdhsa -mcpu=gfx908 -mattr=$sramopt 2>conftest.err], [],
- [grep "." conftest.err >&AS_MESSAGE_LOG_FD \
- || gcc_cv_as_gcn_sram_ecc_gfx908=yes],
- [AC_DEFINE(HAVE_GCN_SRAM_ECC_GFX908, 1,
- [Define if your assembler allows -mattr=+sramecc for gfx908.])])
- rm -f conftest.err
- ;;
arm*)
gcc_GAS_CHECK_FEATURE([assembler for arm accepts context-specific architecture extensions],
gcc_cv_as_arm_option_extensions,
# ??? 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)
fi
fi
- gcc_GAS_CHECK_FEATURE([--gstabs option],
- gcc_cv_as_gstabs_flag,
- [--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,
[--debug-prefix-map /a=/b], [$insn],,
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_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
+# 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
- 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
- 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
# 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], )
;;
# 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
+
+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([NO_PIE_FLAG])
+
+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)