diff options
Diffstat (limited to 'Boot/Sources')
| -rw-r--r-- | Boot/Sources/Thread.cxx | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Boot/Sources/Thread.cxx b/Boot/Sources/Thread.cxx index 6a3e8797..5bd18b19 100644 --- a/Boot/Sources/Thread.cxx +++ b/Boot/Sources/Thread.cxx @@ -83,6 +83,7 @@ namespace Boot constexpr auto sectionForCode = ".text"; constexpr auto sectionForNewLdr = ".ldr"; + constexpr auto sectionForBSS = ".bss"; for (SizeT sectIndex = 0; sectIndex < numSecs; ++sectIndex) { @@ -93,6 +94,10 @@ namespace Boot fStartAddress = (VoidPtr)((UIntPtr)loadStartAddress + optHdr->mAddressOfEntryPoint); writer.Write("newosldr: Start Address: ").Write((UIntPtr)fStartAddress).Write("\r"); } + else if (StrCmp(sectionForBSS, sect->mName) == 0) + { + SetMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), 0, sect->mSizeOfRawData); + } else if (StrCmp(sectionForNewLdr, sect->mName) == 0) { struct HANDOVER_INFORMATION_STUB @@ -111,7 +116,6 @@ namespace Boot writer.Write("newosldr: offset ").Write(sect->mPointerToRawData).Write(" of ").Write(sect->mName).Write("\r"); - SetMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), 0, sect->mSizeOfRawData); CopyMem((VoidPtr)(loadStartAddress + sect->mVirtualAddress), (VoidPtr)((UIntPtr)fBlob + sect->mPointerToRawData), sect->mSizeOfRawData); } } |
