linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Fix issue with dmesg.py and python 3.X
@ 2016-04-06  2:38 Dom Cote
  2016-04-08  3:02 ` Kieran Bingham
  0 siblings, 1 reply; 4+ messages in thread
From: Dom Cote @ 2016-04-06  2:38 UTC (permalink / raw)
  To: kieran.bingham, jan.kiszka; +Cc: linux-kernel

When using GDB built with python 2.7,

Inferior.read_memory (address, length)

returns a buffer object. When using GDB built with python 3.X,
it returns a memoryview object, which cannot be added to another
memoryview object.

Replace the addition (+) of 2 python memoryview objects
with the addition of 2 'bytes' objects.

Create a read_memoryview() function that always return a memoryview
object.

Change the read_u16 function so it doesn't need to use ord()
anymore.

Tested with Python 3.4 and gdb 7.7

Signed-off-by: Dom Cote <buzdelabuz2@gmail.com>
---
 scripts/gdb/linux/dmesg.py | 9 +++++----
 scripts/gdb/linux/utils.py | 9 +++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/scripts/gdb/linux/dmesg.py b/scripts/gdb/linux/dmesg.py
index 927d0d2a3145..96f4732157d8 100644
--- a/scripts/gdb/linux/dmesg.py
+++ b/scripts/gdb/linux/dmesg.py
@@ -33,11 +33,12 @@ class LxDmesg(gdb.Command):
         if log_first_idx < log_next_idx:
             log_buf_2nd_half = -1
             length = log_next_idx - log_first_idx
-            log_buf = inf.read_memory(start, length)
+            log_buf = utils.read_memoryview(inf, start, length).tobytes()
         else:
             log_buf_2nd_half = log_buf_len - log_first_idx
-            log_buf = inf.read_memory(start, log_buf_2nd_half) + \
-                inf.read_memory(log_buf_addr, log_next_idx)
+            a = utils.read_memoryview(inf, start, log_buf_2nd_half)
+            b = utils.read_memoryview(inf, log_buf_addr, log_next_idx)
+            log_buf = a.tobytes() + b.tobytes()
 
         pos = 0
         while pos < log_buf.__len__():
@@ -53,7 +54,7 @@ class LxDmesg(gdb.Command):
             text = log_buf[pos + 16:pos + 16 + text_len]
             time_stamp = utils.read_u64(log_buf[pos:pos + 8])
 
-            for line in memoryview(text).tobytes().splitlines():
+            for line in text.splitlines():
                 gdb.write("[{time:12.6f}] {line}\n".format(
                     time=time_stamp / 1000000000.0,
                     line=line))
diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py
index 0893b326a28b..c2b779e7bd26 100644
--- a/scripts/gdb/linux/utils.py
+++ b/scripts/gdb/linux/utils.py
@@ -87,11 +87,16 @@ def get_target_endianness():
     return target_endianness
 
 
+# Compat between GDB built with python 2.7 vs 3.X
+def read_memoryview(inf, start, length):
+    return memoryview(inf.read_memory(start, length))
+
+
 def read_u16(buffer):
     if get_target_endianness() == LITTLE_ENDIAN:
-        return ord(buffer[0]) + (ord(buffer[1]) << 8)
+        return buffer[0] + (buffer[1] << 8)
     else:
-        return ord(buffer[1]) + (ord(buffer[0]) << 8)
+        return buffer[1] + (buffer[0] << 8)
 
 
 def read_u32(buffer):
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-03  8:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-06  2:38 [PATCH] Fix issue with dmesg.py and python 3.X Dom Cote
2016-04-08  3:02 ` Kieran Bingham
     [not found]   ` <CA+Bh5YxOw_NcrMk7MhN22nX35kc2bFgMrHZo_aFh7gk4o-5cmg@mail.gmail.com>
2016-04-29 15:03     ` Kieran Bingham
     [not found]       ` <CA+Bh5YwYRKVywgKY5Jf+Hy33Y9mTCL+_LdUKBuXuXHvr6bcZxw@mail.gmail.com>
2016-05-03  8:34         ` Kieran Bingham

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).