LLVM: llvm::MCExternalSymbolizer Class Reference (original) (raw)

Symbolize using user-provided, C API, callbacks. More...

#include "[llvm/MC/MCDisassembler/MCExternalSymbolizer.h](MCExternalSymbolizer%5F8h%5Fsource.html)"

Public Member Functions
MCExternalSymbolizer (MCContext &Ctx, std::unique_ptr< MCRelocationInfo > RelInfo, LLVMOpInfoCallback getOpInfo, LLVMSymbolLookupCallback symbolLookUp, void *disInfo)
bool tryAddingSymbolicOperand (MCInst &MI, raw_ostream &CommentStream, int64_t Value, uint64_t Address, bool IsBranch, uint64_t Offset, uint64_t OpSize, uint64_t InstSize) override
Try to add a symbolic operand instead of Value to the MCInst.
void tryAddingPcLoadReferenceComment (raw_ostream &CommentStream, int64_t Value, uint64_t Address) override
Try to add a comment on the PC-relative load.
Public Member Functions inherited from llvm::MCSymbolizer
MCSymbolizer (MCContext &Ctx, std::unique_ptr< MCRelocationInfo > RelInfo)
Construct an MCSymbolizer, taking ownership of RelInfo.
MCSymbolizer (const MCSymbolizer &)=delete
MCSymbolizer & operator= (const MCSymbolizer &)=delete
virtual ~MCSymbolizer ()
virtual ArrayRef< uint64_t > getReferencedAddresses () const
Get the MCSymbolizer's list of addresses that were referenced by symbolizable operands but not resolved to a symbol.
Protected Attributes
Hooks for symbolic disassembly via the public 'C' interface.
The function to get the symbolic information for operands.
LLVMOpInfoCallback GetOpInfo
LLVMSymbolLookupCallback SymbolLookUp
The function to lookup a symbol name.
void * DisInfo
The pointer to the block of symbolic information for above call back.
Protected Attributes inherited from llvm::MCSymbolizer
MCContext & Ctx
std::unique_ptr< MCRelocationInfo > RelInfo

Symbolize using user-provided, C API, callbacks.

See llvm-c/Disassembler.h.

Definition at line 27 of file MCExternalSymbolizer.h.

tryAddingPcLoadReferenceComment()

void MCExternalSymbolizer::tryAddingPcLoadReferenceComment ( raw_ostream & cStream, int64_t Value, uint64_t Address ) overridevirtual

Try to add a comment on the PC-relative load.

For instance, in Mach-O, this is used to add annotations to instructions that use C string literals, as found in __cstring.

Implements llvm::MCSymbolizer.

Definition at line 153 of file MCExternalSymbolizer.cpp.

References llvm::Address, DisInfo, LLVMDisassembler_ReferenceType_In_PCrel_Load, LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr, LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr, LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref, LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref, LLVMDisassembler_ReferenceType_Out_Objc_Message, LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref, LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref, SymbolLookUp, and llvm::raw_ostream::write_escaped().

tryAddingSymbolicOperand()

Try to add a symbolic operand instead of [Value](classllvm%5F1%5F1Value.html "LLVM Value Representation.") to the MCInst.

Instead of having a difficult to read immediate, a symbolic operand would represent this immediate in a more understandable way, for instance as a symbol or an offset from a symbol. Relocations can also be used to enrich the symbolic expression.

Parameters

Inst - The MCInst where to insert the symbolic operand.
cStream - Stream to print comments and annotations on.
Value - Operand value, pc-adjusted by the caller if necessary.
Address - Load address of the instruction.
IsBranch - Is the instruction a branch?
Offset - Byte offset of the operand inside the inst.
OpSize - Size of the operand in bytes.
InstSize - Size of the instruction in bytes.

Returns

Whether a symbolic operand was added.

Implements llvm::MCSymbolizer.

Definition at line 35 of file MCExternalSymbolizer.cpp.

References llvm::Add, llvm::Address, LLVMOpInfo1::AddSymbol, llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::MCOperand::createExpr(), llvm::MCUnaryExpr::createMinus(), llvm::MCBinaryExpr::createSub(), llvm::MCSymbolizer::Ctx, DisInfo, GetOpInfo, LLVMDisassembler_ReferenceType_DeMangled_Name, LLVMDisassembler_ReferenceType_In_Branch, LLVMDisassembler_ReferenceType_InOut_None, LLVMDisassembler_ReferenceType_Out_Objc_Message, LLVMDisassembler_ReferenceType_Out_SymbolStub, MI, LLVMOpInfoSymbol1::Name, llvm::Offset, LLVMOpInfoSymbol1::Present, llvm::MCSymbolizer::RelInfo, llvm::Sub, LLVMOpInfo1::SubtractSymbol, SymbolLookUp, LLVMOpInfo1::Value, LLVMOpInfoSymbol1::Value, and LLVMOpInfo1::VariantKind.

DisInfo

void* llvm::MCExternalSymbolizer::DisInfo protected

GetOpInfo

SymbolLookUp


The documentation for this class was generated from the following files: