Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e064b1e authored by Jordan Justen's avatar Jordan Justen Committed by H. Peter Anvin
Browse files

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: default avatarJordan 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: default avatarMatt Fleming <matt.fleming@intel.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
parent c16fa4f2
Loading
Loading
Loading
Loading
+7 −15
Original line number Diff line number Diff line
@@ -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: