summaryrefslogtreecommitdiff
path: root/scripts/gdb_pretty_printer.py
blob: 55e5eb269ae79ff39471094f2c21eeebfc254fcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 )