summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2006-03-08 15:28:17 +0000
committerAndreas Schwab <schwab@suse.de>2006-03-08 15:28:17 +0000
commit976d07ff1b16c1fe354457032dacbc190dda1c0c (patch)
tree2e9ded89d6deff830bbea4d3a4238617fbe2f8f8
parentd162d0d6a80649aaf185fbfa157eccf16537caff (diff)
downloadgdb-976d07ff1b16c1fe354457032dacbc190dda1c0c.tar.gz
* ia64-tdep.c (ia64_libunwind_frame_this_id): Adapt uses of
libunwind_frame_prev_register to use a gdb_byte buffer and extract_unsigned_integer. (ia64_libunwind_sigtramp_frame_prev_register): Likewise. * libunwind-frame.c (libunwind_frame_prev_register): Change type of last argument to `gdb_byte *' * libunwind-frame.h: Adjust declaration.
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/ia64-tdep.c7
-rw-r--r--gdb/libunwind-frame.c4
-rw-r--r--gdb/libunwind-frame.h4
4 files changed, 20 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d08c9b24d89..55bbc172634 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,14 @@
+2006-03-08 Andreas Schwab <schwab@suse.de>
+
+ * ia64-tdep.c (ia64_libunwind_frame_this_id): Adapt use of
+ libunwind_frame_prev_register to use a gdb_byte buffer and
+ extract_unsigned_integer.
+ (ia64_libunwind_sigtramp_frame_prev_register): Likewise.
+
+ * libunwind-frame.c (libunwind_frame_prev_register): Change type
+ of last argument to `gdb_byte *'
+ * libunwind-frame.h: Adjust declaration.
+
2006-03-08 Paul Brook <paul@codesourcery.com>
* arm-tdep.c (arm_push_dummy_call): Remove stack alignment.
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 4ec5a955cdb..f78f1fc2c42 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -2732,7 +2732,8 @@ ia64_libunwind_frame_this_id (struct frame_info *next_frame, void **this_cache,
and don't want to unwind past this frame. We return a null frame_id to
indicate this. */
libunwind_frame_prev_register (next_frame, this_cache, IA64_IP_REGNUM,
- &optimized, &lval, &addr, &realnum, &prev_ip);
+ &optimized, &lval, &addr, &realnum, buf);
+ prev_ip = extract_unsigned_integer (buf, 8);
if (prev_ip != 0)
(*this_id) = frame_id_build_special (id.stack_addr, id.code_addr, bsp);
@@ -2892,6 +2893,7 @@ ia64_libunwind_sigtramp_frame_prev_register (struct frame_info *next_frame,
int *realnump, gdb_byte *valuep)
{
+ gdb_byte buf[8];
CORE_ADDR prev_ip, addr;
int realnum, optimized;
enum lval_type lval;
@@ -2900,7 +2902,8 @@ ia64_libunwind_sigtramp_frame_prev_register (struct frame_info *next_frame,
/* If the previous frame pc value is 0, then we want to use the SIGCONTEXT
method of getting previous registers. */
libunwind_frame_prev_register (next_frame, this_cache, IA64_IP_REGNUM,
- &optimized, &lval, &addr, &realnum, &prev_ip);
+ &optimized, &lval, &addr, &realnum, buf);
+ prev_ip = extract_unsigned_integer (buf, 8);
if (prev_ip == 0)
{
diff --git a/gdb/libunwind-frame.c b/gdb/libunwind-frame.c
index fbc84d4f738..6f39b727041 100644
--- a/gdb/libunwind-frame.c
+++ b/gdb/libunwind-frame.c
@@ -1,6 +1,6 @@
/* Frame unwinder for frames using the libunwind library.
- Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
Written by Jeff Johnston, contributed by Red Hat Inc.
@@ -248,7 +248,7 @@ void
libunwind_frame_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)
+ int *realnump, gdb_byte *valuep)
{
struct libunwind_frame_cache *cache =
libunwind_frame_cache (next_frame, this_cache);
diff --git a/gdb/libunwind-frame.h b/gdb/libunwind-frame.h
index 0aa2b2c3fef..ffa43a06c11 100644
--- a/gdb/libunwind-frame.h
+++ b/gdb/libunwind-frame.h
@@ -1,6 +1,6 @@
/* Frame unwinder for frames with libunwind frame information.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
Contributed by Jeff Johnston.
@@ -51,7 +51,7 @@ void libunwind_frame_this_id (struct frame_info *next_frame, void **this_cache,
void libunwind_frame_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);
+ int *realnump, gdb_byte *valuep);
CORE_ADDR libunwind_frame_base_address (struct frame_info *next_frame, void **this_cache);
int libunwind_is_initialized (void);