aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Gilling <konkers@android.com>2009-07-30 06:57:18 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2009-07-30 06:57:18 -0700
commit8b09aa39c3ab7bf17384082728001550c072e8c7 (patch)
treefc710cf2c90699fdb0911ba122aed4e1b970cddb
parente5bcc9dc5ccf791003b019e117734b871e59890c (diff)
parentfde8642fc43bdd224e43e5ee9583a49a758fb03c (diff)
downloadandroid_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.c8
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);