Added test multiboot2 module for XTLDR and relevant XTLDR configuration
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user