+2004-11-13 Paul Brook <paul@codesourcery.com>
+
+ * bfd/elf32-arm.c (elf32_arm_final_link_relocate): Resolve
+ R_ARM_PREL31 relocations to PLT entries.
+ (elf32_arm_relocate_section, elf32_arm_gc_sweep_hook): Ditto.
+ (elf32_arm_check_relocs): Ditto.
+
2004-11-12 Bob Wilson <bob.wilson@acm.org>
* xtensa-isa.c (xtensa_interface_class_id): New.
will use the symbol's value, which may point to a PLT entry, but we
don't need to handle that here. If we created a PLT entry, all
branches in this object should go to it. */
- if ((r_type != R_ARM_ABS32 && r_type != R_ARM_REL32
-#ifndef OLD_ARM_ABI
- && r_type != R_ARM_PREL31
-#endif
- )
+ if ((r_type != R_ARM_ABS32 && r_type != R_ARM_REL32)
&& h != NULL
&& splt != NULL
&& h->plt.offset != (bfd_vma) -1)
into the output file to be resolved at run time. */
if (info->shared
&& (input_section->flags & SEC_ALLOC)
- && ((r_type != R_ARM_REL32
-#ifndef OLD_ARM_ABI
- && r_type != R_ARM_PREL31
-#endif
- ) || !SYMBOL_CALLS_LOCAL (info, h))
+ && (r_type != R_ARM_REL32
+ || !SYMBOL_CALLS_LOCAL (info, h))
&& (h == NULL
|| ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
|| h->root.type != bfd_link_hash_undefweak)
#ifndef OLD_ARM_ABI
&& r_type != R_ARM_CALL
&& r_type != R_ARM_JUMP24
+ && r_type != R_ARM_PREL31
#endif
&& r_type != R_ARM_PLT32)
{
#ifndef OLD_ARM_ABI
case R_ARM_CALL:
case R_ARM_JUMP24:
+ case R_ARM_PREL31:
#endif
case R_ARM_ABS32:
case R_ARM_THM_PC22:
h->plt.refcount -= 1;
if (r_type == R_ARM_ABS32
-#ifndef OLD_ARM_ABI
- || r_type == R_ARM_PREL31
-#endif
|| r_type == R_ARM_REL32)
{
eh = (struct elf32_arm_link_hash_entry *) h;
#ifndef OLD_ARM_ABI
|| r_type == R_ARM_CALL
|| r_type == R_ARM_JUMP24
+ || r_type == R_ARM_PREL31
#endif
|| r_type == R_ARM_PLT32)
h->needs_plt = 1;
}
if (r_type == R_ARM_ABS32
-#ifndef OLD_ARM_ABI
- || r_type == R_ARM_PREL31
-#endif
|| r_type == R_ARM_REL32)
p->count += 1;
}