qemu/ipxe-fix-build.patch
2018-07-31 14:50:24 +00:00

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 ) :