diff mbox

linux-user/signal.c: Set fault address in AArch64 signal info

Message ID 1398965777-7694-1-git-send-email-peter.maydell@linaro.org
State Superseded
Headers show

Commit Message

Peter Maydell May 1, 2014, 5:36 p.m. UTC
Set the fault address correctly in the signal information passed
to a signal handler for AArch64 guests.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
This would be a candidate for stable except that it depends on
the a64 system rework which added exception.vaddress. Hopefully
not many guests care about the fault address information...

Riku: I'm assuming you'll put this in your tree; I can put it in
target-arm if you prefer, but I know you have those other pending
signal.c changes...

 linux-user/signal.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Riku Voipio May 2, 2014, 10:06 a.m. UTC | #1
On Thu, May 1, 2014 at 8:36 PM, Peter Maydell <peter.maydell@linaro.org>wrote:

> Set the fault address correctly in the signal information passed
> to a signal handler for AArch64 guests.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This would be a candidate for stable except that it depends on
> the a64 system rework which added exception.vaddress. Hopefully
> not many guests care about the fault address information...
>
> Riku: I'm assuming you'll put this in your tree; I can put it in
> target-arm if you prefer, but I know you have those other pending
> signal.c changes...
>

I've put in the linux-user que now, the signal.c changes didn't get any
review yet,
and I want to at least submit them with better descriptions.

Riku


>
>  linux-user/signal.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index 7d6246f..5b8a01f 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -1242,8 +1242,7 @@ static int target_setup_sigframe(struct
> target_rt_sigframe *sf,
>      __put_user(env->pc, &sf->uc.tuc_mcontext.pc);
>      __put_user(pstate_read(env), &sf->uc.tuc_mcontext.pstate);
>
> -    __put_user(/*current->thread.fault_address*/ 0,
> -            &sf->uc.tuc_mcontext.fault_address);
> +    __put_user(env->exception.vaddress,
> &sf->uc.tuc_mcontext.fault_address);
>
>      for (i = 0; i < TARGET_NSIG_WORDS; i++) {
>          __put_user(set->sig[i], &sf->uc.tuc_sigmask.sig[i]);
> --
> 1.9.2
>
> --
> Riku Voipio
diff mbox

Patch

diff --git a/linux-user/signal.c b/linux-user/signal.c
index 7d6246f..5b8a01f 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -1242,8 +1242,7 @@  static int target_setup_sigframe(struct target_rt_sigframe *sf,
     __put_user(env->pc, &sf->uc.tuc_mcontext.pc);
     __put_user(pstate_read(env), &sf->uc.tuc_mcontext.pstate);
 
-    __put_user(/*current->thread.fault_address*/ 0,
-            &sf->uc.tuc_mcontext.fault_address);
+    __put_user(env->exception.vaddress, &sf->uc.tuc_mcontext.fault_address);
 
     for (i = 0; i < TARGET_NSIG_WORDS; i++) {
         __put_user(set->sig[i], &sf->uc.tuc_sigmask.sig[i]);