edk2/BaseTools/Source/C/GenFw
Ard Biesheuvel 0d68ce514b BaseTools/GenFw ARM: don't permit R_ARM_GOT_PREL relocations
We currently permit R_ARM_GOT_PREL relocations in the ELF32 conversion
routines, under the assumption that relative relocations are fine as
long as the section layout is the same between ELF and PE/COFF.

However, as is the case with any proxy generating relocation, it is
up to the linker to emit an entry in the GOT table and populate it
with the correct absolute address, which should also be fixed up at
PE/COFF load time. Unfortunately, the relocations covering the GOT
section are not emitted into the static relocation sections processed
by GenFw, but only in the dynamic relocation section as a R_ARM_RELATIVE
relocation, and so GenFw fails to emit the correct PE/COFF relocation
data for GOT entries.

Since GOT indirection is pointless anyway for PE/COFF modules running
in UEFI context, let's just drop the references to R_ARM_GOT_PREL from
GenFw, resulting in a build time failure rather than a runtime failure
if such relocations do occur.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-12-12 08:36:59 +01:00
..
Elf32Convert.c BaseTools/GenFw ARM: don't permit R_ARM_GOT_PREL relocations 2018-12-12 08:36:59 +01:00
Elf32Convert.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
Elf64Convert.c BaseTools: ElfConvert Tool update VerboseMsg to same with the comment 2018-07-23 10:53:05 +08:00
Elf64Convert.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
ElfConvert.c BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
ElfConvert.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
GNUmakefile BaseTools GNUmakefile: Remove HOST_ARCH in every tool Makefile 2018-02-06 13:44:42 +08:00
GenFw.c BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
GenFw.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
Makefile Sync EDKII BaseTools to BaseTools project r1971 2010-05-18 05:04:32 +00:00
elf32.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
elf64.h BaseTools: Clean up source files 2018-07-09 10:25:47 +08:00
elf_common.h BaseTools/GenFw: Add X64 GOTPCREL Support to GenFw 2018-07-11 16:22:08 +08:00