mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 11:04:18 +08:00
[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.
This commit is contained in:
parent
e9a38e0f52
commit
7913a64cab
@ -1,3 +1,8 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2016-11-28 Simon Marchi <simon.marchi@polymtl.ca>
|
2016-11-28 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
* record-full.c (record_full_open_1): Fix debug output.
|
* record-full.c (record_full_open_1): Fix debug output.
|
||||||
|
@ -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 callee (or at the present moment if this is the innermost frame).
|
||||||
The value stored there should be the address of the stmfd + 8. */
|
The value stored there should be the address of the stmfd + 8. */
|
||||||
CORE_ADDR frame_loc;
|
CORE_ADDR frame_loc;
|
||||||
LONGEST return_value;
|
ULONGEST return_value;
|
||||||
|
|
||||||
frame_loc = get_frame_register_unsigned (this_frame, ARM_FP_REGNUM);
|
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;
|
return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2659,19 +2660,19 @@ arm_exidx_unwind_sniffer (const struct frame_unwind *self,
|
|||||||
ensure this, so that e.g. pthread cancellation works. */
|
ensure this, so that e.g. pthread cancellation works. */
|
||||||
if (arm_frame_is_thumb (this_frame))
|
if (arm_frame_is_thumb (this_frame))
|
||||||
{
|
{
|
||||||
LONGEST insn;
|
ULONGEST insn;
|
||||||
|
|
||||||
if (safe_read_memory_integer (get_frame_pc (this_frame) - 2, 2,
|
if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 2,
|
||||||
byte_order_for_code, &insn)
|
2, byte_order_for_code, &insn)
|
||||||
&& (insn & 0xff00) == 0xdf00 /* svc */)
|
&& (insn & 0xff00) == 0xdf00 /* svc */)
|
||||||
exc_valid = 1;
|
exc_valid = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LONGEST insn;
|
ULONGEST insn;
|
||||||
|
|
||||||
if (safe_read_memory_integer (get_frame_pc (this_frame) - 4, 4,
|
if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 4,
|
||||||
byte_order_for_code, &insn)
|
4, byte_order_for_code, &insn)
|
||||||
&& (insn & 0x0f000000) == 0x0f000000 /* svc */)
|
&& (insn & 0x0f000000) == 0x0f000000 /* svc */)
|
||||||
exc_valid = 1;
|
exc_valid = 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user