qemu/linux-user
WANG Xuerui 7bf36a5c52
linux-user: Fix struct statfs ABI on loongarch64
Previously the 32-bit version was incorrectly chosen, leading to funny
but incorrect output from e.g. df(1). Simply select the version
corresponding to the 64-bit asm-generic definition.

For reference, this program should produce the same output no matter
natively compiled or not, for loongarch64 or not:

```c
#include <stdio.h>
#include <sys/statfs.h>

int main(int argc, const char *argv[])
{
  struct statfs b;
  if (statfs(argv[0], &b))
    return 1;

  printf("f_type = 0x%lx\n", b.f_type);
  printf("f_bsize = %ld\n", b.f_bsize);
  printf("f_blocks = %ld\n", b.f_blocks);
  printf("f_bfree = %ld\n", b.f_bfree);
  printf("f_bavail = %ld\n", b.f_bavail);

  return 0;
}

// Example output on my amd64 box, with the test binary residing on a
// btrfs partition.

// Native and emulated output after the fix:
//
// f_type = 0x9123683e
// f_bsize = 4096
// f_blocks = 268435456
// f_bfree = 168406890
// f_bavail = 168355058

// Output before the fix, note the messed layout:
//
// f_type = 0x10009123683e
// f_bsize = 723302085239504896
// f_blocks = 168355058
// f_bfree = 2250817541779750912
// f_bavail = 1099229433104
```

Fixes: 1f63019632 ("linux-user: Add LoongArch syscall support")
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
Cc: Song Gao <gaosong@loongson.cn>
Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
Cc: Andreas K. Hüttel <dilfridge@gentoo.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Andreas K. Huettel <dilfridge@gentoo.org>
Message-Id: <20221006100710.427252-1-xen0n@gentoo.org>
Signed-off-by: Song Gao <gaosong@loongson.cn>
2022-10-17 10:28:35 +08:00
..
aarch64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
alpha linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
arm linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
cris linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
generic linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
hexagon linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
hppa linux-user/hppa: Fix setup_sigcontext() 2022-09-27 13:19:05 +02:00
i386 linux-user: i386/signal: support XSAVE/XRSTOR for signal frame fpstate 2022-10-11 10:27:35 +02:00
include linux-user/host/s390: Add vector instructions to host_signal_write() 2022-09-23 15:16:16 +02:00
loongarch64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
m68k linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
microblaze linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
mips linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
mips64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
nios2 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
openrisc linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
ppc linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
riscv linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
s390x linux-user/s390x: Save/restore fpc when handling a signal 2022-09-27 13:19:05 +02:00
sh4 target/sh4: Fix TB_FLAG_UNALIGN 2022-10-04 12:33:05 -07:00
sparc linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
x86_64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
xtensa linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
cpu_loop-common.h linux-user: Log failing executable in EXCP_DUMP() 2022-09-27 09:29:33 +02:00
elfload.c linux-user: Set ELF_BASE_PLATFORM for MIPS 2022-09-27 13:19:05 +02:00
errnos.c.inc linux-user: Simplify host <-> target errno conversion using macros 2021-07-12 21:53:35 +02:00
exit.c linux-user: Don't include gdbstub.h in qemu.h 2021-09-13 20:35:45 +02:00
fd-trans.c linux-user: Fix inotify on aarch64 2022-01-27 16:58:33 +01:00
fd-trans.h fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
flat.h linux-user/: fix some comment spelling errors 2020-09-17 20:39:22 +02:00
flatload.c linux-user/flatload.c: Fix setting of image_info::end_code 2022-07-28 19:17:24 +02:00
ioctls.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linux_loop.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linuxload.c linux-user: Clean up arg_start/arg_end confusion 2022-05-23 08:15:19 +02:00
loader.h linux-user: Split loader-related prototypes into loader.h 2021-09-13 20:35:44 +02:00
main.c plugins: add [pre|post]fork helpers to linux-user 2022-10-06 11:53:41 +01:00
meson.build user: move common-user includes to a subdirectory of {bsd,linux}-user/ 2022-01-12 14:08:29 +01:00
mmap.c linux-user/hppa: Allow PROT_GROWSUP and PROT_GROWSDOWN in mprotect() 2022-09-27 13:18:53 +02:00
qemu.h linux-user: Honor PT_GNU_STACK 2022-09-06 08:04:25 +01:00
semihost.c semihosting: Remove qemu_semihosting_console_outs 2022-06-28 04:41:20 +05:30
signal-common.h linux-user: Add missing signals in strace output 2022-09-27 09:29:33 +02:00
signal.c linux-user: Add missing signals in strace output 2022-09-27 09:29:33 +02:00
socket.h Supply missing header guards 2019-06-12 13:20:21 +02:00
strace.c linux-user: Lock log around strace 2022-09-27 13:19:05 +02:00
strace.h linux-user: Have do_syscall() use CPUArchState* instead of void* 2022-05-23 22:47:19 +02:00
strace.list linux-user: Add parameters of getrandom() syscall for strace 2022-09-28 22:24:42 +02:00
syscall_defs.h linux-user: Fix struct statfs ABI on loongarch64 2022-10-17 10:28:35 +08:00
syscall_types.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
syscall.c linux-user: Implement PI futexes 2022-09-27 13:19:05 +02:00
target_flat.h Supply missing header guards 2019-06-12 13:20:21 +02:00
thunk.c linux-user: Move thunk.c from top-level 2021-12-20 10:12:29 -08:00
trace-events linux-user: Rename user_force_sig tracepoint to match function name 2022-01-18 12:41:42 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uaccess.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.c linux-user: Remove pointless CPU{ARCH}State casts 2022-05-23 22:47:20 +02:00
uname.h linux-user: Have do_syscall() use CPUArchState* instead of void* 2022-05-23 22:47:19 +02:00
user-internals.h linux-user: Add partial support for MADV_DONTNEED 2022-06-24 10:00:00 +02:00
user-mmap.h linux-user: Add partial support for MADV_DONTNEED 2022-06-24 10:00:00 +02:00
vm86.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00