qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH for-7.0] linux-user: Fix syscall parameter handling for MIPS


From: Richard Henderson
Subject: Re: [PATCH for-7.0] linux-user: Fix syscall parameter handling for MIPS n32
Date: Sun, 20 Mar 2022 11:03:27 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 3/19/22 22:22, WANG Xuerui wrote:
The MIPS n32 ABI is basically n64 with the address space (i.e. pointer
width) shrinked to 32 bits. Meanwhile the current code treats it as
o32-like based on TARGET_ABI_BITS, which causes problems with n32
syscalls utilizing 64-bit offsets, like pread64, affecting most (if not
all) recently built n32 binaries.

This partially solves issue #909 ("qemu-mipsn32(el) user mode emulator
fails to execute any recently built n32 binaries"); with this change
applied, the built qemu-mipsn32el is able to progress beyond the
pread64, and finish _dl_start_user for the "getting ld.so load libc.so"
case. The program later dies with SIGBUS, though, due to _dl_start_user
not maintaining stack alignment after removing ld.so itself from argv,
and qemu-user starting to enforce alignment recently, but that is
orthogonal to the issue here; the more common case of chrooting is
working, verified with my own-built Gentoo n32 sysroot. (Depending on
the exact ISA used, one may have to explicitly specify QEMU_CPU, which
is the case for my chroot.)

Buglink:https://gitlab.com/qemu-project/qemu/-/issues/909
Signed-off-by: WANG Xuerui<xen0n@gentoo.org>
Cc: Laurent Vivier<laurent@vivier.eu>
Cc: Philippe Mathieu-Daudé<f4bug@amsat.org>
Cc: Jiaxun Yang<jiaxun.yang@flygoat.com>
Cc: Andreas K. Hüttel<dilfridge@gentoo.org>

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~




reply via email to

[Prev in Thread] Current Thread [Next in Thread]