clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
224 lines
7.0 KiB
C++
224 lines
7.0 KiB
C++
//===-- SBLaunchInfo.h ------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_API_SBLAUNCHINFO_H
|
|
#define LLDB_API_SBLAUNCHINFO_H
|
|
|
|
#include "lldb/API/SBDefines.h"
|
|
|
|
namespace lldb_private {
|
|
class SBLaunchInfoImpl;
|
|
class ScriptInterpreter;
|
|
}
|
|
|
|
namespace lldb {
|
|
|
|
class SBPlatform;
|
|
class SBTarget;
|
|
|
|
class LLDB_API SBLaunchInfo {
|
|
public:
|
|
SBLaunchInfo(const char **argv);
|
|
|
|
~SBLaunchInfo();
|
|
|
|
#ifndef SWIG
|
|
// The copy constructor for SBLaunchInfo presents some problems on some
|
|
// supported versions of swig (e.g. 3.0.2). When trying to create an
|
|
// SBLaunchInfo from python with the argument `None`, swig will try to call
|
|
// the copy constructor instead of SBLaunchInfo(const char **). For that
|
|
// reason, we avoid exposing the copy constructor to python.
|
|
SBLaunchInfo(const SBLaunchInfo &rhs);
|
|
#endif
|
|
|
|
SBLaunchInfo &operator=(const SBLaunchInfo &rhs);
|
|
|
|
lldb::pid_t GetProcessID();
|
|
|
|
uint32_t GetUserID();
|
|
|
|
uint32_t GetGroupID();
|
|
|
|
bool UserIDIsValid();
|
|
|
|
bool GroupIDIsValid();
|
|
|
|
void SetUserID(uint32_t uid);
|
|
|
|
void SetGroupID(uint32_t gid);
|
|
|
|
SBFileSpec GetExecutableFile();
|
|
|
|
/// Set the executable file that will be used to launch the process and
|
|
/// optionally set it as the first argument in the argument vector.
|
|
///
|
|
/// This only needs to be specified if clients wish to carefully control
|
|
/// the exact path will be used to launch a binary. If you create a
|
|
/// target with a symlink, that symlink will get resolved in the target
|
|
/// and the resolved path will get used to launch the process. Calling
|
|
/// this function can help you still launch your process using the
|
|
/// path of your choice.
|
|
///
|
|
/// If this function is not called prior to launching with
|
|
/// SBTarget::Launch(...), the target will use the resolved executable
|
|
/// path that was used to create the target.
|
|
///
|
|
/// \param[in] exe_file
|
|
/// The override path to use when launching the executable.
|
|
///
|
|
/// \param[in] add_as_first_arg
|
|
/// If true, then the path will be inserted into the argument vector
|
|
/// prior to launching. Otherwise the argument vector will be left
|
|
/// alone.
|
|
void SetExecutableFile(SBFileSpec exe_file, bool add_as_first_arg);
|
|
|
|
/// Get the listener that will be used to receive process events.
|
|
///
|
|
/// If no listener has been set via a call to
|
|
/// SBLaunchInfo::SetListener(), then an invalid SBListener will be
|
|
/// returned (SBListener::IsValid() will return false). If a listener
|
|
/// has been set, then the valid listener object will be returned.
|
|
SBListener GetListener();
|
|
|
|
/// Set the listener that will be used to receive process events.
|
|
///
|
|
/// By default the SBDebugger, which has a listener, that the SBTarget
|
|
/// belongs to will listen for the process events. Calling this function
|
|
/// allows a different listener to be used to listen for process events.
|
|
void SetListener(SBListener &listener);
|
|
|
|
/// Get the shadow listener that receive public process events,
|
|
/// additionally to the default process event listener.
|
|
///
|
|
/// If no listener has been set via a call to
|
|
/// SBLaunchInfo::SetShadowListener(), then an invalid SBListener will
|
|
/// be returned (SBListener::IsValid() will return false). If a listener
|
|
/// has been set, then the valid listener object will be returned.
|
|
SBListener GetShadowListener();
|
|
|
|
/// Set the shadow listener that will receive public process events,
|
|
/// additionally to the default process event listener.
|
|
///
|
|
/// By default a process have no shadow event listener.
|
|
/// Calling this function allows public process events to be broadcasted to an
|
|
/// additional listener on top of the default process event listener.
|
|
/// If the `listener` argument is invalid (SBListener::IsValid() will
|
|
/// return false), this will clear the shadow listener.
|
|
void SetShadowListener(SBListener &listener);
|
|
|
|
uint32_t GetNumArguments();
|
|
|
|
const char *GetArgumentAtIndex(uint32_t idx);
|
|
|
|
void SetArguments(const char **argv, bool append);
|
|
|
|
uint32_t GetNumEnvironmentEntries();
|
|
|
|
const char *GetEnvironmentEntryAtIndex(uint32_t idx);
|
|
|
|
/// Update this object with the given environment variables.
|
|
///
|
|
/// If append is false, the provided environment will replace the existing
|
|
/// environment. Otherwise, existing values will be updated of left untouched
|
|
/// accordingly.
|
|
///
|
|
/// \param [in] envp
|
|
/// The new environment variables as a list of strings with the following
|
|
/// format
|
|
/// name=value
|
|
///
|
|
/// \param [in] append
|
|
/// Flag that controls whether to replace the existing environment.
|
|
void SetEnvironmentEntries(const char **envp, bool append);
|
|
|
|
/// Update this object with the given environment variables.
|
|
///
|
|
/// If append is false, the provided environment will replace the existing
|
|
/// environment. Otherwise, existing values will be updated of left untouched
|
|
/// accordingly.
|
|
///
|
|
/// \param [in] env
|
|
/// The new environment variables.
|
|
///
|
|
/// \param [in] append
|
|
/// Flag that controls whether to replace the existing environment.
|
|
void SetEnvironment(const SBEnvironment &env, bool append);
|
|
|
|
/// Return the environment variables of this object.
|
|
///
|
|
/// \return
|
|
/// An lldb::SBEnvironment object which is a copy of the SBLaunchInfo's
|
|
/// environment.
|
|
SBEnvironment GetEnvironment();
|
|
|
|
void Clear();
|
|
|
|
const char *GetWorkingDirectory() const;
|
|
|
|
void SetWorkingDirectory(const char *working_dir);
|
|
|
|
uint32_t GetLaunchFlags();
|
|
|
|
void SetLaunchFlags(uint32_t flags);
|
|
|
|
const char *GetProcessPluginName();
|
|
|
|
void SetProcessPluginName(const char *plugin_name);
|
|
|
|
const char *GetShell();
|
|
|
|
void SetShell(const char *path);
|
|
|
|
bool GetShellExpandArguments();
|
|
|
|
void SetShellExpandArguments(bool expand);
|
|
|
|
uint32_t GetResumeCount();
|
|
|
|
void SetResumeCount(uint32_t c);
|
|
|
|
bool AddCloseFileAction(int fd);
|
|
|
|
bool AddDuplicateFileAction(int fd, int dup_fd);
|
|
|
|
bool AddOpenFileAction(int fd, const char *path, bool read, bool write);
|
|
|
|
bool AddSuppressFileAction(int fd, bool read, bool write);
|
|
|
|
void SetLaunchEventData(const char *data);
|
|
|
|
const char *GetLaunchEventData() const;
|
|
|
|
bool GetDetachOnError() const;
|
|
|
|
void SetDetachOnError(bool enable);
|
|
|
|
const char *GetScriptedProcessClassName() const;
|
|
|
|
void SetScriptedProcessClassName(const char *class_name);
|
|
|
|
lldb::SBStructuredData GetScriptedProcessDictionary() const;
|
|
|
|
void SetScriptedProcessDictionary(lldb::SBStructuredData dict);
|
|
|
|
protected:
|
|
friend class SBPlatform;
|
|
friend class SBTarget;
|
|
|
|
friend class lldb_private::ScriptInterpreter;
|
|
|
|
const lldb_private::ProcessLaunchInfo &ref() const;
|
|
void set_ref(const lldb_private::ProcessLaunchInfo &info);
|
|
|
|
std::shared_ptr<lldb_private::SBLaunchInfoImpl> m_opaque_sp;
|
|
};
|
|
|
|
} // namespace lldb
|
|
|
|
#endif // LLDB_API_SBLAUNCHINFO_H
|