Message ID | 1414065329-7357-1-git-send-email-riku.voipio@linaro.org |
---|---|
State | Superseded |
Headers | show |
On 23 October 2014 12:55, <riku.voipio@linaro.org> wrote: > From: Riku Voipio <riku.voipio@linaro.org> > > On AArch64 the si_addr field of siginfo_t is truncated to 32 bits > because the fault address passes through an uint32_t variable. This > is fixed by changing the variable to uint64_t. > > v2 by Riku - follow Peters suggestion and drop the addr variable > since its only used once in the Aarch64 loop. > > Reported-by: Amanieu d'Antras <amanieu@gmail.com> > Signed-off-by: Riku Voipio <riku.voipio@linaro.org> Ah, I was just wondering this morning whether I ought to do a version of this patch, so you've saved me the effort :-) Reviewed-by: Peter Maydell <peter.maydell@linaro.org> (You might want to put the notes about v2 below the '---'.) thanks -- PMM
On 10/23/2014 05:06 AM, Peter Maydell wrote: > On 23 October 2014 12:55, <riku.voipio@linaro.org> wrote: >> From: Riku Voipio <riku.voipio@linaro.org> >> >> On AArch64 the si_addr field of siginfo_t is truncated to 32 bits >> because the fault address passes through an uint32_t variable. This >> is fixed by changing the variable to uint64_t. >> >> v2 by Riku - follow Peters suggestion and drop the addr variable >> since its only used once in the Aarch64 loop. >> >> Reported-by: Amanieu d'Antras <amanieu@gmail.com> >> Signed-off-by: Riku Voipio <riku.voipio@linaro.org> > > Ah, I was just wondering this morning whether I ought > to do a version of this patch, so you've saved me the effort :-) > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > > (You might want to put the notes about v2 below the '---'.) If you do that, please just modify the entire patch description. I.e. don't talk about the type of a variable that doesn't exist. r~
diff --git a/linux-user/main.c b/linux-user/main.c index 5887022..5c14c1e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -1006,7 +1006,6 @@ void cpu_loop(CPUARMState *env) CPUState *cs = CPU(arm_env_get_cpu(env)); int trapnr, sig; target_siginfo_t info; - uint32_t addr; for (;;) { cpu_exec_start(cs); @@ -1042,12 +1041,11 @@ void cpu_loop(CPUARMState *env) /* fall through for segv */ case EXCP_PREFETCH_ABORT: case EXCP_DATA_ABORT: - addr = env->exception.vaddress; info.si_signo = SIGSEGV; info.si_errno = 0; /* XXX: check env->error_code */ info.si_code = TARGET_SEGV_MAPERR; - info._sifields._sigfault._addr = addr; + info._sifields._sigfault._addr = env->exception.vaddress; queue_signal(env, info.si_signo, &info); break; case EXCP_DEBUG: