Added test multiboot2 module for XTLDR and relevant XTLDR configuration

This commit is contained in:
Jozef Nagy
2024-01-17 15:35:43 +01:00
parent 01358b0e55
commit 592261310c
7 changed files with 434 additions and 2 deletions

View File

@@ -275,6 +275,7 @@ ElfLoadImage(IN PEFI_FILE_HANDLE FileHandle,
XtLdrProtocol->Debug.Print(L"Entry point: 0x%lx (0x%lx)\n", ImageData->EntryPoint, ImageData->Header64->e_entry);
/* Load individual segments according to program headers */
XtLdrProtocol->Debug.Print(L"Program header count: %d\n", ImageData->Header64->e_phnum);
PELF_IMAGE_PROGRAM_HEADER64 ProgramHeaders = (PELF_IMAGE_PROGRAM_HEADER64)(Data + ImageData->Header64->e_phoff);
for (UINT Count = 0; Count < ImageData->Header64->e_phnum; Count++)
{
@@ -293,7 +294,7 @@ ElfLoadImage(IN PEFI_FILE_HANDLE FileHandle,
}
/* Read segment into memory */
Status = FileHandle->SetPosition(FileHandle, (UINT64)&ProgramHeaders[Count].p_offset);
Status = FileHandle->SetPosition(FileHandle, ProgramHeaders[Count].p_offset);
Status = FileHandle->Read(FileHandle, (PUINT_PTR)&ProgramHeaders[Count].p_filesz, (PVOID)(UINT_PTR)ProgramHeaders[Count].p_paddr);
if(Status != STATUS_EFI_SUCCESS)
{
@@ -310,6 +311,8 @@ ElfLoadImage(IN PEFI_FILE_HANDLE FileHandle,
UINT_PTR ZeroedMemoryStart = (UINT_PTR)ProgramHeaders[Count].p_paddr + (UINT_PTR)ProgramHeaders[Count].p_filesz;
RtlZeroMemory((PVOID)ZeroedMemoryStart, ZeroCount);
}
XtLdrProtocol->Debug.Print(L"Read %d pages (%d bytes) to %lx\n", PageCount, ZeroCount, (UINT64)ProgramHeaders[Count].p_offset);
}
}
}