diff options
Diffstat (limited to 'gitlab/issues/target_i386/host_missing/accel_missing/837.toml')
| -rw-r--r-- | gitlab/issues/target_i386/host_missing/accel_missing/837.toml | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/gitlab/issues/target_i386/host_missing/accel_missing/837.toml b/gitlab/issues/target_i386/host_missing/accel_missing/837.toml new file mode 100644 index 000000000..2af3ee599 --- /dev/null +++ b/gitlab/issues/target_i386/host_missing/accel_missing/837.toml @@ -0,0 +1,40 @@ +id = 837 +title = "x86 user: icebp/int1 raises wrong signal" +state = "closed" +created_at = "2022-01-24T05:02:44.865Z" +closed_at = "2022-03-15T04:43:46.057Z" +labels = ["Closed::WontFix", "linux-user", "target: i386"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/837" +host-os = "MX Linux 21/Debian 11" +host-arch = "x86_64" +qemu-version = "6.2.0" +guest-os = "linux-user" +guest-arch = "i386, x86_64" +description = """This is a relatively minor inaccuracy. When `icebp` (`F1`) is executed, it raises `SIGILL` in QEMU, where the behavior on baremetal Linux (on an old Intel Core i5-430m) is to raise `SIGTRAP`. + +Specifically, on the architectural level, `icebp` raises `#DB` without affecting `dr6`. + +This also happens on an AArch64 host. +``` +$ ./icebp +Trace/breakpoint trap +$ qemu-x86_64 ./icebp +qemu: uncaught target signal 4 (Illegal instruction) - core dumped +Illegal instruction +```""" +reproduce = """1. Compile this file using `gcc -nostdlib -static icebp.S -o icebp`, optionally with `-m32` to test i386 +``` + .globl _start +_start: + .byte 0xF1 // gas doesn't assemble this instruction opcode but it disassembles it +#ifdef __x86_64__ + mov $60, %eax + syscall +#else + mov $1, %eax + int $0x80 +#endif +``` +2. Run on baremetal. Notice how it raises `SIGTRAP` according to the shell job control message +3. Run on qemu-user. Notice how it raises `SIGILL`.""" +additional = "n/a" |