From d9f8c85b8e4983b7a62abf5affa8030bcfee692e Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Fri, 9 Apr 2004 23:15:53 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 7 +++++++ gdb/Makefile.in | 2 +- gdb/i386-sol2-tdep.c | 12 +++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 023b19bc91f..764a05cbac3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2004-04-10 Mark Kettenis + + * 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. + 2004-04-10 Mark Kettenis * i386-sol2-tdep.c: Include "solib-svr4.h". diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 30a357e7f0f..fd182606e70 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1877,7 +1877,7 @@ i386obsd-tdep.o: i386obsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \ $(osabi_h) $(target_h) $(gdb_assert_h) $(gdb_string_h) \ $(i386_tdep_h) $(i387_tdep_h) $(solib_svr4_h) i386-sol2-tdep.o: i386-sol2-tdep.c $(defs_h) $(value_h) $(osabi_h) \ - $(i386_tdep_h) $(solib_svr4_h) + $(gdb_string_h) $(i386_tdep_h) $(solib_svr4_h) i386-stub.o: i386-stub.c i386-tdep.o: i386-tdep.c $(defs_h) $(arch_utils_h) $(command_h) \ $(dummy_frame_h) $(dwarf2_frame_h) $(doublest_h) $(floatformat_h) \ diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c index 698066fa901..46a7a7c6caf 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 -- 2.30.2