From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60811) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a42HF-0007ZL-7f for qemu-devel@nongnu.org; Wed, 02 Dec 2015 02:56:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a42HC-0000HI-25 for qemu-devel@nongnu.org; Wed, 02 Dec 2015 02:56:37 -0500 Received: from mail-pa0-x22e.google.com ([2607:f8b0:400e:c03::22e]:35862) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a42HB-0000Gw-T2 for qemu-devel@nongnu.org; Wed, 02 Dec 2015 02:56:33 -0500 Received: by pacdm15 with SMTP id dm15so33153385pac.3 for ; Tue, 01 Dec 2015 23:56:33 -0800 (PST) From: Yang Wei Date: Wed, 2 Dec 2015 15:56:24 +0800 Message-Id: <1449042984-10609-1-git-send-email-w90p710@gmail.com> Subject: [Qemu-devel] scripts/gdb: Fix a python exception in mtree.py List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: blauwirbel@gmail.com, stefanha@redhat.com, avi@redhat.com Cc: qemu-devel@nongnu.org The following exception is threw: Python Exception name 'long' is not defined: Error occurred in Python command: name 'long' is not defined In python3, long is rename to int Signed-off-by: Yang Wei --- scripts/qemugdb/mtree.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/scripts/qemugdb/mtree.py b/scripts/qemugdb/mtree.py index 06011c3..460d4b6 100644 --- a/scripts/qemugdb/mtree.py +++ b/scripts/qemugdb/mtree.py @@ -16,12 +16,19 @@ # 'qemu mtree' -- display the memory hierarchy import gdb +import sys def isnull(ptr): return ptr == gdb.Value(0).cast(ptr.type) +# PEP 0237: long renamed to int. That is, there is only one built-integral +# integral type, named int; but it behaves mostly like the old long type. +# https://docs.python.org/3.3/whatsnew/3.0.html#integers +def intptr(p): + return long(p) if sys.version_info.major == 2 else int(p) + def int128(p): - return long(p['lo']) + (long(p['hi']) << 64) + return intptr(p['lo']) + (intptr(p['hi']) << 64) class MtreeCommand(gdb.Command): '''Display the memory tree hierarchy''' @@ -40,11 +47,11 @@ class MtreeCommand(gdb.Command): def process_queue(self): while self.queue: ptr = self.queue.pop(0) - if long(ptr) in self.seen: + if intptr(ptr) in self.seen: continue self.print_item(ptr) def print_item(self, ptr, offset = gdb.Value(0), level = 0): - self.seen.add(long(ptr)) + self.seen.add(intptr(ptr)) addr = ptr['addr'] addr += offset size = int128(ptr['size']) @@ -58,8 +65,8 @@ class MtreeCommand(gdb.Command): klass = ' (RAM)' gdb.write('%s%016x-%016x %s%s (@ %s)\n' % (' ' * level, - long(addr), - long(addr + (size - 1)), + intptr(addr), + intptr(addr + (size - 1)), ptr['name'].string(), klass, ptr, -- 1.9.1