[lldb][dwarf] Compute fully qualified names on simplified template names with DWARFT...
[llvm-project.git] / lldb / source / API / SBHostOS.cpp
bloba77a703bba37b5e8d1c9dd25679c79032b76cc2f
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 //===----------------------------------------------------------------------===//
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"
21 #include "Plugins/ExpressionParser/Clang/ClangHost.h"
22 #if LLDB_ENABLE_PYTHON
23 #include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
24 #endif
26 #include "llvm/ADT/SmallString.h"
27 #include "llvm/Support/Path.h"
29 using namespace lldb;
30 using namespace lldb_private;
32 SBFileSpec SBHostOS::GetProgramFileSpec() {
33 LLDB_INSTRUMENT();
35 SBFileSpec sb_filespec;
36 sb_filespec.SetFileSpec(HostInfo::GetProgramFileSpec());
37 return sb_filespec;
40 SBFileSpec SBHostOS::GetLLDBPythonPath() {
41 LLDB_INSTRUMENT();
43 return GetLLDBPath(ePathTypePythonDir);
46 SBFileSpec SBHostOS::GetLLDBPath(lldb::PathType path_type) {
47 LLDB_INSTRUMENT_VA(path_type);
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;
82 SBFileSpec sb_fspec;
83 sb_fspec.SetFileSpec(fspec);
84 return sb_fspec;
87 SBFileSpec SBHostOS::GetUserHomeDirectory() {
88 LLDB_INSTRUMENT();
90 FileSpec homedir;
91 FileSystem::Instance().GetHomeDirectory(homedir);
92 FileSystem::Instance().Resolve(homedir);
94 SBFileSpec sb_fspec;
95 sb_fspec.SetFileSpec(homedir);
97 return sb_fspec;
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;
107 void SBHostOS::ThreadCreated(const char *name) { LLDB_INSTRUMENT_VA(name); }
109 bool SBHostOS::ThreadCancel(lldb::thread_t thread, SBError *error_ptr) {
110 LLDB_INSTRUMENT_VA(thread, error_ptr);
111 return false;
114 bool SBHostOS::ThreadDetach(lldb::thread_t thread, SBError *error_ptr) {
115 LLDB_INSTRUMENT_VA(thread, error_ptr);
116 return false;
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;