LLDB mainline
DisassemblerLLVMC Class Reference

#include <DisassemblerLLVMC.h>

Inheritance diagram for DisassemblerLLVMC:
[legend]

Classes

class  MCDisasmInstance

Public Member Functions

 DisassemblerLLVMC (const lldb_private::ArchSpec &arch, const char *flavor, const char *cpu, const char *features)
 ~DisassemblerLLVMC () override
size_t DecodeInstructions (const lldb_private::Address &base_addr, const lldb_private::DataExtractor &data, lldb::offset_t data_offset, size_t num_instructions, bool append, bool data_from_file) override
llvm::StringRef GetPluginName () override
Public Member Functions inherited from lldb_private::Disassembler
 Disassembler (const ArchSpec &arch, const char *flavor)
 ~Disassembler () override
void PrintInstructions (Debugger &debugger, const ArchSpec &arch, const ExecutionContext &exe_ctx, bool mixed_source_and_assembly, uint32_t num_mixed_context_lines, uint32_t options, Stream &strm)
size_t ParseInstructions (Target &target, Address address, Limit limit, Stream *error_strm_ptr, bool force_live_memory=false)
InstructionListGetInstructionList ()
const InstructionListGetInstructionList () const
const ArchSpecGetArchitecture () const
const char * GetFlavor () const
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

static void Initialize ()
static void Terminate ()
static llvm::StringRef GetPluginNameStatic ()
static lldb::DisassemblerSP CreateInstance (const lldb_private::ArchSpec &arch, const char *flavor, const char *cpu, const char *features)
Static Public Member Functions inherited from lldb_private::Disassembler
static lldb::DisassemblerSP FindPlugin (const ArchSpec &arch, const char *flavor, const char *cpu, const char *features, const char *plugin_name)
static lldb::DisassemblerSP FindPluginForTarget (const Target &target, const ArchSpec &arch, const char *flavor, const char *cpu, const char *features, const char *plugin_name)
static lldb::DisassemblerSP DisassembleRange (const ArchSpec &arch, const char *plugin_name, const char *flavor, const char *cpu, const char *features, Target &target, llvm::ArrayRef< AddressRange > disasm_ranges, bool force_live_memory=false)
static lldb::DisassemblerSP DisassembleBytes (const ArchSpec &arch, const char *plugin_name, const char *flavor, const char *cpu, const char *features, const Address &start, const void *bytes, size_t length, uint32_t max_num_instructions, bool data_from_file)
static bool Disassemble (Debugger &debugger, const ArchSpec &arch, const char *plugin_name, const char *flavor, const char *cpu, const char *features, const ExecutionContext &exe_ctx, const Address &start, Limit limit, bool mixed_source_and_assembly, uint32_t num_mixed_context_lines, uint32_t options, Stream &strm)
static bool Disassemble (Debugger &debugger, const ArchSpec &arch, StackFrame &frame, Stream &strm)

Protected Member Functions

bool FlavorValidForArchSpec (const lldb_private::ArchSpec &arch, const char *flavor) override
bool IsValid () const
int OpInfo (uint64_t PC, uint64_t Offset, uint64_t Size, int TagType, void *TagBug)
const char * SymbolLookup (uint64_t ReferenceValue, uint64_t *ReferenceType, uint64_t ReferencePC, const char **ReferenceName)
Protected Member Functions inherited from lldb_private::Disassembler
size_t AppendInstructions (Target &target, Address address, Limit limit, Stream *error_strm_ptr, bool force_live_memory)

Static Protected Member Functions

static int OpInfoCallback (void *DisInfo, uint64_t PC, uint64_t Offset, uint64_t Size, int TagType, void *TagBug)
static const char * SymbolLookupCallback (void *DisInfo, uint64_t ReferenceValue, uint64_t *ReferenceType, uint64_t ReferencePC, const char **ReferenceName)
Static Protected Member Functions inherited from lldb_private::Disassembler
static SourceLine GetFunctionDeclLineEntry (const SymbolContext &sc)
static void AddLineToSourceLineTables (SourceLine &line, std::map< FileSpec, std::set< uint32_t > > &source_lines_seen)
static bool ElideMixedSourceAndDisassemblyLine (const ExecutionContext &exe_ctx, const SymbolContext &sc, SourceLine &line)
static bool ElideMixedSourceAndDisassemblyLine (const ExecutionContext &exe_ctx, const SymbolContext &sc, LineEntry &line)

Protected Attributes

const lldb_private::ExecutionContextm_exe_ctx
InstructionLLVMCm_inst
std::mutex m_mutex
bool m_data_from_file
lldb::addr_t m_adrp_address
std::optional< uint32_t > m_adrp_insn
std::unique_ptr< MCDisasmInstancem_disasm_up
std::unique_ptr< MCDisasmInstancem_alternate_disasm_up
Protected Attributes inherited from lldb_private::Disassembler
ArchSpec m_arch
InstructionList m_instruction_list
std::string m_flavor

Friends

class InstructionLLVMC

Additional Inherited Members

Public Types inherited from lldb_private::Disassembler
enum  {
  eOptionNone = 0u , eOptionShowBytes = (1u << 0) , eOptionRawOuput = (1u << 1) , eOptionMarkPCSourceLine = (1u << 2) ,
  eOptionMarkPCAddress , eOptionShowControlFlowKind = (1u << 4) , eOptionVariableAnnotations = (1u << 5)
}
enum  HexImmediateStyle { eHexStyleC , eHexStyleAsm }

