diff options
Diffstat (limited to 'main/musl/0030-fix-ldso-reserved-library-name-handling.patch')
-rw-r--r-- | main/musl/0030-fix-ldso-reserved-library-name-handling.patch | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/main/musl/0030-fix-ldso-reserved-library-name-handling.patch b/main/musl/0030-fix-ldso-reserved-library-name-handling.patch deleted file mode 100644 index fc410c6a46..0000000000 --- a/main/musl/0030-fix-ldso-reserved-library-name-handling.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 5ffe515ca485c8e6e57cd5acda6bc6008f85660c Mon Sep 17 00:00:00 2001 -From: Szabolcs Nagy <nsz@port70.net> -Date: Tue, 1 Nov 2016 02:49:09 +0100 -Subject: [PATCH] fix ldso reserved library name handling - -If a DT_NEEDED entry was the prefix of a reserved library name -(up to the first dot) then it was incorrectly treated as a libc -reserved name. - -e.g. libp.so dependency was not loaded as it matched libpthread -reserved name. ---- - ldso/dynlink.c | 38 +++++++++++++++++++------------------- - 1 file changed, 19 insertions(+), 19 deletions(-) - -diff --git a/ldso/dynlink.c b/ldso/dynlink.c -index d11776dc..acb73bc2 100644 ---- a/ldso/dynlink.c -+++ b/ldso/dynlink.c -@@ -906,27 +906,27 @@ static struct dso *load_library(const char *name, struct dso *needed_by) - /* Catch and block attempts to reload the implementation itself */ - if (name[0]=='l' && name[1]=='i' && name[2]=='b') { - static const char reserved[] = -- "c\0pthread\0rt\0m\0dl\0util\0xnet\0"; -- const char *rp; -- char *z = strchr(name, '.'); -- if (z) { -- size_t l = z-name; -- for (rp=reserved; *rp && strncmp(name+3, rp, l-3); rp+=strlen(rp)+1); -- if (*rp) { -- if (ldd_mode) { -- /* Track which names have been resolved -- * and only report each one once. */ -- static unsigned reported; -- unsigned mask = 1U<<(rp-reserved); -- if (!(reported & mask)) { -- reported |= mask; -- dprintf(1, "\t%s => %s (%p)\n", -- name, ldso.name, -- ldso.base); -- } -+ "c.pthread.rt.m.dl.util.xnet."; -+ const char *rp, *next; -+ for (rp=reserved; *rp; rp=next) { -+ next = strchr(rp, '.') + 1; -+ if (strncmp(name+3, rp, next-rp) == 0) -+ break; -+ } -+ if (*rp) { -+ if (ldd_mode) { -+ /* Track which names have been resolved -+ * and only report each one once. */ -+ static unsigned reported; -+ unsigned mask = 1U<<(rp-reserved); -+ if (!(reported & mask)) { -+ reported |= mask; -+ dprintf(1, "\t%s => %s (%p)\n", -+ name, ldso.name, -+ ldso.base); - } -- is_self = 1; - } -+ is_self = 1; - } - } - if (!strcmp(name, ldso.name)) is_self = 1; --- -2.11.0 - |