This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA/7.8] user breakpoint not inserted if software-single-step at same location
- From: Yao Qi <yao at codesourcery dot com>
- To: Pedro Alves <palves at redhat dot com>, Joel Brobecker <brobecker at adacore dot com>
- Cc: <gdb-patches at sourceware dot org>
- Date: Tue, 3 Jun 2014 19:53:05 +0800
- Subject: Re: [RFA/7.8] user breakpoint not inserted if software-single-step at same location
- Authentication-results: sourceware.org; auth=none
- References: <1401394280-14999-1-git-send-email-brobecker at adacore dot com> <5387BFF0 dot 6010208 at redhat dot com> <20140530122253 dot GC4289 at adacore dot com> <53887ED5 dot 5050603 at redhat dot com> <20140530132659 dot GD4289 at adacore dot com> <5388AA76 dot 4070101 at redhat dot com>
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 (éå)