LLDB  mainline
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
lldb_private::ABI Class Referenceabstract

#include <ABI.h>

Inheritance diagram for lldb_private::ABI:
Inheritance graph
Collaboration diagram for lldb_private::ABI:
Collaboration graph


struct  CallArgument

Public Member Functions

 ~ABI () override
virtual size_t GetRedZoneSize () const =0
virtual 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 =0
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
virtual bool GetArgumentValues (Thread &thread, ValueList &values) const =0
lldb::ValueObjectSP GetReturnValueObject (Thread &thread, CompilerType &type, bool persistent=true) const
lldb::ValueObjectSP GetReturnValueObject (Thread &thread, llvm::Type &type, bool persistent=true) const
virtual Status SetReturnValueObject (lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value)=0
virtual bool CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)=0
virtual bool CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)=0
virtual bool RegisterIsVolatile (const RegisterInfo *reg_info)=0
virtual bool GetFallbackRegisterLocation (const RegisterInfo *reg_info, UnwindPlan::Row::RegisterLocation &unwind_regloc)
virtual bool CallFrameAddressIsValid (lldb::addr_t cfa)=0
virtual bool CodeAddressIsValid (lldb::addr_t pc)=0
virtual lldb::addr_t FixCodeAddress (lldb::addr_t pc)
llvm::MCRegisterInfo & GetMCRegisterInfo ()
virtual void AugmentRegisterInfo (RegisterInfo &info)=0
virtual bool GetPointerReturnRegister (const char *&name)
- Public Member Functions inherited from lldb_private::PluginInterface
virtual ~PluginInterface ()
virtual ConstString GetPluginName ()=0
virtual uint32_t GetPluginVersion ()=0

Static Public Member Functions

static lldb::ABISP FindPlugin (lldb::ProcessSP process_sp, const ArchSpec &arch)

Protected Member Functions

virtual lldb::ValueObjectSP GetReturnValueObjectImpl (Thread &thread, CompilerType &ast_type) const =0
virtual lldb::ValueObjectSP GetReturnValueObjectImpl (Thread &thread, llvm::Type &ir_type) const
lldb::ProcessSP GetProcessSP () const
 Request to get a Process shared pointer. More...
 ABI (lldb::ProcessSP process_sp, std::unique_ptr< llvm::MCRegisterInfo > info_up)

Static Protected Member Functions

static std::unique_ptr< llvm::MCRegisterInfo > MakeMCRegisterInfo (const ArchSpec &arch)
 Utility function to construct a MCRegisterInfo using the ArchSpec triple. More...

Protected Attributes

lldb::ProcessWP m_process_wp
std::unique_ptr< llvm::MCRegisterInfo > m_mc_register_info_up

Private Member Functions

 ABI (const ABI &)=delete
const ABIoperator= (const ABI &)=delete

Detailed Description

Definition at line 26 of file ABI.h.

Constructor & Destructor Documentation

◆ ~ABI()

ABI::~ABI ( )

◆ ABI() [1/2]

