diff options
Diffstat (limited to 'kapi/gdb/address.py')
| -rw-r--r-- | kapi/gdb/address.py | 25 |
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() |
