From de7cbbfcce5c068f0699bdcb6dac093c0c91ba6f Mon Sep 17 00:00:00 2001 From: Quentin Colombet Date: Fri, 24 May 2013 22:51:52 +0000 Subject: 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 --- include/llvm/MC/MCDisassembler.h | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'include/llvm/MC/MCDisassembler.h') 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 Symbolizer; public: @@ -111,6 +124,13 @@ public: MCContext *Ctx, OwningPtr &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; -- cgit v1.2.3