bionic/linker: change lookup() to return soinfo, not base
diff --git a/linker/dlfcn.c b/linker/dlfcn.c
index b54674f..053713c 100644
--- a/linker/dlfcn.c
+++ b/linker/dlfcn.c
@@ -74,7 +74,7 @@
 
 void *dlsym(void *handle, const char *symbol)
 {
-    unsigned base;
+    soinfo *found;
     Elf32_Sym *sym;
     unsigned bind;
 
@@ -90,19 +90,19 @@
     }
 
     if(handle == RTLD_DEFAULT) {
-        sym = lookup(symbol, &base);
+        sym = lookup(symbol, &found);
     } else if(handle == RTLD_NEXT) {
-        sym = lookup(symbol, &base);
+        sym = lookup(symbol, &found);
     } else {
-        sym = lookup_in_library((soinfo*) handle, symbol);
-        base = ((soinfo*) handle)->base;
+        found = (soinfo*)handle;
+        sym = lookup_in_library(found, symbol);
     }
 
     if(likely(sym != 0)) {
         bind = ELF32_ST_BIND(sym->st_info);
 
         if(likely((bind == STB_GLOBAL) && (sym->st_shndx != 0))) {
-            unsigned ret = sym->st_value + base;
+            unsigned ret = sym->st_value + found->base;
             pthread_mutex_unlock(&dl_lock);
             return (void*)ret;
         }
diff --git a/linker/linker.c b/linker/linker.c
index 6f09837..b260749 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -482,7 +482,7 @@
 
 /* This is used by dl_sym().  It performs a global symbol lookup.
  */
-Elf32_Sym *lookup(const char *name, unsigned *base)
+Elf32_Sym *lookup(const char *name, soinfo **found)
 {
     unsigned elf_hash = 0;
     Elf32_Sym *s = NULL;
@@ -494,7 +494,7 @@
             continue;
         s = _do_lookup_in_so(si, name, &elf_hash);
         if (s != NULL) {
-            *base = si->base;
+            *found = si;
             break;
         }
     }
diff --git a/linker/linker.h b/linker/linker.h
index 69042c0..d289c81 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -203,7 +203,7 @@
 soinfo *find_library(const char *name);
 unsigned unload_library(soinfo *si);
 Elf32_Sym *lookup_in_library(soinfo *si, const char *name);
-Elf32_Sym *lookup(const char *name, unsigned *base);
+Elf32_Sym *lookup(const char *name, soinfo **found);
 const char *linker_get_error(void);
 
 #ifdef ANDROID_ARM_LINKER