diff options
Diffstat (limited to 'scripts/gdb_pretty_printer.py')
-rw-r--r-- | scripts/gdb_pretty_printer.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/scripts/gdb_pretty_printer.py b/scripts/gdb_pretty_printer.py new file mode 100644 index 00000000..55e5eb26 --- /dev/null +++ b/scripts/gdb_pretty_printer.py @@ -0,0 +1,19 @@ +import gdb + +class EnumPrinter(object): + def __init__(self, val): + # TODO: Support NonZero optimised enums + self.tag = int(val['TAG']) + self.var_data = val['DATA']['var_%i' % (self.tag,)] + def to_string(self): + return "var %i" % (self.tag,) + def children(self): + for f in self.var_data.type.fields(): + yield (f.name, self.var_data[f.name],) + return + +def register(): + pp = gdb.printing.RegexpCollectionPrettyPrinter("mrustc") + pp.add_printer('enum', '^e__', EnumPrinter) + return pp +gdb.printing.register_pretty_printer( gdb.current_objfile(), register(), replace=True ) |