aboutsummaryrefslogtreecommitdiff
path: root/gdb/arm-tdep.c
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2016-11-30 11:55:56 +0000
committerYao Qi <yao.qi@linaro.org>2016-11-30 11:55:56 +0000
commit7913a64cab3930fe524f0e38f85cfca11bd52dcb (patch)
treeb6335e421908ad5a699611940c4a2dc477e0e355 /gdb/arm-tdep.c
parente9a38e0f5287ce7b4629f5f923191e38dd7355c0 (diff)
downloadgdb-7913a64cab3930fe524f0e38f85cfca11bd52dcb.zip
gdb-7913a64cab3930fe524f0e38f85cfca11bd52dcb.tar.gz
gdb-7913a64cab3930fe524f0e38f85cfca11bd52dcb.tar.bz2
[ARM] Read memory as unsigned integer
When GDB read inferior memory as an address or an instruction, it should be unsigned. gdb: 2016-11-30 Yao Qi <yao.qi@linaro.org> * arm-tdep.c (arm_scan_prologue): Read memory as unsigned integer. (arm_exidx_unwind_sniffer): Likewise.
Diffstat (limited to 'gdb/arm-tdep.c')
-rw-r--r--gdb/arm-tdep.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 0b93df7..fd5d0de 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -1807,10 +1807,11 @@ arm_scan_prologue (struct frame_info *this_frame,
the callee (or at the present moment if this is the innermost frame).
The value stored there should be the address of the stmfd + 8. */
CORE_ADDR frame_loc;
- LONGEST return_value;
+ ULONGEST return_value;
frame_loc = get_frame_register_unsigned (this_frame, ARM_FP_REGNUM);
- if (!safe_read_memory_integer (frame_loc, 4, byte_order, &return_value))
+ if (!safe_read_memory_unsigned_integer (frame_loc, 4, byte_order,
+ &return_value))
return;
else
{
@@ -2659,19 +2660,19 @@ arm_exidx_unwind_sniffer (const struct frame_unwind *self,
ensure this, so that e.g. pthread cancellation works. */
if (arm_frame_is_thumb (this_frame))
{
- LONGEST insn;
+ ULONGEST insn;
- if (safe_read_memory_integer (get_frame_pc (this_frame) - 2, 2,
- byte_order_for_code, &insn)
+ if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 2,
+ 2, byte_order_for_code, &insn)
&& (insn & 0xff00) == 0xdf00 /* svc */)
exc_valid = 1;
}
else
{
- LONGEST insn;
+ ULONGEST insn;
- if (safe_read_memory_integer (get_frame_pc (this_frame) - 4, 4,
- byte_order_for_code, &insn)
+ if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 4,
+ 4, byte_order_for_code, &insn)
&& (insn & 0x0f000000) == 0x0f000000 /* svc */)
exc_valid = 1;
}