freebsd-nq/gnu/usr.bin/gdb/libgdb/frame-unwind.diff
Marcel Moolenaar c67d07416a Add a kluge to allow kgdb(1) to inject its own frame sniffer in the
list of frame sniffers so that trapframes can be detected. The kluge
is needed because this version of gdb only supports appending a
sniffer to the list of sniffers and the moment kgdb gets a chance to
add its own frame sniffer, the target's default frame sniffer is
already in the list. Since the default frame sniffer claims any
frame thrown at it, kgdb's frame sniffer never gets to smell (a
process much akin to tasting, but with lesser chance of hurling :-)

This commit adds dummy frame sniffers that never claim a frame and
as such don't fix anything yet. However, we now have frame sniffers
and they are being called, so it's just a matter of adding meat to
the bones and we'll be able to properly unwind across trapframes.

MFC after: 1 week
2005-09-10 18:25:53 +00:00

28 lines
769 B
Diff

$FreeBSD$
Index: frame-unwind.c
===================================================================
RCS file: /home/ncvs/src/contrib/gdb/gdb/frame-unwind.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 frame-unwind.c
--- frame-unwind.c 20 Jun 2004 18:16:58 -0000 1.1.1.1
+++ frame-unwind.c 10 Sep 2005 06:36:55 -0000
@@ -27,6 +27,8 @@
static struct gdbarch_data *frame_unwind_data;
+frame_unwind_sniffer_ftype *kgdb_sniffer_kluge;
+
struct frame_unwind_table
{
frame_unwind_sniffer_ftype **sniffer;
@@ -49,6 +51,8 @@
{
struct frame_unwind_table *table = XCALLOC (1, struct frame_unwind_table);
append_predicate (table, dummy_frame_sniffer);
+ if (kgdb_sniffer_kluge != NULL)
+ append_predicate (table, kgdb_sniffer_kluge);
return table;
}