linux-user/flatload: fix initial stack pointer alignment
commit5c76d652ab567a230f2ef0022b7ea5acb693e19c
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 24 Oct 2018 02:30:02 +0000 (23 19:30 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 30 Oct 2018 18:23:32 +0000 (30 11:23 -0700)
treef6f33897d598f177feaf88fdd68e578d523cbb92
parent02e33e9ffd6056657e6f82ee7b942c3bc8060cbe
linux-user/flatload: fix initial stack pointer alignment

Stack pointer alignment code incorrectly adds stack_size to sp instead
of subtracting it. It also does not take flat_argvp_envp_on_stack() into
account when calculating stack_size. This results in initial stack
pointer misalignment with certain set of command line arguments and
environment variables and correct alignment for the same binary with a
different set of arguments. This misalignment causes failures in the
following tests in the testsuite of gcc built for xtensa uclinux:

  gcc.dg/torture/vshuf-v64qi.c
  gcc.dg/torture/vshuf-v8sf.c
  gcc.dg/torture/vshuf-v8si.c

Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
linux-user/flatload.c