diff options
author | Alex Bennée <alex.bennee@linaro.org> | 2017-03-21 16:26:27 +0000 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2017-04-07 15:24:56 +0100 |
commit | 8037fa55ace19e1f328d03e2cefa78d5f3d81310 (patch) | |
tree | 7a2e3b59bcddc7dd574d05fa1d35888ec4130dd0 /scripts | |
parent | 5fe2339e6b09da7d6f48b9bef0f1a7360392b489 (diff) |
scripts/qemugdb/mtree.py: fix up mtree dump
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 <alex.bennee@linaro.org>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qemugdb/mtree.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/scripts/qemugdb/mtree.py b/scripts/qemugdb/mtree.py index cc8131c2e7..e6791b7885 100644 --- a/scripts/qemugdb/mtree.py +++ b/scripts/qemugdb/mtree.py @@ -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''' @@ -69,7 +77,7 @@ class MtreeCommand(gdb.Command): gdb.write('%s alias: %s@%016x (@ %s)\n' % (' ' * level, alias['name'].string(), - ptr['alias_offset'], + int(ptr['alias_offset']), alias, ), gdb.STDOUT) |