Skip to content

Commit

Permalink
libatomic, libgomp, libitc: Fix bootstrap [PR70454]
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
jakubjelinek committed Jan 15, 2021
1 parent bfab355 commit 0411ae7
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 64 deletions.
56 changes: 32 additions & 24 deletions libatomic/configure.tgt
Original file line number Diff line number Diff line change
Expand Up @@ -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}" ;;
Expand Down
35 changes: 15 additions & 20 deletions libgomp/configure.tgt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
37 changes: 17 additions & 20 deletions libitm/configure.tgt
Original file line number Diff line number Diff line change
Expand Up @@ -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
;;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 0411ae7

Please sign in to comment.