diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/config/ia64/nm-linux.h | 11 | ||||
-rw-r--r-- | gdb/ia64-linux-nat.c | 11 | ||||
-rw-r--r-- | gdb/inftarg.c | 2 | ||||
-rw-r--r-- | gdb/target.h | 6 |
5 files changed, 36 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5f6bdab..ff12fa6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2003-11-14 Jeff Johnston <jjohnstn@redhat.com> + + * 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 <ian@wasabisystems.com> * config/arm/nbsd.mt (TM_FILE): Define. diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h index 0418495..01c9807 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 a2ca8fa..00f66fb 100644 --- a/gdb/ia64-linux-nat.c +++ b/gdb/ia64-linux-nat.c @@ -34,6 +34,7 @@ #ifdef HAVE_SYS_REG_H #include <sys/reg.h> #endif +#include <sys/syscall.h> #include <sys/user.h> #include <asm/ptrace_offsets.h> @@ -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 6829400..a20c39f 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 42b9596..21956df 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, ... */ }; |