diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-10-23 08:35:25 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-10-23 08:35:25 +0200 |
| commit | 65b065641ddb93de37cff2033789f3df6a254946 (patch) | |
| tree | 99e2a8f157a0f0be2b46d21670346388f7ce7dd7 /dev/ToolchainKit/src | |
| parent | 5e956420d4b566e8a0775afffa238929ea592b2b (diff) | |
IMP: ToolchainKit/Linker: Refactor to improve code quality.
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ToolchainKit/src')
| -rw-r--r-- | dev/ToolchainKit/src/Assembler32x0.cc | 2 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/Assembler64x0.cc | 92 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/AssemblerAMD64.cc | 142 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/AssemblerPower.cc | 84 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/AssemblyFactory.cc | 6 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/CCompiler64x0.cc | 48 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/CCompilerPower64.cc | 46 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc | 222 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/CPlusPlusCompilerPreProcessor.cc | 26 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/Detail/AsmUtils.h | 10 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/IdlCompiler.cc | 2 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/Linker.cc | 211 | ||||
| -rw-r--r-- | dev/ToolchainKit/src/String.cc | 6 |
13 files changed, 449 insertions, 448 deletions
diff --git a/dev/ToolchainKit/src/Assembler32x0.cc b/dev/ToolchainKit/src/Assembler32x0.cc index e04fdf5..8264f45 100644 --- a/dev/ToolchainKit/src/Assembler32x0.cc +++ b/dev/ToolchainKit/src/Assembler32x0.cc @@ -44,7 +44,7 @@ ///////////////////////////////////////////////////////////////////////////////////////// -NDK_MODULE(ZKAAssemblerMain32000) +TOOLCHAINKIT_MODULE(ZKAAssemblerMain32000) { return 0; } diff --git a/dev/ToolchainKit/src/Assembler64x0.cc b/dev/ToolchainKit/src/Assembler64x0.cc index d91bdcf..2c9178c 100644 --- a/dev/ToolchainKit/src/Assembler64x0.cc +++ b/dev/ToolchainKit/src/Assembler64x0.cc @@ -43,7 +43,7 @@ #define kStdOut (std::cout << kWhite) #define kStdErr (std::cout << kRed) -static char kOutputArch = NDK::kPefArch64000; +static char kOutputArch = ToolchainKit::kPefArch64000; static Boolean kOutputAsBinary = false; static UInt32 kErrorLimit = 10; @@ -60,10 +60,10 @@ static bool kVerbose = false; static std::vector<e64k_num_t> kBytes; -static NDK::AERecordHeader kCurrentRecord{ - .fName = "", .fKind = NDK::kPefCode, .fSize = 0, .fOffset = 0}; +static ToolchainKit::AERecordHeader kCurrentRecord{ + .fName = "", .fKind = ToolchainKit::kPefCode, .fSize = 0, .fOffset = 0}; -static std::vector<NDK::AERecordHeader> kRecords; +static std::vector<ToolchainKit::AERecordHeader> kRecords; static std::vector<std::string> kUndefinedSymbols; static const std::string kUndefinedSymbol = ":UndefinedSymbol:"; @@ -79,11 +79,11 @@ namespace detail if (reason[0] == '\n') reason.erase(0, 1); - kStdErr << kRed << "[ NDK ] " << kWhite - << ((file == "NDK") ? "InternalErrorException: " + kStdErr << kRed << "[ ToolchainKit ] " << kWhite + << ((file == "ToolchainKit") ? "InternalErrorException: " : ("FileException{ " + file + " }: ")) << kBlank << std::endl; - kStdErr << kRed << "[ NDK ] " << kWhite << reason << kBlank << std::endl; + kStdErr << kRed << "[ ToolchainKit ] " << kWhite << reason << kBlank << std::endl; if (kAcceptableErrors > kErrorLimit) std::exit(3); @@ -98,10 +98,10 @@ namespace detail if (!file.empty()) { - kStdOut << kYellow << "[ NDK ] " << kWhite << file << kBlank << std::endl; + kStdOut << kYellow << "[ ToolchainKit ] " << kWhite << file << kBlank << std::endl; } - kStdOut << kYellow << "[ NDK ] " << kWhite << reason << kBlank << std::endl; + kStdOut << kYellow << "[ ToolchainKit ] " << kWhite << reason << kBlank << std::endl; } } // namespace detail @@ -111,7 +111,7 @@ namespace detail ///////////////////////////////////////////////////////////////////////////////////////// -NDK_MODULE(ZKAAssemblerMain64000) +TOOLCHAINKIT_MODULE(ZKAAssemblerMain64000) { for (size_t i = 1; i < argc; ++i) { @@ -180,13 +180,13 @@ NDK_MODULE(ZKAAssemblerMain64000) std::string line; - NDK::AEHeader hdr{0}; + ToolchainKit::AEHeader hdr{0}; memset(hdr.fPad, kAENullType, kAEPad); hdr.fMagic[0] = kAEMag0; hdr.fMagic[1] = kAEMag1; - hdr.fSize = sizeof(NDK::AEHeader); + hdr.fSize = sizeof(ToolchainKit::AEHeader); hdr.fArch = kOutputArch; ///////////////////////////////////////////////////////////////////////////////////////// @@ -195,7 +195,7 @@ NDK_MODULE(ZKAAssemblerMain64000) ///////////////////////////////////////////////////////////////////////////////////////// - NDK::Encoder64x0 asm64; + ToolchainKit::Encoder64x0 asm64; while (std::getline(file_ptr, line)) { @@ -215,7 +215,7 @@ NDK_MODULE(ZKAAssemblerMain64000) if (kVerbose) { std::string what = e.what(); - detail::print_warning_asm("exit because of: " + what, "NDK"); + detail::print_warning_asm("exit because of: " + what, "ToolchainKit"); } std::filesystem::remove(object_output); @@ -256,7 +256,7 @@ NDK_MODULE(ZKAAssemblerMain64000) if (kVerbose) kStdOut << "Assembler64x0: Wrote record " << rec.fName << " to file...\n"; - rec.fFlags |= NDK::kKindRelocationAtRuntime; + rec.fFlags |= ToolchainKit::kKindRelocationAtRuntime; rec.fOffset = record_count; ++record_count; @@ -268,7 +268,7 @@ NDK_MODULE(ZKAAssemblerMain64000) for (auto& sym : kUndefinedSymbols) { - NDK::AERecordHeader _record_hdr{0}; + ToolchainKit::AERecordHeader _record_hdr{0}; if (kVerbose) kStdOut << "Assembler64x0: Wrote symbol " << sym << " to file...\n"; @@ -343,12 +343,12 @@ static bool asm_read_attributes(std::string& line) { // extern_segment is the opposite of public_segment, it signals to the ld // that we need this symbol. - if (NDK::find_word(line, "extern_segment")) + if (ToolchainKit::find_word(line, "extern_segment")) { if (kOutputAsBinary) { detail::print_error_asm("Invalid extern_segment directive in flat binary mode.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("invalid_extern_segment_bin"); } @@ -376,17 +376,17 @@ static bool asm_read_attributes(std::string& line) if (name.find(".code64") != std::string::npos) { // data is treated as code. - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(".data64") != std::string::npos) { // no code will be executed from here. - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(".zero64") != std::string::npos) { // this is a bss section. - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -394,7 +394,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } // now we can tell the code size of the previous kCurrentRecord. @@ -416,12 +416,12 @@ static bool asm_read_attributes(std::string& line) // public_segment is a special keyword used by Assembler64x0 to tell the AE output stage to // mark this section as a header. it currently supports .code64, .data64., // .zero64 - else if (NDK::find_word(line, "public_segment")) + else if (ToolchainKit::find_word(line, "public_segment")) { if (kOutputAsBinary) { detail::print_error_asm("Invalid public_segment directive in flat binary mode.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("invalid_public_segment_bin"); } @@ -440,21 +440,21 @@ static bool asm_read_attributes(std::string& line) // data is treated as code. name_copy.erase(name_copy.find(".code64"), strlen(".code64")); - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(".data64") != std::string::npos) { // no code will be executed from here. name_copy.erase(name_copy.find(".data64"), strlen(".data64")); - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(".zero64") != std::string::npos) { // this is a bss section. name_copy.erase(name_copy.find(".zero64"), strlen(".zero64")); - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -462,7 +462,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } while (name_copy.find(" ") != std::string::npos) @@ -516,14 +516,14 @@ namespace detail::algorithm ///////////////////////////////////////////////////////////////////////////////////////// -std::string NDK::Encoder64x0::CheckLine(std::string& line, +std::string ToolchainKit::Encoder64x0::CheckLine(std::string& line, const std::string& file) { std::string err_str; - if (line.empty() || NDK::find_word(line, "extern_segment") || - NDK::find_word(line, "public_segment") || - line.find('#') != std::string::npos || NDK::find_word(line, ";")) + if (line.empty() || ToolchainKit::find_word(line, "extern_segment") || + ToolchainKit::find_word(line, "public_segment") || + line.find('#') != std::string::npos || ToolchainKit::find_word(line, ";")) { if (line.find('#') != std::string::npos) { @@ -628,7 +628,7 @@ std::string NDK::Encoder64x0::CheckLine(std::string& line, opcode64x0.fName); it == filter_inst.cend()) { - if (NDK::find_word(line, opcode64x0.fName)) + if (ToolchainKit::find_word(line, opcode64x0.fName)) { if (!isspace(line[line.find(opcode64x0.fName) + strlen(opcode64x0.fName)])) @@ -650,7 +650,7 @@ std::string NDK::Encoder64x0::CheckLine(std::string& line, return err_str; } -bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, +bool ToolchainKit::Encoder64x0::WriteNumber(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -664,12 +664,12 @@ bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + jump_label, "NDK"); + detail::print_error_asm("invalid hex number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_hex_number"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 16)); for (char& i : num.number) @@ -691,12 +691,12 @@ bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid binary number: " + jump_label, "NDK"); + detail::print_error_asm("invalid binary number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 2)); if (kVerbose) @@ -718,12 +718,12 @@ bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + jump_label, "NDK"); + detail::print_error_asm("invalid octal number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 7)); if (kVerbose) @@ -753,7 +753,7 @@ bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos).c_str(), nullptr, 10)); for (char& i : num.number) @@ -776,16 +776,16 @@ bool NDK::Encoder64x0::WriteNumber(const std::size_t& pos, ///////////////////////////////////////////////////////////////////////////////////////// -bool NDK::Encoder64x0::WriteLine(std::string& line, +bool ToolchainKit::Encoder64x0::WriteLine(std::string& line, const std::string& file) { - if (NDK::find_word(line, "public_segment ")) + if (ToolchainKit::find_word(line, "public_segment ")) return true; for (auto& opcode64x0 : kOpcodes64x0) { // strict check here - if (NDK::find_word(line, opcode64x0.fName) && + if (ToolchainKit::find_word(line, opcode64x0.fName) && detail::algorithm::is_valid_64x0(line)) { std::string name(opcode64x0.fName); @@ -824,7 +824,7 @@ bool NDK::Encoder64x0::WriteLine(std::string& line, // it ranges from r0 to r19 // something like r190 doesn't exist in the instruction set. - if (kOutputArch == NDK::kPefArch64000) + if (kOutputArch == ToolchainKit::kPefArch64000) { if (isdigit(line[line_index + 3]) && isdigit(line[line_index + 2])) @@ -1029,7 +1029,7 @@ bool NDK::Encoder64x0::WriteLine(std::string& line, << " to address: " << label.second << std::endl; } - NDK::NumberCast64 num(label.second); + ToolchainKit::NumberCast64 num(label.second); for (auto& num : num.number) { diff --git a/dev/ToolchainKit/src/AssemblerAMD64.cc b/dev/ToolchainKit/src/AssemblerAMD64.cc index 118e5d8..0d69a7b 100644 --- a/dev/ToolchainKit/src/AssemblerAMD64.cc +++ b/dev/ToolchainKit/src/AssemblerAMD64.cc @@ -52,7 +52,7 @@ #define kStdOut (std::cout << kWhite) #define kStdErr (std::cout << kRed) -static char kOutputArch = NDK::kPefArchAMD64; +static char kOutputArch = ToolchainKit::kPefArchAMD64; static Boolean kOutputAsBinary = false; static UInt32 kErrorLimit = 10; @@ -72,10 +72,10 @@ static bool kVerbose = false; static std::vector<i64_byte_t> kAppBytes; -static NDK::AERecordHeader kCurrentRecord{ - .fName = "", .fKind = NDK::kPefCode, .fSize = 0, .fOffset = 0}; +static ToolchainKit::AERecordHeader kCurrentRecord{ + .fName = "", .fKind = ToolchainKit::kPefCode, .fSize = 0, .fOffset = 0}; -static std::vector<NDK::AERecordHeader> kRecords; +static std::vector<ToolchainKit::AERecordHeader> kRecords; static std::vector<std::string> kDefinedSymbols; static std::vector<std::string> kUndefinedSymbols; @@ -93,7 +93,7 @@ static bool asm_read_attributes(std::string& line); ///////////////////////////////////////////////////////////////////////////////////////// -NDK_MODULE(ZKAAssemblerMainAMD64) +TOOLCHAINKIT_MODULE(ZKAAssemblerMainAMD64) { //////////////// CPU OPCODES BEGIN //////////////// @@ -199,13 +199,13 @@ NDK_MODULE(ZKAAssemblerMainAMD64) std::string line; - NDK::AEHeader hdr{0}; + ToolchainKit::AEHeader hdr{0}; memset(hdr.fPad, kAENullType, kAEPad); hdr.fMagic[0] = kAEMag0; hdr.fMagic[1] = kAEMag1; - hdr.fSize = sizeof(NDK::AEHeader); + hdr.fSize = sizeof(ToolchainKit::AEHeader); hdr.fArch = kOutputArch; ///////////////////////////////////////////////////////////////////////////////////////// @@ -214,7 +214,7 @@ NDK_MODULE(ZKAAssemblerMainAMD64) ///////////////////////////////////////////////////////////////////////////////////////// - NDK::EncoderAMD64 asm64; + ToolchainKit::EncoderAMD64 asm64; while (std::getline(file_ptr, line)) { @@ -234,7 +234,7 @@ NDK_MODULE(ZKAAssemblerMainAMD64) if (kVerbose) { std::string what = e.what(); - detail::print_warning_asm("exit because of: " + what, "NDK"); + detail::print_warning_asm("exit because of: " + what, "ToolchainKit"); } try @@ -282,7 +282,7 @@ NDK_MODULE(ZKAAssemblerMainAMD64) if (kVerbose) kStdOut << "AssemblerAMD64: Wrote record " << rec.fName << " to file...\n"; - rec.fFlags |= NDK::kKindRelocationAtRuntime; + rec.fFlags |= ToolchainKit::kKindRelocationAtRuntime; rec.fOffset = record_count; ++record_count; @@ -294,7 +294,7 @@ NDK_MODULE(ZKAAssemblerMainAMD64) for (auto& sym : kUndefinedSymbols) { - NDK::AERecordHeader _record_hdr{0}; + ToolchainKit::AERecordHeader _record_hdr{0}; if (kVerbose) kStdOut << "AssemblerAMD64: Wrote symbol " << sym << " to file...\n"; @@ -377,11 +377,11 @@ static bool asm_read_attributes(std::string& line) { // extern_segment is the opposite of public_segment, it signals to the ld // that we need this symbol. - if (NDK::find_word(line, "extern_segment")) + if (ToolchainKit::find_word(line, "extern_segment")) { if (kOutputAsBinary) { - detail::print_error_asm("Invalid directive in flat binary mode.", "NDK"); + detail::print_error_asm("Invalid directive in flat binary mode.", "ToolchainKit"); throw std::runtime_error("invalid_extern_segment_bin"); } @@ -408,17 +408,17 @@ static bool asm_read_attributes(std::string& line) if (name.find(kPefCode64) != std::string::npos) { // data is treated as code. - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(kPefData64) != std::string::npos) { // no code will be executed from here. - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(kPefZero64) != std::string::npos) { // this is a bss section. - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -426,7 +426,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } // now we can tell the code size of the previous kCurrentRecord. @@ -448,11 +448,11 @@ static bool asm_read_attributes(std::string& line) // public_segment is a special keyword used by AssemblerAMD64 to tell the AE output stage to // mark this section as a header. it currently supports .code64, .data64 and // .zero64. - else if (NDK::find_word(line, "public_segment")) + else if (ToolchainKit::find_word(line, "public_segment")) { if (kOutputAsBinary) { - detail::print_error_asm("Invalid directive in flat binary mode.", "NDK"); + detail::print_error_asm("Invalid directive in flat binary mode.", "ToolchainKit"); throw std::runtime_error("invalid_public_segment_bin"); } @@ -469,7 +469,7 @@ static bool asm_read_attributes(std::string& line) if (std::find(kDefinedSymbols.begin(), kDefinedSymbols.end(), name) != kDefinedSymbols.end()) { - detail::print_error_asm("Symbol already defined.", "NDK"); + detail::print_error_asm("Symbol already defined.", "ToolchainKit"); throw std::runtime_error("invalid_public_segment_bin"); } @@ -480,21 +480,21 @@ static bool asm_read_attributes(std::string& line) // data is treated as code. name_copy.erase(name_copy.find(".code64"), strlen(".code64")); - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(".data64") != std::string::npos) { // no code will be executed from here. name_copy.erase(name_copy.find(".data64"), strlen(".data64")); - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(".zero64") != std::string::npos) { // this is a bss section. name_copy.erase(name_copy.find(".zero64"), strlen(".zero64")); - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -502,7 +502,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } while (name_copy.find(" ") != std::string::npos) @@ -556,15 +556,15 @@ namespace detail::algorithm ///////////////////////////////////////////////////////////////////////////////////////// -std::string NDK::EncoderAMD64::CheckLine(std::string& line, +std::string ToolchainKit::EncoderAMD64::CheckLine(std::string& line, const std::string& file) { std::string err_str; - if (line.empty() || NDK::find_word(line, "extern_segment") || - NDK::find_word(line, "public_segment") || - NDK::find_word(line, kAssemblerPragmaSymStr) || - NDK::find_word(line, ";") || line[0] == kAssemblerPragmaSym) + if (line.empty() || ToolchainKit::find_word(line, "extern_segment") || + ToolchainKit::find_word(line, "public_segment") || + ToolchainKit::find_word(line, kAssemblerPragmaSymStr) || + ToolchainKit::find_word(line, ";") || line[0] == kAssemblerPragmaSym) { if (line.find(';') != std::string::npos) { @@ -636,7 +636,7 @@ std::string NDK::EncoderAMD64::CheckLine(std::string& line, } for (auto& opcodeAMD64 : kOpcodesAMD64) { - if (NDK::find_word(line, opcodeAMD64.fName)) + if (ToolchainKit::find_word(line, opcodeAMD64.fName)) { return err_str; } @@ -647,7 +647,7 @@ std::string NDK::EncoderAMD64::CheckLine(std::string& line, return err_str; } -bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, +bool ToolchainKit::EncoderAMD64::WriteNumber(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -661,12 +661,12 @@ bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + jump_label, "NDK"); + detail::print_error_asm("invalid hex number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } - NDK::NumberCast64 num = NDK::NumberCast64( + ToolchainKit::NumberCast64 num = ToolchainKit::NumberCast64( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 16)); for (char& i : num.number) @@ -691,12 +691,12 @@ bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid binary number: " + jump_label, "NDK"); + detail::print_error_asm("invalid binary number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } - NDK::NumberCast64 num = NDK::NumberCast64( + ToolchainKit::NumberCast64 num = ToolchainKit::NumberCast64( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 2)); if (kVerbose) @@ -721,12 +721,12 @@ bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + jump_label, "NDK"); + detail::print_error_asm("invalid octal number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } - NDK::NumberCast64 num = NDK::NumberCast64( + ToolchainKit::NumberCast64 num = ToolchainKit::NumberCast64( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 7)); if (kVerbose) @@ -759,7 +759,7 @@ bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, } } - NDK::NumberCast64 num = NDK::NumberCast64( + ToolchainKit::NumberCast64 num = ToolchainKit::NumberCast64( strtol(jump_label.substr(pos).c_str(), nullptr, 10)); for (char& i : num.number) @@ -779,7 +779,7 @@ bool NDK::EncoderAMD64::WriteNumber(const std::size_t& pos, return true; } -bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, +bool ToolchainKit::EncoderAMD64::WriteNumber32(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -796,7 +796,7 @@ bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, return false; } - NDK::NumberCast32 num = NDK::NumberCast32(res); + ToolchainKit::NumberCast32 num = ToolchainKit::NumberCast32(res); for (char& i : num.number) { @@ -823,7 +823,7 @@ bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, return false; } - NDK::NumberCast32 num = NDK::NumberCast32(res); + ToolchainKit::NumberCast32 num = ToolchainKit::NumberCast32(res); if (kVerbose) { @@ -850,7 +850,7 @@ bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, return false; } - NDK::NumberCast32 num = NDK::NumberCast32(res); + ToolchainKit::NumberCast32 num = ToolchainKit::NumberCast32(res); if (kVerbose) { @@ -881,7 +881,7 @@ bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, return false; } - NDK::NumberCast32 num = NDK::NumberCast32(res); + ToolchainKit::NumberCast32 num = ToolchainKit::NumberCast32(res); for (char& i : num.number) { @@ -900,7 +900,7 @@ bool NDK::EncoderAMD64::WriteNumber32(const std::size_t& pos, return true; } -bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, +bool ToolchainKit::EncoderAMD64::WriteNumber16(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -914,12 +914,12 @@ bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + jump_label, "NDK"); + detail::print_error_asm("invalid hex number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } - NDK::NumberCast16 num = NDK::NumberCast16( + ToolchainKit::NumberCast16 num = ToolchainKit::NumberCast16( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 16)); for (char& i : num.number) @@ -944,12 +944,12 @@ bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid binary number: " + jump_label, "NDK"); + detail::print_error_asm("invalid binary number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } - NDK::NumberCast16 num = NDK::NumberCast16( + ToolchainKit::NumberCast16 num = ToolchainKit::NumberCast16( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 2)); if (kVerbose) @@ -974,12 +974,12 @@ bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + jump_label, "NDK"); + detail::print_error_asm("invalid octal number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } - NDK::NumberCast16 num = NDK::NumberCast16( + ToolchainKit::NumberCast16 num = ToolchainKit::NumberCast16( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 7)); if (kVerbose) @@ -1012,7 +1012,7 @@ bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, } } - NDK::NumberCast16 num = NDK::NumberCast16( + ToolchainKit::NumberCast16 num = ToolchainKit::NumberCast16( strtol(jump_label.substr(pos).c_str(), nullptr, 10)); for (char& i : num.number) @@ -1032,7 +1032,7 @@ bool NDK::EncoderAMD64::WriteNumber16(const std::size_t& pos, return true; } -bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, +bool ToolchainKit::EncoderAMD64::WriteNumber8(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -1046,12 +1046,12 @@ bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + jump_label, "NDK"); + detail::print_error_asm("invalid hex number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } - NDK::NumberCast8 num = NDK::NumberCast8( + ToolchainKit::NumberCast8 num = ToolchainKit::NumberCast8( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 16)); kAppBytes.push_back(num.number); @@ -1070,12 +1070,12 @@ bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid binary number: " + jump_label, "NDK"); + detail::print_error_asm("invalid binary number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } - NDK::NumberCast8 num = NDK::NumberCast8( + ToolchainKit::NumberCast8 num = ToolchainKit::NumberCast8( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 2)); if (kVerbose) @@ -1094,12 +1094,12 @@ bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + jump_label, "NDK"); + detail::print_error_asm("invalid octal number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } - NDK::NumberCast8 num = NDK::NumberCast8( + ToolchainKit::NumberCast8 num = ToolchainKit::NumberCast8( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 7)); if (kVerbose) @@ -1126,7 +1126,7 @@ bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, } } - NDK::NumberCast8 num = NDK::NumberCast8( + ToolchainKit::NumberCast8 num = ToolchainKit::NumberCast8( strtol(jump_label.substr(pos).c_str(), nullptr, 10)); kAppBytes.push_back(num.number); @@ -1146,10 +1146,10 @@ bool NDK::EncoderAMD64::WriteNumber8(const std::size_t& pos, ///////////////////////////////////////////////////////////////////////////////////////// -bool NDK::EncoderAMD64::WriteLine(std::string& line, +bool ToolchainKit::EncoderAMD64::WriteLine(std::string& line, const std::string& file) { - if (NDK::find_word(line, "public_segment ")) + if (ToolchainKit::find_word(line, "public_segment ")) return true; struct RegMapAMD64 @@ -1181,7 +1181,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, for (auto& opcodeAMD64 : kOpcodesAMD64) { // strict check here - if (NDK::find_word(line, opcodeAMD64.fName) && + if (ToolchainKit::find_word(line, opcodeAMD64.fName) && detail::algorithm::is_valid_amd64(line)) { foundInstruction = true; @@ -1196,7 +1196,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, if (substr.find(",") == std::string::npos) { - detail::print_error_asm("Syntax error.", "NDK"); + detail::print_error_asm("Syntax error.", "ToolchainKit"); throw std::runtime_error("syntax_err"); } @@ -1280,7 +1280,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, if (hasRBasedRegs) { detail::print_error_asm( - "Invalid combination of operands and registers.", "NDK"); + "Invalid combination of operands and registers.", "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } else @@ -1294,7 +1294,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[0].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } @@ -1302,7 +1302,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[1].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } @@ -1312,7 +1312,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[0].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } @@ -1320,7 +1320,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[1].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } } @@ -1330,7 +1330,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[0].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } @@ -1338,7 +1338,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, currentRegList[1].fName[0] == 'e') { detail::print_error_asm("Invalid combination of operands and registers.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("comb_op_reg"); } } @@ -1383,7 +1383,7 @@ bool NDK::EncoderAMD64::WriteLine(std::string& line, { if (foundInstruction) { - detail::print_error_asm("Syntax error: " + line, "NDK"); + detail::print_error_asm("Syntax error: " + line, "ToolchainKit"); throw std::runtime_error("syntax_err"); } diff --git a/dev/ToolchainKit/src/AssemblerPower.cc b/dev/ToolchainKit/src/AssemblerPower.cc index 63c0858..f50c00b 100644 --- a/dev/ToolchainKit/src/AssemblerPower.cc +++ b/dev/ToolchainKit/src/AssemblerPower.cc @@ -45,7 +45,7 @@ constexpr auto cPowerIPAlignment = 0x4U; -static CharType kOutputArch = NDK::kPefArchPowerPC; +static CharType kOutputArch = ToolchainKit::kPefArchPowerPC; static Boolean kOutputAsBinary = false; static UInt32 kErrorLimit = 10; @@ -60,10 +60,10 @@ static bool kVerbose = false; static std::vector<uint8_t> kBytes; -static NDK::AERecordHeader kCurrentRecord{ - .fName = "", .fKind = NDK::kPefCode, .fSize = 0, .fOffset = 0}; +static ToolchainKit::AERecordHeader kCurrentRecord{ + .fName = "", .fKind = ToolchainKit::kPefCode, .fSize = 0, .fOffset = 0}; -static std::vector<NDK::AERecordHeader> kRecords; +static std::vector<ToolchainKit::AERecordHeader> kRecords; static std::vector<std::string> kUndefinedSymbols; static const std::string kUndefinedSymbol = ":UndefinedSymbol:"; @@ -81,7 +81,7 @@ static bool asm_read_attributes(std::string& line); ///////////////////////////////////////////////////////////////////////////////////////// -NDK_MODULE(ZKAAssemblerMainPowerPC) +TOOLCHAINKIT_MODULE(ZKAAssemblerMainPowerPC) { for (size_t i = 1; i < argc; ++i) { @@ -150,13 +150,13 @@ NDK_MODULE(ZKAAssemblerMainPowerPC) std::string line; - NDK::AEHeader hdr{0}; + ToolchainKit::AEHeader hdr{0}; memset(hdr.fPad, kAENullType, kAEPad); hdr.fMagic[0] = kAEMag0; hdr.fMagic[1] = kAEMag1; - hdr.fSize = sizeof(NDK::AEHeader); + hdr.fSize = sizeof(ToolchainKit::AEHeader); hdr.fArch = kOutputArch; ///////////////////////////////////////////////////////////////////////////////////////// @@ -165,7 +165,7 @@ NDK_MODULE(ZKAAssemblerMainPowerPC) ///////////////////////////////////////////////////////////////////////////////////////// - NDK::EncoderPowerPC asm64; + ToolchainKit::EncoderPowerPC asm64; while (std::getline(file_ptr, line)) { @@ -185,7 +185,7 @@ NDK_MODULE(ZKAAssemblerMainPowerPC) if (kVerbose) { std::string what = e.what(); - detail::print_warning_asm("exit because of: " + what, "NDK"); + detail::print_warning_asm("exit because of: " + what, "ToolchainKit"); } std::filesystem::remove(object_output); @@ -223,7 +223,7 @@ NDK_MODULE(ZKAAssemblerMainPowerPC) for (auto& record_hdr : kRecords) { - record_hdr.fFlags |= NDK::kKindRelocationAtRuntime; + record_hdr.fFlags |= ToolchainKit::kKindRelocationAtRuntime; record_hdr.fOffset = record_count; ++record_count; @@ -238,7 +238,7 @@ NDK_MODULE(ZKAAssemblerMainPowerPC) for (auto& sym : kUndefinedSymbols) { - NDK::AERecordHeader undefined_sym{0}; + ToolchainKit::AERecordHeader undefined_sym{0}; if (kVerbose) kStdOut << "AssemblerPower: Wrote symbol " << sym << " to file...\n"; @@ -299,7 +299,7 @@ asm_fail_exit: if (kVerbose) kStdOut << "AssemblerPower: Exit failed.\n"; - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } ///////////////////////////////////////////////////////////////////////////////////////// @@ -313,12 +313,12 @@ static bool asm_read_attributes(std::string& line) { // extern_segment is the opposite of public_segment, it signals to the li // that we need this symbol. - if (NDK::find_word(line, "extern_segment")) + if (ToolchainKit::find_word(line, "extern_segment")) { if (kOutputAsBinary) { detail::print_error_asm("Invalid extern_segment directive in flat binary mode.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("invalid_extern_segment_bin"); } @@ -326,7 +326,7 @@ static bool asm_read_attributes(std::string& line) if (name.size() == 0) { - detail::print_error_asm("Invalid extern_segment", "NDK"); + detail::print_error_asm("Invalid extern_segment", "ToolchainKit"); throw std::runtime_error("invalid_extern_segment"); } @@ -345,17 +345,17 @@ static bool asm_read_attributes(std::string& line) if (name.find(".code64") != std::string::npos) { // data is treated as code. - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(".data64") != std::string::npos) { // no code will be executed from here. - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(".zero64") != std::string::npos) { // this is a bss section. - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -363,7 +363,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } // now we can tell the code size of the previous kCurrentRecord. @@ -385,12 +385,12 @@ static bool asm_read_attributes(std::string& line) // public_segment is a special keyword used by AssemblerPower to tell the AE output stage to // mark this section as a header. it currently supports .code64, .data64., // .zero64 - else if (NDK::find_word(line, "public_segment")) + else if (ToolchainKit::find_word(line, "public_segment")) { if (kOutputAsBinary) { detail::print_error_asm("Invalid public_segment directive in flat binary mode.", - "NDK"); + "ToolchainKit"); throw std::runtime_error("invalid_public_segment_bin"); } @@ -409,21 +409,21 @@ static bool asm_read_attributes(std::string& line) // data is treated as code. name_copy.erase(name_copy.find(".code64"), strlen(".code64")); - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } else if (name.find(".data64") != std::string::npos) { // no code will be executed from here. name_copy.erase(name_copy.find(".data64"), strlen(".data64")); - kCurrentRecord.fKind = NDK::kPefData; + kCurrentRecord.fKind = ToolchainKit::kPefData; } else if (name.find(".zero64") != std::string::npos) { // this is a bss section. name_copy.erase(name_copy.find(".zero64"), strlen(".zero64")); - kCurrentRecord.fKind = NDK::kPefZero; + kCurrentRecord.fKind = ToolchainKit::kPefZero; } // this is a special case for the start stub. @@ -431,7 +431,7 @@ static bool asm_read_attributes(std::string& line) if (name == kPefStart) { - kCurrentRecord.fKind = NDK::kPefCode; + kCurrentRecord.fKind = ToolchainKit::kPefCode; } while (name_copy.find(" ") != std::string::npos) @@ -485,14 +485,14 @@ namespace detail::algorithm ///////////////////////////////////////////////////////////////////////////////////////// -std::string NDK::EncoderPowerPC::CheckLine(std::string& line, +std::string ToolchainKit::EncoderPowerPC::CheckLine(std::string& line, const std::string& file) { std::string err_str; - if (line.empty() || NDK::find_word(line, "extern_segment") || - NDK::find_word(line, "public_segment") || - line.find('#') != std::string::npos || NDK::find_word(line, ";")) + if (line.empty() || ToolchainKit::find_word(line, "extern_segment") || + ToolchainKit::find_word(line, "public_segment") || + line.find('#') != std::string::npos || ToolchainKit::find_word(line, ";")) { if (line.find('#') != std::string::npos) { @@ -575,7 +575,7 @@ std::string NDK::EncoderPowerPC::CheckLine(std::string& line, for (auto& opcodePPC : kOpcodesPowerPC) { - if (NDK::find_word(line, opcodePPC.name)) + if (ToolchainKit::find_word(line, opcodePPC.name)) { for (auto& op : operands_inst) { @@ -594,7 +594,7 @@ std::string NDK::EncoderPowerPC::CheckLine(std::string& line, std::find(filter_inst.begin(), filter_inst.end(), opcodePPC.name); it == filter_inst.cend()) { - if (NDK::find_word(line, opcodePPC.name)) + if (ToolchainKit::find_word(line, opcodePPC.name)) { if (!isspace( line[line.find(opcodePPC.name) + strlen(opcodePPC.name)])) @@ -616,7 +616,7 @@ std::string NDK::EncoderPowerPC::CheckLine(std::string& line, return err_str; } -bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, +bool ToolchainKit::EncoderPowerPC::WriteNumber(const std::size_t& pos, std::string& jump_label) { if (!isdigit(jump_label[pos])) @@ -630,12 +630,12 @@ bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + jump_label, "NDK"); + detail::print_error_asm("invalid hex number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 16)); for (char& i : num.number) @@ -657,12 +657,12 @@ bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid binary number: " + jump_label, "NDK"); + detail::print_error_asm("invalid binary number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 2)); if (kVerbose) @@ -684,12 +684,12 @@ bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + jump_label, "NDK"); + detail::print_error_asm("invalid octal number: " + jump_label, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos + 2).c_str(), nullptr, 7)); if (kVerbose) @@ -719,7 +719,7 @@ bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, } } - NDK::NumberCast64 num( + ToolchainKit::NumberCast64 num( strtol(jump_label.substr(pos).c_str(), nullptr, 10)); for (char& i : num.number) @@ -742,10 +742,10 @@ bool NDK::EncoderPowerPC::WriteNumber(const std::size_t& pos, ///////////////////////////////////////////////////////////////////////////////////////// -bool NDK::EncoderPowerPC::WriteLine(std::string& line, +bool ToolchainKit::EncoderPowerPC::WriteLine(std::string& line, const std::string& file) { - if (NDK::find_word(line, "public_segment")) + if (ToolchainKit::find_word(line, "public_segment")) return true; if (!detail::algorithm::is_valid_power64(line)) return true; @@ -753,7 +753,7 @@ bool NDK::EncoderPowerPC::WriteLine(std::string& line, for (auto& opcodePPC : kOpcodesPowerPC) { // strict check here - if (NDK::find_word(line, opcodePPC.name)) + if (ToolchainKit::find_word(line, opcodePPC.name)) { std::string name(opcodePPC.name); std::string jump_label, cpy_jump_label; diff --git a/dev/ToolchainKit/src/AssemblyFactory.cc b/dev/ToolchainKit/src/AssemblyFactory.cc index df6d1cb..71f12f9 100644 --- a/dev/ToolchainKit/src/AssemblyFactory.cc +++ b/dev/ToolchainKit/src/AssemblyFactory.cc @@ -23,14 +23,14 @@ //! @file Asm.cpp //! @brief AssemblyKit source implementation. -namespace NDK +namespace ToolchainKit { ///! @brief Compile for specific format (ELF, PEF, ZBIN) Int32 AssemblyFactory::Compile(std::string& sourceFile, const Int32& arch) noexcept { if (sourceFile.length() < 1 || !fMounted) - return NDK_UNIMPLEMENTED; + return TOOLCHAINKIT_UNIMPLEMENTED; return fMounted->CompileToFormat(sourceFile, arch); } @@ -56,4 +56,4 @@ namespace NDK return mount_prev; } -} // namespace NDK +} // namespace ToolchainKit diff --git a/dev/ToolchainKit/src/CCompiler64x0.cc b/dev/ToolchainKit/src/CCompiler64x0.cc index e84e140..30d6ae0 100644 --- a/dev/ToolchainKit/src/CCompiler64x0.cc +++ b/dev/ToolchainKit/src/CCompiler64x0.cc @@ -24,7 +24,7 @@ #include <vector> /* C driver */ -/* This is part of the NDK. */ +/* This is part of the ToolchainKit. */ /* (c) ZKA Web Services Co */ /// @author Amlal El Mahrouss (amlel) @@ -79,10 +79,10 @@ namespace detail struct CompilerState final { - std::vector<NDK::SyntaxLeafList> fSyntaxTreeList; + std::vector<ToolchainKit::SyntaxLeafList> fSyntaxTreeList; std::vector<CompilerRegisterMap> kStackFrame; std::vector<CompilerStructMap> kStructMap; - NDK::SyntaxLeafList* fSyntaxTree{nullptr}; + ToolchainKit::SyntaxLeafList* fSyntaxTree{nullptr}; std::unique_ptr<std::ofstream> fOutputAssembly; std::string fLastFile; std::string fLastError; @@ -133,7 +133,7 @@ static std::string kRegisterPrefix = kAsmRegisterPrefix; ///////////////////////////////////////// static std::vector<std::string> kFileList; -static NDK::AssemblyFactory kFactory; +static ToolchainKit::AssemblyFactory kFactory; static bool kInStruct = false; static bool kOnWhileLoop = false; static bool kOnForLoop = false; @@ -142,13 +142,13 @@ static bool kIfFound = false; static size_t kBracesCount = 0UL; /* @brief C compiler backend for C */ -class CompilerFrontend64x0 final : public NDK::ICompilerFrontend +class CompilerFrontend64x0 final : public ToolchainKit::ICompilerFrontend { public: explicit CompilerFrontend64x0() = default; ~CompilerFrontend64x0() override = default; - NDK_COPY_DEFAULT(CompilerFrontend64x0); + TOOLCHAINKIT_COPY_DEFAULT(CompilerFrontend64x0); std::string Check(const char* text, const char* file); bool Compile(const std::string text, const std::string file) override; @@ -219,7 +219,7 @@ bool CompilerFrontend64x0::Compile(const std::string text, const std::string fil // start parsing for (size_t text_index = 0; text_index < textBuffer.size(); ++text_index) { - auto syntaxLeaf = NDK::SyntaxLeafList::SyntaxLeaf(); + auto syntaxLeaf = ToolchainKit::SyntaxLeafList::SyntaxLeaf(); auto gen = uuids::uuid_random_generator{generator}; uuids::uuid out = gen(); @@ -371,7 +371,7 @@ bool CompilerFrontend64x0::Compile(const std::string text, const std::string fil if (expr.find(")") != std::string::npos) expr.erase(expr.find(")")); - kIfFunction = "__NDK_IF_PROC_"; + kIfFunction = "__TOOLCHAINKIT_IF_PROC_"; kIfFunction += std::to_string(time_off._Raw); syntaxLeaf.fUserValue = "\tlda r12, extern_segment "; @@ -737,7 +737,7 @@ bool CompilerFrontend64x0::Compile(const std::string text, const std::string fil syntaxLeaf.fUserValue.clear(); } - auto syntaxLeaf = NDK::SyntaxLeafList::SyntaxLeaf(); + auto syntaxLeaf = ToolchainKit::SyntaxLeafList::SyntaxLeaf(); syntaxLeaf.fUserValue = "\n"; kState.fSyntaxTree->fLeafList.push_back(syntaxLeaf); @@ -1005,7 +1005,7 @@ cc_next: // extern does not declare anything, it extern_segments a variable. // so that's why it's not declare upper. - if (NDK::find_word(ln, "extern")) + if (ToolchainKit::find_word(ln, "extern")) { auto substr = ln.substr(ln.find("extern") + strlen("extern")); kCompilerVariables.push_back({.fValue = substr}); @@ -1076,7 +1076,7 @@ skip_braces_check: for (auto& key : kCompilerTypes) { - if (NDK::find_word(ln, key.fName)) + if (ToolchainKit::find_word(ln, key.fName)) { if (isdigit(ln[ln.find(key.fName) + key.fName.size() + 1])) { @@ -1177,9 +1177,9 @@ skip_braces_check: if (ln.find('(') != std::string::npos) { - if (ln.find(';') == std::string::npos && !NDK::find_word(ln, "|") && - !NDK::find_word(ln, "||") && !NDK::find_word(ln, "&") && - !NDK::find_word(ln, "&&") && !NDK::find_word(ln, "~")) + if (ln.find(';') == std::string::npos && !ToolchainKit::find_word(ln, "|") && + !ToolchainKit::find_word(ln, "||") && !ToolchainKit::find_word(ln, "&") && + !ToolchainKit::find_word(ln, "&&") && !ToolchainKit::find_word(ln, "~")) { bool found_func = false; size_t i = ln.find('('); @@ -1295,17 +1295,17 @@ skip_braces_check: ///////////////////////////////////////////////////////////////////////////////////////// -class AssemblyCCInterface final : public NDK::AssemblyInterface +class AssemblyCCInterface final : public ToolchainKit::AssemblyInterface { public: explicit AssemblyCCInterface() = default; ~AssemblyCCInterface() override = default; - NDK_COPY_DEFAULT(AssemblyCCInterface); + TOOLCHAINKIT_COPY_DEFAULT(AssemblyCCInterface); [[maybe_unused]] static Int32 Arch() noexcept { - return NDK::AssemblyFactory::kArch64x0; + return ToolchainKit::AssemblyFactory::kArch64x0; } Int32 CompileToFormat(std::string& src, Int32 arch) override @@ -1337,14 +1337,14 @@ public: kState.fOutputAssembly = std::make_unique<std::ofstream>(dest); - auto fmt = NDK::current_date(); + auto fmt = ToolchainKit::current_date(); (*kState.fOutputAssembly) << "# Path: " << src_file << "\n"; (*kState.fOutputAssembly) << "# Language: 64x0 Assembly (Generated from ANSI C)\n"; (*kState.fOutputAssembly) << "# Date: " << fmt << "\n\n"; - NDK::SyntaxLeafList syntax; + ToolchainKit::SyntaxLeafList syntax; kState.fSyntaxTreeList.push_back(syntax); kState.fSyntaxTree = @@ -1381,7 +1381,7 @@ public: for (auto& access_ident : access_keywords) { - if (NDK::find_word(leaf.fUserValue, access_ident)) + if (ToolchainKit::find_word(leaf.fUserValue, access_ident)) { for (auto& struc : kState.kStructMap) { @@ -1392,7 +1392,7 @@ public: for (auto& keyword : keywords) { - if (NDK::find_word(leaf.fUserValue, keyword)) + if (ToolchainKit::find_word(leaf.fUserValue, keyword)) { std::size_t cnt = 0UL; @@ -1423,7 +1423,7 @@ public: } } - if (NDK::find_word(leaf.fUserValue, needle)) + if (ToolchainKit::find_word(leaf.fUserValue, needle)) { if (leaf.fUserValue.find("extern_segment " + needle) != std::string::npos) @@ -1494,7 +1494,7 @@ static void cc_print_help() #define kExt ".c" -NDK_MODULE(NewOSCompilerCLang64x0) +TOOLCHAINKIT_MODULE(NewOSCompilerCLang64x0) { kCompilerTypes.push_back({.fName = "void", .fValue = "void"}); kCompilerTypes.push_back({.fName = "char", .fValue = "byte"}); @@ -1506,7 +1506,7 @@ NDK_MODULE(NewOSCompilerCLang64x0) bool skip = false; kFactory.Mount(new AssemblyCCInterface()); - kMachine = NDK::AssemblyFactory::kArch64x0; + kMachine = ToolchainKit::AssemblyFactory::kArch64x0; kCompilerFrontend = new CompilerFrontend64x0(); for (auto index = 1UL; index < argc; ++index) diff --git a/dev/ToolchainKit/src/CCompilerPower64.cc b/dev/ToolchainKit/src/CCompilerPower64.cc index 9c6d7e3..b680191 100644 --- a/dev/ToolchainKit/src/CCompilerPower64.cc +++ b/dev/ToolchainKit/src/CCompilerPower64.cc @@ -70,10 +70,10 @@ namespace detail struct CompilerState final { - std::vector<NDK::SyntaxLeafList> fSyntaxTreeList; + std::vector<ToolchainKit::SyntaxLeafList> fSyntaxTreeList; std::vector<CompilerRegisterMap> kStackFrame; std::vector<CompilerStructMap> kStructMap; - NDK::SyntaxLeafList* fSyntaxTree{nullptr}; + ToolchainKit::SyntaxLeafList* fSyntaxTree{nullptr}; std::unique_ptr<std::ofstream> fOutputAssembly; std::string fLastFile; std::string fLastError; @@ -124,7 +124,7 @@ static std::string kRegisterPrefix = kAsmRegisterPrefix; ///////////////////////////////////////// static std::vector<std::string> kFileList; -static NDK::AssemblyFactory kFactory; +static ToolchainKit::AssemblyFactory kFactory; static bool kInStruct = false; static bool kOnWhileLoop = false; static bool kOnForLoop = false; @@ -133,13 +133,13 @@ static bool kIfFound = false; static size_t kBracesCount = 0UL; /* @brief C compiler backend for C */ -class CompilerFrontendPower64 final : public NDK::ICompilerFrontend +class CompilerFrontendPower64 final : public ToolchainKit::ICompilerFrontend { public: explicit CompilerFrontendPower64() = default; ~CompilerFrontendPower64() override = default; - NDK_COPY_DEFAULT(CompilerFrontendPower64); + TOOLCHAINKIT_COPY_DEFAULT(CompilerFrontendPower64); std::string Check(const char* text, const char* file); bool Compile(const std::string text, const std::string file) override; @@ -210,7 +210,7 @@ bool CompilerFrontendPower64::Compile(const std::string text, const std::string // start parsing for (size_t text_index = 0; text_index < textBuffer.size(); ++text_index) { - auto syntaxLeaf = NDK::SyntaxLeafList::SyntaxLeaf(); + auto syntaxLeaf = ToolchainKit::SyntaxLeafList::SyntaxLeaf(); auto gen = uuids::uuid_random_generator{generator}; uuids::uuid out = gen(); @@ -381,7 +381,7 @@ bool CompilerFrontendPower64::Compile(const std::string text, const std::string if (expr.find(")") != std::string::npos) expr.erase(expr.find(")")); - kIfFunction = "__NDK_IF_PROC_"; + kIfFunction = "__TOOLCHAINKIT_IF_PROC_"; kIfFunction += std::to_string(time_off._Raw); syntaxLeaf.fUserValue = @@ -760,7 +760,7 @@ bool CompilerFrontendPower64::Compile(const std::string text, const std::string syntaxLeaf.fUserValue.clear(); } - auto syntaxLeaf = NDK::SyntaxLeafList::SyntaxLeaf(); + auto syntaxLeaf = ToolchainKit::SyntaxLeafList::SyntaxLeaf(); syntaxLeaf.fUserValue = "\n"; kState.fSyntaxTree->fLeafList.push_back(syntaxLeaf); @@ -1028,7 +1028,7 @@ cc_next: // extern does not declare anything, it extern_segments a variable. // so that's why it's not declare upper. - if (NDK::find_word(ln, "extern")) + if (ToolchainKit::find_word(ln, "extern")) { auto substr = ln.substr(ln.find("extern") + strlen("extern")); kCompilerVariables.push_back({.fValue = substr}); @@ -1099,7 +1099,7 @@ skip_braces_check: for (auto& key : kCompilerTypes) { - if (NDK::find_word(ln, key.fName)) + if (ToolchainKit::find_word(ln, key.fName)) { if (isdigit(ln[ln.find(key.fName) + key.fName.size() + 1])) { @@ -1200,9 +1200,9 @@ skip_braces_check: if (ln.find('(') != std::string::npos) { - if (ln.find(';') == std::string::npos && !NDK::find_word(ln, "|") && - !NDK::find_word(ln, "||") && !NDK::find_word(ln, "&") && - !NDK::find_word(ln, "&&") && !NDK::find_word(ln, "~")) + if (ln.find(';') == std::string::npos && !ToolchainKit::find_word(ln, "|") && + !ToolchainKit::find_word(ln, "||") && !ToolchainKit::find_word(ln, "&") && + !ToolchainKit::find_word(ln, "&&") && !ToolchainKit::find_word(ln, "~")) { bool found_func = false; size_t i = ln.find('('); @@ -1318,17 +1318,17 @@ skip_braces_check: ///////////////////////////////////////////////////////////////////////////////////////// -class AssemblyMountpointCLang final : public NDK::AssemblyInterface +class AssemblyMountpointCLang final : public ToolchainKit::AssemblyInterface { public: explicit AssemblyMountpointCLang() = default; ~AssemblyMountpointCLang() override = default; - NDK_COPY_DEFAULT(AssemblyMountpointCLang); + TOOLCHAINKIT_COPY_DEFAULT(AssemblyMountpointCLang); [[maybe_unused]] static Int32 Arch() noexcept { - return NDK::AssemblyFactory::kArchPowerPC; + return ToolchainKit::AssemblyFactory::kArchPowerPC; } Int32 CompileToFormat(std::string& src, Int32 arch) override @@ -1360,14 +1360,14 @@ public: kState.fOutputAssembly = std::make_unique<std::ofstream>(dest); - auto fmt = NDK::current_date(); + auto fmt = ToolchainKit::current_date(); (*kState.fOutputAssembly) << "# Path: " << src_file << "\n"; (*kState.fOutputAssembly) << "# Language: POWER Assembly (Generated from C)\n"; (*kState.fOutputAssembly) << "# Date: " << fmt << "\n\n"; - NDK::SyntaxLeafList syntax; + ToolchainKit::SyntaxLeafList syntax; kState.fSyntaxTreeList.push_back(syntax); kState.fSyntaxTree = @@ -1403,7 +1403,7 @@ public: for (auto& access_ident : access_keywords) { - if (NDK::find_word(leaf.fUserValue, access_ident)) + if (ToolchainKit::find_word(leaf.fUserValue, access_ident)) { for (auto& struc : kState.kStructMap) { @@ -1414,7 +1414,7 @@ public: for (auto& keyword : keywords) { - if (NDK::find_word(leaf.fUserValue, keyword)) + if (ToolchainKit::find_word(leaf.fUserValue, keyword)) { std::size_t cnt = 0UL; @@ -1445,7 +1445,7 @@ public: } } - if (NDK::find_word(leaf.fUserValue, needle)) + if (ToolchainKit::find_word(leaf.fUserValue, needle)) { if (leaf.fUserValue.find("extern_segment ") != std::string::npos) { @@ -1514,7 +1514,7 @@ static void cc_print_help() #define kExt ".c" -NDK_MODULE(NewOSCompilerCLangPowerPC) +TOOLCHAINKIT_MODULE(NewOSCompilerCLangPowerPC) { kCompilerTypes.push_back({.fName = "void", .fValue = "void"}); kCompilerTypes.push_back({.fName = "char", .fValue = "byte"}); @@ -1526,7 +1526,7 @@ NDK_MODULE(NewOSCompilerCLangPowerPC) bool skip = false; kFactory.Mount(new AssemblyMountpointCLang()); - kMachine = NDK::AssemblyFactory::kArchPowerPC; + kMachine = ToolchainKit::AssemblyFactory::kArchPowerPC; kCompilerFrontend = new CompilerFrontendPower64(); for (auto index = 1UL; index < argc; ++index) diff --git a/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc b/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc index 5dc0855..f30f611 100644 --- a/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc +++ b/dev/ToolchainKit/src/CPlusPlusCompilerAMD64.cc @@ -25,7 +25,7 @@ #include <ToolchainKit/UUID.h> /* ZKA C++ Compiler driver */ -/* This is part of the NDK. */ +/* This is part of the ToolchainKit. */ /* (c) ZKA Web Services Co */ /// @author Amlal El Mahrouss (amlel) @@ -76,7 +76,7 @@ namespace detail { std::vector<CompilerRegisterMap> kStackFrame; std::vector<CompilerStructMap> kStructMap; - NDK::SyntaxLeafList* fSyntaxTree{nullptr}; + ToolchainKit::SyntaxLeafList* fSyntaxTree{nullptr}; std::unique_ptr<std::ofstream> fOutputAssembly; std::string fLastFile; std::string fLastError; @@ -106,7 +106,7 @@ namespace detail ///////////////////////////////////////////////////////////////////////////////////////// // Target architecture. -static int kMachine = NDK::AssemblyFactory::kArchAMD64; +static int kMachine = ToolchainKit::AssemblyFactory::kArchAMD64; ///////////////////////////////////////// @@ -118,7 +118,7 @@ static size_t kRegisterCnt = kAsmRegisterLimit; static size_t kStartUsable = 8; static size_t kUsableLimit = 15; static size_t kRegisterCounter = kStartUsable; -static std::vector<NDK::CompilerKeyword> kKeywords; +static std::vector<ToolchainKit::CompilerKeyword> kKeywords; ///////////////////////////////////////// @@ -127,7 +127,7 @@ static std::vector<NDK::CompilerKeyword> kKeywords; ///////////////////////////////////////// static std::vector<std::string> kFileList; -static NDK::AssemblyFactory kFactory; +static ToolchainKit::AssemblyFactory kFactory; static bool kInStruct = false; static bool kOnWhileLoop = false; static bool kOnForLoop = false; @@ -135,13 +135,13 @@ static bool kInBraces = false; static size_t kBracesCount = 0UL; /* @brief C++ compiler backend for the ZKA C++ driver */ -class CompilerFrontendCPlusPlus final : public NDK::ICompilerFrontend +class CompilerFrontendCPlusPlus final : public ToolchainKit::ICompilerFrontend { public: explicit CompilerFrontendCPlusPlus() = default; ~CompilerFrontendCPlusPlus() override = default; - NDK_COPY_DEFAULT(CompilerFrontendCPlusPlus); + TOOLCHAINKIT_COPY_DEFAULT(CompilerFrontendCPlusPlus); bool Compile(const std::string text, const std::string file) override; @@ -205,7 +205,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, return false; std::size_t index = 0UL; - std::vector<std::pair<NDK::CompilerKeyword, std::size_t>> keywords_list; + std::vector<std::pair<ToolchainKit::CompilerKeyword, std::size_t>> keywords_list; bool found = false; static bool commentBlock = false; @@ -216,15 +216,15 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, { switch (keyword.keyword_kind) { - case NDK::eKeywordKindCommentMultiLineStart: { + case ToolchainKit::eKeywordKindCommentMultiLineStart: { commentBlock = true; return true; } - case NDK::eKeywordKindCommentMultiLineEnd: { + case ToolchainKit::eKeywordKindCommentMultiLineEnd: { commentBlock = false; break; } - case NDK::eKeywordKindCommentInline: { + case ToolchainKit::eKeywordKindCommentInline: { break; } default: @@ -232,15 +232,15 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, } if (text[text.find(keyword.keyword_name) - 1] == '+' && - keyword.keyword_kind == NDK::KeywordKind::eKeywordKindVariableAssign) + keyword.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableAssign) continue; if (text[text.find(keyword.keyword_name) - 1] == '-' && - keyword.keyword_kind == NDK::KeywordKind::eKeywordKindVariableAssign) + keyword.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableAssign) continue; if (text[text.find(keyword.keyword_name) + 1] == '=' && - keyword.keyword_kind == NDK::KeywordKind::eKeywordKindVariableAssign) + keyword.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableAssign) continue; keywords_list.emplace_back(std::make_pair(keyword, index)); @@ -264,11 +264,11 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, for (auto& keyword : keywords_list) { - auto syntax_tree = NDK::SyntaxLeafList::SyntaxLeaf(); + auto syntax_tree = ToolchainKit::SyntaxLeafList::SyntaxLeaf(); switch (keyword.first.keyword_kind) { - case NDK::KeywordKind::eKeywordKindIf: { + case ToolchainKit::KeywordKind::eKeywordKindIf: { auto expr = text.substr(text.find(keyword.first.keyword_name) + keyword.first.keyword_name.size() + 1, text.find(")") - 1); if (expr.find(">=") != std::string::npos) @@ -356,7 +356,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, break; } - case NDK::KeywordKind::eKeywordKindFunctionStart: { + case ToolchainKit::KeywordKind::eKeywordKindFunctionStart: { if (text.ends_with(";")) { break; @@ -384,11 +384,11 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, ch = '_'; } - syntax_tree.fUserValue = "public_segment .code64 __NDK_" + fnName + "\n"; + syntax_tree.fUserValue = "public_segment .code64 __TOOLCHAINKIT_" + fnName + "\n"; ++kLevelFunction; } - case NDK::KeywordKind::eKeywordKindFunctionEnd: { + case ToolchainKit::KeywordKind::eKeywordKindFunctionEnd: { if (text.ends_with(";")) break; @@ -403,50 +403,50 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, kRegisterMap.clear(); break; } - case NDK::KeywordKind::eKeywordKindEndInstr: - case NDK::KeywordKind::eKeywordKindVariableInc: - case NDK::KeywordKind::eKeywordKindVariableDec: - case NDK::KeywordKind::eKeywordKindVariableAssign: { + case ToolchainKit::KeywordKind::eKeywordKindEndInstr: + case ToolchainKit::KeywordKind::eKeywordKindVariableInc: + case ToolchainKit::KeywordKind::eKeywordKindVariableDec: + case ToolchainKit::KeywordKind::eKeywordKindVariableAssign: { std::string valueOfVar = ""; - if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableInc) + if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableInc) { valueOfVar = text.substr(text.find("+=") + 2); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableDec) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableDec) { valueOfVar = text.substr(text.find("-=") + 2); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableAssign) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableAssign) { valueOfVar = text.substr(text.find("=") + 1); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindEndInstr) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindEndInstr) { break; } while (valueOfVar.find(";") != std::string::npos && - keyword.first.keyword_kind != NDK::KeywordKind::eKeywordKindEndInstr) + keyword.first.keyword_kind != ToolchainKit::KeywordKind::eKeywordKindEndInstr) { valueOfVar.erase(valueOfVar.find(";")); } std::string varName = text; - if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableInc) + if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableInc) { varName.erase(varName.find("+=")); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableDec) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableDec) { varName.erase(varName.find("-=")); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableAssign) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableAssign) { varName.erase(varName.find("=")); } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindEndInstr) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindEndInstr) { varName.erase(varName.find(";")); } @@ -455,7 +455,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, for (auto& keyword : kKeywords) { - if (keyword.keyword_kind == NDK::eKeywordKindType) + if (keyword.keyword_kind == ToolchainKit::eKeywordKindType) { if (text.find(keyword.keyword_name) != std::string::npos) { @@ -472,8 +472,8 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, std::string instr = "mov "; - if (typeFound && keyword.first.keyword_kind != NDK::KeywordKind::eKeywordKindVariableInc && - keyword.first.keyword_kind != NDK::KeywordKind::eKeywordKindVariableDec) + if (typeFound && keyword.first.keyword_kind != ToolchainKit::KeywordKind::eKeywordKindVariableInc && + keyword.first.keyword_kind != ToolchainKit::KeywordKind::eKeywordKindVariableDec) { if (kRegisterMap.size() > cRegisters.size()) { @@ -521,8 +521,8 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, if (valueOfVar[0] == '\"') { - syntax_tree.fUserValue = "segment .data64 __NDK_LOCAL_VAR_" + varName + ": db " + valueOfVar + ", 0\n\n"; - syntax_tree.fUserValue += instr + cRegisters[kRegisterMap.size() - 1] + ", " + "__NDK_LOCAL_VAR_" + varName + "\n"; + syntax_tree.fUserValue = "segment .data64 __TOOLCHAINKIT_LOCAL_VAR_" + varName + ": db " + valueOfVar + ", 0\n\n"; + syntax_tree.fUserValue += instr + cRegisters[kRegisterMap.size() - 1] + ", " + "__TOOLCHAINKIT_LOCAL_VAR_" + varName + "\n"; } else { @@ -538,8 +538,8 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, if (valueOfVar[0] == '\"') { - syntax_tree.fUserValue = "segment .data64 __NDK_LOCAL_VAR_" + varName + ": db " + valueOfVar + ", 0\n"; - syntax_tree.fUserValue += instr + cRegisters[kRegisterMap.size()] + ", " + "__NDK_LOCAL_VAR_" + varName + "\n"; + syntax_tree.fUserValue = "segment .data64 __TOOLCHAINKIT_LOCAL_VAR_" + varName + ": db " + valueOfVar + ", 0\n"; + syntax_tree.fUserValue += instr + cRegisters[kRegisterMap.size()] + ", " + "__TOOLCHAINKIT_LOCAL_VAR_" + varName + "\n"; } else { @@ -566,7 +566,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, done: for (auto& keyword : kKeywords) { - if (keyword.keyword_kind == NDK::eKeywordKindType && + if (keyword.keyword_kind == ToolchainKit::eKeywordKindType && varName.find(keyword.keyword_name) != std::string::npos) { varName.erase(varName.find(keyword.keyword_name), keyword.keyword_name.size()); @@ -579,24 +579,24 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, break; } - if (kKeywords[keyword.second - 1].keyword_kind == NDK::eKeywordKindType || - kKeywords[keyword.second - 1].keyword_kind == NDK::eKeywordKindTypePtr) + if (kKeywords[keyword.second - 1].keyword_kind == ToolchainKit::eKeywordKindType || + kKeywords[keyword.second - 1].keyword_kind == ToolchainKit::eKeywordKindTypePtr) { syntax_tree.fUserValue = "\n"; continue; } - if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindEndInstr) + if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindEndInstr) { syntax_tree.fUserValue = "\n"; continue; } - if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableInc) + if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableInc) { instr = "add "; } - else if (keyword.first.keyword_kind == NDK::KeywordKind::eKeywordKindVariableDec) + else if (keyword.first.keyword_kind == ToolchainKit::KeywordKind::eKeywordKindVariableDec) { instr = "sub "; } @@ -680,7 +680,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, break; } - case NDK::KeywordKind::eKeywordKindReturn: { + case ToolchainKit::KeywordKind::eKeywordKindReturn: { auto pos = text.find("return") + strlen("return") + 1; std::string subText = text.substr(pos); subText = subText.erase(subText.find(";")); @@ -714,7 +714,7 @@ bool CompilerFrontendCPlusPlus::Compile(const std::string text, } else { - syntax_tree.fUserValue = "__NDK_LOCAL_RETURN_STRING: db " + subText + ", 0\nmov rcx, __NDK_LOCAL_RETURN_STRING\n"; + syntax_tree.fUserValue = "__TOOLCHAINKIT_LOCAL_RETURN_STRING: db " + subText + ", 0\nmov rcx, __TOOLCHAINKIT_LOCAL_RETURN_STRING\n"; syntax_tree.fUserValue += "mov rax, rcx\r\nret\n"; } @@ -740,17 +740,17 @@ ndk_compile_ok: ///////////////////////////////////////////////////////////////////////////////////////// -class AssemblyCPlusPlusInterface final : public NDK::AssemblyInterface +class AssemblyCPlusPlusInterface final : public ToolchainKit::AssemblyInterface { public: explicit AssemblyCPlusPlusInterface() = default; ~AssemblyCPlusPlusInterface() override = default; - NDK_COPY_DEFAULT(AssemblyCPlusPlusInterface); + TOOLCHAINKIT_COPY_DEFAULT(AssemblyCPlusPlusInterface); [[maybe_unused]] static Int32 Arch() noexcept { - return NDK::AssemblyFactory::kArchAMD64; + return ToolchainKit::AssemblyFactory::kArchAMD64; } Int32 CompileToFormat(std::string& src, Int32 arch) override @@ -772,7 +772,7 @@ public: if (dest.empty()) { - dest = "CXX-NDK-"; + dest = "CXX-ToolchainKit-"; std::random_device rd; auto seed_data = std::array<int, std::mt19937::state_size>{}; @@ -790,7 +790,7 @@ public: kState.fOutputAssembly = std::make_unique<std::ofstream>(dest); - auto fmt = NDK::current_date(); + auto fmt = ToolchainKit::current_date(); (*kState.fOutputAssembly) << "; Path: " << src_file << "\n"; (*kState.fOutputAssembly) @@ -799,7 +799,7 @@ public: (*kState.fOutputAssembly) << "#bits 64\n#org 0x1000000" << "\n"; - kState.fSyntaxTree = new NDK::SyntaxLeafList(); + kState.fSyntaxTree = new ToolchainKit::SyntaxLeafList(); // =================================== // Parse source file. @@ -846,67 +846,67 @@ static void cxx_print_help() ".cpp", ".cxx", ".cc", ".c++", ".cp" \ } -NDK_MODULE(CompilerCPlusPlusX8664) +TOOLCHAINKIT_MODULE(CompilerCPlusPlusX8664) { bool skip = false; - kKeywords.push_back({.keyword_name = "if", .keyword_kind = NDK::eKeywordKindIf}); - kKeywords.push_back({.keyword_name = "else", .keyword_kind = NDK::eKeywordKindElse}); - kKeywords.push_back({.keyword_name = "else if", .keyword_kind = NDK::eKeywordKindElseIf}); - - kKeywords.push_back({.keyword_name = "class", .keyword_kind = NDK::eKeywordKindClass}); - kKeywords.push_back({.keyword_name = "struct", .keyword_kind = NDK::eKeywordKindClass}); - kKeywords.push_back({.keyword_name = "namespace", .keyword_kind = NDK::eKeywordKindNamespace}); - kKeywords.push_back({.keyword_name = "typedef", .keyword_kind = NDK::eKeywordKindTypedef}); - kKeywords.push_back({.keyword_name = "using", .keyword_kind = NDK::eKeywordKindTypedef}); - kKeywords.push_back({.keyword_name = "{", .keyword_kind = NDK::eKeywordKindBodyStart}); - kKeywords.push_back({.keyword_name = "}", .keyword_kind = NDK::eKeywordKindBodyEnd}); - kKeywords.push_back({.keyword_name = "auto", .keyword_kind = NDK::eKeywordKindVariable}); - kKeywords.push_back({.keyword_name = "int", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "bool", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "unsigned", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "short", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "char", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "long", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "float", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "double", .keyword_kind = NDK::eKeywordKindType}); - kKeywords.push_back({.keyword_name = "void", .keyword_kind = NDK::eKeywordKindType}); - - kKeywords.push_back({.keyword_name = "auto*", .keyword_kind = NDK::eKeywordKindVariablePtr}); - kKeywords.push_back({.keyword_name = "int*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "bool*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "unsigned*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "short*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "char*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "long*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "float*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "double*", .keyword_kind = NDK::eKeywordKindTypePtr}); - kKeywords.push_back({.keyword_name = "void*", .keyword_kind = NDK::eKeywordKindTypePtr}); - - kKeywords.push_back({.keyword_name = "(", .keyword_kind = NDK::eKeywordKindFunctionStart}); - kKeywords.push_back({.keyword_name = ")", .keyword_kind = NDK::eKeywordKindFunctionEnd}); - kKeywords.push_back({.keyword_name = "=", .keyword_kind = NDK::eKeywordKindVariableAssign}); - kKeywords.push_back({.keyword_name = "+=", .keyword_kind = NDK::eKeywordKindVariableInc}); - kKeywords.push_back({.keyword_name = "-=", .keyword_kind = NDK::eKeywordKindVariableDec}); - kKeywords.push_back({.keyword_name = "const", .keyword_kind = NDK::eKeywordKindConstant}); - kKeywords.push_back({.keyword_name = "*", .keyword_kind = NDK::eKeywordKindPtr}); - kKeywords.push_back({.keyword_name = "->", .keyword_kind = NDK::eKeywordKindPtrAccess}); - kKeywords.push_back({.keyword_name = ".", .keyword_kind = NDK::eKeywordKindAccess}); - kKeywords.push_back({.keyword_name = ",", .keyword_kind = NDK::eKeywordKindArgSeparator}); - kKeywords.push_back({.keyword_name = ";", .keyword_kind = NDK::eKeywordKindEndInstr}); - kKeywords.push_back({.keyword_name = ":", .keyword_kind = NDK::eKeywordKindSpecifier}); - kKeywords.push_back({.keyword_name = "public:", .keyword_kind = NDK::eKeywordKindSpecifier}); - kKeywords.push_back({.keyword_name = "private:", .keyword_kind = NDK::eKeywordKindSpecifier}); - kKeywords.push_back({.keyword_name = "protected:", .keyword_kind = NDK::eKeywordKindSpecifier}); - kKeywords.push_back({.keyword_name = "final", .keyword_kind = NDK::eKeywordKindSpecifier}); - kKeywords.push_back({.keyword_name = "return", .keyword_kind = NDK::eKeywordKindReturn}); - kKeywords.push_back({.keyword_name = "/*", .keyword_kind = NDK::eKeywordKindCommentMultiLineStart}); - kKeywords.push_back({.keyword_name = "*/", .keyword_kind = NDK::eKeywordKindCommentMultiLineStart}); - kKeywords.push_back({.keyword_name = "//", .keyword_kind = NDK::eKeywordKindCommentInline}); - kKeywords.push_back({.keyword_name = "==", .keyword_kind = NDK::eKeywordKindEq}); - kKeywords.push_back({.keyword_name = "!=", .keyword_kind = NDK::eKeywordKindNotEq}); - kKeywords.push_back({.keyword_name = ">=", .keyword_kind = NDK::eKeywordKindGreaterEq}); - kKeywords.push_back({.keyword_name = "<=", .keyword_kind = NDK::eKeywordKindLessEq}); + kKeywords.push_back({.keyword_name = "if", .keyword_kind = ToolchainKit::eKeywordKindIf}); + kKeywords.push_back({.keyword_name = "else", .keyword_kind = ToolchainKit::eKeywordKindElse}); + kKeywords.push_back({.keyword_name = "else if", .keyword_kind = ToolchainKit::eKeywordKindElseIf}); + + kKeywords.push_back({.keyword_name = "class", .keyword_kind = ToolchainKit::eKeywordKindClass}); + kKeywords.push_back({.keyword_name = "struct", .keyword_kind = ToolchainKit::eKeywordKindClass}); + kKeywords.push_back({.keyword_name = "namespace", .keyword_kind = ToolchainKit::eKeywordKindNamespace}); + kKeywords.push_back({.keyword_name = "typedef", .keyword_kind = ToolchainKit::eKeywordKindTypedef}); + kKeywords.push_back({.keyword_name = "using", .keyword_kind = ToolchainKit::eKeywordKindTypedef}); + kKeywords.push_back({.keyword_name = "{", .keyword_kind = ToolchainKit::eKeywordKindBodyStart}); + kKeywords.push_back({.keyword_name = "}", .keyword_kind = ToolchainKit::eKeywordKindBodyEnd}); + kKeywords.push_back({.keyword_name = "auto", .keyword_kind = ToolchainKit::eKeywordKindVariable}); + kKeywords.push_back({.keyword_name = "int", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "bool", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "unsigned", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "short", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "char", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "long", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "float", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "double", .keyword_kind = ToolchainKit::eKeywordKindType}); + kKeywords.push_back({.keyword_name = "void", .keyword_kind = ToolchainKit::eKeywordKindType}); + + kKeywords.push_back({.keyword_name = "auto*", .keyword_kind = ToolchainKit::eKeywordKindVariablePtr}); + kKeywords.push_back({.keyword_name = "int*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "bool*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "unsigned*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "short*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "char*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "long*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "float*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "double*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + kKeywords.push_back({.keyword_name = "void*", .keyword_kind = ToolchainKit::eKeywordKindTypePtr}); + + kKeywords.push_back({.keyword_name = "(", .keyword_kind = ToolchainKit::eKeywordKindFunctionStart}); + kKeywords.push_back({.keyword_name = ")", .keyword_kind = ToolchainKit::eKeywordKindFunctionEnd}); + kKeywords.push_back({.keyword_name = "=", .keyword_kind = ToolchainKit::eKeywordKindVariableAssign}); + kKeywords.push_back({.keyword_name = "+=", .keyword_kind = ToolchainKit::eKeywordKindVariableInc}); + kKeywords.push_back({.keyword_name = "-=", .keyword_kind = ToolchainKit::eKeywordKindVariableDec}); + kKeywords.push_back({.keyword_name = "const", .keyword_kind = ToolchainKit::eKeywordKindConstant}); + kKeywords.push_back({.keyword_name = "*", .keyword_kind = ToolchainKit::eKeywordKindPtr}); + kKeywords.push_back({.keyword_name = "->", .keyword_kind = ToolchainKit::eKeywordKindPtrAccess}); + kKeywords.push_back({.keyword_name = ".", .keyword_kind = ToolchainKit::eKeywordKindAccess}); + kKeywords.push_back({.keyword_name = ",", .keyword_kind = ToolchainKit::eKeywordKindArgSeparator}); + kKeywords.push_back({.keyword_name = ";", .keyword_kind = ToolchainKit::eKeywordKindEndInstr}); + kKeywords.push_back({.keyword_name = ":", .keyword_kind = ToolchainKit::eKeywordKindSpecifier}); + kKeywords.push_back({.keyword_name = "public:", .keyword_kind = ToolchainKit::eKeywordKindSpecifier}); + kKeywords.push_back({.keyword_name = "private:", .keyword_kind = ToolchainKit::eKeywordKindSpecifier}); + kKeywords.push_back({.keyword_name = "protected:", .keyword_kind = ToolchainKit::eKeywordKindSpecifier}); + kKeywords.push_back({.keyword_name = "final", .keyword_kind = ToolchainKit::eKeywordKindSpecifier}); + kKeywords.push_back({.keyword_name = "return", .keyword_kind = ToolchainKit::eKeywordKindReturn}); + kKeywords.push_back({.keyword_name = "/*", .keyword_kind = ToolchainKit::eKeywordKindCommentMultiLineStart}); + kKeywords.push_back({.keyword_name = "*/", .keyword_kind = ToolchainKit::eKeywordKindCommentMultiLineStart}); + kKeywords.push_back({.keyword_name = "//", .keyword_kind = ToolchainKit::eKeywordKindCommentInline}); + kKeywords.push_back({.keyword_name = "==", .keyword_kind = ToolchainKit::eKeywordKindEq}); + kKeywords.push_back({.keyword_name = "!=", .keyword_kind = ToolchainKit::eKeywordKindNotEq}); + kKeywords.push_back({.keyword_name = ">=", .keyword_kind = ToolchainKit::eKeywordKindGreaterEq}); + kKeywords.push_back({.keyword_name = "<=", .keyword_kind = ToolchainKit::eKeywordKindLessEq}); kFactory.Mount(new AssemblyCPlusPlusInterface()); kCompilerFrontend = new CompilerFrontendCPlusPlus(); diff --git a/dev/ToolchainKit/src/CPlusPlusCompilerPreProcessor.cc b/dev/ToolchainKit/src/CPlusPlusCompilerPreProcessor.cc index 6ffb175..2d1e4c4 100644 --- a/dev/ToolchainKit/src/CPlusPlusCompilerPreProcessor.cc +++ b/dev/ToolchainKit/src/CPlusPlusCompilerPreProcessor.cc @@ -74,7 +74,7 @@ namespace detail explicit bpp_pragma() = default; ~bpp_pragma() = default; - NDK_COPY_DEFAULT(bpp_pragma); + TOOLCHAINKIT_COPY_DEFAULT(bpp_pragma); std::string fMacroName; bpp_parser_fn_t fParse; @@ -370,21 +370,21 @@ void bpp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) for (auto macro : kMacros) { - if (NDK::find_word(hdr_line, macro.fName)) + if (ToolchainKit::find_word(hdr_line, macro.fName)) { - if (hdr_line.substr(hdr_line.find(macro.fName)).find(macro.fName + '(') != NDK::String::npos) + if (hdr_line.substr(hdr_line.find(macro.fName)).find(macro.fName + '(') != ToolchainKit::String::npos) { if (!macro.fArgs.empty()) { - NDK::String symbol_val = macro.fValue; - std::vector<NDK::String> args; + ToolchainKit::String symbol_val = macro.fValue; + std::vector<ToolchainKit::String> args; size_t x_arg_indx = 0; - NDK::String line_after_define = hdr_line; - NDK::String str_arg; + ToolchainKit::String line_after_define = hdr_line; + ToolchainKit::String str_arg; - if (line_after_define.find("(") != NDK::String::npos) + if (line_after_define.find("(") != ToolchainKit::String::npos) { line_after_define.erase(0, line_after_define.find("(") + 1); @@ -411,7 +411,7 @@ void bpp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) for (auto arg : macro.fArgs) { - if (symbol_val.find(macro.fArgs[x_arg_indx]) != NDK::String::npos) + if (symbol_val.find(macro.fArgs[x_arg_indx]) != ToolchainKit::String::npos) { symbol_val.replace(symbol_val.find(macro.fArgs[x_arg_indx]), macro.fArgs[x_arg_indx].size(), args[x_arg_indx]); @@ -494,7 +494,7 @@ void bpp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) std::string str; - if (line_after_define.find("(") != NDK::String::npos) + if (line_after_define.find("(") != ToolchainKit::String::npos) { line_after_define.erase(0, line_after_define.find("(") + 1); @@ -908,7 +908,7 @@ void bpp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) ///////////////////////////////////////////////////////////////////////////////////////// -NDK_MODULE(CPlusPlusPreprocessorMain) +TOOLCHAINKIT_MODULE(CPlusPlusPreprocessorMain) { try { @@ -931,7 +931,7 @@ NDK_MODULE(CPlusPlusPreprocessorMain) detail::bpp_macro macro_zka; - macro_zka.fName = "__NDK__"; + macro_zka.fName = "__TOOLCHAINKIT__"; macro_zka.fValue = "1"; kMacros.push_back(macro_zka); @@ -1044,7 +1044,7 @@ NDK_MODULE(CPlusPlusPreprocessorMain) } if (kFiles.empty()) - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; for (auto& file : kFiles) { diff --git a/dev/ToolchainKit/src/Detail/AsmUtils.h b/dev/ToolchainKit/src/Detail/AsmUtils.h index a921b54..519c1fe 100644 --- a/dev/ToolchainKit/src/Detail/AsmUtils.h +++ b/dev/ToolchainKit/src/Detail/AsmUtils.h @@ -9,7 +9,7 @@ #include <ToolchainKit/AAL/Asm.h> #include <ToolchainKit/Parser.h> -using namespace NDK; +using namespace ToolchainKit; namespace detail { @@ -42,7 +42,7 @@ static NumberCast32 GetNumber32(std::string lineBuffer, std::string numberKey) { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + lineBuffer, "NDK"); + detail::print_error_asm("invalid hex number: " + lineBuffer, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } @@ -62,7 +62,7 @@ static NumberCast32 GetNumber32(std::string lineBuffer, std::string numberKey) { if (errno != 0) { - detail::print_error_asm("invalid binary number:" + lineBuffer, "NDK"); + detail::print_error_asm("invalid binary number:" + lineBuffer, "ToolchainKit"); throw std::runtime_error("invalid_bin"); } } @@ -82,7 +82,7 @@ static NumberCast32 GetNumber32(std::string lineBuffer, std::string numberKey) { if (errno != 0) { - detail::print_error_asm("invalid octal number: " + lineBuffer, "NDK"); + detail::print_error_asm("invalid octal number: " + lineBuffer, "ToolchainKit"); throw std::runtime_error("invalid_octal"); } } @@ -102,7 +102,7 @@ static NumberCast32 GetNumber32(std::string lineBuffer, std::string numberKey) { if (errno != 0) { - detail::print_error_asm("invalid hex number: " + lineBuffer, "NDK"); + detail::print_error_asm("invalid hex number: " + lineBuffer, "ToolchainKit"); throw std::runtime_error("invalid_hex"); } } diff --git a/dev/ToolchainKit/src/IdlCompiler.cc b/dev/ToolchainKit/src/IdlCompiler.cc index e3189f3..675b328 100644 --- a/dev/ToolchainKit/src/IdlCompiler.cc +++ b/dev/ToolchainKit/src/IdlCompiler.cc @@ -26,7 +26,7 @@ @brief IDL compiler maih. */ -NDK_MODULE(ZKAIdlMain) +TOOLCHAINKIT_MODULE(ZKAIdlMain) { return 0; diff --git a/dev/ToolchainKit/src/Linker.cc b/dev/ToolchainKit/src/Linker.cc index 78478c2..312ffc9 100644 --- a/dev/ToolchainKit/src/Linker.cc +++ b/dev/ToolchainKit/src/Linker.cc @@ -54,10 +54,10 @@ enum eABIInvalid = 0xFFFF, }; -static NDK::String kOutput = ""; +static ToolchainKit::String kOutput = ""; static Int32 kAbi = eABINewOS; static Int32 kSubArch = kPefNoSubCpu; -static Int32 kArch = NDK::kPefArchInvalid; +static Int32 kArch = ToolchainKit::kPefArchInvalid; static Bool kFatBinaryEnable = false; static Bool kStartFound = false; static Bool kDuplicateSymbols = false; @@ -68,7 +68,7 @@ static const char* kLdDefineSymbol = ":UndefinedSymbol:"; static const char* kLdDynamicSym = ":RuntimeSymbol:"; /* object code and list. */ -static std::vector<NDK::String> kObjectList; +static std::vector<ToolchainKit::String> kObjectList; static std::vector<char> kObjectBytes; static uintptr_t kMIBCount = 8; @@ -80,7 +80,7 @@ static uintptr_t kMIBCount = 8; @brief ZKA linker main */ -NDK_MODULE(ZKALinkerMain) +TOOLCHAINKIT_MODULE(ZKALinkerMain) { bool is_executable = true; @@ -88,11 +88,12 @@ NDK_MODULE(ZKALinkerMain) * @brief parse flags and such. * */ - for (size_t i = 1; i < argc; ++i) + for (size_t linker_arg = 1; linker_arg < argc; ++linker_arg) { - if (StringCompare(argv[i], "/link:?") == 0) + if (StringCompare(argv[linker_arg], "/link:?") == 0) { kLinkerSplash(); + kStdOut << "/link:ver: Show linker version.\n"; kStdOut << "/link:?: Show linker help.\n"; kStdOut << "/link:verbose: Enable linker trace.\n"; @@ -108,67 +109,67 @@ NDK_MODULE(ZKALinkerMain) return 0; } - else if (StringCompare(argv[i], "/link:ver") == 0) + else if (StringCompare(argv[linker_arg], "/link:ver") == 0) { kLinkerSplash(); return 0; } - else if (StringCompare(argv[i], "/link:fat-binary") == 0) + else if (StringCompare(argv[linker_arg], "/link:fat-binary") == 0) { kFatBinaryEnable = true; continue; } - else if (StringCompare(argv[i], "/link:64k") == 0) + else if (StringCompare(argv[linker_arg], "/link:64k") == 0) { - kArch = NDK::kPefArch64000; + kArch = ToolchainKit::kPefArch64000; continue; } - else if (StringCompare(argv[i], "/link:amd64") == 0) + else if (StringCompare(argv[linker_arg], "/link:amd64") == 0) { - kArch = NDK::kPefArchAMD64; + kArch = ToolchainKit::kPefArchAMD64; continue; } - else if (StringCompare(argv[i], "/link:32k") == 0) + else if (StringCompare(argv[linker_arg], "/link:32k") == 0) { - kArch = NDK::kPefArch32000; + kArch = ToolchainKit::kPefArch32000; continue; } - else if (StringCompare(argv[i], "/link:power64") == 0) + else if (StringCompare(argv[linker_arg], "/link:power64") == 0) { - kArch = NDK::kPefArchPowerPC; + kArch = ToolchainKit::kPefArchPowerPC; continue; } - else if (StringCompare(argv[i], "/link:riscv64") == 0) + else if (StringCompare(argv[linker_arg], "/link:riscv64") == 0) { - kArch = NDK::kPefArchRISCV; + kArch = ToolchainKit::kPefArchRISCV; continue; } - else if (StringCompare(argv[i], "/link:arm64") == 0) + else if (StringCompare(argv[linker_arg], "/link:arm64") == 0) { - kArch = NDK::kPefArchARM64; + kArch = ToolchainKit::kPefArchARM64; continue; } - else if (StringCompare(argv[i], "/link:verbose") == 0) + else if (StringCompare(argv[linker_arg], "/link:verbose") == 0) { kVerbose = true; continue; } - else if (StringCompare(argv[i], "/link:dll") == 0) + else if (StringCompare(argv[linker_arg], "/link:dll") == 0) { if (kOutput.empty()) { continue; } - if (kOutput.find(kPefExt) != NDK::String::npos) + if (kOutput.find(kPefExt) != ToolchainKit::String::npos) kOutput.erase(kOutput.find(kPefExt), strlen(kPefExt)); kOutput += kPefDylibExt; @@ -177,22 +178,22 @@ NDK_MODULE(ZKALinkerMain) continue; } - else if (StringCompare(argv[i], "/link:output") == 0) + else if (StringCompare(argv[linker_arg], "/link:output") == 0) { - kOutput = argv[i + 1]; - ++i; + kOutput = argv[linker_arg + 1]; + ++linker_arg; continue; } else { - if (argv[i][0] == '/') + if (argv[linker_arg][0] == '/') { - kStdOut << "link: unknown flag: " << argv[i] << "\n"; - return NDK_EXEC_ERROR; + kStdOut << "link: unknown flag: " << argv[linker_arg] << "\n"; + continue; } - kObjectList.emplace_back(argv[i]); + kObjectList.emplace_back(argv[linker_arg]); continue; } @@ -201,14 +202,14 @@ NDK_MODULE(ZKALinkerMain) if (kOutput.empty()) { kStdOut << "link: no output filename set." << std::endl; - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } // sanity check. if (kObjectList.empty()) { kStdOut << "link: no input files." << std::endl; - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } else { @@ -222,7 +223,7 @@ NDK_MODULE(ZKALinkerMain) // if filesystem doesn't find file // -> throw error. kStdOut << "link: no such file: " << obj << std::endl; - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } } } @@ -231,15 +232,15 @@ NDK_MODULE(ZKALinkerMain) if (kArch == 0) { kStdOut << "link: no target architecture set, can't continue." << std::endl; - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } - NDK::PEFContainer pef_container{}; + ToolchainKit::PEFContainer pef_container{}; int32_t archs = kArch; pef_container.Count = 0UL; - pef_container.Kind = NDK::kPefKindExec; + pef_container.Kind = ToolchainKit::kPefKindExec; pef_container.SubCpu = kSubArch; pef_container.Linker = kLinkerId; // ZKA Web Services Co Linker pef_container.Abi = kAbi; // Multi-Processor UX ABI @@ -251,7 +252,7 @@ NDK_MODULE(ZKALinkerMain) // specify the start address, can be 0x10000 pef_container.Start = kLinkerDefaultOrigin; - pef_container.HdrSz = sizeof(NDK::PEFContainer); + pef_container.HdrSz = sizeof(ToolchainKit::PEFContainer); std::ofstream output_fc(kOutput, std::ofstream::binary); @@ -262,20 +263,20 @@ NDK_MODULE(ZKALinkerMain) kStdOut << "link: error: " << strerror(errno) << "\n"; } - return NDK_FILE_NOT_FOUND; + return TOOLCHAINKIT_FILE_NOT_FOUND; } //! Read AE to convert as PEF. - std::vector<NDK::PEFCommandHeader> command_headers; - NDK::Utils::AEReadableProtocol readProto{}; + std::vector<ToolchainKit::PEFCommandHeader> command_headers; + ToolchainKit::Utils::AEReadableProtocol readProto{}; for (const auto& i : kObjectList) { if (!std::filesystem::exists(i)) continue; - NDK::AEHeader hdr{}; + ToolchainKit::AEHeader hdr{}; readProto.FP = std::ifstream(i, std::ifstream::binary); readProto.FP >> hdr; @@ -283,7 +284,7 @@ NDK_MODULE(ZKALinkerMain) auto ae_header = hdr; if (ae_header.fMagic[0] == kAEMag0 && ae_header.fMagic[1] == kAEMag1 && - ae_header.fSize == sizeof(NDK::AEHeader)) + ae_header.fSize == sizeof(ToolchainKit::AEHeader)) { if (ae_header.fArch != kArch) { @@ -301,7 +302,7 @@ NDK_MODULE(ZKALinkerMain) << std::endl; std::remove(kOutput.c_str()); - return NDK_FAT_ERROR; + return TOOLCHAINKIT_FAT_ERROR; } else { @@ -322,35 +323,35 @@ NDK_MODULE(ZKALinkerMain) pef_container.Count = cnt; char_type* raw_ae_records = - new char_type[cnt * sizeof(NDK::AERecordHeader)]; - memset(raw_ae_records, 0, cnt * sizeof(NDK::AERecordHeader)); + new char_type[cnt * sizeof(ToolchainKit::AERecordHeader)]; + memset(raw_ae_records, 0, cnt * sizeof(ToolchainKit::AERecordHeader)); auto* ae_records = readProto.Read(raw_ae_records, cnt); for (size_t ae_record_index = 0; ae_record_index < cnt; ++ae_record_index) { - NDK::PEFCommandHeader command_header{0}; + ToolchainKit::PEFCommandHeader command_header{0}; size_t offsetOfData = ae_records[ae_record_index].fOffset + ae_header.fSize; memcpy(command_header.Name, ae_records[ae_record_index].fName, kPefNameLen); - NDK::String cmd_hdr_name(command_header.Name); + ToolchainKit::String cmd_hdr_name(command_header.Name); // check this header if it's any valid. if (cmd_hdr_name.find(kPefCode64) == - NDK::String::npos && + ToolchainKit::String::npos && cmd_hdr_name.find(kPefData64) == - NDK::String::npos && + ToolchainKit::String::npos && cmd_hdr_name.find(kPefZero64) == - NDK::String::npos) + ToolchainKit::String::npos) { if (cmd_hdr_name.find(kPefStart) == - NDK::String::npos && + ToolchainKit::String::npos && *command_header.Name == 0) { if (cmd_hdr_name.find(kLdDefineSymbol) != - NDK::String::npos) + ToolchainKit::String::npos) { goto ld_mark_header; } @@ -362,9 +363,9 @@ NDK_MODULE(ZKALinkerMain) } if (cmd_hdr_name.find(kPefStart) != - NDK::String::npos && + ToolchainKit::String::npos && cmd_hdr_name.find(kPefCode64) != - NDK::String::npos) + ToolchainKit::String::npos) { kStartFound = true; } @@ -411,7 +412,7 @@ NDK_MODULE(ZKALinkerMain) std::remove(kOutput.c_str()); // don't continue, it is a fatal error. - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } pef_container.Cpu = archs; @@ -425,23 +426,23 @@ NDK_MODULE(ZKALinkerMain) output_fc.seekp(std::streamsize(pef_container.HdrSz)); - std::vector<NDK::String> not_found; - std::vector<NDK::String> symbols; + std::vector<ToolchainKit::String> not_found; + std::vector<ToolchainKit::String> symbols; // step 2: check for errors (multiple symbols, undefined ones) for (auto& command_hdr : command_headers) { // check if this symbol needs to be resolved. - if (NDK::String(command_hdr.Name).find(kLdDefineSymbol) != - NDK::String::npos && - NDK::String(command_hdr.Name).find(kLdDynamicSym) == NDK::String::npos) + if (ToolchainKit::String(command_hdr.Name).find(kLdDefineSymbol) != + ToolchainKit::String::npos && + ToolchainKit::String(command_hdr.Name).find(kLdDynamicSym) == ToolchainKit::String::npos) { if (kVerbose) kStdOut << "link: found undefined symbol: " << command_hdr.Name << "\n"; if (auto it = std::find(not_found.begin(), not_found.end(), - NDK::String(command_hdr.Name)); + ToolchainKit::String(command_hdr.Name)); it == not_found.end()) { not_found.emplace_back(command_hdr.Name); @@ -457,12 +458,12 @@ NDK_MODULE(ZKALinkerMain) ++not_found_idx) { if (auto it = std::find(not_found.begin(), not_found.end(), - NDK::String(command_headers[not_found_idx].Name)); + ToolchainKit::String(command_headers[not_found_idx].Name)); it != not_found.end()) { - NDK::String symbol_imp = *it; + ToolchainKit::String symbol_imp = *it; - if (symbol_imp.find(kLdDefineSymbol) == NDK::String::npos) + if (symbol_imp.find(kLdDefineSymbol) == ToolchainKit::String::npos) continue; // erase the lookup prefix. @@ -470,19 +471,19 @@ NDK_MODULE(ZKALinkerMain) 0, symbol_imp.find(kLdDefineSymbol) + strlen(kLdDefineSymbol)); // demangle everything. - while (symbol_imp.find('$') != NDK::String::npos) + while (symbol_imp.find('$') != ToolchainKit::String::npos) symbol_imp.erase(symbol_imp.find('$'), 1); // the reason we do is because, this may not match the symbol, and we need // to look for other matching symbols. for (auto& command_hdr : command_headers) { - if (NDK::String(command_hdr.Name).find(symbol_imp) != - NDK::String::npos && - NDK::String(command_hdr.Name).find(kLdDefineSymbol) == - NDK::String::npos) + if (ToolchainKit::String(command_hdr.Name).find(symbol_imp) != + ToolchainKit::String::npos && + ToolchainKit::String(command_hdr.Name).find(kLdDefineSymbol) == + ToolchainKit::String::npos) { - NDK::String undefined_symbol = command_hdr.Name; + ToolchainKit::String undefined_symbol = command_hdr.Name; auto result_of_sym = undefined_symbol.substr(undefined_symbol.find(symbol_imp)); @@ -521,38 +522,38 @@ NDK_MODULE(ZKALinkerMain) // step 4: write all PEF commands. - NDK::PEFCommandHeader dateHeader{}; + ToolchainKit::PEFCommandHeader dateHeader{}; time_t timestamp = time(nullptr); - NDK::String timeStampStr = "Container:BuildEpoch:"; + ToolchainKit::String timeStampStr = "Container:BuildEpoch:"; timeStampStr += std::to_string(timestamp); strncpy(dateHeader.Name, timeStampStr.c_str(), timeStampStr.size()); dateHeader.Flags = 0; - dateHeader.Kind = NDK::kPefZero; + dateHeader.Kind = ToolchainKit::kPefZero; dateHeader.Offset = output_fc.tellp(); dateHeader.Size = timeStampStr.size(); command_headers.push_back(dateHeader); - NDK::PEFCommandHeader abiHeader{}; + ToolchainKit::PEFCommandHeader abiHeader{}; - NDK::String abi = kLinkerAbiContainer; + ToolchainKit::String abi = kLinkerAbiContainer; switch (kArch) { - case NDK::kPefArchAMD64: { + case ToolchainKit::kPefArchAMD64: { abi += "MSFT"; break; } - case NDK::kPefArchPowerPC: { + case ToolchainKit::kPefArchPowerPC: { abi += "SYSV"; break; } - case NDK::kPefArch32000: - case NDK::kPefArch64000: { + case ToolchainKit::kPefArch32000: + case ToolchainKit::kPefArch64000: { abi += "MHRA"; break; } @@ -567,11 +568,11 @@ NDK_MODULE(ZKALinkerMain) abiHeader.Size = abi.size(); abiHeader.Offset = output_fc.tellp(); abiHeader.Flags = 0; - abiHeader.Kind = NDK::kPefLinkerID; + abiHeader.Kind = ToolchainKit::kPefLinkerID; command_headers.push_back(abiHeader); - NDK::PEFCommandHeader stackHeader{0}; + ToolchainKit::PEFCommandHeader stackHeader{0}; stackHeader.Cpu = kArch; stackHeader.Flags = 0; @@ -581,7 +582,7 @@ NDK_MODULE(ZKALinkerMain) command_headers.push_back(stackHeader); - NDK::PEFCommandHeader uuidHeader{}; + ToolchainKit::PEFCommandHeader uuidHeader{}; std::random_device rd; @@ -600,35 +601,35 @@ NDK_MODULE(ZKALinkerMain) uuidHeader.Size = strlen(uuidHeader.Name); uuidHeader.Offset = output_fc.tellp(); - uuidHeader.Flags = NDK::kPefLinkerID; - uuidHeader.Kind = NDK::kPefZero; + uuidHeader.Flags = ToolchainKit::kPefLinkerID; + uuidHeader.Kind = ToolchainKit::kPefZero; command_headers.push_back(uuidHeader); // prepare a symbol vector. - std::vector<NDK::String> undef_symbols; - std::vector<NDK::String> dupl_symbols; - std::vector<NDK::String> resolve_symbols; + std::vector<ToolchainKit::String> undef_symbols; + std::vector<ToolchainKit::String> dupl_symbols; + std::vector<ToolchainKit::String> resolve_symbols; constexpr Int32 cPaddingOffset = 16; - size_t previous_offset = (command_headers.size() * sizeof(NDK::PEFCommandHeader)) + cPaddingOffset; + size_t previous_offset = (command_headers.size() * sizeof(ToolchainKit::PEFCommandHeader)) + cPaddingOffset; // Finally write down the command headers. // And check for any duplications for (size_t commandHeaderIndex = 0UL; commandHeaderIndex < command_headers.size(); ++commandHeaderIndex) { - if (NDK::String(command_headers[commandHeaderIndex].Name) - .find(kLdDefineSymbol) != NDK::String::npos && - NDK::String(command_headers[commandHeaderIndex].Name) - .find(kLdDynamicSym) == NDK::String::npos) + if (ToolchainKit::String(command_headers[commandHeaderIndex].Name) + .find(kLdDefineSymbol) != ToolchainKit::String::npos && + ToolchainKit::String(command_headers[commandHeaderIndex].Name) + .find(kLdDynamicSym) == ToolchainKit::String::npos) { // ignore :UndefinedSymbol: headers, they do not contain code. continue; } - NDK::String symbol_name = command_headers[commandHeaderIndex].Name; + ToolchainKit::String symbol_name = command_headers[commandHeaderIndex].Name; if (!symbol_name.empty()) { @@ -638,13 +639,13 @@ NDK_MODULE(ZKALinkerMain) command_headers[commandHeaderIndex].Offset += previous_offset; previous_offset += command_headers[commandHeaderIndex].Size; - NDK::String name = command_headers[commandHeaderIndex].Name; + ToolchainKit::String name = command_headers[commandHeaderIndex].Name; /// so this is valid when we get to the entrypoint. /// it is always a code64 container. And should equal to kPefStart as well. /// this chunk of code updates the pef_container.Start with the updated offset. - if (name.find(kPefStart) != NDK::String::npos && - name.find(kPefCode64) != NDK::String::npos) + if (name.find(kPefStart) != ToolchainKit::String::npos && + name.find(kPefCode64) != ToolchainKit::String::npos) { pef_container.Start = command_headers[commandHeaderIndex].Offset; auto tellCurPos = output_fc.tellp(); @@ -670,10 +671,10 @@ NDK_MODULE(ZKALinkerMain) if (sub_command_header_index == commandHeaderIndex) continue; - if (NDK::String(command_headers[sub_command_header_index].Name) - .find(kLdDefineSymbol) != NDK::String::npos && - NDK::String(command_headers[sub_command_header_index].Name) - .find(kLdDynamicSym) == NDK::String::npos) + if (ToolchainKit::String(command_headers[sub_command_header_index].Name) + .find(kLdDefineSymbol) != ToolchainKit::String::npos && + ToolchainKit::String(command_headers[sub_command_header_index].Name) + .find(kLdDynamicSym) == ToolchainKit::String::npos) { if (kVerbose) { @@ -687,7 +688,7 @@ NDK_MODULE(ZKALinkerMain) auto& command_hdr = command_headers[sub_command_header_index]; if (command_hdr.Name == - NDK::String(command_headers[commandHeaderIndex].Name)) + ToolchainKit::String(command_headers[commandHeaderIndex].Name)) { if (std::find(dupl_symbols.cbegin(), dupl_symbols.cend(), command_hdr.Name) == dupl_symbols.cend()) @@ -712,7 +713,7 @@ NDK_MODULE(ZKALinkerMain) } std::remove(kOutput.c_str()); - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } // step 2.5: write program bytes. @@ -727,12 +728,12 @@ NDK_MODULE(ZKALinkerMain) // step 3: check if we have those symbols - std::vector<NDK::String> unreferenced_symbols; + std::vector<ToolchainKit::String> unreferenced_symbols; for (auto& command_hdr : command_headers) { if (auto it = std::find(not_found.begin(), not_found.end(), - NDK::String(command_hdr.Name)); + ToolchainKit::String(command_hdr.Name)); it != not_found.end()) { unreferenced_symbols.emplace_back(command_hdr.Name); @@ -755,7 +756,7 @@ NDK_MODULE(ZKALinkerMain) << ", is corrupt, removing file...\n"; std::remove(kOutput.c_str()); - return NDK_EXEC_ERROR; + return TOOLCHAINKIT_EXEC_ERROR; } return 0; diff --git a/dev/ToolchainKit/src/String.cc b/dev/ToolchainKit/src/String.cc index 3850e97..70b1e91 100644 --- a/dev/ToolchainKit/src/String.cc +++ b/dev/ToolchainKit/src/String.cc @@ -1,7 +1,7 @@ /* * ======================================================== * - * NDK + * ToolchainKit * Copyright ZKA Web Services Co, all rights reserved. * * ======================================================== @@ -20,7 +20,7 @@ #include <ToolchainKit/NFC/String.h> -namespace NDK +namespace ToolchainKit { CharType* StringView::Data() { @@ -252,4 +252,4 @@ namespace NDK return *this; } -} // namespace NDK +} // namespace ToolchainKit |
