180814287SRaphael Isemann //===-- SBLaunchInfo.cpp --------------------------------------------------===// 21ef7b2c8SOleksiy Vyalov // 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 61ef7b2c8SOleksiy Vyalov // 71ef7b2c8SOleksiy Vyalov //===----------------------------------------------------------------------===// 81ef7b2c8SOleksiy Vyalov 91ef7b2c8SOleksiy Vyalov #include "lldb/API/SBLaunchInfo.h" 10baf5664fSJonas Devlieghere #include "SBReproducerPrivate.h" 111ef7b2c8SOleksiy Vyalov 12*ca69be21SWalter Erquinigo #include "lldb/API/SBEnvironment.h" 131ef7b2c8SOleksiy Vyalov #include "lldb/API/SBFileSpec.h" 141ef7b2c8SOleksiy Vyalov #include "lldb/API/SBListener.h" 15eef758e9SPavel Labath #include "lldb/Host/ProcessLaunchInfo.h" 161ef7b2c8SOleksiy Vyalov 171ef7b2c8SOleksiy Vyalov using namespace lldb; 181ef7b2c8SOleksiy Vyalov using namespace lldb_private; 191ef7b2c8SOleksiy Vyalov 2062930e57SPavel Labath class lldb_private::SBLaunchInfoImpl : public ProcessLaunchInfo { 2162930e57SPavel Labath public: 2262930e57SPavel Labath SBLaunchInfoImpl() 2362930e57SPavel Labath : ProcessLaunchInfo(), m_envp(GetEnvironment().getEnvp()) {} 2462930e57SPavel Labath 2562930e57SPavel Labath const char *const *GetEnvp() const { return m_envp; } 2662930e57SPavel Labath void RegenerateEnvp() { m_envp = GetEnvironment().getEnvp(); } 2762930e57SPavel Labath 2862930e57SPavel Labath SBLaunchInfoImpl &operator=(const ProcessLaunchInfo &rhs) { 2962930e57SPavel Labath ProcessLaunchInfo::operator=(rhs); 3062930e57SPavel Labath RegenerateEnvp(); 3162930e57SPavel Labath return *this; 3262930e57SPavel Labath } 3362930e57SPavel Labath 3462930e57SPavel Labath private: 3562930e57SPavel Labath Environment::Envp m_envp; 3662930e57SPavel Labath }; 3762930e57SPavel Labath 38b9c1b51eSKate Stone SBLaunchInfo::SBLaunchInfo(const char **argv) 3962930e57SPavel Labath : m_opaque_sp(new SBLaunchInfoImpl()) { 40baf5664fSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBLaunchInfo, (const char **), argv); 41baf5664fSJonas Devlieghere 421ef7b2c8SOleksiy Vyalov m_opaque_sp->GetFlags().Reset(eLaunchFlagDebug | eLaunchFlagDisableASLR); 431ef7b2c8SOleksiy Vyalov if (argv && argv[0]) 441ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().SetArguments(argv); 451ef7b2c8SOleksiy Vyalov } 461ef7b2c8SOleksiy Vyalov 471dfe7b5bSJonas Devlieghere SBLaunchInfo::SBLaunchInfo(const SBLaunchInfo &rhs) { 481dfe7b5bSJonas Devlieghere LLDB_RECORD_CONSTRUCTOR(SBLaunchInfo, (const lldb::SBLaunchInfo &), rhs); 491dfe7b5bSJonas Devlieghere 501dfe7b5bSJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp; 511dfe7b5bSJonas Devlieghere } 521dfe7b5bSJonas Devlieghere 53ede5cd9aSJonas Devlieghere SBLaunchInfo &SBLaunchInfo::operator=(const SBLaunchInfo &rhs) { 54ede5cd9aSJonas Devlieghere LLDB_RECORD_METHOD(SBLaunchInfo &, 55ede5cd9aSJonas Devlieghere SBLaunchInfo, operator=,(const lldb::SBLaunchInfo &), rhs); 561dfe7b5bSJonas Devlieghere 571dfe7b5bSJonas Devlieghere m_opaque_sp = rhs.m_opaque_sp; 58ede5cd9aSJonas Devlieghere return LLDB_RECORD_RESULT(*this); 591dfe7b5bSJonas Devlieghere } 601dfe7b5bSJonas Devlieghere 61866b7a65SJonas Devlieghere SBLaunchInfo::~SBLaunchInfo() = default; 621ef7b2c8SOleksiy Vyalov 63b9c1b51eSKate Stone const lldb_private::ProcessLaunchInfo &SBLaunchInfo::ref() const { 641ef7b2c8SOleksiy Vyalov return *m_opaque_sp; 651ef7b2c8SOleksiy Vyalov } 661ef7b2c8SOleksiy Vyalov 6762930e57SPavel Labath void SBLaunchInfo::set_ref(const ProcessLaunchInfo &info) { 6862930e57SPavel Labath *m_opaque_sp = info; 6962930e57SPavel Labath } 7062930e57SPavel Labath 71baf5664fSJonas Devlieghere lldb::pid_t SBLaunchInfo::GetProcessID() { 72baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::pid_t, SBLaunchInfo, GetProcessID); 738f37ca56SIlia K 74baf5664fSJonas Devlieghere return m_opaque_sp->GetProcessID(); 75baf5664fSJonas Devlieghere } 761ef7b2c8SOleksiy Vyalov 77baf5664fSJonas Devlieghere uint32_t SBLaunchInfo::GetUserID() { 78baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetUserID); 791ef7b2c8SOleksiy Vyalov 80baf5664fSJonas Devlieghere return m_opaque_sp->GetUserID(); 81baf5664fSJonas Devlieghere } 821ef7b2c8SOleksiy Vyalov 83baf5664fSJonas Devlieghere uint32_t SBLaunchInfo::GetGroupID() { 84baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetGroupID); 851ef7b2c8SOleksiy Vyalov 86baf5664fSJonas Devlieghere return m_opaque_sp->GetGroupID(); 87baf5664fSJonas Devlieghere } 881ef7b2c8SOleksiy Vyalov 89baf5664fSJonas Devlieghere bool SBLaunchInfo::UserIDIsValid() { 90baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBLaunchInfo, UserIDIsValid); 91baf5664fSJonas Devlieghere 92baf5664fSJonas Devlieghere return m_opaque_sp->UserIDIsValid(); 93baf5664fSJonas Devlieghere } 94baf5664fSJonas Devlieghere 95baf5664fSJonas Devlieghere bool SBLaunchInfo::GroupIDIsValid() { 96baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBLaunchInfo, GroupIDIsValid); 97baf5664fSJonas Devlieghere 98baf5664fSJonas Devlieghere return m_opaque_sp->GroupIDIsValid(); 99baf5664fSJonas Devlieghere } 100baf5664fSJonas Devlieghere 101baf5664fSJonas Devlieghere void SBLaunchInfo::SetUserID(uint32_t uid) { 102baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetUserID, (uint32_t), uid); 103baf5664fSJonas Devlieghere 104baf5664fSJonas Devlieghere m_opaque_sp->SetUserID(uid); 105baf5664fSJonas Devlieghere } 106baf5664fSJonas Devlieghere 107baf5664fSJonas Devlieghere void SBLaunchInfo::SetGroupID(uint32_t gid) { 108baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetGroupID, (uint32_t), gid); 109baf5664fSJonas Devlieghere 110baf5664fSJonas Devlieghere m_opaque_sp->SetGroupID(gid); 111baf5664fSJonas Devlieghere } 1121ef7b2c8SOleksiy Vyalov 113b9c1b51eSKate Stone SBFileSpec SBLaunchInfo::GetExecutableFile() { 114baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBFileSpec, SBLaunchInfo, GetExecutableFile); 115baf5664fSJonas Devlieghere 116baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBFileSpec(m_opaque_sp->GetExecutableFile())); 1171ef7b2c8SOleksiy Vyalov } 1181ef7b2c8SOleksiy Vyalov 119b9c1b51eSKate Stone void SBLaunchInfo::SetExecutableFile(SBFileSpec exe_file, 120b9c1b51eSKate Stone bool add_as_first_arg) { 121baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetExecutableFile, 122baf5664fSJonas Devlieghere (lldb::SBFileSpec, bool), exe_file, add_as_first_arg); 123baf5664fSJonas Devlieghere 1241ef7b2c8SOleksiy Vyalov m_opaque_sp->SetExecutableFile(exe_file.ref(), add_as_first_arg); 1251ef7b2c8SOleksiy Vyalov } 1261ef7b2c8SOleksiy Vyalov 127b9c1b51eSKate Stone SBListener SBLaunchInfo::GetListener() { 128baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(lldb::SBListener, SBLaunchInfo, GetListener); 129baf5664fSJonas Devlieghere 130baf5664fSJonas Devlieghere return LLDB_RECORD_RESULT(SBListener(m_opaque_sp->GetListener())); 1311ef7b2c8SOleksiy Vyalov } 1321ef7b2c8SOleksiy Vyalov 133b9c1b51eSKate Stone void SBLaunchInfo::SetListener(SBListener &listener) { 134baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetListener, (lldb::SBListener &), 135baf5664fSJonas Devlieghere listener); 136baf5664fSJonas Devlieghere 1371ef7b2c8SOleksiy Vyalov m_opaque_sp->SetListener(listener.GetSP()); 1381ef7b2c8SOleksiy Vyalov } 1391ef7b2c8SOleksiy Vyalov 140b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetNumArguments() { 141baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetNumArguments); 142baf5664fSJonas Devlieghere 1431ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetArguments().GetArgumentCount(); 1441ef7b2c8SOleksiy Vyalov } 1451ef7b2c8SOleksiy Vyalov 146b9c1b51eSKate Stone const char *SBLaunchInfo::GetArgumentAtIndex(uint32_t idx) { 147baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(const char *, SBLaunchInfo, GetArgumentAtIndex, (uint32_t), 148baf5664fSJonas Devlieghere idx); 149baf5664fSJonas Devlieghere 1501ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetArguments().GetArgumentAtIndex(idx); 1511ef7b2c8SOleksiy Vyalov } 1521ef7b2c8SOleksiy Vyalov 153b9c1b51eSKate Stone void SBLaunchInfo::SetArguments(const char **argv, bool append) { 154baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetArguments, (const char **, bool), 155baf5664fSJonas Devlieghere argv, append); 156baf5664fSJonas Devlieghere 157b9c1b51eSKate Stone if (append) { 1581ef7b2c8SOleksiy Vyalov if (argv) 1591ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().AppendArguments(argv); 160b9c1b51eSKate Stone } else { 1611ef7b2c8SOleksiy Vyalov if (argv) 1621ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().SetArguments(argv); 1631ef7b2c8SOleksiy Vyalov else 1641ef7b2c8SOleksiy Vyalov m_opaque_sp->GetArguments().Clear(); 1651ef7b2c8SOleksiy Vyalov } 1661ef7b2c8SOleksiy Vyalov } 1671ef7b2c8SOleksiy Vyalov 168b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetNumEnvironmentEntries() { 169baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetNumEnvironmentEntries); 170baf5664fSJonas Devlieghere 17162930e57SPavel Labath return m_opaque_sp->GetEnvironment().size(); 1721ef7b2c8SOleksiy Vyalov } 1731ef7b2c8SOleksiy Vyalov 174b9c1b51eSKate Stone const char *SBLaunchInfo::GetEnvironmentEntryAtIndex(uint32_t idx) { 175baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(const char *, SBLaunchInfo, GetEnvironmentEntryAtIndex, 176baf5664fSJonas Devlieghere (uint32_t), idx); 177baf5664fSJonas Devlieghere 17862930e57SPavel Labath if (idx > GetNumEnvironmentEntries()) 17962930e57SPavel Labath return nullptr; 18062930e57SPavel Labath return m_opaque_sp->GetEnvp()[idx]; 1811ef7b2c8SOleksiy Vyalov } 1821ef7b2c8SOleksiy Vyalov 183b9c1b51eSKate Stone void SBLaunchInfo::SetEnvironmentEntries(const char **envp, bool append) { 184baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetEnvironmentEntries, 185baf5664fSJonas Devlieghere (const char **, bool), envp, append); 186*ca69be21SWalter Erquinigo SetEnvironment(SBEnvironment(Environment(envp)), append); 187*ca69be21SWalter Erquinigo } 188baf5664fSJonas Devlieghere 189*ca69be21SWalter Erquinigo void SBLaunchInfo::SetEnvironment(const SBEnvironment &env, bool append) { 190*ca69be21SWalter Erquinigo LLDB_RECORD_METHOD(void, SBLaunchInfo, SetEnvironment, 191*ca69be21SWalter Erquinigo (const lldb::SBEnvironment &, bool), env, append); 192*ca69be21SWalter Erquinigo Environment &refEnv = env.ref(); 19362930e57SPavel Labath if (append) 194*ca69be21SWalter Erquinigo m_opaque_sp->GetEnvironment().insert(refEnv.begin(), refEnv.end()); 1951ef7b2c8SOleksiy Vyalov else 196*ca69be21SWalter Erquinigo m_opaque_sp->GetEnvironment() = refEnv; 19762930e57SPavel Labath m_opaque_sp->RegenerateEnvp(); 1981ef7b2c8SOleksiy Vyalov } 1991ef7b2c8SOleksiy Vyalov 200*ca69be21SWalter Erquinigo SBEnvironment SBLaunchInfo::GetEnvironment() { 201*ca69be21SWalter Erquinigo LLDB_RECORD_METHOD_NO_ARGS(lldb::SBEnvironment, SBLaunchInfo, GetEnvironment); 202*ca69be21SWalter Erquinigo return LLDB_RECORD_RESULT( 203*ca69be21SWalter Erquinigo SBEnvironment(Environment(m_opaque_sp->GetEnvironment()))); 204*ca69be21SWalter Erquinigo } 205*ca69be21SWalter Erquinigo 206baf5664fSJonas Devlieghere void SBLaunchInfo::Clear() { 207baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(void, SBLaunchInfo, Clear); 208baf5664fSJonas Devlieghere 209baf5664fSJonas Devlieghere m_opaque_sp->Clear(); 210baf5664fSJonas Devlieghere } 2111ef7b2c8SOleksiy Vyalov 212b9c1b51eSKate Stone const char *SBLaunchInfo::GetWorkingDirectory() const { 213baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(const char *, SBLaunchInfo, 214baf5664fSJonas Devlieghere GetWorkingDirectory); 215baf5664fSJonas Devlieghere 216d3173f34SChaoren Lin return m_opaque_sp->GetWorkingDirectory().GetCString(); 2171ef7b2c8SOleksiy Vyalov } 2181ef7b2c8SOleksiy Vyalov 219b9c1b51eSKate Stone void SBLaunchInfo::SetWorkingDirectory(const char *working_dir) { 220baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetWorkingDirectory, (const char *), 221baf5664fSJonas Devlieghere working_dir); 222baf5664fSJonas Devlieghere 2238f3be7a3SJonas Devlieghere m_opaque_sp->SetWorkingDirectory(FileSpec(working_dir)); 2241ef7b2c8SOleksiy Vyalov } 2251ef7b2c8SOleksiy Vyalov 226b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetLaunchFlags() { 227baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetLaunchFlags); 228baf5664fSJonas Devlieghere 2291ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetFlags().Get(); 2301ef7b2c8SOleksiy Vyalov } 2311ef7b2c8SOleksiy Vyalov 232b9c1b51eSKate Stone void SBLaunchInfo::SetLaunchFlags(uint32_t flags) { 233baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetLaunchFlags, (uint32_t), flags); 234baf5664fSJonas Devlieghere 2351ef7b2c8SOleksiy Vyalov m_opaque_sp->GetFlags().Reset(flags); 2361ef7b2c8SOleksiy Vyalov } 2371ef7b2c8SOleksiy Vyalov 238b9c1b51eSKate Stone const char *SBLaunchInfo::GetProcessPluginName() { 239baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBLaunchInfo, GetProcessPluginName); 240baf5664fSJonas Devlieghere 2411ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetProcessPluginName(); 2421ef7b2c8SOleksiy Vyalov } 2431ef7b2c8SOleksiy Vyalov 244b9c1b51eSKate Stone void SBLaunchInfo::SetProcessPluginName(const char *plugin_name) { 245baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetProcessPluginName, (const char *), 246baf5664fSJonas Devlieghere plugin_name); 247baf5664fSJonas Devlieghere 2481ef7b2c8SOleksiy Vyalov return m_opaque_sp->SetProcessPluginName(plugin_name); 2491ef7b2c8SOleksiy Vyalov } 2501ef7b2c8SOleksiy Vyalov 251b9c1b51eSKate Stone const char *SBLaunchInfo::GetShell() { 252baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(const char *, SBLaunchInfo, GetShell); 253baf5664fSJonas Devlieghere 25405097246SAdrian Prantl // Constify this string so that it is saved in the string pool. Otherwise it 25505097246SAdrian Prantl // would be freed when this function goes out of scope. 2561ef7b2c8SOleksiy Vyalov ConstString shell(m_opaque_sp->GetShell().GetPath().c_str()); 2571ef7b2c8SOleksiy Vyalov return shell.AsCString(); 2581ef7b2c8SOleksiy Vyalov } 2591ef7b2c8SOleksiy Vyalov 260b9c1b51eSKate Stone void SBLaunchInfo::SetShell(const char *path) { 261baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetShell, (const char *), path); 262baf5664fSJonas Devlieghere 2638f3be7a3SJonas Devlieghere m_opaque_sp->SetShell(FileSpec(path)); 2641ef7b2c8SOleksiy Vyalov } 2651ef7b2c8SOleksiy Vyalov 266b9c1b51eSKate Stone bool SBLaunchInfo::GetShellExpandArguments() { 267baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(bool, SBLaunchInfo, GetShellExpandArguments); 268baf5664fSJonas Devlieghere 269b38ef8c2SEnrico Granata return m_opaque_sp->GetShellExpandArguments(); 270c11b101fSEnrico Granata } 271c11b101fSEnrico Granata 272b9c1b51eSKate Stone void SBLaunchInfo::SetShellExpandArguments(bool expand) { 273baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetShellExpandArguments, (bool), 274baf5664fSJonas Devlieghere expand); 275baf5664fSJonas Devlieghere 276b38ef8c2SEnrico Granata m_opaque_sp->SetShellExpandArguments(expand); 277c11b101fSEnrico Granata } 278c11b101fSEnrico Granata 279b9c1b51eSKate Stone uint32_t SBLaunchInfo::GetResumeCount() { 280baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_NO_ARGS(uint32_t, SBLaunchInfo, GetResumeCount); 281baf5664fSJonas Devlieghere 2821ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetResumeCount(); 2831ef7b2c8SOleksiy Vyalov } 2841ef7b2c8SOleksiy Vyalov 285b9c1b51eSKate Stone void SBLaunchInfo::SetResumeCount(uint32_t c) { 286baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetResumeCount, (uint32_t), c); 287baf5664fSJonas Devlieghere 2881ef7b2c8SOleksiy Vyalov m_opaque_sp->SetResumeCount(c); 2891ef7b2c8SOleksiy Vyalov } 2901ef7b2c8SOleksiy Vyalov 291b9c1b51eSKate Stone bool SBLaunchInfo::AddCloseFileAction(int fd) { 292baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBLaunchInfo, AddCloseFileAction, (int), fd); 293baf5664fSJonas Devlieghere 2941ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendCloseFileAction(fd); 2951ef7b2c8SOleksiy Vyalov } 2961ef7b2c8SOleksiy Vyalov 297b9c1b51eSKate Stone bool SBLaunchInfo::AddDuplicateFileAction(int fd, int dup_fd) { 298baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBLaunchInfo, AddDuplicateFileAction, (int, int), fd, 299baf5664fSJonas Devlieghere dup_fd); 300baf5664fSJonas Devlieghere 3011ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendDuplicateFileAction(fd, dup_fd); 3021ef7b2c8SOleksiy Vyalov } 3031ef7b2c8SOleksiy Vyalov 304b9c1b51eSKate Stone bool SBLaunchInfo::AddOpenFileAction(int fd, const char *path, bool read, 305b9c1b51eSKate Stone bool write) { 306baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBLaunchInfo, AddOpenFileAction, 307baf5664fSJonas Devlieghere (int, const char *, bool, bool), fd, path, read, write); 308baf5664fSJonas Devlieghere 3098f3be7a3SJonas Devlieghere return m_opaque_sp->AppendOpenFileAction(fd, FileSpec(path), read, write); 3101ef7b2c8SOleksiy Vyalov } 3111ef7b2c8SOleksiy Vyalov 312b9c1b51eSKate Stone bool SBLaunchInfo::AddSuppressFileAction(int fd, bool read, bool write) { 313baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(bool, SBLaunchInfo, AddSuppressFileAction, 314baf5664fSJonas Devlieghere (int, bool, bool), fd, read, write); 315baf5664fSJonas Devlieghere 3161ef7b2c8SOleksiy Vyalov return m_opaque_sp->AppendSuppressFileAction(fd, read, write); 3171ef7b2c8SOleksiy Vyalov } 3181ef7b2c8SOleksiy Vyalov 319b9c1b51eSKate Stone void SBLaunchInfo::SetLaunchEventData(const char *data) { 320baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetLaunchEventData, (const char *), 321baf5664fSJonas Devlieghere data); 322baf5664fSJonas Devlieghere 3231ef7b2c8SOleksiy Vyalov m_opaque_sp->SetLaunchEventData(data); 3241ef7b2c8SOleksiy Vyalov } 3251ef7b2c8SOleksiy Vyalov 326b9c1b51eSKate Stone const char *SBLaunchInfo::GetLaunchEventData() const { 327baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(const char *, SBLaunchInfo, 328baf5664fSJonas Devlieghere GetLaunchEventData); 329baf5664fSJonas Devlieghere 3301ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetLaunchEventData(); 3311ef7b2c8SOleksiy Vyalov } 3321ef7b2c8SOleksiy Vyalov 333b9c1b51eSKate Stone void SBLaunchInfo::SetDetachOnError(bool enable) { 334baf5664fSJonas Devlieghere LLDB_RECORD_METHOD(void, SBLaunchInfo, SetDetachOnError, (bool), enable); 335baf5664fSJonas Devlieghere 3361ef7b2c8SOleksiy Vyalov m_opaque_sp->SetDetachOnError(enable); 3371ef7b2c8SOleksiy Vyalov } 3381ef7b2c8SOleksiy Vyalov 339b9c1b51eSKate Stone bool SBLaunchInfo::GetDetachOnError() const { 340baf5664fSJonas Devlieghere LLDB_RECORD_METHOD_CONST_NO_ARGS(bool, SBLaunchInfo, GetDetachOnError); 341baf5664fSJonas Devlieghere 3421ef7b2c8SOleksiy Vyalov return m_opaque_sp->GetDetachOnError(); 3431ef7b2c8SOleksiy Vyalov } 344ae211eceSMichal Gorny 345ae211eceSMichal Gorny namespace lldb_private { 346ae211eceSMichal Gorny namespace repro { 347ae211eceSMichal Gorny 348ae211eceSMichal Gorny template <> 349ae211eceSMichal Gorny void RegisterMethods<SBLaunchInfo>(Registry &R) { 350ae211eceSMichal Gorny LLDB_REGISTER_CONSTRUCTOR(SBLaunchInfo, (const char **)); 3511dfe7b5bSJonas Devlieghere LLDB_REGISTER_CONSTRUCTOR(SBLaunchInfo, (const lldb::SBLaunchInfo &)); 352ede5cd9aSJonas Devlieghere LLDB_REGISTER_METHOD(SBLaunchInfo &, 3531dfe7b5bSJonas Devlieghere SBLaunchInfo, operator=,(const lldb::SBLaunchInfo &)); 354ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::pid_t, SBLaunchInfo, GetProcessID, ()); 355ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetUserID, ()); 356ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetGroupID, ()); 357ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, UserIDIsValid, ()); 358ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, GroupIDIsValid, ()); 359ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetUserID, (uint32_t)); 360ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetGroupID, (uint32_t)); 361ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBFileSpec, SBLaunchInfo, GetExecutableFile, ()); 362ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetExecutableFile, 363ae211eceSMichal Gorny (lldb::SBFileSpec, bool)); 364ae211eceSMichal Gorny LLDB_REGISTER_METHOD(lldb::SBListener, SBLaunchInfo, GetListener, ()); 365ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetListener, (lldb::SBListener &)); 366ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetNumArguments, ()); 367ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBLaunchInfo, GetArgumentAtIndex, 368ae211eceSMichal Gorny (uint32_t)); 369ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetArguments, 370ae211eceSMichal Gorny (const char **, bool)); 371ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetNumEnvironmentEntries, ()); 372ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBLaunchInfo, GetEnvironmentEntryAtIndex, 373ae211eceSMichal Gorny (uint32_t)); 374ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetEnvironmentEntries, 375ae211eceSMichal Gorny (const char **, bool)); 376ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, Clear, ()); 377ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(const char *, SBLaunchInfo, GetWorkingDirectory, 378ae211eceSMichal Gorny ()); 379ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetWorkingDirectory, 380ae211eceSMichal Gorny (const char *)); 381ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetLaunchFlags, ()); 382ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetLaunchFlags, (uint32_t)); 383ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBLaunchInfo, GetProcessPluginName, ()); 384ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetProcessPluginName, 385ae211eceSMichal Gorny (const char *)); 386ae211eceSMichal Gorny LLDB_REGISTER_METHOD(const char *, SBLaunchInfo, GetShell, ()); 387ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetShell, (const char *)); 388ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, GetShellExpandArguments, ()); 389ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetShellExpandArguments, (bool)); 390ae211eceSMichal Gorny LLDB_REGISTER_METHOD(uint32_t, SBLaunchInfo, GetResumeCount, ()); 391ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetResumeCount, (uint32_t)); 392ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, AddCloseFileAction, (int)); 393ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, AddDuplicateFileAction, 394ae211eceSMichal Gorny (int, int)); 395ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, AddOpenFileAction, 396ae211eceSMichal Gorny (int, const char *, bool, bool)); 397ae211eceSMichal Gorny LLDB_REGISTER_METHOD(bool, SBLaunchInfo, AddSuppressFileAction, 398ae211eceSMichal Gorny (int, bool, bool)); 399ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetLaunchEventData, 400ae211eceSMichal Gorny (const char *)); 401ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(const char *, SBLaunchInfo, GetLaunchEventData, 402ae211eceSMichal Gorny ()); 403ae211eceSMichal Gorny LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetDetachOnError, (bool)); 404ae211eceSMichal Gorny LLDB_REGISTER_METHOD_CONST(bool, SBLaunchInfo, GetDetachOnError, ()); 405*ca69be21SWalter Erquinigo LLDB_REGISTER_METHOD(void, SBLaunchInfo, SetEnvironment, 406*ca69be21SWalter Erquinigo (const lldb::SBEnvironment &, bool)); 407*ca69be21SWalter Erquinigo LLDB_REGISTER_METHOD(lldb::SBEnvironment, SBLaunchInfo, GetEnvironment, ()); 408ae211eceSMichal Gorny } 409ae211eceSMichal Gorny 410ae211eceSMichal Gorny } 411ae211eceSMichal Gorny } 412