|
LLDB mainline
|
#include <ScriptedHookPythonInterface.h>
Public Member Functions | |
| ScriptedHookPythonInterface (ScriptInterpreterPythonImpl &interpreter) | |
| llvm::Expected< StructuredData::GenericSP > | CreatePluginObject (const ScriptedMetadata &scripted_metadata, lldb::TargetSP target_sp) override |
| llvm::SmallVector< AbstractMethodRequirement > | GetAbstractMethodRequirements () const override |
| handle_stop is required so a hook can always be attached via target stop-hook add -P. | |
| SupportedHookMethods | GetSupportedMethods () override |
| Check which of the three hook methods the Python class implements. | |
| void | HandleModuleLoaded (lldb::StreamSP &output_sp) override |
| Called when modules are loaded into the target. | |
| void | HandleModuleUnloaded (lldb::StreamSP &output_sp) override |
| Called when modules are unloaded from the target. Optional. | |
| llvm::Expected< bool > | HandleStop (ExecutionContext &exe_ctx, lldb::StreamSP &output_sp) override |
| Called when the process stops. | |
| llvm::StringRef | GetPluginName () override |
| Public Member Functions inherited from lldb_private::ScriptedInterface | |
| ScriptedInterface ()=default | |
| virtual | ~ScriptedInterface ()=default |
| StructuredData::GenericSP | GetScriptObjectInstance () |
| const std::optional< ScriptedMetadata > & | GetScriptedMetadata () const |
| virtual bool | UserCanRunDirectly () const |
| Whether the user can invoke this extension directly, the way a scripted command can. | |
| llvm::SmallVector< llvm::StringLiteral > const | GetAbstractMethods () const |
| Public Member Functions inherited from lldb_private::ScriptedPythonInterface | |
| ScriptedPythonInterface (ScriptInterpreterPythonImpl &interpreter) | |
| ~ScriptedPythonInterface () override=default | |
| llvm::Expected< FileSpec > | GetScriptedModulePath () override |
| llvm::Expected< std::map< llvm::StringLiteral, AbstractMethodCheckerPayload > > | CheckAbstractMethodImplementation (const python::PythonObject &obj_class) const |
| template<typename... Args> | |
| llvm::Expected< StructuredData::GenericSP > | CreatePluginObject (const ScriptedMetadata &scripted_metadata, StructuredData::Generic *script_obj, Args... args) |
| template<typename T = StructuredData::ObjectSP, typename... Args> | |
| T | CallStaticMethod (llvm::StringRef class_name, llvm::StringRef method_name, Status &error, Args &&...args) |
| Call a static method on a Python class without creating an instance. | |
| Public Member Functions inherited from lldb_private::PluginInterface | |
| PluginInterface ()=default | |
| virtual | ~PluginInterface ()=default |
| PluginInterface (const PluginInterface &)=delete | |
| PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
| static void | Initialize () |
| static void | Terminate () |
| static llvm::StringRef | GetPluginNameStatic () |
| Static Public Member Functions inherited from lldb_private::ScriptedInterface | |
| template<typename Ret> | |
| static Ret | ErrorWithMessage (llvm::StringRef caller_name, llvm::StringRef user_msg, Status &error, LLDBLog log_category=LLDBLog::Process) |
| template<typename T = StructuredData::ObjectSP> | |
| static bool | CheckStructuredDataObject (llvm::StringRef caller, T obj, Status &error) |
| static bool | CreateInstance (lldb::ScriptLanguage language, ScriptedInterfaceUsages usages) |
Additional Inherited Members | |
| Public Types inherited from lldb_private::ScriptedPythonInterface | |
| enum class | AbstractMethodCheckerCases { eNotImplemented , eNotAllocated , eNotCallable , eUnknownArgumentCount , eInvalidArgumentCount , eValid } |
| Protected Member Functions inherited from lldb_private::ScriptedPythonInterface | |
| template<typename T = StructuredData::ObjectSP> | |
| T | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<typename T = StructuredData::ObjectSP, typename... Args> | |
| T | Dispatch (llvm::StringRef method_name, Status &error, Args &&...args) |
| template<typename... Args> | |
| Status | GetStatusFromMethod (llvm::StringRef method_name, Args &&...args) |
| template<typename T> | |
| T | Transform (T object) |
| python::PythonObject | Transform (bool arg) |
| python::PythonObject | Transform (const Status &arg) |
| python::PythonObject | Transform (Status &&arg) |
| python::PythonObject | Transform (const StructuredDataImpl &arg) |
| template<typename T, typename = std::enable_if_t< std::is_base_of_v<StructuredData::Object, T>>> | |
| python::PythonObject | Transform (std::shared_ptr< T > arg) |
| python::PythonObject | Transform (lldb::ExecutionContextRefSP arg) |
| python::PythonObject | Transform (lldb::TargetSP arg) |
| python::PythonObject | Transform (lldb::BreakpointSP arg) |
| python::PythonObject | Transform (lldb::BreakpointLocationSP arg) |
| python::PythonObject | Transform (lldb::ProcessSP arg) |
| python::PythonObject | Transform (lldb::ThreadSP arg) |
| python::PythonObject | Transform (lldb::StackFrameListSP arg) |
| python::PythonObject | Transform (lldb::ThreadPlanSP arg) |
| python::PythonObject | Transform (lldb::ProcessAttachInfoSP arg) |
| python::PythonObject | Transform (lldb::ProcessLaunchInfoSP arg) |
| python::PythonObject | Transform (Event *arg) |
| python::PythonObject | Transform (const SymbolContext &arg) |
| python::PythonObject | Transform (lldb::StreamSP arg) |
| python::PythonObject | Transform (lldb::StackFrameSP arg) |
| python::PythonObject | Transform (lldb::DataExtractorSP arg) |
| python::PythonObject | Transform (lldb::DescriptionLevel arg) |
| python::PythonObject | Transform (lldb::ValueObjectSP arg) |
| python::PythonObject | Transform (lldb::DebuggerSP arg) |
| python::PythonObject | Transform (const std::vector< std::string > &arg) |
| python::ScopedPythonObject< lldb::SBCommandReturnObject > | Transform (CommandReturnObject *arg) |
| python::PythonObject | Transform (const TypeSummaryOptions &arg) |
| template<typename T, typename U> | |
| void | ReverseTransform (T &original_arg, U transformed_arg, Status &error) |
| template<typename T> | |
| void | ReverseTransform (T &original_arg, python::PythonObject transformed_arg, Status &error) |
| template<typename T> | |
| void | ReverseTransform (const T &original_arg, python::PythonObject transformed_arg, Status &error) |
| void | ReverseTransform (bool &original_arg, python::PythonObject transformed_arg, Status &error) |
| template<std::size_t... I, typename... Args> | |
| auto | TransformTuple (const std::tuple< Args... > &args, std::index_sequence< I... >) |
| template<typename... Args> | |
| auto | TransformArgs (const std::tuple< Args... > &args) |
| template<typename T, typename U> | |
| void | TransformBack (T &original_arg, U transformed_arg, Status &error) |
| template<typename T, typename SB> | |
| void | TransformBack (T &original_arg, python::ScopedPythonObject< SB > &transformed_arg, Status &error) |
| template<std::size_t... I, typename... Ts, typename... Us> | |
| bool | ReassignPtrsOrRefsArgs (std::tuple< Ts... > &original_args, std::tuple< Us... > &transformed_args, std::index_sequence< I... >) |
| template<typename... Ts, typename... Us> | |
| bool | ReassignPtrsOrRefsArgs (std::tuple< Ts... > &original_args, std::tuple< Us... > &transformed_args) |
| template<typename T, typename... Args> | |
| void | FormatArgs (std::string &fmt, T arg, Args... args) const |
| template<typename T> | |
| void | FormatArgs (std::string &fmt, T arg) const |
| void | FormatArgs (std::string &fmt) const |
| template<> | |
| Status | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| Event * | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| CommandReturnObject * | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| SymbolContext | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| Status | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| Event * | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| template<> | |
| SymbolContext | ExtractValueFromPythonObject (python::PythonObject &p, Status &error) |
| Static Protected Member Functions inherited from lldb_private::ScriptedPythonInterface | |
| static std::string | ExtractPythonError (llvm::Error error) |
| Extract detailed error message including Python backtrace if available. | |
| template<std::size_t N, typename Tuple, typename Fn, std::size_t... I> | |
| static void | ApplyPrefixImpl (Tuple &&t, Fn &&fn, std::index_sequence< I... >) |
| template<std::size_t N, typename Tuple, typename Fn> | |
| static void | ApplyPrefix (Tuple &&t, Fn &&fn) |
| template<typename Tuple, std::size_t... Is, typename Fn> | |
| static void | CallWithArity (size_t call_arity, Tuple &&t, std::index_sequence< Is... >, Fn &&fn) |
| Protected Attributes inherited from lldb_private::ScriptedInterface | |
| StructuredData::GenericSP | m_object_instance_sp |
| std::optional< ScriptedMetadata > | m_scripted_metadata |
| Protected Attributes inherited from lldb_private::ScriptedPythonInterface | |
| ScriptInterpreterPythonImpl & | m_interpreter |
Definition at line 17 of file ScriptedHookPythonInterface.h.
| ScriptedHookPythonInterface::ScriptedHookPythonInterface | ( | ScriptInterpreterPythonImpl & | interpreter | ) |
Definition at line 25 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedPythonInterface::ScriptedPythonInterface().
|
overridevirtual |
Implements lldb_private::ScriptedHookInterface.
Definition at line 56 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedPythonInterface::CreatePluginObject(), and lldb_private::ScriptedMetadata::GetArgsSP().
|
inlineoverridevirtual |
handle_stop is required so a hook can always be attached via target stop-hook add -P.
handle_module_loaded and handle_module_unloaded are optional; if a hook doesn't implement them, the corresponding events are simply not delivered.
Implements lldb_private::ScriptedInterface.
Definition at line 32 of file ScriptedHookPythonInterface.h.
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 51 of file ScriptedHookPythonInterface.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 47 of file ScriptedHookPythonInterface.h.
Referenced by GetPluginName(), and Initialize().
|
overridevirtual |
Check which of the three hook methods the Python class implements.
Reimplemented from lldb_private::ScriptedHookInterface.
Definition at line 30 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptInterpreterPythonImpl::Locker::AcquireLock, lldb_private::python::Borrowed, lldb_private::ScriptInterpreterPythonImpl::Locker::FreeLock, lldb_private::ScriptedHookInterface::SupportedHookMethods::handle_module_loaded, lldb_private::ScriptedHookInterface::SupportedHookMethods::handle_module_unloaded, lldb_private::ScriptedHookInterface::SupportedHookMethods::handle_stop, lldb_private::python::PythonObject::HasAttribute(), lldb_private::python::PythonObject::IsValid(), lldb_private::ScriptedPythonInterface::m_interpreter, lldb_private::ScriptedInterface::m_object_instance_sp, and lldb_private::ScriptInterpreterPythonImpl::Locker::NoSTDIN.
|
overridevirtual |
Called when modules are loaded into the target.
Reimplemented from lldb_private::ScriptedHookInterface.
Definition at line 63 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedPythonInterface::Dispatch(), and error().
|
overridevirtual |
Called when modules are unloaded from the target. Optional.
Reimplemented from lldb_private::ScriptedHookInterface.
Definition at line 69 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedPythonInterface::Dispatch(), and error().
|
overridevirtual |
Called when the process stops.
Returns "should_stop" if false, the process will continue. Defaults to true (stop on unimplemented).
Reimplemented from lldb_private::ScriptedHookInterface.
Definition at line 76 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedInterface::CheckStructuredDataObject(), lldb_private::ScriptedPythonInterface::Dispatch(), and error().
|
static |
Definition at line 94 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedInterface::CreateInstance(), lldb::eScriptedExtensionScriptedHook, lldb::eScriptLanguagePython, GetPluginNameStatic(), and lldb_private::PluginManager::RegisterPlugin().
Referenced by lldb_private::ScriptInterpreterPythonInterfaces::Initialize().
|
static |
Definition at line 106 of file ScriptedHookPythonInterface.cpp.
References lldb_private::ScriptedInterface::CreateInstance(), and lldb_private::PluginManager::UnregisterPlugin().
Referenced by lldb_private::ScriptInterpreterPythonInterfaces::Terminate().