From 0561a8d0a6ae7588309a6e3513bbfeeef5f0aa15 Mon Sep 17 00:00:00 2001 From: Amlal Date: Fri, 25 Apr 2025 09:41:29 +0200 Subject: dev, LibDebugger: add kdbg, working on NeKernelContract's implementation. Signed-off-by: Amlal --- dev/LibDebugger/NeKernelContract.h | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 dev/LibDebugger/NeKernelContract.h (limited to 'dev/LibDebugger/NeKernelContract.h') diff --git a/dev/LibDebugger/NeKernelContract.h b/dev/LibDebugger/NeKernelContract.h new file mode 100644 index 0000000..e6b40d0 --- /dev/null +++ b/dev/LibDebugger/NeKernelContract.h @@ -0,0 +1,67 @@ + +/*** + (C) 2025 Amlal El Mahrouss + */ + +#ifndef LD_NEKERNEL_CONTRACT_H +#define LD_NEKERNEL_CONTRACT_H + +#include + +#include +#include +#include +#include + +#define kDebugUnboundPort 0x0FEED + +#define kDebugMag0 'K' +#define kDebugMag1 'D' +#define kDebugMag2 'B' +#define kDebugMag3 'G' + +#define kDebugSourceFile 23 +#define kDebugLine 33 +#define kDebugTeam 43 +#define kDebugEOP 49 + +namespace LibDebugger::NeKernel +{ + class NeKernelContract; + + namespace Detail + { + class NeKernelPortHeader; + + inline constexpr size_t kDebugTypeLen = 256U; + + typedef char rt_debug_type[kDebugTypeLen]; + + class NeKernelPortHeader final + { + public: + int16_t fPort; + int16_t fPortBsy; + }; + } // namespace Detail + + class NeKernelContract : public DebuggerContract + { + public: + NeKernelContract(); + virtual ~NeKernelContract(); + + // 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; + + private: + std::string m_ip_address; + std::string m_port; + }; +} // namespace LibDebugger::NeKernel + +#endif // LD_NEKERNEL_CONTRACT_H \ No newline at end of file -- cgit v1.2.3