summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch208
1 files changed, 208 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch b/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch
new file mode 100644
index 0000000000..addecb4bd8
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch
@@ -0,0 +1,208 @@
+From 2824d2418605e092899117e77bc8ebf332321807 Mon Sep 17 00:00:00 2001
+From: Jakub Jelinek <jakub@redhat.com>
+Date: Fri, 15 Jan 2021 13:12:59 +0100
+Subject: [PATCH] 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.
+
+Upstream-Status: Backport [master post 10.x release]
+---
+ libatomic/configure.tgt | 56 +++++++++++++++++++++++------------------
+ libgomp/configure.tgt | 35 +++++++++++---------------
+ libitm/configure.tgt | 37 +++++++++++++--------------
+ 3 files changed, 64 insertions(+), 64 deletions(-)
+
+diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
+index 5dd0926d20..6ea082a29b 100644
+--- a/libatomic/configure.tgt
++++ b/libatomic/configure.tgt
+@@ -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}" ;;
+diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt
+index 4790a31e39..761ef2a7db 100644
+--- a/libgomp/configure.tgt
++++ b/libgomp/configure.tgt
+@@ -70,28 +70,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.
+diff --git a/libitm/configure.tgt b/libitm/configure.tgt
+index 04109160e9..ca62bac627 100644
+--- a/libitm/configure.tgt
++++ b/libitm/configure.tgt
+@@ -58,16 +58,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
+ ;;
+@@ -102,16 +109,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