LLVM API Documentation
Symbolize using user-provided, C API, callbacks. More...
#include <MCExternalSymbolizer.h>
Public Member Functions | |
MCExternalSymbolizer (MCContext &Ctx, OwningPtr< 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 InstSize) |
Try to add a symbolic operand instead of Value to the MCInst. More... | |
void | tryAddingPcLoadReferenceComment (raw_ostream &CommentStream, int64_t Value, uint64_t Address) |
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. More... | |
![]() | |
MCSymbolizer (MCContext &Ctx, OwningPtr< MCRelocationInfo > &RelInfo) | |
Construct an MCSymbolizer, taking ownership of RelInfo . More... | |
virtual | ~MCSymbolizer () |
Additional Inherited Members | |
![]() | |
MCContext & | Ctx |
OwningPtr< MCRelocationInfo > | RelInfo |
Symbolize using user-provided, C API, callbacks.
Definition at line 27 of file MCExternalSymbolizer.h.
|
inline |
Definition at line 40 of file MCExternalSymbolizer.h.
|
virtual |
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 139 of file MCExternalSymbolizer.cpp.
References 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, and LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref.
|
virtual |
Try to add a symbolic operand instead of Value
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.
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. |
InstSize | - Size of the instruction in bytes. |
Implements llvm::MCSymbolizer.
Definition at line 31 of file MCExternalSymbolizer.cpp.
References llvm::MCInst::addOperand(), LLVMOpInfo1::AddSymbol, llvm::MCConstantExpr::Create(), llvm::MCSymbolRefExpr::Create(), llvm::MCBinaryExpr::CreateAdd(), llvm::MCOperand::CreateExpr(), llvm::MCUnaryExpr::CreateMinus(), llvm::MCBinaryExpr::CreateSub(), llvm::MCSymbolizer::Ctx, llvm::MCContext::GetOrCreateSymbol(), LLVMDisassembler_ReferenceType_In_Branch, LLVMDisassembler_ReferenceType_InOut_None, LLVMDisassembler_ReferenceType_Out_Objc_Message, LLVMDisassembler_ReferenceType_Out_SymbolStub, llvm::Intrinsic::memset, LLVMOpInfoSymbol1::Name, LLVMOpInfoSymbol1::Present, llvm::MCSymbolizer::RelInfo, LLVMOpInfo1::SubtractSymbol, LLVMOpInfoSymbol1::Value, LLVMOpInfo1::Value, and LLVMOpInfo1::VariantKind.