linux-user: fix ELF load alignment error
commit33143c446eb88de28ea3088b279feda8f693e398
authorLaurent Vivier <laurent@vivier.eu>
Mon, 16 Jul 2018 19:53:49 +0000 (16 21:53 +0200)
committerLaurent Vivier <laurent@vivier.eu>
Sun, 22 Jul 2018 19:32:50 +0000 (22 21:32 +0200)
tree5301441d6ca8958b24bd207ce71817cf8da6afe7
parent5b3ecd3d941a0ae8a8cfbba5ab8139b2bf104822
linux-user: fix ELF load alignment error

When we try to use some targets on ppc64, it can happen the target
doesn't support the host page size to align ELF load sections and
fails with:

  ELF load command alignment not page-aligned

Since commit a70daba3771 ("linux-user: Tell guest about big host
page sizes") the host page size is used to align ELF sections, but
this doesn't work if the alignment required by the load section is
smaller than the host one.  For these cases, we continue to use the
TARGET_PAGE_SIZE instead of the host one.

I have tested this change on ppc64, and it fixes qemu linux-user for:
  s390x, m68k, i386, arm, aarch64, hppa
and I have tested it doesn't break the following targets:
  x86_64, mips64el, sh4
mips and mipsel abort, but I think for another reason.

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
[lv: fixed "info->alignment = 0"]
Message-Id: <20180716195349.29959-1-laurent@vivier.eu>
linux-user/elfload.c
linux-user/qemu.h