From 907cffb7c50917d1576cee6363ecbe5d269efa00 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 12 Feb 2015 13:35:11 +0000 Subject: [efi] Disallow R_X86_64_32 relocations UEFI binaries may be relocated to any location within the 64-bit address space. We compile as position-independent code with hidden visibility, which should force all relocation records to be either PC-relative (in which case no PE relocations are required) or full 64-bit relocations. There should be no R_X86_64_32 relocation records, since that would imply an invalid assumption that code could not be relocated above 4GB. Remove support for R_X86_64_32 relocation records from util/elf2efi.c, so that any such records result in a build failure rather than a potential runtime failure. Reported-by: Jan Kundrát Signed-off-by: Michael Brown --- src/util/elf2efi.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/util') diff --git a/src/util/elf2efi.c b/src/util/elf2efi.c index 45d53957..1e7a99b7 100644 --- a/src/util/elf2efi.c +++ b/src/util/elf2efi.c @@ -481,8 +481,7 @@ static void process_reloc ( bfd *bfd __attribute__ (( unused )), } else if ( strcmp ( howto->name, "R_X86_64_64" ) == 0 ) { /* Generate an 8-byte PE relocation */ generate_pe_reloc ( pe_reltab, offset, 8 ); - } else if ( ( strcmp ( howto->name, "R_386_32" ) == 0 ) || - ( strcmp ( howto->name, "R_X86_64_32" ) == 0 ) ) { + } else if ( strcmp ( howto->name, "R_386_32" ) == 0 ) { /* Generate a 4-byte PE relocation */ generate_pe_reloc ( pe_reltab, offset, 4 ); } else if ( strcmp ( howto->name, "R_386_16" ) == 0 ) { -- cgit v1.2.3-55-g7522