summaryrefslogtreecommitdiffhomepage
path: root/src/CompilerKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-02-27 23:03:15 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-02-27 23:03:15 +0100
commitc64f60e1c99cb06cf31314662e243a733ac0bad9 (patch)
tree5c6a0c74e010fd4085fadd42cd9672b00f70c6e8 /src/CompilerKit
parent4761cc729d0c2fe08ac4c4c2a72020fa73ae53a9 (diff)
chore: codebase improvements and tweaks.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/CompilerKit')
-rw-r--r--src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cpp79
-rw-r--r--src/CompilerKit/src/Preprocessors/Preprocessor+Generic.cpp24
2 files changed, 17 insertions, 86 deletions
diff --git a/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cpp b/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cpp
index dcbd7e7..bb2ce3a 100644
--- a/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cpp
+++ b/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cpp
@@ -84,6 +84,7 @@ static CompilerKit::STLString macho_extract_symbol_name(const CompilerKit::STLSt
while (!name.empty() && (name.front() == ' ' || name.front() == '\t')) {
name.erase(0, 1);
}
+
while (!name.empty() && (name.back() == ' ' || name.back() == '\t')) {
name.pop_back();
}
@@ -101,9 +102,10 @@ static UInt32 macho_add_symbol(const CompilerKit::STLString& name, uint8_t type,
UInt32 strOffset = static_cast<UInt32>(kStringTable.size());
- for (Char c : name) {
+ for (const Char& c : name) {
kStringTable.push_back(c);
}
+
kStringTable.push_back('\0');
// Create nlist_64 entry
@@ -237,12 +239,9 @@ NECTAR_MODULE(DynamicLinker64MachO) {
hdr.fSize == sizeof(CompilerKit::AEHeader) && hdr.fMagic[2] == kAEMag2) {
std::size_t cnt = hdr.fCount;
- if (kVerbose) kConsoleOut << "header found, record count: " << cnt << "\n";
-
Char* raw_ae_records = new Char[cnt * sizeof(CompilerKit::AERecordHeader)];
if (!raw_ae_records) {
- if (kVerbose) kConsoleOut << "allocation failed for records of count: " << cnt << "\n";
return NECTAR_EXEC_ERROR;
}
@@ -274,11 +273,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
uint8_t symType = N_EXT | N_SECT;
macho_add_symbol(symbolName, symType, sectNum, ae_records[ae_record_index].fOffset);
-
- if (kVerbose) {
- kConsoleOut << "added symbol: " << symbolName
- << " at offset: " << ae_records[ae_record_index].fOffset << "\n";
- }
}
sections.push_back(section);
@@ -286,17 +280,14 @@ NECTAR_MODULE(DynamicLinker64MachO) {
// Look up entry point from symbol table
auto entryIt = kSymbolOffsets.find(kLinkerStart);
+
if (entryIt != kSymbolOffsets.end()) {
entryCommand.entryoff = entryIt->second;
kStartFound = true;
-
- if (kVerbose) {
- kConsoleOut << "found entry point " << kLinkerStart << " at offset: " << entryIt->second
- << "\n";
- }
}
delete[] raw_ae_records;
+ raw_ae_records = nullptr;
// Read the actual code bytes
std::vector<Char> bytes;
@@ -344,9 +335,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
std::ofstream output_fc(kOutput, std::ofstream::binary);
if (output_fc.bad()) {
- if (kVerbose) {
- kConsoleOut << "error: " << strerror(errno) << "\n";
- }
return NECTAR_FILE_NOT_FOUND;
}
@@ -416,10 +404,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&header), sizeof(header));
- if (kVerbose) {
- kConsoleOut << "Wrote Mach-O header, ncmds: " << numCommands << "\n";
- }
-
segment_command_64 pageZeroSegment{};
pageZeroSegment.cmd = LC_SEGMENT_64;
pageZeroSegment.cmdsize = sizeof(segment_command_64);
@@ -444,10 +428,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&build), sizeof(build));
- if (kVerbose) {
- kConsoleOut << "Wrote LC_BUILD_VERSION, platform: macOS, minos: 11.0, sdk: 11.0\n";
- }
-
// Write __TEXT segment command
segment_command_64 textSegment{};
textSegment.cmd = LC_SEGMENT_64;
@@ -482,11 +462,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&textSection), sizeof(textSection));
- if (kVerbose) {
- kConsoleOut << "Wrote __TEXT segment, vmaddr: 0x" << std::hex << textVMAddr << std::dec << "\n";
- kConsoleOut << " __text section, size: " << textSize << " bytes\n";
- }
-
// Write __DATA segment command
segment_command_64 dataSegment{};
dataSegment.cmd = LC_SEGMENT_64;
@@ -522,11 +497,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
if (dataSegCmdSize > 0)
output_fc.write(reinterpret_cast<const Char*>(&dataSection), sizeof(dataSection));
- if (kVerbose) {
- kConsoleOut << "Wrote __DATA segment, vmaddr: 0x" << std::hex << dataVMAddr << std::dec << "\n";
- kConsoleOut << " __data section, size: " << dataSize << " bytes\n";
- }
-
// Write __LINKEDIT segment command (contains symbol/string tables)
segment_command_64 linkeditSegment{};
linkeditSegment.cmd = LC_SEGMENT_64;
@@ -543,12 +513,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&linkeditSegment), sizeof(linkeditSegment));
- if (kVerbose) {
- kConsoleOut << "Wrote __LINKEDIT segment, vmaddr: 0x" << std::hex << linkeditVMAddr << std::dec
- << ", fileoff: " << linkeditFileOffset << ", filesize: " << linkeditFileSize
- << "\n";
- }
-
// Write LC_LOAD_DYLINKER command
constexpr Char* dyldPath = "/usr/lib/dyld";
std::vector<Char> dylinkerCmd(dylinkerCmdSize, 0);
@@ -560,10 +524,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(dylinkerCmd.data(), dylinkerCmd.size());
- if (kVerbose) {
- kConsoleOut << "Wrote LC_LOAD_DYLINKER: " << dyldPath << "\n";
- }
-
// Write LC_MAIN entry point command (executables only)
if (!kIsDylib) {
entryCommand.cmd = LC_MAIN;
@@ -572,11 +532,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
entryCommand.entryoff = textFileOffset + entryCommand.entryoff;
output_fc.write(reinterpret_cast<const Char*>(&entryCommand), sizeof(entryCommand));
-
- if (kVerbose) {
- kConsoleOut << "Wrote LC_MAIN, entryoff: 0x" << std::hex << entryCommand.entryoff << std::dec
- << ", stacksize: " << entryCommand.stacksize << "\n";
- }
}
// Write LC_UUID command
@@ -594,10 +549,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&uuidCmd), sizeof(uuidCmd));
- if (kVerbose) {
- kConsoleOut << "Wrote LC_UUID\n";
- }
-
// Write LC_SYMTAB command
symtab_command symtabCmd{};
symtabCmd.cmd = LC_SYMTAB;
@@ -609,11 +560,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&symtabCmd), sizeof(symtabCmd));
- if (kVerbose) {
- kConsoleOut << "Wrote LC_SYMTAB, nsyms: " << symtabCmd.nsyms
- << ", strsize: " << symtabCmd.strsize << "\n";
- }
-
// Write LC_DYSYMTAB command
dysymtab_command dysymtabCmd{};
std::memset(&dysymtabCmd, 0, sizeof(dysymtabCmd));
@@ -634,10 +580,6 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&dysymtabCmd), sizeof(dysymtabCmd));
- if (kVerbose) {
- kConsoleOut << "Wrote LC_DYSYMTAB\n";
- }
-
// Pad to text section offset
UInt64 currentPos = output_fc.tellp();
UInt64 padding = textFileOffset - currentPos;
@@ -680,23 +622,12 @@ NECTAR_MODULE(DynamicLinker64MachO) {
output_fc.write(reinterpret_cast<const Char*>(&sym), sizeof(nlist_64));
}
- if (kVerbose) {
- kConsoleOut << "Wrote symbol table, " << kSymbolTable.size() << " entries\n";
- }
// Write string table
output_fc.write(kStringTable.data(), kStringTable.size());
- if (kVerbose) {
- kConsoleOut << "Wrote string table, " << kStringTable.size() << " bytes\n";
- }
-
output_fc.flush();
- if (kVerbose) {
- kConsoleOut << "Wrote Mach-O binary: " << kOutput << "\n";
- }
-
return NECTAR_SUCCESS;
}
diff --git a/src/CompilerKit/src/Preprocessors/Preprocessor+Generic.cpp b/src/CompilerKit/src/Preprocessors/Preprocessor+Generic.cpp
index 1ac94e8..fd7cd74 100644
--- a/src/CompilerKit/src/Preprocessors/Preprocessor+Generic.cpp
+++ b/src/CompilerKit/src/Preprocessors/Preprocessor+Generic.cpp
@@ -258,7 +258,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
if (inactive_code) {
if (hdr_line.find("#endif") == CompilerKit::STLString::npos) {
continue;
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("#endif") != CompilerKit::STLString::npos) {
inactive_code = false;
}
@@ -275,7 +275,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
hdr_line.erase(hdr_line.find("/*"));
}
- if (hdr_line[0] == kMacroPrefix && hdr_line.find("endif") != CompilerKit::STLString::npos) {
+ if (hdr_line[0] == '#' && hdr_line.find("endif") != CompilerKit::STLString::npos) {
if (!defined && inactive_code) {
inactive_code = false;
defined = false;
@@ -361,11 +361,11 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
}
}
- if (hdr_line[0] == kMacroPrefix && hdr_line.find("define ") != CompilerKit::STLString::npos) {
- auto define_pos = hdr_line.find("define ");
+ if (hdr_line[0] == '#' && hdr_line.find("define") != CompilerKit::STLString::npos) {
+ auto define_pos = hdr_line.find("define");
if (define_pos == CompilerKit::STLString::npos) continue;
- auto line_after_define = hdr_line.substr(define_pos + strlen("define "));
+ auto line_after_define = hdr_line.substr(define_pos + strlen("define"));
CompilerKit::STLString macro_value;
CompilerKit::STLString macro_key;
@@ -490,7 +490,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
continue;
}
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("else") != CompilerKit::STLString::npos) {
if (!defined && inactive_code) {
inactive_code = false;
@@ -503,7 +503,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
continue;
}
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("ifdef") != CompilerKit::STLString::npos) {
auto ifdef_pos = hdr_line.find("ifdef");
if (ifdef_pos == CompilerKit::STLString::npos) continue;
@@ -544,7 +544,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
break;
}
}
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("if") != CompilerKit::STLString::npos) {
inactive_code = true;
@@ -629,7 +629,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
break;
}
}
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("warning") != CompilerKit::STLString::npos) {
auto warning_pos = hdr_line.find("warning");
if (warning_pos == CompilerKit::STLString::npos) continue;
@@ -645,8 +645,8 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
message += ch;
}
- std::cout << "warn: " << message << std::endl;
- } else if (hdr_line[0] == kMacroPrefix &&
+ std::cerr << "warn: " << message << std::endl;
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("error") != CompilerKit::STLString::npos) {
auto error_pos = hdr_line.find("error");
if (error_pos == CompilerKit::STLString::npos) continue;
@@ -663,7 +663,7 @@ void pp_parse_file(std::ifstream& hdr_file, std::ofstream& pp_out) {
}
throw std::runtime_error("error: " + message);
- } else if (hdr_line[0] == kMacroPrefix &&
+ } else if (hdr_line[0] == '#' &&
hdr_line.find("include ") != CompilerKit::STLString::npos) {
auto include_pos = hdr_line.find("include ");
if (include_pos == CompilerKit::STLString::npos) continue;