static void arm_linux_sigreturn_init (const struct tramp_frame *self, struct frame_info *next_frame, struct trad_frame_cache *this_cache, CORE_ADDR func) { arm_linux_sigtramp_cache (next_frame, this_cache, func, 0x0c /* Offset to registers. */); }
static void arm_android_sigreturn_init (struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func) { struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR sp = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM); ULONGEST uc_flags = read_memory_unsigned_integer (sp, 4, byte_order); if (uc_flags == ARM_NEW_SIGFRAME_MAGIC) arm_linux_sigtramp_cache (this_frame, this_cache, func, ARM_UCONTEXT_SIGCONTEXT + ARM_SIGCONTEXT_R0); else arm_linux_sigtramp_cache (this_frame, this_cache, func, ARM_SIGCONTEXT_R0); }
static void arm_linux_rt_sigreturn_init (const struct tramp_frame *self, struct frame_info *this_frame, struct trad_frame_cache *this_cache, CORE_ADDR func) { struct gdbarch *gdbarch = get_frame_arch (this_frame); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR sp = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM); ULONGEST pinfo = read_memory_unsigned_integer (sp, 4, byte_order); if (pinfo == sp + ARM_OLD_RT_SIGFRAME_SIGINFO) arm_linux_sigtramp_cache (this_frame, this_cache, func, ARM_OLD_RT_SIGFRAME_UCONTEXT + ARM_UCONTEXT_SIGCONTEXT + ARM_SIGCONTEXT_R0); else arm_linux_sigtramp_cache (this_frame, this_cache, func, ARM_NEW_RT_SIGFRAME_UCONTEXT + ARM_UCONTEXT_SIGCONTEXT + ARM_SIGCONTEXT_R0); }