* sparc-tdep.c (sparc_frame_cache): Adjust cached frame base
address for 64-bit code. (sparc_unwind_dummy_id): Likewise. * sparc64-tdep.c (sparc64_frame_prev_register): Adjust for new frame base address convention. (sparc64_push_dummy_call): Likewise. * sparc64nbsd-tdep.c: Update copyright year. (sparc64nbsd_sigcontext_frame_cache): Adjust cached frame base address for 64-bit code. (sparc64nbsd_init_abi): Tweak comment. * sparc64obsd-tdep.c: Update copyright year. (sparc64obsd_frame_cache): Adjust cached frame base address for 64-bit code. (sparc64obsd_init_abi): Tweak comment.
This commit is contained in:
parent
e5a8e242a8
commit
5b2d44a05d
5 changed files with 37 additions and 11 deletions
|
@ -1,3 +1,20 @@
|
|||
2005-03-09 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* sparc-tdep.c (sparc_frame_cache): Adjust cached frame base
|
||||
address for 64-bit code.
|
||||
(sparc_unwind_dummy_id): Likewise.
|
||||
* sparc64-tdep.c (sparc64_frame_prev_register): Adjust for new
|
||||
frame base address convention.
|
||||
(sparc64_push_dummy_call): Likewise.
|
||||
* sparc64nbsd-tdep.c: Update copyright year.
|
||||
(sparc64nbsd_sigcontext_frame_cache): Adjust cached frame base
|
||||
address for 64-bit code.
|
||||
(sparc64nbsd_init_abi): Tweak comment.
|
||||
* sparc64obsd-tdep.c: Update copyright year.
|
||||
(sparc64obsd_frame_cache): Adjust cached frame base address for
|
||||
64-bit code.
|
||||
(sparc64obsd_init_abi): Tweak comment.
|
||||
|
||||
2005-03-09 Corinna Vinschen <vinschen@redhat.com>
|
||||
|
||||
* exceptions.h (TRY_CATCH): Define setjmp/sigsetjmp macro safe.
|
||||
|
|
|
@ -673,6 +673,9 @@ sparc_frame_cache (struct frame_info *next_frame, void **this_cache)
|
|||
frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
|
||||
}
|
||||
|
||||
if (cache->base & 1)
|
||||
cache->base += BIAS;
|
||||
|
||||
return cache;
|
||||
}
|
||||
|
||||
|
@ -859,6 +862,8 @@ sparc_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
|
|||
CORE_ADDR sp;
|
||||
|
||||
sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM);
|
||||
if (sp & 1)
|
||||
sp += BIAS;
|
||||
return frame_id_build (sp, frame_pc_unwind (next_frame));
|
||||
}
|
||||
|
||||
|
|
|
@ -526,7 +526,7 @@ sparc64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
|
|||
{
|
||||
*optimizedp = 0;
|
||||
*lvalp = lval_memory;
|
||||
*addrp = cache->base + BIAS + (regnum - SPARC_L0_REGNUM) * 8;
|
||||
*addrp = cache->base + (regnum - SPARC_L0_REGNUM) * 8;
|
||||
*realnump = -1;
|
||||
if (valuep)
|
||||
{
|
||||
|
@ -572,7 +572,7 @@ sparc64_frame_base_address (struct frame_info *next_frame, void **this_cache)
|
|||
struct sparc_frame_cache *cache =
|
||||
sparc64_frame_cache (next_frame, this_cache);
|
||||
|
||||
return cache->base + BIAS;
|
||||
return cache->base;
|
||||
}
|
||||
|
||||
static const struct frame_base sparc64_frame_base =
|
||||
|
@ -973,7 +973,7 @@ sparc64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
|||
/* Finally, update the stack pointer. */
|
||||
regcache_cooked_write_unsigned (regcache, SPARC_SP_REGNUM, sp);
|
||||
|
||||
return sp;
|
||||
return sp + BIAS;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Target-dependent code for NetBSD/sparc64.
|
||||
|
||||
Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
Based on code contributed by Wasabi Systems, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
@ -161,12 +161,14 @@ sparc64nbsd_sigcontext_frame_cache (struct frame_info *next_frame,
|
|||
initialized under the assumption that we're frameless. */
|
||||
cache->frameless_p = 0;
|
||||
addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
|
||||
if (addr & 1)
|
||||
addr += BIAS;
|
||||
cache->base = addr;
|
||||
}
|
||||
|
||||
/* We find the appropriate instance of `struct sigcontext' at a
|
||||
fixed offset in the signal frame. */
|
||||
addr = cache->base + BIAS + 128 + 8;
|
||||
addr = cache->base + 128 + 8;
|
||||
cache->saved_regs = sparc64nbsd_sigcontext_saved_regs (addr, next_frame);
|
||||
|
||||
return cache;
|
||||
|
@ -237,13 +239,13 @@ sparc64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
|
||||
sparc64_init_abi (info, gdbarch);
|
||||
|
||||
/* NetBSD/sparc64 has SVR4-style shared libraries... */
|
||||
/* NetBSD/sparc64 has SVR4-style shared libraries. */
|
||||
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
|
||||
set_solib_svr4_fetch_link_map_offsets
|
||||
(gdbarch, svr4_lp64_fetch_link_map_offsets);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||
void _initialize_sparc64nbsd_tdep (void);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Target-dependent code for OpenBSD/sparc64.
|
||||
|
||||
Copyright 2004 Free Software Foundation, Inc.
|
||||
Copyright 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
|
@ -133,12 +133,14 @@ sparc64obsd_frame_cache (struct frame_info *next_frame, void **this_cache)
|
|||
initialized under the assumption that we're frameless. */
|
||||
cache->frameless_p = 0;
|
||||
addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
|
||||
if (addr & 1)
|
||||
addr += BIAS;
|
||||
cache->base = addr;
|
||||
}
|
||||
|
||||
/* We find the appropriate instance of `struct sigcontext' at a
|
||||
fixed offset in the signal frame. */
|
||||
addr = cache->base + BIAS + 128 + 16;
|
||||
addr = cache->base + 128 + 16;
|
||||
cache->saved_regs = sparc64nbsd_sigcontext_saved_regs (addr, next_frame);
|
||||
|
||||
return cache;
|
||||
|
@ -201,13 +203,13 @@ sparc64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
|
||||
sparc64_init_abi (info, gdbarch);
|
||||
|
||||
/* OpenBSD/sparc64 has SVR4-style shared libraries... */
|
||||
/* OpenBSD/sparc64 has SVR4-style shared libraries. */
|
||||
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
|
||||
set_solib_svr4_fetch_link_map_offsets
|
||||
(gdbarch, svr4_lp64_fetch_link_map_offsets);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||
void _initialize_sparc64obsd_tdep (void);
|
||||
|
||||
|
|
Loading…
Reference in a new issue