diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-29 10:48:12 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-29 10:48:12 +0200 |
| commit | 433bb5ef102b2bfa0049468be00d63011da8b973 (patch) | |
| tree | e0893a30710477045a5bb085cb7a27aada425c14 /dev/LibDebugger | |
| parent | 1ddeab9a4426abd781a5066ba79af2ba64de11d9 (diff) | |
| parent | 756ee7f8dc954e27350fe5bdfbaa83b9f69780c8 (diff) | |
Merge pull request #6 from nekernel-org/dev
0.0.2e3
Diffstat (limited to 'dev/LibDebugger')
| -rw-r--r-- | dev/LibDebugger/CommonCLI.inl | 18 | ||||
| -rw-r--r-- | dev/LibDebugger/NeKernelContract.h | 30 | ||||
| -rw-r--r-- | dev/LibDebugger/POSIXMachContract.h | 2 | ||||
| -rw-r--r-- | dev/LibDebugger/Version.h | 15 | ||||
| -rw-r--r-- | dev/LibDebugger/src/NeKernelContract.cc | 44 | ||||
| -rw-r--r-- | dev/LibDebugger/src/NeKernelContractCLI.cc | 42 | ||||
| -rw-r--r-- | dev/LibDebugger/src/POSIXMachContractCLI.cc (renamed from dev/LibDebugger/src/POSIXMachContract.cc) | 21 |
7 files changed, 147 insertions, 25 deletions
diff --git a/dev/LibDebugger/CommonCLI.inl b/dev/LibDebugger/CommonCLI.inl new file mode 100644 index 0000000..01bbb82 --- /dev/null +++ b/dev/LibDebugger/CommonCLI.inl @@ -0,0 +1,18 @@ + +static BOOL kKeepRunning = false; + +#ifdef LD_NEKERNEL_DEBUGGER +static LibDebugger::NeKernel::NeKernelContract kKernelDebugger; +#else +static LibDebugger::POSIX::POSIXMachContract kDebugger; +#endif + +static LibDebugger::ProcessID kPID = 0L; +static LibDebugger::CAddress kActiveAddress = nullptr; +static std::string kPath = ""; + +#define kBlank "\e[0;30m" +#define kRed "\e[0;31m" +#define kWhite "\e[0;97m" + +#define kStdOut (std::cout << kRed << "dbg: " << kWhite) diff --git a/dev/LibDebugger/NeKernelContract.h b/dev/LibDebugger/NeKernelContract.h index 8e54ab2..78140e7 100644 --- a/dev/LibDebugger/NeKernelContract.h +++ b/dev/LibDebugger/NeKernelContract.h @@ -6,6 +6,8 @@ #ifndef LD_NEKERNEL_CONTRACT_H #define LD_NEKERNEL_CONTRACT_H +#ifdef LD_NEKERNEL_DEBUGGER + #include <LibDebugger/DebuggerContract.h> #include <sys/socket.h> @@ -29,35 +31,43 @@ namespace LibDebugger::NeKernel { class NeKernelContract; namespace Detail { - class NeKernelPortHeader; + class NeKernelDebugHeader; inline constexpr size_t kDebugTypeLen = 256U; typedef char rt_debug_type[kDebugTypeLen]; - class NeKernelPortHeader final { + class NeKernelDebugHeader final { public: - int16_t fPort; - int16_t fPortBsy; + int16_t fPort; + int16_t fPortKind; + rt_debug_type fPortBlob; }; } // namespace Detail class NeKernelContract : public DebuggerContract { public: NeKernelContract(); - virtual ~NeKernelContract(); + ~NeKernelContract() override; + + public: + NeKernelContract& operator=(const NeKernelContract&) = default; + NeKernelContract(const NeKernelContract&) = default; // Override additional methods from DebuggerContract - virtual bool Attach(std::string path, std::string argv, ProcessID& pid) noexcept override; - virtual bool Breakpoint(std::string symbol) noexcept override; - virtual bool Break() noexcept override; - virtual bool Continue() noexcept override; - virtual bool Detach() noexcept override; + bool Attach(std::string path, std::string argv, ProcessID& pid) noexcept override; + bool Breakpoint(std::string symbol) noexcept override; + bool Break() noexcept override; + bool Continue() noexcept override; + bool Detach() noexcept override; private: std::string m_ip_address; std::string m_port; + int64_t m_socket{0}; }; } // namespace LibDebugger::NeKernel +#endif // ifdef LD_NEKERNEL_DEBUGGER + #endif // LD_NEKERNEL_CONTRACT_H
\ No newline at end of file diff --git a/dev/LibDebugger/POSIXMachContract.h b/dev/LibDebugger/POSIXMachContract.h index 5904cd2..1d7561a 100644 --- a/dev/LibDebugger/POSIXMachContract.h +++ b/dev/LibDebugger/POSIXMachContract.h @@ -4,7 +4,7 @@ #pragma once -#ifdef __APPLE__ +#ifdef LD_MACH_DEBUGGER /// @file POSIXMachContract.h /// @brief POSIX Mach debugger. diff --git a/dev/LibDebugger/Version.h b/dev/LibDebugger/Version.h new file mode 100644 index 0000000..4159191 --- /dev/null +++ b/dev/LibDebugger/Version.h @@ -0,0 +1,15 @@ +/* ------------------------------------------- + + Copyright (C) 2025 Amlal EL Mahrouss, all rights reserved + +------------------------------------------- */ + +#pragma once + +#define kDistVersion "v0.0.1-libdebugger" +#define kDistVersionBCD 0x0001 + +#define ToString(X) Stringify(X) +#define Stringify(X) #X + +#define kDistRelease ToString(kDistReleaseBranch) diff --git a/dev/LibDebugger/src/NeKernelContract.cc b/dev/LibDebugger/src/NeKernelContract.cc new file mode 100644 index 0000000..33c0c48 --- /dev/null +++ b/dev/LibDebugger/src/NeKernelContract.cc @@ -0,0 +1,44 @@ +/*** + LibDebugger + (C) 2025 Amlal El Mahrouss + File: NeKernelContract.cc + Purpose: NeKernel Debugger +*/ + +#ifdef LD_NEKERNEL_DEBUGGER + +#include <LibCompiler/Defines.h> +#include <LibDebugger/NeKernelContract.h> +#include <Vendor/Dialogs.h> + +#include <cstdint> +#include <iostream> +#include <string> + +using namespace LibDebugger::NeKernel; + +NeKernelContract::NeKernelContract() = default; + +NeKernelContract::~NeKernelContract() = default; + +bool NeKernelContract::Attach(std::string path, std::string argv, ProcessID& pid) noexcept { + return false; +} + +bool NeKernelContract::Breakpoint(std::string symbol) noexcept { + return false; +} + +bool NeKernelContract::Break() noexcept { + return false; +} + +bool NeKernelContract::Continue() noexcept { + return false; +} + +bool NeKernelContract::Detach() noexcept { + return false; +} + +#endif // LD_NEKERNEL_DEBUGGER
\ No newline at end of file diff --git a/dev/LibDebugger/src/NeKernelContractCLI.cc b/dev/LibDebugger/src/NeKernelContractCLI.cc new file mode 100644 index 0000000..0107b7c --- /dev/null +++ b/dev/LibDebugger/src/NeKernelContractCLI.cc @@ -0,0 +1,42 @@ +/*** + LibDebugger + (C) 2025 Amlal El Mahrouss + File: NeKernelContract.cc + Purpose: NeKernel Debugger CLI. +*/ + +#ifdef LD_NEKERNEL_DEBUGGER + +#include <LibCompiler/Defines.h> +#include <LibDebugger/NeKernelContract.h> +#include <Vendor/Dialogs.h> + +#include <cstdint> +#include <iostream> +#include <string> + +#include <LibDebugger/CommonCLI.inl> + +using namespace LibDebugger::NeKernel; + +LIBCOMPILER_MODULE(DebuggerNeKernel) { + pfd::notify("Debugger Event", + "Kernel Debugger\n(C) 2025 Amlal El Mahrouss, all rights reserved."); + + if (argc >= 3 && std::string(argv[1]) == "-k" && argv[2] != nullptr) { + kPath = argv[2]; + kStdOut << "[+] Kernel (ne_kernel) set to: " << kPath << "\n"; + + kKernelDebugger.Attach(kPath, nullptr, kPID); + kKernelDebugger.Breakpoint("$HANDOVER_START"); + + return EXIT_SUCCESS; + } + + kStdOut << "Usage: " << argv[0] << " -k <kernel_path>\n"; + kStdOut << "Example: " << argv[0] << " -k /path/to/ne_kernel\n"; + + return EXIT_FAILURE; +} + +#endif // LD_NEKERNEL_DEBUGGER
\ No newline at end of file diff --git a/dev/LibDebugger/src/POSIXMachContract.cc b/dev/LibDebugger/src/POSIXMachContractCLI.cc index 2753e9a..90cebc3 100644 --- a/dev/LibDebugger/src/POSIXMachContract.cc +++ b/dev/LibDebugger/src/POSIXMachContractCLI.cc @@ -1,8 +1,11 @@ /*** + LibDebugger (C) 2025 Amlal El Mahrouss - */ + File: POSIXMachContract.cc + Purpose: OS X/Darwin Debugger +*/ -#ifdef __APPLE__ +#ifdef LD_MACH_DEBUGGER #include <LibCompiler/Defines.h> #include <LibDebugger/POSIXMachContract.h> @@ -11,17 +14,7 @@ #include <iostream> #include <string> -static BOOL kKeepRunning = false; -static LibDebugger::POSIX::POSIXMachContract kDebugger; -static LibDebugger::ProcessID kPID = 0L; -static LibDebugger::CAddress kActiveAddress = nullptr; -static std::string kPath = ""; - -#define kBlank "\e[0;30m" -#define kRed "\e[0;31m" -#define kWhite "\e[0;97m" - -#define kStdOut (std::cout << kRed << "dbg: " << kWhite) +#include <LibDebugger/CommonCLI.inl> /// @internal /// @brief Handles CTRL-C signal on debugger. @@ -47,7 +40,7 @@ LIBCOMPILER_MODULE(DebuggerMachPOSIX) { kPath = argv[2]; kDebugger.SetPath(kPath); - kStdOut << "[+] Path set to: " << kPath << "\n"; + kStdOut << "[+] Image set to: " << kPath << "\n"; } ::signal(SIGINT, dbgi_ctrlc_handler); |
