This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] scope_breakpoint -> internal breakpoint
- From: Michael Snyder <msnyder at redhat dot com>
- To: Keith Seitz <keiths at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 20 Aug 2002 12:38:31 -0700
- Subject: Re: [RFA] scope_breakpoint -> internal breakpoint
- Organization: Red Hat, Inc.
- References: <Pine.LNX.4.44.0208201122180.1421-100000@valrhona.uglyboxes.com>
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;
>