summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-05-04 20:18:18 -0400
committerRich Felker <dalias@aerifal.cx>2012-05-04 20:18:18 -0400
commit4027f4e8f948c26be5e61c774f9f9ce9af8942b5 (patch)
treece1fa375e90bd90fb48b63c2885f9230ab366c9b
parentdb4096c5f2ffb15e52015004ab5a900b820c6683 (diff)
downloadmusl-4027f4e8f948c26be5e61c774f9f9ce9af8942b5.tar.gz
fix error reporting for dlsym with global symbols
-rw-r--r--src/ldso/dynlink.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index b51ae77f..02c880b4 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -723,7 +723,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
}
if (p == head || p == RTLD_DEFAULT) {
void *res = find_sym(head, s, 0);
- if (!res) errflag = 1;
+ if (!res) goto failed;
return res;
}
h = hash(s);
@@ -736,6 +736,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
return p->deps[i]->base + sym->st_value;
}
+failed:
errflag = 1;
snprintf(errbuf, sizeof errbuf, "Symbol not found: %s", s);
return 0;