177374d3bSMed Ismail Bennani //===-- ScriptedProcessInterface.h ------------------------------*- C++ -*-===// 277374d3bSMed Ismail Bennani // 377374d3bSMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 477374d3bSMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 577374d3bSMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 677374d3bSMed Ismail Bennani // 777374d3bSMed Ismail Bennani //===----------------------------------------------------------------------===// 877374d3bSMed Ismail Bennani 977374d3bSMed Ismail Bennani #ifndef LLDB_INTERPRETER_INTERFACES_SCRIPTEDPROCESSINTERFACE_H 1077374d3bSMed Ismail Bennani #define LLDB_INTERPRETER_INTERFACES_SCRIPTEDPROCESSINTERFACE_H 1177374d3bSMed Ismail Bennani 1277374d3bSMed Ismail Bennani #include "ScriptedInterface.h" 1377374d3bSMed Ismail Bennani #include "lldb/Core/StructuredDataImpl.h" 1477374d3bSMed Ismail Bennani #include "lldb/Target/MemoryRegionInfo.h" 1577374d3bSMed Ismail Bennani 1677374d3bSMed Ismail Bennani #include "lldb/lldb-private.h" 1777374d3bSMed Ismail Bennani 1877374d3bSMed Ismail Bennani #include <optional> 1977374d3bSMed Ismail Bennani #include <string> 2077374d3bSMed Ismail Bennani 2177374d3bSMed Ismail Bennani namespace lldb_private { 2277374d3bSMed Ismail Bennani class ScriptedProcessInterface : virtual public ScriptedInterface { 2377374d3bSMed Ismail Bennani public: 24f22d82ceSMed Ismail Bennani virtual llvm::Expected<StructuredData::GenericSP> 2577374d3bSMed Ismail Bennani CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, 2677374d3bSMed Ismail Bennani StructuredData::DictionarySP args_sp, 2779914122SMed Ismail Bennani StructuredData::Generic *script_obj = nullptr) = 0; 2877374d3bSMed Ismail Bennani 2977374d3bSMed Ismail Bennani virtual StructuredData::DictionarySP GetCapabilities() { return {}; } 3077374d3bSMed Ismail Bennani 3177374d3bSMed Ismail Bennani virtual Status Attach(const ProcessAttachInfo &attach_info) { 32*0642cd76SAdrian Prantl return Status::FromErrorString("ScriptedProcess did not attach"); 3377374d3bSMed Ismail Bennani } 3477374d3bSMed Ismail Bennani 35*0642cd76SAdrian Prantl virtual Status Launch() { 36*0642cd76SAdrian Prantl return Status::FromErrorString("ScriptedProcess did not launch"); 37*0642cd76SAdrian Prantl } 3877374d3bSMed Ismail Bennani 39*0642cd76SAdrian Prantl virtual Status Resume() { 40*0642cd76SAdrian Prantl return Status::FromErrorString("ScriptedProcess did not resume"); 41*0642cd76SAdrian Prantl } 4277374d3bSMed Ismail Bennani 4377374d3bSMed Ismail Bennani virtual std::optional<MemoryRegionInfo> 4477374d3bSMed Ismail Bennani GetMemoryRegionContainingAddress(lldb::addr_t address, Status &error) { 45*0642cd76SAdrian Prantl error = Status::FromErrorString("ScriptedProcess have no memory region."); 4677374d3bSMed Ismail Bennani return {}; 4777374d3bSMed Ismail Bennani } 4877374d3bSMed Ismail Bennani 4977374d3bSMed Ismail Bennani virtual StructuredData::DictionarySP GetThreadsInfo() { return {}; } 5077374d3bSMed Ismail Bennani 5177374d3bSMed Ismail Bennani virtual bool CreateBreakpoint(lldb::addr_t addr, Status &error) { 52*0642cd76SAdrian Prantl error = Status::FromErrorString( 53*0642cd76SAdrian Prantl "ScriptedProcess don't support creating breakpoints."); 5477374d3bSMed Ismail Bennani return {}; 5577374d3bSMed Ismail Bennani } 5677374d3bSMed Ismail Bennani 5777374d3bSMed Ismail Bennani virtual lldb::DataExtractorSP 5877374d3bSMed Ismail Bennani ReadMemoryAtAddress(lldb::addr_t address, size_t size, Status &error) { 5977374d3bSMed Ismail Bennani return {}; 6077374d3bSMed Ismail Bennani } 6177374d3bSMed Ismail Bennani 6277374d3bSMed Ismail Bennani virtual lldb::offset_t WriteMemoryAtAddress(lldb::addr_t addr, 6377374d3bSMed Ismail Bennani lldb::DataExtractorSP data_sp, 6477374d3bSMed Ismail Bennani Status &error) { 6577374d3bSMed Ismail Bennani return LLDB_INVALID_OFFSET; 6677374d3bSMed Ismail Bennani }; 6777374d3bSMed Ismail Bennani 6877374d3bSMed Ismail Bennani virtual StructuredData::ArraySP GetLoadedImages() { return {}; } 6977374d3bSMed Ismail Bennani 7077374d3bSMed Ismail Bennani virtual lldb::pid_t GetProcessID() { return LLDB_INVALID_PROCESS_ID; } 7177374d3bSMed Ismail Bennani 7277374d3bSMed Ismail Bennani virtual bool IsAlive() { return true; } 7377374d3bSMed Ismail Bennani 7477374d3bSMed Ismail Bennani virtual std::optional<std::string> GetScriptedThreadPluginName() { 7577374d3bSMed Ismail Bennani return std::nullopt; 7677374d3bSMed Ismail Bennani } 7777374d3bSMed Ismail Bennani 7877374d3bSMed Ismail Bennani virtual StructuredData::DictionarySP GetMetadata() { return {}; } 7977374d3bSMed Ismail Bennani 8077374d3bSMed Ismail Bennani protected: 8177374d3bSMed Ismail Bennani friend class ScriptedThread; 8277374d3bSMed Ismail Bennani virtual lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() { 8377374d3bSMed Ismail Bennani return {}; 8477374d3bSMed Ismail Bennani } 8577374d3bSMed Ismail Bennani }; 8677374d3bSMed Ismail Bennani } // namespace lldb_private 8777374d3bSMed Ismail Bennani 8877374d3bSMed Ismail Bennani #endif // LLDB_INTERPRETER_INTERFACES_SCRIPTEDPROCESSINTERFACE_H 89