+ splt->output_offset
+ h->plt.offset);
*unresolved_reloc_p = FALSE;
+ /* The PLT entry is in ARM mode, regardless of the
+ target function. */
+ sym_flags = STT_FUNC;
}
from = (input_section->output_section->vma
/* If the Thumb BLX instruction is available, convert the
BL to a BLX instruction to call the ARM-mode PLT entry. */
lower_insn = (lower_insn & ~0x1000) | 0x0800;
+ sym_flags = STT_FUNC;
}
else
- /* Target the Thumb stub before the ARM PLT entry. */
- value -= PLT_THUMB_STUB_SIZE;
+ {
+ /* Target the Thumb stub before the ARM PLT entry. */
+ value -= PLT_THUMB_STUB_SIZE;
+ sym_flags = STT_ARM_TFUNC;
+ }
*unresolved_reloc_p = FALSE;
}
{
h->root.u.def.section = s;
h->root.u.def.value = h->plt.offset;
- }
- /* Make sure the function is not marked as Thumb, in case
- it is the target of an ABS32 relocation, which will
- point to the PLT entry. */
- if (ELF_ST_TYPE (h->type) == STT_ARM_TFUNC)
- h->type = ELF_ST_INFO (ELF_ST_BIND (h->type), STT_FUNC);
+ /* Make sure the function is not marked as Thumb, in case
+ it is the target of an ABS32 relocation, which will
+ point to the PLT entry. */
+ if (ELF_ST_TYPE (h->type) == STT_ARM_TFUNC)
+ h->type = ELF_ST_INFO (ELF_ST_BIND (h->type), STT_FUNC);
+ }
/* Make room for this entry. */
s->size += htab->plt_entry_size;
.* <lib_func2>:
.*: f000 e80e blx 1000350 <__app_func_from_thumb>
- .*: f000 e818 blx 1000368 <__app_func_weak_from_thumb>
- .*: f000 e810 blx 100035c <__lib_func3_from_thumb>
- .*: f000 e81a blx 1000374 <__lib_func4_from_thumb>
+ .*: f000 e81a blx 100036c <__app_func_weak_from_thumb>
+ .*: f000 e810 blx 100035c <__lib_func3_veneer>
+ .*: f000 e81c blx 1000378 <__lib_func4_from_thumb>
.*: 4770 bx lr
.*: 46c0 nop ; \(mov r8, r8\)
.*: 46c0 nop ; \(mov r8, r8\)
.*: e08ff00c add pc, pc, ip
.*: feffff84 .word 0xfeffff84
-.* <__lib_func3_from_thumb>:
- .*: e59fc000 ldr ip, \[pc, #0\] ; 1000364 <__lib_func3_from_thumb\+0x8>
- .*: e08ff00c add pc, pc, ip
- .*: feffff90 .word 0xfeffff90
+.* <__lib_func3_veneer>:
+ .*: e59fc004 ldr ip, \[pc, #4\] ; 1000368 <__lib_func3_veneer\+0xc>
+ .*: e08fc00c add ip, pc, ip
+ .*: e12fff1c bx ip
+ .*: feffff91 .word 0xfeffff91
.* <__app_func_weak_from_thumb>:
- .*: e59fc000 ldr ip, \[pc, #0\] ; 1000370 <__app_func_weak_from_thumb\+0x8>
+ .*: e59fc000 ldr ip, \[pc, #0\] ; 1000374 <__app_func_weak_from_thumb\+0x8>
.*: e08ff00c add pc, pc, ip
- .*: feffff78 .word 0xfeffff78
+ .*: feffff74 .word 0xfeffff74
.* <__lib_func4_from_thumb>:
- .*: e59fc000 ldr ip, \[pc, #0\] ; 100037c <__lib_func4_from_thumb\+0x8>
+ .*: e59fc000 ldr ip, \[pc, #0\] ; 1000380 <__lib_func4_from_thumb\+0x8>
.*: e08ff00c add pc, pc, ip
- .*: feffff84 .word 0xfeffff84
+ .*: feffff80 .word 0xfeffff80
...
.* <lib_func3>: