LLDB mainline
lldb_private::Disassembler Class Referenceabstract

#include <Disassembler.h>

Inheritance diagram for lldb_private::Disassembler:
[legend]

Classes

struct  Limit
struct  SourceLine
struct  SourceLinesToDisplay

Public Types

enum  {
  eOptionNone = 0u , eOptionShowBytes = (1u << 0) , eOptionRawOuput = (1u << 1) , eOptionMarkPCSourceLine = (1u << 2) ,
  eOptionMarkPCAddress , eOptionShowControlFlowKind = (1u << 4) , eOptionVariableAnnotations = (1u << 5)
}
enum  HexImmediateStyle { eHexStyleC , eHexStyleAsm }

Public Member Functions

 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)
virtual size_t DecodeInstructions (const Address &base_addr, const DataExtractor &data, lldb::offset_t data_offset, size_t num_instructions, bool append, bool data_from_file)=0
InstructionListGetInstructionList ()
const InstructionListGetInstructionList () const
const ArchSpecGetArchitecture () const
const char * GetFlavor () const
virtual bool FlavorValidForArchSpec (const lldb_private::ArchSpec &arch, const char *flavor)=0
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
virtual llvm::StringRef GetPluginName ()=0
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

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

size_t AppendInstructions (Target &target, Address address, Limit limit, Stream *error_strm_ptr, bool force_live_memory)

Static Protected Member Functions

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

ArchSpec m_arch
InstructionList m_instruction_list
std::string m_flavor

Private Member Functions

 Disassembler (const Disassembler &)=delete
const Disassembleroperator= (const Disassembler &)=delete

Detailed Description

Definition at line 389 of file Disassembler.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
eOptionNone 
eOptionShowBytes 
eOptionRawOuput 
eOptionMarkPCSourceLine 
eOptionMarkPCAddress 
eOptionShowControlFlowKind 
eOptionVariableAnnotations 

Definition at line 392 of file Disassembler.h.

◆ HexImmediateStyle

Enumerator
eHexStyleC 
eHexStyleAsm 

Definition at line 404 of file Disassembler.h.

Constructor & Destructor Documentation

◆ Disassembler() [1/2]

Disassembler::Disassembler ( const ArchSpec & arch,
const char * flavor )

◆ ~Disassembler()

Disassembler::~Disassembler ( )
overridedefault

◆ Disassembler() [2/2]

lldb_private::Disassembler::Disassembler ( const Disassembler & )
privatedelete

References Disassembler().

Member Function Documentation

◆ AddLineToSourceLineTables()

void Disassembler::AddLineToSourceLineTables ( SourceLine & line,
std::map< FileSpec, std::set< uint32_t > > & source_lines_seen )
staticprotected

◆ AppendInstructions()

◆ DecodeInstructions()

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

◆ Disassemble() [1/2]

bool Disassembler::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

◆ Disassemble() [2/2]

◆ DisassembleBytes()

lldb::DisassemblerSP Disassembler::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

◆ DisassembleRange()

◆ ElideMixedSourceAndDisassemblyLine() [1/2]

◆ ElideMixedSourceAndDisassemblyLine() [2/2]

◆ FindPlugin()

◆ FindPluginForTarget()

DisassemblerSP Disassembler::FindPluginForTarget ( const Target & target,
const ArchSpec & arch,
const char * flavor,
const char * cpu,
const char * features,
const char * plugin_name )
static

◆ FlavorValidForArchSpec()

virtual bool lldb_private::Disassembler::FlavorValidForArchSpec ( const lldb_private::ArchSpec & arch,
const char * flavor )
pure virtual

Implemented in DisassemblerLLVMC.

◆ GetArchitecture()

const ArchSpec & lldb_private::Disassembler::GetArchitecture ( ) const
inline

Definition at line 481 of file Disassembler.h.

References m_arch.

◆ GetFlavor()

const char * lldb_private::Disassembler::GetFlavor ( ) const
inline

Definition at line 483 of file Disassembler.h.

References m_flavor.

◆ GetFunctionDeclLineEntry()

