Fill in cr2 in the signal context from ksi->ksi_addr.
Together with the sys/i386/i386/trap.c rev. 1.306 it fixes the PR. Submitted by: rdivacky Suggested by: jhb Sponsored by: Google Summer of Code 2007 PR: kern/77710 Approved by: re (kensmith)
This commit is contained in:
parent
2175a1da6d
commit
038cf0387b
@ -372,6 +372,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
|
||||
frame.sf_sc.uc_mcontext.sc_esp_at_signal = regs->tf_rsp;
|
||||
frame.sf_sc.uc_mcontext.sc_ss = regs->tf_ss;
|
||||
frame.sf_sc.uc_mcontext.sc_err = regs->tf_err;
|
||||
frame.sf_sc.uc_mcontext.sc_cr2 = (u_int32_t)(uintptr_t)ksi->ksi_addr;
|
||||
frame.sf_sc.uc_mcontext.sc_trapno = bsd_to_linux_trapcode(code);
|
||||
|
||||
#ifdef DEBUG
|
||||
@ -503,6 +504,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
|
||||
frame.sf_sc.sc_esp_at_signal = regs->tf_rsp;
|
||||
frame.sf_sc.sc_ss = regs->tf_ss;
|
||||
frame.sf_sc.sc_err = regs->tf_err;
|
||||
frame.sf_sc.sc_cr2 = (u_int32_t)(uintptr_t)ksi->ksi_addr;
|
||||
frame.sf_sc.sc_trapno = bsd_to_linux_trapcode(code);
|
||||
|
||||
for (i = 0; i < (LINUX_NSIG_WORDS-1); i++)
|
||||
|
@ -359,6 +359,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
|
||||
frame.sf_sc.uc_mcontext.sc_esp_at_signal = regs->tf_esp;
|
||||
frame.sf_sc.uc_mcontext.sc_ss = regs->tf_ss;
|
||||
frame.sf_sc.uc_mcontext.sc_err = regs->tf_err;
|
||||
frame.sf_sc.uc_mcontext.sc_cr2 = (register_t)ksi->ksi_addr;
|
||||
frame.sf_sc.uc_mcontext.sc_trapno = bsd_to_linux_trapcode(code);
|
||||
|
||||
#ifdef DEBUG
|
||||
@ -487,6 +488,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
|
||||
frame.sf_sc.sc_esp_at_signal = regs->tf_esp;
|
||||
frame.sf_sc.sc_ss = regs->tf_ss;
|
||||
frame.sf_sc.sc_err = regs->tf_err;
|
||||
frame.sf_sc.sc_cr2 = (register_t)ksi->ksi_addr;
|
||||
frame.sf_sc.sc_trapno = bsd_to_linux_trapcode(ksi->ksi_trapno);
|
||||
|
||||
for (i = 0; i < (LINUX_NSIG_WORDS-1); i++)
|
||||
|
Loading…
x
Reference in New Issue
Block a user