lldb_private::ABI::ABI ( lldb::ProcessSP  process_sp,
std::unique_ptr< llvm::MCRegisterInfo >  info_up 

Definition at line 136 of file ABI.h.

◆ ABI() [2/2]

lldb_private::ABI::ABI ( const ABI )

Member Function Documentation

◆ AugmentRegisterInfo()

virtual void lldb_private::ABI::AugmentRegisterInfo ( RegisterInfo &  info)
pure virtual

◆ CallFrameAddressIsValid()

virtual bool lldb_private::ABI::CallFrameAddressIsValid ( lldb::addr_t  cfa)
pure virtual

◆ CodeAddressIsValid()

virtual bool lldb_private::ABI::CodeAddressIsValid ( lldb::addr_t  pc)
pure virtual

◆ CreateDefaultUnwindPlan()

virtual bool lldb_private::ABI::CreateDefaultUnwindPlan ( UnwindPlan unwind_plan)
pure virtual

◆ CreateFunctionEntryUnwindPlan()

virtual bool lldb_private::ABI::CreateFunctionEntryUnwindPlan ( UnwindPlan unwind_plan)
pure virtual

◆ FindPlugin()

ABISP ABI::FindPlugin ( lldb::ProcessSP  process_sp,
const ArchSpec arch 

◆ FixCodeAddress()

virtual lldb::addr_t lldb_private::ABI::FixCodeAddress ( lldb::addr_t  pc)

◆ GetArgumentValues()

virtual bool lldb_private::ABI::GetArgumentValues ( Thread thread,
ValueList values 
) const
pure virtual

◆ GetFallbackRegisterLocation()

bool ABI::GetFallbackRegisterLocation ( const RegisterInfo *  reg_info,
UnwindPlan::Row::RegisterLocation unwind_regloc 

◆ GetMCRegisterInfo()

llvm::MCRegisterInfo& lldb_private::ABI::GetMCRegisterInfo ( )

◆ GetPointerReturnRegister()

virtual bool lldb_private::ABI::GetPointerReturnRegister ( const char *&  name)

Reimplemented in ABISysV_x86_64, ABISysV_arm64, and ABIWindows_x86_64.

Definition at line 131 of file ABI.h.

◆ GetProcessSP()

lldb::ProcessSP lldb_private::ABI::GetProcessSP ( ) const

Request to get a Process shared pointer.

This ABI object may not have been created with a Process object, or the Process object may no longer be alive. Be sure to handle the case where the shared pointer returned does not have an object inside it.

Definition at line 95 of file ABI.h.

References pc.

◆ GetRedZoneSize()

virtual size_t lldb_private::ABI::GetRedZoneSize ( ) const
pure virtual

◆ GetReturnValueObject() [1/2]

ValueObjectSP ABI::GetReturnValueObject ( Thread thread,
CompilerType type,
bool  persistent = true 
) const

◆ GetReturnValueObject() [2/2]

ValueObjectSP ABI::GetReturnValueObject ( Thread thread,
llvm::Type &  type,
bool  persistent = true 
) const

Definition at line 153 of file ABI.cpp.

◆ GetReturnValueObjectImpl() [1/2]

virtual lldb::ValueObjectSP lldb_private::ABI::GetReturnValueObjectImpl ( Thread thread,
CompilerType ast_type 
) const
protectedpure virtual

◆ GetReturnValueObjectImpl() [2/2]

lldb::ValueObjectSP ABI::GetReturnValueObjectImpl ( Thread thread,
llvm::Type &  ir_type 
) const

Reimplemented in ABISysV_arc, and ABISysV_hexagon.

Definition at line 164 of file ABI.cpp.

References sp.

◆ MakeMCRegisterInfo()

std::unique_ptr< llvm::MCRegisterInfo > ABI::MakeMCRegisterInfo ( const ArchSpec arch)

Utility function to construct a MCRegisterInfo using the ArchSpec triple.

Plugins wishing to customize the construction can construct the MCRegisterInfo themselves.

Definition at line 204 of file ABI.cpp.

References lldb_private::GetLogIfAllCategoriesSet(), lldb_private::ArchSpec::GetTriple(), LIBLLDB_LOG_PROCESS, and LLDB_LOG.

◆ operator=()

const ABI& lldb_private::ABI::operator= ( const ABI )

◆ PrepareTrivialCall() [1/2]

virtual bool lldb_private::ABI::PrepareTrivialCall ( lldb_private::Thread thread,
lldb::addr_t  sp,
lldb::addr_t  functionAddress,
lldb::addr_t  returnAddress,
llvm::ArrayRef< lldb::addr_t args 
) const
pure virtual

◆ PrepareTrivialCall() [2/2]

virtual bool lldb_private::ABI::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

◆ RegisterIsVolatile()

virtual bool lldb_private::ABI::RegisterIsVolatile ( const RegisterInfo *  reg_info)
pure virtual

◆ SetReturnValueObject()

virtual Status lldb_private::ABI::SetReturnValueObject ( lldb::StackFrameSP &  frame_sp,
lldb::ValueObjectSP &  new_value 
pure virtual

Member Data Documentation

◆ m_mc_register_info_up

std::unique_ptr<llvm::MCRegisterInfo> lldb_private::ABI::m_mc_register_info_up

Definition at line 148 of file ABI.h.

◆ m_process_wp

lldb::ProcessWP lldb_private::ABI::m_process_wp

Definition at line 147 of file ABI.h.

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