
This patch adds a ScriptedProcess interface to the ScriptInterpreter and more specifically, to the ScriptInterpreterPython. This interface will be used in the C++ `ScriptProcess` Process Plugin to call the script methods. At the moment, not all methods are implemented, they will upstreamed in upcoming patches. This patch also adds helper methods to the ScriptInterpreter to convert `SBAPI` Types (SBData & SBError) to `lldb_private` types (DataExtractor & Status). rdar://65508855 Differential Revision: https://reviews.llvm.org/D95711 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
62 lines
2.1 KiB
C++
62 lines
2.1 KiB
C++
//===-- ScriptedProcessPythonInterface.h ------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H
|
|
#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H
|
|
|
|
#include "lldb/Host/Config.h"
|
|
|
|
#if LLDB_ENABLE_PYTHON
|
|
|
|
#include "lldb/Interpreter/ScriptedProcessInterface.h"
|
|
|
|
namespace lldb_private {
|
|
class ScriptInterpreterPythonImpl;
|
|
class ScriptedProcessPythonInterface : public ScriptedProcessInterface {
|
|
public:
|
|
ScriptedProcessPythonInterface(ScriptInterpreterPythonImpl &interpreter)
|
|
: ScriptedProcessInterface(), m_interpreter(interpreter) {}
|
|
|
|
StructuredData::GenericSP
|
|
CreatePluginObject(const llvm::StringRef class_name, lldb::TargetSP target_sp,
|
|
StructuredData::DictionarySP args_sp) override;
|
|
|
|
Status Launch() override;
|
|
|
|
Status Resume() override;
|
|
|
|
lldb::MemoryRegionInfoSP
|
|
GetMemoryRegionContainingAddress(lldb::addr_t address) override;
|
|
|
|
StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) override;
|
|
|
|
StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) override;
|
|
|
|
lldb::DataExtractorSP ReadMemoryAtAddress(lldb::addr_t address, size_t size,
|
|
Status &error) override;
|
|
|
|
StructuredData::DictionarySP GetLoadedImages() override;
|
|
|
|
lldb::pid_t GetProcessID() override;
|
|
|
|
bool IsAlive() override;
|
|
|
|
protected:
|
|
size_t GetGenericInteger(llvm::StringRef method_name);
|
|
Status LaunchOrResume(llvm::StringRef method_name);
|
|
|
|
private:
|
|
// The lifetime is managed by the ScriptInterpreter
|
|
ScriptInterpreterPythonImpl &m_interpreter;
|
|
StructuredData::GenericSP m_object_instance_sp;
|
|
};
|
|
} // namespace lldb_private
|
|
|
|
#endif // LLDB_ENABLE_PYTHON
|
|
#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTEDPROCESSPYTHONINTERFACE_H
|