diff options
| author | Owen Anderson <resistor@mac.com> | 2011-08-17 17:44:15 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2011-08-17 17:44:15 +0000 |
| commit | a4043c4b3237c4c37b3a1aba838e6255be4fb742 (patch) | |
| tree | 400786eb5474d9a5da56ae61b08bd1d80f5af242 /llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp | |
| parent | 3fce368d879815920f384ffb44177e447ef411c6 (diff) | |
| download | bcm5719-llvm-a4043c4b3237c4c37b3a1aba838e6255be4fb742.tar.gz bcm5719-llvm-a4043c4b3237c4c37b3a1aba838e6255be4fb742.zip | |
Allow the MCDisassembler to return a "soft fail" status code, indicating an instruction that is disassemblable, but invalid. Only used for ARM UNPREDICTABLE instructions at the moment.
Patch by James Molloy.
llvm-svn: 137830
Diffstat (limited to 'llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp index 4a0d2ec727a..3ea3add1d16 100644 --- a/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp +++ b/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp @@ -106,11 +106,12 @@ static void logger(void* arg, const char* log) { // Public interface for the disassembler // -bool X86GenericDisassembler::getInstruction(MCInst &instr, - uint64_t &size, - const MemoryObject ®ion, - uint64_t address, - raw_ostream &vStream) const { +MCDisassembler::DecodeStatus +X86GenericDisassembler::getInstruction(MCInst &instr, + uint64_t &size, + const MemoryObject ®ion, + uint64_t address, + raw_ostream &vStream) const { InternalInstruction internalInstr; int ret = decodeInstruction(&internalInstr, @@ -123,11 +124,11 @@ bool X86GenericDisassembler::getInstruction(MCInst &instr, if (ret) { size = internalInstr.readerCursor - address; - return false; + return Fail; } else { size = internalInstr.length; - return !translateInstruction(instr, internalInstr); + return (!translateInstruction(instr, internalInstr)) ? Success : Fail; } } |

