Re: [rfc, arm] Always use correct execution state for single-step breakpoints

Ulrich Weigand
2011-04-01T11:58:55Z

> 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.

I've checked this in now.