summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/binutils/APKBUILD91
-rw-r--r--system/binutils/BTS-170.patch12
-rw-r--r--system/binutils/BTS-196.patch81
-rw-r--r--system/binutils/CVE-2019-12972.patch33
-rw-r--r--system/binutils/CVE-2019-14250.patch25
-rw-r--r--system/binutils/CVE-2019-14444.patch28
-rw-r--r--system/binutils/CVE-2019-17450.patch87
-rw-r--r--system/binutils/CVE-2019-17451.patch38
-rw-r--r--system/binutils/CVE-2019-9070-and-9071.patch128
-rw-r--r--system/binutils/CVE-2019-9073.patch31
-rw-r--r--system/binutils/CVE-2019-9074.patch49
-rw-r--r--system/binutils/CVE-2019-9075.patch96
-rw-r--r--system/binutils/CVE-2019-9077.patch33
-rw-r--r--system/binutils/arm-pie.patch24
-rw-r--r--system/binutils/binutils-ld-fix-static-linking.patch6
-rw-r--r--system/binutils/disable-gnu-mbind.patch32
-rw-r--r--system/binutils/disable-ifunc-tests.patch13
-rw-r--r--system/binutils/disable-mbind2b.patch20
-rw-r--r--system/binutils/disable-pr26580-test.patch20
-rw-r--r--system/binutils/disable-preinit-array-tests.patch6
-rw-r--r--system/binutils/disable-relr-glibc-tests.patch19
-rw-r--r--system/binutils/disable-sframe-tests.patch17
-rw-r--r--system/binutils/disable-textrel-test.patch43
-rw-r--r--system/binutils/fix-deprecated-egrep-usage.patch240
-rw-r--r--system/binutils/fix-pr28158-test.patch30
-rw-r--r--system/binutils/musl-preinit-array.patch35
-rw-r--r--system/binutils/musl-versioned-syms.patch19
-rw-r--r--system/binutils/ppc32-pic-required.patch23
-rw-r--r--system/binutils/ppc64-abiv2-addr2line.patch15
-rw-r--r--system/binutils/pr25749-test-size.patch26
-rw-r--r--system/binutils/remove-pr19553c-test.patch20
-rw-r--r--system/binutils/remove-pr19719-test.patch4
-rw-r--r--system/binutils/remove-pr2404-tests.patch82
-rw-r--r--system/binutils/skip-thumb-plt-musl.patch28
-rw-r--r--system/binutils/srec.patch127
-rw-r--r--system/binutils/vers-tests-eabi.patch33
-rw-r--r--system/binutils/visibility-musl.patch19
-rw-r--r--system/binutils/vsb-hammer.patch19
38 files changed, 500 insertions, 1152 deletions
diff --git a/system/binutils/APKBUILD b/system/binutils/APKBUILD
index 3399281d9..0ba167363 100644
--- a/system/binutils/APKBUILD
+++ b/system/binutils/APKBUILD
@@ -1,14 +1,10 @@
# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
pkgname=binutils
-pkgver=2.32
-pkgrel=5
+pkgver=2.41
+pkgrel=0
pkgdesc="Tools necessary to build programs"
url="https://www.gnu.org/software/binutils/"
arch="all"
-case "${CARCH}" in
- armv7) options="${options} !check"; ;; #209, #668
- ppc) options="${options} !check"; ;; # non-PIC is unsupported by musl/ppc
-esac
license="GPL-2.0+ AND GPL-3.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND LGPL-3.0+ AND BSD-3-Clause"
depends=""
makedepends_build="byacc flex texinfo"
@@ -17,25 +13,27 @@ makedepends="$makedepends_build $makedepends_host"
checkdepends="dejagnu"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz
- arm-pie.patch
binutils-ld-fix-static-linking.patch
- disable-gnu-mbind.patch
disable-ifunc-tests.patch
+ disable-mbind2b.patch
+ disable-pr26580-test.patch
disable-preinit-array-tests.patch
+ disable-relr-glibc-tests.patch
+ disable-sframe-tests.patch
+ disable-textrel-test.patch
+ fix-pr28158-test.patch
+ musl-preinit-array.patch
+ musl-versioned-syms.patch
+ ppc32-pic-required.patch
+ ppc64-abiv2-addr2line.patch
+ pr25749-test-size.patch
remove-pr2404-tests.patch
remove-pr19719-test.patch
remove-pr19553c-test.patch
- srec.patch
- CVE-2019-9070-and-9071.patch
- CVE-2019-9073.patch
- CVE-2019-9074.patch
- CVE-2019-9075.patch
- CVE-2019-9077.patch
- CVE-2019-12972.patch
- CVE-2019-14250.patch
- CVE-2019-14444.patch
- CVE-2019-17450.patch
- CVE-2019-17451.patch
+ skip-thumb-plt-musl.patch
+ vers-tests-eabi.patch
+ visibility-musl.patch
+ vsb-hammer.patch
BTS-170.patch
BTS-196.patch
fix-deprecated-egrep-usage.patch
@@ -73,9 +71,9 @@ fi
# - CVE-2019-17451
build() {
- local _sysroot=/
- local _cross_configure="--enable-install-libiberty"
- local _arch_configure=""
+ _sysroot=/
+ _cross_configure="--enable-install-libiberty"
+ _arch_configure=""
if [ "$CHOST" != "$CTARGET" ]; then
_sysroot="$CBUILDROOT"
@@ -108,6 +106,7 @@ build() {
--enable-64-bit-bfd \
--enable-plugins \
--enable-relro \
+ --enable-gprofng=no \
--disable-gold \
--enable-deterministic-archives \
$_cross_configure \
@@ -145,26 +144,28 @@ libs() {
mv "$pkgdir"/usr/lib/lib*.so "$subpkgdir"/usr/lib/
}
-sha512sums="d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a binutils-2.32.tar.xz
-2f862c473b357effe63221a47c4a34893eff50e4ab3c7b500b19754f3c7bf81ee695c35e5ce16f6c6fcd75696d270d04f282ae4c7d32b42a61b667ff1eccce8f arm-pie.patch
-ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
-d378fdf1964f8f2bd0b1e62827ac5884bdf943aa435ec89c29fc84bb045d406b733fffaff8fdd8bd1cba8ddea7701c4cf6ccf3ed76a8a3df9c72b447737575a6 disable-gnu-mbind.patch
-474ab24097bbb5b24433620549e5234fe65c547824c1342f693c718ffbc81e2d968259cce2d650b55200dd1ec89da207ea2db10c551cd9941285c4600b4297b2 disable-ifunc-tests.patch
-3537752e63cef0b5ef136d003ff7e814ba66b12624d817430112d0f291a792e8960fa69a78036f526af835441b3ee483d6a53d55c7b3dd8ee96f0399682dbcbe disable-preinit-array-tests.patch
-32ab4215669c728648179c124632467573a3d4675e79f0f0d221c22eb2ec1ca5488b79910bd09142f90a1e0d0b81d99ca4846297f4f9561f158db63745facb66 remove-pr2404-tests.patch
-a193d1fa7f42d91915960460a15e4d24e0df529d81e23014bcf45d283fae76bb7b300fdcb0d0a9d521cdb9137322efa1dc357112596d6ae7a7fd05988ac359b9 remove-pr19719-test.patch
-39ef9c76dd5db6b15f11ffa8061f7ca844fb79c3fb9879c3b1466eef332a28b833597c87003ab9f260b1b85023fae264659088aee27cad7e5aa77b2d58b9a3f6 remove-pr19553c-test.patch
-f720b3356b88e366c52941da056e543e4b42bc77f012e5b0290f79e15b0a31d855989ad01920680507a9df0544e5b8e26d0cf8d6f22fbdeb874af31cff4c16d3 srec.patch
-f52d21f194c2d7dbdc56e93636d3228034ee1718b457e5a5ce289bba2454155846d1ff6ea8530d11a901a85c9af945360bc17cda9e7370c36362aa6c762154c7 CVE-2019-9070-and-9071.patch
-032fed723b610fe06e210e2ebee8d24962ecad1dc69d98d38e95f768c9ed64cb991158758ef71e684d6d762a30e9a852287836be2bb8a2aba27fe31d2792c0a0 CVE-2019-9073.patch
-16b4cc094a6846399e47271da6fe8d8bd8b70246e12e872fcafb85f11809b5699eddba723fbac664c062c02f9b5658ea9770e14c522e151cdea1d39e69c851dd CVE-2019-9074.patch
-a46b9211608e2f35219b95363a5ba90506742dcb9e4bd4a43915af6c0b3e74bd8339a8318dc2923c0952ef579112412cb1cf619a5f090066769a852587b27d03 CVE-2019-9075.patch
-c0f50f1a843480f29b3895c8814df9801b9f90260edbaff1831aa5738fedd07a9e6b7a79f5b6f9be34df4954dbf02feb5232ebbecc596277fc2fe63673ed347c CVE-2019-9077.patch
-9109a6ff9c55f310f86a1561fe6b404534928d402672490059bbe358f77c0c2a7f73c8b67f0a4450f00ba1776452858b63fa60cf2ec0744104a6b077e8fa3e42 CVE-2019-12972.patch
-c277202272d9883741c2530a94c6d50d55dd9d0a9efaa43a1f8c9fc7529bd45e635255c0d90035dfc5920d5387010a4259612a4d711260a95d7b3d9fa6500e4f CVE-2019-14250.patch
-0942cc1a4c5ec03e931c6ebd15c5d60eae6be48cd0a3d9b7f6356f97361226bb6d53dbdcb01b20efcca0ccaf23764730d9bbad2c1bbe2ea6ca320e43b43b311b CVE-2019-14444.patch
-4e8cbe3985ca4a7cb8954e4e03f094687985b3afec6bb14f1599665e0ab13e601b68cefdbb63e88f9dd59852036dcfee05af14014493c16c76dc38d406efc8fd CVE-2019-17450.patch
-a71a035db5e14f105b5d58ec01ad250447f6282cae04e8c931fbdbf7adf118a065c6c9be9c72a204e0f8115b19598dc52f3953ae91200d48328b58cc274939d8 CVE-2019-17451.patch
-d4543d2f77808d317d17a5f0eb9af21540ef8543fceaed4e3524213e31e058333321f3ba3b495199e3b57bfd0c4164929cf679369470389e26871b8895cb0110 BTS-170.patch
-9cc17d9fe3fc1351d1f6b4fc1c916254529f3304c95db6f4698b867eeb623210b914dc798fb837eafbad2b287b78b31c4ed5482b3151a2992864da04e1dd5fac BTS-196.patch
-2a1c66a4526e9afd2db59d560f2f1d491ea0c7741978bb75f35acfd3d883408b0374a47ce1013aad7579ed838a60820ffe34ef8cdd8ba390dca3a3244220803f fix-deprecated-egrep-usage.patch"
+sha512sums="5df45d0bd6ddabdce4f35878c041e46a92deef01e7dea5facc97fd65cc06b59abc6fba0eb454b68e571c7e14038dc823fe7f2263843e6e627b7444eaf0fe9374 binutils-2.41.tar.xz
+ced667e95bfec8909e20802cd3d734b0b179bfc9d995dd68827a471ab9a4fdc38397f3d947dcae1bf2368a73480be3f18d4ec6b757ac7fdb9ee358693cc0670f binutils-ld-fix-static-linking.patch
+ae54a3728b6e674febf130979a434f525b77f93103eef9c023647a68eaf5b607dfe264ab553d2132f46e93956959d1adf71bbd176e80a42a33329e62f6f55c3e disable-ifunc-tests.patch
+de3f50afe2b0962d1f52f154871285e9c6d7b5599b745365a8f14fd237c7b1d6a066d0d081ce67ad1317b37bae2875f27adfea52f3853d7e30003e74a84075c2 disable-mbind2b.patch
+cbbb9d62f53b1f93bb7d5728e0fe7ef0ebb18f388bc228b396e4df8ce5dd1079e0d7ca0afb2928f6f1beba30475e7f68fe345daffab3cb3ef607ca5bdd87915d disable-pr26580-test.patch
+4c8098df5c01579d1c53c0344bf5e0f1c3b11bc119da077d83e87f7d103ed958e78083f94e71b12521c5f0cb83b3dda509efadc4124bcc28b436b39245ab4603 disable-preinit-array-tests.patch
+b2d5da2705366f5919d3f8310225620493b88406b6e909ddf9bd8c9ef50f13757816ff2947eb33c1832048fd1d42c3a2593c909ee35f2fdc947f8e2df5500c7b disable-relr-glibc-tests.patch
+e8ebb984e9b13b75114c8092d1ad2d0c1b3bb59bf10e66ca250151e79844125a23f74b8c4142210c8e574785c35e0ee1df0499e0cfd6ef59e8e80d58121963e1 disable-sframe-tests.patch
+8213bc7e965b7c93e24c755e3ca47c522e3ba0d8504ec1def58fad398dd215158740164276ec8a0b48f2058c7025b5b8b6b2e16e646baf4f7dc1841d4fc5a504 disable-textrel-test.patch
+2972b86e1741866db244cd262469eaef244fc3fb0d569b58cb1ad427d31b3ffc9ccbde904e7bd78f10367a5bfe8ec7f4076253abe03edbabbb0e5894ccc20487 fix-pr28158-test.patch
+8ef144efc8c0cc71b48d7ed9444fa70906c9a4894058588e3f49c1826975675ab8091681912a15ecbed6772aa5bba31935c92abef0095548fc8a9ecaa5d26526 musl-preinit-array.patch
+ab4d03394073bb6dbd4a046637e9bf57f8b4dad163c551b0d9bb2202025b243161149c8622c2fae072c43082bbf19e15b667483831a58a5d1bc93b464763cdcc musl-versioned-syms.patch
+7b5ee15c9e5a3567cb000a4ac07699f9d0f11354cf5ee20fd375e483945fd45d0e1551f3f28bdb8ebb49355b3180cc90977e81ae0c3c210cdc689add504952a7 ppc32-pic-required.patch
+5456d4d6c1097f41e5c02d92ed83acf608eb05d912cf4d289e8f772e8eded9af2030c518b7a89133ef3905d084fc5354ec140e472c22fe11c6802c1e9a4237e7 ppc64-abiv2-addr2line.patch
+c76733b76daf5d4af17464777cb753c68063fdc6040d943962c78182ca65f46a2744d4437f6cc3b8ff5f09ff8c0f582690b7dc89eaaf4da48f9300a81b8b3803 pr25749-test-size.patch
+b97aa6fd5a0b5b71dadd7d9925a0642681ce96bb98348a01c5778e4e6570bd2e135ff0252dec6568e19df329fb1a36bcf495d332c0207573fe2e6e5842283d27 remove-pr2404-tests.patch
+ac8d30f5af82653242355d7bb0835823ea474bc6d349df4a2e6db91d90f8f80ccab1ff4ede6734af76e79da2e083a1a90cb9ae0631e3d62d89bc5f5a57c24c92 remove-pr19719-test.patch
+06f9df891a4ae0e9f6f8b3282d3691ede7cc0f08d63bf722f942f3c94dd4d7f3907b7bb5a8087e63639569e61aed6c39b5f5da7ad6566e7ef278524aa32ada63 remove-pr19553c-test.patch
+bdfc92cdd6c31a68e09daf71e3c45900158f8222832bda14cb2f12d9d693e6f19fe00dd29a7af9850bf0a19afe6ef421a690195f1a4e96d3cc76370f1e3bd399 skip-thumb-plt-musl.patch
+52f250970ba6814a7a992f6ad4a7c8bfbc9b5f0a0c422c920edf8b6c3dfbc353d13be940483bbbce1bfc543572c2abb06015df61a68a640774b827810d0dde6b vers-tests-eabi.patch
+075565f9bc85c0fc4bd36c7a848f6b876b71fbbe0f572b5c21961687ab4e2cd00c784fba09fe92b214c4b1df871ebd6409e6c93dde5a0a6c1ef6e41a30b24520 visibility-musl.patch
+55bdb08f93563449b170ba8623cd7d4409c8f22abb15fca23bc87f23cc43cd580fa149e68271e65fdf2c29ddb0a15cd78d6f0de1a50332fdc026ea1b7d0ec7b8 vsb-hammer.patch
+c62365110dd0a550e55f1445b197f1f968849b1079439cda0d44778772964779b4ab1142ccc662ba75ebb040e09ef4b4bfc253f4632db24ed783155be2f5f3b1 BTS-170.patch
+ab7d0c1fa74862bf9364d5e2228200054a2c5c4351c979dc7a9850f630d74034edffba740b468e009c5419a3cec110322364303f8af28dcdbfbe672c3c16f450 BTS-196.patch
+95f2063ecb902148e53603211452ca21d4dec215c32a07c2eebc5881dbdc7cba34a7a49177fedf4db1d7d8542708af673a31930fd7d49a6a2eb00b47dbe6eeb9 fix-deprecated-egrep-usage.patch"
diff --git a/system/binutils/BTS-170.patch b/system/binutils/BTS-170.patch
index daca64319..c0c02dbc9 100644
--- a/system/binutils/BTS-170.patch
+++ b/system/binutils/BTS-170.patch
@@ -4,9 +4,9 @@ lea is being emitted instead of mov.
https://bts.adelielinux.org/show_bug.cgi?id=170
https://bts.adelielinux.org/show_bug.cgi?id=196
---- binutils-2.32/ld/testsuite/ld-x86-64/no-plt.exp 2019-01-19 10:01:34.000000000 -0600
-+++ binutils-2.32/ld/testsuite/ld-x86-64/no-plt.exp 2019-09-11 17:21:27.232257151 -0500
-@@ -100,15 +100,6 @@ run_cc_link_tests [list \
+--- binutils-2.41/ld/testsuite/ld-x86-64/no-plt.exp 2019-01-19 10:01:34.000000000 -0600
++++ binutils-2.41/ld/testsuite/ld-x86-64/no-plt.exp 2019-09-11 17:21:27.232257151 -0500
+@@ -97,15 +97,6 @@ run_cc_link_tests [list \
"no-plt-1c" \
] \
[list \
@@ -22,9 +22,9 @@ https://bts.adelielinux.org/show_bug.cgi?id=196
"No PLT (PIE 1e)" \
"-pie tmpdir/no-plt-check1.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1.o" \
---- binutils-2.32/ld/testsuite/ld-i386/no-plt.exp 2019-01-19 10:01:33.000000000 -0600
-+++ binutils-2.32/ld/testsuite/ld-i386/no-plt.exp 2019-09-11 18:03:48.012302603 -0500
-@@ -102,15 +102,6 @@ run_cc_link_tests [list \
+--- binutils-2.41/ld/testsuite/ld-i386/no-plt.exp 2019-01-19 10:01:33.000000000 -0600
++++ binutils-2.41/ld/testsuite/ld-i386/no-plt.exp 2019-09-11 18:03:48.012302603 -0500
+@@ -99,15 +99,6 @@ run_cc_link_tests [list \
"no-plt-1c" \
] \
[list \
diff --git a/system/binutils/BTS-196.patch b/system/binutils/BTS-196.patch
index 08316d279..d442f5921 100644
--- a/system/binutils/BTS-196.patch
+++ b/system/binutils/BTS-196.patch
@@ -1,75 +1,8 @@
https://bts.adelielinux.org/show_bug.cgi?id=196
---- binutils-2.32/ld/testsuite/ld-i386/i386.exp 2019-01-19 10:01:33.000000000 -0600
-+++ binutils-2.32/ld/testsuite/ld-i386/i386.exp 2019-09-17 13:47:29.921108280 -0500
-@@ -1035,23 +1035,6 @@ if { [isnative]
- "pr18900.out" \
- ] \
- [list \
-- "Run pr19031" \
-- "$NOPIE_LDFLAGS tmpdir/pr19031.so" \
-- "-Wa,-mx86-used-note=yes" \
-- { pr19031b.S pr19031c.c } \
-- "pr19031" \
-- "pr19031.out" \
-- "$NOPIE_CFLAGS" \
-- ] \
-- [list \
-- "Run got1" \
-- "$NOPIE_LDFLAGS tmpdir/got1d.so" \
-- "-Wa,-mx86-used-note=yes" \
-- { got1a.S got1b.c got1c.c } \
-- "got1" \
-- "got1.out" \
-- ] \
-- [list \
- "Run property 1" \
- "" \
- "-Wa,-mx86-used-note=yes" \
-@@ -1159,8 +1142,6 @@ if { [isnative]
- ]
-
- undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
-- undefined_weak "-fPIE" "$NOPIE_LDFLAGS"
-- undefined_weak "-fPIE" "-pie"
- undefined_weak "-fPIE" "-z nodynamic-undefined-weak $NOPIE_LDFLAGS"
- undefined_weak "-fPIE" "-pie -z nodynamic-undefined-weak"
- }
-@@ -1327,15 +1308,6 @@ if { [isnative]
- "$NOPIE_CFLAGS" \
- ] \
- [list \
-- "Run pr22001-1" \
-- "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed tmpdir/pr22001-1.so" \
-- "-Wa,-mx86-used-note=yes" \
-- { pr22001-1b.c } \
-- "pr22001-1" \
-- "pass.out" \
-- "$NOPIE_CFLAGS" \
-- ] \
-- [list \
- "Run pr22001-1 (PIE 1)" \
- "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed tmpdir/pr22001-1.so" \
- "-Wa,-mx86-used-note=yes" \
-@@ -1370,15 +1342,6 @@ if { [isnative]
- "-fPIC" \
- ] \
- [list \
-- "Run pr21997-1" \
-- "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/pr21997-1.so" \
-- "-Wa,-mx86-used-note=yes" \
-- { pr21997-1b.c } \
-- "pr21997-1" \
-- "pass.out" \
-- "$NOPIE_CFLAGS" \
-- ] \
-- [list \
- "Run pr21997-1 (PIC 1)" \
- "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/pr21997-1.so" \
- "-Wa,-mx86-used-note=yes" \
---- binutils-2.32/ld/testsuite/ld-i386/no-plt.exp 2019-09-17 13:51:35.771111471 -0500
-+++ binutils-2.32/ld/testsuite/ld-i386/no-plt.exp 2019-09-17 14:00:48.581118647 -0500
-@@ -66,69 +66,6 @@ run_cc_link_tests [list \
+--- binutils-2.41/ld/testsuite/ld-i386/no-plt.exp 2019-09-17 13:51:35.771111471 -0500
++++ binutils-2.41/ld/testsuite/ld-i386/no-plt.exp 2019-09-17 14:00:48.581118647 -0500
+@@ -63,69 +63,6 @@ run_cc_link_tests [list \
"libno-plt-1a.so" \
] \
[list \
@@ -139,7 +72,7 @@ https://bts.adelielinux.org/show_bug.cgi?id=196
"No PLT (dynamic 1h)" \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
-@@ -146,15 +83,6 @@ run_cc_link_tests [list \
+@@ -143,15 +80,6 @@ run_cc_link_tests [list \
{{readelf -Wr no-plt-1i.rd} {objdump -dwrj.text no-plt-1i.dd}} \
"no-plt-1i" \
] \
@@ -155,7 +88,7 @@ https://bts.adelielinux.org/show_bug.cgi?id=196
]
run_ld_link_exec_tests [list \
-@@ -168,24 +96,6 @@ run_ld_link_exec_tests [list \
+@@ -165,24 +93,6 @@ run_ld_link_exec_tests [list \
"pass.out" \
] \
[list \
@@ -180,7 +113,7 @@ https://bts.adelielinux.org/show_bug.cgi?id=196
"No PLT (static 1d)" \
"-static tmpdir/no-plt-check1a.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1a.o" \
-@@ -204,24 +114,6 @@ run_ld_link_exec_tests [list \
+@@ -201,24 +111,6 @@ run_ld_link_exec_tests [list \
"pass.out" \
] \
[list \
@@ -205,7 +138,7 @@ https://bts.adelielinux.org/show_bug.cgi?id=196
"No PLT (dynamic 1h)" \
"$NOPIE_LDFLAGS tmpdir/no-plt-check1b.o tmpdir/no-plt-main1.o \
tmpdir/no-plt-func1.o tmpdir/no-plt-extern1b.o" \
-@@ -239,15 +131,6 @@ run_ld_link_exec_tests [list \
+@@ -236,15 +128,6 @@ run_ld_link_exec_tests [list \
"no-plt-1i" \
"pass.out" \
] \
diff --git a/system/binutils/CVE-2019-12972.patch b/system/binutils/CVE-2019-12972.patch
deleted file mode 100644
index 82b41c014..000000000
--- a/system/binutils/CVE-2019-12972.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 890f750a3b053532a4b839a2dd6243076de12031 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Fri, 21 Jun 2019 11:51:38 +0930
-Subject: [PATCH] PR24689, string table corruption
-
-The testcase in the PR had a e_shstrndx section of type SHT_GROUP.
-hdr->contents were initialized by setup_group rather than being read
-from the file, thus last byte was not zero and string dereference ran
-off the end of the buffer.
-
- PR 24689
- * elfcode.h (elf_object_p): Check type of e_shstrndx section.
----
- bfd/elfcode.h | 3 ++-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/bfd/elfcode.h b/bfd/elfcode.h
-index a0487b0..5180f79 100644
---- a/bfd/elfcode.h
-+++ b/bfd/elfcode.h
-@@ -754,7 +754,8 @@ elf_object_p (bfd *abfd)
- /* A further sanity check. */
- if (i_ehdrp->e_shnum != 0)
- {
-- if (i_ehdrp->e_shstrndx >= elf_numsections (abfd))
-+ if (i_ehdrp->e_shstrndx >= elf_numsections (abfd)
-+ || i_shdrp[i_ehdrp->e_shstrndx].sh_type != SHT_STRTAB)
- {
- /* PR 2257:
- We used to just goto got_wrong_format_error here
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-14250.patch b/system/binutils/CVE-2019-14250.patch
deleted file mode 100644
index fedc4fa7f..000000000
--- a/system/binutils/CVE-2019-14250.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Author: marxin
-Date: Tue Jul 23 07:33:32 2019 UTC
-https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=273718
-
-libiberty: Check zero value shstrndx in simple-object-elf.c
-
---- trunk/libiberty/simple-object-elf.c 2019/07/23 07:31:50 273717
-+++ trunk/libiberty/simple-object-elf.c 2019/07/23 07:33:32 273718
-@@ -548,7 +548,15 @@
- XDELETE (eor);
- return NULL;
- }
--
-+
-+ if (eor->shstrndx == 0)
-+ {
-+ *errmsg = "invalid ELF shstrndx == 0";
-+ *err = 0;
-+ XDELETE (eor);
-+ return NULL;
-+ }
-+
- return (void *) eor;
- }
-
diff --git a/system/binutils/CVE-2019-14444.patch b/system/binutils/CVE-2019-14444.patch
deleted file mode 100644
index 43d4e2a91..000000000
--- a/system/binutils/CVE-2019-14444.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e17869db99195849826eaaf5d2d0eb2cfdd7a2a7 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Mon, 5 Aug 2019 10:40:35 +0100
-Subject: [PATCH] Catch potential integer overflow in readelf when processing
- corrupt binaries.
-
- PR 24829
- * readelf.c (apply_relocations): Catch potential integer overflow
- whilst checking reloc location against section size.
----
- binutils/readelf.c | 2 +-
-
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index b896ad9..e785fde 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -13366,7 +13366,7 @@ apply_relocations (Filedata * filedata,
- }
-
- rloc = start + rp->r_offset;
-- if ((rloc + reloc_size) > end || (rloc < start))
-+ if (rloc >= end || (rloc + reloc_size) > end || (rloc < start))
- {
- warn (_("skipping invalid relocation offset 0x%lx in section %s\n"),
- (unsigned long) rp->r_offset,
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-17450.patch b/system/binutils/CVE-2019-17450.patch
deleted file mode 100644
index edc0e94df..000000000
--- a/system/binutils/CVE-2019-17450.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 063c511bd79281f33fd33f0964541a73511b9e2b Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 9 Oct 2019 00:07:29 +1030
-Subject: [PATCH] PR25078, stack overflow in function find_abstract_instance
-
- PR 25078
- * dwarf2.c (find_abstract_instance): Delete orig_info_ptr, add
- recur_count. Error on recur_count reaching 100 rather than
- info_ptr matching orig_info_ptr. Adjust calls.
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
-index 575b082..d39f4fd 100644
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -2812,13 +2812,13 @@ static bfd_boolean comp_unit_maybe_decode_line_info (struct comp_unit *,
- struct dwarf2_debug *);
-
- static bfd_boolean
--find_abstract_instance (struct comp_unit * unit,
-- bfd_byte * orig_info_ptr,
-- struct attribute * attr_ptr,
-- const char ** pname,
-- bfd_boolean * is_linkage,
-- char ** filename_ptr,
-- int * linenumber_ptr)
-+find_abstract_instance (struct comp_unit *unit,
-+ struct attribute *attr_ptr,
-+ unsigned int recur_count,
-+ const char **pname,
-+ bfd_boolean *is_linkage,
-+ char **filename_ptr,
-+ int *linenumber_ptr)
- {
- bfd *abfd = unit->abfd;
- bfd_byte *info_ptr;
-@@ -2829,6 +2829,14 @@ find_abstract_instance (struct comp_unit * unit,
- struct attribute attr;
- const char *name = NULL;
-
-+ if (recur_count == 100)
-+ {
-+ _bfd_error_handler
-+ (_("DWARF error: abstract instance recursion detected"));
-+ bfd_set_error (bfd_error_bad_value);
-+ return FALSE;
-+ }
-+
- /* DW_FORM_ref_addr can reference an entry in a different CU. It
- is an offset from the .debug_info section, not the current CU. */
- if (attr_ptr->form == DW_FORM_ref_addr)
-@@ -2962,15 +2970,6 @@ find_abstract_instance (struct comp_unit * unit,
- info_ptr, info_ptr_end);
- if (info_ptr == NULL)
- break;
-- /* It doesn't ever make sense for DW_AT_specification to
-- refer to the same DIE. Stop simple recursion. */
-- if (info_ptr == orig_info_ptr)
-- {
-- _bfd_error_handler
-- (_("DWARF error: abstract instance recursion detected"));
-- bfd_set_error (bfd_error_bad_value);
-- return FALSE;
-- }
- switch (attr.name)
- {
- case DW_AT_name:
-@@ -2984,7 +2983,7 @@ find_abstract_instance (struct comp_unit * unit,
- }
- break;
- case DW_AT_specification:
-- if (!find_abstract_instance (unit, info_ptr, &attr,
-+ if (!find_abstract_instance (unit, &attr, recur_count + 1,
- &name, is_linkage,
- filename_ptr, linenumber_ptr))
- return FALSE;
-@@ -3200,7 +3199,7 @@ scan_unit_for_symbols (struct comp_unit *unit)
-
- case DW_AT_abstract_origin:
- case DW_AT_specification:
-- if (!find_abstract_instance (unit, info_ptr, &attr,
-+ if (!find_abstract_instance (unit, &attr, 0,
- &func->name,
- &func->is_linkage,
- &func->file,
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-17451.patch b/system/binutils/CVE-2019-17451.patch
deleted file mode 100644
index f6af71601..000000000
--- a/system/binutils/CVE-2019-17451.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 336bfbeb1848f4b9558456fdcf283ee8a32d7fd1 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 9 Oct 2019 10:47:13 +1030
-Subject: [PATCH] PR25070, SEGV in function _bfd_dwarf2_find_nearest_line
-
-Evil testcase with two debug info sections, with sizes of 2aaaabac4ec1
-and ffffd5555453b140 result in a total size of 1. Reading the first
-section of course overflows the buffer and tramples on other memory.
-
- PR 25070
- * dwarf2.c (_bfd_dwarf2_slurp_debug_info): Catch overflow of
- total_size calculation.
-
-diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
-index d39f4fd..88aaa2d 100644
---- a/bfd/dwarf2.c
-+++ b/bfd/dwarf2.c
-@@ -4439,7 +4439,16 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
- for (total_size = 0;
- msec;
- msec = find_debug_info (debug_bfd, debug_sections, msec))
-- total_size += msec->size;
-+ {
-+ /* Catch PR25070 testcase overflowing size calculation here. */
-+ if (total_size + msec->size < total_size
-+ || total_size + msec->size < msec->size)
-+ {
-+ bfd_set_error (bfd_error_no_memory);
-+ return FALSE;
-+ }
-+ total_size += msec->size;
-+ }
-
- stash->info_ptr_memory = (bfd_byte *) bfd_malloc (total_size);
- if (stash->info_ptr_memory == NULL)
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-9070-and-9071.patch b/system/binutils/CVE-2019-9070-and-9071.patch
deleted file mode 100644
index 5f401d147..000000000
--- a/system/binutils/CVE-2019-9070-and-9071.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-Author: nickc
-Date: Wed Apr 10 14:44:47 2019 UTC
-https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=270258
-
-Fix a stack exhaustion bug in libiberty's demangler when decoding a
-pathalogically constructed mangled name.
-
-PR 89394
-* cp-demangle.c (cplus_demangle_fill_name): Reject negative
-lengths.
-(d_count_templates_scopes): Replace num_templates and num_scopes
-parameters with a struct d_print_info pointer parameter. Adjust
-body of the function accordingly. Add recursion counter and check
-that the recursion limit is not reached.
-(d_print_init): Pass dpi parameter to d_count_templates_scopes.
-Reset recursion counter afterwards, unless the recursion limit was
-reached.
-
---- trunk/libiberty/cp-demangle.c 2019/04/10 14:39:59 270257
-+++ trunk/libiberty/cp-demangle.c 2019/04/10 14:44:47 270258
-@@ -861,7 +861,7 @@
- int
- cplus_demangle_fill_name (struct demangle_component *p, const char *s, int len)
- {
-- if (p == NULL || s == NULL || len == 0)
-+ if (p == NULL || s == NULL || len <= 0)
- return 0;
- p->d_printing = 0;
- p->type = DEMANGLE_COMPONENT_NAME;
-@@ -4061,7 +4061,7 @@
- are larger than the actual numbers encountered. */
-
- static void
--d_count_templates_scopes (int *num_templates, int *num_scopes,
-+d_count_templates_scopes (struct d_print_info *dpi,
- const struct demangle_component *dc)
- {
- if (dc == NULL)
-@@ -4081,13 +4081,13 @@
- break;
-
- case DEMANGLE_COMPONENT_TEMPLATE:
-- (*num_templates)++;
-+ dpi->num_copy_templates++;
- goto recurse_left_right;
-
- case DEMANGLE_COMPONENT_REFERENCE:
- case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
- if (d_left (dc)->type == DEMANGLE_COMPONENT_TEMPLATE_PARAM)
-- (*num_scopes)++;
-+ dpi->num_saved_scopes++;
- goto recurse_left_right;
-
- case DEMANGLE_COMPONENT_QUAL_NAME:
-@@ -4152,42 +4152,42 @@
- case DEMANGLE_COMPONENT_TAGGED_NAME:
- case DEMANGLE_COMPONENT_CLONE:
- recurse_left_right:
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_left (dc));
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_right (dc));
-+ /* PR 89394 - Check for too much recursion. */
-+ if (dpi->recursion > DEMANGLE_RECURSION_LIMIT)
-+ /* FIXME: There ought to be a way to report to the
-+ user that the recursion limit has been reached. */
-+ return;
-+
-+ ++ dpi->recursion;
-+ d_count_templates_scopes (dpi, d_left (dc));
-+ d_count_templates_scopes (dpi, d_right (dc));
-+ -- dpi->recursion;
- break;
-
- case DEMANGLE_COMPONENT_CTOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_ctor.name);
-+ d_count_templates_scopes (dpi, dc->u.s_ctor.name);
- break;
-
- case DEMANGLE_COMPONENT_DTOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_dtor.name);
-+ d_count_templates_scopes (dpi, dc->u.s_dtor.name);
- break;
-
- case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_extended_operator.name);
-+ d_count_templates_scopes (dpi, dc->u.s_extended_operator.name);
- break;
-
- case DEMANGLE_COMPONENT_FIXED_TYPE:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_fixed.length);
-+ d_count_templates_scopes (dpi, dc->u.s_fixed.length);
- break;
-
- case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
- case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
-- d_count_templates_scopes (num_templates, num_scopes,
-- d_left (dc));
-+ d_count_templates_scopes (dpi, d_left (dc));
- break;
-
- case DEMANGLE_COMPONENT_LAMBDA:
- case DEMANGLE_COMPONENT_DEFAULT_ARG:
-- d_count_templates_scopes (num_templates, num_scopes,
-- dc->u.s_unary_num.sub);
-+ d_count_templates_scopes (dpi, dc->u.s_unary_num.sub);
- break;
- }
- }
-@@ -4222,8 +4222,12 @@
- dpi->next_copy_template = 0;
- dpi->num_copy_templates = 0;
-
-- d_count_templates_scopes (&dpi->num_copy_templates,
-- &dpi->num_saved_scopes, dc);
-+ d_count_templates_scopes (dpi, dc);
-+ /* If we did not reach the recursion limit, then reset the
-+ current recursion value back to 0, so that we can print
-+ the templates. */
-+ if (dpi->recursion < DEMANGLE_RECURSION_LIMIT)
-+ dpi->recursion = 0;
- dpi->num_copy_templates *= dpi->num_saved_scopes;
-
- dpi->current_template = NULL;
diff --git a/system/binutils/CVE-2019-9073.patch b/system/binutils/CVE-2019-9073.patch
deleted file mode 100644
index 9ea45707b..000000000
--- a/system/binutils/CVE-2019-9073.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 7d272a55caebfc26ab2e15d1e9439bac978b9bb7 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 20 Feb 2019 12:06:31 +1030
-Subject: [PATCH] PR24233, Out of memory
-
- PR 24233
- * objdump.c (dump_bfd_private_header): Print warning if
- bfd_print_private_bfd_data returns false.
----
- binutils/ChangeLog | 6 ++++++
- binutils/objdump.c | 4 +++-
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/binutils/objdump.c b/binutils/objdump.c
-index 8725390..7d0c6a4 100644
---- a/binutils/objdump.c
-+++ b/binutils/objdump.c
-@@ -3178,7 +3178,9 @@ dump_bfd_header (bfd *abfd)
- static void
- dump_bfd_private_header (bfd *abfd)
- {
-- bfd_print_private_bfd_data (abfd, stdout);
-+ if (!bfd_print_private_bfd_data (abfd, stdout))
-+ non_fatal (_("warning: private headers incomplete: %s"),
-+ bfd_errmsg (bfd_get_error ()));
- }
-
- static void
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-9074.patch b/system/binutils/CVE-2019-9074.patch
deleted file mode 100644
index 74b6c2040..000000000
--- a/system/binutils/CVE-2019-9074.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 179f2db0d9c397d7dd8a59907b84208b79f7f48c Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Tue, 19 Feb 2019 22:48:44 +1030
-Subject: [PATCH] PR24235, Read memory violation in pei-x86_64.c
-
- PR 24235
- * pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
- attempting to prevent read past end of section.
----
- bfd/pei-x86_64.c | 9 ++++-----
- 2 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c
-index ff1093c..7e75104 100644
---- a/bfd/pei-x86_64.c
-+++ b/bfd/pei-x86_64.c
-@@ -541,7 +541,7 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- /* virt_size might be zero for objects. */
- if (stop == 0 && strcmp (abfd->xvec->name, "pe-x86-64") == 0)
- {
-- stop = (datasize / onaline) * onaline;
-+ stop = datasize;
- virt_size_is_zero = TRUE;
- }
- else if (datasize < stop)
-@@ -551,8 +551,8 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- _("Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"),
- pdata_section->name, (unsigned long) datasize,
- (unsigned long) stop);
-- /* Be sure not to read passed datasize. */
-- stop = datasize / onaline;
-+ /* Be sure not to read past datasize. */
-+ stop = datasize;
- }
-
- /* Display functions table. */
-@@ -724,8 +724,7 @@ pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
- altent += imagebase;
-
- if (altent >= pdata_vma
-- && (altent + PDATA_ROW_SIZE <= pdata_vma
-- + pei_section_data (abfd, pdata_section)->virt_size))
-+ && altent - pdata_vma + PDATA_ROW_SIZE <= stop)
- {
- pex64_get_runtime_function
- (abfd, &arf, &pdata[altent - pdata_vma]);
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-9075.patch b/system/binutils/CVE-2019-9075.patch
deleted file mode 100644
index 0084d3368..000000000
--- a/system/binutils/CVE-2019-9075.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 8abac8031ed369a2734b1cdb7df28a39a54b4b49 Mon Sep 17 00:00:00 2001
-From: Alan Modra <amodra@gmail.com>
-Date: Wed, 20 Feb 2019 08:21:24 +1030
-Subject: [PATCH] PR24236, Heap buffer overflow in
- _bfd_archive_64_bit_slurp_armap
-
- PR 24236
- * archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
- sentinel NUL to string buffer nearer to loop where it is used.
- Don't go past sentinel when scanning strings, and don't write
- NUL again.
- * archive.c (do_slurp_coff_armap): Simplify string handling to
- archive64.c style.
----
- bfd/archive.c | 17 +++++++----------
- bfd/archive64.c | 10 +++++-----
- 3 files changed, 22 insertions(+), 15 deletions(-)
-
-diff --git a/bfd/archive.c b/bfd/archive.c
-index d2d9b72..68a92a3 100644
---- a/bfd/archive.c
-+++ b/bfd/archive.c
-@@ -1012,6 +1012,7 @@ do_slurp_coff_armap (bfd *abfd)
- int *raw_armap, *rawptr;
- struct artdata *ardata = bfd_ardata (abfd);
- char *stringbase;
-+ char *stringend;
- bfd_size_type stringsize;
- bfd_size_type parsed_size;
- carsym *carsyms;
-@@ -1071,22 +1072,18 @@ do_slurp_coff_armap (bfd *abfd)
- }
-
- /* OK, build the carsyms. */
-- for (i = 0; i < nsymz && stringsize > 0; i++)
-+ stringend = stringbase + stringsize;
-+ *stringend = 0;
-+ for (i = 0; i < nsymz; i++)
- {
-- bfd_size_type len;
--
- rawptr = raw_armap + i;
- carsyms->file_offset = swap ((bfd_byte *) rawptr);
- carsyms->name = stringbase;
-- /* PR 17512: file: 4a1d50c1. */
-- len = strnlen (stringbase, stringsize);
-- if (len < stringsize)
-- len ++;
-- stringbase += len;
-- stringsize -= len;
-+ stringbase += strlen (stringbase);
-+ if (stringbase != stringend)
-+ ++stringbase;
- carsyms++;
- }
-- *stringbase = 0;
-
- ardata->symdef_count = nsymz;
- ardata->first_file_filepos = bfd_tell (abfd);
-diff --git a/bfd/archive64.c b/bfd/archive64.c
-index 312bf82..42f6ed9 100644
---- a/bfd/archive64.c
-+++ b/bfd/archive64.c
-@@ -100,8 +100,6 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
- return FALSE;
- carsyms = ardata->symdefs;
- stringbase = ((char *) ardata->symdefs) + carsym_size;
-- stringbase[stringsize] = 0;
-- stringend = stringbase + stringsize;
-
- raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize);
- if (raw_armap == NULL)
-@@ -115,15 +113,17 @@ _bfd_archive_64_bit_slurp_armap (bfd *abfd)
- goto release_raw_armap;
- }
-
-+ stringend = stringbase + stringsize;
-+ *stringend = 0;
- for (i = 0; i < nsymz; i++)
- {
- carsyms->file_offset = bfd_getb64 (raw_armap + i * 8);
- carsyms->name = stringbase;
-- if (stringbase < stringend)
-- stringbase += strlen (stringbase) + 1;
-+ stringbase += strlen (stringbase);
-+ if (stringbase != stringend)
-+ ++stringbase;
- ++carsyms;
- }
-- *stringbase = '\0';
-
- ardata->symdef_count = nsymz;
- ardata->first_file_filepos = bfd_tell (abfd);
---
-2.9.3
-
diff --git a/system/binutils/CVE-2019-9077.patch b/system/binutils/CVE-2019-9077.patch
deleted file mode 100644
index de044e387..000000000
--- a/system/binutils/CVE-2019-9077.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7fc0c668f2aceb8582d74db1ad2528e2bba8a921 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Wed, 20 Feb 2019 17:03:47 +0000
-Subject: [PATCH] Fix a illegal memory access fault when parsing a corrupt MIPS
- option section using readelf.
-
- PR 24243
- * readelf.c (process_mips_specific): Check for an options section
- that is too small to even contain a single option.
----
- binutils/readelf.c | 6 ++++++
- 2 files changed, 9 insertions(+)
-
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index 54d165e..20ebacc 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -16187,6 +16187,12 @@ process_mips_specific (Filedata * filedata)
- error (_("No MIPS_OPTIONS header found\n"));
- return FALSE;
- }
-+ /* PR 24243 */
-+ if (sect->sh_size < sizeof (* eopt))
-+ {
-+ error (_("The MIPS options section is too small.\n"));
-+ return FALSE;
-+ }
-
- eopt = (Elf_External_Options *) get_data (NULL, filedata, options_offset, 1,
- sect->sh_size, _("options"));
---
-2.9.3
-
diff --git a/system/binutils/arm-pie.patch b/system/binutils/arm-pie.patch
deleted file mode 100644
index f42477a04..000000000
--- a/system/binutils/arm-pie.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=25056
-Author: Rich Felker <dalias@libc.org>
-Upstream-Status: reported
-
---- binutils-2.32/bfd/elf32-arm.c.orig 2019-10-02 07:47:36.153918869 -0400
-+++ binutils-2.32/bfd/elf32-arm.c 2019-10-02 08:37:09.108263016 -0400
-@@ -11624,7 +11624,7 @@
- {
- /* If we don't know the module number, create a relocation
- for it. */
-- if (bfd_link_pic (info))
-+ if (bfd_link_dll (info))
- {
- Elf_Internal_Rela outrel;
-
-@@ -11728,7 +11728,7 @@
- now, and emit any relocations. If both an IE GOT and a
- GD GOT are necessary, we emit the GD first. */
-
-- if ((bfd_link_pic (info) || indx != 0)
-+ if ((bfd_link_dll (info) || indx != 0)
- && (h == NULL
- || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- && !resolved_to_zero)
diff --git a/system/binutils/binutils-ld-fix-static-linking.patch b/system/binutils/binutils-ld-fix-static-linking.patch
index bc5d76265..fb79e3213 100644
--- a/system/binutils/binutils-ld-fix-static-linking.patch
+++ b/system/binutils/binutils-ld-fix-static-linking.patch
@@ -3,7 +3,7 @@ diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
index e8126cb..9532bfb 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
-@@ -235,8 +235,8 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
+@@ -257,8 +257,8 @@ test "${LARGE_SECTIONS}" = "yes" && LARGE_SECTIONS="
if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then
SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))"
SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))"
@@ -14,7 +14,7 @@ index e8126cb..9532bfb 100644
else
SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))"
SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))"
-@@ -270,15 +270,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+@@ -298,15 +298,14 @@ CTOR=".ctors ${CONSTRUCTING-0} :
doesn't matter which directory crtbegin.o
is in. */
@@ -32,7 +32,7 @@ index e8126cb..9532bfb 100644
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
${CONSTRUCTING+${CTOR_END}}
-@@ -286,9 +285,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
+@@ -314,9 +313,8 @@ CTOR=".ctors ${CONSTRUCTING-0} :
DTOR=".dtors ${CONSTRUCTING-0} :
{
${CONSTRUCTING+${DTOR_START}}
diff --git a/system/binutils/disable-gnu-mbind.patch b/system/binutils/disable-gnu-mbind.patch
deleted file mode 100644
index 796e6d0fc..000000000
--- a/system/binutils/disable-gnu-mbind.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-These tests do not work on PIE. Disable them.
-
---- binutils-2.29/ld/testsuite/ld-elf/elf.exp.old 2017-08-19 22:39:31.236907813 +0000
-+++ binutils-2.29/ld/testsuite/ld-elf/elf.exp 2017-08-20 00:12:04.735925829 +0000
-@@ -296,27 +296,6 @@
- || [istarget *-*-nacl*]
- || [istarget *-*-gnu*] } {
- run_ld_link_exec_tests $array_tests_pie $xfails
--
-- run_ld_link_exec_tests [list \
-- [list \
-- "Run mbind2a" \
-- "$NOPIE_LDFLAGS -Wl,-z,common-page-size=0x4000" \
-- "" \
-- { mbind2a.s mbind2b.c } \
-- "mbind2a" \
-- "pass.out" \
-- "-O2 -I../bfd" \
-- ] \
-- [list \
-- "Run mbind2b" \
-- "-static -Wl,-z,common-page-size=0x4000" \
-- "" \
-- { mbind2a.s mbind2b.c } \
-- "mbind2b" \
-- "pass.out" \
-- "-O2 -I../bfd" \
-- ] \
-- ]
- }
-
- # <http://www.gnu.org/software/hurd/open_issues/binutils.html#static>
diff --git a/system/binutils/disable-ifunc-tests.patch b/system/binutils/disable-ifunc-tests.patch
index b50d20b0e..39b35d319 100644
--- a/system/binutils/disable-ifunc-tests.patch
+++ b/system/binutils/disable-ifunc-tests.patch
@@ -1,12 +1,11 @@
--- binutils-2.31.1/ld/testsuite/ld-ifunc/ifunc.exp.old 2018-06-27 07:55:16.000000000 +0000
+++ binutils-2.31.1/ld/testsuite/ld-ifunc/ifunc.exp 2018-10-12 03:23:09.240000000 +0000
-@@ -34,7 +34,8 @@
- && ([istarget "*-*-elf*"]
- || [istarget "*-*-nacl*"]
- || [istarget "*-*-linux*"]
-- || [istarget "*-*-gnu*"])) } {
-+ || [istarget "*-*-gnu*"])
-+ && ![istarget "*-*-musl*"]) } {
+@@ -43,7 +43,8 @@
+ || [istarget sh*-*-*]
+ || [istarget tic6x-*-*]
+ || [istarget tile*-*-*]
++ || [istarget *-*-musl*]
+ || [istarget vax-*-*] } {
verbose "IFUNC tests not run - target does not support IFUNC"
return
}
diff --git a/system/binutils/disable-mbind2b.patch b/system/binutils/disable-mbind2b.patch
new file mode 100644
index 000000000..6065ba0cf
--- /dev/null
+++ b/system/binutils/disable-mbind2b.patch
@@ -0,0 +1,20 @@
+XXX working upstream with musl, trying to push to other arches for testing
+
+--- binutils-2.41/ld/testsuite/ld-elf/elf.exp.old 2023-09-22 22:22:00.860304785 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/elf.exp 2023-09-22 23:43:12.163396014 -0500
+@@ -490,15 +490,6 @@
+ "pass.out" \
+ "-O2 -I../bfd" \
+ ] \
+- [list \
+- "Run mbind2b" \
+- "-static -Wl,-z,common-page-size=0x4000 -Wl,-z,noexecstack" \
+- "" \
+- { mbind2a.s mbind2b.c } \
+- "mbind2b" \
+- "pass.out" \
+- "-O2 -I../bfd" \
+- ] \
+ ]
+ }
+
diff --git a/system/binutils/disable-pr26580-test.patch b/system/binutils/disable-pr26580-test.patch
new file mode 100644
index 000000000..768a7c0c0
--- /dev/null
+++ b/system/binutils/disable-pr26580-test.patch
@@ -0,0 +1,20 @@
+For some reason, the output binary is over-aligned on x86_64.
+
+This test passes on all platforms but x86_64, so this (just barely) meets
+Tier 1 standards for system/ packages.
+
+Not reported upstream.
+
+--- binutils-2.41/ld/testsuite/ld-elf/shared.exp.old 2023-09-30 00:31:20.814410396 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/shared.exp 2023-09-30 01:23:23.564443008 -0500
+@@ -1121,10 +1121,6 @@
+ "" "" \
+ {pr26580-a.c} "pr26580-3" "pr26580-3.out" "-fcommon" "c" "" \
+ "-Wl,--as-needed tmpdir/libpr26580-2.so" ] \
+- [list "pr26580-4" \
+- "" "" \
+- {pr26580-a.c} "pr26580-4" "pr26580-4.out" "-fcommon" "c" "" \
+- "-Wl,--no-as-needed tmpdir/libpr26580-2.so" ] \
+ [list "Run pr26590 (2)" \
+ "" "" \
+ {pr26590c.c pr26590d.c} "pr26590" "pass.out" "" "c" "" \
diff --git a/system/binutils/disable-preinit-array-tests.patch b/system/binutils/disable-preinit-array-tests.patch
index f3d36c1b3..4338fd5ec 100644
--- a/system/binutils/disable-preinit-array-tests.patch
+++ b/system/binutils/disable-preinit-array-tests.patch
@@ -1,6 +1,6 @@
--- binutils-2.29/ld/testsuite/ld-elf/elf.exp.old 2017-07-04 08:43:21.000000000 +0000
+++ binutils-2.29/ld/testsuite/ld-elf/elf.exp 2017-08-19 04:46:32.214460537 +0000
-@@ -262,8 +262,6 @@
+@@ -391,8 +391,6 @@
}
set array_tests {
@@ -9,7 +9,7 @@
{"init array" "" ""
{init.c} "init" "init.out"}
{"fini array" "" ""
-@@ -272,8 +270,6 @@
+@@ -401,8 +399,6 @@
{init-mixed.c} "init-mixed" "init-mixed.out" "-I."}
}
set array_tests_pie {
@@ -18,7 +18,7 @@
{"PIE init array" "-pie" ""
{init.c} "init" "init.out" "-fPIE"}
{"PIE fini array" "-pie" ""
-@@ -284,8 +280,6 @@
+@@ -413,8 +409,6 @@
{pr14525.c} "pr14525" "pr14525.out" "-fPIE"}
}
set array_tests_static {
diff --git a/system/binutils/disable-relr-glibc-tests.patch b/system/binutils/disable-relr-glibc-tests.patch
new file mode 100644
index 000000000..afefe593a
--- /dev/null
+++ b/system/binutils/disable-relr-glibc-tests.patch
@@ -0,0 +1,19 @@
+While musl does support DT_RELR, and other DT_RELR related tests *do* pass,
+these glibc-specific tests do not because they require the linker to output
+glibc-specific .version_info.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30917
+
+--- binutils-2.41/ld/testsuite/ld-elf/dt-relr.exp.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/dt-relr.exp 2023-09-22 20:28:27.455427142 -0500
+@@ -23,6 +23,10 @@
+ return
+ }
+
++if { [istarget *-*-musl*] } {
++ return
++}
++
+ run_cc_link_tests [list \
+ [list \
+ "Build dt-relr-glibc-1a.so" \
diff --git a/system/binutils/disable-sframe-tests.patch b/system/binutils/disable-sframe-tests.patch
new file mode 100644
index 000000000..994349853
--- /dev/null
+++ b/system/binutils/disable-sframe-tests.patch
@@ -0,0 +1,17 @@
+SFrame tests fail due to incorrect PC offset in generated binary.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30914
+
+--- binutils-2.41/ld/testsuite/lib/ld-lib.exp.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/lib/ld-lib.exp 2023-09-29 03:19:04.223613176 -0500
+@@ -1723,10 +1723,5 @@
+ # if {$enable_libsframe eq "no"} {
+ # return 1
+ # }
+-
+- if [check_as_sframe] {
+- return 0
+- }
+-
+ return 1
+ }
diff --git a/system/binutils/disable-textrel-test.patch b/system/binutils/disable-textrel-test.patch
new file mode 100644
index 000000000..f01921996
--- /dev/null
+++ b/system/binutils/disable-textrel-test.patch
@@ -0,0 +1,43 @@
+musl doesn't support TEXTRELs, so the pr22001-1 test will always segfault.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30925
+
+--- binutils-2.41/ld/testsuite/ld-i386/i386.exp.old 2023-07-02 23:00:00.000000000 +0000
++++ binutils-2.41/ld/testsuite/ld-i386/i386.exp 2023-09-30 12:34:46.594675721 +0000
+@@ -1318,6 +1318,20 @@
+ ] \
+ ]
+
++ if { ![istarget i?86-*-musl] } {
++ run_ld_link_exec_tests [list \
++ [list \
++ "Run pr22001-1" \
++ "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed,-z,notext tmpdir/pr22001-1.so" \
++ "-Wa,-mx86-used-note=yes" \
++ { pr22001-1b.c } \
++ "pr22001-1" \
++ "pass.out" \
++ "$NOPIE_CFLAGS" \
++ ] \
++ ]
++ }
++
+ run_ld_link_exec_tests [list \
+ [list \
+ "Run weakundef1 without PIE" \
+@@ -1328,15 +1342,6 @@
+ "pass.out" \
+ "$NOPIE_CFLAGS" \
+ ] \
+- [list \
+- "Run pr22001-1" \
+- "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed,-z,notext tmpdir/pr22001-1.so" \
+- "-Wa,-mx86-used-note=yes" \
+- { pr22001-1b.c } \
+- "pr22001-1" \
+- "pass.out" \
+- "$NOPIE_CFLAGS" \
+- ] \
+ [list \
+ "Run pr22001-1 (PIE 1)" \
+ "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed tmpdir/pr22001-1.so" \
diff --git a/system/binutils/fix-deprecated-egrep-usage.patch b/system/binutils/fix-deprecated-egrep-usage.patch
index c661117e3..755068267 100644
--- a/system/binutils/fix-deprecated-egrep-usage.patch
+++ b/system/binutils/fix-deprecated-egrep-usage.patch
@@ -1,36 +1,3 @@
-diff -ur a/binutils/embedspu.sh b/binutils/embedspu.sh
---- a/binutils/embedspu.sh 2023-04-06 08:16:35.123366257 -0500
-+++ b/binutils/embedspu.sh 2023-04-06 08:17:09.700066333 -0500
-@@ -110,7 +110,7 @@
- # Sanity check the input file
- if ! ${READELF} -h ${INFILE} | grep 'Class:.*ELF32' >/dev/null 2>/dev/null \
- || ! ${READELF} -h ${INFILE} | grep 'Type:.*EXEC' >/dev/null 2>/dev/null \
-- || ! ${READELF} -h ${INFILE} | egrep 'Machine:.*(SPU|17)' >/dev/null 2>/dev/null
-+ || ! ${READELF} -h ${INFILE} | grep -E 'Machine:.*(SPU|17)' >/dev/null 2>/dev/null
- then
- echo "${INFILE}: Does not appear to be an SPU executable"
- exit 1
-diff -ur a/config/lib-ld.m4 b/config/lib-ld.m4
---- a/config/lib-ld.m4 2023-04-06 08:16:35.091365610 -0500
-+++ b/config/lib-ld.m4 2023-04-06 08:17:09.704066414 -0500
-@@ -14,7 +14,7 @@
- AC_DEFUN([AC_LIB_PROG_LD_GNU],
- [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
- [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
--if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
-+if $LD -v 2>&1 </dev/null | grep -E '(GNU|with BFD)' 1>&5; then
- acl_cv_prog_gnu_ld=yes
- else
- acl_cv_prog_gnu_ld=no
-@@ -88,7 +88,7 @@
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
-- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
-+ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | grep -E '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
diff -ur a/config.rpath b/config.rpath
--- a/config.rpath 2023-04-06 08:16:36.067385369 -0500
+++ b/config.rpath 2023-04-06 08:17:09.704066414 -0500
@@ -64,210 +31,3 @@ diff -ur a/config.rpath b/config.rpath
:
else
ld_shlibs=no
-diff -ur a/gold/testsuite/bnd_ifunc_1.sh b/gold/testsuite/bnd_ifunc_1.sh
---- a/gold/testsuite/bnd_ifunc_1.sh 2023-04-06 08:16:36.123386503 -0500
-+++ b/gold/testsuite/bnd_ifunc_1.sh 2023-04-06 08:17:09.704066414 -0500
-@@ -24,13 +24,13 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
- }
-
- match '[0-9a-f]*:.*bnd jmpq \*0x[0-9a-f]*\(%rip\) *# [0-9a-f]* <_GLOBAL_OFFSET_TABLE_\+0x18>' bnd_ifunc_1.stdout
--APLT_ADDR=$(egrep '[0-9a-f]*:.*bnd jmpq \*0x[0-9a-f]*\(%rip\) *# [0-9a-f]* <_GLOBAL_OFFSET_TABLE_\+0x18>' bnd_ifunc_1.stdout |
-+APLT_ADDR=$(grep -E '[0-9a-f]*:.*bnd jmpq \*0x[0-9a-f]*\(%rip\) *# [0-9a-f]* <_GLOBAL_OFFSET_TABLE_\+0x18>' bnd_ifunc_1.stdout |
- sed -e 's/ *\([0-9a-f]*\):.*/\1/')
- match "bnd callq $APLT_ADDR" bnd_ifunc_1.stdout
-diff -ur a/gold/testsuite/bnd_ifunc_2.sh b/gold/testsuite/bnd_ifunc_2.sh
---- a/gold/testsuite/bnd_ifunc_2.sh 2023-04-06 08:16:36.139386827 -0500
-+++ b/gold/testsuite/bnd_ifunc_2.sh 2023-04-06 08:17:09.708066495 -0500
-@@ -24,7 +24,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-diff -ur a/gold/testsuite/bnd_plt_1.sh b/gold/testsuite/bnd_plt_1.sh
---- a/gold/testsuite/bnd_plt_1.sh 2023-04-06 08:16:36.131386665 -0500
-+++ b/gold/testsuite/bnd_plt_1.sh 2023-04-06 08:17:09.708066495 -0500
-@@ -24,7 +24,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-diff -ur a/gold/testsuite/discard_locals_test.sh b/gold/testsuite/discard_locals_test.sh
---- a/gold/testsuite/discard_locals_test.sh 2023-04-06 08:16:36.119386422 -0500
-+++ b/gold/testsuite/discard_locals_test.sh 2023-04-06 08:17:09.708066495 -0500
-@@ -32,7 +32,7 @@
- file=$1
- sym=$2
-
-- found=`egrep $sym $file`
-+ found=`grep -E $sym $file`
- if test -n "$found"; then
- echo "These local symbols are not discarded in $file:"
- echo "$found"
-@@ -45,7 +45,7 @@
- file=$1
- sym=$2
-
-- found=`egrep $sym $file`
-+ found=`grep -E $sym $file`
- if test -z "$found"; then
- echo "This local symbol is discarded in $file:"
- echo "$2"
-diff -ur a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
---- a/gold/testsuite/Makefile.am 2023-04-06 08:16:36.131386665 -0500
-+++ b/gold/testsuite/Makefile.am 2023-04-06 08:17:09.712066576 -0500
-@@ -1650,7 +1650,7 @@
-
- # Check there are compressed DWARF .debug_* sections.
- flagstest_compress_debug_sections.check: flagstest_compress_debug_sections
-- $(TEST_READELF) -SW $< | egrep ".debug_.* C *" > $@.tmp
-+ $(TEST_READELF) -SW $< | grep -E ".debug_.* C *" > $@.tmp
- mv -f $@.tmp $@
-
- # Compare DWARF debug info.
-diff -ur a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
---- a/gold/testsuite/Makefile.in 2023-04-06 08:16:36.123386503 -0500
-+++ b/gold/testsuite/Makefile.in 2023-04-06 08:17:09.720066738 -0500
-@@ -8577,7 +8577,7 @@
-
- # Check there are compressed DWARF .debug_* sections.
- @GCC_TRUE@@NATIVE_LINKER_TRUE@flagstest_compress_debug_sections.check: flagstest_compress_debug_sections
--@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW $< | egrep ".debug_.* C *" > $@.tmp
-+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -SW $< | grep -E ".debug_.* C *" > $@.tmp
- @GCC_TRUE@@NATIVE_LINKER_TRUE@ mv -f $@.tmp $@
-
- # Compare DWARF debug info.
-diff -ur a/gold/testsuite/no_version_test.sh b/gold/testsuite/no_version_test.sh
---- a/gold/testsuite/no_version_test.sh 2023-04-06 08:16:36.119386422 -0500
-+++ b/gold/testsuite/no_version_test.sh 2023-04-06 08:17:09.720066738 -0500
-@@ -32,7 +32,7 @@
- {
- file=$1
-
-- found=`egrep "\.gnu\.version.*" $file`
-+ found=`grep -E "\.gnu\.version.*" $file`
- if test -n "$found"; then
- echo "These section should not be in $file:"
- echo "$found"
-diff -ur a/gold/testsuite/pr18689.sh b/gold/testsuite/pr18689.sh
---- a/gold/testsuite/pr18689.sh 2023-04-06 08:16:36.131386665 -0500
-+++ b/gold/testsuite/pr18689.sh 2023-04-06 08:17:09.720066738 -0500
-@@ -23,6 +23,6 @@
-
- set -e
-
--egrep -q "..debug_mac[ro|info][ ]+*" pr18689.stdout
-+grep -E -q "..debug_mac[ro|info][ ]+*" pr18689.stdout
-
- exit 0
-diff -ur a/gold/testsuite/split_i386.sh b/gold/testsuite/split_i386.sh
---- a/gold/testsuite/split_i386.sh 2023-04-06 08:16:36.115386341 -0500
-+++ b/gold/testsuite/split_i386.sh 2023-04-06 08:17:09.724066819 -0500
-@@ -24,7 +24,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-@@ -32,7 +32,7 @@
-
- nomatch()
- {
-- if egrep "$1" "$2" >/dev/null 2>&1; then
-+ if grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "found unexpected '$1' in $2"
- exit 1
- fi
-diff -ur a/gold/testsuite/split_s390.sh b/gold/testsuite/split_s390.sh
---- a/gold/testsuite/split_s390.sh 2023-04-06 08:16:36.115386341 -0500
-+++ b/gold/testsuite/split_s390.sh 2023-04-06 08:17:09.724066819 -0500
-@@ -24,7 +24,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-@@ -32,7 +32,7 @@
-
- nomatch()
- {
-- if egrep "$1" "$2" >/dev/null 2>&1; then
-+ if grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "found unexpected '$1' in $2"
- exit 1
- fi
-diff -ur a/gold/testsuite/split_x32.sh b/gold/testsuite/split_x32.sh
---- a/gold/testsuite/split_x32.sh 2023-04-06 08:16:36.119386422 -0500
-+++ b/gold/testsuite/split_x32.sh 2023-04-06 08:17:09.724066819 -0500
-@@ -25,7 +25,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-@@ -33,7 +33,7 @@
-
- nomatch()
- {
-- if egrep "$1" "$2" >/dev/null 2>&1; then
-+ if grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "found unexpected '$1' in $2"
- exit 1
- fi
-diff -ur a/gold/testsuite/split_x86_64.sh b/gold/testsuite/split_x86_64.sh
---- a/gold/testsuite/split_x86_64.sh 2023-04-06 08:16:36.115386341 -0500
-+++ b/gold/testsuite/split_x86_64.sh 2023-04-06 08:17:09.728066900 -0500
-@@ -24,7 +24,7 @@
-
- match()
- {
-- if ! egrep "$1" "$2" >/dev/null 2>&1; then
-+ if ! grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "could not find '$1' in $2"
- exit 1
- fi
-@@ -32,7 +32,7 @@
-
- nomatch()
- {
-- if egrep "$1" "$2" >/dev/null 2>&1; then
-+ if grep -E "$1" "$2" >/dev/null 2>&1; then
- echo 1>&2 "found unexpected '$1' in $2"
- exit 1
- fi
-diff -ur a/ld/testsuite/ld-elfvers/vers.exp b/ld/testsuite/ld-elfvers/vers.exp
---- a/ld/testsuite/ld-elfvers/vers.exp 2023-04-06 08:16:35.139366581 -0500
-+++ b/ld/testsuite/ld-elfvers/vers.exp 2023-04-06 08:17:09.728066900 -0500
-@@ -115,7 +115,7 @@
- return
- }
-
-- set cmd "$nm --print-armap $tmpdir/$lib | grep \\\ in\\\ | egrep VERS\\\|bar\\\|foo | grep -v ^\\\\. | sort > $tmpdir/nm.out"
-+ set cmd "$nm --print-armap $tmpdir/$lib | grep \\\ in\\\ | grep -E VERS\\\|bar\\\|foo | grep -v ^\\\\. | sort > $tmpdir/nm.out"
- verbose -log $cmd
- catch "exec $cmd" exec_output
- if [string match "" $exec_output] then {
diff --git a/system/binutils/fix-pr28158-test.patch b/system/binutils/fix-pr28158-test.patch
new file mode 100644
index 000000000..2fade9593
--- /dev/null
+++ b/system/binutils/fix-pr28158-test.patch
@@ -0,0 +1,30 @@
+Upstream: https://sourceware.org/bugzilla/show_bug.cgi?id=30905
+
+From 221e4f9b4ac4e6d4e362fdadf7f86a8b0df94d47 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Tue, 26 Sep 2023 00:26:06 -0500
+Subject: [PATCH] elf: Adjust PR ld/28158 tests
+
+PR ld/28158
+ * testsuite/ld-elf/pr28158.rd: ensure symbol indexes containing
+ the number 0 match in regex
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ ld/testsuite/ld-elf/pr28158.rd | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ld/testsuite/ld-elf/pr28158.rd b/ld/testsuite/ld-elf/pr28158.rd
+index b3cfe8915cb..c2cef7a0b39 100644
+--- a/ld/testsuite/ld-elf/pr28158.rd
++++ b/ld/testsuite/ld-elf/pr28158.rd
+@@ -3,5 +3,5 @@
+ #target: x86_64-*-linux* i?86-*-linux-gnu
+
+ #...
+- +[0-9]+: +[0-9a-f]+ +[0-9]+ +OBJECT +GLOBAL +DEFAULT +[1-9]+ foo@VERS_2.0 \([0-9]+\)
++ +[0-9]+: +[0-9a-f]+ +[0-9]+ +OBJECT +GLOBAL +DEFAULT +[0-9]+ foo@VERS_2.0 \([0-9]+\)
+ #pass
+--
+2.39.2 (Apple Git-143)
+
diff --git a/system/binutils/musl-preinit-array.patch b/system/binutils/musl-preinit-array.patch
new file mode 100644
index 000000000..9932f3c7f
--- /dev/null
+++ b/system/binutils/musl-preinit-array.patch
@@ -0,0 +1,35 @@
+musl libc currently does not run .preinit_array functions.
+
+--- binutils-2.41/ld/testsuite/ld-elf/elf.exp.old 2023-09-22 20:55:13.894385414 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/elf.exp 2023-09-22 21:31:13.354594152 -0500
+@@ -427,17 +427,21 @@
+ run_ld_link_exec_tests $array_tests_pie $xfails
+
+ if { $STATIC_PIE_LDFLAGS != "" } then {
++ if { ![istarget *-*-musl*] } then {
++ run_ld_link_exec_tests [list \
++ [list \
++ "Static PIE preinit array" \
++ "$STATIC_PIE_LDFLAGS" \
++ "" \
++ {preinit.c} \
++ "preinit-static-pie" \
++ "preinit.out" \
++ "-fPIE" \
++ ] \
++ ]
++ }
+ run_ld_link_exec_tests [list \
+ [list \
+- "Static PIE preinit array" \
+- "$STATIC_PIE_LDFLAGS" \
+- "" \
+- {preinit.c} \
+- "preinit-static-pie" \
+- "preinit.out" \
+- "-fPIE" \
+- ] \
+- [list \
+ "Static PIE init array" \
+ "$STATIC_PIE_LDFLAGS" \
+ "" \
diff --git a/system/binutils/musl-versioned-syms.patch b/system/binutils/musl-versioned-syms.patch
new file mode 100644
index 000000000..3812947c3
--- /dev/null
+++ b/system/binutils/musl-versioned-syms.patch
@@ -0,0 +1,19 @@
+This test will not work on musl which does not support symbol versioning.
+
+--- binutils-2.41/ld/testsuite/ld-elfvers/vers.exp.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/ld-elfvers/vers.exp 2023-09-22 22:20:51.407688782 -0500
+@@ -888,8 +888,12 @@
+ # Test that when we override a versioned symbol from the library this
+ # symbol appears in the dynamic symbol table of the executable.
+ #
+-build_vers_lib_pic "vers16a" vers16a.c vers16a "" vers16.map vers16a.ver vers16a.dsym ""
+-build_exec "vers16" vers16.c vers16 "-Wl,--no-as-needed" vers16a.so "" vers16.dsym ""
++if { [istarget *-*-musl*] } then {
++ xfail "vers16"
++} else {
++ build_vers_lib_pic "vers16a" vers16a.c vers16a "" vers16.map vers16a.ver vers16a.dsym ""
++ build_exec "vers16" vers16.c vers16 "-Wl,--no-as-needed" vers16a.so "" vers16.dsym ""
++}
+
+ # Test a weak versioned symbol.
+ build_vers_lib_pic "vers17" vers17.c vers17 "" vers17.map vers17.ver vers17.dsym ""
diff --git a/system/binutils/ppc32-pic-required.patch b/system/binutils/ppc32-pic-required.patch
new file mode 100644
index 000000000..c9395d945
--- /dev/null
+++ b/system/binutils/ppc32-pic-required.patch
@@ -0,0 +1,23 @@
+On the 32-bit PowerPC target, musl does not support shared libraries without
+PIC, because secure-PLT is required.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30918
+
+--- binutils-2.41/ld/testsuite/ld-shared/shared.exp.old 2023-07-02 23:00:00.000000000 +0000
++++ binutils-2.41/ld/testsuite/ld-shared/shared.exp 2023-09-24 08:44:39.404937347 +0000
+@@ -226,6 +226,7 @@
+ setup_xfail "*-*-solaris2*"
+ setup_xfail "ia64-*-linux*"
+ setup_xfail "alpha*-*-linux*"
++ setup_xfail "powerpc-*-linux-musl"
+ setup_xfail "powerpc64*-*-*"
+ if { ![istarget hppa*64*-*-linux*] } {
+ setup_xfail "hppa*-*-linux*"
+@@ -307,6 +308,7 @@
+ setup_xfail "*-*-solaris2*"
+ setup_xfail "ia64-*-linux*"
+ setup_xfail "alpha*-*-linux*"
++ setup_xfail "powerpc-*-linux-musl"
+ setup_xfail "powerpc64*-*-*"
+ if { ![istarget hppa*64*-*-linux*] } {
+ setup_xfail "hppa*-*-linux*"
diff --git a/system/binutils/ppc64-abiv2-addr2line.patch b/system/binutils/ppc64-abiv2-addr2line.patch
new file mode 100644
index 000000000..e3cb4d73d
--- /dev/null
+++ b/system/binutils/ppc64-abiv2-addr2line.patch
@@ -0,0 +1,15 @@
+musl libc uses the same ELFv2 ABI on both endians of PowerPC64.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30916
+
+--- binutils-2.41/binutils/testsuite/binutils-all/addr2line.exp.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/binutils/testsuite/binutils-all/addr2line.exp 2023-09-22 20:44:37.242158767 -0500
+@@ -20,7 +20,7 @@
+ set exe [exeext]
+
+ # powerpc64 function symbols are on descriptors rather than code.
+-if [istarget powerpc64-*-*] {
++if { [istarget powerpc64-*-*] && ![istarget powerpc64-*-musl] } {
+ set opts --synthetic
+ set dot {\.}
+ }
diff --git a/system/binutils/pr25749-test-size.patch b/system/binutils/pr25749-test-size.patch
new file mode 100644
index 000000000..c5d4c46d9
--- /dev/null
+++ b/system/binutils/pr25749-test-size.patch
@@ -0,0 +1,26 @@
+Loading these libraries on musl appear to be affected by ASLR.
+
+The size has the entire address loaded, and we only want the size bytes.
+
+Not reported upstream.
+
+--- binutils-2.41/ld/testsuite/ld-elf/pr25749-1b.c.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/pr25749-1b.c 2023-09-29 22:43:56.154343091 -0500
+@@ -5,5 +5,5 @@
+ intptr_t
+ size (void)
+ {
+- return (intptr_t) &_binary_pr25749_1_c_size;
++ return (intptr_t) &_binary_pr25749_1_c_size & 0xfff;
+ }
+--- binutils-2.41/ld/testsuite/ld-elf/pr25749-2.c.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/pr25749-2.c 2023-09-30 00:20:28.484403583 -0500
+@@ -6,7 +6,7 @@
+ int
+ main ()
+ {
+- if (size == 289 /* size of this file */)
++ if ((size & 0xfff) == 299 /* size of this file */)
+ printf ("PASS\n");
+ #ifdef __GLIBC_PREREQ
+ # if !__GLIBC_PREREQ (2, 28)
diff --git a/system/binutils/remove-pr19553c-test.patch b/system/binutils/remove-pr19553c-test.patch
index 7e5b76ab0..a536137b7 100644
--- a/system/binutils/remove-pr19553c-test.patch
+++ b/system/binutils/remove-pr19553c-test.patch
@@ -2,13 +2,13 @@ This test requires symbol versioning which the musl libc does not support.
--- binutils-2.29/ld/testsuite/ld-elf/indirect.exp.old 2017-07-04 08:43:21.000000000 +0000
+++ binutils-2.29/ld/testsuite/ld-elf/indirect.exp 2017-08-19 05:00:13.086002872 +0000
-@@ -186,9 +186,6 @@
- {"Run with libpr19553b.so"
- "-Wl,--no-as-needed tmpdir/libpr19553b.so tmpdir/libpr19553d.so -Wl,-rpath-link,." ""
- {pr19553a.c} "pr19553b" "pr19553b.out"}
-- {"Run with libpr19553c.so"
-- "-Wl,--no-as-needed tmpdir/libpr19553c.so tmpdir/libpr19553b.so tmpdir/libpr19553d.so" ""
-- {pr19553a.c} "pr19553c" "pr19553c.out"}
- {"Run with libpr19553d.so"
- "-Wl,--no-as-needed tmpdir/libpr19553d.so tmpdir/libpr19553b.so -Wl,-rpath-link,." ""
- {pr19553a.c} "pr19553d" "pr19553d.out"}
+@@ -190,9 +190,6 @@
+ [list "Run with libpr19553b.so" \
+ "-Wl,--no-as-needed tmpdir/libpr19553b.so tmpdir/libpr19553d.so -Wl,-rpath-link,." "" \
+ {pr19553a.c} "pr19553b" "pr19553b.out"] \
+- [list "Run with libpr19553c.so" \
+- "-Wl,--no-as-needed tmpdir/libpr19553c.so tmpdir/libpr19553b.so tmpdir/libpr19553d.so" "" \
+- {pr19553a.c} "pr19553c" "pr19553c.out"] \
+ [list "Run with libpr19553d.so" \
+ "-Wl,--no-as-needed tmpdir/libpr19553d.so tmpdir/libpr19553b.so -Wl,-rpath-link,." "" \
+ {pr19553a.c} "pr19553d" "pr19553d.out"] \
diff --git a/system/binutils/remove-pr19719-test.patch b/system/binutils/remove-pr19719-test.patch
index 8fbc08db6..09786fee6 100644
--- a/system/binutils/remove-pr19719-test.patch
+++ b/system/binutils/remove-pr19719-test.patch
@@ -1,9 +1,9 @@
We always use -fPIE (it's in our spec file), so it isn't possible to test this.
--- binutils-2.30/ld/testsuite/ld-elf/shared.exp.old 2018-05-25 06:28:07.252414401 +0000
+++ binutils-2.30/ld/testsuite/ld-elf/shared.exp 2018-05-25 06:51:50.637028357 +0000
-@@ -1102,5 +1102,4 @@
+@@ -1657,5 +1657,4 @@
}
}
--mix_pic_and_non_pic [list "arm*-*-*" "aarch64*-*-*"] "" "" "pr19719"
+-mix_pic_and_non_pic [list "arm*-*-*"] "" "" "pr19719"
mix_pic_and_non_pic [] "-fPIE" "-pie" "pr19719pie"
diff --git a/system/binutils/remove-pr2404-tests.patch b/system/binutils/remove-pr2404-tests.patch
index 9efdf5242..8dd7db65d 100644
--- a/system/binutils/remove-pr2404-tests.patch
+++ b/system/binutils/remove-pr2404-tests.patch
@@ -1,71 +1,91 @@
These tests fail to link correctly on musl.
---- binutils-2.29/ld/testsuite/ld-elf/shared.exp.old 2017-07-04 08:43:21.000000000 +0000
-+++ binutils-2.29/ld/testsuite/ld-elf/shared.exp 2017-08-19 04:59:05.319481464 +0000
-@@ -375,15 +375,6 @@
- {"Build needed3"
- "tmpdir/needed3.o -Wl,--as-needed -Ltmpdir -lneeded3a -lneeded3b -lneeded1b" ""
- {dummy.c} {} "needed3"}
-- {"Build libpr2404a.so"
-- "-shared" "-fPIC"
-- {pr2404a.c} {} "libpr2404a.so"}
-- {"Build libpr2404n.so"
-- "-shared -Wl,-z,now" "-fPIC"
-- {pr2404a.c} {} "libpr2404n.so"}
-- {"Build libpr2404b.a"
-- "" ""
-- {pr2404b.c} {} "libpr2404b.a"}
- {"Build rdynamic-1"
- "-Wl,--no-dynamic-linker,-export-dynamic,--gc-sections" "-ffunction-sections"
- {rdynamic-1.c} {{readelf {-s} rdynamic-1.rd}} "rdynamic-1"}
-@@ -531,12 +522,6 @@
+--- binutils-2.41/ld/testsuite/ld-elf/shared.exp.old 2023-09-22 20:47:52.781342124 -0500
++++ binutils-2.41/ld/testsuite/ld-elf/shared.exp 2023-09-22 20:54:03.151915244 -0500
+@@ -799,30 +799,6 @@
+
+ run_cc_link_tests [list \
+ [list \
+- "Build libpr2404a.so" \
+- "-shared $NOSANITIZE_CFLAGS" \
+- "-fPIC $NOSANITIZE_CFLAGS" \
+- {pr2404a.c} \
+- {} \
+- "libpr2404a.so" \
+- ] \
+- [list \
+- "Build libpr2404n.so" \
+- "-shared -Wl,-z,now $NOSANITIZE_CFLAGS" \
+- "-fPIC $NOSANITIZE_CFLAGS" \
+- {pr2404a.c} \
+- {} \
+- "libpr2404n.so" \
+- ] \
+- [list \
+- "Build libpr2404b.a" \
+- "" \
+- "$NOSANITIZE_CFLAGS" \
+- {pr2404b.c} \
+- {} \
+- "libpr2404b.a" \
+- ] \
+- [list \
+ "Build libpr26590a.so" \
+ "-shared" \
+ "-fPIC" \
+@@ -1132,17 +1108,6 @@
[list "Run relmain" \
"-Wl,--no-as-needed,-rpath=tmpdir -Ltmpdir -lrel" "" \
{relmain.c} "relmain" "relmain.out" ] \
- [list "Run pr2404" \
-- "-Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" "" \
-- {dummy.c} "pr2404" "pr2404.out" ] \
+- "$NOSANITIZE_CFLAGS -Wl,--no-as-needed \
+- tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
+- "" \
+- {dummy.c} "pr2404" "pr2404.out" \
+- "$NOSANITIZE_CFLAGS" ] \
- [list "Run pr2404n" \
-- "-Wl,-z,now -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" "" \
-- {dummy.c} "pr2404n" "pr2404.out" ] \
+- "$NOSANITIZE_CFLAGS -Wl,-z,now \
+- -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" "" \
+- {dummy.c} "pr2404n" "pr2404.out" \
+- "$NOSANITIZE_CFLAGS" ] \
[list "Run pr18458" \
"-Wl,--no-as-needed,-z,now tmpdir/libpr18458a.so tmpdir/libpr18458b.so" "" \
{pr18458c.c} "pr18458" "pass.out" ] \
-@@ -675,14 +660,6 @@
+@@ -1341,14 +1306,6 @@
|| [istarget *-*-gnu*] } {
run_cc_link_tests [list \
[list \
- "Build libpr2404b.a with PIE" \
- "" \
-- "-fPIE" \
+- "-fPIE $NOSANITIZE_CFLAGS" \
- { pr2404b.c } \
- {} \
- "libpr2404b.a" \
- ] \
- [list \
"Build pr19579a.o" \
- "" "-fPIE" \
+ "" "-fPIE -fcommon" \
{pr19579a.c} \
-@@ -717,24 +694,6 @@
+@@ -1428,24 +1385,6 @@
"-fPIE" \
] \
[list \
- "Run pr2404 with PIE" \
-- "-pie -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
+- "-pie $NOSANITIZE_CFLAGS -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
- "" \
- { dummy.c } \
- "pr2404pie" \
- "pr2404.out" \
-- "-fPIE" \
+- "-fPIE $NOSANITIZE_CFLAGS" \
- ] \
- [list \
- "Run pr2404 with PIE (-z now)" \
-- "-pie -Wl,-z,now -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" \
+- "-pie $NOSANITIZE_CFLAGS -Wl,-z,now -Wl,--no-as-needed tmpdir/pr2404b.o tmpdir/libpr2404n.so" \
- "" \
- { dummy.c } \
- "pr2404pien" \
- "pr2404.out" \
-- "-fPIE" \
+- "-fPIE $NOSANITIZE_CFLAGS" \
- ] \
- [list \
"Run pr18718" \
diff --git a/system/binutils/skip-thumb-plt-musl.patch b/system/binutils/skip-thumb-plt-musl.patch
new file mode 100644
index 000000000..f88500de2
--- /dev/null
+++ b/system/binutils/skip-thumb-plt-musl.patch
@@ -0,0 +1,28 @@
+The file offsets are different causing this test to fail on hard-float EABI targets.
+
+Add musl target triplet alongside the glibc one.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30923
+
+--- binutils-2.41/ld/testsuite/ld-arm/thumb-plt.d.old 2023-07-02 23:00:00.000000000 +0000
++++ binutils-2.41/ld/testsuite/ld-arm/thumb-plt.d 2023-09-30 11:03:51.611314942 +0000
+@@ -2,7 +2,7 @@
+ #name: Thumb only PLT and GOT
+ #ld: -shared -e0 -z max-page-size=0x10000
+ #objdump: -dr
+-#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf
++#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf *-*-musleabihf
+
+ .*: +file format .*arm.*
+
+--- binutils-2.41/ld/testsuite/ld-arm/thumb-plt-got.d.old 2023-07-02 23:00:00.000000000 +0000
++++ binutils-2.41/ld/testsuite/ld-arm/thumb-plt-got.d 2023-09-30 11:04:19.175314931 +0000
+@@ -2,7 +2,7 @@
+ #name: Thumb only PLT and GOT LSB Symbol
+ #ld: -shared -e0 -z max-page-size=0x10000
+ #readelf: -rx .got
+-#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf
++#skip: *-*-pe *-*-wince *-*-vxworks armeb-*-* *-*-gnueabihf *-*-musleabihf
+
+ Relocation section '.rel.plt' at offset 0x108 contains 1 entry:
+ Offset Info Type Sym.Value Sym. Name
diff --git a/system/binutils/srec.patch b/system/binutils/srec.patch
deleted file mode 100644
index ce3eac10b..000000000
--- a/system/binutils/srec.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-X-Git-Url: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blobdiff_plain;f=bfd%2Fmerge.c;h=632c852390355829f95e149b7d72f0982a1a0b2b;hp=fb7c0858bebb27b5375564054c148b2b68124554;hb=ebd2263ba9a9124d93bbc0ece63d7e0fae89b40e;hpb=65d8004072ccb15441c143c380949d785a8446cd
-
-diff --git a/bfd/merge.c b/bfd/merge.c
-index fb7c085..632c852 100644
---- a/bfd/merge.c
-+++ b/bfd/merge.c
-@@ -621,7 +621,7 @@ is_suffix (const struct sec_merge_hash_entry *A,
-
- /* This is a helper function for _bfd_merge_sections. It attempts to
- merge strings matching suffixes of longer strings. */
--static bfd_boolean
-+static struct sec_merge_sec_info *
- merge_strings (struct sec_merge_info *sinfo)
- {
- struct sec_merge_hash_entry **array, **a, *e;
-@@ -633,7 +633,7 @@ merge_strings (struct sec_merge_info *sinfo)
- amt = sinfo->htab->size * sizeof (struct sec_merge_hash_entry *);
- array = (struct sec_merge_hash_entry **) bfd_malloc (amt);
- if (array == NULL)
-- return FALSE;
-+ return NULL;
-
- for (e = sinfo->htab->first, a = array; e; e = e->next)
- if (e->alignment)
-@@ -703,11 +703,6 @@ merge_strings (struct sec_merge_info *sinfo)
- }
- }
- secinfo->sec->size = size;
-- if (secinfo->sec->alignment_power != 0)
-- {
-- bfd_size_type align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-- secinfo->sec->size = (secinfo->sec->size + align - 1) & -align;
-- }
-
- /* And now adjust the rest, removing them from the chain (but not hashtable)
- at the same time. */
-@@ -724,7 +719,7 @@ merge_strings (struct sec_merge_info *sinfo)
- e->u.index = e->u.suffix->u.index + (e->u.suffix->len - e->len);
- }
- }
-- return TRUE;
-+ return secinfo;
- }
-
- /* This function is called once after all SEC_MERGE sections are registered
-@@ -740,7 +735,8 @@ _bfd_merge_sections (bfd *abfd,
-
- for (sinfo = (struct sec_merge_info *) xsinfo; sinfo; sinfo = sinfo->next)
- {
-- struct sec_merge_sec_info * secinfo;
-+ struct sec_merge_sec_info *secinfo;
-+ bfd_size_type align;
-
- if (! sinfo->chain)
- continue;
-@@ -751,6 +747,7 @@ _bfd_merge_sections (bfd *abfd,
- secinfo->next = NULL;
-
- /* Record the sections into the hash table. */
-+ align = 1;
- for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
- if (secinfo->sec->flags & SEC_EXCLUDE)
- {
-@@ -758,18 +755,25 @@ _bfd_merge_sections (bfd *abfd,
- if (remove_hook)
- (*remove_hook) (abfd, secinfo->sec);
- }
-- else if (! record_section (sinfo, secinfo))
-- return FALSE;
--
-- if (secinfo)
-- continue;
-+ else
-+ {
-+ if (!record_section (sinfo, secinfo))
-+ return FALSE;
-+ if (align)
-+ {
-+ align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-+ if ((secinfo->sec->size & (align - 1)) != 0)
-+ align = 0;
-+ }
-+ }
-
- if (sinfo->htab->first == NULL)
- continue;
-
- if (sinfo->htab->strings)
- {
-- if (!merge_strings (sinfo))
-+ secinfo = merge_strings (sinfo);
-+ if (!secinfo)
- return FALSE;
- }
- else
-@@ -789,8 +793,7 @@ _bfd_merge_sections (bfd *abfd,
- e->secinfo->first_str = e;
- size = 0;
- }
-- size = (size + e->alignment - 1)
-- & ~((bfd_vma) e->alignment - 1);
-+ size = (size + e->alignment - 1) & ~((bfd_vma) e->alignment - 1);
- e->u.index = size;
- size += e->len;
- secinfo = e->secinfo;
-@@ -798,11 +801,16 @@ _bfd_merge_sections (bfd *abfd,
- secinfo->sec->size = size;
- }
-
-- /* Finally remove all input sections which have not made it into
-- the hash table at all. */
-- for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-- if (secinfo->first_str == NULL)
-- secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP;
-+ /* If the input sections were padded according to their alignments,
-+ then pad the output too. */
-+ if (align)
-+ secinfo->sec->size = (secinfo->sec->size + align - 1) & -align;
-+
-+ /* Finally remove all input sections which have not made it into
-+ the hash table at all. */
-+ for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-+ if (secinfo->first_str == NULL)
-+ secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP;
- }
-
- return TRUE;
diff --git a/system/binutils/vers-tests-eabi.patch b/system/binutils/vers-tests-eabi.patch
new file mode 100644
index 000000000..2ce59cee2
--- /dev/null
+++ b/system/binutils/vers-tests-eabi.patch
@@ -0,0 +1,33 @@
+By default, the vers4 tests use `sed` to look for `Version` lines.
+
+The problem is, on 32-bit ARM targets we have Version5 EABI. This causes
+the tests to fail, like so:
+
+ objdump --private-headers tmpdir/vers4b | sed -n /Version/,\$p > tmpdir/objdump.out
+ private flags = 0x5000400: [Version5 EABI] [hard-float ABI]
+
+ objdump_emptyverstuff: did not expect any output from objdump
+ FAIL: vers4b
+
+Take 'private flags' lines out of the output to fix this.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30924
+
+--- binutils-2.41/ld/testsuite/ld-elfvers/vers.exp.old 2023-09-30 21:51:47.304868575 -0500
++++ binutils-2.41/ld/testsuite/ld-elfvers/vers.exp 2023-09-30 21:52:49.738253244 -0500
+@@ -215,11 +215,14 @@
+ # this probably means that there is version information in libc, so we
+ # can't really perform this test.
+ return 1
++ } else { if { [string match "*Version? EABI*" $exec_output] } then {
++# there is EABI Version information in the private flags of the binary.
++ return 1
+ } else {
+ verbose -log "$exec_output"
+ verbose -log "objdump_emptyverstuff: did not expect any output from objdump"
+ return 0
+- } }
++ } } }
+
+ }
+
diff --git a/system/binutils/visibility-musl.patch b/system/binutils/visibility-musl.patch
new file mode 100644
index 000000000..4b833ffd3
--- /dev/null
+++ b/system/binutils/visibility-musl.patch
@@ -0,0 +1,19 @@
+The tests need to know musl can support symbol visibility.
+
+Upstream-URL: https://sourceware.org/bugzilla/show_bug.cgi?id=30915
+
+--- binutils-2.41/ld/testsuite/ld-vsb/main.c.old 2023-07-02 18:00:00.000000000 -0500
++++ binutils-2.41/ld/testsuite/ld-vsb/main.c 2023-09-29 03:03:53.103603661 -0500
+@@ -5,9 +5,9 @@
+ int
+ main (void)
+ {
+-#if defined (__GLIBC__) && (__GLIBC__ > 2 \
+- || (__GLIBC__ == 2 \
+- && __GLIBC_MINOR__ >= 2))
++#if !defined (__GLIBC__) || (__GLIBC__ > 2 \
++ || (__GLIBC__ == 2 \
++ && __GLIBC_MINOR__ >= 2))
+ puts ("yes");
+ #else
+ puts ("no");
diff --git a/system/binutils/vsb-hammer.patch b/system/binutils/vsb-hammer.patch
new file mode 100644
index 000000000..72446276d
--- /dev/null
+++ b/system/binutils/vsb-hammer.patch
@@ -0,0 +1,19 @@
+Disable protected visibility tests that are known to be "broken" / "a mess".
+
+Not reported upstream to binutils, as this is a musl thing.
+
+--- binutils-2.41/ld/testsuite/ld-vsb/vsb.exp.old 2023-07-02 23:00:00.000000000 +0000
++++ binutils-2.41/ld/testsuite/ld-vsb/vsb.exp 2023-09-30 11:21:09.367314546 +0000
+@@ -519,12 +519,8 @@
+
+ visibility_run hidden
+ visibility_run hidden_normal
+-visibility_run hidden_undef
+ visibility_run hidden_undef_def
+ visibility_run hidden_weak
+-visibility_run protected
+-visibility_run protected_undef
+-visibility_run protected_undef_def
+ visibility_run protected_weak
+ visibility_run normal
+