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" 11ca69be21SWalter 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" 15ca69be21SWalter 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() { 309*5c2bf577SJonas Devlieghere LLDB_RECORD_STATIC_METHOD_NO_ARGS(lldb::SBPlatform, SBPlatform, 310*5c2bf577SJonas Devlieghere GetHostPlatform); 311*5c2bf577SJonas Devlieghere 312a31130f6STatyana Krasnukha SBPlatform host_platform; 313a31130f6STatyana Krasnukha host_platform.m_opaque_sp = Platform::GetHostPlatform(); 314*5c2bf577SJonas Devlieghere return LLDB_RECORD_RESULT(host_platform); 315a31130f6STatyana Krasnukha } 316a31130f6STatyana Krasnukha 317baf5664fSJonas Devlieghere bool SBPlatform::IsValid() const { 318baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBPlatform, IsValid); 3197f5237bcSPavel Labath return this->operator bool(); 3207f5237bcSPavel Labath } 3217f5237bcSPavel Labath SBPlatform::operator bool() const { 3227f5237bcSPavel Labath LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBPlatform, operator bool); 323fbb76349SGreg Clayton 324248a1305SKonrad Kleine return m_opaque_sp.get() != nullptr; 325baf5664fSJonas Devlieghere } 326baf5664fSJonas Devlieghere 327baf5664fSJonas Devlieghere void SBPlatform::Clear() { 328baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatform, Clear); 329baf5664fSJonas Devlieghere 330baf5664fSJonas Devlieghere m_opaque_sp.reset(); 331baf5664fSJonas Devlieghere } 332fbb76349SGreg Clayton 333b9c1b51eSKate Stone const char *SBPlatform::GetName() { 334baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetName); 335baf5664fSJonas Devlieghere 336fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 337fbb76349SGreg Clayton if (platform_sp) 338fbb76349SGreg Clayton return platform_sp->GetName().GetCString(); 339248a1305SKonrad Kleine return nullptr; 340fbb76349SGreg Clayton } 341fbb76349SGreg Clayton 342b9c1b51eSKate Stone lldb::PlatformSP SBPlatform::GetSP() const { return m_opaque_sp; } 343fbb76349SGreg Clayton 344b9c1b51eSKate Stone void SBPlatform::SetSP(const lldb::PlatformSP &platform_sp) { 345fbb76349SGreg Clayton m_opaque_sp = platform_sp; 346fbb76349SGreg Clayton } 347fbb76349SGreg Clayton 348b9c1b51eSKate Stone const char *SBPlatform::GetWorkingDirectory() { 349baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetWorkingDirectory); 350baf5664fSJonas Devlieghere 351fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 352fbb76349SGreg Clayton if (platform_sp) 353fbb76349SGreg Clayton return platform_sp->GetWorkingDirectory().GetCString(); 354248a1305SKonrad Kleine return nullptr; 355fbb76349SGreg Clayton } 356fbb76349SGreg Clayton 357b9c1b51eSKate Stone bool SBPlatform::SetWorkingDirectory(const char *path) { 358baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBPlatform, SetWorkingDirectory, (const char *), 359baf5664fSJonas Devlieghere path); 360baf5664fSJonas Devlieghere 361fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 362b9c1b51eSKate Stone if (platform_sp) { 363fbb76349SGreg Clayton if (path) 3648f3be7a3SJonas Devlieghere platform_sp->SetWorkingDirectory(FileSpec(path)); 365fbb76349SGreg Clayton else 3668f3be7a3SJonas Devlieghere platform_sp->SetWorkingDirectory(FileSpec()); 367fbb76349SGreg Clayton return true; 368fbb76349SGreg Clayton } 369fbb76349SGreg Clayton return false; 370fbb76349SGreg Clayton } 371fbb76349SGreg Clayton 372b9c1b51eSKate Stone SBError SBPlatform::ConnectRemote(SBPlatformConnectOptions &connect_options) { 373baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, ConnectRemote, 374baf5664fSJonas Devlieghere (lldb::SBPlatformConnectOptions &), connect_options); 375baf5664fSJonas Devlieghere 376fbb76349SGreg Clayton SBError sb_error; 377fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 378b9c1b51eSKate Stone if (platform_sp && connect_options.GetURL()) { 379fbb76349SGreg Clayton Args args; 380ecbb0bb1SZachary Turner args.AppendArgument( 381ecbb0bb1SZachary Turner llvm::StringRef::withNullAsEmpty(connect_options.GetURL())); 382fbb76349SGreg Clayton sb_error.ref() = platform_sp->ConnectRemote(args); 383b9c1b51eSKate Stone } else { 384fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 385fbb76349SGreg Clayton } 386baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 387fbb76349SGreg Clayton } 388fbb76349SGreg Clayton 389b9c1b51eSKate Stone void SBPlatform::DisconnectRemote() { 390baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBPlatform, DisconnectRemote); 391baf5664fSJonas Devlieghere 392fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 393fbb76349SGreg Clayton if (platform_sp) 394fbb76349SGreg Clayton platform_sp->DisconnectRemote(); 395fbb76349SGreg Clayton } 396fbb76349SGreg Clayton 397b9c1b51eSKate Stone bool SBPlatform::IsConnected() { 398baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBPlatform, IsConnected); 399baf5664fSJonas Devlieghere 400fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 401fbb76349SGreg Clayton if (platform_sp) 402ca38766cSJim Ingham return platform_sp->IsConnected(); 403fbb76349SGreg Clayton return false; 404fbb76349SGreg Clayton } 405fbb76349SGreg Clayton 406b9c1b51eSKate Stone const char *SBPlatform::GetTriple() { 407baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetTriple); 408baf5664fSJonas Devlieghere 409fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 410b9c1b51eSKate Stone if (platform_sp) { 411ccd28a14STamas Berghammer ArchSpec arch(platform_sp->GetSystemArchitecture()); 412b9c1b51eSKate Stone if (arch.IsValid()) { 413b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 414b9c1b51eSKate Stone // the string 415fbb76349SGreg Clayton return ConstString(arch.GetTriple().getTriple().c_str()).GetCString(); 416fbb76349SGreg Clayton } 417fbb76349SGreg Clayton } 418248a1305SKonrad Kleine return nullptr; 419fbb76349SGreg Clayton } 420fbb76349SGreg Clayton 421b9c1b51eSKate Stone const char *SBPlatform::GetOSBuild() { 422baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetOSBuild); 423baf5664fSJonas Devlieghere 424fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 425b9c1b51eSKate Stone if (platform_sp) { 426fbb76349SGreg Clayton std::string s; 427b9c1b51eSKate Stone if (platform_sp->GetOSBuildString(s)) { 428b9c1b51eSKate Stone if (!s.empty()) { 429b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 430b9c1b51eSKate Stone // the string 431fbb76349SGreg Clayton return ConstString(s.c_str()).GetCString(); 432fbb76349SGreg Clayton } 433fbb76349SGreg Clayton } 434fbb76349SGreg Clayton } 435248a1305SKonrad Kleine return nullptr; 436fbb76349SGreg Clayton } 437fbb76349SGreg Clayton 438b9c1b51eSKate Stone const char *SBPlatform::GetOSDescription() { 439baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetOSDescription); 440baf5664fSJonas Devlieghere 441fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 442b9c1b51eSKate Stone if (platform_sp) { 443fbb76349SGreg Clayton std::string s; 444b9c1b51eSKate Stone if (platform_sp->GetOSKernelDescription(s)) { 445b9c1b51eSKate Stone if (!s.empty()) { 446b9c1b51eSKate Stone // Const-ify the string so we don't need to worry about the lifetime of 447b9c1b51eSKate Stone // the string 448fbb76349SGreg Clayton return ConstString(s.c_str()).GetCString(); 449fbb76349SGreg Clayton } 450fbb76349SGreg Clayton } 451fbb76349SGreg Clayton } 452248a1305SKonrad Kleine return nullptr; 453fbb76349SGreg Clayton } 454fbb76349SGreg Clayton 455b9c1b51eSKate Stone const char *SBPlatform::GetHostname() { 456baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBPlatform, GetHostname); 457baf5664fSJonas Devlieghere 458fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 459fbb76349SGreg Clayton if (platform_sp) 460fbb76349SGreg Clayton return platform_sp->GetHostname(); 461248a1305SKonrad Kleine return nullptr; 462fbb76349SGreg Clayton } 463fbb76349SGreg Clayton 464b9c1b51eSKate Stone uint32_t SBPlatform::GetOSMajorVersion() { 465baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSMajorVersion); 466baf5664fSJonas Devlieghere 4672272c481SPavel Labath llvm::VersionTuple version; 4682272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4692272c481SPavel Labath version = platform_sp->GetOSVersion(); 4702272c481SPavel Labath return version.empty() ? UINT32_MAX : version.getMajor(); 471fbb76349SGreg Clayton } 472fbb76349SGreg Clayton 473b9c1b51eSKate Stone uint32_t SBPlatform::GetOSMinorVersion() { 474baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSMinorVersion); 475baf5664fSJonas Devlieghere 4762272c481SPavel Labath llvm::VersionTuple version; 4772272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4782272c481SPavel Labath version = platform_sp->GetOSVersion(); 4792272c481SPavel Labath return version.getMinor().getValueOr(UINT32_MAX); 480fbb76349SGreg Clayton } 481fbb76349SGreg Clayton 482b9c1b51eSKate Stone uint32_t SBPlatform::GetOSUpdateVersion() { 483baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBPlatform, GetOSUpdateVersion); 484baf5664fSJonas Devlieghere 4852272c481SPavel Labath llvm::VersionTuple version; 4862272c481SPavel Labath if (PlatformSP platform_sp = GetSP()) 4872272c481SPavel Labath version = platform_sp->GetOSVersion(); 4882272c481SPavel Labath return version.getSubminor().getValueOr(UINT32_MAX); 489fbb76349SGreg Clayton } 490fbb76349SGreg Clayton 491b9c1b51eSKate Stone SBError SBPlatform::Get(SBFileSpec &src, SBFileSpec &dst) { 492baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Get, 493baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 494baf5664fSJonas Devlieghere 495fbb76349SGreg Clayton SBError sb_error; 496fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 497b9c1b51eSKate Stone if (platform_sp) { 498fbb76349SGreg Clayton sb_error.ref() = platform_sp->GetFile(src.ref(), dst.ref()); 499b9c1b51eSKate Stone } else { 500fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 501fbb76349SGreg Clayton } 502baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 503fbb76349SGreg Clayton } 504fbb76349SGreg Clayton 505b9c1b51eSKate Stone SBError SBPlatform::Put(SBFileSpec &src, SBFileSpec &dst) { 506baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Put, 507baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 508baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 509baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 510b9c1b51eSKate Stone if (src.Exists()) { 511baf5664fSJonas Devlieghere uint32_t permissions = 512baf5664fSJonas Devlieghere FileSystem::Instance().GetPermissions(src.ref()); 513b9c1b51eSKate Stone if (permissions == 0) { 5143a58d898SJonas Devlieghere if (FileSystem::Instance().IsDirectory(src.ref())) 515fbb76349SGreg Clayton permissions = eFilePermissionsDirectoryDefault; 516fbb76349SGreg Clayton else 517fbb76349SGreg Clayton permissions = eFilePermissionsFileDefault; 518fbb76349SGreg Clayton } 519fbb76349SGreg Clayton 5201ef7b2c8SOleksiy Vyalov return platform_sp->PutFile(src.ref(), dst.ref(), permissions); 521fbb76349SGreg Clayton } 5221ef7b2c8SOleksiy Vyalov 52397206d57SZachary Turner Status error; 524b9c1b51eSKate Stone error.SetErrorStringWithFormat("'src' argument doesn't exist: '%s'", 525b9c1b51eSKate Stone src.ref().GetPath().c_str()); 5261ef7b2c8SOleksiy Vyalov return error; 527baf5664fSJonas Devlieghere })); 528fbb76349SGreg Clayton } 529fbb76349SGreg Clayton 530b9c1b51eSKate Stone SBError SBPlatform::Install(SBFileSpec &src, SBFileSpec &dst) { 531baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Install, 532baf5664fSJonas Devlieghere (lldb::SBFileSpec &, lldb::SBFileSpec &), src, dst); 533baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 534baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 535fbb76349SGreg Clayton if (src.Exists()) 5361ef7b2c8SOleksiy Vyalov return platform_sp->Install(src.ref(), dst.ref()); 5371ef7b2c8SOleksiy Vyalov 53897206d57SZachary Turner Status error; 539b9c1b51eSKate Stone error.SetErrorStringWithFormat("'src' argument doesn't exist: '%s'", 540b9c1b51eSKate Stone src.ref().GetPath().c_str()); 5411ef7b2c8SOleksiy Vyalov return error; 542baf5664fSJonas Devlieghere })); 543fbb76349SGreg Clayton } 544fbb76349SGreg Clayton 545b9c1b51eSKate Stone SBError SBPlatform::Run(SBPlatformShellCommand &shell_command) { 546baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Run, 547baf5664fSJonas Devlieghere (lldb::SBPlatformShellCommand &), shell_command); 548baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(ExecuteConnected([&](const lldb::PlatformSP 549baf5664fSJonas Devlieghere &platform_sp) { 550fbb76349SGreg Clayton const char *command = shell_command.GetCommand(); 5511ef7b2c8SOleksiy Vyalov if (!command) 55297206d57SZachary Turner return Status("invalid shell command (empty)"); 5531ef7b2c8SOleksiy Vyalov 554fbb76349SGreg Clayton const char *working_dir = shell_command.GetWorkingDirectory(); 555248a1305SKonrad Kleine if (working_dir == nullptr) { 556fbb76349SGreg Clayton working_dir = platform_sp->GetWorkingDirectory().GetCString(); 557fbb76349SGreg Clayton if (working_dir) 558fbb76349SGreg Clayton shell_command.SetWorkingDirectory(working_dir); 559fbb76349SGreg Clayton } 5608f3be7a3SJonas Devlieghere return platform_sp->RunShellCommand(command, FileSpec(working_dir), 561fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_status, 562fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_signo, 563fbb76349SGreg Clayton &shell_command.m_opaque_ptr->m_output, 56419dd1a0eSPavel Labath shell_command.m_opaque_ptr->m_timeout); 565baf5664fSJonas Devlieghere })); 566fbb76349SGreg Clayton } 5671ef7b2c8SOleksiy Vyalov 568b9c1b51eSKate Stone SBError SBPlatform::Launch(SBLaunchInfo &launch_info) { 569baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Launch, (lldb::SBLaunchInfo &), 570baf5664fSJonas Devlieghere launch_info); 571baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 572baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 57362930e57SPavel Labath ProcessLaunchInfo info = launch_info.ref(); 57462930e57SPavel Labath Status error = platform_sp->LaunchProcess(info); 57562930e57SPavel Labath launch_info.set_ref(info); 57662930e57SPavel Labath return error; 577baf5664fSJonas Devlieghere })); 5781ef7b2c8SOleksiy Vyalov } 5791ef7b2c8SOleksiy Vyalov 580b9c1b51eSKate Stone SBError SBPlatform::Kill(const lldb::pid_t pid) { 581baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, Kill, (const lldb::pid_t), pid); 582baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT( 583baf5664fSJonas Devlieghere ExecuteConnected([&](const lldb::PlatformSP &platform_sp) { 5841ef7b2c8SOleksiy Vyalov return platform_sp->KillProcess(pid); 585baf5664fSJonas Devlieghere })); 5861ef7b2c8SOleksiy Vyalov } 5871ef7b2c8SOleksiy Vyalov 588b9c1b51eSKate Stone SBError SBPlatform::ExecuteConnected( 58997206d57SZachary Turner const std::function<Status(const lldb::PlatformSP &)> &func) { 5901ef7b2c8SOleksiy Vyalov SBError sb_error; 5911ef7b2c8SOleksiy Vyalov const auto platform_sp(GetSP()); 592b9c1b51eSKate Stone if (platform_sp) { 5931ef7b2c8SOleksiy Vyalov if (platform_sp->IsConnected()) 5941ef7b2c8SOleksiy Vyalov sb_error.ref() = func(platform_sp); 5951ef7b2c8SOleksiy Vyalov else 596fbb76349SGreg Clayton sb_error.SetErrorString("not connected"); 597b9c1b51eSKate Stone } else 598fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 5991ef7b2c8SOleksiy Vyalov 600fbb76349SGreg Clayton return sb_error; 601fbb76349SGreg Clayton } 602fbb76349SGreg Clayton 603b9c1b51eSKate Stone SBError SBPlatform::MakeDirectory(const char *path, uint32_t file_permissions) { 604baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, MakeDirectory, 605baf5664fSJonas Devlieghere (const char *, uint32_t), path, file_permissions); 606baf5664fSJonas Devlieghere 607fbb76349SGreg Clayton SBError sb_error; 608fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 609b9c1b51eSKate Stone if (platform_sp) { 610b9c1b51eSKate Stone sb_error.ref() = 6118f3be7a3SJonas Devlieghere platform_sp->MakeDirectory(FileSpec(path), file_permissions); 612b9c1b51eSKate Stone } else { 613fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 614fbb76349SGreg Clayton } 615baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 616fbb76349SGreg Clayton } 617fbb76349SGreg Clayton 618b9c1b51eSKate Stone uint32_t SBPlatform::GetFilePermissions(const char *path) { 619baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(uint32_t, SBPlatform, GetFilePermissions, (const char *), 620baf5664fSJonas Devlieghere path); 621baf5664fSJonas Devlieghere 622fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 623b9c1b51eSKate Stone if (platform_sp) { 624fbb76349SGreg Clayton uint32_t file_permissions = 0; 6258f3be7a3SJonas Devlieghere platform_sp->GetFilePermissions(FileSpec(path), file_permissions); 626fbb76349SGreg Clayton return file_permissions; 627fbb76349SGreg Clayton } 628fbb76349SGreg Clayton return 0; 629fbb76349SGreg Clayton } 630fbb76349SGreg Clayton 631b9c1b51eSKate Stone SBError SBPlatform::SetFilePermissions(const char *path, 632b9c1b51eSKate Stone uint32_t file_permissions) { 633baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(lldb::SBError, SBPlatform, SetFilePermissions, 634baf5664fSJonas Devlieghere (const char *, uint32_t), path, file_permissions); 635baf5664fSJonas Devlieghere 636fbb76349SGreg Clayton SBError sb_error; 637fbb76349SGreg Clayton PlatformSP platform_sp(GetSP()); 638b9c1b51eSKate Stone if (platform_sp) { 6398f3be7a3SJonas Devlieghere sb_error.ref() = 6408f3be7a3SJonas Devlieghere platform_sp->SetFilePermissions(FileSpec(path), file_permissions); 641b9c1b51eSKate Stone } else { 642fbb76349SGreg Clayton sb_error.SetErrorString("invalid platform"); 643fbb76349SGreg Clayton } 644baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(sb_error); 645fbb76349SGreg Clayton } 646fbb76349SGreg Clayton 647b9c1b51eSKate Stone SBUnixSignals SBPlatform::GetUnixSignals() const { 648baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBUnixSignals, SBPlatform, 649baf5664fSJonas Devlieghere GetUnixSignals); 65098d0a4b3SChaoren Lin 651baf5664fSJonas Devlieghere if (auto platform_sp = GetSP()) 652baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBUnixSignals{platform_sp}); 653baf5664fSJonas Devlieghere 654baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBUnixSignals()); 65598d0a4b3SChaoren Lin } 656ae211eceSMichal Gorny 657ca69be21SWalter Erquinigo SBEnvironment SBPlatform::GetEnvironment() { 658ca69be21SWalter Erquinigo LLDB_RECORD_METHOD_NO_ARGS(lldb::SBEnvironment, SBPlatform, GetEnvironment); 659ca69be21SWalter Erquinigo PlatformSP platform_sp(GetSP()); 660ca69be21SWalter Erquinigo 661ca69be21SWalter Erquinigo if (platform_sp) { 662ca69be21SWalter Erquinigo return LLDB_RECORD_RESULT(SBEnvironment(platform_sp->GetEnvironment())); 663ca69be21SWalter Erquinigo } 664ca69be21SWalter Erquinigo 665ca69be21SWalter Erquinigo return LLDB_RECORD_RESULT(SBEnvironment()); 666ca69be21SWalter Erquinigo } 667ca69be21SWalter Erquinigo 668ae211eceSMichal Gorny namespace lldb_private { 669ae211eceSMichal Gorny namespace repro { 670ae211eceSMichal Gorny 671ae211eceSMichal Gorny template <> 672ae211eceSMichal Gorny void RegisterMethods<SBPlatformConnectOptions>(Registry &R) { 673ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformConnectOptions, (const char *)); 674ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformConnectOptions, 675ae211eceSMichal Gorny (const lldb::SBPlatformConnectOptions &)); 676ae211eceSMichal Gorny LLDB_REGISTER_METHOD( 677ede5cd9aSJonas Devlieghere SBPlatformConnectOptions &, 678ae211eceSMichal Gorny SBPlatformConnectOptions, operator=,( 679ae211eceSMichal Gorny const lldb::SBPlatformConnectOptions &)); 680ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformConnectOptions, GetURL, ()); 681ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, SetURL, 682ae211eceSMichal Gorny (const char *)); 683ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatformConnectOptions, GetRsyncEnabled, ()); 684ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, EnableRsync, 685ae211eceSMichal Gorny (const char *, const char *, bool)); 686ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, DisableRsync, ()); 687ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformConnectOptions, 688ae211eceSMichal Gorny GetLocalCacheDirectory, ()); 689ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformConnectOptions, SetLocalCacheDirectory, 690ae211eceSMichal Gorny (const char *)); 691ae211eceSMichal Gorny } 692ae211eceSMichal Gorny 693ae211eceSMichal Gorny template <> 694ae211eceSMichal Gorny void RegisterMethods<SBPlatformShellCommand>(Registry &R) { 695ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformShellCommand, (const char *)); 696ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatformShellCommand, 697ae211eceSMichal Gorny (const lldb::SBPlatformShellCommand &)); 698ede5cd9aSJonas Devlieghere LLDB_REGISTER_METHOD( 699ede5cd9aSJonas Devlieghere SBPlatformShellCommand &, 700ede5cd9aSJonas Devlieghere SBPlatformShellCommand, operator=,(const lldb::SBPlatformShellCommand &)); 701ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, Clear, ()); 702ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, GetCommand, ()); 703ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetCommand, 704ae211eceSMichal Gorny (const char *)); 705ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, 706ae211eceSMichal Gorny GetWorkingDirectory, ()); 707ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetWorkingDirectory, 708ae211eceSMichal Gorny (const char *)); 709ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatformShellCommand, GetTimeoutSeconds, 710ae211eceSMichal Gorny ()); 711ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatformShellCommand, SetTimeoutSeconds, 712ae211eceSMichal Gorny (uint32_t)); 713ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int, SBPlatformShellCommand, GetSignal, ()); 714ae211eceSMichal Gorny LLDB_REGISTER_METHOD(int, SBPlatformShellCommand, GetStatus, ()); 715ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatformShellCommand, GetOutput, ()); 716ae211eceSMichal Gorny } 717ae211eceSMichal Gorny 718ae211eceSMichal Gorny template <> 719ae211eceSMichal Gorny void RegisterMethods<SBPlatform>(Registry &R) { 720ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatform, ()); 721ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBPlatform, (const char *)); 72266dc4672SJonas Devlieghere LLDB_REGISTER_CONSTRUCTOR(SBPlatform, (const lldb::SBPlatform &)); 723ede5cd9aSJonas Devlieghere LLDB_REGISTER_METHOD(SBPlatform &, 724ede5cd9aSJonas Devlieghere SBPlatform, operator=,(const lldb::SBPlatform &)); 725ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBPlatform, IsValid, ()); 726ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBPlatform, operator bool, ()); 727ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatform, Clear, ()); 728ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetName, ()); 729ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetWorkingDirectory, ()); 730ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatform, SetWorkingDirectory, (const char *)); 731ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, ConnectRemote, 732ae211eceSMichal Gorny (lldb::SBPlatformConnectOptions &)); 733ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBPlatform, DisconnectRemote, ()); 734ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBPlatform, IsConnected, ()); 735ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetTriple, ()); 736ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetOSBuild, ()); 737ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetOSDescription, ()); 738ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBPlatform, GetHostname, ()); 739ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSMajorVersion, ()); 740ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSMinorVersion, ()); 741ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetOSUpdateVersion, ()); 742ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Get, 743ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 744ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Put, 745ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 746ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Install, 747ae211eceSMichal Gorny (lldb::SBFileSpec &, lldb::SBFileSpec &)); 748ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Run, 749ae211eceSMichal Gorny (lldb::SBPlatformShellCommand &)); 750ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Launch, 751ae211eceSMichal Gorny (lldb::SBLaunchInfo &)); 752ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, Kill, (const lldb::pid_t)); 753ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, MakeDirectory, 754ae211eceSMichal Gorny (const char *, uint32_t)); 755ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBPlatform, GetFilePermissions, 756ae211eceSMichal Gorny (const char *)); 757ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBError, SBPlatform, SetFilePermissions, 758ae211eceSMichal Gorny (const char *, uint32_t)); 759ca69be21SWalter Erquinigo LLDB_REGISTER_METHOD(lldb::SBEnvironment, SBPlatform, GetEnvironment, ()); 760ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(lldb::SBUnixSignals, SBPlatform, GetUnixSignals, 761ae211eceSMichal Gorny ()); 762*5c2bf577SJonas Devlieghere LLDB_REGISTER_STATIC_METHOD(lldb::SBPlatform, SBPlatform, GetHostPlatform, 763*5c2bf577SJonas Devlieghere ()); 764ae211eceSMichal Gorny } 765ae211eceSMichal Gorny 766ae211eceSMichal Gorny } 767ae211eceSMichal Gorny } 768