From 32cec1bdbcee534d21cdd3ce58ed88704d3eee70 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 14 Nov 2003 20:49:23 +0000 Subject: [PATCH] 2003-11-14 Jeff Johnston * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to set up the ia64 linux native target method for getting the kernel unwind table. * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function. * inftarg.c (child_xfer_partial): Enable section of code to handle TARGET_OBJECT_UNWIND_TABLE. * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro. --- gdb/ChangeLog | 10 ++++++++++ gdb/config/ia64/nm-linux.h | 11 +++++++++++ gdb/ia64-linux-nat.c | 11 +++++++++++ gdb/inftarg.c | 2 -- gdb/target.h | 6 ++++-- 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5f6bdab69d..ff12fa6f61 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2003-11-14 Jeff Johnston + + * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to + set up the ia64 linux native target method for getting the kernel + unwind table. + * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function. + * inftarg.c (child_xfer_partial): Enable section of code to + handle TARGET_OBJECT_UNWIND_TABLE. + * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro. + 2003-11-14 Ian Lance Taylor * config/arm/nbsd.mt (TM_FILE): Define. diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h index 0418495c11..01c980748e 100644 --- a/gdb/config/ia64/nm-linux.h +++ b/gdb/config/ia64/nm-linux.h @@ -69,4 +69,15 @@ extern int ia64_linux_insert_watchpoint (ptid_t ptid, CORE_ADDR addr, extern int ia64_linux_remove_watchpoint (ptid_t ptid, CORE_ADDR addr, int len); +#include "target.h" + +#define NATIVE_XFER_UNWIND_TABLE ia64_linux_xfer_unwind_table +extern LONGEST ia64_linux_xfer_unwind_table (struct target_ops *ops, + enum target_object object, + const char *annex, + void *readbuf, + const void *writebuf, + ULONGEST offset, + LONGEST len); + #endif /* #ifndef NM_LINUX_H */ diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c index a2ca8fa9bc..00f66fb2e8 100644 --- a/gdb/ia64-linux-nat.c +++ b/gdb/ia64-linux-nat.c @@ -34,6 +34,7 @@ #ifdef HAVE_SYS_REG_H #include #endif +#include #include #include @@ -645,3 +646,13 @@ ia64_linux_stopped_by_watchpoint (ptid_t ptid) return (CORE_ADDR) siginfo.si_addr; } + +LONGEST +ia64_linux_xfer_unwind_table (struct target_ops *ops, + enum target_object object, + const char *annex, + void *readbuf, const void *writebuf, + ULONGEST offset, LONGEST len) +{ + return syscall (__NR_getunwind, readbuf, len); +} diff --git a/gdb/inftarg.c b/gdb/inftarg.c index 6829400b59..a20c39fd07 100644 --- a/gdb/inftarg.c +++ b/gdb/inftarg.c @@ -571,14 +571,12 @@ child_xfer_partial (struct target_ops *ops, enum target_object object, NULL, ops); return -1; -#if 0 case TARGET_OBJECT_UNWIND_TABLE: #ifndef NATIVE_XFER_UNWIND_TABLE #define NATIVE_XFER_UNWIND_TABLE(OPS,OBJECT,ANNEX,WRITEBUF,READBUF,OFFSET,LEN) (-1) #endif return NATIVE_XFER_UNWIND_TABLE (ops, object, annex, readbuf, writebuf, offset, len); -#endif #if 0 case TARGET_OBJECT_AUXV: diff --git a/gdb/target.h b/gdb/target.h index 42b9596496..21956df9dd 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -223,8 +223,10 @@ enum target_object /* AVR target specific transfer. See "avr-tdep.c" and "remote.c". */ TARGET_OBJECT_AVR, /* Transfer up-to LEN bytes of memory starting at OFFSET. */ - TARGET_OBJECT_MEMORY - /* Possible future ojbects: TARGET_OJBECT_FILE, TARGET_OBJECT_PROC, + TARGET_OBJECT_MEMORY, + /* Kernel Unwind Table. See "ia64-tdep.c". */ + TARGET_OBJECT_UNWIND_TABLE, + /* Possible future objects: TARGET_OBJECT_FILE, TARGET_OBJECT_PROC, TARGET_OBJECT_AUXV, ... */ }; -- 2.11.0