1 //===-- ScriptedProcessInterface.h ------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H 10 #define LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H 11 12 #include "lldb/Core/StructuredDataImpl.h" 13 #include "lldb/Interpreter/ScriptedInterface.h" 14 #include "lldb/Target/MemoryRegionInfo.h" 15 16 #include "lldb/lldb-private.h" 17 18 #include <string> 19 20 namespace lldb_private { 21 class ScriptedProcessInterface : virtual public ScriptedInterface { 22 public: 23 StructuredData::GenericSP 24 CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, 25 StructuredData::DictionarySP args_sp, 26 StructuredData::Generic *script_obj = nullptr) override { 27 return nullptr; 28 } 29 Launch()30 virtual Status Launch() { return Status("ScriptedProcess did not launch"); } 31 Resume()32 virtual Status Resume() { return Status("ScriptedProcess did not resume"); } 33 ShouldStop()34 virtual bool ShouldStop() { return true; } 35 Stop()36 virtual Status Stop() { return Status("ScriptedProcess did not stop"); } 37 38 virtual llvm::Optional<MemoryRegionInfo> GetMemoryRegionContainingAddress(lldb::addr_t address,Status & error)39 GetMemoryRegionContainingAddress(lldb::addr_t address, Status &error) { 40 error.SetErrorString("ScriptedProcess have no memory region."); 41 return {}; 42 } 43 GetThreadsInfo()44 virtual StructuredData::DictionarySP GetThreadsInfo() { return nullptr; } 45 GetThreadWithID(lldb::tid_t tid)46 virtual StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) { 47 return nullptr; 48 } 49 GetRegistersForThread(lldb::tid_t tid)50 virtual StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) { 51 return nullptr; 52 } 53 54 virtual lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address,size_t size,Status & error)55 ReadMemoryAtAddress(lldb::addr_t address, size_t size, Status &error) { 56 return nullptr; 57 } 58 GetLoadedImages()59 virtual StructuredData::ArraySP GetLoadedImages() { return nullptr; } 60 GetProcessID()61 virtual lldb::pid_t GetProcessID() { return LLDB_INVALID_PROCESS_ID; } 62 IsAlive()63 virtual bool IsAlive() { return true; } 64 GetScriptedThreadPluginName()65 virtual llvm::Optional<std::string> GetScriptedThreadPluginName() { 66 return llvm::None; 67 } 68 69 protected: 70 friend class ScriptedThread; CreateScriptedThreadInterface()71 virtual lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() { 72 return nullptr; 73 } 74 }; 75 76 class ScriptedThreadInterface : virtual public ScriptedInterface { 77 public: 78 StructuredData::GenericSP 79 CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, 80 StructuredData::DictionarySP args_sp, 81 StructuredData::Generic *script_obj = nullptr) override { 82 return nullptr; 83 } 84 GetThreadID()85 virtual lldb::tid_t GetThreadID() { return LLDB_INVALID_THREAD_ID; } 86 GetName()87 virtual llvm::Optional<std::string> GetName() { return llvm::None; } 88 GetState()89 virtual lldb::StateType GetState() { return lldb::eStateInvalid; } 90 GetQueue()91 virtual llvm::Optional<std::string> GetQueue() { return llvm::None; } 92 GetStopReason()93 virtual StructuredData::DictionarySP GetStopReason() { return nullptr; } 94 GetStackFrames()95 virtual StructuredData::ArraySP GetStackFrames() { return nullptr; } 96 GetRegisterInfo()97 virtual StructuredData::DictionarySP GetRegisterInfo() { return nullptr; } 98 GetRegisterContext()99 virtual llvm::Optional<std::string> GetRegisterContext() { 100 return llvm::None; 101 } 102 }; 103 } // namespace lldb_private 104 105 #endif // LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H 106