Support to multi-threading and pthread interface (POSIX.1-2008) (#23)
[lunaix-os.git] / lunaix-os / scripts / gdb / lunadbg / symbols.py
index a9965010bb7d0511bdb4693c0c4d9886b8454cfa..be4407ba6471809988b070f97f959d31a257b37e 100644 (file)
@@ -8,14 +8,26 @@ class LunaixSymbols:
     class SymbolAccesser:
         def __init__(self, sym) -> None:
             self.sym = f"({sym})"
     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 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
 
     @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
         return LunaixSymbols.SymbolAccesser(name)
\ No newline at end of file