diff options
author | Erik Gilling <konkers@android.com> | 2009-07-30 06:57:18 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-07-30 06:57:18 -0700 |
commit | 8b09aa39c3ab7bf17384082728001550c072e8c7 (patch) | |
tree | fc710cf2c90699fdb0911ba122aed4e1b970cddb | |
parent | e5bcc9dc5ccf791003b019e117734b871e59890c (diff) | |
parent | fde8642fc43bdd224e43e5ee9583a49a758fb03c (diff) | |
download | android_bionic-8b09aa39c3ab7bf17384082728001550c072e8c7.tar.gz android_bionic-8b09aa39c3ab7bf17384082728001550c072e8c7.tar.bz2 android_bionic-8b09aa39c3ab7bf17384082728001550c072e8c7.zip |
am fde8642f: bionic/linker: keep track of opened libraries by basename
Merge commit 'fde8642fc43bdd224e43e5ee9583a49a758fb03c'
* commit 'fde8642fc43bdd224e43e5ee9583a49a758fb03c':
bionic/linker: keep track of opened libraries by basename
-rw-r--r-- | linker/linker.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/linker/linker.c b/linker/linker.c index 0c1af9dd2..789a82840 100644 --- a/linker/linker.c +++ b/linker/linker.c @@ -976,6 +976,7 @@ load_library(const char *name) int cnt; unsigned ext_sz; unsigned req_base; + const char *bname; soinfo *si = NULL; Elf32_Ehdr *hdr; @@ -1009,7 +1010,8 @@ load_library(const char *name) * same thing would happen if we failed during linking. Configuring the * soinfo struct here is a lot more convenient. */ - si = alloc_info(name); + bname = strrchr(name, '/'); + si = alloc_info(bname ? bname + 1 : name); if (si == NULL) goto fail; @@ -1078,9 +1080,11 @@ init_library(soinfo *si) soinfo *find_library(const char *name) { soinfo *si; + const char *bname = strrchr(name, '/'); + bname = bname ? bname + 1 : name; for(si = solist; si != 0; si = si->next){ - if(!strcmp(name, si->name)) { + if(!strcmp(bname, si->name)) { if(si->flags & FLAG_ERROR) return 0; if(si->flags & FLAG_LINKED) return si; DL_ERR("OOPS: %5d recursive link to '%s'", pid, si->name); |