Add helpers for reading integers from target memory buffers. Required
when caching the memory access is more efficient than reading individual
values via gdb.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 scripts/gdb/utils.py |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/scripts/gdb/utils.py b/scripts/gdb/utils.py
index a4e6df2..18e3bfc 100644
--- a/scripts/gdb/utils.py
+++ b/scripts/gdb/utils.py
@@ -70,3 +70,21 @@ def get_target_endianness():
                else:
                        raise gdb.GdgError("unknown endianness '%s'" % endian)
        return target_endianness
+
+def read_u16(buffer):
+       if get_target_endianness() == LITTLE_ENDIAN:
+               return ord(buffer[0]) + (ord(buffer[1]) << 8)
+       else:
+               return ord(buffer[1]) + (ord(buffer[0]) << 8)
+
+def read_u32(buffer):
+       if get_target_endianness() == LITTLE_ENDIAN:
+               return read_u16(buffer[0:2]) + (read_u16(buffer[2:4]) << 16)
+       else:
+               return read_u16(buffer[2:4]) + (read_u16(buffer[0:2]) << 16)
+
+def read_u64(buffer):
+       if get_target_endianness() == LITTLE_ENDIAN:
+               return read_u32(buffer[0:4]) + (read_u32(buffer[4:8]) << 32)
+       else:
+               return read_u32(buffer[4:8]) + (read_u32(buffer[0:4]) << 32)
-- 
1.7.3.4


------------------------------------------------------------------------------
LogMeIn Central: Instant, anywhere, Remote PC access and management.
Stay in control, update software, and manage PCs from one command center
Diagnose problems and improve visibility into emerging IT issues
Automate, monitor and manage. Do more in less time with Central
http://p.sf.net/sfu/logmein12331_d2d
_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to