LLVM API Documentation
Symbolize using user-provided, C API, callbacks. More...
#include <MCExternalSymbolizer.h>


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 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. For instance, in Mach-O, this is used to add annotations to instructions that use C string literals, as found in __cstring. | |
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. | |
Symbolize using user-provided, C API, callbacks.
Definition at line 28 of file MCExternalSymbolizer.h.
| llvm::MCExternalSymbolizer::MCExternalSymbolizer | ( | MCContext & | Ctx, |
| std::unique_ptr< MCRelocationInfo > | RelInfo, | ||
| LLVMOpInfoCallback | getOpInfo, | ||
| LLVMSymbolLookupCallback | symbolLookUp, | ||
| void * | disInfo | ||
| ) | [inline] |
Definition at line 41 of file MCExternalSymbolizer.h.
| void MCExternalSymbolizer::tryAddingPcLoadReferenceComment | ( | raw_ostream & | cStream, |
| int64_t | Value, | ||
| uint64_t | Address | ||
| ) | [override, 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 153 of file MCExternalSymbolizer.cpp.
References 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().
| bool MCExternalSymbolizer::tryAddingSymbolicOperand | ( | MCInst & | Inst, |
| raw_ostream & | cStream, | ||
| int64_t | Value, | ||
| uint64_t | Address, | ||
| bool | IsBranch, | ||
| uint64_t | Offset, | ||
| uint64_t | InstSize | ||
| ) | [override, 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.
Reimplemented in llvm::AArch64ExternalSymbolizer.
Definition at line 31 of file MCExternalSymbolizer.cpp.
References llvm::MCInst::addOperand(), LLVMOpInfo1::AddSymbol, llvm::MCConstantExpr::Create(), llvm::MCSymbolRefExpr::Create(), CreateAdd(), llvm::MCOperand::CreateExpr(), llvm::MCUnaryExpr::CreateMinus(), llvm::MCBinaryExpr::CreateSub(), llvm::MCSymbolizer::Ctx, DisInfo, GetOpInfo, llvm::MCContext::GetOrCreateSymbol(), LLVMDisassembler_ReferenceType_DeMangled_Name, LLVMDisassembler_ReferenceType_In_Branch, LLVMDisassembler_ReferenceType_InOut_None, LLVMDisassembler_ReferenceType_Out_Objc_Message, LLVMDisassembler_ReferenceType_Out_SymbolStub, llvm::LibFunc::memset, LLVMOpInfoSymbol1::Name, Name, LLVMOpInfoSymbol1::Present, llvm::MCSymbolizer::RelInfo, LLVMOpInfo1::SubtractSymbol, SymbolLookUp, LLVMOpInfoSymbol1::Value, LLVMOpInfo1::Value, and LLVMOpInfo1::VariantKind.
void* llvm::MCExternalSymbolizer::DisInfo [protected] |
The pointer to the block of symbolic information for above call back.
Definition at line 37 of file MCExternalSymbolizer.h.
Referenced by tryAddingPcLoadReferenceComment(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), and tryAddingSymbolicOperand().
Definition at line 33 of file MCExternalSymbolizer.h.
Referenced by llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), and tryAddingSymbolicOperand().
The function to lookup a symbol name.
Definition at line 35 of file MCExternalSymbolizer.h.
Referenced by tryAddingPcLoadReferenceComment(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), and tryAddingSymbolicOperand().