LLDB mainline
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | List of all members
lldb_private::ArchitecturePPC64 Class Reference

#include <ArchitecturePPC64.h>

Inheritance diagram for lldb_private::ArchitecturePPC64:
Inheritance graph
[legend]

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 MemoryTagManagerGetMemoryTagManager () const
 
virtual bool RegisterWriteCausesReconfigure (const llvm::StringRef name) const
 
virtual bool ReconfigureRegisterInfo (DynamicRegisterInfo &reg_info, DataExtractor &reg_data, RegisterContext &reg_context) const
 
- 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 llvm::StringRef GetPluginNameStatic ()
 
static void Initialize ()
 
static void Terminate ()
 

Private Member Functions

 ArchitecturePPC64 ()=default
 

Static Private Member Functions

static std::unique_ptr< ArchitectureCreate (const ArchSpec &arch)
 

Detailed Description

Definition at line 16 of file ArchitecturePPC64.h.

Constructor & Destructor Documentation

◆ ArchitecturePPC64()

lldb_private::ArchitecturePPC64::ArchitecturePPC64 ( )
privatedefault

Referenced by Create().

Member Function Documentation

◆ AdjustBreakpointAddress()

void ArchitecturePPC64::AdjustBreakpointAddress ( const Symbol func,
Address addr 
) const
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().

◆ Create()

std::unique_ptr< Architecture > ArchitecturePPC64::Create ( const ArchSpec arch)
staticprivate

Definition at line 35 of file ArchitecturePPC64.cpp.

References ArchitecturePPC64(), and lldb_private::ArchSpec::GetTriple().

Referenced by Initialize(), and Terminate().

◆ GetBytesToSkip()

size_t ArchitecturePPC64::GetBytesToSkip ( Symbol func,
const Address curr_addr 
) const
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().

◆ GetPluginName()

llvm::StringRef lldb_private::ArchitecturePPC64::GetPluginName ( )
inlineoverridevirtual

Implements lldb_private::PluginInterface.

Definition at line 22 of file ArchitecturePPC64.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

static llvm::StringRef lldb_private::ArchitecturePPC64::GetPluginNameStatic ( )
inlinestatic

Definition at line 18 of file ArchitecturePPC64.h.

Referenced by GetPluginName().

◆ Initialize()

void ArchitecturePPC64::Initialize ( )
static

◆ OverrideStopInfo()

void lldb_private::ArchitecturePPC64::OverrideStopInfo ( Thread thread) const
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.

◆ Terminate()

void ArchitecturePPC64::Terminate ( )
static

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