diff options
author | Mark Kettenis <kettenis@gnu.org> | 2004-04-09 23:15:53 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2004-04-09 23:15:53 +0000 |
commit | d9f8c85b8e4983b7a62abf5affa8030bcfee692e (patch) | |
tree | d16780152b5fbcbb7fae4f89040cebb1d81bffa8 /gdb/i386-sol2-tdep.c | |
parent | 75f501b5c965bbd68d7d64a29ab8db05a0c12f0b (diff) | |
download | gdb-d9f8c85b8e4983b7a62abf5affa8030bcfee692e.zip gdb-d9f8c85b8e4983b7a62abf5affa8030bcfee692e.tar.gz gdb-d9f8c85b8e4983b7a62abf5affa8030bcfee692e.tar.bz2 |
* i386-sol2-tdep.c: Include "gdb_string.h".
(i386_sol2_sigtramp_p): Recognize signal trampoline based on its
name.
* Makefile.in (i386-sol2-tdep.o): Update dependencies.
Diffstat (limited to 'gdb/i386-sol2-tdep.c')
-rw-r--r-- | gdb/i386-sol2-tdep.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c index 698066f..46a7a7c 100644 --- a/gdb/i386-sol2-tdep.c +++ b/gdb/i386-sol2-tdep.c @@ -23,6 +23,8 @@ #include "value.h" #include "osabi.h" +#include "gdb_string.h" + #include "i386-tdep.h" #include "solib-svr4.h" @@ -47,14 +49,18 @@ static int i386_sol2_gregset_reg_offset[] = 0 * 4 /* %gs */ }; +/* Return whether the frame preceding NEXT_FRAME corresponds to a + Solaris sigtramp routine. */ + static int i386_sol2_sigtramp_p (struct frame_info *next_frame) { CORE_ADDR pc = frame_pc_unwind (next_frame); + char *name; - /* Signal handler frames under Solaris 2 are recognized by a return - address of 0xffffffff. */ - return (pc == 0xffffffff); + find_pc_partial_function (pc, &name, NULL, NULL); + return (name && (strcmp ("sigacthandler", name) == 0 + || strcmp (name, "ucbsigvechandler") == 0)); } /* Solaris doesn't have a `struct sigcontext', but it does have a |