LLVM  8.0.1
Public Member Functions | List of all members
llvm::AMDGPUSymbolizer Class Reference

#include "Target/AMDGPU/Disassembler/AMDGPUDisassembler.h"

Inheritance diagram for llvm::AMDGPUSymbolizer:
Inheritance graph
[legend]
Collaboration diagram for llvm::AMDGPUSymbolizer:
Collaboration graph
[legend]

Public Member Functions

 AMDGPUSymbolizer (MCContext &Ctx, std::unique_ptr< MCRelocationInfo > &&RelInfo, void *disInfo)
 
bool tryAddingSymbolicOperand (MCInst &Inst, raw_ostream &cStream, 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. More...
 
void tryAddingPcLoadReferenceComment (raw_ostream &cStream, int64_t Value, uint64_t Address) override
 Try to add a comment on the PC-relative load. More...
 
- Public Member Functions inherited from llvm::MCSymbolizer
 MCSymbolizer (MCContext &Ctx, std::unique_ptr< MCRelocationInfo > RelInfo)
 Construct an MCSymbolizer, taking ownership of RelInfo. More...
 
 MCSymbolizer (const MCSymbolizer &)=delete
 
MCSymbolizeroperator= (const MCSymbolizer &)=delete
 
virtual ~MCSymbolizer ()
 

Additional Inherited Members

- Protected Attributes inherited from llvm::MCSymbolizer
MCContextCtx
 
std::unique_ptr< MCRelocationInfoRelInfo
 

Detailed Description

Definition at line 134 of file AMDGPUDisassembler.h.

Constructor & Destructor Documentation

◆ AMDGPUSymbolizer()

llvm::AMDGPUSymbolizer::AMDGPUSymbolizer ( MCContext Ctx,
std::unique_ptr< MCRelocationInfo > &&  RelInfo,
void *  disInfo 
)
inline

Member Function Documentation

◆ tryAddingPcLoadReferenceComment()

void AMDGPUSymbolizer::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 915 of file AMDGPUDisassembler.cpp.

References llvm_unreachable.

◆ tryAddingSymbolicOperand()

bool AMDGPUSymbolizer::tryAddingSymbolicOperand ( MCInst Inst,
raw_ostream cStream,
int64_t  Value,
uint64_t  Address,
bool  IsBranch,
uint64_t  Offset,
uint64_t  InstSize 
)
overridevirtual

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.

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.
InstSize- Size of the instruction in bytes.
Returns
Whether a symbolic operand was added.

Implements llvm::MCSymbolizer.

Definition at line 886 of file AMDGPUDisassembler.cpp.

References llvm::MCID::Add, llvm::MCInst::addOperand(), llvm::MCSymbolRefExpr::create(), llvm::MCOperand::createExpr(), llvm::find_if(), and llvm::ELF::STT_NOTYPE.


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