Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA] scope_breakpoint -> internal breakpoint
@ 2002-08-20 11:27 Keith Seitz
  2002-08-20 12:55 ` Michael Snyder
  0 siblings, 1 reply; 3+ messages in thread
From: Keith Seitz @ 2002-08-20 11:27 UTC (permalink / raw)
  To: gdb-patches

Hi,

When a watchpoint is set on a local variable, GDB sets a breakpoint of 
type bp_watchpoint_scope to detect when the watchpoint is out of scope.

Right now, it does this using a "user-visible" breakpoint number (>0). 
This patch changes this so that this internal breakpoint is created as an 
internal breakpoint (<0). Section 5.1.2 of the user manual makes no 
mention of this breakpoint, so I am suggesting that we make it one of the 
optionally-displayed internal breakpoints.

I've run this through the testsuite and it introduces no new failures.

Keith

ChangeLog
2002-08-20  Keith Seitz  <keiths@redhat.com>

	* breakpoints.c (watch_command_1): Use internal breakpoint
	when setting a watchpoint_scope breakpoint.

Patch
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.80
diff -p -r1.80 breakpoint.c
*** breakpoint.c	17 Aug 2002 06:12:52 -0000	1.80
--- breakpoint.c	20 Aug 2002 18:19:42 -0000
*************** watch_command_1 (char *arg, int accessfl
*** 5331,5346 ****
        if (prev_frame)
  	{
  	  struct breakpoint *scope_breakpoint;
! 	  struct symtab_and_line scope_sal;
! 
! 	  INIT_SAL (&scope_sal);	/* initialize to zeroes */
! 	  scope_sal.pc = get_frame_pc (prev_frame);
! 	  scope_sal.section = find_pc_overlay (scope_sal.pc);
! 
! 	  scope_breakpoint = set_raw_breakpoint (scope_sal,
! 	                                         bp_watchpoint_scope);
! 	  set_breakpoint_count (breakpoint_count + 1);
! 	  scope_breakpoint->number = breakpoint_count;
  
  	  scope_breakpoint->enable_state = bp_enabled;
  
--- 5331,5338 ----
        if (prev_frame)
  	{
  	  struct breakpoint *scope_breakpoint;
! 	  scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
! 							 bp_watchpoint_scope);
  
  	  scope_breakpoint->enable_state = bp_enabled;
  


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFA] scope_breakpoint -> internal breakpoint
  2002-08-20 11:27 [RFA] scope_breakpoint -> internal breakpoint Keith Seitz
@ 2002-08-20 12:55 ` Michael Snyder
  2002-08-20 13:03   ` Keith Seitz
  0 siblings, 1 reply; 3+ messages in thread
From: Michael Snyder @ 2002-08-20 12:55 UTC (permalink / raw)
  To: Keith Seitz; +Cc: gdb-patches

Keith Seitz wrote:
> 
> Hi,
> 
> When a watchpoint is set on a local variable, GDB sets a breakpoint of
> type bp_watchpoint_scope to detect when the watchpoint is out of scope.
> 
> Right now, it does this using a "user-visible" breakpoint number (>0).
> This patch changes this so that this internal breakpoint is created as an
> internal breakpoint (<0). Section 5.1.2 of the user manual makes no
> mention of this breakpoint, so I am suggesting that we make it one of the
> optionally-displayed internal breakpoints.
> 
> I've run this through the testsuite and it introduces no new failures.
> 
> Keith

Good idea -- approved.

> 
> ChangeLog
> 2002-08-20  Keith Seitz  <keiths@redhat.com>
> 
>         * breakpoints.c (watch_command_1): Use internal breakpoint
>         when setting a watchpoint_scope breakpoint.
> 
> Patch
> Index: breakpoint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/breakpoint.c,v
> retrieving revision 1.80
> diff -p -r1.80 breakpoint.c
> *** breakpoint.c        17 Aug 2002 06:12:52 -0000      1.80
> --- breakpoint.c        20 Aug 2002 18:19:42 -0000
> *************** watch_command_1 (char *arg, int accessfl
> *** 5331,5346 ****
>         if (prev_frame)
>         {
>           struct breakpoint *scope_breakpoint;
> !         struct symtab_and_line scope_sal;
> !
> !         INIT_SAL (&scope_sal);        /* initialize to zeroes */
> !         scope_sal.pc = get_frame_pc (prev_frame);
> !         scope_sal.section = find_pc_overlay (scope_sal.pc);
> !
> !         scope_breakpoint = set_raw_breakpoint (scope_sal,
> !                                                bp_watchpoint_scope);
> !         set_breakpoint_count (breakpoint_count + 1);
> !         scope_breakpoint->number = breakpoint_count;
> 
>           scope_breakpoint->enable_state = bp_enabled;
> 
> --- 5331,5338 ----
>         if (prev_frame)
>         {
>           struct breakpoint *scope_breakpoint;
> !         scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
> !                                                        bp_watchpoint_scope);
> 
>           scope_breakpoint->enable_state = bp_enabled;
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFA] scope_breakpoint -> internal breakpoint
  2002-08-20 12:55 ` Michael Snyder
@ 2002-08-20 13:03   ` Keith Seitz
  0 siblings, 0 replies; 3+ messages in thread
From: Keith Seitz @ 2002-08-20 13:03 UTC (permalink / raw)
  To: gdb-patches

On Tue, 20 Aug 2002, Michael Snyder wrote:

> Good idea -- approved.

Wow, that was quick. Thanks! I've committed this patch.

Keith
 
> > ChangeLog
> > 2002-08-20  Keith Seitz  <keiths@redhat.com>
> > 
> >         * breakpoints.c (watch_command_1): Use internal breakpoint
> >         when setting a watchpoint_scope breakpoint.
> > 
> > Patch
> > Index: breakpoint.c
> > ===================================================================
> > RCS file: /cvs/src/src/gdb/breakpoint.c,v
> > retrieving revision 1.80
> > diff -p -r1.80 breakpoint.c
> > *** breakpoint.c        17 Aug 2002 06:12:52 -0000      1.80
> > --- breakpoint.c        20 Aug 2002 18:19:42 -0000
> > *************** watch_command_1 (char *arg, int accessfl
> > *** 5331,5346 ****
> >         if (prev_frame)
> >         {
> >           struct breakpoint *scope_breakpoint;
> > !         struct symtab_and_line scope_sal;
> > !
> > !         INIT_SAL (&scope_sal);        /* initialize to zeroes */
> > !         scope_sal.pc = get_frame_pc (prev_frame);
> > !         scope_sal.section = find_pc_overlay (scope_sal.pc);
> > !
> > !         scope_breakpoint = set_raw_breakpoint (scope_sal,
> > !                                                bp_watchpoint_scope);
> > !         set_breakpoint_count (breakpoint_count + 1);
> > !         scope_breakpoint->number = breakpoint_count;
> > 
> >           scope_breakpoint->enable_state = bp_enabled;
> > 
> > --- 5331,5338 ----
> >         if (prev_frame)
> >         {
> >           struct breakpoint *scope_breakpoint;
> > !         scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
> > !                                                        bp_watchpoint_scope);
> > 
> >           scope_breakpoint->enable_state = bp_enabled;
> >
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-08-20 20:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-20 11:27 [RFA] scope_breakpoint -> internal breakpoint Keith Seitz
2002-08-20 12:55 ` Michael Snyder
2002-08-20 13:03   ` Keith Seitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox