if (flags & VKI_SA_RESTORER)
frame->retaddr = (Addr)restorer;
- else {
- frame->retaddr
- = (UInt)VG_(client_trampoline_code)+VG_(tramp_rt_sigreturn_offset);
- }
+ else
+ frame->retaddr
+ = VG_(client_trampoline_code)+VG_(tramp_rt_sigreturn_offset);
VG_(memcpy)(&frame->sigInfo, siginfo, sizeof(vki_siginfo_t));
Int sigNo = siginfo->si_signo;
struct vki_ucontext uc;
+ vg_assert((flags & VKI_SA_SIGINFO) == 0);
+
esp -= sizeof(*frame);
esp = ROUNDDN(esp, 16);
frame = (struct sigframe *)esp;
if (flags & VKI_SA_RESTORER)
frame->retaddr = (Addr)restorer;
- else {
- if (flags & VKI_SA_SIGINFO)
- frame->retaddr
- = (UInt)VG_(client_trampoline_code)+VG_(tramp_rt_sigreturn_offset);
- else
- frame->retaddr
- = (UInt)VG_(client_trampoline_code)+VG_(tramp_sigreturn_offset);
- }
+ else
+ frame->retaddr
+ = VG_(client_trampoline_code)+VG_(tramp_sigreturn_offset);
synth_ucontext(tst->tid, siginfo, mask, &uc, &frame->fpstate);
Addr esp = esp_top_of_frame;
Int sigNo = siginfo->si_signo;
+ vg_assert((flags & VKI_SA_SIGINFO) != 0);
+
esp -= sizeof(*frame);
esp = ROUNDDN(esp, 16);
frame = (struct rt_sigframe *)esp;
if (flags & VKI_SA_RESTORER)
frame->retaddr = (Addr)restorer;
- else {
- if (flags & VKI_SA_SIGINFO)
- frame->retaddr
- = (UInt)VG_(client_trampoline_code)+VG_(tramp_rt_sigreturn_offset);
- else
- frame->retaddr
- = (UInt)VG_(client_trampoline_code)+VG_(tramp_sigreturn_offset);
- }
+ else
+ frame->retaddr
+ = VG_(client_trampoline_code)+VG_(tramp_rt_sigreturn_offset);
frame->psigInfo = (Addr)&frame->sigInfo;
frame->puContext = (Addr)&frame->uContext;