mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
libatomic, libgomp, libitc: Fix bootstrap [PR70454]
The recent changes to error on mixing -march=i386 and -fcf-protection broke bootstrap. This patch changes lib{atomic,gomp,itm} configury, so that it only adds -march=i486 to flags if really needed (i.e. when 486 or later isn't on by default already). Similarly, it will not use ifuncs if -mcx16 (or -march=i686 for 32-bit) is on by default. 2021-01-15 Jakub Jelinek <jakub@redhat.com> PR target/70454 libatomic/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Determine if try_ifunc is needed based on preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 or __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8. libgomp/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. libitm/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4.
This commit is contained in:
parent
bfab355012
commit
0411ae7f08
@ -81,32 +81,40 @@ case "${target_cpu}" in
|
||||
ARCH=sparc
|
||||
;;
|
||||
|
||||
i[3456]86)
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m64 "*|*" -mx32 "*)
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
fi
|
||||
esac
|
||||
ARCH=x86
|
||||
# ??? Detect when -march=i686 is already enabled.
|
||||
try_ifunc=yes
|
||||
;;
|
||||
x86_64)
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m32 "*)
|
||||
i[3456]86 | x86_64)
|
||||
cat > conftestx.c <<EOF
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
#error need -march=i486
|
||||
#endif
|
||||
EOF
|
||||
if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
if test "${target_cpu}" = x86_64; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
else
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
fi
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
fi
|
||||
cat > conftestx.c <<EOF
|
||||
#ifdef __x86_64__
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
||||
#error need -mcx16
|
||||
#endif
|
||||
#else
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
||||
#error need -march=i686
|
||||
#endif
|
||||
#endif
|
||||
EOF
|
||||
if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
try_ifunc=no
|
||||
else
|
||||
try_ifunc=yes
|
||||
fi
|
||||
rm -f conftestx.c
|
||||
ARCH=x86
|
||||
# ??? Detect when -mcx16 is already enabled.
|
||||
try_ifunc=yes
|
||||
;;
|
||||
|
||||
*) ARCH="${target_cpu}" ;;
|
||||
|
@ -73,28 +73,23 @@ if test x$enable_linux_futex = xyes; then
|
||||
;;
|
||||
|
||||
# Note that bare i386 is not included here. We need cmpxchg.
|
||||
i[456]86-*-linux*)
|
||||
i[456]86-*-linux* | x86_64-*-linux*)
|
||||
config_path="linux/x86 linux posix"
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m64 "*|*" -mx32 "*)
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
fi
|
||||
esac
|
||||
;;
|
||||
|
||||
# Similar jiggery-pokery for x86_64 multilibs, except here we
|
||||
# can't rely on the --with-arch configure option, since that
|
||||
# applies to the 64-bit side.
|
||||
x86_64-*-linux*)
|
||||
config_path="linux/x86 linux posix"
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m32 "*)
|
||||
cat > conftestx.c <<EOF
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
#error need -march=i486
|
||||
#endif
|
||||
EOF
|
||||
if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
if test "${target_cpu}" = x86_64; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
fi
|
||||
fi
|
||||
rm -f conftestx.c
|
||||
;;
|
||||
|
||||
# Note that sparcv7 and sparcv8 is not included here. We need cas.
|
||||
|
@ -59,16 +59,23 @@ case "${target_cpu}" in
|
||||
|
||||
arm*) ARCH=arm ;;
|
||||
|
||||
i[3456]86)
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m64 "*|*" -mx32 "*)
|
||||
;;
|
||||
*)
|
||||
if test -z "$with_arch"; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
fi
|
||||
esac
|
||||
i[3456]86 | x86_64)
|
||||
cat > conftestx.c <<EOF
|
||||
#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
#error need -march=i486
|
||||
#endif
|
||||
EOF
|
||||
if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
if test "${target_cpu}" = x86_64; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
else
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
fi
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
fi
|
||||
rm -f conftestx.c
|
||||
XCFLAGS="${XCFLAGS} -mrtm"
|
||||
ARCH=x86
|
||||
;;
|
||||
@ -103,16 +110,6 @@ case "${target_cpu}" in
|
||||
ARCH=sparc
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
case " ${CC} ${CFLAGS} " in
|
||||
*" -m32 "*)
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
;;
|
||||
esac
|
||||
XCFLAGS="${XCFLAGS} -mrtm"
|
||||
ARCH=x86
|
||||
;;
|
||||
s390|s390x)
|
||||
XCFLAGS="${XCFLAGS} -mzarch -mhtm"
|
||||
ARCH=s390
|
||||
|
Loading…
Reference in New Issue
Block a user