This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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 (éå)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]