mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
x86, efi: Fix issue of overlapping .reloc section for EFI_STUB
Previously the .reloc section was embedded in the .text section. No relocations are required during the PE/COFF loading phase for the kernel using the EFI_STUB UEFI loader. To fix the issue of overlapping sections, create a .reloc section with a zero length. The .reloc section header must exist to make sure the image will be loaded by the UEFI firmware, but a zero-length section header seems to be sufficient. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Link: http://lkml.kernel.org/r/1332520506-6472-2-git-send-email-jordan.l.justen@intel.com Acked-by: Matt Fleming <matt.fleming@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
c16fa4f2ad
commit
2e064b1e13
@ -217,18 +217,17 @@ section_table:
|
||||
|
||||
#
|
||||
# The EFI application loader requires a relocation section
|
||||
# because EFI applications are relocatable and not having
|
||||
# this section seems to confuse it. But since we don't need
|
||||
# the loader to fixup any relocs for us just fill it with a
|
||||
# single dummy reloc.
|
||||
# because EFI applications must be relocatable. But since
|
||||
# we don't need the loader to fixup any relocs for us, we
|
||||
# just create an empty (zero-length) .reloc section header.
|
||||
#
|
||||
.ascii ".reloc"
|
||||
.byte 0
|
||||
.byte 0
|
||||
.long reloc_end - reloc_start
|
||||
.long reloc_start
|
||||
.long reloc_end - reloc_start # SizeOfRawData
|
||||
.long reloc_start # PointerToRawData
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0 # SizeOfRawData
|
||||
.long 0 # PointerToRawData
|
||||
.long 0 # PointerToRelocations
|
||||
.long 0 # PointerToLineNumbers
|
||||
.word 0 # NumberOfRelocations
|
||||
@ -469,10 +468,3 @@ setup_corrupt:
|
||||
|
||||
.data
|
||||
dummy: .long 0
|
||||
|
||||
.section .reloc
|
||||
reloc_start:
|
||||
.long dummy - reloc_start
|
||||
.long 10
|
||||
.word 0
|
||||
reloc_end:
|
||||
|
Loading…
Reference in New Issue
Block a user