Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: John Williams <jwilliams@itee.uq.edu.au>
Cc: gdb@sourceware.org
Subject: Re: Triggering qSymbol packets
Date: Thu, 19 Jan 2006 00:46:00 -0000	[thread overview]
Message-ID: <20060119001944.GA21282@nevyn.them.org> (raw)
In-Reply-To: <43CED634.4050503@itee.uq.edu.au>

On Thu, Jan 19, 2006 at 09:58:44AM +1000, John Williams wrote:
> Hi,
> 
> The short version:
> Is there a way to trigger GDB to issue a remote qSymbol packet, other
> than the "symbol" command?
> 
> The long version:
> I am working on multithreaded gdbserver support for a noMMU
> embedded Linux target (uClinux).  The thread library is linuxthreads
> (and linuxthreads_db) in uClibc 0.9.x.  gdbserver has all of the
> multithreading hooks and proc-service etc.
> 
> The cross-gdb is version 5.3, which should have the necessary remote
> thread code in it.

I strongly recommend an upgrade, as a matter of principle.  The current
version is GDB 6.4 and any answers you get off this list may not apply
well to 5.3.

> gdbserver initialises linuxthreads_db hooks in response to a qSymbol
> packet (generated by the gdb "sym" command).  This necessarily must come
> after initial remote target connection.
> 
> Here's the catch - in uClinux we use qOffset to find out where
> in the flat memory space is the application loaded - qOffset is
> triggered by gdb/remote.c:remote_start_remote()

Right so far...

> To trigger the qSymbol packet (and thus initialise gdbserver's
> linuxthreads_db stuff), requires the gdb "sym" command.

Wrong.  It's triggered (A) on connection to a remote target, and (B)
whenever a new file is loaded.

(A) may be broken or missing in 5.3.

> From my searching, it seems the recommended sequence for gdbserver +
> pthreads should be
> 
> 1. gdb% target remote host:port
> (connect to gdbserver, send qOffset packet, relocate the objfile
> accordingly)
> 2. gdb% sym myapp.elf
> (send qSymbol packet to gdbserver, to initialise the linuxthreads_db)

Incorrect.  Please tell us where you found anything suggesting this.
People keep doing it, and so far, not a one has been able to point to
an incorrect reference (that I remember at the moment, anyway).

The correct sequence is "file" followed by "target remote".  Please try
that instead.

> I'm torn on the cleanest way to fix this, if (1) and (2) are true.  For
> now I've added a call to remote_check_symbols() inside
> remote_start_remote(), after get_offsets(), and that seems to do what I
> expect.  At least it gets further this time, but still doesn't quite work.

Please take a look at the call site for remote_start_remote, in
remote_open_1.

-- 
Daniel Jacobowitz
CodeSourcery


  reply	other threads:[~2006-01-19  0:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-19  0:19 John Williams
2006-01-19  0:46 ` Daniel Jacobowitz [this message]
2006-01-19  0:50   ` John Williams
2006-01-19  1:18     ` Jim Blandy
2006-01-19  3:26     ` Daniel Jacobowitz
2006-01-20  4:42       ` John Williams
2006-01-20 20:29 ` Jie Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060119001944.GA21282@nevyn.them.org \
    --to=drow@false.org \
    --cc=gdb@sourceware.org \
    --cc=jwilliams@itee.uq.edu.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox