Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* i386-linux signal backtraces broken
@ 2002-10-10 11:46 Daniel Jacobowitz
  2002-10-10 12:06 ` Kevin Buettner
  2002-10-12 10:50 ` Mark Kettenis
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel Jacobowitz @ 2002-10-10 11:46 UTC (permalink / raw)
  To: gdb

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-10-12 17:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-10 11:46 i386-linux signal backtraces broken Daniel Jacobowitz
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox