Reland [OffloadBundler] Compress bundles over 4GB (#122307)
[llvm-project.git] / lldb / source / Plugins / ScriptInterpreter / Python / Interfaces / ScriptedProcessPythonInterface.h
blob703b942fe5647c0fd11b437e42fe74eb3c274df1
1 //===-- ScriptedProcessPythonInterface.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 //===----------------------------------------------------------------------===//
9 #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H
10 #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H
12 #include "lldb/Host/Config.h"
13 #include "lldb/Interpreter/Interfaces/ScriptedProcessInterface.h"
15 #if LLDB_ENABLE_PYTHON
17 #include "ScriptedPythonInterface.h"
19 #include <optional>
21 namespace lldb_private {
22 class ScriptedProcessPythonInterface : public ScriptedProcessInterface,
23 public ScriptedPythonInterface,
24 public PluginInterface {
25 public:
26 ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter);
28 llvm::Expected<StructuredData::GenericSP>
29 CreatePluginObject(const llvm::StringRef class_name,
30 ExecutionContext &exe_ctx,
31 StructuredData::DictionarySP args_sp,
32 StructuredData::Generic *script_obj = nullptr) override;
34 llvm::SmallVector<AbstractMethodRequirement>
35 GetAbstractMethodRequirements() const override {
36 return llvm::SmallVector<AbstractMethodRequirement>(
37 {{"read_memory_at_address", 4},
38 {"is_alive"},
39 {"get_scripted_thread_plugin"}});
42 StructuredData::DictionarySP GetCapabilities() override;
44 Status Attach(const ProcessAttachInfo &attach_info) override;
46 Status Launch() override;
48 Status Resume() override;
50 std::optional<MemoryRegionInfo>
51 GetMemoryRegionContainingAddress(lldb::addr_t address,
52 Status &error) override;
54 StructuredData::DictionarySP GetThreadsInfo() override;
56 bool CreateBreakpoint(lldb::addr_t addr, Status &error) override;
58 lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size,
59 Status &error) override;
61 lldb::offset_t WriteMemoryAtAddress(lldb::addr_t addr,
62 lldb::DataExtractorSP data_sp,
63 Status &error) override;
65 StructuredData::ArraySP GetLoadedImages() override;
67 lldb::pid_t GetProcessID() override;
69 bool IsAlive() override;
71 std::optional<std::string> GetScriptedThreadPluginName() override;
73 StructuredData::DictionarySP GetMetadata() override;
75 static void Initialize();
77 static void Terminate();
79 static llvm::StringRef GetPluginNameStatic() {
80 return "ScriptedProcessPythonInterface";
83 llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
85 private:
86 lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() override;
88 } // namespace lldb_private
90 #endif // LLDB_ENABLE_PYTHON
91 #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H