1 //===-- ThreadPlanCallFunctionUsingABI.h --------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_ThreadPlanCallFunctionUsingABI_h_ 11 #define liblldb_ThreadPlanCallFunctionUsingABI_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/lldb-private.h" 18 #include "lldb/Target/ABI.h" 19 #include "lldb/Target/Thread.h" 20 #include "lldb/Target/ThreadPlanCallFunction.h" 21 22 #include "llvm/ADT/ArrayRef.h" 23 #include "llvm/IR/Type.h" 24 25 namespace lldb_private { 26 27 class ThreadPlanCallFunctionUsingABI : public ThreadPlanCallFunction 28 { 29 // Create a thread plan to call a function at the address passed in the "function" 30 // argument, this function is executed using register manipulation instead of JIT. 31 // Class derives from ThreadPlanCallFunction and differs by calling a alternative 32 // ABI interface ABI::PrepareTrivialCall() which provides more detailed information. 33 public: 34 ThreadPlanCallFunctionUsingABI (Thread &thread, 35 const Address &function_address, 36 llvm::Type &function_prototype, 37 llvm::Type &return_type, 38 llvm::ArrayRef<ABI::CallArgument> args, 39 const EvaluateExpressionOptions &options); 40 41 ~ThreadPlanCallFunctionUsingABI() override; 42 43 void 44 GetDescription (Stream *s, lldb::DescriptionLevel level) override; 45 46 protected: 47 void 48 SetReturnValue () override; 49 50 private: 51 llvm::Type &m_return_type; 52 DISALLOW_COPY_AND_ASSIGN (ThreadPlanCallFunctionUsingABI); 53 }; 54 55 } // namespace lldb_private 56 57 #endif // liblldb_ThreadPlanCallFunctionUsingABI_h_ 58