summaryrefslogtreecommitdiffhomepage
path: root/Boot/Sources/ProgramLoader.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Boot/Sources/ProgramLoader.cxx')
-rw-r--r--Boot/Sources/ProgramLoader.cxx26
1 files changed, 13 insertions, 13 deletions
diff --git a/Boot/Sources/ProgramLoader.cxx b/Boot/Sources/ProgramLoader.cxx
index 5938c2a0..4ea0d4c6 100644
--- a/Boot/Sources/ProgramLoader.cxx
+++ b/Boot/Sources/ProgramLoader.cxx
@@ -20,7 +20,7 @@ EXTERN_C
namespace Boot
{
- EXTERN_C Int32 rt_jump_to_address(HEL::HandoverProc baseCode, HEL::HandoverInformationHeader* handover, Char* stackPointer);
+ EXTERN_C Int32 rt_jump_to_address(HEL::HandoverProc baseCode, HEL::HandoverInformationHeader* handover, Char* stackPointer);
ProgramLoader::ProgramLoader(VoidPtr blob)
: fBlob(blob), fStartAddress(nullptr)
@@ -39,14 +39,14 @@ namespace Boot
if (firstBytes[0] == kMagMz0 &&
firstBytes[1] == kMagMz1)
{
- writer.Write("newosldr: MZ executable detected.\r");
+ writer.Write("newosldr: MZ executable detected.\r");
- ExecHeaderPtr hdrPtr = (ldr_find_exec_header(firstBytes));
- ExecOptionalHeaderPtr optHdr = (ldr_find_opt_exec_header(firstBytes));
+ ExecHeaderPtr hdrPtr = (ldr_find_exec_header(firstBytes));
+ ExecOptionalHeaderPtr optHdr = (ldr_find_opt_exec_header(firstBytes));
// Parse PE32+
fStartAddress = (VoidPtr)((UIntPtr)optHdr->mImageBase + optHdr->mBaseOfCode + optHdr->mAddressOfEntryPoint);
- fStackPtr = new Char[optHdr->mSizeOfStackReserve];
+ fStackPtr = new Char[optHdr->mSizeOfStackReserve];
writer.Write("newosldr: Major Linker: ").Write(optHdr->mMajorLinkerVersion).Write("\r");
writer.Write("newosldr: Minor Linker: ").Write(optHdr->mMinorLinkerVersion).Write("\r");
@@ -73,21 +73,21 @@ namespace Boot
/// @note handover header has to be valid!
Void ProgramLoader::Start(HEL::HandoverInformationHeader* handover)
{
- BTextWriter writer;
+ BTextWriter writer;
- if (!handover)
+ if (!handover ||
+ ((Char*)fStartAddress)[0] == 0x0)
{
- writer.Write("newosldr: Exec format error.\r");
- return;
+ writer.Write("newosldr: Exec format error.\r");
+ return;
}
writer.Write("newosldr: Trying to run: ").Write(fBlobName).Write("\r");
- if (!fStartAddress ||
- ((Char*)fStartAddress)[0] == 0x0)
+ if (!fStartAddress)
{
- HEL::HandoverProc fn = [](HEL::HandoverInformationHeader* rcx) -> void {
- BTextWriter writer;
+ HEL::HandoverProc fn = [](HEL::HandoverInformationHeader* rcx) -> void {
+ BTextWriter writer;
writer.Write("newosldr: Exec format error, Thread has been aborted.\r");
EFI::ThrowError(L"Exec-Format-Error", L"Format doesn't match (Thread aborted.)");