* [RFA] 2nd send: Solve the watchpoint failures on second run.
@ 2002-07-15 8:10 Pierre Muller
2002-08-29 15:16 ` Michael Snyder
0 siblings, 1 reply; 3+ messages in thread
From: Pierre Muller @ 2002-07-15 8:10 UTC (permalink / raw)
To: gdb-patches; +Cc: msnyder, jimb
I got no answer to that RFA,
http://sources.redhat.com/ml/gdb-patches/2002-06/msg00394.html
thus I send it again.
This bug is related to bug 515 of database.
The following note:
>(This patch, together with the previous RFA that I sent today,
>fixes the problem for both statically and dynamically linked
>programs).
Can be modified into:
The following patch together with the patch commited
on july 4. 2002
http://sources.redhat.com/ml/gdb-cvs/2002-07/msg00036.html
fiwes bug 515 both for statically and dynamically linked programs.
If you use my previous patch and compile the test program
of the 515 bug with --static option,
you will still miss the change of x value on the second run.
This comes from the fact that the val field of the watchpoint is
not reset correctly when the program is restarted.
I first tried to fix this problem by using evaluate_expression
in the breakpoint_init_inferior function. But, while this fixes the problem for
the win32 native debugger, it leads to problems for linux,
beacuse the program is not yet loaded into memory
when this function is called: instead, the bash used for launch the debuggee
seems to be in memory...
So the only way I found to fix that error was to reset val field to NULL
so that the val field is computed again
correctly at the first insert_breakpoint call.
2002-06-19 Pierre Muller <muller@ics.u-strasbg.fr>
* breakpoint.c (breakpoint_init_inferior): Reset the val field of
watchpoints to NULL.
(insert_breakpoints): set val field of watchpoints if NULL.
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.77
diff -u -p -r1.77 breakpoint.c
--- breakpoint.c 18 Jun 2002 21:58:55 -0000 1.77
+++ breakpoint.c 19 Jun 2002 15:20:39 -0000
@@ -725,7 +725,18 @@ insert_breakpoints (void)
if (b->enable_state == bp_permanent)
/* Permanent breakpoints cannot be inserted or removed. */
continue;
- else if (b->type != bp_watchpoint
+ if ((b->type == bp_watchpoint
+ || b->type == bp_hardware_watchpoint
+ || b->type == bp_read_watchpoint
+ || b->type == bp_access_watchpoint) && (!b->val)) {
+ struct value *val;
+ val = evaluate_expression (b->exp);
+ release_value (val);
+ if (VALUE_LAZY (val))
+ value_fetch_lazy (val);
+ b->val = val;
+ }
+ if (b->type != bp_watchpoint
&& b->type != bp_hardware_watchpoint
&& b->type != bp_read_watchpoint
&& b->type != bp_access_watchpoint
@@ -1520,6 +1531,14 @@ breakpoint_init_inferior (enum inf_conte
/* Likewise for watchpoints on local expressions. */
if (b->exp_valid_block != NULL)
delete_breakpoint (b);
+ if (context == inf_starting)
+ {
+ /* Reset val field to force reread of starting value
+ in insert_breakpoints. */
+ if (b->val)
+ value_free (b->val);
+ b->val = NULL;
+ }
break;
default:
/* Likewise for exception catchpoints in dynamic-linked
Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99
Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] 2nd send: Solve the watchpoint failures on second run.
2002-07-15 8:10 [RFA] 2nd send: Solve the watchpoint failures on second run Pierre Muller
@ 2002-08-29 15:16 ` Michael Snyder
2002-08-30 2:15 ` Pierre Muller
0 siblings, 1 reply; 3+ messages in thread
From: Michael Snyder @ 2002-08-29 15:16 UTC (permalink / raw)
To: Pierre Muller; +Cc: gdb-patches, jimb
Pierre Muller wrote:
>
> I got no answer to that RFA,
> http://sources.redhat.com/ml/gdb-patches/2002-06/msg00394.html
> thus I send it again.
>
> This bug is related to bug 515 of database.
> The following note:
> >(This patch, together with the previous RFA that I sent today,
> >fixes the problem for both statically and dynamically linked
> >programs).
> Can be modified into:
> The following patch together with the patch commited
> on july 4. 2002
> http://sources.redhat.com/ml/gdb-cvs/2002-07/msg00036.html
> fiwes bug 515 both for statically and dynamically linked programs.
>
> If you use my previous patch and compile the test program
> of the 515 bug with --static option,
> you will still miss the change of x value on the second run.
> This comes from the fact that the val field of the watchpoint is
> not reset correctly when the program is restarted.
>
> I first tried to fix this problem by using evaluate_expression
> in the breakpoint_init_inferior function. But, while this fixes the problem for
> the win32 native debugger, it leads to problems for linux,
> beacuse the program is not yet loaded into memory
> when this function is called: instead, the bash used for launch the debuggee
> seems to be in memory...
>
> So the only way I found to fix that error was to reset val field to NULL
> so that the val field is computed again
> correctly at the first insert_breakpoint call.
Looks OK to me, Pierre -- except please move the '{' from
the end of the line.
Thanks
Michael
>
> 2002-06-19 Pierre Muller <muller@ics.u-strasbg.fr>
>
> * breakpoint.c (breakpoint_init_inferior): Reset the val field of
> watchpoints to NULL.
> (insert_breakpoints): set val field of watchpoints if NULL.
>
> Index: breakpoint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/breakpoint.c,v
> retrieving revision 1.77
> diff -u -p -r1.77 breakpoint.c
> --- breakpoint.c 18 Jun 2002 21:58:55 -0000 1.77
> +++ breakpoint.c 19 Jun 2002 15:20:39 -0000
> @@ -725,7 +725,18 @@ insert_breakpoints (void)
> if (b->enable_state == bp_permanent)
> /* Permanent breakpoints cannot be inserted or removed. */
> continue;
> - else if (b->type != bp_watchpoint
> + if ((b->type == bp_watchpoint
> + || b->type == bp_hardware_watchpoint
> + || b->type == bp_read_watchpoint
> + || b->type == bp_access_watchpoint) && (!b->val)) {
> + struct value *val;
> + val = evaluate_expression (b->exp);
> + release_value (val);
> + if (VALUE_LAZY (val))
> + value_fetch_lazy (val);
> + b->val = val;
> + }
> + if (b->type != bp_watchpoint
> && b->type != bp_hardware_watchpoint
> && b->type != bp_read_watchpoint
> && b->type != bp_access_watchpoint
> @@ -1520,6 +1531,14 @@ breakpoint_init_inferior (enum inf_conte
> /* Likewise for watchpoints on local expressions. */
> if (b->exp_valid_block != NULL)
> delete_breakpoint (b);
> + if (context == inf_starting)
> + {
> + /* Reset val field to force reread of starting value
> + in insert_breakpoints. */
> + if (b->val)
> + value_free (b->val);
> + b->val = NULL;
> + }
> break;
> default:
> /* Likewise for exception catchpoints in dynamic-linked
>
> Pierre Muller
> Institut Charles Sadron
> 6,rue Boussingault
> F 67083 STRASBOURG CEDEX (France)
> mailto:muller@ics.u-strasbg.fr
> Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99
>
> Pierre Muller
> Institut Charles Sadron
> 6,rue Boussingault
> F 67083 STRASBOURG CEDEX (France)
> mailto:muller@ics.u-strasbg.fr
> Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA] 2nd send: Solve the watchpoint failures on second run.
2002-08-29 15:16 ` Michael Snyder
@ 2002-08-30 2:15 ` Pierre Muller
0 siblings, 0 replies; 3+ messages in thread
From: Pierre Muller @ 2002-08-30 2:15 UTC (permalink / raw)
To: Michael Snyder; +Cc: gdb-patches, jimb
At 00:13 30/08/2002 , Michael Snyder a écrit:
>Pierre Muller wrote:
> >
> > I got no answer to that RFA,
> > http://sources.redhat.com/ml/gdb-patches/2002-06/msg00394.html
> > thus I send it again.
> >
> > This bug is related to bug 515 of database.
> > The following note:
> > >(This patch, together with the previous RFA that I sent today,
> > >fixes the problem for both statically and dynamically linked
> > >programs).
> > Can be modified into:
> > The following patch together with the patch commited
> > on july 4. 2002
> > http://sources.redhat.com/ml/gdb-cvs/2002-07/msg00036.html
> > fiwes bug 515 both for statically and dynamically linked programs.
> >
> > If you use my previous patch and compile the test program
> > of the 515 bug with --static option,
> > you will still miss the change of x value on the second run.
> > This comes from the fact that the val field of the watchpoint is
> > not reset correctly when the program is restarted.
> >
> > I first tried to fix this problem by using evaluate_expression
> > in the breakpoint_init_inferior function. But, while this fixes the problem for
> > the win32 native debugger, it leads to problems for linux,
> > beacuse the program is not yet loaded into memory
> > when this function is called: instead, the bash used for launch the debuggee
> > seems to be in memory...
> >
> > So the only way I found to fix that error was to reset val field to NULL
> > so that the val field is computed again
> > correctly at the first insert_breakpoint call.
>
>Looks OK to me, Pierre -- except please move the '{' from
>the end of the line.
>
>Thanks
>Michael
OK I commited the following:
2002-08-30 Pierre Muller <muller@ics.u-strasbg.fr>
* breakpoint.c (breakpoint_init_inferior): Reset the val field of
watchpoints to NULL.
(insert_breakpoints): set val field of watchpoints if NULL.
$ cvs diff -u -p breakpoint.c
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.84
diff -u -p -r1.84 breakpoint.c
--- breakpoint.c 27 Aug 2002 19:06:35 -0000 1.84
+++ breakpoint.c 30 Aug 2002 07:12:26 -0000
@@ -738,7 +738,19 @@ insert_breakpoints (void)
if (b->enable_state == bp_permanent)
/* Permanent breakpoints cannot be inserted or removed. */
continue;
- else if (b->type != bp_watchpoint
+ if ((b->type == bp_watchpoint
+ || b->type == bp_hardware_watchpoint
+ || b->type == bp_read_watchpoint
+ || b->type == bp_access_watchpoint) && (!b->val))
+ {
+ struct value *val;
+ val = evaluate_expression (b->exp);
+ release_value (val);
+ if (VALUE_LAZY (val))
+ value_fetch_lazy (val);
+ b->val = val;
+ }
+ if (b->type != bp_watchpoint
&& b->type != bp_hardware_watchpoint
&& b->type != bp_read_watchpoint
&& b->type != bp_access_watchpoint
@@ -1566,6 +1578,14 @@ breakpoint_init_inferior (enum inf_conte
/* Likewise for watchpoints on local expressions. */
if (b->exp_valid_block != NULL)
delete_breakpoint (b);
+ if (context == inf_starting)
+ {
+ /* Reset val field to force reread of starting value
+ in insert_breakpoints. */
+ if (b->val)
+ value_free (b->val);
+ b->val = NULL;
+ }
break;
default:
/* Likewise for exception catchpoints in dynamic-linked
Pierre Muller
Institut Charles Sadron
6,rue Boussingault
F 67083 STRASBOURG CEDEX (France)
mailto:muller@ics.u-strasbg.fr
Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-08-30 7:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-15 8:10 [RFA] 2nd send: Solve the watchpoint failures on second run Pierre Muller
2002-08-29 15:16 ` Michael Snyder
2002-08-30 2:15 ` Pierre Muller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox