LLDB mainline
ABISysV_arm64 Class Reference

#include <ABISysV_arm64.h>

Inheritance diagram for ABISysV_arm64:
[legend]

Public Member Functions

 ~ABISysV_arm64 () override=default
size_t GetRedZoneSize () const override
bool PrepareTrivialCall (lldb_private::Thread &thread, lldb::addr_t sp, lldb::addr_t functionAddress, lldb::addr_t returnAddress, llvm::ArrayRef< lldb::addr_t > args) const override
bool GetArgumentValues (lldb_private::Thread &thread, lldb_private::ValueList &values) const override
lldb_private::Status SetReturnValueObject (lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override
bool RegisterIsVolatile (const lldb_private::RegisterInfo *reg_info) override
bool CallFrameAddressIsValid (lldb::addr_t cfa) override
bool CodeAddressIsValid (lldb::addr_t pc) override
bool GetPointerReturnRegister (const char *&name) override
lldb::addr_t FixAddress (lldb::addr_t pc, lldb::addr_t mask) override
llvm::StringRef GetPluginName () override
lldb::addr_t FixCodeAddress (lldb::addr_t pc) override
 Some targets might use bits in a code address to indicate a mode switch.
lldb::addr_t FixDataAddress (lldb::addr_t pc) override
virtual std::optional< MemoryPermissionsGetMemoryPermissions (lldb_private::RegisterContext &reg_ctx, unsigned protection_key, uint32_t original_permissions) override
 Get the effective memory permissions that result when the permissions referred to by a protection key are applied to the original permissions.
Public Member Functions inherited from ABIAArch64
lldb::UnwindPlanSP CreateFunctionEntryUnwindPlan () override
lldb::UnwindPlanSP CreateDefaultUnwindPlan () override
Public Member Functions inherited from lldb_private::MCBasedABI
void AugmentRegisterInfo (std::vector< DynamicRegisterInfo::Register > &regs) override
Public Member Functions inherited from lldb_private::ABI
 ~ABI () override
virtual bool PrepareTrivialCall (lldb_private::Thread &thread, lldb::addr_t sp, lldb::addr_t functionAddress, lldb::addr_t returnAddress, llvm::Type &prototype, llvm::ArrayRef< CallArgument > args) const
lldb::ValueObjectSP GetReturnValueObject (Thread &thread, CompilerType &type, bool persistent=true) const
lldb::ValueObjectSP GetReturnValueObject (Thread &thread, llvm::Type &type, bool persistent=true) const
virtual bool GetFallbackRegisterLocation (const RegisterInfo *reg_info, UnwindPlan::Row::AbstractRegisterLocation &unwind_regloc)
virtual lldb::addr_t FixAnyAddress (lldb::addr_t pc)
 Use this method when you do not know, or do not care what kind of address you are fixing.
llvm::MCRegisterInfo & GetMCRegisterInfo ()
virtual uint64_t GetStackFrameSize ()
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

static void Initialize ()
static void Terminate ()
static lldb::ABISP CreateInstance (lldb::ProcessSP process_sp, const lldb_private::ArchSpec &arch)
static llvm::StringRef GetPluginNameStatic ()
Static Public Member Functions inherited from ABIAArch64
static void Initialize ()
static void Terminate ()
Static Public Member Functions inherited from lldb_private::MCBasedABI
static void MapRegisterName (std::string &reg, llvm::StringRef from_prefix, llvm::StringRef to_prefix)
 If the register name is of the form "<from_prefix>[<number>]" then change the name to "<to_prefix>[<number>]".
Static Public Member Functions inherited from lldb_private::ABI
static lldb::ABISP FindPlugin (lldb::ProcessSP process_sp, const ArchSpec &arch)

Protected Member Functions

lldb::ValueObjectSP GetReturnValueObjectImpl (lldb_private::Thread &thread, lldb_private::CompilerType &ast_type) const override
Protected Member Functions inherited from ABIAArch64
std::pair< uint32_t, uint32_t > GetEHAndDWARFNums (llvm::StringRef name) override
 Return eh_frame and dwarf numbers for the given register.
std::string GetMCName (std::string reg) override
 For the given (capitalized) lldb register name, return the name of this register in the MCRegisterInfo struct.
uint32_t GetGenericNum (llvm::StringRef name) override
 Return the generic number of the given register.
void AugmentRegisterInfo (std::vector< lldb_private::DynamicRegisterInfo::Register > &regs) override
Protected Member Functions inherited from lldb_private::MCBasedABI
 ABI (lldb::ProcessSP process_sp, std::unique_ptr< llvm::MCRegisterInfo > info_up)
Protected Member Functions inherited from lldb_private::ABI
virtual lldb::ValueObjectSP GetReturnValueObjectImpl (Thread &thread, llvm::Type &ir_type) const
lldb::ProcessSP GetProcessSP () const
 Request to get a Process shared pointer.
 ABI (lldb::ProcessSP process_sp, std::unique_ptr< llvm::MCRegisterInfo > info_up)

Additional Inherited Members

Static Protected Member Functions inherited from lldb_private::ABI
static std::unique_ptr< llvm::MCRegisterInfo > MakeMCRegisterInfo (const ArchSpec &arch)
 Utility function to construct a MCRegisterInfo using the ArchSpec triple.
Protected Attributes inherited from lldb_private::ABI
lldb::ProcessWP m_process_wp
std::unique_ptr< llvm::MCRegisterInfo > m_mc_register_info_up

Detailed Description

Definition at line 15 of file ABISysV_arm64.h.

Constructor & Destructor Documentation

◆ ~ABISysV_arm64()

ABISysV_arm64::~ABISysV_arm64 ( )
overridedefault

References sp.

Member Function Documentation

◆ CallFrameAddressIsValid()

bool ABISysV_arm64::CallFrameAddressIsValid ( lldb::addr_t cfa)
inlineoverridevirtual

Implements lldb_private::ABI.

Definition at line 46 of file ABISysV_arm64.h.

◆ CodeAddressIsValid()

bool ABISysV_arm64::CodeAddressIsValid ( lldb::addr_t pc)
inlineoverridevirtual

Implements lldb_private::ABI.

Definition at line 55 of file ABISysV_arm64.h.

References pc.

◆ CreateInstance()

ABISP ABISysV_arm64::CreateInstance ( lldb::ProcessSP process_sp,
const lldb_private::ArchSpec & arch )
static

◆ FixAddress()

lldb::addr_t ABISysV_arm64::FixAddress ( lldb::addr_t pc,
lldb::addr_t mask )
overridevirtual

Reimplemented from ABIAArch64.

Definition at line 798 of file ABISysV_arm64.cpp.

References LLDB_INVALID_ADDRESS_MASK, pac_sign_extension, and pc.

Referenced by FixCodeAddress(), and FixDataAddress().

◆ FixCodeAddress()

lldb::addr_t ABISysV_arm64::FixCodeAddress ( lldb::addr_t pc)
overridevirtual

Some targets might use bits in a code address to indicate a mode switch.

ARM uses bit zero to signify a code address is thumb, so any ARM ABI plug-ins would strip those bits.

Reimplemented from ABIAArch64.

Definition at line 837 of file ABISysV_arm64.cpp.

References FixAddress(), lldb_private::ABI::GetProcessSP(), LLDB_INVALID_ADDRESS_MASK, pac_sign_extension, pc, and ReadLinuxProcessAddressMask().

◆ FixDataAddress()

lldb::addr_t ABISysV_arm64::FixDataAddress ( lldb::addr_t pc)
overridevirtual

◆ GetArgumentValues()

◆ GetMemoryPermissions()

std::optional< ABISysV_arm64::MemoryPermissions > ABISysV_arm64::GetMemoryPermissions ( lldb_private::RegisterContext & reg_ctx,
unsigned protection_key,
uint32_t original_permissions )
overridevirtual

Get the effective memory permissions that result when the permissions referred to by a protection key are applied to the original permissions.

This is intended for architectures that have some sort of permission overlay system. Where the protection key is used to look up a set of permissions that modifies the original permissions.

Returns
the overlay permissions (that the protection key refers to) and the effective permissions. If the target does not have an overlay system, or it does and the protection key is invalid, returns nullopt.

Reimplemented from lldb_private::ABI.

Definition at line 889 of file ABISysV_arm64.cpp.

References lldb_private::RegisterContext::GetRegisterInfoByName(), LLDB_INVALID_ADDRESS, and lldb_private::RegisterContext::ReadRegisterAsUnsigned().

◆ GetPluginName()

llvm::StringRef ABISysV_arm64::GetPluginName ( )
inlineoverridevirtual

Implements lldb_private::PluginInterface.

Definition at line 79 of file ABISysV_arm64.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

llvm::StringRef ABISysV_arm64::GetPluginNameStatic ( )
inlinestatic

Definition at line 75 of file ABISysV_arm64.h.

Referenced by GetPluginName(), and Initialize().

◆ GetPointerReturnRegister()

bool ABISysV_arm64::GetPointerReturnRegister ( const char *& name)
overridevirtual

Reimplemented from lldb_private::ABI.

Definition at line 36 of file ABISysV_arm64.cpp.

◆ GetRedZoneSize()

size_t ABISysV_arm64::GetRedZoneSize ( ) const
overridevirtual

Implements lldb_private::ABI.

Definition at line 41 of file ABISysV_arm64.cpp.

◆ GetReturnValueObjectImpl()

◆ Initialize()

void ABISysV_arm64::Initialize ( )
static

◆ PrepareTrivialCall()

◆ RegisterIsVolatile()

bool ABISysV_arm64::RegisterIsVolatile ( const lldb_private::RegisterInfo * reg_info)
overridevirtual

Implements lldb_private::ABI.

Definition at line 394 of file ABISysV_arm64.cpp.

References lldb_private::RegisterInfo::name.

◆ SetReturnValueObject()

◆ Terminate()

void ABISysV_arm64::Terminate ( )
static

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