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.3 bug


On Wed, Mar 05, 2003 at 07:07:41PM +0300, Lev Assinovsky wrote:
> Yes, it does:
> ----------
> (gdb) set stop-on-solib-events 1
> (gdb) r
> Starting program: /export/home/lev/src/Installation/packages/Personal/LevAssinovsky/virtfun/load 
> warning: Unable to find dynamic linker breakpoint function.
> GDB will be unable to debug shared library initializers
> and track explicitly loaded dynamic code.
> Stopped due to shared library event
> -----------
> But what the warning mean?

That's the problem.  You'll have to figure out why the symbol it's
looking for is missing from your dynamic linker.  It's looking for one
of these:
  "r_debug_state",
  "_r_debug_state",
  "_dl_debug_state",
  "rtld_db_dlactivity",
  "_rtld_debug_state",


> 
> Sincerely,
> ----
> Lev Assinovsky
> Aelita Software Corporation
> O&S Core Division, Programmer
> ICQ# 165072909
> 
> 
> > -----Original Message-----
> > From: Daniel Jacobowitz [mailto:drow at mvista dot com]
> > Sent: Wednesday, March 05, 2003 6:57 PM
> > To: Lev Assinovsky
> > Cc: gdb at sources dot redhat dot com
> > Subject: Re: gdb 5.3 bug
> > 
> > 
> > I don't know.  Does "set stop-on-solib-events 1" cause your program to
> > stop?
> > 
> > On Wed, Mar 05, 2003 at 05:27:09PM +0300, Lev Assinovsky wrote:
> > > Daniel!
> > > I was wrong!
> > > I can step into the function of dynamic library if 
> > > I run the command "sharedlibrary" before.
> > > Why are symbols coming in only after that command
> > > and auto-solib-add (=on) doesn't work?  
> > > 
> > > ----
> > > Lev Assinovsky
> > > Aelita Software Corporation
> > > O&S Core Division, Programmer
> > > ICQ# 165072909
> > > 
> > > 
> > > > -----Original Message-----
> > > > From: Daniel Jacobowitz [mailto:drow at mvista dot com]
> > > > Sent: Saturday, March 01, 2003 7:05 PM
> > > > To: Lev Assinovsky
> > > > Cc: gdb at sources dot redhat dot com
> > > > Subject: Re: gdb 5.3 bug
> > > > 
> > > > 
> > > > On Sat, Mar 01, 2003 at 06:59:45PM +0300, Lev Assinovsky wrote:
> > > > > Dear Daniel!
> > > > > Thank you very match for your advise!
> > > > > Snapshot gdb+dejagnu-20030228 works just fine!
> > > > > Thank a lot all guys who is involved in gdb development. 
> > > > > I am sorry but I have to bother you with another gdb problem.
> > > > > The problem is I can't step into the function through 
> > the pointer
> > > > > if the function resides in dynamically loaded shared object 
> > > > (library).
> > > > > Here is the simple test case:
> > > > 
> > > > Hmm.  Your testcase works on GNU/Linux, so it must be related to
> > > > i386-solaris shared library support.  Maybe someone else 
> > on the list
> > > > can help.
> > > > 
> > > > > 
> > > > > 1. Shared object:
> > > > > ---------- cut here --------
> > > > > #include <iostream>
> > > > > using namespace std;
> > > > > 
> > > > > extern "C" {
> > > > >     void my_func()
> > > > >     {
> > > > >         cout << "This is my_func" << endl;
> > > > >     }
> > > > > 
> > > > > }
> > > > > ---------- cut here --------
> > > > > 2. Main:
> > > > > #include <iostream>
> > > > > #include <memory>
> > > > > #include <dlfcn.h>
> > > > > #include <link.h>
> > > > > 
> > > > > using namespace std;
> > > > > 
> > > > > void * handle;
> > > > > 
> > > > > typedef void  ( *Func_t)();
> > > > > 
> > > > > Func_t getFunc() 
> > > > > {
> > > > >     Func_t p = (Func_t)dlsym ( handle, "my_func" );
> > > > >     if ( NULL == p )
> > > > >     {
> > > > >         cout << dlerror() << endl;
> > > > >         exit(2);
> > > > >     }
> > > > >     return p;
> > > > > }
> > > > > 
> > > > > int main()
> > > > > {
> > > > >     handle = (void*) 
> > > > ::dlopen("./func_so/bin/i386-sun-solaris/func_so.so", 
> > > > RTLD_NOW | RTLD_LOCAL | RTLD_GROUP);
> > > > >     if (handle == NULL)
> > > > >     {
> > > > >         cout << dlerror() << endl;
> > > > >         exit(2);
> > > > >     }
> > > > > 
> > > > >     Func_t f = getFunc();
> > > > >     f();
> > > > > }
> > > > > ---------- cut here --------
> > > > > 
> > > > > This testcase works, but I can't step into f() (last 
> > line) in gdb.
> > > > > Is it possible to work around or fix this problem?
> > > > > Thanks in advance!
> > > > > 
> > > > > ----
> > > > > Lev Assinovsky
> > > > > Aelita Software Corporation
> > > > > O&S Core Division, Programmer
> > > > > ICQ# 165072909
> > > > > 
> > > > > 
> > > > > > -----Original Message-----
> > > > > > From: Daniel Jacobowitz [mailto:drow at mvista dot com]
> > > > > > Sent: Friday, February 28, 2003 8:19 PM
> > > > > > To: Lev Assinovsky; gdb at sources dot redhat dot com
> > > > > > Subject: Re: gdb 5.3 bug
> > > > > > 
> > > > > > 
> > > > > > On Thu, Feb 27, 2003 at 02:09:30PM -0500, Daniel 
> > Jacobowitz wrote:
> > > > > > > On Thu, Feb 27, 2003 at 09:11:14PM +0300, Lev 
> > Assinovsky wrote:
> > > > > > > > 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 "i386-pc-solaris2.8"...
> > > > > > > > (gdb) l
> > > > > > > > 
> > > > > > > > Program received signal SIGSEGV, Segmentation fault.
> > > > > > > > 0x08136671 in finish_block (symbol=0x6e5f5f3a, 
> > > > > > listhead=0x82241f4, old_blocks=0x3a787863, start=1634562671, 
> > > > > > > >     end=1634562720, objfile=0x8263fe0) at buildsym.c:304
> > > > > > > > 304           struct type *ftype = SYMBOL_TYPE (symbol);
> > > > > > > > (gdb) 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > Any clue what might be the reason of gdb crash?
> > > > > > > 
> > > > > > > OK, the value of "symbol" is obviously wrong.  Could you 
> > > > > > privately send
> > > > > > > me the binary?  If that's not possible, at least a 
> > > > > > backtrace would be
> > > > > > > useful...
> > > > > > 
> > > > > > 
> > > > > > Lev,
> > > > > > 
> > > > > > You're in luck, this has already been fixed.  It appears to 
> > > > > > be a bug in
> > > > > > the Sun compilers - it outputs end-of-function 
> > markers without a
> > > > > > corresponding beginning-of-function marker.  If you get a 
> > > > GDB snapshot
> > > > > > from CVS (http://sources.redhat.com/gdb/) it should handle 
> > > > > > your program
> > > > > > gracefully.
> > > > > > 
> > > > > > -- 
> > > > > > Daniel Jacobowitz
> > > > > > MontaVista Software                         Debian 
> > > > GNU/Linux Developer
> > > > > > 
> > > > > 
> > > > 
> > > > -- 
> > > > Daniel Jacobowitz
> > > > MontaVista Software                         Debian 
> > GNU/Linux Developer
> > > > 
> > > 
> > 
> > -- 
> > Daniel Jacobowitz
> > MontaVista Software                         Debian GNU/Linux Developer
> > 
> 

-- 
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]