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

Reply via email to