180814287SRaphael Isemann //===-- SBPlatform.cpp ----------------------------------------------------===// 2fbb76349SGreg Clayton // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6fbb76349SGreg Clayton // 7fbb76349SGreg Clayton //===----------------------------------------------------------------------===// 8fbb76349SGreg Clayton 9fbb76349SGreg Clayton #include "lldb/API/SBPlatform.h" 10baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 11*ca69be21SWalter Erquinigo #include "lldb/API/SBEnvironment.h" 12fbb76349SGreg Clayton #include "lldb/API/SBError.h" 13fbb76349SGreg Clayton #include "lldb/API/SBFileSpec.h" 141ef7b2c8SOleksiy Vyalov #include "lldb/API/SBLaunchInfo.h" 15*ca69be21SWalter Erquinigo #include "lldb/API/SBPlatform.h" 1698d0a4b3SChaoren Lin #include "lldb/API/SBUnixSignals.h" 17fbb76349SGreg Clayton #include "lldb/Host/File.h" 18fbb76349SGreg Clayton #include "lldb/Target/Platform.h" 19b9c1b51eSKate Stone #include "lldb/Target/Target.h" 205f19b907SPavel Labath #include "lldb/Utility/ArchSpec.h" 21145d95c9SPavel Labath #include "lldb/Utility/Args.h" 2297206d57SZachary Turner #include "lldb/Utility/Status.h" 23fbb76349SGreg Clayton 247d86ee5aSZachary Turner #include "llvm/Support/FileSystem.h" 257d86ee5aSZachary Turner 261ef7b2c8SOleksiy Vyalov #include <functional> 271ef7b2c8SOleksiy Vyalov 28fbb76349SGreg Clayton using namespace lldb; 29fbb76349SGreg Clayton using namespace lldb_private; 30fbb76349SGreg Clayton 31fbb76349SGreg Clayton // PlatformConnectOptions 32fbb76349SGreg Clayton struct PlatformConnectOptions { 33248a1305SKonrad Kleine PlatformConnectOptions(const char *url = nullptr) 34b9c1b51eSKate Stone : m_url(), m_rsync_options(), m_rsync_remote_path_prefix(), 35b9c1b51eSKate Stone m_rsync_enabled(false), m_rsync_omit_hostname_from_remote_path(false), 36b9c1b51eSKate Stone m_local_cache_directory() { 37fbb76349SGreg Clayton if (url && url[0]) 38fbb76349SGreg Clayton m_url = url; 39fbb76349SGreg Clayton } 40fbb76349SGreg Clayton 41866b7a65SJonas Devlieghere ~PlatformConnectOptions() = default; 42fbb76349SGreg Clayton 43fbb76349SGreg Clayton std::string m_url; 44fbb76349SGreg Clayton std::string m_rsync_options; 45fbb76349SGreg Clayton std::string m_rsync_remote_path_prefix; 46fbb76349SGreg Clayton bool m_rsync_enabled; 47fbb76349SGreg Clayton bool m_rsync_omit_hostname_from_remote_path; 48fbb76349SGreg Clayton ConstString m_local_cache_directory; 49fbb76349SGreg Clayton }; 50fbb76349SGreg Clayton 51fbb76349SGreg Clayton // PlatformShellCommand 52fbb76349SGreg Clayton struct PlatformShellCommand { 53248a1305SKonrad Kleine PlatformShellCommand(const char *shell_command = nullptr) 5419dd1a0eSPavel Labath : m_command(), m_working_dir(), m_status(0), m_signo(0) { 55fbb76349SGreg Clayton if (shell_command && shell_command[0]) 56fbb76349SGreg Clayton m_command = shell_command; 57fbb76349SGreg Clayton } 58fbb76349SGreg Clayton 59866b7a65SJonas Devlieghere ~PlatformShellCommand() = default; 60fbb76349SGreg Clayton 61fbb76349SGreg Clayton std::string m_command; 62fbb76349SGreg Clayton std::string m_working_dir; 63fbb76349SGreg Clayton std::string m_output; 64fbb76349SGreg Clayton int m_status; 65fbb76349SGreg Clayton int m_signo; 6619dd1a0eSPavel Labath Timeout<std::ratio<1>> m_timeout = llvm::None; 67fbb76349SGreg Clayton }; 68fbb76349SGreg Clayton // SBPlatformConnectOptions 69b9c1b51eSKate Stone SBPlatformConnectOptions::SBPlatformConnectOptions(const char *url) 70baf5664fSJonas Devlieghere : m_opaque_ptr(new PlatformConnectOptions(url)) { 71baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatformConnectOptions, (const char *), url); 72baf5664fSJonas Devlieghere } 73fbb76349SGreg Clayton 74b9c1b51eSKate Stone SBPlatformConnectOptions::SBPlatformConnectOptions( 75b9c1b51eSKate Stone const SBPlatformConnectOptions &rhs) 76b9c1b51eSKate Stone : m_opaque_ptr(new PlatformConnectOptions()) { 77baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatformConnectOptions, 78baf5664fSJonas Devlieghere (const lldb::SBPlatformConnectOptions &), rhs); 79baf5664fSJonas Devlieghere 80fbb76349SGreg Clayton *m_opaque_ptr = *rhs.m_opaque_ptr; 81fbb76349SGreg Clayton } 82fbb76349SGreg Clayton 83b9c1b51eSKate Stone SBPlatformConnectOptions::~SBPlatformConnectOptions() { delete m_opaque_ptr; } 84fbb76349SGreg Clayton 85ede5cd9aSJonas Devlieghere SBPlatformConnectOptions &SBPlatformConnectOptions:: 86ede5cd9aSJonas Devlieghere operator=(const SBPlatformConnectOptions &rhs) { 87baf5664fSJonas Devlieghere LLDB_RECORD_METHOD( 88ede5cd9aSJonas Devlieghere SBPlatformConnectOptions &, 89baf5664fSJonas Devlieghere SBPlatformConnectOptions, operator=,( 90baf5664fSJonas Devlieghere const lldb::SBPlatformConnectOptions &), 91baf5664fSJonas Devlieghere rhs); 92baf5664fSJonas Devlieghere 93fbb76349SGreg Clayton *m_opaque_ptr = *rhs.m_opaque_ptr; 94ede5cd9aSJonas Devlieghere return LLDB_RECORD_RESULT(*this); 95fbb76349SGreg Clayton } 96fbb76349SGreg Clayton 97b9c1b51eSKate Stone const char *SBPlatformConnectOptions::GetURL() { 98baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatformConnectOptions, GetURL); 99baf5664fSJonas Devlieghere 100fbb76349SGreg Clayton if (m_opaque_ptr->m_url.empty()) 101248a1305SKonrad Kleine return nullptr; 102fbb76349SGreg Clayton return m_opaque_ptr->m_url.c_str(); 103fbb76349SGreg Clayton } 104fbb76349SGreg Clayton 105b9c1b51eSKate Stone void SBPlatformConnectOptions::SetURL(const char *url) { 106baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformConnectOptions, SetURL, (const char *), 107baf5664fSJonas Devlieghere url); 108baf5664fSJonas Devlieghere 109fbb76349SGreg Clayton if (url && url[0]) 110fbb76349SGreg Clayton m_opaque_ptr->m_url = url; 111fbb76349SGreg Clayton else 112fbb76349SGreg Clayton m_opaque_ptr->m_url.clear(); 113fbb76349SGreg Clayton } 114fbb76349SGreg Clayton 115b9c1b51eSKate Stone bool SBPlatformConnectOptions::GetRsyncEnabled() { 116baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBPlatformConnectOptions, GetRsyncEnabled); 117baf5664fSJonas Devlieghere 118fbb76349SGreg Clayton return m_opaque_ptr->m_rsync_enabled; 119fbb76349SGreg Clayton } 120fbb76349SGreg Clayton 121b9c1b51eSKate Stone void SBPlatformConnectOptions::EnableRsync( 122b9c1b51eSKate Stone const char *options, const char *remote_path_prefix, 123b9c1b51eSKate Stone bool omit_hostname_from_remote_path) { 124baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformConnectOptions, EnableRsync, 125baf5664fSJonas Devlieghere (const char *, const char *, bool), options, 126baf5664fSJonas Devlieghere remote_path_prefix, omit_hostname_from_remote_path); 127baf5664fSJonas Devlieghere 128fbb76349SGreg Clayton m_opaque_ptr->m_rsync_enabled = true; 129b9c1b51eSKate Stone m_opaque_ptr->m_rsync_omit_hostname_from_remote_path = 130b9c1b51eSKate Stone omit_hostname_from_remote_path; 131fbb76349SGreg Clayton if (remote_path_prefix && remote_path_prefix[0]) 132fbb76349SGreg Clayton m_opaque_ptr->m_rsync_remote_path_prefix = remote_path_prefix; 133fbb76349SGreg Clayton else 134fbb76349SGreg Clayton m_opaque_ptr->m_rsync_remote_path_prefix.clear(); 135fbb76349SGreg Clayton 136fbb76349SGreg Clayton if (options && options[0]) 137fbb76349SGreg Clayton m_opaque_ptr->m_rsync_options = options; 138fbb76349SGreg Clayton else 139fbb76349SGreg Clayton m_opaque_ptr->m_rsync_options.clear(); 140fbb76349SGreg Clayton } 141fbb76349SGreg Clayton 142b9c1b51eSKate Stone void SBPlatformConnectOptions::DisableRsync() { 143baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatformConnectOptions, DisableRsync); 144baf5664fSJonas Devlieghere 145fbb76349SGreg Clayton m_opaque_ptr->m_rsync_enabled = false; 146fbb76349SGreg Clayton } 147fbb76349SGreg Clayton 148b9c1b51eSKate Stone const char *SBPlatformConnectOptions::GetLocalCacheDirectory() { 149baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatformConnectOptions, 150baf5664fSJonas Devlieghere GetLocalCacheDirectory); 151baf5664fSJonas Devlieghere 152fbb76349SGreg Clayton return m_opaque_ptr->m_local_cache_directory.GetCString(); 153fbb76349SGreg Clayton } 154fbb76349SGreg Clayton 155b9c1b51eSKate Stone void SBPlatformConnectOptions::SetLocalCacheDirectory(const char *path) { 156baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformConnectOptions, SetLocalCacheDirectory, 157baf5664fSJonas Devlieghere (const char *), path); 158baf5664fSJonas Devlieghere 159fbb76349SGreg Clayton if (path && path[0]) 160fbb76349SGreg Clayton m_opaque_ptr->m_local_cache_directory.SetCString(path); 161fbb76349SGreg Clayton else 162fbb76349SGreg Clayton m_opaque_ptr->m_local_cache_directory = ConstString(); 163fbb76349SGreg Clayton } 164fbb76349SGreg Clayton 165fbb76349SGreg Clayton // SBPlatformShellCommand 166b9c1b51eSKate Stone SBPlatformShellCommand::SBPlatformShellCommand(const char *shell_command) 167baf5664fSJonas Devlieghere : m_opaque_ptr(new PlatformShellCommand(shell_command)) { 168baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatformShellCommand, (const char *), 169baf5664fSJonas Devlieghere shell_command); 170baf5664fSJonas Devlieghere } 171fbb76349SGreg Clayton 172b9c1b51eSKate Stone SBPlatformShellCommand::SBPlatformShellCommand( 173b9c1b51eSKate Stone const SBPlatformShellCommand &rhs) 174b9c1b51eSKate Stone : m_opaque_ptr(new PlatformShellCommand()) { 175baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatformShellCommand, 176baf5664fSJonas Devlieghere (const lldb::SBPlatformShellCommand &), rhs); 177baf5664fSJonas Devlieghere 178fbb76349SGreg Clayton *m_opaque_ptr = *rhs.m_opaque_ptr; 179fbb76349SGreg Clayton } 180fbb76349SGreg Clayton 181ede5cd9aSJonas Devlieghere SBPlatformShellCommand &SBPlatformShellCommand:: 182ede5cd9aSJonas Devlieghere operator=(const SBPlatformShellCommand &rhs) { 183ede5cd9aSJonas Devlieghere 184ede5cd9aSJonas Devlieghere LLDB_RECORD_METHOD( 185ede5cd9aSJonas Devlieghere SBPlatformShellCommand &, 186ede5cd9aSJonas Devlieghere SBPlatformShellCommand, operator=,(const lldb::SBPlatformShellCommand &), 187ede5cd9aSJonas Devlieghere rhs); 188ede5cd9aSJonas Devlieghere 189ede5cd9aSJonas Devlieghere *m_opaque_ptr = *rhs.m_opaque_ptr; 190ede5cd9aSJonas Devlieghere return LLDB_RECORD_RESULT(*this); 191ede5cd9aSJonas Devlieghere } 192ede5cd9aSJonas Devlieghere 193b9c1b51eSKate Stone SBPlatformShellCommand::~SBPlatformShellCommand() { delete m_opaque_ptr; } 194fbb76349SGreg Clayton 195b9c1b51eSKate Stone void SBPlatformShellCommand::Clear() { 196baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatformShellCommand, Clear); 197baf5664fSJonas Devlieghere 1983a29f8b9SPavel Labath m_opaque_ptr->m_output = std::string(); 199fbb76349SGreg Clayton m_opaque_ptr->m_status = 0; 200fbb76349SGreg Clayton m_opaque_ptr->m_signo = 0; 201fbb76349SGreg Clayton } 202fbb76349SGreg Clayton 203b9c1b51eSKate Stone const char *SBPlatformShellCommand::GetCommand() { 204baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatformShellCommand, GetCommand); 205baf5664fSJonas Devlieghere 206fbb76349SGreg Clayton if (m_opaque_ptr->m_command.empty()) 207248a1305SKonrad Kleine return nullptr; 208fbb76349SGreg Clayton return m_opaque_ptr->m_command.c_str(); 209fbb76349SGreg Clayton } 210fbb76349SGreg Clayton 211b9c1b51eSKate Stone void SBPlatformShellCommand::SetCommand(const char *shell_command) { 212baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformShellCommand, SetCommand, (const char *), 213baf5664fSJonas Devlieghere shell_command); 214baf5664fSJonas Devlieghere 215fbb76349SGreg Clayton if (shell_command && shell_command[0]) 216fbb76349SGreg Clayton m_opaque_ptr->m_command = shell_command; 217fbb76349SGreg Clayton else 218fbb76349SGreg Clayton m_opaque_ptr->m_command.clear(); 219fbb76349SGreg Clayton } 220fbb76349SGreg Clayton 221b9c1b51eSKate Stone const char *SBPlatformShellCommand::GetWorkingDirectory() { 222baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatformShellCommand, 223baf5664fSJonas Devlieghere GetWorkingDirectory); 224baf5664fSJonas Devlieghere 225fbb76349SGreg Clayton if (m_opaque_ptr->m_working_dir.empty()) 226248a1305SKonrad Kleine return nullptr; 227fbb76349SGreg Clayton return m_opaque_ptr->m_working_dir.c_str(); 228fbb76349SGreg Clayton } 229fbb76349SGreg Clayton 230b9c1b51eSKate Stone void SBPlatformShellCommand::SetWorkingDirectory(const char *path) { 231baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformShellCommand, SetWorkingDirectory, 232baf5664fSJonas Devlieghere (const char *), path); 233baf5664fSJonas Devlieghere 234fbb76349SGreg Clayton if (path && path[0]) 235fbb76349SGreg Clayton m_opaque_ptr->m_working_dir = path; 236fbb76349SGreg Clayton else 237fbb76349SGreg Clayton m_opaque_ptr->m_working_dir.clear(); 238fbb76349SGreg Clayton } 239fbb76349SGreg Clayton 240b9c1b51eSKate Stone uint32_t SBPlatformShellCommand::GetTimeoutSeconds() { 241baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatformShellCommand, 242baf5664fSJonas Devlieghere GetTimeoutSeconds); 243baf5664fSJonas Devlieghere 24419dd1a0eSPavel Labath if (m_opaque_ptr->m_timeout) 24519dd1a0eSPavel Labath return m_opaque_ptr->m_timeout->count(); 24619dd1a0eSPavel Labath return UINT32_MAX; 247fbb76349SGreg Clayton } 248fbb76349SGreg Clayton 249b9c1b51eSKate Stone void SBPlatformShellCommand::SetTimeoutSeconds(uint32_t sec) { 250baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBPlatformShellCommand, SetTimeoutSeconds, 251baf5664fSJonas Devlieghere (uint32_t), sec); 252baf5664fSJonas Devlieghere 25319dd1a0eSPavel Labath if (sec == UINT32_MAX) 25419dd1a0eSPavel Labath m_opaque_ptr->m_timeout = llvm::None; 25519dd1a0eSPavel Labath else 25619dd1a0eSPavel Labath m_opaque_ptr->m_timeout = std::chrono::seconds(sec); 257fbb76349SGreg Clayton } 258fbb76349SGreg Clayton 259baf5664fSJonas Devlieghere int SBPlatformShellCommand::GetSignal() { 260baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(int, SBPlatformShellCommand, GetSignal); 261fbb76349SGreg Clayton 262baf5664fSJonas Devlieghere return m_opaque_ptr->m_signo; 263baf5664fSJonas Devlieghere } 264baf5664fSJonas Devlieghere 265baf5664fSJonas Devlieghere int SBPlatformShellCommand::GetStatus() { 266baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(int, SBPlatformShellCommand, GetStatus); 267baf5664fSJonas Devlieghere 268baf5664fSJonas Devlieghere return m_opaque_ptr->m_status; 269baf5664fSJonas Devlieghere } 270fbb76349SGreg Clayton 271b9c1b51eSKate Stone const char *SBPlatformShellCommand::GetOutput() { 272baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatformShellCommand, GetOutput); 273baf5664fSJonas Devlieghere 274fbb76349SGreg Clayton if (m_opaque_ptr->m_output.empty()) 275248a1305SKonrad Kleine return nullptr; 276fbb76349SGreg Clayton return m_opaque_ptr->m_output.c_str(); 277fbb76349SGreg Clayton } 278fbb76349SGreg Clayton 279fbb76349SGreg Clayton // SBPlatform 280baf5664fSJonas Devlieghere SBPlatform::SBPlatform() : m_opaque_sp() { 281baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBPlatform); 282baf5664fSJonas Devlieghere } 283fbb76349SGreg Clayton 284b9c1b51eSKate Stone SBPlatform::SBPlatform(const char *platform_name) : m_opaque_sp() { 285baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatform, (const char *), platform_name); 286baf5664fSJonas Devlieghere 28797206d57SZachary Turner Status error; 288615eb7e6SGreg Clayton if (platform_name && platform_name[0]) 289615eb7e6SGreg Clayton m_opaque_sp = Platform::Create(ConstString(platform_name), error); 290fbb76349SGreg Clayton } 291fbb76349SGreg Clayton 29266dc4672SJonas Devlieghere SBPlatform::SBPlatform(const SBPlatform &rhs) { 29366dc4672SJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBPlatform, (const lldb::SBPlatform &), rhs); 29466dc4672SJonas Devlieghere 29566dc4672SJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp; 29666dc4672SJonas Devlieghere } 29766dc4672SJonas Devlieghere 298ede5cd9aSJonas Devlieghere SBPlatform &SBPlatform::operator=(const SBPlatform &rhs) { 299ede5cd9aSJonas Devlieghere LLDB_RECORD_METHOD(SBPlatform &, 300ede5cd9aSJonas Devlieghere SBPlatform, operator=,(const lldb::SBPlatform &), rhs); 30166dc4672SJonas Devlieghere 30266dc4672SJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp; 303ede5cd9aSJonas Devlieghere return LLDB_RECORD_RESULT(*this); 30466dc4672SJonas Devlieghere } 30566dc4672SJonas Devlieghere 306866b7a65SJonas Devlieghere SBPlatform::~SBPlatform() = default; 307fbb76349SGreg Clayton 308a31130f6STatyana Krasnukha SBPlatform SBPlatform::GetHostPlatform() { 309a31130f6STatyana Krasnukha SBPlatform host_platform; 310a31130f6STatyana Krasnukha host_platform.m_opaque_sp = Platform::GetHostPlatform(); 311a31130f6STatyana Krasnukha return host_platform; 312a31130f6STatyana Krasnukha } 313a31130f6STatyana Krasnukha 314baf5664fSJonas Devlieghere bool SBPlatform::IsValid() const { 315baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBPlatform, IsValid); 3167f5237bcSPavel Labath return this->operator bool(); 3177f5237bcSPavel Labath } 3187f5237bcSPavel Labath SBPlatform::operator bool() const { 3197f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBPlatform, operator bool); 320fbb76349SGreg Clayton 321248a1305SKonrad Kleine return m_opaque_sp.get() != nullptr; 322baf5664fSJonas Devlieghere } 323baf5664fSJonas Devlieghere 324baf5664fSJonas Devlieghere void SBPlatform::Clear() { 325baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatform, Clear); 326baf5664fSJonas Devlieghere 327baf5664fSJonas Devlieghere m_opaque_sp.reset(); 328baf5664fSJonas Devlieghere } 329fbb76349SGreg Clayton 330b9c1b51eSKate Stone const char *SBPlatform::GetName() { 331baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetName); 332baf5664fSJonas Devlieghere 333fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 334fbb76349SGreg Clayton if (platform_sp) 335fbb76349SGreg Clayton return platform_sp->GetName().GetCString(); 336248a1305SKonrad Kleine return nullptr; 337fbb76349SGreg Clayton } 338fbb76349SGreg Clayton 339b9c1b51eSKate Stone lldb::PlatformSP SBPlatform::GetSP() const { return m_opaque_sp; } 340fbb76349SGreg Clayton 341b9c1b51eSKate Stone void SBPlatform::SetSP(const lldb::PlatformSP &platform_sp) { 342fbb76349SGreg Clayton m_opaque_sp = platform_sp; 343fbb76349SGreg Clayton } 344fbb76349SGreg Clayton 345b9c1b51eSKate Stone const char *SBPlatform::GetWorkingDirectory() { 346baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetWorkingDirectory); 347baf5664fSJonas Devlieghere 348fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 349fbb76349SGreg Clayton if (platform_sp) 350fbb76349SGreg Clayton return platform_sp->GetWorkingDirectory().GetCString(); 351248a1305SKonrad Kleine return nullptr; 352fbb76349SGreg Clayton } 353fbb76349SGreg Clayton 354b9c1b51eSKate Stone bool SBPlatform::SetWorkingDirectory(const char *path) { 355baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBPlatform, SetWorkingDirectory, (const char *), 356baf5664fSJonas Devlieghere path); 357baf5664fSJonas Devlieghere 358fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 359b9c1b51eSKate Stone if (platform_sp) { 360fbb76349SGreg Clayton if (path) 3618f3be7a3SJonas Devlieghere platform_sp->SetWorkingDirectory(FileSpec(path)); 362fbb76349SGreg Clayton else 3638f3be7a3SJonas Devlieghere platform_sp->SetWorkingDirectory(FileSpec()); 364fbb76349SGreg Clayton return true; 365fbb76349SGreg Clayton } 366fbb76349SGreg Clayton return false; 367fbb76349SGreg Clayton } 368fbb76349SGreg Clayton 369b9c1b51eSKate Stone SBError SBPlatform::ConnectRemote(SBPlatformConnectOptions &connect_options) { 370baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, ConnectRemote, 371baf5664fSJonas Devlieghere (lldb::SBPlatformConnectOptions &), connect_options); 372baf5664fSJonas Devlieghere 373fbb76349SGreg Clayton SBError sb_error; 374fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 375b9c1b51eSKate Stone if (platform_sp && connect_options.GetURL()) { 376fbb76349SGreg Clayton Args args; 377ecbb0bb1SZachary Turner args.AppendArgument( 378ecbb0bb1SZachary Turner llvm::StringRef::withNullAsEmpty(connect_options.GetURL())); 379fbb76349SGreg Clayton sb_error.ref() = platform_sp->ConnectRemote(args); 380b9c1b51eSKate Stone } else { 381fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 382fbb76349SGreg Clayton } 383baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 384fbb76349SGreg Clayton } 385fbb76349SGreg Clayton 386b9c1b51eSKate Stone void SBPlatform::DisconnectRemote() { 387baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatform, DisconnectRemote); 388baf5664fSJonas Devlieghere 389fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 390fbb76349SGreg Clayton if (platform_sp) 391fbb76349SGreg Clayton platform_sp->DisconnectRemote(); 392fbb76349SGreg Clayton } 393fbb76349SGreg Clayton 394b9c1b51eSKate Stone bool SBPlatform::IsConnected() { 395baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBPlatform, IsConnected); 396baf5664fSJonas Devlieghere 397fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 398fbb76349SGreg Clayton if (platform_sp) 399ca38766cSJim Ingham return platform_sp->IsConnected(); 400fbb76349SGreg Clayton return false; 401fbb76349SGreg Clayton } 402fbb76349SGreg Clayton 403b9c1b51eSKate Stone const char *SBPlatform::GetTriple() { 404baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetTriple); 405baf5664fSJonas Devlieghere 406fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 407b9c1b51eSKate Stone if (platform_sp) { 408ccd28a14STamas Berghammer ArchSpec arch(platform_sp->GetSystemArchitecture()); 409b9c1b51eSKate Stone if (arch.IsValid()) { 410b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 411b9c1b51eSKate Stone // the string 412fbb76349SGreg Clayton return ConstString(arch.GetTriple().getTriple().c_str()).GetCString(); 413fbb76349SGreg Clayton } 414fbb76349SGreg Clayton } 415248a1305SKonrad Kleine return nullptr; 416fbb76349SGreg Clayton } 417fbb76349SGreg Clayton 418b9c1b51eSKate Stone const char *SBPlatform::GetOSBuild() { 419baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetOSBuild); 420baf5664fSJonas Devlieghere 421fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 422b9c1b51eSKate Stone if (platform_sp) { 423fbb76349SGreg Clayton std::string s; 424b9c1b51eSKate Stone if (platform_sp->GetOSBuildString(s)) { 425b9c1b51eSKate Stone if (!s.empty()) { 426b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 427b9c1b51eSKate Stone // the string 428fbb76349SGreg Clayton return ConstString(s.c_str()).GetCString(); 429fbb76349SGreg Clayton } 430fbb76349SGreg Clayton } 431fbb76349SGreg Clayton } 432248a1305SKonrad Kleine return nullptr; 433fbb76349SGreg Clayton } 434fbb76349SGreg Clayton 435b9c1b51eSKate Stone const char *SBPlatform::GetOSDescription() { 436baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetOSDescription); 437baf5664fSJonas Devlieghere 438fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 439b9c1b51eSKate Stone if (platform_sp) { 440fbb76349SGreg Clayton std::string s; 441b9c1b51eSKate Stone if (platform_sp->GetOSKernelDescription(s)) { 442b9c1b51eSKate Stone if (!s.empty()) { 443b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 444b9c1b51eSKate Stone // the string 445fbb76349SGreg Clayton return ConstString(s.c_str()).GetCString(); 446fbb76349SGreg Clayton } 447fbb76349SGreg Clayton } 448fbb76349SGreg Clayton } 449248a1305SKonrad Kleine return nullptr; 450fbb76349SGreg Clayton } 451fbb76349SGreg Clayton 452b9c1b51eSKate Stone const char *SBPlatform::GetHostname() { 453baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetHostname); 454baf5664fSJonas Devlieghere 455fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 456fbb76349SGreg Clayton if (platform_sp) 457fbb76349SGreg Clayton return platform_sp->GetHostname(); 458248a1305SKonrad Kleine return nullptr; 459fbb76349SGreg Clayton } 460fbb76349SGreg Clayton 461b9c1b51eSKate Stone uint32_t SBPlatform::GetOSMajorVersion() { 462baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSMajorVersion); 463baf5664fSJonas Devlieghere 4642272c481SPavel Labath llvm::VersionTuple version; 4652272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4662272c481SPavel Labath version = platform_sp->GetOSVersion(); 4672272c481SPavel Labath return version.empty() ? UINT32_MAX : version.getMajor(); 468fbb76349SGreg Clayton } 469fbb76349SGreg Clayton 470b9c1b51eSKate Stone uint32_t SBPlatform::GetOSMinorVersion() { 471baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSMinorVersion); 472baf5664fSJonas Devlieghere 4732272c481SPavel Labath llvm::VersionTuple version; 4742272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4752272c481SPavel Labath version = platform_sp->GetOSVersion(); 4762272c481SPavel Labath return version.getMinor().getValueOr(UINT32_MAX); 477fbb76349SGreg Clayton } 478fbb76349SGreg Clayton 479b9c1b51eSKate Stone uint32_t SBPlatform::GetOSUpdateVersion() { 480baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSUpdateVersion); 481baf5664fSJonas Devlieghere 4822272c481SPavel Labath llvm::VersionTuple version; 4832272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4842272c481SPavel Labath version = platform_sp->GetOSVersion(); 4852272c481SPavel Labath return version.getSubminor().getValueOr(UINT32_MAX); 486fbb76349SGreg Clayton } 487fbb76349SGreg Clayton 488b9c1b51eSKate Stone SBError SBPlatform::Get(SBFileSpec &src, SBFileSpec &dst) { 489baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Get, 490baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 491baf5664fSJonas Devlieghere 492fbb76349SGreg Clayton SBError sb_error; 493fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 494b9c1b51eSKate Stone if (platform_sp) { 495fbb76349SGreg Clayton sb_error.ref() = platform_sp->GetFile(src.ref(), dst.ref()); 496b9c1b51eSKate Stone } else { 497fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 498fbb76349SGreg Clayton } 499baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 500fbb76349SGreg Clayton } 501fbb76349SGreg Clayton 502b9c1b51eSKate Stone SBError SBPlatform::Put(SBFileSpec &src, SBFileSpec &dst) { 503baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Put, 504baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 505baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 506baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 507b9c1b51eSKate Stone if (src.Exists()) { 508baf5664fSJonas Devlieghere uint32_t permissions = 509baf5664fSJonas Devlieghere FileSystem::Instance().GetPermissions(src.ref()); 510b9c1b51eSKate Stone if (permissions == 0) { 5113a58d898SJonas Devlieghere if (FileSystem::Instance().IsDirectory(src.ref())) 512fbb76349SGreg Clayton permissions = eFilePermissionsDirectoryDefault; 513fbb76349SGreg Clayton else 514fbb76349SGreg Clayton permissions = eFilePermissionsFileDefault; 515fbb76349SGreg Clayton } 516fbb76349SGreg Clayton 5171ef7b2c8SOleksiy Vyalov return platform_sp->PutFile(src.ref(), dst.ref(), permissions); 518fbb76349SGreg Clayton } 5191ef7b2c8SOleksiy Vyalov 52097206d57SZachary Turner Status error; 521b9c1b51eSKate Stone error.SetErrorStringWithFormat("'src' argument doesn't exist: '%s'", 522b9c1b51eSKate Stone src.ref().GetPath().c_str()); 5231ef7b2c8SOleksiy Vyalov return error; 524baf5664fSJonas Devlieghere })); 525fbb76349SGreg Clayton } 526fbb76349SGreg Clayton 527b9c1b51eSKate Stone SBError SBPlatform::Install(SBFileSpec &src, SBFileSpec &dst) { 528baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Install, 529baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 530baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 531baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 532fbb76349SGreg Clayton if (src.Exists()) 5331ef7b2c8SOleksiy Vyalov return platform_sp->Install(src.ref(), dst.ref()); 5341ef7b2c8SOleksiy Vyalov 53597206d57SZachary Turner Status error; 536b9c1b51eSKate Stone error.SetErrorStringWithFormat("'src' argument doesn't exist: '%s'", 537b9c1b51eSKate Stone src.ref().GetPath().c_str()); 5381ef7b2c8SOleksiy Vyalov return error; 539baf5664fSJonas Devlieghere })); 540fbb76349SGreg Clayton } 541fbb76349SGreg Clayton 542b9c1b51eSKate Stone SBError SBPlatform::Run(SBPlatformShellCommand &shell_command) { 543baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Run, 544baf5664fSJonas Devlieghere (lldb::SBPlatformShellCommand &), shell_command); 545baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ExecuteConnected([&](const lldb::PlatformSP 546baf5664fSJonas Devlieghere &platform_sp) { 547fbb76349SGreg Clayton const char *command = shell_command.GetCommand(); 5481ef7b2c8SOleksiy Vyalov if (!command) 54997206d57SZachary Turner return Status("invalid shell command (empty)"); 5501ef7b2c8SOleksiy Vyalov 551fbb76349SGreg Clayton const char *working_dir = shell_command.GetWorkingDirectory(); 552248a1305SKonrad Kleine if (working_dir == nullptr) { 553fbb76349SGreg Clayton working_dir = platform_sp->GetWorkingDirectory().GetCString(); 554fbb76349SGreg Clayton if (working_dir) 555fbb76349SGreg Clayton shell_command.SetWorkingDirectory(working_dir); 556fbb76349SGreg Clayton } 5578f3be7a3SJonas Devlieghere return platform_sp->RunShellCommand(command, FileSpec(working_dir), 558fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_status, 559fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_signo, 560fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_output, 56119dd1a0eSPavel Labath shell_command.m_opaque_ptr->m_timeout); 562baf5664fSJonas Devlieghere })); 563fbb76349SGreg Clayton } 5641ef7b2c8SOleksiy Vyalov 565b9c1b51eSKate Stone SBError SBPlatform::Launch(SBLaunchInfo &launch_info) { 566baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Launch, (lldb::SBLaunchInfo &), 567baf5664fSJonas Devlieghere launch_info); 568baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 569baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 57062930e57SPavel Labath ProcessLaunchInfo info = launch_info.ref(); 57162930e57SPavel Labath Status error = platform_sp->LaunchProcess(info); 57262930e57SPavel Labath launch_info.set_ref(info); 57362930e57SPavel Labath return error; 574baf5664fSJonas Devlieghere })); 5751ef7b2c8SOleksiy Vyalov } 5761ef7b2c8SOleksiy Vyalov 577b9c1b51eSKate Stone SBError SBPlatform::Kill(const lldb::pid_t pid) { 578baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Kill, (const lldb::pid_t), pid); 579baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 580baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 5811ef7b2c8SOleksiy Vyalov return platform_sp->KillProcess(pid); 582baf5664fSJonas Devlieghere })); 5831ef7b2c8SOleksiy Vyalov } 5841ef7b2c8SOleksiy Vyalov 585b9c1b51eSKate Stone SBError SBPlatform::ExecuteConnected( 58697206d57SZachary Turner const std::function<Status(const lldb::PlatformSP &)> &func) { 5871ef7b2c8SOleksiy Vyalov SBError sb_error; 5881ef7b2c8SOleksiy Vyalov const auto platform_sp(GetSP()); 589b9c1b51eSKate Stone if (platform_sp) { 5901ef7b2c8SOleksiy Vyalov if (platform_sp->IsConnected()) 5911ef7b2c8SOleksiy Vyalov sb_error.ref() = func(platform_sp); 5921ef7b2c8SOleksiy Vyalov else 593fbb76349SGreg Clayton sb_error.SetErrorString("not connected"); 594b9c1b51eSKate Stone } else 595fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 5961ef7b2c8SOleksiy Vyalov 597fbb76349SGreg Clayton return sb_error; 598fbb76349SGreg Clayton } 599fbb76349SGreg Clayton 600b9c1b51eSKate Stone SBError SBPlatform::MakeDirectory(const char *path, uint32_t file_permissions) { 601baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, MakeDirectory, 602baf5664fSJonas Devlieghere (const char *, uint32_t), path, file_permissions); 603baf5664fSJonas Devlieghere 604fbb76349SGreg Clayton SBError sb_error; 605fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 606b9c1b51eSKate Stone if (platform_sp) { 607b9c1b51eSKate Stone sb_error.ref() = 6088f3be7a3SJonas Devlieghere platform_sp->MakeDirectory(FileSpec(path), file_permissions); 609b9c1b51eSKate Stone } else { 610fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 611fbb76349SGreg Clayton } 612baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 613fbb76349SGreg Clayton } 614fbb76349SGreg Clayton 615b9c1b51eSKate Stone uint32_t SBPlatform::GetFilePermissions(const char *path) { 616baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint32_t, SBPlatform, GetFilePermissions, (const char *), 617baf5664fSJonas Devlieghere path); 618baf5664fSJonas Devlieghere 619fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 620b9c1b51eSKate Stone if (platform_sp) { 621fbb76349SGreg Clayton uint32_t file_permissions = 0; 6228f3be7a3SJonas Devlieghere platform_sp->GetFilePermissions(FileSpec(path), file_permissions); 623fbb76349SGreg Clayton return file_permissions; 624fbb76349SGreg Clayton } 625fbb76349SGreg Clayton return 0; 626fbb76349SGreg Clayton } 627fbb76349SGreg Clayton 628b9c1b51eSKate Stone SBError SBPlatform::SetFilePermissions(const char *path, 629b9c1b51eSKate Stone uint32_t file_permissions) { 630baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, SetFilePermissions, 631baf5664fSJonas Devlieghere (const char *, uint32_t), path, file_permissions); 632baf5664fSJonas Devlieghere 633fbb76349SGreg Clayton SBError sb_error; 634fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 635b9c1b51eSKate Stone if (platform_sp) { 6368f3be7a3SJonas Devlieghere sb_error.ref() = 6378f3be7a3SJonas Devlieghere platform_sp->SetFilePermissions(FileSpec(path), file_permissions); 638b9c1b51eSKate Stone } else { 639fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 640fbb76349SGreg Clayton } 641baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 642fbb76349SGreg Clayton } 643fbb76349SGreg Clayton 644b9c1b51eSKate Stone SBUnixSignals SBPlatform::GetUnixSignals() const { 645baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBUnixSignals, SBPlatform, 646baf5664fSJonas Devlieghere GetUnixSignals); 64798d0a4b3SChaoren Lin 648baf5664fSJonas Devlieghere if (auto platform_sp = GetSP()) 649baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBUnixSignals{platform_sp}); 650baf5664fSJonas Devlieghere 651baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBUnixSignals()); 65298d0a4b3SChaoren Lin } 653ae211eceSMichal Gorny 654*ca69be21SWalter Erquinigo SBEnvironment SBPlatform::GetEnvironment() { 655*ca69be21SWalter Erquinigo LLDB_RECORD_METHOD_NO_ARGS(lldb::SBEnvironment, SBPlatform, GetEnvironment); 656*ca69be21SWalter Erquinigo PlatformSP platform_sp(GetSP()); 657*ca69be21SWalter Erquinigo 658*ca69be21SWalter Erquinigo if (platform_sp) { 659*ca69be21SWalter Erquinigo return LLDB_RECORD_RESULT(SBEnvironment(platform_sp->GetEnvironment())); 660*ca69be21SWalter Erquinigo } 661*ca69be21SWalter Erquinigo 662*ca69be21SWalter Erquinigo return LLDB_RECORD_RESULT(SBEnvironment()); 663*ca69be21SWalter Erquinigo } 664*ca69be21SWalter Erquinigo 665ae211eceSMichal Gorny namespace lldb_private { 666ae211eceSMichal Gorny namespace repro { 667ae211eceSMichal Gorny 668ae211eceSMichal Gorny template <> 669ae211eceSMichal Gorny void RegisterMethods<SBPlatformConnectOptions>(Registry &R) { 670ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformConnectOptions, (const char *)); 671ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformConnectOptions, 672ae211eceSMichal Gorny (const lldb::SBPlatformConnectOptions &)); 673ae211eceSMichal Gorny LLDB_REGISTER_METHOD( 674ede5cd9aSJonas Devlieghere SBPlatformConnectOptions &, 675ae211eceSMichal Gorny SBPlatformConnectOptions, operator=,( 676ae211eceSMichal Gorny const lldb::SBPlatformConnectOptions &)); 677ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformConnectOptions, GetURL, ()); 678ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, SetURL, 679ae211eceSMichal Gorny (const char *)); 680ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatformConnectOptions, GetRsyncEnabled, ()); 681ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, EnableRsync, 682ae211eceSMichal Gorny (const char *, const char *, bool)); 683ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, DisableRsync, ()); 684ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformConnectOptions, 685ae211eceSMichal Gorny GetLocalCacheDirectory, ()); 686ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, SetLocalCacheDirectory, 687ae211eceSMichal Gorny (const char *)); 688ae211eceSMichal Gorny } 689ae211eceSMichal Gorny 690ae211eceSMichal Gorny template <> 691ae211eceSMichal Gorny void RegisterMethods<SBPlatformShellCommand>(Registry &R) { 692ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformShellCommand, (const char *)); 693ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformShellCommand, 694ae211eceSMichal Gorny (const lldb::SBPlatformShellCommand &)); 695ede5cd9aSJonas Devlieghere LLDB_REGISTER_METHOD( 696ede5cd9aSJonas Devlieghere SBPlatformShellCommand &, 697ede5cd9aSJonas Devlieghere SBPlatformShellCommand, operator=,(const lldb::SBPlatformShellCommand &)); 698ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, Clear, ()); 699ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, GetCommand, ()); 700ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetCommand, 701ae211eceSMichal Gorny (const char *)); 702ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, 703ae211eceSMichal Gorny GetWorkingDirectory, ()); 704ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetWorkingDirectory, 705ae211eceSMichal Gorny (const char *)); 706ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatformShellCommand, GetTimeoutSeconds, 707ae211eceSMichal Gorny ()); 708ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetTimeoutSeconds, 709ae211eceSMichal Gorny (uint32_t)); 710ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int, SBPlatformShellCommand, GetSignal, ()); 711ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int, SBPlatformShellCommand, GetStatus, ()); 712ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, GetOutput, ()); 713ae211eceSMichal Gorny } 714ae211eceSMichal Gorny 715ae211eceSMichal Gorny template <> 716ae211eceSMichal Gorny void RegisterMethods<SBPlatform>(Registry &R) { 717ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatform, ()); 718ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatform, (const char *)); 71966dc4672SJonas Devlieghere LLDB_REGISTER_CONSTRUCTOR(SBPlatform, (const lldb::SBPlatform &)); 720ede5cd9aSJonas Devlieghere LLDB_REGISTER_METHOD(SBPlatform &, 721ede5cd9aSJonas Devlieghere SBPlatform, operator=,(const lldb::SBPlatform &)); 722ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBPlatform, IsValid, ()); 723ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBPlatform, operator bool, ()); 724ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatform, Clear, ()); 725ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetName, ()); 726ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetWorkingDirectory, ()); 727ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatform, SetWorkingDirectory, (const char *)); 728ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, ConnectRemote, 729ae211eceSMichal Gorny (lldb::SBPlatformConnectOptions &)); 730ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatform, DisconnectRemote, ()); 731ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatform, IsConnected, ()); 732ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetTriple, ()); 733ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetOSBuild, ()); 734ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetOSDescription, ()); 735ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetHostname, ()); 736ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSMajorVersion, ()); 737ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSMinorVersion, ()); 738ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSUpdateVersion, ()); 739ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Get, 740ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 741ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Put, 742ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 743ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Install, 744ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 745ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Run, 746ae211eceSMichal Gorny (lldb::SBPlatformShellCommand &)); 747ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Launch, 748ae211eceSMichal Gorny (lldb::SBLaunchInfo &)); 749ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Kill, (const lldb::pid_t)); 750ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, MakeDirectory, 751ae211eceSMichal Gorny (const char *, uint32_t)); 752ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetFilePermissions, 753ae211eceSMichal Gorny (const char *)); 754ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, SetFilePermissions, 755ae211eceSMichal Gorny (const char *, uint32_t)); 756*ca69be21SWalter Erquinigo LLDB_REGISTER_METHOD(lldb::SBEnvironment, SBPlatform, GetEnvironment, ()); 757ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(lldb::SBUnixSignals, SBPlatform, GetUnixSignals, 758ae211eceSMichal Gorny ()); 759ae211eceSMichal Gorny } 760ae211eceSMichal Gorny 761ae211eceSMichal Gorny } 762ae211eceSMichal Gorny } 763