SBLaunchInfo.cpp revision 285101
1187692Snwhitehorn//===-- SBLaunchInfo.cpp ----------------------------------------*- C++ -*-===// 2187692Snwhitehorn// 3187692Snwhitehorn// The LLVM Compiler Infrastructure 4187692Snwhitehorn// 5187692Snwhitehorn// This file is distributed under the University of Illinois Open Source 6187692Snwhitehorn// License. See LICENSE.TXT for details. 7187692Snwhitehorn// 8187692Snwhitehorn//===----------------------------------------------------------------------===// 9187692Snwhitehorn 10187692Snwhitehorn#include "lldb/API/SBLaunchInfo.h" 11187692Snwhitehorn 12187692Snwhitehorn#include "lldb/API/SBFileSpec.h" 13187692Snwhitehorn#include "lldb/API/SBListener.h" 14187692Snwhitehorn#include "lldb/Target/ProcessLaunchInfo.h" 15187692Snwhitehorn 16187692Snwhitehornusing namespace lldb; 17187692Snwhitehornusing namespace lldb_private; 18187692Snwhitehorn 19187692SnwhitehornSBLaunchInfo::SBLaunchInfo (const char **argv) : 20187692Snwhitehorn m_opaque_sp(new ProcessLaunchInfo()) 21187692Snwhitehorn{ 22187692Snwhitehorn m_opaque_sp->GetFlags().Reset (eLaunchFlagDebug | eLaunchFlagDisableASLR); 23187692Snwhitehorn if (argv && argv[0]) 24187692Snwhitehorn m_opaque_sp->GetArguments().SetArguments(argv); 25187692Snwhitehorn} 26187692Snwhitehorn 27187692SnwhitehornSBLaunchInfo::~SBLaunchInfo() 28187692Snwhitehorn{ 29187692Snwhitehorn} 30187692Snwhitehorn 31187692Snwhitehornlldb_private::ProcessLaunchInfo & 32187692SnwhitehornSBLaunchInfo::ref () 33187692Snwhitehorn{ 34187692Snwhitehorn return *m_opaque_sp; 35187692Snwhitehorn} 36187692Snwhitehorn 37187692Snwhitehornconst lldb_private::ProcessLaunchInfo & 38187692SnwhitehornSBLaunchInfo::ref () const 39187692Snwhitehorn{ 40187692Snwhitehorn return *m_opaque_sp; 41187692Snwhitehorn} 42187692Snwhitehorn 43187692Snwhitehornlldb::pid_t 44187692SnwhitehornSBLaunchInfo::GetProcessID() 45187692Snwhitehorn{ 46187692Snwhitehorn return m_opaque_sp->GetProcessID(); 47187692Snwhitehorn} 48187692Snwhitehorn 49187692Snwhitehornuint32_t 50187692SnwhitehornSBLaunchInfo::GetUserID() 51187692Snwhitehorn{ 52187692Snwhitehorn return m_opaque_sp->GetUserID(); 53187692Snwhitehorn} 54187692Snwhitehorn 55187692Snwhitehornuint32_t 56187692SnwhitehornSBLaunchInfo::GetGroupID() 57187692Snwhitehorn{ 58187692Snwhitehorn return m_opaque_sp->GetGroupID(); 59187692Snwhitehorn} 60187692Snwhitehorn 61187692Snwhitehornbool 62187692SnwhitehornSBLaunchInfo::UserIDIsValid () 63187692Snwhitehorn{ 64187692Snwhitehorn return m_opaque_sp->UserIDIsValid(); 65187692Snwhitehorn} 66187692Snwhitehorn 67187692Snwhitehornbool 68187692SnwhitehornSBLaunchInfo::GroupIDIsValid () 69187692Snwhitehorn{ 70187692Snwhitehorn return m_opaque_sp->GroupIDIsValid(); 71187692Snwhitehorn} 72187692Snwhitehorn 73187692Snwhitehornvoid 74187692SnwhitehornSBLaunchInfo::SetUserID (uint32_t uid) 75193640Sariff{ 76193640Sariff m_opaque_sp->SetUserID (uid); 77193640Sariff} 78193640Sariff 79193640Sariffvoid 80187692SnwhitehornSBLaunchInfo::SetGroupID (uint32_t gid) 81187692Snwhitehorn{ 82193640Sariff m_opaque_sp->SetGroupID (gid); 83187692Snwhitehorn} 84187692Snwhitehorn 85187692SnwhitehornSBFileSpec 86187692SnwhitehornSBLaunchInfo::GetExecutableFile () 87187692Snwhitehorn{ 88187692Snwhitehorn return SBFileSpec (m_opaque_sp->GetExecutableFile()); 89187692Snwhitehorn} 90187692Snwhitehorn 91187692Snwhitehornvoid 92187692SnwhitehornSBLaunchInfo::SetExecutableFile (SBFileSpec exe_file, bool add_as_first_arg) 93187692Snwhitehorn{ 94187692Snwhitehorn m_opaque_sp->SetExecutableFile(exe_file.ref(), add_as_first_arg); 95187692Snwhitehorn} 96187692Snwhitehorn 97187692SnwhitehornSBListener 98187692SnwhitehornSBLaunchInfo::GetListener () 99187692Snwhitehorn{ 100187692Snwhitehorn return SBListener(m_opaque_sp->GetListener()); 101187692Snwhitehorn} 102187692Snwhitehorn 103187692Snwhitehornvoid 104187692SnwhitehornSBLaunchInfo::SetListener (SBListener &listener) 105187692Snwhitehorn{ 106187692Snwhitehorn m_opaque_sp->SetListener(listener.GetSP()); 107187692Snwhitehorn} 108187692Snwhitehorn 109187692Snwhitehornuint32_t 110187692SnwhitehornSBLaunchInfo::GetNumArguments () 111187692Snwhitehorn{ 112187692Snwhitehorn return m_opaque_sp->GetArguments().GetArgumentCount(); 113187692Snwhitehorn} 114187692Snwhitehorn 115187692Snwhitehornconst char * 116187692SnwhitehornSBLaunchInfo::GetArgumentAtIndex (uint32_t idx) 117187692Snwhitehorn{ 118187692Snwhitehorn return m_opaque_sp->GetArguments().GetArgumentAtIndex(idx); 119187717Snwhitehorn} 120187692Snwhitehorn 121187692Snwhitehornvoid 122187692SnwhitehornSBLaunchInfo::SetArguments (const char **argv, bool append) 123187692Snwhitehorn{ 124187692Snwhitehorn if (append) 125187692Snwhitehorn { 126187692Snwhitehorn if (argv) 127187692Snwhitehorn m_opaque_sp->GetArguments().AppendArguments(argv); 128187692Snwhitehorn } 129187692Snwhitehorn else 130187692Snwhitehorn { 131187692Snwhitehorn if (argv) 132187692Snwhitehorn m_opaque_sp->GetArguments().SetArguments(argv); 133187692Snwhitehorn else 134187692Snwhitehorn m_opaque_sp->GetArguments().Clear(); 135187692Snwhitehorn } 136187692Snwhitehorn} 137187692Snwhitehorn 138187692Snwhitehornuint32_t 139187692SnwhitehornSBLaunchInfo::GetNumEnvironmentEntries () 140187692Snwhitehorn{ 141187692Snwhitehorn return m_opaque_sp->GetEnvironmentEntries().GetArgumentCount(); 142187692Snwhitehorn} 143187692Snwhitehorn 144187692Snwhitehornconst char * 145187692SnwhitehornSBLaunchInfo::GetEnvironmentEntryAtIndex (uint32_t idx) 146187692Snwhitehorn{ 147187692Snwhitehorn return m_opaque_sp->GetEnvironmentEntries().GetArgumentAtIndex(idx); 148187692Snwhitehorn} 149187692Snwhitehorn 150187692Snwhitehornvoid 151187692SnwhitehornSBLaunchInfo::SetEnvironmentEntries (const char **envp, bool append) 152187692Snwhitehorn{ 153187692Snwhitehorn if (append) 154187692Snwhitehorn { 155187692Snwhitehorn if (envp) 156187692Snwhitehorn m_opaque_sp->GetEnvironmentEntries().AppendArguments(envp); 157187692Snwhitehorn } 158187692Snwhitehorn else 159187692Snwhitehorn { 160187692Snwhitehorn if (envp) 161223554Snwhitehorn m_opaque_sp->GetEnvironmentEntries().SetArguments(envp); 162223554Snwhitehorn else 163187692Snwhitehorn m_opaque_sp->GetEnvironmentEntries().Clear(); 164187692Snwhitehorn } 165187692Snwhitehorn} 166187692Snwhitehorn 167187692Snwhitehornvoid 168187692SnwhitehornSBLaunchInfo::Clear () 169187692Snwhitehorn{ 170223554Snwhitehorn m_opaque_sp->Clear(); 171223554Snwhitehorn} 172223554Snwhitehorn 173223554Snwhitehornconst char * 174223554SnwhitehornSBLaunchInfo::GetWorkingDirectory () const 175223554Snwhitehorn{ 176223554Snwhitehorn return m_opaque_sp->GetWorkingDirectory().GetCString(); 177223554Snwhitehorn} 178223554Snwhitehorn 179223554Snwhitehornvoid 180187692SnwhitehornSBLaunchInfo::SetWorkingDirectory (const char *working_dir) 181187692Snwhitehorn{ 182187692Snwhitehorn m_opaque_sp->SetWorkingDirectory(FileSpec{working_dir, false}); 183187692Snwhitehorn} 184187692Snwhitehorn 185187692Snwhitehornuint32_t 186187692SnwhitehornSBLaunchInfo::GetLaunchFlags () 187187692Snwhitehorn{ 188187692Snwhitehorn return m_opaque_sp->GetFlags().Get(); 189187692Snwhitehorn} 190187692Snwhitehorn 191187717Snwhitehornvoid 192187692SnwhitehornSBLaunchInfo::SetLaunchFlags (uint32_t flags) 193187692Snwhitehorn{ 194187692Snwhitehorn m_opaque_sp->GetFlags().Reset(flags); 195187692Snwhitehorn} 196187717Snwhitehorn 197187717Snwhitehornconst char * 198187692SnwhitehornSBLaunchInfo::GetProcessPluginName () 199188259Snwhitehorn{ 200187692Snwhitehorn return m_opaque_sp->GetProcessPluginName(); 201187692Snwhitehorn} 202187692Snwhitehorn 203187692Snwhitehornvoid 204187692SnwhitehornSBLaunchInfo::SetProcessPluginName (const char *plugin_name) 205187692Snwhitehorn{ 206187692Snwhitehorn return m_opaque_sp->SetProcessPluginName (plugin_name); 207187692Snwhitehorn} 208187692Snwhitehorn 209187692Snwhitehornconst char * 210187692SnwhitehornSBLaunchInfo::GetShell () 211187692Snwhitehorn{ 212187692Snwhitehorn // Constify this string so that it is saved in the string pool. Otherwise 213187692Snwhitehorn // it would be freed when this function goes out of scope. 214187692Snwhitehorn ConstString shell(m_opaque_sp->GetShell().GetPath().c_str()); 215187692Snwhitehorn return shell.AsCString(); 216187692Snwhitehorn} 217187692Snwhitehorn 218187692Snwhitehornvoid 219187692SnwhitehornSBLaunchInfo::SetShell (const char * path) 220187692Snwhitehorn{ 221187692Snwhitehorn m_opaque_sp->SetShell (FileSpec(path, false)); 222187692Snwhitehorn} 223187692Snwhitehorn 224187692Snwhitehornbool 225187692SnwhitehornSBLaunchInfo::GetShellExpandArguments () 226187692Snwhitehorn{ 227187692Snwhitehorn return m_opaque_sp->GetShellExpandArguments(); 228187692Snwhitehorn} 229187692Snwhitehorn 230187692Snwhitehornvoid 231187692SnwhitehornSBLaunchInfo::SetShellExpandArguments (bool expand) 232187692Snwhitehorn{ 233187692Snwhitehorn m_opaque_sp->SetShellExpandArguments(expand); 234187692Snwhitehorn} 235187692Snwhitehorn 236188259Snwhitehornuint32_t 237188259SnwhitehornSBLaunchInfo::GetResumeCount () 238187692Snwhitehorn{ 239187692Snwhitehorn return m_opaque_sp->GetResumeCount(); 240187692Snwhitehorn} 241187692Snwhitehorn 242187692Snwhitehornvoid 243187692SnwhitehornSBLaunchInfo::SetResumeCount (uint32_t c) 244187692Snwhitehorn{ 245187692Snwhitehorn m_opaque_sp->SetResumeCount (c); 246187692Snwhitehorn} 247187692Snwhitehorn 248187692Snwhitehornbool 249187692SnwhitehornSBLaunchInfo::AddCloseFileAction (int fd) 250187692Snwhitehorn{ 251187692Snwhitehorn return m_opaque_sp->AppendCloseFileAction(fd); 252187692Snwhitehorn} 253188259Snwhitehorn 254187692Snwhitehornbool 255187692SnwhitehornSBLaunchInfo::AddDuplicateFileAction (int fd, int dup_fd) 256187692Snwhitehorn{ 257187692Snwhitehorn return m_opaque_sp->AppendDuplicateFileAction(fd, dup_fd); 258188259Snwhitehorn} 259187692Snwhitehorn 260187692Snwhitehornbool 261187692SnwhitehornSBLaunchInfo::AddOpenFileAction (int fd, const char *path, bool read, bool write) 262187692Snwhitehorn{ 263187692Snwhitehorn return m_opaque_sp->AppendOpenFileAction(fd, FileSpec{path, false}, read, write); 264187692Snwhitehorn} 265187692Snwhitehorn 266187692Snwhitehornbool 267187692SnwhitehornSBLaunchInfo::AddSuppressFileAction (int fd, bool read, bool write) 268187692Snwhitehorn{ 269187692Snwhitehorn return m_opaque_sp->AppendSuppressFileAction(fd, read, write); 270187692Snwhitehorn} 271187692Snwhitehorn 272187692Snwhitehornvoid 273187692SnwhitehornSBLaunchInfo::SetLaunchEventData (const char *data) 274187692Snwhitehorn{ 275187692Snwhitehorn m_opaque_sp->SetLaunchEventData (data); 276187692Snwhitehorn} 277187692Snwhitehorn 278187692Snwhitehornconst char * 279187692SnwhitehornSBLaunchInfo::GetLaunchEventData () const 280187692Snwhitehorn{ 281187692Snwhitehorn return m_opaque_sp->GetLaunchEventData (); 282187692Snwhitehorn} 283187692Snwhitehorn 284187692Snwhitehornvoid 285187692SnwhitehornSBLaunchInfo::SetDetachOnError (bool enable) 286187692Snwhitehorn{ 287187692Snwhitehorn m_opaque_sp->SetDetachOnError (enable); 288187692Snwhitehorn} 289187692Snwhitehorn 290187692Snwhitehornbool 291187692SnwhitehornSBLaunchInfo::GetDetachOnError () const 292187692Snwhitehorn{ 293187692Snwhitehorn return m_opaque_sp->GetDetachOnError (); 294187692Snwhitehorn} 295187692Snwhitehorn