summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2017-10-22 04:32:30 +0000
committerCraig Topper <craig.topper@intel.com>2017-10-22 04:32:30 +0000
commit158bc6474a5192bb42e8d03944ad0b689e6e2d56 (patch)
tree9d704df28791d3885aea9168949e4b432cf94d15 /llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
parent53a9aff93e62b2bc54e239523df52b479d4d584e (diff)
downloadbcm5719-llvm-158bc6474a5192bb42e8d03944ad0b689e6e2d56.tar.gz
bcm5719-llvm-158bc6474a5192bb42e8d03944ad0b689e6e2d56.zip
[X86] Don't allow gather/scatter to disassembler if memory operand does not use a SIB byte.
Fixes PR34998. llvm-svn: 316282
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp')
-rw-r--r--llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
index 6884f2a80de..e781c98b0bc 100644
--- a/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
+++ b/llvm/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp
@@ -1723,6 +1723,10 @@ static int readOperands(struct InternalInstruction* insn) {
if (readModRM(insn))
return -1;
+ // Reject if SIB wasn't used.
+ if (insn->eaBase != EA_BASE_sib && insn->eaBase != EA_BASE_sib64)
+ return -1;
+
// If sibIndex was set to SIB_INDEX_NONE, index offset is 4.
if (insn->sibIndex == SIB_INDEX_NONE)
insn->sibIndex = (SIBIndex)4;
OpenPOWER on IntegriCloud