/* Frame unwinder for ia64 frames using the libunwind library.
- Copyright (C) 2003-2020 Free Software Foundation, Inc.
+ Copyright (C) 2003-2021 Free Software Foundation, Inc.
Written by Jeff Johnston, contributed by Red Hat Inc.
#include "ia64-libunwind-tdep.h"
-#include "complaints.h"
#include "gdbsupport/preprocessor.h"
/* IA-64 is the only target that currently uses ia64-libunwind-tdep.
libunwind frame unwinding. */
int
libunwind_frame_sniffer (const struct frame_unwind *self,
- struct frame_info *this_frame, void **this_cache)
+ struct frame_info *this_frame, void **this_cache)
{
unw_cursor_t cursor;
unw_accessors_t *acc;
void
libunwind_frame_this_id (struct frame_info *this_frame, void **this_cache,
- struct frame_id *this_id)
+ struct frame_id *this_id)
{
struct libunwind_frame_cache *cache =
libunwind_frame_cache (this_frame, this_cache);
struct value *
libunwind_frame_prev_register (struct frame_info *this_frame,
- void **this_cache, int regnum)
+ void **this_cache, int regnum)
{
struct libunwind_frame_cache *cache =
libunwind_frame_cache (this_frame, this_cache);
gdb_assert (regnum >= 0);
- if (!target_has_registers)
+ if (!target_has_registers ())
error (_("No registers."));
if (uw_regnum < 0)
case UNW_SLT_REG:
val = frame_unwind_got_register (this_frame, regnum,
- descr->uw2gdb (sl.u.regnum));
+ descr->uw2gdb (sl.u.regnum));
break;
case UNW_SLT_NONE:
{
- /* The register is not stored at a specific memory address nor
- inside another register. So use libunwind to fetch the register
- value for us, and create a constant value with the result. */
- if (descr->is_fpreg (uw_regnum))
- {
- ret = unw_get_fpreg_p (&cache->cursor, uw_regnum, &fpval);
- if (ret < 0)
- return frame_unwind_got_constant (this_frame, regnum, 0);
- val = frame_unwind_got_bytes (this_frame, regnum,
- (gdb_byte *) &fpval);
- }
- else
- {
- ret = unw_get_reg_p (&cache->cursor, uw_regnum, &intval);
- if (ret < 0)
- return frame_unwind_got_constant (this_frame, regnum, 0);
- val = frame_unwind_got_constant (this_frame, regnum, intval);
- }
- break;
+ /* The register is not stored at a specific memory address nor
+ inside another register. So use libunwind to fetch the register
+ value for us, and create a constant value with the result. */
+ if (descr->is_fpreg (uw_regnum))
+ {
+ ret = unw_get_fpreg_p (&cache->cursor, uw_regnum, &fpval);
+ if (ret < 0)
+ return frame_unwind_got_constant (this_frame, regnum, 0);
+ val = frame_unwind_got_bytes (this_frame, regnum,
+ (gdb_byte *) &fpval);
+ }
+ else
+ {
+ ret = unw_get_reg_p (&cache->cursor, uw_regnum, &intval);
+ if (ret < 0)
+ return frame_unwind_got_constant (this_frame, regnum, 0);
+ val = frame_unwind_got_constant (this_frame, regnum, intval);
+ }
+ break;
}
}
/* Verify if we are in a sigtramp frame and we can use libunwind to unwind. */
int
libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
- struct frame_info *this_frame,
- void **this_cache)
+ struct frame_info *this_frame,
+ void **this_cache)
{
unw_cursor_t cursor;
unw_accessors_t *acc;