aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpsykose <alice@ayaya.dev>2022-11-10 18:23:48 +0000
committerpsykose <alice@ayaya.dev>2022-11-12 12:19:53 +0100
commit9bb1c89d8ef20e9a69fea9ac7035a01deb27d680 (patch)
tree3f7940330121bc1f187a5e1cf4798e21ed8132f3
parent976bb53b3b4d95a5b6f75b7191302c0de8459e57 (diff)
downloadaports-9bb1c89d8ef20e9a69fea9ac7035a01deb27d680.tar.gz
aports-9bb1c89d8ef20e9a69fea9ac7035a01deb27d680.tar.bz2
aports-9bb1c89d8ef20e9a69fea9ac7035a01deb27d680.tar.xz
main/musl: add correct relr patch for loader
acked by dalias
-rw-r--r--main/musl/APKBUILD4
-rw-r--r--main/musl/relr-4.patch12
2 files changed, 15 insertions, 1 deletions
diff --git a/main/musl/APKBUILD b/main/musl/APKBUILD
index 8b6aa73b3dc..92e99b1f953 100644
--- a/main/musl/APKBUILD
+++ b/main/musl/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Timo Teräs <timo.teras@iki.fi>
pkgname=musl
pkgver=1.2.3
-pkgrel=1
+pkgrel=2
pkgdesc="the musl c library (libc) implementation"
url="https://musl.libc.org/"
arch="all"
@@ -26,6 +26,7 @@ source="musl-$_commit.tar.gz::https://git.musl-libc.org/cgit/musl/snapshot/$_com
relr-1.patch
relr-2.patch
relr-3.patch
+ relr-4.patch
ldconfig
__stack_chk_fail_local.c
@@ -173,6 +174,7 @@ a76f79b801497ad994746cf82bb6eaf86f9e1ae646e6819fbae8532a7f4eee53a96ac1d4e789ec8f
8ebcde1e07819de208ab89ed0a71fdcc67a5b1cecec5aa19a92bc9f4f3c2708a9ff1528370089de0b71e9ec3b2e08dfa49694db433ac190ba055aa112ae12bde relr-1.patch
38b40ebedf57ba05ba14807a55a26261eeca8b6226a90a7aaebaaa31bae0bb7f5b98e0ce3ed727b704b828c9e509a21745f3e089585f8dea7092be164ec9d908 relr-2.patch
9dc41f682887ef9a7b00253f576d0b738936c20d9bc5a54fa96552a82a2f056f0111936ad9778b96745befd6a660276618b4e05bef3c7f52d8c2a9e6d41e386c relr-3.patch
+ee6ec5943df10597af0df3d6f792720a22d2070debb6933656a10a906725d1170c28c32ba8ad53efc72e77bd1d97efdbd3c80e91eddb856f377e917ff14ae8f3 relr-4.patch
8d3a2d5315fc56fee7da9abb8b89bb38c6046c33d154c10d168fb35bfde6b0cf9f13042a3bceee34daf091bc409d699223735dcf19f382eeee1f6be34154f26f ldconfig
062bb49fa54839010acd4af113e20f7263dde1c8a2ca359b5fb2661ef9ed9d84a0f7c3bc10c25dcfa10bb3c5a4874588dff636ac43d5dbb3d748d75400756d0b __stack_chk_fail_local.c
0d80f37b34a35e3d14b012257c50862dfeb9d2c81139ea2dfa101d981d093b009b9fa450ba27a708ac59377a48626971dfc58e20a3799084a65777a0c32cbc7d getconf.c
diff --git a/main/musl/relr-4.patch b/main/musl/relr-4.patch
new file mode 100644
index 00000000000..68c5446b880
--- /dev/null
+++ b/main/musl/relr-4.patch
@@ -0,0 +1,12 @@
+diff --git a/ldso/dynlink.c b/ldso/dynlink.c
+index 7b47b163..753de91d 100644
+--- a/ldso/dynlink.c
++++ b/ldso/dynlink.c
+@@ -552,6 +552,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
+
+ static void do_relr_relocs(struct dso *dso, size_t *relr, size_t relr_size)
+ {
++ if (dso == &ldso) return; // self-relocation already done a entry point
+ unsigned char *base = dso->base;
+ size_t *reloc_addr;
+ for (; relr_size; relr++, relr_size-=sizeof(size_t))