diff options
Diffstat (limited to 'kapi/gdb/address.py')
| -rw-r--r-- | kapi/gdb/address.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/kapi/gdb/address.py b/kapi/gdb/address.py index 24fe681..429db1d 100644 --- a/kapi/gdb/address.py +++ b/kapi/gdb/address.py @@ -1,15 +1,14 @@ import gdb -from teachos import TeachOSBasePrinter -class KapiMemoryAddressPrinter(TeachOSBasePrinter): +class KapiMemoryAddressPrinter(gdb.ValuePrinter): def __init__(self, val): - super().__init__(val) + self.__val = val self.__type = val.type.template_argument(0) def to_string(self): try: - raw_address = int(self.value["m_value"]) + raw_address = int(self.__val["m_value"]) type_string = str(self.__type) if "linear" in type_string: @@ -21,10 +20,12 @@ class KapiMemoryAddressPrinter(TeachOSBasePrinter): return f"{raw_address:#018x}{suffix}" except Exception as e: - return f"{self.value}: {e}" + return f"{self.__val}: {e}" def children(self): 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() + yield ("[bytes]", self.__val["m_value"].cast(pointer_type)) + + def display_hint(self): + return None |
