mirror of
https://git.proxmox.com/git/efi-boot-shim
synced 2025-05-29 19:27:57 +00:00
Handle empty .reloc section in PE/COFF loader
On archs where no EFI aware objcopy is available, the generated PE/COFF header contains a .reloc section which is completely empty. Handle this by - returning early from relocate_coff() with EFI_SUCCESS, - ignoring discardable sections in the section loader. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
14acaa4a33
commit
94c9a77f65
11
shim.c
11
shim.c
@ -145,6 +145,9 @@ static EFI_STATUS relocate_coff (PE_COFF_LOADER_IMAGE_CONTEXT *context,
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (!context->RelocDir->Size)
|
||||
return EFI_SUCCESS;
|
||||
|
||||
RelocBase = ImageAddress(data, size, context->RelocDir->VirtualAddress);
|
||||
RelocBaseEnd = ImageAddress(data, size, context->RelocDir->VirtualAddress + context->RelocDir->Size - 1);
|
||||
|
||||
@ -996,7 +999,11 @@ static EFI_STATUS handle_image (void *data, unsigned int datasize,
|
||||
* Copy the executable's sections to their desired offsets
|
||||
*/
|
||||
Section = context.FirstSection;
|
||||
for (i = 0; i < context.NumberOfSections; i++) {
|
||||
for (i = 0; i < context.NumberOfSections; i++, Section++) {
|
||||
if (Section->Characteristics & 0x02000000)
|
||||
/* section has EFI_IMAGE_SCN_MEM_DISCARDABLE attr set */
|
||||
continue;
|
||||
|
||||
size = Section->Misc.VirtualSize;
|
||||
|
||||
if (size > Section->SizeOfRawData)
|
||||
@ -1021,8 +1028,6 @@ static EFI_STATUS handle_image (void *data, unsigned int datasize,
|
||||
|
||||
if (size < Section->Misc.VirtualSize)
|
||||
ZeroMem (base + size, Section->Misc.VirtualSize - size);
|
||||
|
||||
Section += 1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user