Go to the documentation of this file.
9 #ifndef LLDB_TARGET_ABI_H
10 #define LLDB_TARGET_ABI_H
18 #include "llvm/ADT/ArrayRef.h"
19 #include "llvm/MC/MCRegisterInfo.h"
48 llvm::ArrayRef<lldb::addr_t> args)
const = 0;
63 llvm::Type &prototype,
64 llvm::ArrayRef<CallArgument> args)
const;
69 bool persistent =
true)
const;
73 bool persistent =
true)
const;
77 lldb::ValueObjectSP &new_value) = 0;
83 virtual lldb::ValueObjectSP
87 virtual lldb::ValueObjectSP
153 ABI(lldb::ProcessSP process_sp, std::unique_ptr<llvm::MCRegisterInfo> info_up)
161 static std::unique_ptr<llvm::MCRegisterInfo>
172 ABI(
const ABI &) =
delete;
179 std::vector<DynamicRegisterInfo::Register> ®s)
override;
192 std::vector<DynamicRegisterInfo::Register> ®s)
override;
197 llvm::StringRef to_prefix);
215 #endif // LLDB_TARGET_ABI_H
virtual bool GetPointerReturnRegister(const char *&name)
bool GetRegisterInfoByName(llvm::StringRef name, RegisterInfo &info)
virtual const RegisterInfo * GetRegisterInfoArray(uint32_t &count)=0
void AugmentRegisterInfo(std::vector< DynamicRegisterInfo::Register > ®s) override
virtual bool CodeAddressIsValid(lldb::addr_t pc)=0
virtual bool GetFallbackRegisterLocation(const RegisterInfo *reg_info, UnwindPlan::Row::RegisterLocation &unwind_regloc)
virtual std::pair< uint32_t, uint32_t > GetEHAndDWARFNums(llvm::StringRef reg)
Return eh_frame and dwarf numbers for the given register.
virtual size_t GetRedZoneSize() const =0
lldb::ProcessWP m_process_wp
virtual bool RegisterIsVolatile(const RegisterInfo *reg_info)=0
virtual void AugmentRegisterInfo(std::vector< DynamicRegisterInfo::Register > ®s)=0
virtual bool CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan)=0
virtual lldb::ValueObjectSP GetReturnValueObjectImpl(Thread &thread, CompilerType &ast_type) const =0
virtual lldb::addr_t FixCodeAddress(lldb::addr_t pc, lldb::addr_t mask)
llvm::MCRegisterInfo & GetMCRegisterInfo()
string(SUBSTRING ${p} 10 -1 pStripped) if($
lldb::ProcessSP GetProcessSP() const
Request to get a Process shared pointer.
virtual Status SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value)=0
const ABI & operator=(const ABI &)=delete
virtual uint32_t GetGenericNum(llvm::StringRef reg)=0
Return the generic number of the given register.
std::unique_ptr< llvm::MCRegisterInfo > m_mc_register_info_up
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.
virtual lldb::addr_t FixDataAddress(lldb::addr_t pc)
virtual lldb::addr_t FixCodeAddress(lldb::addr_t pc)
Some targets might use bits in a code address to indicate a mode switch.
virtual bool CallFrameAddressIsValid(lldb::addr_t cfa)=0
virtual std::string GetMCName(std::string reg)
For the given (capitalized) lldb register name, return the name of this register in the MCRegisterInf...
void AugmentRegisterInfo(std::vector< DynamicRegisterInfo::Register > ®s) override
static lldb::ABISP FindPlugin(lldb::ProcessSP process_sp, const ArchSpec &arch)
Generic representation of a type in a programming language.
A class that represents a running process on the host machine.
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 CreateDefaultUnwindPlan(UnwindPlan &unwind_plan)=0
lldb::ValueObjectSP GetReturnValueObject(Thread &thread, CompilerType &type, bool persistent=true) const
virtual bool GetArgumentValues(Thread &thread, ValueList &values) const =0
std::unique_ptr< uint8_t[]> data_up
ABI(lldb::ProcessSP process_sp, std::unique_ptr< llvm::MCRegisterInfo > info_up)
static std::unique_ptr< llvm::MCRegisterInfo > MakeMCRegisterInfo(const ArchSpec &arch)
Utility function to construct a MCRegisterInfo using the ArchSpec triple.
static void MapRegisterName(std::string ®, 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>[<n...