fix dependency check logic cause config always disabled
[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             self.__sym = gdb.parse_and_eval(self.sym)
12         
13         def deref_and_access(self, members):
14             return gdb.parse_and_eval(f"{self.sym}->{members}")
15         
16         def access(self, members):
17             return gdb.parse_and_eval(f"{self.sym}.{members}")
18         
19         def __getitem__(self, index):
20             return self.__sym[index]
21         
22         def value(self):
23             return self.__sym
24
25     @staticmethod
26     def exported(domain, namespace, sym_name):
27         name = f"*__SYMEXPORT_Z{domain.value}_N{namespace}_S{sym_name}"
28         return LunaixSymbols.SymbolAccesser(name)
29     
30     @staticmethod
31     def debug_sym(namespace, sym_name):
32         name = f"*__SYMEXPORT_Z{SymbolDomain.DEBUG}_N{namespace}_S{sym_name}"
33         return LunaixSymbols.SymbolAccesser(name)