Allow to set VirtualAddress of loaded module
Tous les contrôles ont réussi
ci/woodpecker/push/build Pipeline was successful

Cette révision appartient à :
2022-11-23 20:34:20 +01:00
Parent 2cb2328f45
révision 519df2ad11
2 fichiers modifiés avec 7 ajouts et 2 suppressions

Voir le fichier

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

Voir le fichier

@@ -169,7 +169,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
XtLdrProtocol->DbgPrint(L"Initializing XTOS startup sequence\n");
/* Load the kernel */
Status = XtpLoadModule(BootDir, Parameters->KernelFile, LoaderSystemCode, &Image);
Status = XtpLoadModule(BootDir, Parameters->KernelFile, NULL, LoaderSystemCode, &Image);
if(Status != STATUS_EFI_SUCCESS)
{
/* Failed to load the kernel */
@@ -183,6 +183,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir,
EFI_STATUS
XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
IN PWCHAR FileName,
IN PVOID VirtualAddress,
IN LOADER_MEMORY_TYPE MemoryType,
OUT PPECOFF_IMAGE_CONTEXT *ImageContext)
{
@@ -203,7 +204,7 @@ XtpLoadModule(IN PEFI_FILE_HANDLE BootDir,
}
/* 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)
{
/* 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");
}
/* Print debug message */
XtLdrProtocol->DbgPrint(L"Loaded '%S' at %lx\n", FileName, (*ImageContext)->VirtualAddress);
/* Return success */
return STATUS_EFI_SUCCESS;
}