qemu/linux-user
Helge Deller 38dd78c41e linux-user/armeb: Fix __kernel_cmpxchg() for armeb
Commit 7f4f0d9ea8 ("linux-user/arm: Implement __kernel_cmpxchg with host
atomics") switched to use qatomic_cmpxchg() to swap a word with the memory
content, but missed to endianess-swap the oldval and newval values when
emulating an armeb CPU, which expects words to be stored in big endian in
the guest memory.

The bug can be verified with qemu >= v7.0 on any little-endian host, when
starting the armeb binary of the upx program, which just hangs without
this patch.

Cc: qemu-stable@nongnu.org
Signed-off-by: Helge Deller <deller@gmx.de>
Reported-by: "Markus F.X.J. Oberhumer" <markus@oberhumer.com>
Reported-by: John Reiser <jreiser@BitWagon.com>
Closes: https://github.com/upx/upx/issues/687
Message-Id: <ZMQVnqY+F+5sTNFd@p100>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2023-07-31 12:19:13 -07:00
..
aarch64 linux-user: Split TARGET_PROT_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
alpha linux-user: Split TARGET_MAP_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
arm linux-user/armeb: Fix __kernel_cmpxchg() for armeb 2023-07-31 12:19:13 -07:00
cris
generic linux-user: Split TARGET_PROT_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
hexagon Hexagon (linux-user/hexagon): handle breakpoints 2023-05-18 12:40:52 -07:00
hppa linux-user: Split TARGET_MAP_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
i386 target/i386: emulate 64-bit ring 0 for linux-user if LM feature is set 2023-06-29 10:49:43 +02:00
include
loongarch64
m68k
microblaze
mips linux-user: Split TARGET_PROT_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
mips64 linux-user: Split TARGET_MAP_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
nios2
openrisc
ppc linux-user: Split TARGET_MAP_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
riscv linux-user/riscv: Add syscall riscv_hwprobe 2023-07-10 22:29:15 +10:00
s390x linux-user/s390x: Fix single-stepping SVC 2023-06-05 07:27:23 +02:00
sh4
sparc linux-user: Split TARGET_MAP_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
x86_64
xtensa linux-user: Split TARGET_PROT_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
cpu_loop-common.h
elfload.c Revert "linux-user: Fix qemu-arm to run static armhf binaries" 2023-07-22 19:54:22 +03:00
errnos.c.inc
exit.c
fd-trans.c
fd-trans.h
flat.h
flatload.c
ioctls.h
linux_loop.h
linuxload.c
loader.h linux-user/elfload: Introduce elf_hwcap_str() on s390x 2023-06-05 20:48:34 +02:00
main.c linux-user, bsd-user: Preserve incoming order of environment variables in the target 2023-06-13 11:28:53 +02:00
meson.build
mmap.c include/exec: Add WITH_MMAP_LOCK_GUARD 2023-07-23 17:57:10 +01:00
qemu.h accel/tcg: Return bool from page_check_range 2023-07-15 08:02:32 +01:00
semihost.c
signal-common.h
signal.c
socket.h
strace.c linux-user: Fix strace output for old_mmap 2023-07-18 20:42:05 +02:00
strace.h
strace.list linux-user: Improve strace output of pread64() and pwrite64() 2023-07-08 16:55:08 +02:00
syscall.c linux-user: Fix signed math overflow in brk() syscall 2023-07-18 20:42:05 +02:00
syscall_defs.h linux-user: Split TARGET_PROT_* out of syscall_defs.h 2023-07-15 08:02:32 +01:00
syscall_types.h
thunk.c
trace-events
trace.h
uaccess.c
uname.c
uname.h
user-internals.h
user-mmap.h linux-user: Widen target_mmap offset argument to off_t 2023-07-15 08:02:32 +01:00
vm86.c