a9965010bb7d0511bdb4693c0c4d9886b8454cfa
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / symbols.py
1 import gdb
2 from enum import StrEnum
3
4 class SymbolDomain(StrEnum):
5     DEBUG = "debug"
6
7 class LunaixSymbols:
8     class SymbolAccesser:
9         def __init__(self, sym) -> None:
10             self.sym = f"({sym})"
11         
12         def deref_and_access(self, members):
13             return gdb.parse_and_eval(f"{self.sym}->{members}")
14         
15         def access(self, members):
16             return gdb.parse_and_eval(f"{self.sym}.{members}")
17
18     @staticmethod
19     def exported(domain, sym_name):
20         name = f"*__SYMEXPORT_Z{domain.value}_{sym_name}"
21         return LunaixSymbols.SymbolAccesser(name)