summaryrefslogtreecommitdiff
path: root/include/llvm/MC/MCDisassembler.h
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2013-05-24 22:51:52 +0000
committerQuentin Colombet <qcolombet@apple.com>2013-05-24 22:51:52 +0000
commitde7cbbfcce5c068f0699bdcb6dac093c0c91ba6f (patch)
tree5ab055706a3d1e3379dd568d4ee386fa2563f518 /include/llvm/MC/MCDisassembler.h
parentfce7b6b5d9905bf35641ee7f001b6b66dbc26c2d (diff)
downloadllvm-de7cbbfcce5c068f0699bdcb6dac093c0c91ba6f.tar.gz
llvm-de7cbbfcce5c068f0699bdcb6dac093c0c91ba6f.tar.bz2
llvm-de7cbbfcce5c068f0699bdcb6dac093c0c91ba6f.tar.xz
Follow up of the introduction of MCSymbolizer.
- Ressurect old MCDisassemble API to soften transition. - Extend MCTargetDesc to set target specific symbolizer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182688 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCDisassembler.h')
-rw-r--r--include/llvm/MC/MCDisassembler.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/include/llvm/MC/MCDisassembler.h b/include/llvm/MC/MCDisassembler.h
index 5ad2d98019..e82b0c1229 100644
--- a/include/llvm/MC/MCDisassembler.h
+++ b/include/llvm/MC/MCDisassembler.h
@@ -56,7 +56,9 @@ public:
};
/// Constructor - Performs initial setup for the disassembler.
- MCDisassembler(const MCSubtargetInfo &STI) : STI(STI), Symbolizer(0),
+ MCDisassembler(const MCSubtargetInfo &STI) : GetOpInfo(0), SymbolLookUp(0),
+ DisInfo(0), Ctx(0),
+ STI(STI), Symbolizer(0),
CommentStream(0) {}
virtual ~MCDisassembler();
@@ -83,12 +85,23 @@ public:
uint64_t address,
raw_ostream &vStream,
raw_ostream &cStream) const = 0;
+private:
+ //
+ // Hooks for symbolic disassembly via the public 'C' interface.
+ //
+ // The function to get the symbolic information for operands.
+ LLVMOpInfoCallback GetOpInfo;
+ // The function to lookup a symbol name.
+ LLVMSymbolLookupCallback SymbolLookUp;
+ // The pointer to the block of symbolic information for above call back.
+ void *DisInfo;
+ // The assembly context for creating symbols and MCExprs in place of
+ // immediate operands when there is symbolic information.
+ MCContext *Ctx;
protected:
// Subtarget information, for instruction decoding predicates if required.
const MCSubtargetInfo &STI;
-
-private:
OwningPtr<MCSymbolizer> Symbolizer;
public:
@@ -111,6 +124,13 @@ public:
MCContext *Ctx,
OwningPtr<MCRelocationInfo> &RelInfo);
+ LLVMOpInfoCallback getLLVMOpInfoCallback() const { return GetOpInfo; }
+ LLVMSymbolLookupCallback getLLVMSymbolLookupCallback() const {
+ return SymbolLookUp;
+ }
+ void *getDisInfoBlock() const { return DisInfo; }
+ MCContext *getMCContext() const { return Ctx; }
+
// Marked mutable because we cache it inside the disassembler, rather than
// having to pass it around as an argument through all the autogenerated code.
mutable raw_ostream *CommentStream;