id = 2248 title = "qemu-aarch64: wrong execution result when executing the code" state = "closed" created_at = "2024-03-26T04:50:35.585Z" closed_at = "2024-03-31T15:41:51.586Z" labels = ["Closed::Fixed", "accel: TCG", "kind::Bug", "target: arm"] url = "https://gitlab.com/qemu-project/qemu/-/issues/2248" host-os = "Ubuntu 22.04.4 LTS" host-arch = "x86_64" qemu-version = "8.2.1, 8.2.2, 9.0.0-rc0, latest commit 6a4180af9686830d88c387baab6d79563ce42a15" guest-os = "n/a" guest-arch = "n/a" description = """The following aarch64 code results in the wrong execution result `4611686018427387903`, which is `0x3fffffffffffffff`. (The correct result is `-1`) The bug seems to be introduced in between v8.1.5 and v8.2.1 since the results are correct in v8.1.5. ```c // foo.c #include #include int64_t callme(size_t _1, size_t _2, int64_t a, int64_t b, int64_t c); int main() { int64_t ret = callme(0, 0, 0, 1, 2); printf("%ld\\n", ret); return 0; } ``` ```s // foo.S .global callme callme: cmp x2, x3 cset x12, lt and w11, w12, #0xff cmp w11, #0x0 csetm x14, ne lsr x13, x14, x4 sxtb x0, w13 ret ```""" reproduce = """1. Build the code with `aarch64-linux-gnu-gcc foo.c foo.S -o foo` (`aarch64-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0`) 2. Run the code with `qemu-aarch64 -L /usr/aarch64-linux-gnu -E LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib foo` and see the result""" additional = """- Original discussion is held in [this wasmtime issue](https://github.com/bytecodealliance/wasmtime/issues/8233). Thanks to Alex Crichton for clarifying this bug."""