From 1853e964e96c41e762ca0ab97259ee4e79d86ec7 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Mon, 3 Nov 2014 13:35:54 -0800 Subject: Use the new ASTs --- src/main-gdb-head.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/main-gdb-head.py') diff --git a/src/main-gdb-head.py b/src/main-gdb-head.py index 3a05917..a465c97 100644 --- a/src/main-gdb-head.py +++ b/src/main-gdb-head.py @@ -134,20 +134,30 @@ class PointerPrinter(object): def to_string(self): v = self._value - addr = int(v.cast(gdb.lookup_type('uintptr_t'))) + uptr = gdb.lookup_type('uintptr_t') + addr = int(v.cast(uptr)) if not addr: s = 'nullptr' else: try: sym, off, sec, lib = info_symbol(addr) - except: - s = '(%s)' % (v.type, addr) + except TypeError: + sp = gdb.parse_and_eval('$sp') + sp = int(sp.cast(uptr)) + LOTS = 8 * 1024 * 1024 + diff = addr - sp + if +diff >= 0 and +diff <= LOTS: + a = '<$sp+0x%x>' % +diff + elif -diff >= 0 and -diff <= LOTS: + a = '<$sp-0x%x>' % -diff + else: + a = '' % addr + s = '(%s)%s' % (v.type, a) else: if off: s = '<%s+%d>' % off else: s = '<%s>' % sym - # TODO should I add (type *) ? return s -- cgit v1.2.3-70-g09d2