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