From c64f60e1c99cb06cf31314662e243a733ac0bad9 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 27 Feb 2026 23:03:15 +0100 Subject: chore: codebase improvements and tweaks. Signed-off-by: Amlal El Mahrouss --- src/DebuggerKit/dk-nekernel.json | 18 ------ src/DebuggerKit/dk-nk-osx.json | 19 ++++++ src/DebuggerKit/dk-nk-posix.json | 19 ++++++ src/DebuggerKit/dk-osx.json | 4 +- src/DebuggerKit/dk-posix.json | 1 - src/DebuggerKit/src/MachContractCLI.cpp | 95 ++++++++++++++++++++++++++++ src/DebuggerKit/src/NeKernelContract.cpp | 5 +- src/DebuggerKit/src/NeKernelContractCLI.cpp | 3 +- src/DebuggerKit/src/POSIXMachContractCLI.cpp | 7 +- 9 files changed, 140 insertions(+), 31 deletions(-) delete mode 100644 src/DebuggerKit/dk-nekernel.json create mode 100644 src/DebuggerKit/dk-nk-osx.json create mode 100644 src/DebuggerKit/dk-nk-posix.json delete mode 120000 src/DebuggerKit/dk-posix.json create mode 100644 src/DebuggerKit/src/MachContractCLI.cpp (limited to 'src/DebuggerKit') diff --git a/src/DebuggerKit/dk-nekernel.json b/src/DebuggerKit/dk-nekernel.json deleted file mode 100644 index 4ada191..0000000 --- a/src/DebuggerKit/dk-nekernel.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compiler_path": "clang++", - "compiler_std": "c++20", - "headers_path": [ - "../../include/DebuggerKit", - "../../include" - ], - "sources_path": ["src/*.cpp"], - "output_name": "/usr/local/lib/libDebuggerKit.dylib", - "compiler_flags": ["-fPIC", "-shared"], - "cpp_macros": [ - "__NECTAR__=202505", - "DK_USE_STRUCTS=1", - "DK_NEKERNEL_DEBUGGER", - "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" - ] -} - diff --git a/src/DebuggerKit/dk-nk-osx.json b/src/DebuggerKit/dk-nk-osx.json new file mode 100644 index 0000000..a5ff85e --- /dev/null +++ b/src/DebuggerKit/dk-nk-osx.json @@ -0,0 +1,19 @@ +{ + "compiler_path": "clang++", + "compiler_std": "c++20", + "headers_path": [ + "../../include/DebuggerKit", + "../../include" + ], + "sources_path": ["src/*.cpp"], + "output_name": "/usr/local/lib/libDebuggerKit.dylib", + "compiler_flags": ["-fPIC", "-shared"], + "cpp_macros": [ + "__NECTAR__=202505", + "DK_USE_STRUCTS=1", + "DK_NEKERNEL_DEBUGGER=1", + "DEBUGGERKIT_LIBSYSTEM=1", + "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" + ] +} + diff --git a/src/DebuggerKit/dk-nk-posix.json b/src/DebuggerKit/dk-nk-posix.json new file mode 100644 index 0000000..8c87769 --- /dev/null +++ b/src/DebuggerKit/dk-nk-posix.json @@ -0,0 +1,19 @@ +{ + "compiler_path": "clang++", + "compiler_std": "c++20", + "headers_path": [ + "../../include/DebuggerKit", + "../../include" + ], + "sources_path": ["src/*.cpp"], + "output_name": "/usr/lib/libDebuggerKit.so", + "compiler_flags": ["-fPIC", "-shared"], + "cpp_macros": [ + "__NECTAR__=202505", + "DK_USE_STRUCTS=1", + "DK_NEKERNEL_DEBUGGER=1", + "DEBUGGERKIT_LIBSYSTEM=1", + "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" + ] +} + diff --git a/src/DebuggerKit/dk-osx.json b/src/DebuggerKit/dk-osx.json index f97f758..c605efc 100644 --- a/src/DebuggerKit/dk-osx.json +++ b/src/DebuggerKit/dk-osx.json @@ -11,8 +11,8 @@ "cpp_macros": [ "__NECTAR__=202505", "CK_USE_STRUCTS=1", - "DEBUGGERKIT_POSIX", - "DK_MACH_DEBUGGER", + "DEBUGGERKIT_POSIX=1", + "DK_MACH_DEBUGGER=1", "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" ] } diff --git a/src/DebuggerKit/dk-posix.json b/src/DebuggerKit/dk-posix.json deleted file mode 120000 index 2a8c729..0000000 --- a/src/DebuggerKit/dk-posix.json +++ /dev/null @@ -1 +0,0 @@ -dk-osx.json \ No newline at end of file diff --git a/src/DebuggerKit/src/MachContractCLI.cpp b/src/DebuggerKit/src/MachContractCLI.cpp new file mode 100644 index 0000000..4d0c4e8 --- /dev/null +++ b/src/DebuggerKit/src/MachContractCLI.cpp @@ -0,0 +1,95 @@ +// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) +// Licensed under the Apache License, Version 2.0 (See accompanying +// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) +// Official repository: https://github.com/nekernel-org/nectar + +#ifdef DK_MACH_DEBUGGER + +#include +#include + +#ifdef DK_MACH_DEBUGGER +#include + +/// @internal +/// @brief Handles CTRL-C signal on debugger. +static Void dbgi_ctrlc_handler(std::int32_t _) { + if (!kPID) { + return; + } + + kUserDebugger.Break(); + + pfd::notify("Debugger Event", "Breakpoint hit!"); + + kKeepRunning = false; +} + +NECTAR_MODULE(DebuggerMachPOSIX) { + pfd::notify( + "Debugger Event", + "Userland Debugger\n(C) 2025 Amlal El Mahrouss, licensed under the Apache 2.0 license."); + + if (argc >= 3 && std::string(argv[1]) == "-p" && argv[2] != nullptr) { + kPath = argv[2]; + kUserDebugger.SetPath(kPath); + + kStdOut << "[+] Image set to: " << kPath << "\n"; + } else { + kStdOut << "usage: " << argv[0] << " -p \n"; + kStdOut << "example: " << argv[0] << " -p \n"; + + return EXIT_FAILURE; + } + + CompilerKit::install_signal(SIGINT, dbgi_ctrlc_handler); + + while (YES) { + if (kKeepRunning) { + continue; + } + + std::string cmd; + if (!std::getline(std::cin, cmd)) break; + + if (cmd == "c" || cmd == "cont" || cmd == "continue") { + if (kUserDebugger.Continue()) { + kKeepRunning = true; + + kStdOut << "[+] Continuing...\n"; + + pfd::notify("Debugger Event", "Continuing..."); + } + } + + if (cmd == "d" || cmd == "detach") kUserDebugger.Detach(); + + if (cmd == "start") { + kStdOut << "[?] Enter a argument to use: "; + std::getline(std::cin, cmd); + + kUserDebugger.Attach(kPath, cmd, kPID); + } + + if (cmd == "exit") { + if (kPID > 0) kUserDebugger.Detach(); + + break; + } + + if (cmd == "break" || cmd == "b") { + kStdOut << "[?] Enter a symbol to break on: "; + + std::getline(std::cin, cmd); + + if (kUserDebugger.BreakAt(cmd)) { + pfd::notify("Debugger Event", "Add BreakAt at: " + cmd); + } + } + } + + return EXIT_SUCCESS; +} +#endif + +#endif diff --git a/src/DebuggerKit/src/NeKernelContract.cpp b/src/DebuggerKit/src/NeKernelContract.cpp index f39ba0d..f662401 100644 --- a/src/DebuggerKit/src/NeKernelContract.cpp +++ b/src/DebuggerKit/src/NeKernelContract.cpp @@ -1,4 +1,4 @@ -// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (See accompanying // file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) // Official repository: https://github.com/nekernel-org/nectar @@ -8,8 +8,6 @@ /// @author Amlal El Mahrouss /// @brief Kernel Debugger Protocol -#include -#include #include #include @@ -17,7 +15,6 @@ using namespace DebuggerKit::Detail; using namespace DebuggerKit::NeKernel; NeKernelContract::NeKernelContract() = default; - NeKernelContract::~NeKernelContract() = default; bool NeKernelContract::Attach(CompilerKit::STLString path, CompilerKit::STLString argv, diff --git a/src/DebuggerKit/src/NeKernelContractCLI.cpp b/src/DebuggerKit/src/NeKernelContractCLI.cpp index e1b6a27..b5e07a2 100644 --- a/src/DebuggerKit/src/NeKernelContractCLI.cpp +++ b/src/DebuggerKit/src/NeKernelContractCLI.cpp @@ -1,11 +1,10 @@ -// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (See accompanying // file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) // Official repository: https://github.com/nekernel-org/nectar #ifdef DK_NEKERNEL_DEBUGGER -#include #include #include #include diff --git a/src/DebuggerKit/src/POSIXMachContractCLI.cpp b/src/DebuggerKit/src/POSIXMachContractCLI.cpp index dd1411c..da90a1f 100644 --- a/src/DebuggerKit/src/POSIXMachContractCLI.cpp +++ b/src/DebuggerKit/src/POSIXMachContractCLI.cpp @@ -1,12 +1,11 @@ -// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (See accompanying // file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) // Official repository: https://github.com/nekernel-org/nectar #ifdef DK_MACH_DEBUGGER -#include -#include +#include #include #ifdef DK_MACH_DEBUGGER @@ -14,7 +13,7 @@ /// @internal /// @brief Handles CTRL-C signal on debugger. -static void dbgi_ctrlc_handler(std::int32_t _) { +static Void dbgi_ctrlc_handler(std::int32_t _) { if (!kPID) { return; } -- cgit v1.2.3