2 from enum import StrEnum
4 class SymbolDomain(StrEnum):
9 def __init__(self, sym) -> None:
11 self.__sym = gdb.parse_and_eval(self.sym)
13 def deref_and_access(self, members):
14 return gdb.parse_and_eval(f"{self.sym}->{members}")
16 def access(self, members):
17 return gdb.parse_and_eval(f"{self.sym}.{members}")
19 def __getitem__(self, index):
20 return self.__sym[index]
26 def exported(domain, namespace, sym_name):
27 name = f"*__SYMEXPORT_Z{domain.value}_N{namespace}_S{sym_name}"
28 return LunaixSymbols.SymbolAccesser(name)
31 def debug_sym(namespace, sym_name):
32 name = f"*__SYMEXPORT_Z{SymbolDomain.DEBUG}_N{namespace}_S{sym_name}"
33 return LunaixSymbols.SymbolAccesser(name)