From f1b4b38ecb079e3762826dfc2d4fcc6a9698517d Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 8 Mar 2006 15:28:17 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 11 +++++++++++ gdb/ia64-tdep.c | 7 +++++-- gdb/libunwind-frame.c | 4 ++-- gdb/libunwind-frame.h | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d08c9b2..55bbc17 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2006-03-08 Andreas Schwab + + * 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 * arm-tdep.c (arm_push_dummy_call): Remove stack alignment. diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index 4ec5a95..f78f1fc 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 fbc84d4..6f39b72 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 0aa2b2c..ffa43a0 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); -- 2.7.4