aboutsummaryrefslogtreecommitdiff
path: root/kapi/gdb/address.py
diff options
context:
space:
mode:
Diffstat (limited to 'kapi/gdb/address.py')
-rw-r--r--kapi/gdb/address.py25
1 files changed, 11 insertions, 14 deletions
diff --git a/kapi/gdb/address.py b/kapi/gdb/address.py
index 677c9aa..24fe681 100644
--- a/kapi/gdb/address.py
+++ b/kapi/gdb/address.py
@@ -1,17 +1,16 @@
import gdb
+from teachos import TeachOSBasePrinter
-class KapiMemoryAddressPrinter:
- """Print kapi::MemoryAddress."""
-
+class KapiMemoryAddressPrinter(TeachOSBasePrinter):
def __init__(self, val):
- self.val = val
- self.address_type = val.type.template_argument(0)
+ super().__init__(val)
+ self.__type = val.type.template_argument(0)
def to_string(self):
try:
- raw_address = int(self.val["m_value"])
- type_string = str(self.address_type)
+ raw_address = int(self.value["m_value"])
+ type_string = str(self.__type)
if "linear" in type_string:
suffix = "%lin"
@@ -22,12 +21,10 @@ class KapiMemoryAddressPrinter:
return f"{raw_address:#018x}{suffix}"
except Exception as e:
- return f"{self.val}: {e}"
+ return f"{self.value}: {e}"
def children(self):
- if "linear" in str(self.address_type):
- yield (
- "std::byte *",
- self.val["m_value"].cast(gdb.lookup_type("std::byte").pointer()),
- )
- yield ("m_value", self.val["m_value"])
+ if "linear" in str(self.__type):
+ pointer_type = gdb.lookup_type("std::byte").pointer()
+ yield ("[bytes]", self.value["m_value"].cast(pointer_type))
+ yield from super().children()