|
LLDB mainline
|
#include <ArchitectureWasm.h>
Public Member Functions | |
| llvm::StringRef | GetPluginName () override |
| void | OverrideStopInfo (Thread &thread) const override |
| This is currently intended to handle cases where a program stops at an instruction that won't get executed and it allows the stop reason, like "breakpoint hit", to be replaced with a different stop reason like "no stop reason". | |
| Address | SkipFunctionHeader (Address addr) const override |
| A WebAssembly function begins with a local variable declaration header that is part of the function but is not an executable instruction. | |
| Public Member Functions inherited from lldb_private::Architecture | |
| virtual size_t | GetBytesToSkip (Symbol &func, const Address &curr_addr) const |
| This method is used to get the number of bytes that should be skipped, from function start address, to reach the first instruction after the prologue. | |
| virtual void | AdjustBreakpointAddress (const Symbol &func, Address &addr) const |
| Adjust function breakpoint address, if needed. | |
| virtual lldb::addr_t | GetCallableLoadAddress (lldb::addr_t addr, AddressClass addr_class=AddressClass::eInvalid) const |
| Get load_addr as a callable code load address for this target. | |
| virtual lldb::addr_t | GetOpcodeLoadAddress (lldb::addr_t addr, AddressClass addr_class=AddressClass::eInvalid) const |
| Get load_addr as an opcode for this target. | |
| virtual lldb::addr_t | GetBreakableLoadAddress (lldb::addr_t addr, Target &target) const |
| virtual const MemoryTagManager * | GetMemoryTagManager () const |
| virtual bool | RegisterWriteCausesReconfigure (const llvm::StringRef name) const |
| virtual bool | ReconfigureRegisterInfo (DynamicRegisterInfo ®_info, DataExtractor ®_data, RegisterContext ®_context) const |
| virtual lldb::UnwindPlanSP | GetArchitectureUnwindPlan (lldb_private::Thread &thread, lldb_private::RegisterContextUnwind *regctx, std::shared_ptr< const UnwindPlan > current_unwindplan) |
| Return an UnwindPlan that allows architecture-defined rules for finding saved registers, given a particular set of register values. | |
| virtual bool | IsValidTrapInstruction (llvm::ArrayRef< uint8_t > reference, llvm::ArrayRef< uint8_t > observed) const |
| Returns whether a given byte sequence is a valid trap instruction for the architecture. | |
| 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 llvm::StringRef | GetPluginNameStatic () |
| static void | Initialize () |
| static void | Terminate () |
Private Member Functions | |
| ArchitectureWasm ()=default | |
Static Private Member Functions | |
| static std::unique_ptr< Architecture > | Create (const ArchSpec &arch) |
Definition at line 16 of file ArchitectureWasm.h.
|
privatedefault |
Referenced by Create(), and Initialize().
|
staticprivate |
Definition at line 30 of file ArchitectureWasm.cpp.
References ArchitectureWasm(), and lldb_private::ArchSpec::GetMachine().
Referenced by Initialize(), and Terminate().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 22 of file ArchitectureWasm.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 18 of file ArchitectureWasm.h.
Referenced by GetPluginName(), and Initialize().
|
static |
Definition at line 20 of file ArchitectureWasm.cpp.
References ArchitectureWasm(), Create(), GetPluginNameStatic(), Initialize(), and lldb_private::PluginManager::RegisterPlugin().
Referenced by Initialize().
|
inlineoverridevirtual |
This is currently intended to handle cases where a program stops at an instruction that won't get executed and it allows the stop reason, like "breakpoint hit", to be replaced with a different stop reason like "no stop reason".
This is specifically used for ARM in Thumb code when we stop in an IT instruction (if/then/else) where the instruction won't get executed and therefore it wouldn't be correct to show the program stopped at the current PC. The code is generic and applies to all ARM CPUs.
Implements lldb_private::Architecture.
Definition at line 24 of file ArchitectureWasm.h.
A WebAssembly function begins with a local variable declaration header that is part of the function but is not an executable instruction.
Skip it so the address lands on the first instruction.
Reimplemented from lldb_private::Architecture.
Definition at line 37 of file ArchitectureWasm.cpp.
References lldb_private::Address::CalculateSymbolContext(), lldb_private::Symbol::GetAddress(), lldb_private::Address::GetFileAddress(), lldb_private::Symbol::GetPrologueByteSize(), lldb_private::Address::Slide(), and lldb_private::SymbolContext::symbol.
|
static |
Definition at line 26 of file ArchitectureWasm.cpp.
References Create(), and lldb_private::PluginManager::UnregisterPlugin().