class SymbolAccesser:
def __init__(self, sym) -> None:
self.sym = f"({sym})"
+ self.__sym = gdb.parse_and_eval(self.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}")
+
+ def __getitem__(self, index):
+ return self.__sym[index]
+
+ def value(self):
+ return self.__sym
@staticmethod
- def exported(domain, sym_name):
- name = f"*__SYMEXPORT_Z{domain.value}_{sym_name}"
+ def exported(domain, namespace, sym_name):
+ name = f"*__SYMEXPORT_Z{domain.value}_N{namespace}_S{sym_name}"
+ return LunaixSymbols.SymbolAccesser(name)
+
+ @staticmethod
+ def debug_sym(namespace, sym_name):
+ name = f"*__SYMEXPORT_Z{SymbolDomain.DEBUG}_N{namespace}_S{sym_name}"
return LunaixSymbols.SymbolAccesser(name)
\ No newline at end of file