mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-11-28 01:00:21 +08:00
libiberty: Disable hwcaps for sha1.o
This patch
commit bf4f40cc31
Author: Jakub Jelinek <jakub@redhat.com>
Date: Tue Nov 28 13:14:05 2023 +0100
libiberty: Use x86 HW optimized sha1
broke Solaris/x86 bootstrap with the native as:
libtool: compile: /var/gcc/regression/master/11.4-gcc/build/./gcc/gccgo -B/var/gcc/regression/master/11.4-gcc/build/./gcc/ -B/vol/gcc/i386-pc-solaris2.11/bin/ -B/vol/gcc/i386-pc-solaris2.11/lib/ -isystem /vol/gcc/i386-pc-solaris2.11/include -isystem /vol/gcc/i386-pc-solaris2.11/sys-include -fchecking=1 -minline-all-stringops -O2 -g -I . -c -fgo-pkgpath=internal/goarch /vol/gcc/src/hg/master/local/libgo/go/internal/goarch/goarch.go zgoarch.go
ld.so.1: go1: fatal: /var/gcc/regression/master/11.4-gcc/build/gcc/go1: hardware capability (CA_SUNW_HW_2) unsupported: 0x4000000 [ SHA1 ]
gccgo: fatal error: Killed signal terminated program go1
As is already done in a couple of other similar cases, this patches
disables hwcaps support for libiberty.
Initially, this didn't work because config/hwcaps.m4 uses target_os, but
didn't ensure it is defined.
Tested on i386-pc-solaris2.11 with as and gas.
2023-11-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
config:
* hwcaps.m4 (GCC_CHECK_ASSEMBLER_HWCAP): Require
AC_CANONICAL_TARGET.
libiberty:
* configure.ac (GCC_CHECK_ASSEMBLER_HWCAP): Invoke.
* configure, aclocal.m4: Regenerate.
* Makefile.in (COMPILE.c): Add HWCAP_CFLAGS.
This commit is contained in:
parent
248bf19714
commit
f2c52c0dfd
@ -7,6 +7,7 @@ dnl HWCAP_CFLAGS='-Wa,-nH' if possible.
|
||||
dnl
|
||||
AC_DEFUN([GCC_CHECK_ASSEMBLER_HWCAP], [
|
||||
test -z "$HWCAP_CFLAGS" && HWCAP_CFLAGS=''
|
||||
AC_REQUIRE([AC_CANONICAL_TARGET])
|
||||
|
||||
# Restrict the test to Solaris, other assemblers (e.g. AIX as) have -nH
|
||||
# with a different meaning.
|
||||
|
@ -114,7 +114,7 @@ INCDIR=$(srcdir)/$(MULTISRCTOP)../include
|
||||
|
||||
COMPILE.c = $(CC) -c @DEFS@ $(CFLAGS) $(CPPFLAGS) -I. -I$(INCDIR) \
|
||||
$(HDEFINES) @ac_libiberty_warn_cflags@ -D_GNU_SOURCE \
|
||||
@CET_HOST_FLAGS@
|
||||
@CET_HOST_FLAGS@ @HWCAP_CFLAGS@
|
||||
|
||||
# Just to make sure we don't use a built-in rule with VPATH
|
||||
.c.$(objext):
|
||||
|
2
libiberty/aclocal.m4
vendored
2
libiberty/aclocal.m4
vendored
@ -16,7 +16,9 @@ m4_include([../config/acx.m4])
|
||||
m4_include([../config/cet.m4])
|
||||
m4_include([../config/enable.m4])
|
||||
m4_include([../config/gcc-plugin.m4])
|
||||
m4_include([../config/hwcaps.m4])
|
||||
m4_include([../config/no-executables.m4])
|
||||
m4_include([../config/override.m4])
|
||||
m4_include([../config/picflag.m4])
|
||||
m4_include([../config/warnings.m4])
|
||||
m4_include([acinclude.m4])
|
||||
|
91
libiberty/configure
vendored
91
libiberty/configure
vendored
@ -626,6 +626,11 @@ pexecute
|
||||
target_header_dir
|
||||
CHECK
|
||||
LIBOBJS
|
||||
HWCAP_CFLAGS
|
||||
target_os
|
||||
target_vendor
|
||||
target_cpu
|
||||
target
|
||||
CET_HOST_FLAGS
|
||||
NOASANFLAG
|
||||
PICFLAG
|
||||
@ -1325,6 +1330,7 @@ _ACEOF
|
||||
System types:
|
||||
--build=BUILD configure for building on BUILD [guessed]
|
||||
--host=HOST cross-compile to build programs to run on HOST [BUILD]
|
||||
--target=TARGET configure for building compilers for TARGET [HOST]
|
||||
_ACEOF
|
||||
fi
|
||||
|
||||
@ -2462,6 +2468,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# This works around the fact that libtool configuration may change LD
|
||||
# for this particular configuration, but some shells, instead of
|
||||
# keeping the changes in LD private, export them just because LD is
|
||||
@ -5631,6 +5640,88 @@ LDFLAGS="$cet_save_LDFLAGS"
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
|
||||
$as_echo_n "checking target system type... " >&6; }
|
||||
if ${ac_cv_target+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if test "x$target_alias" = x; then
|
||||
ac_cv_target=$ac_cv_host
|
||||
else
|
||||
ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
|
||||
as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
|
||||
fi
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
|
||||
$as_echo "$ac_cv_target" >&6; }
|
||||
case $ac_cv_target in
|
||||
*-*-*) ;;
|
||||
*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
|
||||
esac
|
||||
target=$ac_cv_target
|
||||
ac_save_IFS=$IFS; IFS='-'
|
||||
set x $ac_cv_target
|
||||
shift
|
||||
target_cpu=$1
|
||||
target_vendor=$2
|
||||
shift; shift
|
||||
# Remember, the first character of IFS is used to create $*,
|
||||
# except with old shells:
|
||||
target_os=$*
|
||||
IFS=$ac_save_IFS
|
||||
case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
|
||||
|
||||
|
||||
# The aliases save the names the user supplied, while $host etc.
|
||||
# will get canonicalized.
|
||||
test -n "$target_alias" &&
|
||||
test "$program_prefix$program_suffix$program_transform_name" = \
|
||||
NONENONEs,x,x, &&
|
||||
program_prefix=${target_alias}-
|
||||
|
||||
test -z "$HWCAP_CFLAGS" && HWCAP_CFLAGS=''
|
||||
|
||||
|
||||
# Restrict the test to Solaris, other assemblers (e.g. AIX as) have -nH
|
||||
# with a different meaning.
|
||||
case ${target_os} in
|
||||
solaris2*)
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Wa,-nH"
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for as that supports -Wa,-nH" >&5
|
||||
$as_echo_n "checking for as that supports -Wa,-nH... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return 0;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
ac_hwcap_flags=yes
|
||||
else
|
||||
ac_hwcap_flags=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
if test "$ac_hwcap_flags" = "yes"; then
|
||||
HWCAP_CFLAGS="-Wa,-nH $HWCAP_CFLAGS"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_hwcap_flags" >&5
|
||||
$as_echo "$ac_hwcap_flags" >&6; }
|
||||
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
|
||||
echo "# Warning: this fragment is automatically generated" > temp-frag
|
||||
|
||||
if [ -n "${frag}" ] && [ -f "${frag}" ]; then
|
||||
|
@ -265,6 +265,8 @@ AC_SUBST(NOASANFLAG)
|
||||
GCC_CET_HOST_FLAGS(CET_HOST_FLAGS)
|
||||
AC_SUBST(CET_HOST_FLAGS)
|
||||
|
||||
GCC_CHECK_ASSEMBLER_HWCAP
|
||||
|
||||
echo "# Warning: this fragment is automatically generated" > temp-frag
|
||||
|
||||
if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then
|
||||
|
Loading…
Reference in New Issue
Block a user