Path: blob/main/contrib/llvm-project/lldb/source/Plugins/ABI/MSP430/ABISysV_msp430.h
39654 views
//===-- ABISysV_msp430.h ----------------------------------------*- C++ -*-===//1//2// The LLVM Compiler Infrastructure3//4// This file is distributed under the University of Illinois Open Source5// License. See LICENSE.TXT for details.6//7//===----------------------------------------------------------------------===//89#ifndef LLDB_SOURCE_PLUGINS_ABI_MSP430_ABISYSV_MSP430_H10#define LLDB_SOURCE_PLUGINS_ABI_MSP430_ABISYSV_MSP430_H1112#include "lldb/Target/ABI.h"13#include "lldb/lldb-private.h"1415class ABISysV_msp430 : public lldb_private::RegInfoBasedABI {16public:17~ABISysV_msp430() override = default;1819size_t GetRedZoneSize() const override;2021bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,22lldb::addr_t functionAddress,23lldb::addr_t returnAddress,24llvm::ArrayRef<lldb::addr_t> args) const override;2526bool GetArgumentValues(lldb_private::Thread &thread,27lldb_private::ValueList &values) const override;2829lldb_private::Status30SetReturnValueObject(lldb::StackFrameSP &frame_sp,31lldb::ValueObjectSP &new_value) override;3233lldb::ValueObjectSP34GetReturnValueObjectImpl(lldb_private::Thread &thread,35lldb_private::CompilerType &type) const override;3637bool38CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;3940bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;4142bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;4344bool CallFrameAddressIsValid(lldb::addr_t cfa) override {45// Make sure the stack call frame addresses are 2 byte aligned46// and not zero47if (cfa & 0x01 || cfa == 0)48return false;49return true;50}5152bool CodeAddressIsValid(lldb::addr_t pc) override { return true; }5354const lldb_private::RegisterInfo *55GetRegisterInfoArray(uint32_t &count) override;5657uint64_t GetStackFrameSize() override { return 512; }5859//------------------------------------------------------------------60// Static Functions61//------------------------------------------------------------------6263static void Initialize();6465static void Terminate();6667static lldb::ABISP CreateInstance(lldb::ProcessSP process_sp,68const lldb_private::ArchSpec &arch);6970static llvm::StringRef GetPluginNameStatic() { return "sysv-msp430"; }7172// PluginInterface protocol7374llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }7576protected:77void CreateRegisterMapIfNeeded();7879lldb::ValueObjectSP80GetReturnValueObjectSimple(lldb_private::Thread &thread,81lldb_private::CompilerType &ast_type) const;8283bool RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);8485private:86using lldb_private::RegInfoBasedABI::RegInfoBasedABI;87};8889#endif // LLDB_SOURCE_PLUGINS_ABI_MSP430_ABISYSV_MSP430_H909192