diff options
Diffstat (limited to 'scripts/gdb/linux/utils.py')
-rw-r--r-- | scripts/gdb/linux/utils.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/scripts/gdb/linux/utils.py b/scripts/gdb/linux/utils.py index bc67126118c4..ea94221dbd39 100644 --- a/scripts/gdb/linux/utils.py +++ b/scripts/gdb/linux/utils.py | |||
@@ -92,15 +92,16 @@ def read_memoryview(inf, start, length): | |||
92 | return memoryview(inf.read_memory(start, length)) | 92 | return memoryview(inf.read_memory(start, length)) |
93 | 93 | ||
94 | 94 | ||
95 | def read_u16(buffer): | 95 | def read_u16(buffer, offset): |
96 | buffer_val = buffer[offset:offset + 2] | ||
96 | value = [0, 0] | 97 | value = [0, 0] |
97 | 98 | ||
98 | if type(buffer[0]) is str: | 99 | if type(buffer_val[0]) is str: |
99 | value[0] = ord(buffer[0]) | 100 | value[0] = ord(buffer_val[0]) |
100 | value[1] = ord(buffer[1]) | 101 | value[1] = ord(buffer_val[1]) |
101 | else: | 102 | else: |
102 | value[0] = buffer[0] | 103 | value[0] = buffer_val[0] |
103 | value[1] = buffer[1] | 104 | value[1] = buffer_val[1] |
104 | 105 | ||
105 | if get_target_endianness() == LITTLE_ENDIAN: | 106 | if get_target_endianness() == LITTLE_ENDIAN: |
106 | return value[0] + (value[1] << 8) | 107 | return value[0] + (value[1] << 8) |
@@ -108,18 +109,18 @@ def read_u16(buffer): | |||
108 | return value[1] + (value[0] << 8) | 109 | return value[1] + (value[0] << 8) |
109 | 110 | ||
110 | 111 | ||
111 | def read_u32(buffer): | 112 | def read_u32(buffer, offset): |
112 | if get_target_endianness() == LITTLE_ENDIAN: | 113 | if get_target_endianness() == LITTLE_ENDIAN: |
113 | return read_u16(buffer[0:2]) + (read_u16(buffer[2:4]) << 16) | 114 | return read_u16(buffer, offset) + (read_u16(buffer, offset + 2) << 16) |
114 | else: | 115 | else: |
115 | return read_u16(buffer[2:4]) + (read_u16(buffer[0:2]) << 16) | 116 | return read_u16(buffer, offset + 2) + (read_u16(buffer, offset) << 16) |
116 | 117 | ||
117 | 118 | ||
118 | def read_u64(buffer): | 119 | def read_u64(buffer, offset): |
119 | if get_target_endianness() == LITTLE_ENDIAN: | 120 | if get_target_endianness() == LITTLE_ENDIAN: |
120 | return read_u32(buffer[0:4]) + (read_u32(buffer[4:8]) << 32) | 121 | return read_u32(buffer, offset) + (read_u32(buffer, offset + 4) << 32) |
121 | else: | 122 | else: |
122 | return read_u32(buffer[4:8]) + (read_u32(buffer[0:4]) << 32) | 123 | return read_u32(buffer, offset + 4) + (read_u32(buffer, offset) << 32) |
123 | 124 | ||
124 | 125 | ||
125 | target_arch = None | 126 | target_arch = None |