diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-08 14:52:59 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-08 14:52:59 +0100 |
| commit | 1dcf80cae33dc75a50f10714f2d65fd9bd04a060 (patch) | |
| tree | 63edf5b1c75da7e8b294c398030537f60f4fae84 /dev/ToolchainKit | |
| parent | 51aa22c757f7e632d805645d04020c70b2110ca9 (diff) | |
WIP: Improvements of the PEF linker in progress.
Diffstat (limited to 'dev/ToolchainKit')
| -rw-r--r-- | dev/ToolchainKit/UUID.h | 2 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc | 2 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/DynamicLinker64PEF.cc (renamed from dev/ToolchainKit/src/DynamicLinker64.cc) | 29 |
3 files changed, 17 insertions, 16 deletions
diff --git a/dev/ToolchainKit/UUID.h b/dev/ToolchainKit/UUID.h index d785fc7..00b153b 100644 --- a/dev/ToolchainKit/UUID.h +++ b/dev/ToolchainKit/UUID.h @@ -199,7 +199,7 @@ namespace uuids process_byte(static_cast<unsigned char>((bitCount >> 24) & 0xFF)); process_byte(static_cast<unsigned char>((bitCount >> 16) & 0xFF)); process_byte(static_cast<unsigned char>((bitCount >> 8) & 0xFF)); - process_byte(static_cast<unsigned char>((bitCount) & 0xFF)); + process_byte(static_cast<unsigned char>((bitCount)&0xFF)); memcpy(digest, m_digest, 5 * sizeof(uint32_t)); return digest; diff --git a/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc b/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc index 7eeeb6d..3904906 100644 --- a/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc +++ b/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc @@ -15,7 +15,7 @@ #define kExitFail (EXIT_FAILURE) #define kSplashCxx() \ - kPrintF(kWhite "%s\n", "ZKA C++ Compiler Driver, (c) 2024 EL Mahrouss Logic, all rights reserved.") + kPrintF(kWhite "%s\n", "Amlal's C++ Compiler Driver, (c) 2024 EL Mahrouss Logic, all rights reserved.") // extern_segment, @autodelete { ... }, fn foo() -> auto { ... } diff --git a/dev/ToolchainKit/src/DynamicLinker64.cc b/dev/ToolchainKit/src/DynamicLinker64PEF.cc index 886a120..ee3c956 100644 --- a/dev/ToolchainKit/src/DynamicLinker64.cc +++ b/dev/ToolchainKit/src/DynamicLinker64PEF.cc @@ -14,6 +14,7 @@ /// @note Do not look up for anything with .code64/.data64/.zero64! /// It will be loaded when program will start up! +#include "ToolchainKit/Defines.h" #include <ToolchainKit/NFC/ErrorID.h> //! Assembler Kit @@ -28,7 +29,7 @@ //! Advanced Executable Object Format #include <ToolchainKit/NFC/AE.h> -#define kLinkerVersionStr "ZKA 64-Bit Dynamic Linker %s, (c) EL Mahrouss Logic 2024, all rights reserved.\n" +#define kLinkerVersionStr "Amlal's 64-Bit Dynamic Linker %s, (c) EL Mahrouss Logic 2024, all rights reserved.\n" #define StringCompare(DST, SRC) strcmp(DST, SRC) @@ -40,7 +41,7 @@ #define kLinkerDefaultOrigin kPefBaseOrigin #define kLinkerId (0x5046FF) -#define kLinkerAbiContainer "Container:Abi:" +#define kLinkerAbiContainer "Container:ABI:" /// @brief PEF stack size symbol. #define kLinkerStackSizeSymbol "SizeOfReserveStack" @@ -52,7 +53,7 @@ enum kABITypeInvalid = 0xFFFF, }; -static ToolchainKit::String kOutput = ""; +static ToolchainKit::String kOutput = ""; static Int32 kAbi = kABITypeZKA; static Int32 kSubArch = kPefNoSubCpu; static Int32 kArch = ToolchainKit::kPefArchInvalid; @@ -67,7 +68,7 @@ static const char* kLdDynamicSym = ":RuntimeSymbol:"; /* object code and list. */ static std::vector<ToolchainKit::String> kObjectList; -static std::vector<char> kObjectBytes; +static std::vector<CharType> kObjectBytes; static uintptr_t kMIBCount = 8; static uintptr_t kByteCount = 1024; @@ -77,7 +78,7 @@ static uintptr_t kByteCount = 1024; /// @brief ZKA 64-bit Linker. /// @note This linker is made for PEF executable, thus ZKA based OSes. -TOOLCHAINKIT_MODULE(Linker64Main) +TOOLCHAINKIT_MODULE(DynamicLinker64PEF) { bool is_executable = true; @@ -265,7 +266,7 @@ TOOLCHAINKIT_MODULE(Linker64Main) //! Read AE to convert as PEF. std::vector<ToolchainKit::PEFCommandHeader> command_headers; - ToolchainKit::Utils::AEReadableProtocol readProto{}; + ToolchainKit::Utils::AEReadableProtocol reader_protocol{}; for (const auto& objectFile : kObjectList) { @@ -274,8 +275,8 @@ TOOLCHAINKIT_MODULE(Linker64Main) ToolchainKit::AEHeader hdr{}; - readProto.FP = std::ifstream(objectFile, std::ifstream::binary); - readProto.FP >> hdr; + reader_protocol.FP = std::ifstream(objectFile, std::ifstream::binary); + reader_protocol.FP >> hdr; auto ae_header = hdr; @@ -322,7 +323,7 @@ TOOLCHAINKIT_MODULE(Linker64Main) memset(raw_ae_records, 0, cnt * sizeof(ToolchainKit::AERecordHeader)); - auto* ae_records = readProto.Read(raw_ae_records, cnt); + auto* ae_records = reader_protocol.Read(raw_ae_records, cnt); for (size_t ae_record_index = 0; ae_record_index < cnt; ++ae_record_index) @@ -390,17 +391,17 @@ TOOLCHAINKIT_MODULE(Linker64Main) std::vector<char> bytes; bytes.resize(ae_header.fCodeSize); - // TODO: Port this for NeFS filesystems. + // TODO: Port this to NeFS. - readProto.FP.seekg(std::streamsize(ae_header.fStartCode)); - readProto.FP.read(bytes.data(), std::streamsize(ae_header.fCodeSize)); + reader_protocol.FP.seekg(std::streamsize(ae_header.fStartCode)); + reader_protocol.FP.read(bytes.data(), std::streamsize(ae_header.fCodeSize)); for (auto& byte : bytes) { kObjectBytes.push_back(byte); } - readProto.FP.close(); + reader_protocol.FP.close(); continue; } @@ -572,7 +573,7 @@ TOOLCHAINKIT_MODULE(Linker64Main) stack_cmd_hdr.Cpu = kArch; stack_cmd_hdr.Flags = 0; stack_cmd_hdr.Size = sizeof(uintptr_t); - stack_cmd_hdr.Offset = (kMIBCount * kByteCount * kByteCount); + stack_cmd_hdr.Offset = 0; memcpy(stack_cmd_hdr.Name, kLinkerStackSizeSymbol, strlen(kLinkerStackSizeSymbol)); command_headers.push_back(stack_cmd_hdr); |
