* elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 12 Apr 2003 08:50:28 +0000 (08:50 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Sat, 12 Apr 2003 08:50:28 +0000 (08:50 +0000)
occurrences of the same test changed in the previous patch.
Optimize.

bfd/ChangeLog
bfd/elfxx-mips.c

index 3b7c715fe9ebeb8b1fd920c7cfd639eda279c157..d72ec9e6bfdc9284eb7847af8997c35d9979b6e4 100644 (file)
@@ -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.
index 73d052033ad21fb3a9b0bd3504e9da55d9168c83..0c3a5d96fca3361c1a982aaf5b0b6df5a5822e52 100644 (file)
@@ -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;