mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
fix dlsym RTLD_NEXT support
previously this was being handled the same as a library-specific, dependency-order lookup on the next library in the global chain, which is likely to be utterly meaningless. instead the lookup needs to be in the global namespace, but omitting the initial portion of the global library chain up through the calling library.
This commit is contained in:
parent
920baab81f
commit
d93e028c6b
1 changed files with 3 additions and 1 deletions
|
@ -766,7 +766,9 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
|
|||
if (p == RTLD_NEXT) {
|
||||
for (p=head; p && (unsigned char *)ra-p->map>p->map_len; p=p->next);
|
||||
if (!p) p=head;
|
||||
p=p->next;
|
||||
void *res = find_sym(p->next, s, 0);
|
||||
if (!res) goto failed;
|
||||
return res;
|
||||
}
|
||||
if (p == head || p == RTLD_DEFAULT) {
|
||||
void *res = find_sym(head, s, 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue