LLDB mainline
|
#include <ArchitecturePPC64.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". | |
size_t | GetBytesToSkip (Symbol &func, const Address &curr_addr) const override |
This method compares current address with current function's local entry point, returning the bytes to skip if they match. | |
void | AdjustBreakpointAddress (const Symbol &func, Address &addr) const override |
Adjust function breakpoint address, if needed. | |
Public Member Functions inherited from lldb_private::Architecture | |
virtual void | OverrideStopInfo (Thread &thread) const =0 |
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". | |
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 |
Public Member Functions inherited from lldb_private::PluginInterface | |
PluginInterface ()=default | |
virtual | ~PluginInterface ()=default |
virtual llvm::StringRef | GetPluginName ()=0 |
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 | |
ArchitecturePPC64 ()=default | |
Static Private Member Functions | |
static std::unique_ptr< Architecture > | Create (const ArchSpec &arch) |
Definition at line 16 of file ArchitecturePPC64.h.
|
privatedefault |
Referenced by Create().
|
overridevirtual |
Adjust function breakpoint address, if needed.
In some cases, the function start address is not the right place to set the breakpoint, specially in functions with multiple entry points.
This is specifically used for PPC64, for functions that have both a global and a local entry point. In this case, the breakpoint is adjusted to the first function address reached by both entry points.
Reimplemented from lldb_private::Architecture.
Definition at line 55 of file ArchitecturePPC64.cpp.
References GetLocalEntryOffset(), lldb_private::Address::GetOffset(), and lldb_private::Address::SetOffset().
|
staticprivate |
Definition at line 35 of file ArchitecturePPC64.cpp.
References ArchitecturePPC64(), and lldb_private::ArchSpec::GetTriple().
Referenced by Initialize(), and Terminate().
|
overridevirtual |
This method compares current address with current function's local entry point, returning the bytes to skip if they match.
Reimplemented from lldb_private::Architecture.
Definition at line 47 of file ArchitecturePPC64.cpp.
References lldb_private::Address::GetFileAddress(), lldb_private::Symbol::GetFileAddress(), GetLocalEntryOffset(), and lldb_private::Symbol::GetPrologueByteSize().
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 22 of file ArchitecturePPC64.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 18 of file ArchitecturePPC64.h.
Referenced by GetPluginName().
|
static |
Definition at line 25 of file ArchitecturePPC64.cpp.
References Create(), and lldb_private::PluginManager::RegisterPlugin().
|
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 ArchitecturePPC64.h.
|
static |
Definition at line 31 of file ArchitecturePPC64.cpp.
References Create(), and lldb_private::PluginManager::UnregisterPlugin().