summaryrefslogtreecommitdiff
path: root/scripts/gdb_pretty_printer.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/gdb_pretty_printer.py')
-rw-r--r--scripts/gdb_pretty_printer.py19
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 )