diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-31 16:15:14 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-31 16:15:14 +0200 |
| commit | ab50405003c88095d38102e5223fcd52783441db (patch) | |
| tree | 1872dccd81ee7e2e26b55271e80848ebcf6594d6 /dev | |
| parent | 0baeaa7bd4ed71f150124c4808827e1903983a8e (diff) | |
[IMP] Add StackReserve header, for scheduler.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/ndkdll/Sources/Linker.cxx | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/dev/ndkdll/Sources/Linker.cxx b/dev/ndkdll/Sources/Linker.cxx index 68e2aab..c9a9184 100644 --- a/dev/ndkdll/Sources/Linker.cxx +++ b/dev/ndkdll/Sources/Linker.cxx @@ -49,6 +49,9 @@ #define kLinkerId 0x5046FF #define kLinkerAbiContainer "Container:Abi:" +/// @brief PEF stack size symbol. +#define kLinkerStackSizeSymbol "SizeOfReserveStack" + enum { eABIStart = 0x1010, /* Invalid ABI start of ABI list. */ @@ -74,6 +77,8 @@ static const char* kLdDynamicSym = ":RuntimeSymbol:"; static std::vector<std::string> kObjectList; static std::vector<char> kObjectBytes; +static uintptr_t kMIBCount = 8; + #define kPrintF printf #define kLinkerSplash() kPrintF(kWhite kLinkerVersion, kDistVersion) @@ -105,7 +110,7 @@ NDK_MODULE(ZKALinkerMain) return 0; } - else if (StringCompare(argv[i], "/Ver") == 0) + else if (StringCompare(argv[i], "/VER") == 0) { kLinkerSplash(); return 0; @@ -116,37 +121,37 @@ NDK_MODULE(ZKALinkerMain) continue; } - else if (StringCompare(argv[i], "/64x0") == 0) + else if (StringCompare(argv[i], "/64X0") == 0) { kArch = NDK::kPefArch64000; continue; } - else if (StringCompare(argv[i], "/amd64") == 0) + else if (StringCompare(argv[i], "/AMD64") == 0) { kArch = NDK::kPefArchAMD64; continue; } - else if (StringCompare(argv[i], "/32x0") == 0) + else if (StringCompare(argv[i], "/32X0") == 0) { kArch = NDK::kPefArch32000; continue; } - else if (StringCompare(argv[i], "/power64") == 0) + else if (StringCompare(argv[i], "/POWER64") == 0) { kArch = NDK::kPefArchPowerPC; continue; } - else if (StringCompare(argv[i], "/arm64") == 0) + else if (StringCompare(argv[i], "/ARM64") == 0) { kArch = NDK::kPefArchARM64; continue; } - else if (StringCompare(argv[i], "/Verbose") == 0) + else if (StringCompare(argv[i], "/VERBOSE") == 0) { kVerbose = true; @@ -558,6 +563,17 @@ NDK_MODULE(ZKALinkerMain) commandHdrsList.push_back(abiHeader); + + NDK::PEFCommandHeader stackHeader{0}; + + stackHeader.Cpu = kArch; + stackHeader.Flags = 0; + stackHeader.Size = sizeof(uintptr_t); + stackHeader.Offset = (kMIBCount * 1024 * 1024); + memcpy(stackHeader.Name, kLinkerStackSizeSymbol, strlen(kLinkerStackSizeSymbol)); + + commandHdrsList.push_back(stackHeader); + NDK::PEFCommandHeader uuidHeader{}; std::random_device rd; |
