|
LLDB mainline
|
#include <DisassemblerLLVMC.h>
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) |
| InstructionList & | GetInstructionList () |
| const InstructionList & | GetInstructionList () const |
| const ArchSpec & | GetArchitecture () const |
| const char * | GetFlavor () const |
| Public Member Functions inherited from lldb_private::PluginInterface | |
| PluginInterface ()=default | |
| virtual | ~PluginInterface ()=default |
| PluginInterface (const PluginInterface &)=delete | |
| PluginInterface & | operator= (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 void | UpdateSubtargetFeatures (llvm::StringRef subtarget_features, std::string &user_feature_overrides) |
| This function merges the user overwrite features (provided via -Y option) with the subtarget features retrieved from the ELF. | |
| 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::ExecutionContext * | m_exe_ctx |
| InstructionLLVMC * | m_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< MCDisasmInstance > | m_disasm_up |
| std::unique_ptr< MCDisasmInstance > | m_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 } |
Definition at line 23 of file DisassemblerLLVMC.h.
| DisassemblerLLVMC::DisassemblerLLVMC | ( | const lldb_private::ArchSpec & | arch, |
| const char * | flavor, | ||
| const char * | cpu, | ||
| const char * | features ) |
Definition at line 1533 of file DisassemblerLLVMC.cpp.
References lldb_private::Disassembler::Disassembler(), FlavorValidForArchSpec(), lldb_private::ArchSpec::GetTriple(), LLDB_INVALID_ADDRESS, m_adrp_address, m_adrp_insn, m_data_from_file, m_exe_ctx, lldb_private::Disassembler::m_flavor, and m_inst.
Referenced by DisassemblerLLVMC::MCDisasmInstance::Create(), OpInfoCallback(), and SymbolLookupCallback().
|
overridedefault |
|
static |
Definition at line 1724 of file DisassemblerLLVMC.cpp.
References lldb_private::ArchSpec::GetTriple().
Referenced by Initialize(), and Terminate().
|
overridevirtual |
Implements lldb_private::Disassembler.
Definition at line 1737 of file DisassemblerLLVMC.cpp.
References lldb_private::eCode, lldb_private::Address::GetAddressClass(), lldb_private::DataExtractor::GetByteSize(), InstructionLLVMC, IsValid(), m_alternate_disasm_up, m_data_from_file, lldb_private::Disassembler::m_instruction_list, and lldb_private::Address::Slide().
|
overrideprotectedvirtual |
Implements lldb_private::Disassembler.
Definition at line 1813 of file DisassemblerLLVMC.cpp.
References lldb_private::ArchSpec::GetTriple().
Referenced by DisassemblerLLVMC().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 48 of file DisassemblerLLVMC.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 35 of file DisassemblerLLVMC.h.
Referenced by GetPluginName(), and Initialize().
|
static |
Definition at line 1782 of file DisassemblerLLVMC.cpp.
References CreateInstance(), GetPluginNameStatic(), and lldb_private::PluginManager::RegisterPlugin().
|
protected |
Definition at line 1826 of file DisassemblerLLVMC.cpp.
References m_disasm_up.
Referenced by DecodeInstructions().
|
protected |
Definition at line 1828 of file DisassemblerLLVMC.cpp.
Referenced by OpInfoCallback().
|
staticprotected |
Definition at line 1798 of file DisassemblerLLVMC.cpp.
References DisassemblerLLVMC(), OpInfo(), and pc.
|
protected |
Definition at line 1840 of file DisassemblerLLVMC.cpp.
References lldb_private::AddressRange::ContainsLoadAddress(), lldb_private::Address::Dump(), lldb_private::Address::DumpStyleNoFunctionName, lldb_private::Address::DumpStyleResolvedDescriptionNoFunctionArguments, lldb_private::Address::DumpStyleSectionNameOffset, lldb_private::SymbolContext::function, lldb_private::SymbolContext::GetAddressRange(), lldb_private::Target::GetArchitecture(), lldb_private::ArchSpec::GetMachine(), lldb_private::Address::GetModule(), lldb_private::Address::GetSection(), lldb_private::StreamString::GetString(), lldb_private::Target::HasLoadedSections(), lldb_private::Address::IsValid(), LLDB_INVALID_ADDRESS, m_adrp_address, m_adrp_insn, m_exe_ctx, m_inst, pc, lldb_private::Target::ResolveLoadAddress(), and lldb_private::SymbolContext::symbol.
Referenced by SymbolLookupCallback().
|
staticprotected |
Definition at line 1805 of file DisassemblerLLVMC.cpp.
References DisassemblerLLVMC(), pc, and SymbolLookup().
Referenced by DisassemblerLLVMC::MCDisasmInstance::Create().
|
static |
Definition at line 1794 of file DisassemblerLLVMC.cpp.
References CreateInstance(), and lldb_private::PluginManager::UnregisterPlugin().
|
static |
This function merges the user overwrite features (provided via -Y option) with the subtarget features retrieved from the ELF.
It also validates the user overwrite feature string and only valid flags are included in the final feature string.
Definition at line 1456 of file DisassemblerLLVMC.cpp.
References lldb_private::Debugger::ReportWarning().
|
friend |
Definition at line 58 of file DisassemblerLLVMC.h.
References InstructionLLVMC.
Referenced by DecodeInstructions(), and InstructionLLVMC.
|
protected |
Definition at line 88 of file DisassemblerLLVMC.h.
Referenced by DisassemblerLLVMC(), and SymbolLookup().
|
protected |
Definition at line 89 of file DisassemblerLLVMC.h.
Referenced by DisassemblerLLVMC(), and SymbolLookup().
|
protected |
Definition at line 96 of file DisassemblerLLVMC.h.
Referenced by DecodeInstructions().
|
protected |
Definition at line 83 of file DisassemblerLLVMC.h.
Referenced by DecodeInstructions(), and DisassemblerLLVMC().
|
protected |
Definition at line 95 of file DisassemblerLLVMC.h.
Referenced by IsValid().
|
protected |
Definition at line 80 of file DisassemblerLLVMC.h.
Referenced by DisassemblerLLVMC(), and SymbolLookup().
|
protected |
Definition at line 81 of file DisassemblerLLVMC.h.
Referenced by DisassemblerLLVMC(), and SymbolLookup().
|
protected |
Definition at line 82 of file DisassemblerLLVMC.h.