Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/API/SBHostOS.cpp
39587 views
1
//===-- SBHostOS.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/API/SBHostOS.h"
10
#include "lldb/API/SBError.h"
11
#include "lldb/Host/Config.h"
12
#include "lldb/Host/FileSystem.h"
13
#include "lldb/Host/Host.h"
14
#include "lldb/Host/HostInfo.h"
15
#include "lldb/Host/HostNativeThread.h"
16
#include "lldb/Host/HostThread.h"
17
#include "lldb/Host/ThreadLauncher.h"
18
#include "lldb/Utility/FileSpec.h"
19
#include "lldb/Utility/Instrumentation.h"
20
21
#include "Plugins/ExpressionParser/Clang/ClangHost.h"
22
#if LLDB_ENABLE_PYTHON
23
#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
24
#endif
25
26
#include "llvm/ADT/SmallString.h"
27
#include "llvm/Support/Path.h"
28
29
using namespace lldb;
30
using namespace lldb_private;
31
32
SBFileSpec SBHostOS::GetProgramFileSpec() {
33
LLDB_INSTRUMENT();
34
35
SBFileSpec sb_filespec;
36
sb_filespec.SetFileSpec(HostInfo::GetProgramFileSpec());
37
return sb_filespec;
38
}
39
40
SBFileSpec SBHostOS::GetLLDBPythonPath() {
41
LLDB_INSTRUMENT();
42
43
return GetLLDBPath(ePathTypePythonDir);
44
}
45
46
SBFileSpec SBHostOS::GetLLDBPath(lldb::PathType path_type) {
47
LLDB_INSTRUMENT_VA(path_type);
48
49
FileSpec fspec;
50
switch (path_type) {
51
case ePathTypeLLDBShlibDir:
52
fspec = HostInfo::GetShlibDir();
53
break;
54
case ePathTypeSupportExecutableDir:
55
fspec = HostInfo::GetSupportExeDir();
56
break;
57
case ePathTypeHeaderDir:
58
fspec = HostInfo::GetHeaderDir();
59
break;
60
case ePathTypePythonDir:
61
#if LLDB_ENABLE_PYTHON
62
fspec = ScriptInterpreterPython::GetPythonDir();
63
#endif
64
break;
65
case ePathTypeLLDBSystemPlugins:
66
fspec = HostInfo::GetSystemPluginDir();
67
break;
68
case ePathTypeLLDBUserPlugins:
69
fspec = HostInfo::GetUserPluginDir();
70
break;
71
case ePathTypeLLDBTempSystemDir:
72
fspec = HostInfo::GetProcessTempDir();
73
break;
74
case ePathTypeGlobalLLDBTempSystemDir:
75
fspec = HostInfo::GetGlobalTempDir();
76
break;
77
case ePathTypeClangDir:
78
fspec = GetClangResourceDir();
79
break;
80
}
81
82
SBFileSpec sb_fspec;
83
sb_fspec.SetFileSpec(fspec);
84
return sb_fspec;
85
}
86
87
SBFileSpec SBHostOS::GetUserHomeDirectory() {
88
LLDB_INSTRUMENT();
89
90
FileSpec homedir;
91
FileSystem::Instance().GetHomeDirectory(homedir);
92
FileSystem::Instance().Resolve(homedir);
93
94
SBFileSpec sb_fspec;
95
sb_fspec.SetFileSpec(homedir);
96
97
return sb_fspec;
98
}
99
100
lldb::thread_t SBHostOS::ThreadCreate(const char *name,
101
lldb::thread_func_t thread_function,
102
void *thread_arg, SBError *error_ptr) {
103
LLDB_INSTRUMENT_VA(name, thread_function, thread_arg, error_ptr);
104
return LLDB_INVALID_HOST_THREAD;
105
}
106
107
void SBHostOS::ThreadCreated(const char *name) { LLDB_INSTRUMENT_VA(name); }
108
109
bool SBHostOS::ThreadCancel(lldb::thread_t thread, SBError *error_ptr) {
110
LLDB_INSTRUMENT_VA(thread, error_ptr);
111
return false;
112
}
113
114
bool SBHostOS::ThreadDetach(lldb::thread_t thread, SBError *error_ptr) {
115
LLDB_INSTRUMENT_VA(thread, error_ptr);
116
return false;
117
}
118
119
bool SBHostOS::ThreadJoin(lldb::thread_t thread, lldb::thread_result_t *result,
120
SBError *error_ptr) {
121
LLDB_INSTRUMENT_VA(thread, result, error_ptr);
122
return false;
123
}
124
125