aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elfxx-mips.c14
2 files changed, 14 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3b7c715..d72ec9e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other
+ occurrences of the same test changed in the previous patch.
+ Optimize.
+
2003-04-11 Alexandre Oliva <aoliva@redhat.com>
* elfxx-mips.c (mips_elf_get_global_gotsym_index): New.
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 73d0520..0c3a5d9 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -3221,12 +3221,14 @@ mips_elf_calculate_relocation (abfd, input_bfd, input_section, info,
switch (r_type)
{
case R_MIPS_GOT_PAGE:
+ case R_MIPS_GOT_OFST:
/* If this symbol got a global GOT entry, we have to decay
GOT_PAGE/GOT_OFST to GOT_DISP/addend. */
- if (local_p || ! h
- || (h->root.dynindx
- < mips_elf_get_global_gotsym_index (elf_hash_table (info)
- ->dynobj)))
+ local_p = local_p || ! h
+ || (h->root.dynindx
+ < mips_elf_get_global_gotsym_index (elf_hash_table (info)
+ ->dynobj));
+ if (local_p || r_type == R_MIPS_GOT_OFST)
break;
/* Fall through. */
@@ -3512,7 +3514,7 @@ mips_elf_calculate_relocation (abfd, input_bfd, input_section, info,
/* GOT_PAGE relocations that reference non-local symbols decay
to GOT_DISP. The corresponding GOT_OFST relocation decays to
0. */
- if (! (local_p || ! h || h->root.dynindx < 0))
+ if (! local_p)
goto got_disp;
value = mips_elf_got_page (abfd, input_bfd, info, symbol + addend, NULL);
if (value == MINUS_ONE)
@@ -3523,7 +3525,7 @@ mips_elf_calculate_relocation (abfd, input_bfd, input_section, info,
break;
case R_MIPS_GOT_OFST:
- if (local_p || ! h || h->root.dynindx < 0)
+ if (local_p)
mips_elf_got_page (abfd, input_bfd, info, symbol + addend, &value);
else
value = addend;