feat: owloysius - dynamic init function invocator
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / symbols.py
diff --git a/lunaix-os/scripts/gdb/lunadbg/symbols.py b/lunaix-os/scripts/gdb/lunadbg/symbols.py
new file mode 100644 (file)
index 0000000..a996501
--- /dev/null
@@ -0,0 +1,21 @@
+import gdb
+from enum import StrEnum
+
+class SymbolDomain(StrEnum):
+    DEBUG = "debug"
+
+class LunaixSymbols:
+    class SymbolAccesser:
+        def __init__(self, sym) -> None:
+            self.sym = f"({sym})"
+        
+        def deref_and_access(self, members):
+            return gdb.parse_and_eval(f"{self.sym}->{members}")
+        
+        def access(self, members):
+            return gdb.parse_and_eval(f"{self.sym}.{members}")
+
+    @staticmethod
+    def exported(domain, sym_name):
+        name = f"*__SYMEXPORT_Z{domain.value}_{sym_name}"
+        return LunaixSymbols.SymbolAccesser(name)
\ No newline at end of file