Skip to content

Commit

Permalink
scripts/qemugdb/mtree.py: fix up mtree dump
Browse files Browse the repository at this point in the history
Since QEMU has been able to build with native Int128 support this was
broken as it attempts to fish values out of the non-existent
structure. Also the alias print was trying to make a %x out of
gdb.ValueType directly which didn't seem to work.

Signed-off-by: Alex Bennée <[email protected]>
  • Loading branch information
stsquad committed Apr 7, 2017
1 parent 5fe2339 commit 8037fa5
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions scripts/qemugdb/mtree.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,15 @@ def isnull(ptr):
return ptr == gdb.Value(0).cast(ptr.type)

def int128(p):
return int(p['lo']) + (int(p['hi']) << 64)
'''Read an Int128 type to a python integer.
QEMU can be built with native Int128 support so we need to detect
if the value is a structure or the native type.
'''
if p.type.code == gdb.TYPE_CODE_STRUCT:
return int(p['lo']) + (int(p['hi']) << 64)
else:
return int(("%s" % p), 16)

class MtreeCommand(gdb.Command):
'''Display the memory tree hierarchy'''
Expand Down Expand Up @@ -69,7 +77,7 @@ def print_item(self, ptr, offset = gdb.Value(0), level = 0):
gdb.write('%s alias: %s@%016x (@ %s)\n' %
(' ' * level,
alias['name'].string(),
ptr['alias_offset'],
int(ptr['alias_offset']),
alias,
),
gdb.STDOUT)
Expand Down

0 comments on commit 8037fa5

Please sign in to comment.