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