aboutsummaryrefslogtreecommitdiff
path: root/kapi/gdb/boot_modules/boot_module.py
blob: f0d558befcbd6557a7e0db58e70ea21316a5b40e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import gdb
from teachos import format_size


class KapiBootModulesBootModulePrinter(gdb.ValuePrinter):
    def __init__(self, val):
        self.__val = val
        self.__name = val["name"]
        self.__start = val["start_address"]
        self.__size = val["size"]
        self.__pointer_type = gdb.lookup_type("std::byte").pointer()
        self.__pretty_name = self.__name if str(self.__name) != '""' else "<no name>"

    def to_string(self):
        return f"boot module {self.__pretty_name} of size {format_size(int(self.__size))}, at {self.__start.cast(self.__pointer_type)}"

    def children(self):
        yield ("name", self.__name)
        yield ("start_address", self.__start)
        yield ("size", self.__size)

    def display_hint(self):
        return None