summary refs log tree commit diff stats
path: root/results/classifier/zero-shot-user-mode/output/instruction/1847467
blob: c253d4ba4118d3b2acb31cc9e0401add60de46e0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
instruction: 0.717
runtime: 0.193
syscall: 0.090



qemu-x86_64 segment prefixes error

qemu-x86_64 version 4.1.0 (qemu-x86_64 version 4.0.0 also have the issue)

In 64-bit mode (x86_64) the DS, ES, SS or CS segment prefixes should be ignored; qemu-x86_64 does not ignore them.

example: an x86_64 instructions preceded by FS DS (0x64 0x26) segment prefixes have the linear address of its memory reference flat-mapped (as if DS was in action) whereas it should be FS-mapped (offset by FS_base, because the DS, ES, SS or CS are just ignored).


I attach a small C++ program that shows this discrepancy.

$ ./sample
I'm not in QEMU

$ qemu-x86_64 ./sample
I'm in QEMU