aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--sysdeps/mips/dl-machine.h13
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c814078..df0650e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Handle symbol
versioning.
+ (elf_machine_got_rel): Only add runtime display if needed.
2000-04-13 Andreas Jaeger <aj@suse.de>
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index fecd3e1..960b6b7 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -504,10 +504,15 @@ elf_machine_got_rel (struct link_map *map, int lazy)
generated by gnu ld. Skip these reserved entries from relocation. */
i = (got[1] & ELF_MIPS_GNU_GOT1_MASK)? 2: 1;
n = map->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val;
- /* Add the run-time display to all local got entries. */
- while (i < n)
- got[i++] += map->l_addr;
-
+ /* Add the run-time display to all local got entries if needed. */
+ if (map->l_addr != 0)
+ {
+ while (i < n)
+ got[i++] += map->l_addr;
+ }
+ else
+ i = n;
+
/* Handle global got entries. */
got += n;
sym = (void *) D_PTR (map, l_info[DT_SYMTAB]);