summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-05-23 19:51:38 +0100
committerV3n3RiX <venerix@redcorelinux.org>2021-05-23 19:51:38 +0100
commitde95a1ea1df7d062a58ba24e51be2306d5df71e0 (patch)
treea7781aeb8730329a0d1d28dff7b5feb570e7ce4f
parent01e7d6d2a8250330c18b9f34225ab9efc8e31ad3 (diff)
sys-devel/binutils && sys-libs/binutils-libs : version bump (2.35.1 -> 2.35.2)
-rw-r--r--sys-devel/binutils/Manifest4
-rw-r--r--sys-devel/binutils/binutils-2.35.2-r10.ebuild (renamed from sys-devel/binutils/binutils-2.35.1-r10.ebuild)28
-rw-r--r--sys-devel/binutils/files/binutils-2.35.1-cet.patch103
-rw-r--r--sys-devel/binutils/files/binutils-2.35.2-powerpc-tests.patch136
-rw-r--r--sys-libs/binutils-libs/Manifest4
-rw-r--r--sys-libs/binutils-libs/binutils-libs-2.35.2-r10.ebuild (renamed from sys-libs/binutils-libs/binutils-libs-2.35.1-r10.ebuild)27
-rw-r--r--sys-libs/binutils-libs/files/binutils-libs-2.35.1-cet.patch103
7 files changed, 390 insertions, 15 deletions
diff --git a/sys-devel/binutils/Manifest b/sys-devel/binutils/Manifest
index 49d69a0b..4ac4c002 100644
--- a/sys-devel/binutils/Manifest
+++ b/sys-devel/binutils/Manifest
@@ -1,2 +1,2 @@
-DIST binutils-2.35.1-patches-2.tar.xz 72236 BLAKE2B 584cb3edbda28c69171ed64e941535f992150d86f25201cadd07b63daaa36bf76b07dc0aa8a4837da17d1672feb47a7b15f83efdeec5409e695965a10142147a SHA512 b704ebe82c4402f058f9c96991a89256a6b369d28f844bf020ed2c77766894d9a2ca0596cd609de7b389fa8cd52bfab674b6deb10ea2096e50aa57921be2083e
-DIST binutils-2.35.1.tar.xz 22031720 BLAKE2B d3468da90b75e9b5fa7fbd64d3fdb0a4bc445e4cb7da5ae058f73a1e9d948b3e9438bc9f1b5b351db369b76a25960c9c1f58f828fd2c7646f555de45fa3c052b SHA512 94ff72708403413b70b247f3af4099ebaa882b6659249869f1ed9941a0f1912e313f08357d470f9fd2359e7f5e5b0eb86285e5eaf883fa8187789d6b1bd304eb
+DIST binutils-2.35.2-patches-1.tar.xz 11836 BLAKE2B 0141349c9618992d1ab1e0309f7ed8fbc43b60a58be1dfed05eae8a8fee857241d9e112ae673da6fc9778767675f536ece818cb85567367bb1c8f87a0693623f SHA512 35de5f227c745c5fb800784fe657b2a6216faf43e2498e8481e7b0dc79b0d2f86b3b6a10b896e060319a77a51c61d2e1b7a951ae962b3a6ef8c1a2a261d9bb6c
+DIST binutils-2.35.2.tar.xz 22056908 BLAKE2B 9c392e0db2b482442f9476f30bd80cf2796321cbf7be79cf21af7bef167b6074c4ae009dcf9b438d2f2f4a23381c935176b2cfa85de1a526ab46e0fd844a7ca5 SHA512 9974ede5978d32e0d68fef23da48fa00bd06b0bff7ec45b00ca075c126d6bbe0cf2defc03ecc3f17bc6cc85b64271a13009c4049d7ba17de26e84e3a6e2c0348
diff --git a/sys-devel/binutils/binutils-2.35.1-r10.ebuild b/sys-devel/binutils/binutils-2.35.2-r10.ebuild
index 57dc7a30..cf54ddd0 100644
--- a/sys-devel/binutils/binutils-2.35.1-r10.ebuild
+++ b/sys-devel/binutils/binutils-2.35.2-r10.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
@@ -8,7 +8,7 @@ inherit eutils libtool flag-o-matic gnuconfig multilib toolchain-funcs
DESCRIPTION="Tools necessary to build programs"
HOMEPAGE="https://sourceware.org/binutils/"
LICENSE="GPL-3+"
-IUSE="default-gold doc +gold multitarget +nls +plugins static-libs test vanilla"
+IUSE="cet default-gold doc +gold multitarget +nls +plugins static-libs test vanilla"
REQUIRED_USE="default-gold? ( gold )"
# Variables that can be set here (ignored for live ebuilds)
@@ -19,7 +19,7 @@ REQUIRED_USE="default-gold? ( gold )"
# PATCH_DEV - Use download URI https://dev.gentoo.org/~{PATCH_DEV}/distfiles/...
# for the patchsets
-PATCH_VER=2
+PATCH_VER=1
PATCH_DEV=dilfridge
if [[ ${PV} == 9999* ]]; then
@@ -32,8 +32,7 @@ else
[[ -z ${PATCH_VER} ]] || SRC_URI="${SRC_URI}
https://dev.gentoo.org/~${PATCH_DEV}/distfiles/binutils-${PATCH_BINUTILS_VER}-patches-${PATCH_VER}.tar.xz"
SLOT=$(ver_cut 1-2)
- # live ebuild
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
fi
#
@@ -57,7 +56,10 @@ RDEPEND="
DEPEND="${RDEPEND}"
BDEPEND="
doc? ( sys-apps/texinfo )
- test? ( dev-util/dejagnu )
+ test? (
+ dev-util/dejagnu
+ sys-devel/bc
+ )
nls? ( sys-devel/gettext )
sys-devel/flex
virtual/yacc
@@ -65,6 +67,11 @@ BDEPEND="
RESTRICT="!test? ( test )"
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.35.1-cet.patch
+ "${FILESDIR}"/${PN}-2.35.2-powerpc-tests.patch
+)
+
MY_BUILDDIR=${WORKDIR}/build
src_unpack() {
@@ -258,6 +265,15 @@ src_configure() {
# Change SONAME to avoid conflict across
# {native,cross}/binutils, binutils-libs. #666100
--with-extra-soversion-suffix=gentoo-${CATEGORY}-${PN}-$(usex multitarget mt st)
+
+ # avoid automagic dependency on (currently prefix) systems
+ # systems with debuginfod library, bug #754753
+ --without-debuginfod
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
)
echo ./configure "${myconf[@]}"
"${S}"/configure "${myconf[@]}" || die
diff --git a/sys-devel/binutils/files/binutils-2.35.1-cet.patch b/sys-devel/binutils/files/binutils-2.35.1-cet.patch
new file mode 100644
index 00000000..7477ff90
--- /dev/null
+++ b/sys-devel/binutils/files/binutils-2.35.1-cet.patch
@@ -0,0 +1,103 @@
+https://bugs.gentoo.org/771765
+https://sourceware.org/PR27397
+
+On i586-like CPUs endbr32 added by -Wl,-z,ibt,-z,shstk
+generates crashing binaries and causes ./configure failure.
+
+From 847e4b3207f97762dc641db8d3b188081c3370c3 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 12 Feb 2021 16:30:23 -0800
+Subject: [PATCH] GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs
+
+---
+ config/cet.m4 | 19 ++++++++++++++++---
+ libiberty/configure | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+diff --git a/config/cet.m4 b/config/cet.m4
+index c67fb4f35b6..7718be1afe8 100644
+--- a/config/cet.m4
++++ b/config/cet.m4
+@@ -130,6 +130,18 @@ fi
+ if test x$may_have_cet = xyes; then
+ if test x$cross_compiling = xno; then
+ AC_TRY_RUN([
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++ ],
++ [have_multi_byte_nop=yes],
++ [have_multi_byte_nop=no])
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ AC_TRY_RUN([
+ static void
+ foo (void)
+ {
+@@ -155,9 +167,10 @@ main ()
+ bar ();
+ return 0;
+ }
+- ],
+- [have_cet=no],
+- [have_cet=yes])
++ ],
++ [have_cet=no],
++ [have_cet=yes])
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ fi
+diff --git a/libiberty/configure b/libiberty/configure
+index 160b8c9e8b1..29a690d44fc 100755
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -5539,6 +5539,34 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ have_multi_byte_nop=yes
++else
++ have_multi_byte_nop=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ if test "$cross_compiling" = yes; then :
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "cannot run test program while cross compiling
++See \`config.log' for more details" "$LINENO" 5; }
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
+ static void
+ foo (void)
+ {
+@@ -5575,6 +5603,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+ fi
+--
+2.29.2
+
diff --git a/sys-devel/binutils/files/binutils-2.35.2-powerpc-tests.patch b/sys-devel/binutils/files/binutils-2.35.2-powerpc-tests.patch
new file mode 100644
index 00000000..711194b1
--- /dev/null
+++ b/sys-devel/binutils/files/binutils-2.35.2-powerpc-tests.patch
@@ -0,0 +1,136 @@
+From: Alan Modra <amodra@gmail.com>
+Date: Mon, 16 Nov 2020 22:08:05 +0000 (+1030)
+Subject: PR26882, --enable-textrel-check=warning test failures on powerpc
+X-Git-Tag: binutils-2_36~578
+X-Git-Url: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff_plain;h=7cc340055d3993a25ded914aef88f784f16d46bc;hp=6f2643dbd2192e6fff77a5e6fec5141d209fd7d0
+
+PR26882, --enable-textrel-check=warning test failures on powerpc
+
+ PR 26882
+ * testsuite/ld-powerpc/dotsym3.d: Add "-z notext" to ld options.
+ * testsuite/ld-powerpc/dotsym4.d: Likewise.
+ * testsuite/ld-powerpc/ppc476-shared.d: Likewise.
+ * testsuite/ld-powerpc/ppc476-shared2.d: Likewise.
+ * testsuite/ld-powerpc/powerpc.exp: Likewise for various tests.
+ * testsuite/ld-undefined/weak-fundef.s: Add BLPLT variant.
+ * testsuite/ld-undefined/weak-undef.exp: Define BLPLT for ppc32.
+---
+
+diff --git a/ld/testsuite/ld-powerpc/dotsym3.d b/ld/testsuite/ld-powerpc/dotsym3.d
+index fac2f8ec732..215a9c2a6c1 100644
+--- a/ld/testsuite/ld-powerpc/dotsym3.d
++++ b/ld/testsuite/ld-powerpc/dotsym3.d
+@@ -1,7 +1,7 @@
+ #source: nodotsym.s
+ #source: dotsymref.s
+ #as: -a64
+-#ld: -melf64ppc -Ttext=0x1000 -shared
++#ld: -melf64ppc -Ttext=0x1000 -shared -z notext
+ #objdump: -dR
+
+ .*: file format .*
+diff --git a/ld/testsuite/ld-powerpc/dotsym4.d b/ld/testsuite/ld-powerpc/dotsym4.d
+index fdd92f3da76..d774e83bcf6 100644
+--- a/ld/testsuite/ld-powerpc/dotsym4.d
++++ b/ld/testsuite/ld-powerpc/dotsym4.d
+@@ -1,7 +1,7 @@
+ #source: dotsymref.s
+ #source: nodotsym.s
+ #as: -a64
+-#ld: -melf64ppc -Ttext=0x1000 -shared
++#ld: -melf64ppc -Ttext=0x1000 -shared -z notext
+ #objdump: -dR
+
+ .*: file format .*
+diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
+index 74af28d7421..2cbefb841c2 100644
+--- a/ld/testsuite/ld-powerpc/powerpc.exp
++++ b/ld/testsuite/ld-powerpc/powerpc.exp
+@@ -99,7 +99,7 @@ proc supports_ppc64 { } {
+ # readelf: Apply readelf options on result. Compare with regex (last arg).
+
+ set ppcelftests {
+- {"Reloc section order" "-melf32ppc -shared -z nocombreloc" "" "-a32" {reloc.s}
++ {"Reloc section order" "-melf32ppc -shared -z nocombreloc -z notext" "" "-a32" {reloc.s}
+ {{objdump -hw reloc.d}} "reloc.so"}
+ {"APUinfo section processing" "-melf32ppc" ""
+ "-a32 -me500" {apuinfo1.s apuinfo-nul.s apuinfo2.s}
+@@ -134,7 +134,7 @@ set ppcelftests {
+ {{readelf -WSsrl tlsexe32no.r} {objdump -dr tlsexe32no.d}
+ {objdump -sj.got tlsexe32no.g} {objdump -sj.tdata tlsexe32.t}}
+ "tlsexe32no"}
+- {"TLS32 shared" "-shared -melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o" "" "" {}
++ {"TLS32 shared" "-shared -melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv -z notext tmpdir/tls32.o" "" "" {}
+ {{readelf -WSsrl tlsso32.r} {objdump -dr tlsso32.d}
+ {objdump -sj.got tlsso32.g} {objdump -sj.tdata tlsso32.t}}
+ "tls32.so"}
+@@ -202,7 +202,7 @@ set ppc64elftests {
+ {{readelf -WSsrl tlsexeno.r} {objdump -dr tlsexeno.d}
+ {objdump -sj.got tlsexeno.g} {objdump -sj.tdata tlsexe.t}}
+ "tlsexeno"}
+- {"TLS shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o" "" "" {}
++ {"TLS shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv -z notext tmpdir/tls.o" "" "" {}
+ {{readelf -WSsrl tlsso.r} {objdump -dr tlsso.d}
+ {objdump -sj.got tlsso.g} {objdump -sj.tdata tlsso.t}}
+ "tls.so"}
+@@ -229,7 +229,7 @@ set ppc64elftests {
+ {{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetocno.d}
+ {objdump -sj.got tlsexetocno.g} {objdump -sj.tdata tlsexetoc.t}}
+ "tlsexetocno"}
+- {"TLSTOC shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o" "" "" {}
++ {"TLSTOC shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv -z notext tmpdir/tlstoc.o" "" "" {}
+ {{readelf -WSsrl tlstocso.r} {objdump -dr tlstocso.d}
+ {objdump -sj.got tlstocso.g} {objdump -sj.tdata tlstocso.t}}
+ "tlstoc.so"}
+diff --git a/ld/testsuite/ld-powerpc/ppc476-shared.d b/ld/testsuite/ld-powerpc/ppc476-shared.d
+index 7953cb44e25..3b2cc8a155c 100644
+--- a/ld/testsuite/ld-powerpc/ppc476-shared.d
++++ b/ld/testsuite/ld-powerpc/ppc476-shared.d
+@@ -1,6 +1,6 @@
+ #source: ppc476-shared.s
+ #as: -a32
+-#ld: -melf32ppc -q -shared -z common-page-size=0x10000 --ppc476-workaround -T ppc476-shared.lnk
++#ld: -melf32ppc -q -shared -z common-page-size=0x10000 -z notext --ppc476-workaround -T ppc476-shared.lnk
+ #objdump: -dr
+ #target: powerpc*-*-*
+
+diff --git a/ld/testsuite/ld-powerpc/ppc476-shared2.d b/ld/testsuite/ld-powerpc/ppc476-shared2.d
+index 26a5c41f988..48917fd4d92 100644
+--- a/ld/testsuite/ld-powerpc/ppc476-shared2.d
++++ b/ld/testsuite/ld-powerpc/ppc476-shared2.d
+@@ -1,6 +1,6 @@
+ #source: ppc476-shared.s
+ #as: -a32
+-#ld: -melf32ppc -shared -z common-page-size=0x10000 --ppc476-workaround -T ppc476-shared.lnk
++#ld: -melf32ppc -shared -z common-page-size=0x10000 -z notext --ppc476-workaround -T ppc476-shared.lnk
+ #objdump: -R
+ #target: powerpc*-*-*
+
+diff --git a/ld/testsuite/ld-undefined/weak-fundef.s b/ld/testsuite/ld-undefined/weak-fundef.s
+index 2c20f799417..de8f641b6c2 100644
+--- a/ld/testsuite/ld-undefined/weak-fundef.s
++++ b/ld/testsuite/ld-undefined/weak-fundef.s
+@@ -5,6 +5,9 @@
+ bl undef_weak_fun
+ nop
+ .endif
++ .ifdef BLPLT
++ bl undef_weak_fun@plt
++ .endif
+ .ifdef CALLPLT
+ call undef_weak_fun@plt
+ .endif
+diff --git a/ld/testsuite/ld-undefined/weak-undef.exp b/ld/testsuite/ld-undefined/weak-undef.exp
+index 50c8e1483e3..14b6774c5bc 100644
+--- a/ld/testsuite/ld-undefined/weak-undef.exp
++++ b/ld/testsuite/ld-undefined/weak-undef.exp
+@@ -105,7 +105,8 @@ set asflags ""
+ switch -glob $target_triplet {
+ aarch64* -
+ arm* -
+- powerpc* { set asflags "--defsym BL=1" }
++ powerpc64* { set asflags "--defsym BL=1" }
++ powerpc* { set asflags "--defsym BLPLT=1" }
+ hppa* { set asflags "--defsym HPPA=1" }
+ i\[3-7\]86* -
+ x86_64* { set asflags "--defsym CALLPLT=1" }
diff --git a/sys-libs/binutils-libs/Manifest b/sys-libs/binutils-libs/Manifest
index 49d69a0b..4ac4c002 100644
--- a/sys-libs/binutils-libs/Manifest
+++ b/sys-libs/binutils-libs/Manifest
@@ -1,2 +1,2 @@
-DIST binutils-2.35.1-patches-2.tar.xz 72236 BLAKE2B 584cb3edbda28c69171ed64e941535f992150d86f25201cadd07b63daaa36bf76b07dc0aa8a4837da17d1672feb47a7b15f83efdeec5409e695965a10142147a SHA512 b704ebe82c4402f058f9c96991a89256a6b369d28f844bf020ed2c77766894d9a2ca0596cd609de7b389fa8cd52bfab674b6deb10ea2096e50aa57921be2083e
-DIST binutils-2.35.1.tar.xz 22031720 BLAKE2B d3468da90b75e9b5fa7fbd64d3fdb0a4bc445e4cb7da5ae058f73a1e9d948b3e9438bc9f1b5b351db369b76a25960c9c1f58f828fd2c7646f555de45fa3c052b SHA512 94ff72708403413b70b247f3af4099ebaa882b6659249869f1ed9941a0f1912e313f08357d470f9fd2359e7f5e5b0eb86285e5eaf883fa8187789d6b1bd304eb
+DIST binutils-2.35.2-patches-1.tar.xz 11836 BLAKE2B 0141349c9618992d1ab1e0309f7ed8fbc43b60a58be1dfed05eae8a8fee857241d9e112ae673da6fc9778767675f536ece818cb85567367bb1c8f87a0693623f SHA512 35de5f227c745c5fb800784fe657b2a6216faf43e2498e8481e7b0dc79b0d2f86b3b6a10b896e060319a77a51c61d2e1b7a951ae962b3a6ef8c1a2a261d9bb6c
+DIST binutils-2.35.2.tar.xz 22056908 BLAKE2B 9c392e0db2b482442f9476f30bd80cf2796321cbf7be79cf21af7bef167b6074c4ae009dcf9b438d2f2f4a23381c935176b2cfa85de1a526ab46e0fd844a7ca5 SHA512 9974ede5978d32e0d68fef23da48fa00bd06b0bff7ec45b00ca075c126d6bbe0cf2defc03ecc3f17bc6cc85b64271a13009c4049d7ba17de26e84e3a6e2c0348
diff --git a/sys-libs/binutils-libs/binutils-libs-2.35.1-r10.ebuild b/sys-libs/binutils-libs/binutils-libs-2.35.2-r10.ebuild
index 2ea27567..cf18b9ed 100644
--- a/sys-libs/binutils-libs/binutils-libs-2.35.1-r10.ebuild
+++ b/sys-libs/binutils-libs/binutils-libs-2.35.2-r10.ebuild
@@ -1,12 +1,12 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
-PATCH_VER=2
+PATCH_VER=1
PATCH_DEV=dilfridge
-inherit eutils libtool toolchain-funcs multilib-minimal
+inherit libtool toolchain-funcs multilib-minimal
MY_PN="binutils"
MY_P="${MY_PN}-${PV}"
@@ -20,8 +20,8 @@ SRC_URI="mirror://gnu/binutils/${MY_P}.tar.xz
LICENSE="|| ( GPL-3 LGPL-3 )"
SLOT="0/${PV}"
-IUSE="64-bit-bfd multitarget nls static-libs"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="64-bit-bfd cet multitarget nls static-libs"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
BDEPEND="nls? ( sys-devel/gettext )"
DEPEND="sys-libs/zlib[${MULTILIB_USEDEP}]"
@@ -30,6 +30,8 @@ RDEPEND="${DEPEND}
>=sys-devel/binutils-config-5
"
+PATCHES=("${FILESDIR}"/${PN}-2.35.1-cet.patch)
+
S="${WORKDIR}/${MY_P}"
MULTILIB_WRAPPED_HEADERS=(
@@ -85,6 +87,15 @@ multilib_src_configure() {
# USE=multitarget change size of global arrays
# USE=64-bit-bfd changes data structures of exported API
--with-extra-soversion-suffix=gentoo-${CATEGORY}-${PN}-$(usex multitarget mt st)-$(usex 64-bit-bfd 64 def)
+
+ # avoid automagic dependency on (currently prefix) systems
+ # systems with debuginfod library, bug #754753
+ --without-debuginfod
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
)
# mips can't do hash-style=gnu ...
@@ -98,6 +109,12 @@ multilib_src_configure() {
&& myconf+=( --without-included-gettext ) \
|| myconf+=( --disable-nls )
+ if [[ ${CHOST} == *-darwin* ]] && use nls ; then
+ # fix underlinking in opcodes
+ sed -i -e 's/@SHARED_LDFLAGS@/@SHARED_LDFLAGS@ -lintl/' \
+ "${S}"/opcodes/Makefile.in || die
+ fi
+
ECONF_SOURCE=${S} \
econf "${myconf[@]}"
diff --git a/sys-libs/binutils-libs/files/binutils-libs-2.35.1-cet.patch b/sys-libs/binutils-libs/files/binutils-libs-2.35.1-cet.patch
new file mode 100644
index 00000000..7477ff90
--- /dev/null
+++ b/sys-libs/binutils-libs/files/binutils-libs-2.35.1-cet.patch
@@ -0,0 +1,103 @@
+https://bugs.gentoo.org/771765
+https://sourceware.org/PR27397
+
+On i586-like CPUs endbr32 added by -Wl,-z,ibt,-z,shstk
+generates crashing binaries and causes ./configure failure.
+
+From 847e4b3207f97762dc641db8d3b188081c3370c3 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 12 Feb 2021 16:30:23 -0800
+Subject: [PATCH] GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs
+
+---
+ config/cet.m4 | 19 ++++++++++++++++---
+ libiberty/configure | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+diff --git a/config/cet.m4 b/config/cet.m4
+index c67fb4f35b6..7718be1afe8 100644
+--- a/config/cet.m4
++++ b/config/cet.m4
+@@ -130,6 +130,18 @@ fi
+ if test x$may_have_cet = xyes; then
+ if test x$cross_compiling = xno; then
+ AC_TRY_RUN([
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++ ],
++ [have_multi_byte_nop=yes],
++ [have_multi_byte_nop=no])
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ AC_TRY_RUN([
+ static void
+ foo (void)
+ {
+@@ -155,9 +167,10 @@ main ()
+ bar ();
+ return 0;
+ }
+- ],
+- [have_cet=no],
+- [have_cet=yes])
++ ],
++ [have_cet=no],
++ [have_cet=yes])
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+ fi
+diff --git a/libiberty/configure b/libiberty/configure
+index 160b8c9e8b1..29a690d44fc 100755
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -5539,6 +5539,34 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
++int
++main ()
++{
++ asm ("endbr32");
++ return 0;
++}
++
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++ have_multi_byte_nop=yes
++else
++ have_multi_byte_nop=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++ have_cet=no
++ if test x$have_multi_byte_nop = xyes; then
++ if test "$cross_compiling" = yes; then :
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "cannot run test program while cross compiling
++See \`config.log' for more details" "$LINENO" 5; }
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++
+ static void
+ foo (void)
+ {
+@@ -5575,6 +5603,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+
++ fi
+ if test x$enable_cet = xno -a x$have_cet = xyes; then
+ as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+ fi
+--
+2.29.2
+