class MCSymbolizer
Declaration
class MCSymbolizer { /* full declaration omitted */ };
Description
Symbolize and annotate disassembled instructions. For now this mimics the old symbolization logic (from both ARM and x86), that relied on user-provided (C API) callbacks to do the actual symbol lookup in the object file. This was moved to MCExternalSymbolizer. A better API would not rely on actually calling the two methods here from inside each disassembler, but would use the instr info to determine what operands are actually symbolizable, and in what way. I don't think this information exists right now.
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:38
Member Variables
- protected llvm::MCContext& Ctx
- protected std::unique_ptr<MCRelocationInfo> RelInfo
Method Overview
- public MCSymbolizer(llvm::MCContext & Ctx, std::unique_ptr<MCRelocationInfo> RelInfo)
- public MCSymbolizer(const llvm::MCSymbolizer &)
- public virtual void tryAddingPcLoadReferenceComment(llvm::raw_ostream & cStream, int64_t Value, uint64_t Address)
- public virtual bool tryAddingSymbolicOperand(llvm::MCInst & Inst, llvm::raw_ostream & cStream, int64_t Value, uint64_t Address, bool IsBranch, uint64_t Offset, uint64_t InstSize)
- public virtual ~MCSymbolizer()
Methods
¶MCSymbolizer(
llvm::MCContext& Ctx,
std::unique_ptr<MCRelocationInfo> RelInfo)
MCSymbolizer(
llvm::MCContext& Ctx,
std::unique_ptr<MCRelocationInfo> RelInfo)
Description
Construct an MCSymbolizer, taking ownership of \p RelInfo.
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:45
Parameters
- llvm::MCContext& Ctx
- std::unique_ptr<MCRelocationInfo> RelInfo
¶MCSymbolizer(const llvm::MCSymbolizer&)
MCSymbolizer(const llvm::MCSymbolizer&)
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:49
Parameters
- const llvm::MCSymbolizer&
¶virtual void tryAddingPcLoadReferenceComment(
llvm::raw_ostream& cStream,
int64_t Value,
uint64_t Address)
virtual void tryAddingPcLoadReferenceComment(
llvm::raw_ostream& cStream,
int64_t Value,
uint64_t Address)
Description
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.
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:75
Parameters
- llvm::raw_ostream& cStream
- int64_t Value
- uint64_t Address
¶virtual bool tryAddingSymbolicOperand(
llvm::MCInst& Inst,
llvm::raw_ostream& cStream,
int64_t Value,
uint64_t Address,
bool IsBranch,
uint64_t Offset,
uint64_t InstSize)
virtual bool tryAddingSymbolicOperand(
llvm::MCInst& Inst,
llvm::raw_ostream& cStream,
int64_t Value,
uint64_t Address,
bool IsBranch,
uint64_t Offset,
uint64_t InstSize)
Description
Try to add a symbolic operand instead of \p 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.
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:67
Parameters
- llvm::MCInst& Inst
- - The MCInst where to insert the symbolic operand.
- llvm::raw_ostream& cStream
- - Stream to print comments and annotations on.
- int64_t Value
- - Operand value, pc-adjusted by the caller if necessary.
- uint64_t Address
- - Load address of the instruction.
- bool IsBranch
- - Is the instruction a branch?
- uint64_t Offset
- - Byte offset of the operand inside the inst.
- uint64_t InstSize
- - Size of the instruction in bytes.
Returns
Whether a symbolic operand was added.
¶virtual ~MCSymbolizer()
virtual ~MCSymbolizer()
Declared at: llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h:51