* Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
authorJason Thorpe <thorpej@netbsd.org>
Sat, 31 Aug 2002 22:43:38 +0000 (22:43 +0000)
committerJason Thorpe <thorpej@netbsd.org>
Sat, 31 Aug 2002 22:43:38 +0000 (22:43 +0000)
list.
* alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
(alphanbsd_skip_sigtramp_frame): New functions.
(alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
alphanbsd_skip_sigtramp_frame.  Set tdep->sigcontext_addr
to alphanbsd_sigcontext_addr.

gdb/ChangeLog
gdb/Makefile.in
gdb/alphanbsd-tdep.c

index cbb735580e06ca1137e70c459155af96298df4f9..78b73c853da904d891afacd2bf08648217fb6d74 100644 (file)
@@ -1,3 +1,13 @@
+2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>
+
+       * Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
+       list.
+       * alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
+       (alphanbsd_skip_sigtramp_frame): New functions. 
+       (alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
+       alphanbsd_skip_sigtramp_frame.  Set tdep->sigcontext_addr
+       to alphanbsd_sigcontext_addr. 
+
 2002-08-31  Jason Thorpe  <thorpej@wasabisystems.com>
 
        * Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency
index 1c9a327edddf3ef6162081149a7b9a7fb4ce1c92..55838c6b91e0a11b46e102a09bff29472768e305 100644 (file)
@@ -1500,9 +1500,9 @@ alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
 alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(regcache_h) $(alpha_tdep_h) \
        $(alphabsd_tdep_h)
 alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(alpha_tdep_h)
-alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
-       $(value_h) $(solib_svr4_h) $(alpha_tdep_h) $(alphabsd_tdep_h) \
-       $(nbsd_tdep_h)
+alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
+       $(regcache_h) $(value_h) $(solib_svr4_h) $(alpha_tdep_h) \
+       $(alphabsd_tdep_h) $(nbsd_tdep_h)
 annotate.o: annotate.c $(defs_h) $(annotate_h) $(value_h) $(target_h) \
        $(gdbtypes_h) $(breakpoint_h)
 # OBSOLETE arc-tdep.o: arc-tdep.c
index a3a1f532a03f407e9bb27cf13c61e97d9c283615..bc7b1a410dbf0b85b9913ca9d36618f56e7817c0 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "defs.h"
 #include "gdbcore.h"
+#include "frame.h"
 #include "regcache.h"
 #include "value.h"
 
@@ -182,6 +183,29 @@ alphanbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
          || alphanbsd_sigtramp_offset (pc) >= 0);
 }
 
+static CORE_ADDR
+alphanbsd_sigcontext_addr (struct frame_info *frame)
+{
+  /* FIXME: This is not correct for all versions of NetBSD/alpha.
+     We will probably need to disassemble the trampoline to figure
+     out which trampoline frame type we have.  */
+  return frame->frame;
+}
+
+static CORE_ADDR
+alphanbsd_skip_sigtramp_frame (struct frame_info *frame, CORE_ADDR pc)
+{
+  char *name;
+
+  /* FIXME: This is not correct for all versions of NetBSD/alpha.
+     We will probably need to disassemble the trampoline to figure
+     out which trampoline frame type we have.  */
+  find_pc_partial_function (pc, &name, (CORE_ADDR *) NULL, (CORE_ADDR *) NULL);
+  if (PC_IN_SIGTRAMP (pc, name))
+    return frame->frame;
+  return 0;
+}
+
 static void
 alphanbsd_init_abi (struct gdbarch_info info,
                     struct gdbarch *gdbarch)
@@ -197,7 +221,9 @@ alphanbsd_init_abi (struct gdbarch_info info,
   set_solib_svr4_fetch_link_map_offsets (gdbarch,
                                  nbsd_lp64_solib_svr4_fetch_link_map_offsets);
 
+  tdep->skip_sigtramp_frame = alphanbsd_skip_sigtramp_frame;
   tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;
+  tdep->sigcontext_addr = alphanbsd_sigcontext_addr;
 
   tdep->jb_pc = 2;
   tdep->jb_elt_size = 8;