Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/Interfaces/OperatingSystemPythonInterface.cpp
39688 views
1
//===-- ScriptedThreadPythonInterface.cpp ---------------------------------===//
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
//===----------------------------------------------------------------------===//
8
9
#include "lldb/Host/Config.h"
10
#include "lldb/Target/ExecutionContext.h"
11
#include "lldb/Utility/Log.h"
12
#include "lldb/lldb-enumerations.h"
13
14
#if LLDB_ENABLE_PYTHON
15
16
// LLDB Python header must be included first
17
#include "../lldb-python.h"
18
19
#include "../SWIGPythonBridge.h"
20
#include "../ScriptInterpreterPythonImpl.h"
21
#include "OperatingSystemPythonInterface.h"
22
23
using namespace lldb;
24
using namespace lldb_private;
25
using namespace lldb_private::python;
26
using Locker = ScriptInterpreterPythonImpl::Locker;
27
28
OperatingSystemPythonInterface::OperatingSystemPythonInterface(
29
ScriptInterpreterPythonImpl &interpreter)
30
: OperatingSystemInterface(), ScriptedThreadPythonInterface(interpreter) {}
31
32
llvm::Expected<StructuredData::GenericSP>
33
OperatingSystemPythonInterface::CreatePluginObject(
34
llvm::StringRef class_name, ExecutionContext &exe_ctx,
35
StructuredData::DictionarySP args_sp, StructuredData::Generic *script_obj) {
36
return ScriptedPythonInterface::CreatePluginObject(class_name, nullptr,
37
exe_ctx.GetProcessSP());
38
}
39
40
StructuredData::DictionarySP
41
OperatingSystemPythonInterface::CreateThread(lldb::tid_t tid,
42
lldb::addr_t context) {
43
Status error;
44
StructuredData::DictionarySP dict = Dispatch<StructuredData::DictionarySP>(
45
"create_thread", error, tid, context);
46
47
if (!ScriptedInterface::CheckStructuredDataObject(LLVM_PRETTY_FUNCTION, dict,
48
error))
49
return {};
50
51
return dict;
52
}
53
54
StructuredData::ArraySP OperatingSystemPythonInterface::GetThreadInfo() {
55
Status error;
56
StructuredData::ArraySP arr =
57
Dispatch<StructuredData::ArraySP>("get_thread_info", error);
58
59
if (!ScriptedInterface::CheckStructuredDataObject(LLVM_PRETTY_FUNCTION, arr,
60
error))
61
return {};
62
63
return arr;
64
}
65
66
StructuredData::DictionarySP OperatingSystemPythonInterface::GetRegisterInfo() {
67
return ScriptedThreadPythonInterface::GetRegisterInfo();
68
}
69
70
std::optional<std::string>
71
OperatingSystemPythonInterface::GetRegisterContextForTID(lldb::tid_t tid) {
72
Status error;
73
StructuredData::ObjectSP obj = Dispatch("get_register_data", error, tid);
74
75
if (!ScriptedInterface::CheckStructuredDataObject(LLVM_PRETTY_FUNCTION, obj,
76
error))
77
return {};
78
79
return obj->GetAsString()->GetValue().str();
80
}
81
82
#endif
83
84