Displaying 3 results from an estimated 3 matches for "plt32".
Did you mean:
flt32
2020 Nov 02
2
[llvm-mc] FreeBSD kernel module performance impact when upgrading clang
...skeleton.o
skeleton.o: file format elf64-x86-64
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
0000000000000017 R_X86_64_32S .rodata.str1.1+0x000000000000002b
0000000000000020 R_X86_64_32S .rodata.str1.1+0x0000000000000015
0000000000000029 R_X86_64_PLT32 uprintf-0x0000000000000004
[...]
The relocation for the external uprintf call is changed from R_X86_64_PC32 to R_X86_64_PLT32.
Normally, amd64/x86 kernel modules are relocatable object files (via ld -r). Because of that, D43383 typically has no impact as the FreeBSD loader sees the relocation...
2020 Nov 05
0
[EXTERNAL] [llvm-mc] FreeBSD kernel module performance impact when upgrading clang
...;> 1298: e8 04 00 00 00 callq 12a1 <foo+0x4>
>>
>> 000000000000129d <foo>:
>> 129d: c3 retq
>>
>>
>> The call to foo does not go through the PLT. That's the behavior seen using clang5. But clang10 generates the PLT32 relocation instead, like this:
>>
>> $ cat b.s
>> .globl _start, foo
>> _start:
>> .byte 0xe8
>> .reloc ., R_X86_64_PLT32, foo - 4
>> .long foo - .
>> foo:
>> ret
>>
>> $ as b.s -o b.o
>> $ ld.lld-10 -shared -o b.so b.o...
2015 Jan 26
2
[LLVMdev] [llvm] r188726 - Adding PIC support for ELF on x86_64 platforms
...Value.Addend = Addend;
@@ -1150,8 +1181,67 @@ void RuntimeDyldELF::processRelocationRe
ELF::R_390_PC32DBL, Addend);
else
resolveRelocation(Section, Offset, StubAddress, RelType, Addend);
+ } else if (Arch == Triple::x86_64 && RelType == ELF::R_X86_64_PLT32) {
+ // The way the PLT relocations normally work is that the linker allocates the
+ // PLT and this relocation makes a PC-relative call into the PLT. The PLT
+ // entry will then jump to an address provided by the GOT. On first call, the
+ // GOT address will point back into PLT code...