1 from gdb import Type, Value, lookup_type
2 from . import KernelStruct
3 from ..pp import MyPrettyPrinter
5 class SignalContext(KernelStruct):
7 def __init__(self, gdb_inferior: Value) -> None:
8 super().__init__(gdb_inferior, SignalContext)
11 def get_type() -> Type:
12 return lookup_type("struct sigctx").pointer()
14 def print_abstract(self, pp : MyPrettyPrinter, *args):
15 sigactive = self._kstruct["sig_active"]
16 sigpending = SignalHelper.get_sig_bitmap(self._kstruct["sig_pending"])
18 pp.print(f"sig: handling={sigactive}, pending=[{sigpending}]")
20 def print_simple(self, pp : MyPrettyPrinter, *args):
21 pp.print_field(self._kstruct, "sig_active")
22 pp.print_field(self._kstruct, "sig_pending", cast=SignalHelper.get_sig_bitmap)
23 pp.print_field(self._kstruct, "sig_mask", cast=SignalHelper.get_sig_bitmap)
26 active = int(self._kstruct['sig_active'])
27 sig_order = self._kstruct["sig_order"]
29 order.append(str(active))
30 active = int(sig_order[active])
32 pp.print("nestings:", ' -> '.join(reversed(order)))
34 def print_detailed(self, pp, *args):
42 def get_sig_bitmap(sigbmp):