22 lines
1.1 KiB
Diff
22 lines
1.1 KiB
Diff
|
Newer binutils (>= 2.31) will emit PLT32 relocs for call/jmp
|
||
|
instructions on x86_64 in some cases, instead of PC32 relocs
|
||
|
as before. This can only be done because on x86-64 the PLT
|
||
|
doesn't need any special setup, and in turn this means that
|
||
|
for post-processing/after-link purposes PLT32 and PC32 relocs
|
||
|
can be handled the same. elf2efi simply ignores all PC-relative
|
||
|
relocs (as the code is already fully final for them) and PLT32
|
||
|
is one of them, so add it to the list.
|
||
|
|
||
|
(Otherwise an "Unrecognized relocation type 4" error occurs
|
||
|
when building some of the EFI images for IPXE).
|
||
|
--- a/src/util/elf2efi.c.mm 2018-07-25 12:19:10.647661846 +0000
|
||
|
+++ b/src/util/elf2efi.c 2018-07-25 13:18:18.609633494 +0000
|
||
|
@@ -637,6 +637,7 @@ static void process_reloc ( struct elf_f
|
||
|
case ELF_MREL ( EM_ARM, R_ARM_THM_PC22 ) :
|
||
|
case ELF_MREL ( EM_ARM, R_ARM_THM_JUMP24 ) :
|
||
|
case ELF_MREL ( EM_X86_64, R_X86_64_PC32 ) :
|
||
|
+ case ELF_MREL ( EM_X86_64, R_X86_64_PLT32 ) :
|
||
|
case ELF_MREL ( EM_AARCH64, R_AARCH64_CALL26 ) :
|
||
|
case ELF_MREL ( EM_AARCH64, R_AARCH64_JUMP26 ) :
|
||
|
case ELF_MREL ( EM_AARCH64, R_AARCH64_ADR_PREL_LO21 ) :
|