Detailed Description

Definition at line 23 of file DisassemblerLLVMC.h.

Constructor & Destructor Documentation

◆ DisassemblerLLVMC()

◆ ~DisassemblerLLVMC()

DisassemblerLLVMC::~DisassemblerLLVMC ( )
overridedefault

Member Function Documentation

◆ CreateInstance()

lldb::DisassemblerSP DisassemblerLLVMC::CreateInstance ( const lldb_private::ArchSpec & arch,
const char * flavor,
const char * cpu,
const char * features )
static

Definition at line 1633 of file DisassemblerLLVMC.cpp.

References lldb_private::ArchSpec::GetTriple().

Referenced by Initialize(), and Terminate().

◆ DecodeInstructions()

size_t DisassemblerLLVMC::DecodeInstructions ( const lldb_private::Address & base_addr,
const lldb_private::DataExtractor & data,
lldb::offset_t data_offset,
size_t num_instructions,
bool append,
bool data_from_file )
overridevirtual

◆ FlavorValidForArchSpec()

bool DisassemblerLLVMC::FlavorValidForArchSpec ( const lldb_private::ArchSpec & arch,
const char * flavor )
overrideprotectedvirtual

Implements lldb_private::Disassembler.

Definition at line 1722 of file DisassemblerLLVMC.cpp.

References lldb_private::ArchSpec::GetTriple().

Referenced by DisassemblerLLVMC().

◆ GetPluginName()

llvm::StringRef DisassemblerLLVMC::GetPluginName ( )
inlineoverridevirtual

Implements lldb_private::PluginInterface.

Definition at line 48 of file DisassemblerLLVMC.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

llvm::StringRef DisassemblerLLVMC::GetPluginNameStatic ( )
inlinestatic

Definition at line 35 of file DisassemblerLLVMC.h.

Referenced by GetPluginName(), and Initialize().

◆ Initialize()

void DisassemblerLLVMC::Initialize ( )
static

◆ IsValid()

bool DisassemblerLLVMC::IsValid ( ) const
protected

Definition at line 1735 of file DisassemblerLLVMC.cpp.

References m_disasm_up.

Referenced by DecodeInstructions().

◆ OpInfo()

int DisassemblerLLVMC::OpInfo ( uint64_t PC,
uint64_t Offset,
uint64_t Size,
int TagType,
void * TagBug )
protected

Definition at line 1737 of file DisassemblerLLVMC.cpp.

Referenced by OpInfoCallback().

◆ OpInfoCallback()

int DisassemblerLLVMC::OpInfoCallback ( void * DisInfo,
uint64_t PC,
uint64_t Offset,
uint64_t Size,
int TagType,
void * TagBug )
staticprotected

Definition at line 1707 of file DisassemblerLLVMC.cpp.

References DisassemblerLLVMC(), OpInfo(), and pc.

◆ SymbolLookup()

◆ SymbolLookupCallback()

const char * DisassemblerLLVMC::SymbolLookupCallback ( void * DisInfo,
uint64_t ReferenceValue,
uint64_t * ReferenceType,
uint64_t ReferencePC,
const char ** ReferenceName )
staticprotected

◆ Terminate()

void DisassemblerLLVMC::Terminate ( )
static

◆ InstructionLLVMC

friend class InstructionLLVMC
friend

Definition at line 51 of file DisassemblerLLVMC.h.

References InstructionLLVMC.

Referenced by DecodeInstructions(), and InstructionLLVMC.

Member Data Documentation

◆ m_adrp_address

lldb::addr_t DisassemblerLLVMC::m_adrp_address
protected

Definition at line 81 of file DisassemblerLLVMC.h.

Referenced by DisassemblerLLVMC(), and SymbolLookup().

◆ m_adrp_insn

std::optional<uint32_t> DisassemblerLLVMC::m_adrp_insn
protected

Definition at line 82 of file DisassemblerLLVMC.h.

Referenced by DisassemblerLLVMC(), and SymbolLookup().

◆ m_alternate_disasm_up

std::unique_ptr<MCDisasmInstance> DisassemblerLLVMC::m_alternate_disasm_up
protected

Definition at line 89 of file DisassemblerLLVMC.h.

Referenced by DecodeInstructions().

◆ m_data_from_file

bool DisassemblerLLVMC::m_data_from_file
protected

Definition at line 76 of file DisassemblerLLVMC.h.

Referenced by DecodeInstructions(), and DisassemblerLLVMC().

◆ m_disasm_up

std::unique_ptr<MCDisasmInstance> DisassemblerLLVMC::m_disasm_up
protected

Definition at line 88 of file DisassemblerLLVMC.h.

Referenced by IsValid().

◆ m_exe_ctx

const lldb_private::ExecutionContext* DisassemblerLLVMC::m_exe_ctx
protected

Definition at line 73 of file DisassemblerLLVMC.h.

Referenced by DisassemblerLLVMC(), and SymbolLookup().

◆ m_inst

InstructionLLVMC* DisassemblerLLVMC::m_inst
protected

Definition at line 74 of file DisassemblerLLVMC.h.

Referenced by DisassemblerLLVMC(), and SymbolLookup().

◆ m_mutex

std::mutex DisassemblerLLVMC::m_mutex
protected

Definition at line 75 of file DisassemblerLLVMC.h.


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