* 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.
This commit is contained in:
Andreas Schwab 2006-03-08 15:28:17 +00:00
parent f53f0d0bde
commit f1b4b38ecb
4 changed files with 20 additions and 6 deletions

View File

@ -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.

View File

@ -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)
{

View File

@ -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);

View File

@ -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);