aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
diff options
context:
space:
mode:
authorAndrew Ng <andrew.ng@sony.com>2021-01-27 16:47:21 +0000
committerAndrew Ng <andrew.ng@sony.com>2021-02-02 11:35:00 +0000
commit94fedd266125a5425aa33e11332bf414f0b6dc35 (patch)
tree28c6ae695332774e460429fd819025ec629e4203 /llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
parent0a2a260aab177bfbdef5829ea16e39323ce50916 (diff)
downloadllvm-94fedd266125a5425aa33e11332bf414f0b6dc35.zip
llvm-94fedd266125a5425aa33e11332bf414f0b6dc35.tar.gz
llvm-94fedd266125a5425aa33e11332bf414f0b6dc35.tar.bz2
[X86] Fix disassembly of x86-64 GDTLS code sequence
For x86-64 the REX.w prefix takes precedence over any other size override (i.e. 0x66). Therefore, for x86-64 when REX.w is present set 'hasOpSize' to false to ensure that any size override is ignored. Fixes PR48901. Differential Revision: https://reviews.llvm.org/D95682
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
index 05e482a..4e6d8e8 100644
--- a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
+++ b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
@@ -492,6 +492,7 @@ static int readPrefixes(struct InternalInstruction *insn) {
insn->addressSize = (insn->hasAdSize ? 4 : 8);
insn->displacementSize = 4;
insn->immediateSize = 4;
+ insn->hasOpSize = false;
} else {
insn->registerSize = (insn->hasOpSize ? 2 : 4);
insn->addressSize = (insn->hasAdSize ? 4 : 8);