* elf32-arm.c (elf32_arm_final_link_relocate): Mark PLT calls via
authorNick Clifton <nickc@redhat.com>
Thu, 13 Oct 2011 09:47:51 +0000 (09:47 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 13 Oct 2011 09:47:51 +0000 (09:47 +0000)
stubs as resolved.

bfd/ChangeLog
bfd/elf32-arm.c

index e81f23985f108a775d9517d242af66015020a73f..42ef646d4d8b062a8b826d7db43898e48e85780b 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * elf32-arm.c (elf32_arm_final_link_relocate): Mark PLT calls via
+       stubs as resolved.
+
 2011-10-11  Alan Modra  <amodra@gmail.com>
 
        PR binutils/13278
index 02d667f44034b657b061532b9cb01ae087c47b79..bcf0aac3196befd2b4668898fa457e8035c590dc 100644 (file)
@@ -8220,15 +8220,19 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
                {
                  /* The target is out of reach, so redirect the
                     branch to the local stub for this function.  */
-
                  stub_entry = elf32_arm_get_stub_entry (input_section,
                                                         sym_sec, h,
                                                         rel, globals,
                                                         stub_type);
-                 if (stub_entry != NULL)
-                   value = (stub_entry->stub_offset
-                            + stub_entry->stub_sec->output_offset
-                            + stub_entry->stub_sec->output_section->vma);
+                 {
+                   if (stub_entry != NULL)
+                     value = (stub_entry->stub_offset
+                              + stub_entry->stub_sec->output_offset
+                              + stub_entry->stub_sec->output_section->vma);
+
+                   if (plt_offset != (bfd_vma) -1)
+                     *unresolved_reloc_p = FALSE;
+                 }
                }
              else
                {
@@ -8653,9 +8657,14 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
                                                       rel, globals,
                                                       stub_type);
                if (stub_entry != NULL)
-                 value = (stub_entry->stub_offset
-                          + stub_entry->stub_sec->output_offset
-                          + stub_entry->stub_sec->output_section->vma);
+                 {
+                   value = (stub_entry->stub_offset
+                            + stub_entry->stub_sec->output_offset
+                            + stub_entry->stub_sec->output_section->vma);
+
+                   if (plt_offset != (bfd_vma) -1)
+                     *unresolved_reloc_p = FALSE;
+                 }
 
                /* If this call becomes a call to Arm, force BLX.  */
                if (globals->use_blx && (r_type == R_ARM_THM_CALL))