This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: GDB 5.2/5.3 breakpoint bug


Hi,

While debugging this in function, find_pc_sect_line (CORE_ADDR pc, struct
sec *section, int notcurrent)
I found there were two line items in a line table with the same value of PC.
First one gets picked as the best match. But this had item->line == 0. The
next line item with the same value for item->pc, but a valid item->line ( >
0) does not get picked as the best match.
I put in the following check to correct this. My question is,
Is it valid to have have more than one line item with same value faor PC and
possibly 0 for line in one of them? What causes this?
Would this be an appropriate fix? Or is the problem more deep rooted in
creating the symbol table?

Sunil




--- ../original/gdb-5.3/gdb/symtab.c       Thu Aug 29 20:24:00 2002
+++ gdb-5.3/gdb/symtab.c        Tue Jan  7 14:42:34 2003
@@ -1950,6 +1950,21 @@
            best_end = 0;
        }

+      /* Handle the case where the prev->pc == best->pc due to more than
one line
+        items for a pc, but the best->line == 0. grab a better match if one
exists
+        that has a non zero line number  */
+
+      else if (prev && (!best || ((prev->pc == best->pc) && (best->line ==
0)
+                                 && (prev->line != 0))))
+       {
+         best = prev;
+         best_symtab = s;
+
+         /* Discard BEST_END if it's before the PC of the current BEST.  */
+         if (best_end <= best->pc)
+           best_end = 0;
+       }
+
       /* If another line (denoted by ITEM) is in the linetable and its
          PC is after BEST's PC, but before the current BEST_END, then
         use ITEM's PC as the new best_end.  */


-----Original Message-----
From: gdb-owner@sources.redhat.com
[mailto:gdb-owner@sources.redhat.com]On Behalf Of Sunil Alankar
Sent: Sunday, January 05, 2003 3:11 PM
To: Daniel Jacobowitz
Cc: gdb@sources.redhat.com
Subject: RE: GDB 5.2/5.3 breakpoint bug


Correction to the link for the systemc library sources:

http://www.systemc.org/download.php/systemc/13/19/systemc-2.0.1.tgz

Thx

Sunil

-----Original Message-----
From: gdb-owner@sources.redhat.com
[mailto:gdb-owner@sources.redhat.com]On Behalf Of Sunil Alankar
Sent: Sunday, January 05, 2003 3:07 PM
To: Daniel Jacobowitz
Cc: gdb@sources.redhat.com
Subject: RE: GDB 5.2/5.3 breakpoint bug


I guess the e-mail with the attachment of library and include files was not
delivered. Here it is without attachments.
The sources for the systemc library/include files are at
http://www.systemc.org/download.php/systemc/1/4/systemc-1.0.2.tar.gz
Sunil

-----Original Message-----
From: Sunil Alankar [mailto:sunil.alankar@coware.com]
Sent: Sunday, January 05, 2003 2:48 PM
To: Daniel Jacobowitz
Cc: gdb@sources.redhat.com
Subject: RE: GDB 5.2/5.3 breakpoint bug


Hi,
  I have a detailed description of the problem here. Hope this would help. I
appreciate your help.

Thank you

Sunil


Problem:
Unable to set class method breakpoints in solaris with gdb 5.3 while using
systemc
library in the program.

Platform:
SunOS tesla 5.7 Generic_106541-23 sun4u sparc SUNW,Ultra-4

g++ version:
Reading specs from
/eng/devtools/SunOS_5.7/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/specs
gcc version 2.95.2 19991024 (release)

gdb version:
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.7".


Test program:

This error occured while I am debugging a systemC (c++ library for system
design) program.
Here is a small example program that demonstrates the problem. ( I have
attached the
required library for solaris and include files with the e-mail)

//-------------------------------------------------------------
#include <systemc.h>

SC_MODULE(top)
{
 public:

    sc_in_clk iclk;

    void func()
        {
            printf (".");
        }

    SC_CTOR(top)
        {
            SC_METHOD(func);
            sensitive_pos << iclk;
            dont_initialize();
        }
};

int sc_main (int argc , char *argv[])
{
    sc_clock clk("clk", 20);
    top *top1 = new top("Top1");
    top1->iclk(clk);
    sc_start(20000);
    return 0;
}

//-------------------------------------------------------------

Build the example with:
% g++ -g -I./include -L./ -lm test1.cpp -lsystemc -o tx

%/home1/gdb-5.3/gdb/gdb tx
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.7"...
(gdb) b top::func
the class top does not have any method named func
Hint: try 'top::func<TAB> or 'top::func<ESC-?>
(Note leading single quote.)
(gdb)


In some systemC programs, gdb attempts to set breakpoints at invalid
addresses.

This works without a problem in gdb 5.1 with proper breakpoint being set.



I hope this test case can provide sufficient ground to get at the problem.




-----Original Message-----
From: Daniel Jacobowitz [mailto:drow@mvista.com]
Sent: Friday, January 03, 2003 6:23 PM
To: Sunil Alankar
Cc: gdb@sources.redhat.com
Subject: Re: GDB 5.2/5.3 breakpoint bug


On Fri, Jan 03, 2003 at 06:15:26PM -0800, Sunil Alankar wrote:
> Hi,
>
>  Attempting to set a class member function breakpoint (say break
> myClass::funcOne) fails to set a proper break point in solaris 2.7.
> This happens with GDB 5.2 and 5.3. Bug does not occur in GDB 5.1. Anybody
> has any idea where to look?. I would appreciate any help.

What _does_ happen if it isn't a proper breakpoint?  Can you provide a
transcript?

What version of what compiler are you using?

--
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]