I spent the night studying linux-user end figured out the same correct fix. Just checking morning ML before sending the patch :)
Mine had "Suggested-by: Laurent Vivier <laur...@vivier.eu>" since he said on IRC "gdb will help" and indeed single stepping before the syscall the bug was obvious. On 01/24/2018 07:13 AM, Guido Günther wrote: > Unbreaks the testcase from > > http://lists.nongnu.org/archive/html/qemu-arm/2018-01/msg00514.html > > Thanks to Laurent Vivier for spotting the 7th one. > Signed-off-by: Guido Günther <a...@sigxcpu.org> Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> Tested-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > linux-user/host/aarch64/safe-syscall.inc.S | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/linux-user/host/aarch64/safe-syscall.inc.S > b/linux-user/host/aarch64/safe-syscall.inc.S > index 58a2329b37..bc1f5a9792 100644 > --- a/linux-user/host/aarch64/safe-syscall.inc.S > +++ b/linux-user/host/aarch64/safe-syscall.inc.S > @@ -36,7 +36,7 @@ safe_syscall_base: > * and return the result in x0 > * and the syscall instruction needs > * x8 == syscall number > - * x0 ... x7 == syscall arguments > + * x0 ... x6 == syscall arguments > * and returns the result in x0 > * Shuffle everything around appropriately. > */ > @@ -47,8 +47,8 @@ safe_syscall_base: > mov x2, x4 > mov x3, x5 > mov x4, x6 > - mov x6, x7 > - ldr x7, [sp] > + mov x5, x7 > + ldr x6, [sp] > > /* This next sequence of code works in conjunction with the > * rewind_if_safe_syscall_function(). If a signal is taken >
signature.asc
Description: OpenPGP digital signature