dotfiles

personal dotfiles
git clone anongit@rnpnr.xyz:dotfiles.git
Log | Files | Refs | Feed | Submodules

plugins.py (1193B)


      1 import gdb.printing
      2 
      3 class Arena_printer(gdb.ValuePrinter):
      4     def __init__(self, val):
      5         self.val = val
      6 
      7     def to_string(self):
      8         beg = self.val["beg"]
      9         end = self.val["end"]
     10         return '{capacity: %d}' % (end - beg)
     11 
     12 class Stream_printer(gdb.ValuePrinter):
     13     def __init__(self, val):
     14         self.val = val
     15 
     16     def to_string(self):
     17         len = self.val["widx"]
     18         str = self.val["data"].string(length=min(max(len, 0), 64))
     19         return '{len = %d, data = "%s"}' % (len, str)
     20 
     21 class str8_printer(gdb.ValuePrinter):
     22     def __init__(self, val):
     23         self.val = val
     24 
     25     def to_string(self):
     26         len = self.val["len"]
     27         str = self.val["data"].string(length=min(max(len, 0), 64))
     28         return '{len = %d, data = "%s"}' % (len, str)
     29 
     30 def build_pretty_printer():
     31     pp = gdb.printing.RegexpCollectionPrettyPrinter("rnpnr")
     32     pp.add_printer("s8",     "s8",     str8_printer)
     33     pp.add_printer("str8",   "str8",   str8_printer)
     34     pp.add_printer("Arena",  "Arena",  Arena_printer)
     35     pp.add_printer("Stream", "Stream", Stream_printer)
     36     return pp
     37 
     38 gdb.printing.register_pretty_printer(
     39     gdb.current_objfile(), build_pretty_printer()
     40 )