diff options
Diffstat (limited to 'lib/MC/MCDisassembler')
-rw-r--r-- | lib/MC/MCDisassembler/Disassembler.h | 8 | ||||
-rw-r--r-- | lib/MC/MCDisassembler/EDDisassembler.cpp | 4 | ||||
-rw-r--r-- | lib/MC/MCDisassembler/EDMain.cpp | 32 |
3 files changed, 24 insertions, 20 deletions
diff --git a/lib/MC/MCDisassembler/Disassembler.h b/lib/MC/MCDisassembler/Disassembler.h index 880a31a..322abd5 100644 --- a/lib/MC/MCDisassembler/Disassembler.h +++ b/lib/MC/MCDisassembler/Disassembler.h @@ -99,6 +99,14 @@ public: DisAsm.reset(disAsm); IP.reset(iP); } + const std::string &getTripleName() const { return TripleName; } + void *getDisInfo() const { return DisInfo; } + int getTagType() const { return TagType; } + LLVMOpInfoCallback getGetOpInfo() const { return GetOpInfo; } + LLVMSymbolLookupCallback getSymbolLookupCallback() const { + return SymbolLookUp; + } + const Target *getTarget() const { return TheTarget; } const MCDisassembler *getDisAsm() const { return DisAsm.get(); } const MCAsmInfo *getAsmInfo() const { return MAI.get(); } MCInstPrinter *getIP() { return IP.get(); } diff --git a/lib/MC/MCDisassembler/EDDisassembler.cpp b/lib/MC/MCDisassembler/EDDisassembler.cpp index b2672ca..1226f1a 100644 --- a/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/lib/MC/MCDisassembler/EDDisassembler.cpp @@ -44,7 +44,7 @@ struct TripleMap { const char *String; }; -static struct TripleMap triplemap[] = { +static const struct TripleMap triplemap[] = { { Triple::x86, "i386-unknown-unknown" }, { Triple::x86_64, "x86_64-unknown-unknown" }, { Triple::arm, "arm-unknown-unknown" }, @@ -256,7 +256,7 @@ void EDDisassembler::initMaps(const MCRegisterInfo ®isterInfo) { unsigned registerIndex; for (registerIndex = 0; registerIndex < numRegisters; ++registerIndex) { - const char* registerName = registerInfo.get(registerIndex).Name; + const char* registerName = registerInfo.getName(registerIndex); RegVec.push_back(registerName); RegRMap[registerName] = registerIndex; diff --git a/lib/MC/MCDisassembler/EDMain.cpp b/lib/MC/MCDisassembler/EDMain.cpp index c658717..5c065db 100644 --- a/lib/MC/MCDisassembler/EDMain.cpp +++ b/lib/MC/MCDisassembler/EDMain.cpp @@ -4,7 +4,7 @@ // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. -// +// //===----------------------------------------------------------------------===// // // This file implements the enhanced disassembler's public C API. @@ -34,9 +34,9 @@ int EDGetDisassembler(EDDisassemblerRef *disassembler, Syntax = EDDisassembler::kEDAssemblySyntaxARMUAL; break; } - + EDDisassemblerRef ret = EDDisassembler::getDisassembler(triple, Syntax); - + if (!ret) return -1; *disassembler = ret; @@ -70,18 +70,18 @@ unsigned int EDCreateInsts(EDInstRef *insts, uint64_t address, void *arg) { unsigned int index; - + for (index = 0; index < count; ++index) { EDInst *inst = ((EDDisassembler*)disassembler)->createInst(byteReader, address, arg); - + if (!inst) return index; - + insts[index] = inst; address += inst->byteSize(); } - + return count; } @@ -165,14 +165,14 @@ int EDTokenIsRegister(EDTokenRef token) { int EDTokenIsNegativeLiteral(EDTokenRef token) { if (((EDToken*)token)->type() != EDToken::kTokenLiteral) return -1; - + return ((EDToken*)token)->literalSign(); } int EDLiteralTokenAbsoluteValue(uint64_t *value, EDTokenRef token) { if (((EDToken*)token)->type() != EDToken::kTokenLiteral) return -1; - + return ((EDToken*)token)->literalAbsoluteValue(*value); } @@ -180,7 +180,7 @@ int EDRegisterTokenValue(unsigned *registerID, EDTokenRef token) { if (((EDToken*)token)->type() != EDToken::kTokenRegister) return -1; - + return ((EDToken*)token)->registerID(*registerID); } @@ -231,7 +231,7 @@ struct ByteReaderWrapper { EDByteBlock_t byteBlock; }; -static int readerWrapperCallback(uint8_t *byte, +static int readerWrapperCallback(uint8_t *byte, uint64_t address, void *arg) { struct ByteReaderWrapper *wrapper = (struct ByteReaderWrapper *)arg; @@ -245,13 +245,9 @@ unsigned int EDBlockCreateInsts(EDInstRef *insts, uint64_t address) { struct ByteReaderWrapper wrapper; wrapper.byteBlock = byteBlock; - - return EDCreateInsts(insts, - count, - disassembler, - readerWrapperCallback, - address, - (void*)&wrapper); + + return EDCreateInsts(insts, count, disassembler, readerWrapperCallback, + address, (void*)&wrapper); } int EDBlockEvaluateOperand(uint64_t *result, EDOperandRef operand, |