◆ GetInstructionList() [1/2]

InstructionList & Disassembler::GetInstructionList ( )

◆ GetInstructionList() [2/2]

const InstructionList & Disassembler::GetInstructionList ( ) const

Definition at line 1327 of file Disassembler.cpp.

References m_instruction_list.

◆ operator=()

const Disassembler & lldb_private::Disassembler::operator= ( const Disassembler & )
privatedelete

References Disassembler().

◆ ParseInstructions()

size_t lldb_private::Disassembler::ParseInstructions ( Target & target,
Address address,
Limit limit,
Stream * error_strm_ptr,
bool force_live_memory = false )
inline

Definition at line 463 of file Disassembler.h.

References AppendInstructions(), and m_instruction_list.

◆ PrintInstructions()

void Disassembler::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 )

Definition at line 410 of file Disassembler.cpp.

References AddLineToSourceLineTables(), lldb_private::VariableAnnotator::annotate(), lldb_private::SymbolContext::Clear(), lldb_private::Disassembler::SourceLine::column, lldb_private::LineEntry::column, lldb_private::SymbolContext::comp_unit, lldb_private::AddressRange::ContainsFileAddress(), lldb_private::Disassembler::SourceLinesToDisplay::current_source_line, lldb_private::SourceManager::DisplaySourceLinesWithLineNumbers(), lldb_private::Instruction::Dump(), lldb_private::SupportFile::eEqualFileSpecAndChecksumIfSet, ElideMixedSourceAndDisassemblyLine(), lldb_private::Stream::EOL(), eOptionMarkPCSourceLine, eOptionShowBytes, eOptionShowControlFlowKind, eOptionVariableAnnotations, lldb_private::Disassembler::SourceLine::file, lldb_private::LineEntry::file_sp, lldb_private::StreamString::FillLastLineToColumn(), lldb_private::Debugger::FormatDisassemblerAddress(), lldb_private::SymbolContext::function, lldb_private::Instruction::GetAddress(), lldb_private::SymbolContext::GetAddressRange(), lldb_private::Target::GetDebugger(), lldb_private::Debugger::GetDisassemblyFormat(), lldb_private::LineEntry::GetFile(), lldb_private::StackFrame::GetFrameCodeAddress(), lldb_private::ExecutionContext::GetFramePtr(), GetFunctionDeclLineEntry(), lldb_private::InstructionList::GetInstructionAtIndex(), GetInstructionList(), lldb_private::InstructionList::GetMaxOpcocdeByteSize(), lldb_private::Address::GetModule(), lldb_private::InstructionList::GetSize(), lldb_private::StreamString::GetSizeOfLastLine(), lldb_private::Debugger::GetSourceManager(), lldb_private::Function::GetStartLineSourceInfo(), lldb_private::StreamString::GetString(), lldb_private::ExecutionContext::GetTargetRef(), lldb_private::ExecutionContext::GetTargetSP(), lldb_private::ExecutionContext::HasTargetScope(), lldb_private::LineEntry::IsValid(), lldb_private::Disassembler::SourceLine::line, lldb_private::LineEntry::line, lldb_private::SymbolContext::line_entry, lldb_private::Disassembler::SourceLinesToDisplay::lines, lldb_private::LineEntry::original_file_sp, lldb_private::FormatEntity::Parse(), lldb_private::Disassembler::SourceLinesToDisplay::print_source_context_end_eol, lldb_private::Stream::PutCString(), and lldb_private::SymbolContext::symbol.

Member Data Documentation

◆ m_arch

ArchSpec lldb_private::Disassembler::m_arch
protected

Definition at line 559 of file Disassembler.h.

Referenced by AppendInstructions(), Disassembler(), and GetArchitecture().

◆ m_flavor

std::string lldb_private::Disassembler::m_flavor
protected

Definition at line 561 of file Disassembler.h.

Referenced by Disassembler(), DisassemblerLLVMC::DisassemblerLLVMC(), and GetFlavor().

◆ m_instruction_list

InstructionList lldb_private::Disassembler::m_instruction_list
protected

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