From: Daniel Jacobowitz <drow@mvista.com>
To: gdb@sources.redhat.com
Subject: i386-linux signal backtraces broken
Date: Thu, 10 Oct 2002 11:46:00 -0000 [thread overview]
Message-ID: <20021010184739.GA15971@nevyn.them.org> (raw)
Right now, we have this:
static int
i386_linux_pc_in_sigtramp (CORE_ADDR pc, char *name)
{
if (name)
return STREQ ("__restore", name) || STREQ ("__restore_rt", name);
return (i386_linux_sigtramp_start (pc) != 0
|| i386_linux_rt_sigtramp_start (pc) != 0);
}
There's only one problem here. On my desktop (Debian GNU/Linux, glibc
2.2.5), there are two copies of sigaction in a dynamically linked
executable. One of them's in libc.so.6 and the other is in ld-linux.so.2.
The only __restore symbol we find is in ld-linux.so.2; this seems to be
because we leave a symbol table in ld-linux.so.2 (probably for the
debugger's benefit, so that it can find _dl_debug_state) - but we strip
libc.so.6.
Unfortunately, the application gets the copy of __restore that is in
libc.so.6. Which is right after a function whose name appears in the
dynamic symbol table (sigaction). So it's considered to be part of
sigaction, and NAME is "sigaction".
If you statically link the application, everything works fine.
We have two choices, that I see:
- Call the code inspection functions always
- Call the code inspection functions if the name is sigaction, taking
advantage of the glibc implementation detail that sigaction is the
only exported name for this function that I can see, and they are
implemented right after it in the same file.
Option (A) is a performance hit. Option (B) is, well, a little fragile.
Thoughts?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
next reply other threads:[~2002-10-10 18:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-10 11:46 Daniel Jacobowitz [this message]
2002-10-10 12:06 ` Kevin Buettner
2002-10-10 12:11 ` Daniel Jacobowitz
2002-10-12 10:50 ` Mark Kettenis
2002-10-12 10:55 ` 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=20021010184739.GA15971@nevyn.them.org \
--to=drow@mvista.com \
--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