116 lines · cpp
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-exception6//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_PYTHON23#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"24#endif25 26#include "llvm/ADT/SmallString.h"27#include "llvm/Support/Path.h"28 29using namespace lldb;30using namespace lldb_private;31 32SBFileSpec SBHostOS::GetProgramFileSpec() {33 LLDB_INSTRUMENT();34 35 SBFileSpec sb_filespec;36 sb_filespec.SetFileSpec(HostInfo::GetProgramFileSpec());37 return sb_filespec;38}39 40SBFileSpec SBHostOS::GetLLDBPythonPath() {41 LLDB_INSTRUMENT();42 43 return GetLLDBPath(ePathTypePythonDir);44}45 46SBFileSpec 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_PYTHON62 fspec = ScriptInterpreterPython::GetPythonDir();63#endif64 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 87SBFileSpec SBHostOS::GetUserHomeDirectory() {88 LLDB_INSTRUMENT();89 return HostInfo::GetUserHomeDir();90}91 92lldb::thread_t SBHostOS::ThreadCreate(const char *name,93 lldb::thread_func_t thread_function,94 void *thread_arg, SBError *error_ptr) {95 LLDB_INSTRUMENT_VA(name, thread_function, thread_arg, error_ptr);96 return LLDB_INVALID_HOST_THREAD;97}98 99void SBHostOS::ThreadCreated(const char *name) { LLDB_INSTRUMENT_VA(name); }100 101bool SBHostOS::ThreadCancel(lldb::thread_t thread, SBError *error_ptr) {102 LLDB_INSTRUMENT_VA(thread, error_ptr);103 return false;104}105 106bool SBHostOS::ThreadDetach(lldb::thread_t thread, SBError *error_ptr) {107 LLDB_INSTRUMENT_VA(thread, error_ptr);108 return false;109}110 111bool SBHostOS::ThreadJoin(lldb::thread_t thread, lldb::thread_result_t *result,112 SBError *error_ptr) {113 LLDB_INSTRUMENT_VA(thread, result, error_ptr);114 return false;115}116