blob: e0900ebd8be1d218e0df35d806b812e8761d6d48 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
|