aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/config/ia64/nm-linux.h11
-rw-r--r--gdb/ia64-linux-nat.c11
-rw-r--r--gdb/inftarg.c2
-rw-r--r--gdb/target.h6
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, ... */
};