Package: src:golang Version: 2:1.1.1-4 Tags: patch please make the -gdb.py file compatible with python3. this version is supposed to work with both python2 and python3.
--- runtime-gdb.py.orig 2014-06-25 13:54:12.000000000 +0200 +++ runtime-gdb.py 2014-06-25 13:55:07.000000000 +0200 @@ -16,8 +16,10 @@ import sys, re +if sys.version > '3': + long = int -print >>sys.stderr, "Loading Go Runtime support." +print("Loading Go Runtime support.", file=sys.stderr) # allow to manually reload while developing goobjfile = gdb.current_objfile() or gdb.objfiles()[0] @@ -90,7 +92,7 @@ flags = self.val['flags'] inttype = self.val['hash0'].type cnt = 0 - for bucket in xrange(2 ** B): + for bucket in range(2 ** B): bp = buckets + bucket if oldbuckets: oldbucket = bucket & (2 ** (B - 1) - 1) @@ -101,7 +103,7 @@ bp = oldbp while bp: b = bp.dereference() - for i in xrange(8): + for i in range(8): if b['tophash'][i] != 0: k = b['keys'][i] v = b['values'][i] @@ -154,7 +156,7 @@ pass return matcher -goobjfile.pretty_printers.extend([makematcher(k) for k in vars().values() if hasattr(k, 'pattern')]) +goobjfile.pretty_printers.extend([makematcher(k) for k in list(vars().values()) if hasattr(k, 'pattern')]) # # For reference, this is what we're trying to do: @@ -355,7 +357,7 @@ pc = ptr['sched']['pc'].cast(vp) sp = ptr['sched']['sp'].cast(vp) blk = gdb.block_for_pc(long((pc))) - print s, ptr['goid'], "%8s" % sts[long((ptr['status']))], blk.function + print(s, ptr['goid'], "%8s" % sts[long((ptr['status']))], blk.function) def find_goroutine(goid): vp = gdb.lookup_type('void').pointer() @@ -363,7 +365,7 @@ if ptr['status'] == 6: # 'gdead' continue if ptr['goid'] == goid: - return [ptr['sched'][x].cast(vp) for x in 'pc', 'sp'] + return [ptr['sched'][x].cast(vp) for x in ('pc', 'sp')] return None, None @@ -387,7 +389,7 @@ goid = gdb.parse_and_eval(goid) pc, sp = find_goroutine(int(goid)) if not pc: - print "No such goroutine: ", goid + print("No such goroutine: ", goid) return save_frame = gdb.selected_frame() gdb.parse_and_eval('$save_pc = $pc') @@ -413,8 +415,8 @@ try: #TODO fix quoting for qualified variable names obj = gdb.parse_and_eval("%s" % obj) - except Exception, e: - print "Can't parse ", obj, ": ", e + except Exception as e: + print("Can't parse ", obj, ": ", e) continue if obj['data'] == 0: @@ -423,10 +425,10 @@ dtype = iface_dtype(obj) if dtype is None: - print "Not an interface: ", obj.type + print("Not an interface: ", obj.type) continue - print "%s: %s" % (obj.type, dtype) + print("%s: %s" % (obj.type, dtype)) # TODO: print interface's methods and dynamic type's func pointers thereof. #rsc: "to find the number of entries in the itab's Fn field look at itab.inter->numMethods