From 885c9e2c6995f4bf7cd895966490a67b19619e13 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 21 Feb 2026 06:08:11 +0100 Subject: feat: Docs: Add cpp_style.md. feat: CompilerKit: patch and update Compiler's README. feat: CompilerKit: Patch some part of the Linkers where we'd expand soon. feat: GenericsLibrary: Add documentation of GenericsLibrary' _start function. Signed-off-by: Amlal El Mahrouss --- src/CompilerKit/src/Compilers/README.md | 5 +++-- src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cc | 20 ++++++++++++-------- src/CompilerKit/src/Linkers/DynamicLinker64+PEF.cc | 4 ++-- 3 files changed, 17 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/CompilerKit/src/Compilers/README.md b/src/CompilerKit/src/Compilers/README.md index c3c17d4..95cb450 100644 --- a/src/CompilerKit/src/Compilers/README.md +++ b/src/CompilerKit/src/Compilers/README.md @@ -4,7 +4,8 @@ The current status of Nectar's frontends. ## Current Status: +The following status of each frontend to be implemented for Nectar. + - Nectar (Implemented) -- C++ (Not implemented) -- C (Not implemented) + diff --git a/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cc b/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cc index 7d0bbc3..f44dcc8 100644 --- a/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cc +++ b/src/CompilerKit/src/Linkers/DynamicLinker64+MachO.cc @@ -19,6 +19,8 @@ #include #include +#define kLatestOSX (15) + #define kMachODefaultEntrypoint "_main" #define kMachODefaultOutput {"a" kMachOExt} @@ -47,7 +49,7 @@ static std::vector kObjectList; static std::vector kTextBytes; static std::vector kDataBytes; -/* symbol table */ +/* @brief symbol tables */ static std::vector kSymbolTable; static std::vector kStringTable; static std::map kSymbolOffsets; @@ -61,6 +63,8 @@ struct SectionInfo { UInt64 size; }; +using SectionInfoVec = std::vector; + /// @brief Extract clean symbol name from AE record name /// AE format: ".code64$symbolname" or "symbolname.code64" static CompilerKit::STLString macho_extract_symbol_name(const CompilerKit::STLString& aeName) { @@ -116,7 +120,7 @@ static UInt32 macho_add_symbol(const CompilerKit::STLString& name, uint8_t type, return static_cast(kSymbolTable.size() - 1); } -/// @brief Nectar 64-bit Mach-O Linker. +/// @brief Nectar 64-bit Mach-O Linker. /// @note This linker outputs Mach-O executables for macOS/iOS. NECTAR_MODULE(DynamicLinker64MachO) { CompilerKit::install_signal(SIGSEGV, CompilerKit::Detail::drvi_crash_handler); @@ -124,7 +128,7 @@ NECTAR_MODULE(DynamicLinker64MachO) { /** * @brief parse flags and trigger options. */ - for (size_t linker_arg = 1; linker_arg < argc; ++linker_arg) { + for (size_t linker_arg{1}; linker_arg < argc; ++linker_arg) { if (std::strcmp(argv[linker_arg], "-help") == 0) { kLinkerSplash(); @@ -186,7 +190,7 @@ NECTAR_MODULE(DynamicLinker64MachO) { continue; } else { if (argv[linker_arg][0] == '-') { - kConsoleOut << "unknown flag: " << argv[linker_arg] << "\n"; + kConsoleOut << "unknown option: " << argv[linker_arg] << "\n"; return EXIT_FAILURE; } @@ -214,7 +218,7 @@ NECTAR_MODULE(DynamicLinker64MachO) { } } - std::vector sections; + SectionInfoVec sections; CompilerKit::Utils::AEReadableProtocol reader_protocol{}; entry_point_command entryCommand{}; @@ -371,7 +375,7 @@ NECTAR_MODULE(DynamicLinker64MachO) { UInt32 dysymtabCmdSize = sizeof(dysymtab_command); UInt32 linkeditCmdSize = sizeof(segment_command_64); // No sections UInt32 dylinkerCmdSize = - (sizeof(dylinker_command) + 13 + 1 + 7) & ~7; // "/usr/lib/dyld" + padding to 8-byte align + (strlen(dylinker_command) + 13 + 1 + 7) & ~7; // "/usr/lib/dyld" + padding to 8-byte align sizeOfCmds = pageZeroSize + textSegCmdSize + dataSegCmdSize + buildCmdSize + uuidCmdSize + symtabCmdSize + dysymtabCmdSize + linkeditCmdSize + dylinkerCmdSize; @@ -434,8 +438,8 @@ NECTAR_MODULE(DynamicLinker64MachO) { build_version_command build = {.cmd = LC_BUILD_VERSION, .cmdsize = sizeof(build_version_command), .platform = PLATFORM_MACOS, - .minos = (11 << 16), // macOS 11.0 - .sdk = (11 << 16), // macOS 11.0 + .minos = (kLatestOSX << 16), // macOS 11.0 + .sdk = (kLatestOSX << 16), // macOS 11.0 .ntools = 0}; output_fc.write(reinterpret_cast(&build), sizeof(build)); diff --git a/src/CompilerKit/src/Linkers/DynamicLinker64+PEF.cc b/src/CompilerKit/src/Linkers/DynamicLinker64+PEF.cc index 5cbbba6..6be6c58 100644 --- a/src/CompilerKit/src/Linkers/DynamicLinker64+PEF.cc +++ b/src/CompilerKit/src/Linkers/DynamicLinker64+PEF.cc @@ -160,7 +160,7 @@ NECTAR_MODULE(DynamicLinker64PEF) { continue; } else { if (argv[linker_arg][0] == '-') { - kConsoleOut << "unknown flag: " << argv[linker_arg] << "\n"; + kConsoleOut << "unknown option: " << argv[linker_arg] << "\n"; return EXIT_FAILURE; } @@ -605,7 +605,7 @@ NECTAR_MODULE(DynamicLinker64PEF) { kConsoleOut << "Ignoring :UndefinedSymbol: headers...\n"; } - // ignore :UndefinedSymbol: headers, they do not contain code. + // Let's ignore :UndefinedSymbol: headers, they do not contain code. continue; } -- cgit v1.2.3