This is the mail archive of the gdb-patches@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: patch to add QNX NTO i386 support


On Thu, Feb 13, 2003 at 04:56:58PM -0500, Kris Warkentin wrote:
> > > #define HANDLE_SVR4_EXEC_EMULATORS 1
> > > #include "solib.h" /* shared lib support */
> >
> > Including solib.h is fine.  However I wonder why you need
> > HANDLE_SVR4_EXEC_EMULATORS.  AFAIK this deals with Solaris BCP
> > (running SunOS 4 a.out files on Solaris 2 a.k.a. SunOS 5).  What is
> > its relevance on QNX?  Could this be the reason that you need to set
> > SOLIB_BKPT_NAME?
> 
> I've discovered why HANDLE_SVR4_EXEC_EMULATORS is needed but I'm not sure of
> the correct way to fix it.  The relevant code is from solib-svr4.c below.  A
> typical remote qnx debugging session would be something like this:
> 
> kewarken@CATDOG ~/test
> $ ntox86-gdb
> GNU gdb 5.2.1qnx-326 QNX Neutrino 6.2.1
> 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 "--host=i686-pc-cygwin --target=ntox86".
> (gdb) target qnx ren:10000
> Remote debugging using ren:10000
> (gdb) sym blah
> Reading symbols from blah...done.

Silly question - why not say "file blah" here?  That'll set exec_bfd,
and you'll be just fine.

If I'm right, and you want to support the above sequence, you could
probably locally make sym set the exec file, if none was set.

> (gdb) upload blah /tmp/blah
> (gdb) r /tmp/blah
> Starting program:  /tmp/blah
> (gdb) b main
> Breakpoint 1 at 0x8048402: file blah.c, line 10.
> (gdb) c
> Continuing.
> 
> Breakpoint 1, main () at blah.c:10
> 10              func();
> 
> The problem that we're running into is that exec_bfd is NULL in the code
> below so we fall back on the 'hard way' which is not really necessary (if
> exec_bfd is set).  On the native qnx gdb, this isn't a problem because
> exec_bfd is set when main() calls attach_command() which calls
> exec_file_attach().  What I'd like to know is at what point should I stuff
> exec_bfd?  In the case of remote debugging, the file with the symbols is
> '/home/kewarken/test/blah' and the file being run (on the remote) is
> /tmp/blah.  We need to set exec_bfd to point to the same file as the one
> we've read symbols from but the question is, when and where?

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