diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2011-04-01 11:57:03 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2011-04-01 11:57:03 +0000 |
commit | 18819fa6ffa0c1b99a7e378b625e4aca04707bfe (patch) | |
tree | b2ed66f9c764c9407abcc82e4c06de6eff6ef6b6 /gdb/arm-tdep.h | |
parent | 592588f3f8da9c17397807caeb3ed66039784ecc (diff) | |
download | gdb-18819fa6ffa0c1b99a7e378b625e4aca04707bfe.zip gdb-18819fa6ffa0c1b99a7e378b625e4aca04707bfe.tar.gz gdb-18819fa6ffa0c1b99a7e378b625e4aca04707bfe.tar.bz2 |
gdb/
* arm-tdep.h (arm_insert_single_step_breakpoint): Add prototype.
* arm-tdep.c (arm_override_mode): New global.
(arm_pc_is_thumb): Respect arm_override_mode. Remove single-step
execution mode heuristics.
(thumb_get_next_pc_raw): Remove INSERT_BKTP argument; always insert
second single-step breakpoint if needed, using
arm_insert_single_step_breakpoint.
(arm_get_next_pc_raw): Remove INSERT_BKTP argument. Only handle
ARM execution mode, do not call thumb_get_next_pc_raw.
(arm_get_next_pc): Encode execution mode in return value. Call
either arm_get_next_pc_raw or thumb_get_next_pc_raw.
(arm_insert_single_step_breakpoint): New function.
(arm_software_single_step): Call it.
* arm-linux-tdep.c (arm_linux_sigreturn_return_addr): Add IS_THUMB
argument to return execution mode of sigreturn target.
(arm_linux_syscall_next_pc): Use it.
(arm_linux_copy_svc): Update call.
(arm_linux_software_single_step): Call
arm_insert_single_step_breakpoint.
gdb/testsuite/
* gdb.arch/thumb-singlestep.S: New file.
* gdb.arch/thumb-singlestep.exp: Likewise.
Diffstat (limited to 'gdb/arm-tdep.h')
-rw-r--r-- | gdb/arm-tdep.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h index ebd5e6e..356df73 100644 --- a/gdb/arm-tdep.h +++ b/gdb/arm-tdep.h @@ -311,6 +311,8 @@ extern void CORE_ADDR arm_skip_stub (struct frame_info *, CORE_ADDR); CORE_ADDR arm_get_next_pc (struct frame_info *, CORE_ADDR); +void arm_insert_single_step_breakpoint (struct gdbarch *, + struct address_space *, CORE_ADDR); int arm_software_single_step (struct frame_info *); int arm_frame_is_thumb (struct frame_info *frame); |