brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 703b942 Raw
92 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H10#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H11 12#include "lldb/Host/Config.h"13#include "lldb/Interpreter/Interfaces/ScriptedProcessInterface.h"14 15#if LLDB_ENABLE_PYTHON16 17#include "ScriptedPythonInterface.h"18 19#include <optional>20 21namespace lldb_private {22class ScriptedProcessPythonInterface : public ScriptedProcessInterface,23                                       public ScriptedPythonInterface,24                                       public PluginInterface {25public:26  ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter);27 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;33 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"}});40  }41 42  StructuredData::DictionarySP GetCapabilities() override;43 44  Status Attach(const ProcessAttachInfo &attach_info) override;45 46  Status Launch() override;47 48  Status Resume() override;49 50  std::optional<MemoryRegionInfo>51  GetMemoryRegionContainingAddress(lldb::addr_t address,52                                   Status &error) override;53 54  StructuredData::DictionarySP GetThreadsInfo() override;55 56  bool CreateBreakpoint(lldb::addr_t addr, Status &error) override;57 58  lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size,59                                            Status &error) override;60 61  lldb::offset_t WriteMemoryAtAddress(lldb::addr_t addr,62                                      lldb::DataExtractorSP data_sp,63                                      Status &error) override;64 65  StructuredData::ArraySP GetLoadedImages() override;66 67  lldb::pid_t GetProcessID() override;68 69  bool IsAlive() override;70 71  std::optional<std::string> GetScriptedThreadPluginName() override;72 73  StructuredData::DictionarySP GetMetadata() override;74 75  static void Initialize();76 77  static void Terminate();78 79  static llvm::StringRef GetPluginNameStatic() {80    return "ScriptedProcessPythonInterface";81  }82 83  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }84 85private:86  lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() override;87};88} // namespace lldb_private89 90#endif // LLDB_ENABLE_PYTHON91#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_INTERFACES_SCRIPTEDPROCESSPYTHONINTERFACE_H92