Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Lukas Heiniger <lukas.heiniger@fela.ch>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb@sources.redhat.com
Subject: Re: SIGTRAP or SIG32 when remote debugging threads
Date: Thu, 25 Mar 2004 14:29:00 -0000	[thread overview]
Message-ID: <200403251129.32860.lukas.heiniger@fela.ch> (raw)
In-Reply-To: <20040324150746.GA26874@nevyn.them.org>

On Wednesday 24 March 2004 16:07, Daniel Jacobowitz wrote:
> On Wed, Mar 24, 2004 at 04:03:13PM +0100, Lukas Heiniger wrote:
> > On Wednesday 24 March 2004 15:39, Daniel Jacobowitz wrote:
> > > On Wed, Mar 24, 2004 at 02:11:16PM +0100, Lukas Heiniger wrote:
> > > > It looks like setting and hitting the shlib event breakpoint works.
> > >
> > > Not to me.  Is 0x40002570 the shlib event breakpoint, and if so, why
> > > are you stopped there instead of at the first instruction in the
> > > program?
> >
> > According to 'maint info breakpoints' (you can find it approximately in
> > the middle of my last session) the shlib event breakpoint is located at
> > 0x4000c3fc. After entering 'continue', gdb seems to set a breakpoint
> > there. The instruction is restored after SIG32 has been received.
> >
> > I think that 0x40002570 actually is the first instruction in the program.
>
> In that case the breakpoint was not hit, just set, according to your
> log.


Yeah, you're right (of course). Let me see if I got the mechanisms right (I 
hope I don't go to much into details):

1. When I start the gdb (i.e. when I type 'target remote /dev/ttyS0'), it will 
try to set a break point in the dynamic linker (creating an inferior hook). 
When this special breakpoint was hit, gdb would examine the linker and load 
in any shared libs.

2. Setting the shlib bp is done by enable_break. enable_break first assumes 
that the target is running 

(is this the case in remote debugging ?) 

and tries to get the dynamic linker base from the shared library table. This 
fails because the inferior returns 0 for the debug_base in svr4_current_sos.
So (comment from the code): /* Otherwise we find the dynamic linker's base 
address by examining	 the current pc (which should point at the entry point 
for the dynamic linker) and subtracting the offset of the entry point. */

(Isn't pc pointing at the first instruction of the program?)

so enable_break calculates some value for the breakpoint, which in my case is 
0x4000c3fc. For whatever reason this bp is not hit before the SIG32 appears. 
If this really is the problem, I have no Idea what I could do about it.

3. After the SIG32 has appeared, I set the solib-absolute-prefix again. This 
time the call to svr4_current_sos returns a non-zero value for the debug_base 
and gdb is able to load all the libs.

Lukas Heiniger



  reply	other threads:[~2004-03-25 10:29 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-19 17:30 Lukas Heiniger
2004-03-19 18:31 ` Daniel Jacobowitz
2004-03-22 13:21   ` Lukas Heiniger
2004-03-22 17:33     ` Daniel Jacobowitz
2004-03-23 19:25       ` Lukas Heiniger
2004-03-23 20:41         ` Daniel Jacobowitz
2004-03-24 14:44           ` Lukas Heiniger
2004-03-24 14:54             ` Daniel Jacobowitz
2004-03-24 15:09               ` Lukas Heiniger
2004-03-24 15:44                 ` Daniel Jacobowitz
2004-03-25 14:29                   ` Lukas Heiniger [this message]
2004-03-25 15:37                     ` Daniel Jacobowitz

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=200403251129.32860.lukas.heiniger@fela.ch \
    --to=lukas.heiniger@fela.ch \
    --cc=drow@false.org \
    --cc=gdb@sources.redhat.com \
    /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