Allow to set VirtualAddress of loaded module
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2022-11-23 20:34:20 +01:00
parent 2cb2328f45
commit 519df2ad11
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 7 additions and 2 deletions

View File

@ -26,6 +26,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
EFI_STATUS EFI_STATUS
XtpLoadModule(IN PEFI_FILE_HANDLE BootDir, XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
IN PWCHAR FileName, IN PWCHAR FileName,
IN PVOID VirtualAddress,
IN LOADER_MEMORY_TYPE MemoryType, IN LOADER_MEMORY_TYPE MemoryType,
OUT PPECOFF_IMAGE_CONTEXT *ImageContext); OUT PPECOFF_IMAGE_CONTEXT *ImageContext);

View File

@ -169,7 +169,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
XtLdrProtocol->DbgPrint(L"Initializing XTOS startup sequence\n"); XtLdrProtocol->DbgPrint(L"Initializing XTOS startup sequence\n");
/* Load the kernel */ /* Load the kernel */
Status = XtpLoadModule(BootDir, Parameters->KernelFile, LoaderSystemCode, &Image); Status = XtpLoadModule(BootDir, Parameters->KernelFile, NULL, LoaderSystemCode, &Image);
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to load the kernel */ /* Failed to load the kernel */
@ -183,6 +183,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
EFI_STATUS EFI_STATUS
XtpLoadModule(IN PEFI_FILE_HANDLE BootDir, XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
IN PWCHAR FileName, IN PWCHAR FileName,
IN PVOID VirtualAddress,
IN LOADER_MEMORY_TYPE MemoryType, IN LOADER_MEMORY_TYPE MemoryType,
OUT PPECOFF_IMAGE_CONTEXT *ImageContext) OUT PPECOFF_IMAGE_CONTEXT *ImageContext)
{ {
@ -203,7 +204,7 @@ XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
} }
/* Load the PE/COFF image file */ /* Load the PE/COFF image file */
Status = XtPeCoffProtocol->Load(ModuleHandle, MemoryType, NULL, ImageContext); Status = XtPeCoffProtocol->Load(ModuleHandle, MemoryType, VirtualAddress, ImageContext);
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Unable to load the file */ /* Unable to load the file */
@ -222,6 +223,9 @@ XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
XtLdrProtocol->DbgPrint(L"WARNING: Loaded PE/COFF image with non-XT subsystem set\n"); XtLdrProtocol->DbgPrint(L"WARNING: Loaded PE/COFF image with non-XT subsystem set\n");
} }
/* Print debug message */
XtLdrProtocol->DbgPrint(L"Loaded '%S' at %lx\n", FileName, (*ImageContext)->VirtualAddress);
/* Return success */ /* Return success */
return STATUS_EFI_SUCCESS; return STATUS_EFI_SUCCESS;
} }