logo       

[rfa:breakpoint] Correctly count watchpoints: msg#00738

Subject: [rfa:breakpoint] Correctly count watchpoints
Hello,

The attached modifies breakpoint.c so that (I think) it correctly counts the number of watchpoint resources in use.

(per earlier post) An expression like:

        a + b

requires two watchpoint resources (&a and &b). When first creating the watchpoint, gdb correctly counts this as two. However, when GDB goes back to compute the number of watchpoints already used, it does a re-count and treats the above (and any watchpoint expression) as only one.

The attached, I belive, fixes this by saving the mem_cnt that was computed.

One thing I wonder about though, should ``info breakpoints'' or ``maint info breakpoints'' display this info?

Ok?
Andrew
2002-09-29  Andrew Cagney  <ac131313@xxxxxxxxxx>

        * breakpoint.c (watch_command_1): Save mem_cnt in watchpoint.
        (hw_watchpoint_used_count): Accumulate the mem_cnt's
        * breakpoint.h: Update copyright.
        (struct breakpoint): Add field mem_cnt;

Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.90
diff -u -r1.90 breakpoint.c
--- breakpoint.c        22 Sep 2002 20:29:52 -0000      1.90
+++ breakpoint.c        30 Sep 2002 03:09:42 -0000
@@ -4288,13 +4288,15 @@
   {
     if (b->enable_state == bp_enabled)
       {
-       if (b->type == type)
-         i++;
-       else if ((b->type == bp_hardware_watchpoint ||
-                 b->type == bp_read_watchpoint ||
-                 b->type == bp_access_watchpoint)
-                && b->enable_state == bp_enabled)
-         *other_type_used = 1;
+       if (b->type == bp_hardware_watchpoint
+           || b->type == bp_read_watchpoint
+           || b->type == bp_access_watchpoint)
+         {
+           if (b->type == type)
+             i += b->mem_cnt;
+           else
+             *other_type_used = 1;
+         }
       }
   }
   return i;
@@ -5384,6 +5386,7 @@
   b->exp_valid_block = exp_valid_block;
   b->exp_string = savestring (exp_start, exp_end - exp_start);
   b->val = val;
+  b->mem_cnt = mem_cnt;
   b->cond = cond;
   if (cond_start)
     b->cond_string = savestring (cond_start, cond_end - cond_start);
Index: breakpoint.h
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.h,v
retrieving revision 1.13
diff -u -r1.13 breakpoint.h
--- breakpoint.h        16 Aug 2002 15:37:54 -0000      1.13
+++ breakpoint.h        30 Sep 2002 03:11:51 -0000
@@ -1,6 +1,7 @@
 /* Data structures associated with breakpoints in GDB.
-   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
-   Free Software Foundation, Inc.
+
+   Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+   2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -260,6 +261,11 @@
     struct block *exp_valid_block;
     /* Value of the watchpoint the last time we checked it.  */
     struct value *val;
+
+    /* Count of memory watchpoint resources needed.  An expression can
+       refer to more than one location and hence may require more than
+       one memory watchpoint.  */
+    int mem_cnt;
 
     /* Holds the value chain for a hardware watchpoint expression.  */
     struct value *val_chain;
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
linux.arklinux....    user-groups.lin...    kde.usability/2...    ietf.ipp/2002-0...    mail.spam.spamc...    os.netbsd.devel...    audio.cd-record...    text.unicode.de...    php.documentati...    games.fps.halfl...    window-managers...    suse.oracle.gen...    bug-tracking.gn...    video.dvdrip.us...    xfree86.cvs/200...    java.netbeans.m...    network.argus/2...    culture.sf.kill...    debian.ports.al...    freebsd.questio...    qplus.devel/200...    handhelds.palm....   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe