diff options
| author | Marcel Moolenaar <marcel@FreeBSD.org> | 2005-09-10 18:25:53 +0000 |
|---|---|---|
| committer | Marcel Moolenaar <marcel@FreeBSD.org> | 2005-09-10 18:25:53 +0000 |
| commit | c67d07416a0ae8ee92b268aec7825b1ed8367bce (patch) | |
| tree | 10ba140bc7d6ec0218cfa8290fa788fcbf181065 /gnu | |
| parent | 97d69a96207d6698f9f88d57dd4be5000688c548 (diff) | |
Notes
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/kgdb.h | 4 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/kthr.c | 1 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/main.c | 5 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt.c | 1 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_alpha.c | 31 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_amd64.c | 31 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_i386.c | 31 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_ia64.c | 31 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/kgdb/trgt_sparc64.c | 31 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/libgdb/Makefile | 8 | ||||
| -rw-r--r-- | gnu/usr.bin/gdb/libgdb/frame-unwind.diff | 27 |
11 files changed, 188 insertions, 13 deletions
diff --git a/gnu/usr.bin/gdb/kgdb/kgdb.h b/gnu/usr.bin/gdb/kgdb/kgdb.h index b545ebbe03c4e..2103acdb082d3 100644 --- a/gnu/usr.bin/gdb/kgdb/kgdb.h +++ b/gnu/usr.bin/gdb/kgdb/kgdb.h @@ -29,7 +29,7 @@ #ifndef _KGDB_H_ #define _KGDB_H_ -struct thread_info; +struct thread_info; extern kvm_t *kvm; extern int verbose; @@ -50,6 +50,8 @@ void kgdb_target(void); void kgdb_trgt_fetch_registers(int); void kgdb_trgt_store_registers(int); +frame_unwind_sniffer_ftype kgdb_trgt_trapframe_sniffer; + struct kthr *kgdb_thr_first(void); struct kthr *kgdb_thr_init(void); struct kthr *kgdb_thr_lookup_tid(int); diff --git a/gnu/usr.bin/gdb/kgdb/kthr.c b/gnu/usr.bin/gdb/kgdb/kthr.c index 505605d406a3a..9156f1a9cf662 100644 --- a/gnu/usr.bin/gdb/kgdb/kthr.c +++ b/gnu/usr.bin/gdb/kgdb/kthr.c @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <defs.h> +#include <frame-unwind.h> #include "kgdb.h" diff --git a/gnu/usr.bin/gdb/kgdb/main.c b/gnu/usr.bin/gdb/kgdb/main.c index 856cb93411f9f..b07328cf8e91f 100644 --- a/gnu/usr.bin/gdb/kgdb/main.c +++ b/gnu/usr.bin/gdb/kgdb/main.c @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); /* libgdb stuff. */ #include <defs.h> #include <frame.h> +#include <frame-unwind.h> #include <inferior.h> #include <interps.h> #include <cli-out.h> @@ -61,6 +62,8 @@ __FBSDID("$FreeBSD$"); extern void (*init_ui_hook)(char *); +extern frame_unwind_sniffer_ftype *kgdb_sniffer_kluge; + extern void symbol_file_add_main (char *args, int from_tty); #include "kgdb.h" @@ -478,5 +481,7 @@ main(int argc, char *argv[]) init_ui_hook = kgdb_init; + kgdb_sniffer_kluge = kgdb_trgt_trapframe_sniffer; + return (gdb_main(&args)); } diff --git a/gnu/usr.bin/gdb/kgdb/trgt.c b/gnu/usr.bin/gdb/kgdb/trgt.c index 87487ce764d9d..dac66c4dc3502 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt.c +++ b/gnu/usr.bin/gdb/kgdb/trgt.c @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include <defs.h> #include <command.h> +#include <frame-unwind.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> diff --git a/gnu/usr.bin/gdb/kgdb/trgt_alpha.c b/gnu/usr.bin/gdb/kgdb/trgt_alpha.c index 336970ba2be67..c63c005b62026 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_alpha.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_alpha.c @@ -33,13 +33,14 @@ __FBSDID("$FreeBSD$"); #include <kvm.h> #include <string.h> -#include "kgdb.h" - #include <defs.h> #include <target.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> +#include <frame-unwind.h> + +#include "kgdb.h" void kgdb_trgt_fetch_registers(int regno __unused) @@ -71,3 +72,29 @@ kgdb_trgt_store_registers(int regno __unused) { fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__); } + +static void +kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ +} + +static void +kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, + void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, + CORE_ADDR *addrp, int *realnump, void *valuep) +{ +} + +static const struct frame_unwind kgdb_trgt_trapframe_unwind = { + UNKNOWN_FRAME, + &kgdb_trgt_trapframe_this_id, + &kgdb_trgt_trapframe_prev_register +}; + +const struct frame_unwind * +kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) +{ + + return (NULL); +} diff --git a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c index 0907d0db5675e..bd1558f0b3fa4 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_amd64.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_amd64.c @@ -33,13 +33,14 @@ __FBSDID("$FreeBSD$"); #include <kvm.h> #include <string.h> -#include "kgdb.h" - #include <defs.h> #include <target.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> +#include <frame-unwind.h> + +#include "kgdb.h" void kgdb_trgt_fetch_registers(int regno __unused) @@ -71,3 +72,29 @@ kgdb_trgt_store_registers(int regno __unused) { fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__); } + +static void +kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ +} + +static void +kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, + void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, + CORE_ADDR *addrp, int *realnump, void *valuep) +{ +} + +static const struct frame_unwind kgdb_trgt_trapframe_unwind = { + UNKNOWN_FRAME, + &kgdb_trgt_trapframe_this_id, + &kgdb_trgt_trapframe_prev_register +}; + +const struct frame_unwind * +kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) +{ + + return (NULL); +} diff --git a/gnu/usr.bin/gdb/kgdb/trgt_i386.c b/gnu/usr.bin/gdb/kgdb/trgt_i386.c index 96dad51fcffea..eb58df3e4baaf 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_i386.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_i386.c @@ -33,13 +33,14 @@ __FBSDID("$FreeBSD$"); #include <kvm.h> #include <string.h> -#include "kgdb.h" - #include <defs.h> #include <target.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> +#include <frame-unwind.h> + +#include "kgdb.h" void kgdb_trgt_fetch_registers(int regno __unused) @@ -67,3 +68,29 @@ kgdb_trgt_store_registers(int regno __unused) { fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__); } + +static void +kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ +} + +static void +kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, + void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, + CORE_ADDR *addrp, int *realnump, void *valuep) +{ +} + +static const struct frame_unwind kgdb_trgt_trapframe_unwind = { + UNKNOWN_FRAME, + &kgdb_trgt_trapframe_this_id, + &kgdb_trgt_trapframe_prev_register +}; + +const struct frame_unwind * +kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) +{ + + return (NULL); +} diff --git a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c b/gnu/usr.bin/gdb/kgdb/trgt_ia64.c index bfceba4cd0aad..7d9e1194b3860 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_ia64.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_ia64.c @@ -34,13 +34,14 @@ __FBSDID("$FreeBSD$"); #include <kvm.h> #include <string.h> -#include "kgdb.h" - #include <defs.h> #include <target.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> +#include <frame-unwind.h> + +#include "kgdb.h" void kgdb_trgt_fetch_registers(int regno __unused) @@ -131,3 +132,29 @@ kgdb_trgt_store_registers(int regno __unused) { fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__); } + +static void +kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ +} + +static void +kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, + void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, + CORE_ADDR *addrp, int *realnump, void *valuep) +{ +} + +static const struct frame_unwind kgdb_trgt_trapframe_unwind = { + UNKNOWN_FRAME, + &kgdb_trgt_trapframe_this_id, + &kgdb_trgt_trapframe_prev_register +}; + +const struct frame_unwind * +kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) +{ + + return (NULL); +} diff --git a/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c b/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c index 17d8135fa7a96..d6dcd65a69b6e 100644 --- a/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c +++ b/gnu/usr.bin/gdb/kgdb/trgt_sparc64.c @@ -34,16 +34,17 @@ __FBSDID("$FreeBSD$"); #include <kvm.h> #include <string.h> -#include "kgdb.h" - #include <defs.h> #include <target.h> #include <gdbthread.h> #include <inferior.h> #include <regcache.h> +#include <frame-unwind.h> #include <sparc-tdep.h> #include <sparc64-tdep.h> +#include "kgdb.h" + void kgdb_trgt_fetch_registers(int regno __unused) { @@ -70,3 +71,29 @@ kgdb_trgt_store_registers(int regno __unused) { fprintf_unfiltered(gdb_stderr, "XXX: %s\n", __func__); } + +static void +kgdb_trgt_trapframe_this_id(struct frame_info *next_frame, void **this_cache, + struct frame_id *this_id) +{ +} + +static void +kgdb_trgt_trapframe_prev_register(struct frame_info *next_frame, + void **this_cache, int regnum, int *optimizedp, enum lval_type *lvalp, + CORE_ADDR *addrp, int *realnump, void *valuep) +{ +} + +static const struct frame_unwind kgdb_trgt_trapframe_unwind = { + UNKNOWN_FRAME, + &kgdb_trgt_trapframe_this_id, + &kgdb_trgt_trapframe_prev_register +}; + +const struct frame_unwind * +kgdb_trgt_trapframe_sniffer(struct frame_info *next_frame) +{ + + return (NULL); +} diff --git a/gnu/usr.bin/gdb/libgdb/Makefile b/gnu/usr.bin/gdb/libgdb/Makefile index e9e92cac200a4..29598d3c23054 100644 --- a/gnu/usr.bin/gdb/libgdb/Makefile +++ b/gnu/usr.bin/gdb/libgdb/Makefile @@ -18,7 +18,7 @@ SRCS= annotate.c arch-utils.c auxv.c ax-gdb.c ax-general.c \ elfread.c environ.c eval.c event-loop.c event-top.c exec.c \ expprint.c \ f-exp.y f-lang.c f-typeprint.c f-valprint.c findvar.c \ - ${_fork_child} frame-base.c frame-unwind.c frame.c \ + ${_fork_child} frame-base.c frame-unwind-kluge.c frame.c \ gdb-events.c gdbarch.c gdbtypes.c gnu-v2-abi.c gnu-v3-abi.c \ hpacc-abi.c \ inf-loop.c infcall.c infcmd.c inflow.c ${_infptrace} infrun.c \ @@ -59,7 +59,11 @@ _infptrace= infptrace.c _inftarg= inftarg.c .endif -GENSRCS= version.c +GENSRCS= frame-unwind-kluge.c version.c + +frame-unwind-kluge.c: frame-unwind.diff + cat ${CNTRB_GDB}/gdb/frame-unwind.c > ${.TARGET} + patch ${.TARGET} ${.ALLSRC} version.c: echo '#include "version.h"' > ${.TARGET} diff --git a/gnu/usr.bin/gdb/libgdb/frame-unwind.diff b/gnu/usr.bin/gdb/libgdb/frame-unwind.diff new file mode 100644 index 0000000000000..8143c55aeefec --- /dev/null +++ b/gnu/usr.bin/gdb/libgdb/frame-unwind.diff @@ -0,0 +1,27 @@ +$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; + } + |
