]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
x86: Ignore CS/DS/ES/SS segment-override prefixes in 64-bit mode
authorBorislav Petkov <bp@suse.de>
Sat, 14 Nov 2020 14:16:26 +0000 (06:16 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 14 Nov 2020 14:20:33 +0000 (06:20 -0800)
commit0fa0fc8539f4451bd1ed76867ba87a335e28ff31
treec010ef4ef967a84d7726f9d1b7f6231350e1e22c
parente8b2f0d952184fac8a230db181a4b9810729cd7b
x86: Ignore CS/DS/ES/SS segment-override prefixes in 64-bit mode

"In 64-bit mode, the CS, DS, ES, and SS segment-override prefixes have
no effect. These four prefixes are not treated as segment-override
prefixes for the purposes of multiple-prefix rules. Instead, they are
treated as null prefixes." (AMD APM v2).

However, objdump disassembles instructions containing those ignored
prefixes by still generating that segment override:

  66 66 2e 0f 1f 84 00  data16 nopw %cs:0x0(%rax,%rax,1)
  00 00 00 00

Print those segment override prefixes as excessive ones:

  66 66 2e 0f 1f 84 00    data16 cs nopw 0x0(%rax,%rax,1)
  00 00 00 00

which is what they actually are - they have no effect and the decoding
hardware ignores them.

gas/

2020-11-14  Borislav Petkov  <bp@suse.de>

* testsuite/gas/i386/x86-64-segovr.d: Adjust regexes.
* testsuite/gas/i386/x86-64-nops.d: Likewise.
* testsuite/gas/i386/x86-64-nops-1.d: Likewise.
* testsuite/gas/i386/x86-64-nops-1-g64.d: Likewise.
* testsuite/gas/i386/x86-64-nops-1-core2.d: Likewise.
* testsuite/gas/i386/x86-64-nops-1-k8.d: Likewise.
* testsuite/gas/i386/x86-64-nops-2.d: Likewise.
* testsuite/gas/i386/x86-64-nops-3.d: Likewise.
* testsuite/gas/i386/x86-64-nops-4.d: Likewise.
* testsuite/gas/i386/x86-64-nops-4-core2.d: Likewise.
* testsuite/gas/i386/x86-64-nops-4-k8.d: Likewise.
* testsuite/gas/i386/x86-64-nops-5.d: Likewise.
* testsuite/gas/i386/x86-64-nops-5-k8.d: Likewise.
* testsuite/gas/i386/x86-64-nops-7.d: Likewise.
* testsuite/gas/i386/x86-64-nop-1.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-1a.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-1b.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-1c.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-1d.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-1g.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-2c.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-6.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-7.d: Likewise.
* testsuite/gas/i386/x86-64-align-branch-8.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-1-k8.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-1.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-2.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-3.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-4-k8.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-4.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-5-k8.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops-5.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-nops.d:: Likewise.

ld/

2020-11-14  Borislav Petkov  <bp@suse.de>

* testsuite/ld-x86-64/pe-x86-64-4.od: Adjust regexes.
* testsuite/ld-x86-64/tlsld3.dd: Likewise.
* testsuite/ld-x86-64/tlsld4.dd: Likewise.

opcodes/

2020-11-14  Borislav Petkov  <bp@suse.de>

* i386-dis.c (ckprefix): Do not assign active_seg_prefix in
64-bit addressing mode.
(NOTRACK_Fixup): Test prefixes for PREFIX_DS, instead of
active_seg_prefix.
43 files changed:
gas/ChangeLog
gas/testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-1-k8.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-1.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-2.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-3.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-4-k8.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-4.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-5-k8.d
gas/testsuite/gas/i386/ilp32/x86-64-nops-5.d
gas/testsuite/gas/i386/ilp32/x86-64-nops.d
gas/testsuite/gas/i386/x86-64-align-branch-1a.d
gas/testsuite/gas/i386/x86-64-align-branch-1b.d
gas/testsuite/gas/i386/x86-64-align-branch-1c.d
gas/testsuite/gas/i386/x86-64-align-branch-1d.d
gas/testsuite/gas/i386/x86-64-align-branch-1g.d
gas/testsuite/gas/i386/x86-64-align-branch-2c.d
gas/testsuite/gas/i386/x86-64-align-branch-6.d
gas/testsuite/gas/i386/x86-64-align-branch-7.d
gas/testsuite/gas/i386/x86-64-align-branch-8.d
gas/testsuite/gas/i386/x86-64-nop-1.d
gas/testsuite/gas/i386/x86-64-nops-1-core2.d
gas/testsuite/gas/i386/x86-64-nops-1-g64.d
gas/testsuite/gas/i386/x86-64-nops-1-k8.d
gas/testsuite/gas/i386/x86-64-nops-1.d
gas/testsuite/gas/i386/x86-64-nops-2.d
gas/testsuite/gas/i386/x86-64-nops-3.d
gas/testsuite/gas/i386/x86-64-nops-4-core2.d
gas/testsuite/gas/i386/x86-64-nops-4-k8.d
gas/testsuite/gas/i386/x86-64-nops-4.d
gas/testsuite/gas/i386/x86-64-nops-5-k8.d
gas/testsuite/gas/i386/x86-64-nops-5.d
gas/testsuite/gas/i386/x86-64-nops-7.d
gas/testsuite/gas/i386/x86-64-nops.d
gas/testsuite/gas/i386/x86-64-segovr.d
ld/ChangeLog
ld/testsuite/ld-x86-64/align-branch-1.d
ld/testsuite/ld-x86-64/pe-x86-64-4.od
ld/testsuite/ld-x86-64/tlsld3.dd
ld/testsuite/ld-x86-64/tlsld4.dd
opcodes/ChangeLog
opcodes/i386-dis.c