architecture: 0.911 i386: 0.863 x86: 0.855 performance: 0.825 device: 0.761 user-level: 0.745 kernel: 0.661 semantic: 0.651 ppc: 0.543 vnc: 0.537 graphic: 0.527 assembly: 0.499 debug: 0.484 PID: 0.473 TCG: 0.458 peripherals: 0.456 risc-v: 0.454 arm: 0.447 VMM: 0.435 network: 0.432 hypervisor: 0.382 mistranslation: 0.366 boot: 0.362 socket: 0.269 files: 0.259 virtual: 0.239 KVM: 0.221 register: 0.203 permissions: 0.188 -------------------- user-level: 0.934 debug: 0.853 i386: 0.518 x86: 0.488 virtual: 0.260 files: 0.122 TCG: 0.078 hypervisor: 0.054 kernel: 0.047 ppc: 0.027 architecture: 0.021 PID: 0.019 register: 0.018 semantic: 0.013 KVM: 0.012 performance: 0.011 device: 0.007 VMM: 0.005 network: 0.005 arm: 0.003 assembly: 0.003 socket: 0.003 peripherals: 0.002 graphic: 0.002 permissions: 0.001 boot: 0.001 vnc: 0.001 risc-v: 0.000 mistranslation: 0.000 linux-user: --strace incorrectly decodes writev arguments for 64-bit binaries on 32-bit machine Description of problem: With `--strace`, the arguments to `writev` appear to be decoded incorrectly. The syscall still succeeds and has the expected effects. Steps to reproduce: ``` $ cat main.c #include int main(void) { struct iovec iov; iov.iov_base = "hello, world!\n"; iov.iov_len = 14; return writev(1, &iov, 1); } $ aarch64-unknown-linux-gnu-gcc -static -o aarch64-main main.c $ x86_64-pc-linux-gnu-gcc -static -o x86_64-main main.c $ i686-pc-linux-gnu-gcc -static -o i686-main main.c $ ./i686-main hello, world! $ strace ./i686-main |& grep writev writev(1, [{iov_base="hello, world!\n", iov_len=14}], 1hello, world! $ qemu-i386 --strace ./i686-main |& grep writev 21953 writev(1,0x407ffe54,0x1) = 14 $ qemu-x86_64 --strace ./x86_64-main |& grep writev 22218 writev(1,(nil),0x407ffcc0) = 14 $ qemu-aarch64 --strace ./aarch64-main |& grep writev 22523 writev(1,(nil),0x407ffcc8) = 14 ```