void-packages/srcpkgs/mumble/patches/musl-dlsym.patch

31 lines
776 B
Diff

--- overlay_gl/overlay.c
+++ overlay_gl/overlay.c
@@ -690,19 +690,24 @@ static void initializeLibrary() {
int nchains = 0;
ElfW(Sym) *symtab = NULL;
const char *strtab = NULL;
+#ifdef __GLIBC__
+ const ElfW(Addr) base = 0;
+#else
+ const ElfW(Addr) base = lm->l_addr;
+#endif
ElfW(Dyn) *dyn = lm->l_ld;
while (dyn->d_tag) {
switch (dyn->d_tag) {
case DT_HASH:
- nchains = *(int *)(dyn->d_un.d_ptr + 4);
+ nchains = *(int *)(base + dyn->d_un.d_ptr + 4);
break;
case DT_STRTAB:
- strtab = (const char *) dyn->d_un.d_ptr;
+ strtab = (const char *)(base + dyn->d_un.d_ptr);
break;
case DT_SYMTAB:
- symtab = (ElfW(Sym) *) dyn->d_un.d_ptr;
+ symtab = (ElfW(Sym) *)(base + dyn->d_un.d_ptr);
break;
}
dyn ++;