OSDN Git Service

linker: Compute symbol name before lookup so we can also use it for error msg
authorDima Zavin <dima@android.com>
Tue, 12 May 2009 17:59:09 +0000 (10:59 -0700)
committerDima Zavin <dima@android.com>
Tue, 12 May 2009 17:59:09 +0000 (10:59 -0700)
Signed-off-by: Dima Zavin <dima@android.com>
linker/linker.c

index 63e04c7..bb3b8e7 100644 (file)
@@ -1121,7 +1121,8 @@ static int reloc_library(soinfo *si, Elf32_Rel *rel, unsigned count)
         DEBUG("%5d Processing '%s' relocation at index %d\n", pid,
               si->name, idx);
         if(sym != 0) {
-            s = _do_lookup(si, strtab + symtab[sym].st_name, &base);
+            sym_name = (char *)(strtab + symtab[sym].st_name);
+            s = _do_lookup(si, sym_name, &base);
             if(s == 0) {
                 ERROR("%5d cannot locate '%s'...\n", pid, sym_name);
                 return -1;
@@ -1141,7 +1142,6 @@ static int reloc_library(soinfo *si, Elf32_Rel *rel, unsigned count)
                 return -1;
             }
             sym_addr = (unsigned)(s->st_value + base);
-            sym_name = (char *)(strtab + symtab[sym].st_name);
             COUNT_RELOC(RELOC_SYMBOL);
         } else {
             s = 0;