static struct sparc_frame_cache * sparc32nbsd_sigcontext_frame_cache (struct frame_info *this_frame, void **this_cache) { struct sparc_frame_cache *cache; CORE_ADDR addr; if (*this_cache) return *this_cache; cache = sparc_frame_cache (this_frame, this_cache); gdb_assert (cache == *this_cache); /* If we couldn't find the frame's function, we're probably dealing with an on-stack signal trampoline. */ if (cache->pc == 0) { cache->pc = sparc32nbsd_sigtramp_start; /* Since we couldn't find the frame's function, the cache was initialized under the assumption that we're frameless. */ sparc_record_save_insn (cache); addr = get_frame_register_unsigned (this_frame, SPARC_FP_REGNUM); cache->base = addr; } cache->saved_regs = sparc32nbsd_sigcontext_saved_regs (this_frame); return cache; }
static struct sparc_frame_cache * sparc32obsd_frame_cache (struct frame_info *next_frame, void **this_cache) { struct sparc_frame_cache *cache; CORE_ADDR addr; if (*this_cache) return *this_cache; cache = sparc_frame_cache (next_frame, this_cache); gdb_assert (cache == *this_cache); /* If we couldn't find the frame's function, we're probably dealing with an on-stack signal trampoline. */ if (cache->pc == 0) { cache->pc = frame_pc_unwind (next_frame); cache->pc &= ~(sparc32obsd_page_size - 1); /* Since we couldn't find the frame's function, the cache was initialized under the assumption that we're frameless. */ cache->frameless_p = 0; addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM); cache->base = addr; } cache->saved_regs = sparc32nbsd_sigcontext_saved_regs (next_frame); return cache; }