Re: [RFA/7.8] user breakpoint not inserted if software-single-step at same location

Yao Qi
2014-06-03T11:55:16Z

On 05/30/2014 11:57 PM, Pedro Alves wrote:
> +int
> +main (void)
> +{
> + /* Assume writes to integers compile to a single instruction. */

This assumption is wrong on arm at least.

> + volatile int i = 0;
> +
> + i = 1; /* set foo break here */
> + i = 2; /* set bar break here */
> + return 0;
> +}

Each line is compiled to two instructions.

27 i = 1; /* set foo break here */
0x0000025c <+20>: mov r3, #1
0x00000260 <+24>: str r3, [r11, #-8]

28 i = 2; /* set bar break here */
0x00000264 <+28>: mov r3, #2
0x00000268 <+32>: str r3, [r11, #-8]

> +# On software single-step targets, this step will want to momentarily
> +# place a single-step breakpoint over the bar breakpoint, and then
> +# remove it. But, a regular breakpoint it planted there already, and
> +# with always-inserted on, should remain planted when the step
> +# finishes.
> +gdb_test "si" "Breakpoint .* bar break .*"

this test will fail, because it still stops at "foo break".

--
Yao (é½å°§)