forked from OSchip/llvm-project
Enable llgs to build against experimental Android AOSP lldb/llvm/clang/compiler-rt repos.
See http://reviews.llvm.org/D5495 for more details. These are changes that are part of an effort to support building llgs, within the AOSP source tree, using the Android.mk build system, when using the llvm/clang/lldb git repos from AOSP replaced with the experimental ones currently in github.com/tfiala/aosp-{llvm,clang,lldb,compiler-rt}. llvm-svn: 218568
This commit is contained in:
parent
7b4133ac81
commit
cacde7df6d
|
@ -457,6 +457,7 @@ namespace lldb_private {
|
||||||
SetBaseLineNumber (uint32_t line);
|
SetBaseLineNumber (uint32_t line);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
static LineStatus
|
static LineStatus
|
||||||
LineCompletedCallback (Editline *editline,
|
LineCompletedCallback (Editline *editline,
|
||||||
StringList &lines,
|
StringList &lines,
|
||||||
|
@ -471,9 +472,12 @@ namespace lldb_private {
|
||||||
int max_matches,
|
int max_matches,
|
||||||
StringList &matches,
|
StringList &matches,
|
||||||
void *baton);
|
void *baton);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
std::unique_ptr<Editline> m_editline_ap;
|
std::unique_ptr<Editline> m_editline_ap;
|
||||||
|
#endif
|
||||||
IOHandlerDelegate &m_delegate;
|
IOHandlerDelegate &m_delegate;
|
||||||
std::string m_prompt;
|
std::string m_prompt;
|
||||||
uint32_t m_base_line_number; // If non-zero, then show line numbers in prompt
|
uint32_t m_base_line_number; // If non-zero, then show line numbers in prompt
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
|
|
||||||
#define LLDB_CONFIG_TERMIOS_SUPPORTED 1
|
#define LLDB_CONFIG_TERMIOS_SUPPORTED 1
|
||||||
|
|
||||||
|
#ifndef __ANDROID__
|
||||||
#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1
|
#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#include "lldb/Core/State.h"
|
#include "lldb/Core/State.h"
|
||||||
#include "lldb/Core/StreamFile.h"
|
#include "lldb/Core/StreamFile.h"
|
||||||
#include "lldb/Core/ValueObjectRegister.h"
|
#include "lldb/Core/ValueObjectRegister.h"
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
#include "lldb/Host/Editline.h"
|
#include "lldb/Host/Editline.h"
|
||||||
|
#endif
|
||||||
#include "lldb/Interpreter/CommandCompletions.h"
|
#include "lldb/Interpreter/CommandCompletions.h"
|
||||||
#include "lldb/Interpreter/CommandInterpreter.h"
|
#include "lldb/Interpreter/CommandInterpreter.h"
|
||||||
#include "lldb/Symbol/Block.h"
|
#include "lldb/Symbol/Block.h"
|
||||||
|
@ -339,7 +341,9 @@ IOHandlerEditline::IOHandlerEditline (Debugger &debugger,
|
||||||
uint32_t line_number_start,
|
uint32_t line_number_start,
|
||||||
IOHandlerDelegate &delegate) :
|
IOHandlerDelegate &delegate) :
|
||||||
IOHandler (debugger, input_sp, output_sp, error_sp, flags),
|
IOHandler (debugger, input_sp, output_sp, error_sp, flags),
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
m_editline_ap (),
|
m_editline_ap (),
|
||||||
|
#endif
|
||||||
m_delegate (delegate),
|
m_delegate (delegate),
|
||||||
m_prompt (),
|
m_prompt (),
|
||||||
m_base_line_number (line_number_start),
|
m_base_line_number (line_number_start),
|
||||||
|
@ -347,6 +351,7 @@ IOHandlerEditline::IOHandlerEditline (Debugger &debugger,
|
||||||
{
|
{
|
||||||
SetPrompt(prompt);
|
SetPrompt(prompt);
|
||||||
|
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
bool use_editline = false;
|
bool use_editline = false;
|
||||||
|
|
||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
|
@ -369,24 +374,28 @@ IOHandlerEditline::IOHandlerEditline (Debugger &debugger,
|
||||||
m_editline_ap->SetLineCompleteCallback (LineCompletedCallback, this);
|
m_editline_ap->SetLineCompleteCallback (LineCompletedCallback, this);
|
||||||
m_editline_ap->SetAutoCompleteCallback (AutoCompleteCallback, this);
|
m_editline_ap->SetAutoCompleteCallback (AutoCompleteCallback, this);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
IOHandlerEditline::~IOHandlerEditline ()
|
IOHandlerEditline::~IOHandlerEditline ()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
m_editline_ap.reset();
|
m_editline_ap.reset();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
IOHandlerEditline::GetLine (std::string &line, bool &interrupted)
|
IOHandlerEditline::GetLine (std::string &line, bool &interrupted)
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
{
|
{
|
||||||
return m_editline_ap->GetLine(line, interrupted).Success();
|
return m_editline_ap->GetLine(line, interrupted).Success();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
line.clear();
|
line.clear();
|
||||||
|
|
||||||
FILE *in = GetInputFILE();
|
FILE *in = GetInputFILE();
|
||||||
|
@ -452,10 +461,13 @@ IOHandlerEditline::GetLine (std::string &line, bool &interrupted)
|
||||||
SetIsDone(true);
|
SetIsDone(true);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
LineStatus
|
LineStatus
|
||||||
IOHandlerEditline::LineCompletedCallback (Editline *editline,
|
IOHandlerEditline::LineCompletedCallback (Editline *editline,
|
||||||
StringList &lines,
|
StringList &lines,
|
||||||
|
@ -487,14 +499,24 @@ IOHandlerEditline::AutoCompleteCallback (const char *current_line,
|
||||||
matches);
|
matches);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
IOHandlerEditline::GetPrompt ()
|
IOHandlerEditline::GetPrompt ()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
|
{
|
||||||
return m_editline_ap->GetPrompt ();
|
return m_editline_ap->GetPrompt ();
|
||||||
else if (m_prompt.empty())
|
}
|
||||||
return NULL;
|
else
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
if (m_prompt.empty())
|
||||||
|
return NULL;
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return m_prompt.c_str();
|
return m_prompt.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -505,8 +527,10 @@ IOHandlerEditline::SetPrompt (const char *p)
|
||||||
m_prompt = p;
|
m_prompt = p;
|
||||||
else
|
else
|
||||||
m_prompt.clear();
|
m_prompt.clear();
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
m_editline_ap->SetPrompt (m_prompt.empty() ? NULL : m_prompt.c_str());
|
m_editline_ap->SetPrompt (m_prompt.empty() ? NULL : m_prompt.c_str());
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,14 +538,17 @@ void
|
||||||
IOHandlerEditline::SetBaseLineNumber (uint32_t line)
|
IOHandlerEditline::SetBaseLineNumber (uint32_t line)
|
||||||
{
|
{
|
||||||
m_base_line_number = line;
|
m_base_line_number = line;
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
m_editline_ap->ShowLineNumbers (true, line);
|
m_editline_ap->ShowLineNumbers (true, line);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
bool
|
bool
|
||||||
IOHandlerEditline::GetLines (StringList &lines, bool &interrupted)
|
IOHandlerEditline::GetLines (StringList &lines, bool &interrupted)
|
||||||
{
|
{
|
||||||
bool success = false;
|
bool success = false;
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
{
|
{
|
||||||
std::string end_token;
|
std::string end_token;
|
||||||
|
@ -529,6 +556,7 @@ IOHandlerEditline::GetLines (StringList &lines, bool &interrupted)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
LineStatus lines_status = LineStatus::Success;
|
LineStatus lines_status = LineStatus::Success;
|
||||||
Error error;
|
Error error;
|
||||||
|
|
||||||
|
@ -567,7 +595,9 @@ IOHandlerEditline::GetLines (StringList &lines, bool &interrupted)
|
||||||
m_delegate.IOHandlerLinesUpdated(*this, lines, UINT32_MAX, error);
|
m_delegate.IOHandlerLinesUpdated(*this, lines, UINT32_MAX, error);
|
||||||
|
|
||||||
success = lines.GetSize() > 0;
|
success = lines.GetSize() > 0;
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,20 +649,24 @@ IOHandlerEditline::Run ()
|
||||||
void
|
void
|
||||||
IOHandlerEditline::Hide ()
|
IOHandlerEditline::Hide ()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
m_editline_ap->Hide();
|
m_editline_ap->Hide();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IOHandlerEditline::Refresh ()
|
IOHandlerEditline::Refresh ()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
{
|
{
|
||||||
m_editline_ap->Refresh();
|
m_editline_ap->Refresh();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#endif
|
||||||
const char *prompt = GetPrompt();
|
const char *prompt = GetPrompt();
|
||||||
if (prompt && prompt[0])
|
if (prompt && prompt[0])
|
||||||
{
|
{
|
||||||
|
@ -643,14 +677,18 @@ IOHandlerEditline::Refresh ()
|
||||||
::fflush(out);
|
::fflush(out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IOHandlerEditline::Cancel ()
|
IOHandlerEditline::Cancel ()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
m_editline_ap->Interrupt ();
|
m_editline_ap->Interrupt ();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -660,16 +698,20 @@ IOHandlerEditline::Interrupt ()
|
||||||
if (m_delegate.IOHandlerInterrupt(*this))
|
if (m_delegate.IOHandlerInterrupt(*this))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
return m_editline_ap->Interrupt();
|
return m_editline_ap->Interrupt();
|
||||||
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IOHandlerEditline::GotEOF()
|
IOHandlerEditline::GotEOF()
|
||||||
{
|
{
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
if (m_editline_ap)
|
if (m_editline_ap)
|
||||||
m_editline_ap->Interrupt();
|
m_editline_ap->Interrupt();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// we may want curses to be disabled for some builds
|
// we may want curses to be disabled for some builds
|
||||||
|
|
|
@ -27,8 +27,8 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined (__GNU__) && !defined (_WIN32)
|
#if !defined (__GNU__) && !defined (_WIN32) && !defined (__ANDROID__)
|
||||||
// Does not exist under GNU/HURD or Windows
|
// Does not exist under GNU/HURD, or Windows, or Android
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -39,7 +39,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined (__linux__) || defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__) || defined(__NetBSD__)
|
#if defined (__linux__) || defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__APPLE__) || defined(__NetBSD__)
|
||||||
|
#ifndef __ANDROID__
|
||||||
#include <spawn.h>
|
#include <spawn.h>
|
||||||
|
#endif
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -127,6 +129,7 @@ Host::StartMonitoringChildProcess(Host::MonitorChildProcessCallback callback, vo
|
||||||
return ThreadLauncher::LaunchThread(thread_name, MonitorChildProcessThreadFunction, info_ptr, NULL);
|
return ThreadLauncher::LaunchThread(thread_name, MonitorChildProcessThreadFunction, info_ptr, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef __ANDROID__
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
// Scoped class that will disable thread canceling when it is
|
// Scoped class that will disable thread canceling when it is
|
||||||
// constructed, and exception safely restore the previous value it
|
// constructed, and exception safely restore the previous value it
|
||||||
|
@ -154,6 +157,7 @@ public:
|
||||||
private:
|
private:
|
||||||
int m_old_state; // Save the old cancelability state.
|
int m_old_state; // Save the old cancelability state.
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static thread_result_t
|
static thread_result_t
|
||||||
MonitorChildProcessThreadFunction (void *arg)
|
MonitorChildProcessThreadFunction (void *arg)
|
||||||
|
@ -187,10 +191,14 @@ MonitorChildProcessThreadFunction (void *arg)
|
||||||
log->Printf("%s ::wait_pid (pid = %" PRIi32 ", &status, options = %i)...", function, pid, options);
|
log->Printf("%s ::wait_pid (pid = %" PRIi32 ", &status, options = %i)...", function, pid, options);
|
||||||
|
|
||||||
// Wait for all child processes
|
// Wait for all child processes
|
||||||
|
#ifndef __ANDROID__
|
||||||
::pthread_testcancel ();
|
::pthread_testcancel ();
|
||||||
|
#endif
|
||||||
// Get signals from all children with same process group of pid
|
// Get signals from all children with same process group of pid
|
||||||
const ::pid_t wait_pid = ::waitpid (pid, &status, options);
|
const ::pid_t wait_pid = ::waitpid (pid, &status, options);
|
||||||
|
#ifndef __ANDROID__
|
||||||
::pthread_testcancel ();
|
::pthread_testcancel ();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (wait_pid == -1)
|
if (wait_pid == -1)
|
||||||
{
|
{
|
||||||
|
@ -236,7 +244,9 @@ MonitorChildProcessThreadFunction (void *arg)
|
||||||
|
|
||||||
// Scope for pthread_cancel_disabler
|
// Scope for pthread_cancel_disabler
|
||||||
{
|
{
|
||||||
|
#ifndef __ANDROID__
|
||||||
ScopedPThreadCancelDisabler pthread_cancel_disabler;
|
ScopedPThreadCancelDisabler pthread_cancel_disabler;
|
||||||
|
#endif
|
||||||
|
|
||||||
log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_PROCESS);
|
log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_PROCESS);
|
||||||
if (log)
|
if (log)
|
||||||
|
@ -464,12 +474,16 @@ FileSpec
|
||||||
Host::GetModuleFileSpecForHostAddress (const void *host_addr)
|
Host::GetModuleFileSpecForHostAddress (const void *host_addr)
|
||||||
{
|
{
|
||||||
FileSpec module_filespec;
|
FileSpec module_filespec;
|
||||||
|
#ifndef __ANDROID__
|
||||||
Dl_info info;
|
Dl_info info;
|
||||||
if (::dladdr (host_addr, &info))
|
if (::dladdr (host_addr, &info))
|
||||||
{
|
{
|
||||||
if (info.dli_fname)
|
if (info.dli_fname)
|
||||||
module_filespec.SetFile(info.dli_fname, true);
|
module_filespec.SetFile(info.dli_fname, true);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
assert(false && "dladdr() not supported on Android");
|
||||||
|
#endif
|
||||||
return module_filespec;
|
return module_filespec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,6 +719,7 @@ Host::RunShellCommand (const char *command,
|
||||||
short
|
short
|
||||||
Host::GetPosixspawnFlags (ProcessLaunchInfo &launch_info)
|
Host::GetPosixspawnFlags (ProcessLaunchInfo &launch_info)
|
||||||
{
|
{
|
||||||
|
#ifndef __ANDROID__
|
||||||
short flags = POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK;
|
short flags = POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK;
|
||||||
|
|
||||||
#if defined (__APPLE__)
|
#if defined (__APPLE__)
|
||||||
|
@ -747,12 +762,17 @@ Host::GetPosixspawnFlags (ProcessLaunchInfo &launch_info)
|
||||||
#endif
|
#endif
|
||||||
#endif // #if defined (__APPLE__)
|
#endif // #if defined (__APPLE__)
|
||||||
return flags;
|
return flags;
|
||||||
|
#else
|
||||||
|
assert(false *&& "Host::GetPosixspawnFlags() not supported on Android");
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Error
|
Error
|
||||||
Host::LaunchProcessPosixSpawn (const char *exe_path, ProcessLaunchInfo &launch_info, ::pid_t &pid)
|
Host::LaunchProcessPosixSpawn (const char *exe_path, ProcessLaunchInfo &launch_info, ::pid_t &pid)
|
||||||
{
|
{
|
||||||
Error error;
|
Error error;
|
||||||
|
#ifndef __ANDROID__
|
||||||
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_HOST | LIBLLDB_LOG_PROCESS));
|
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_HOST | LIBLLDB_LOG_PROCESS));
|
||||||
|
|
||||||
posix_spawnattr_t attr;
|
posix_spawnattr_t attr;
|
||||||
|
@ -955,6 +975,9 @@ Host::LaunchProcessPosixSpawn (const char *exe_path, ProcessLaunchInfo &launch_i
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
error.SetErrorString("Host::LaunchProcessPosixSpawn() not supported on Android");
|
||||||
|
#endif
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -962,6 +985,7 @@ Host::LaunchProcessPosixSpawn (const char *exe_path, ProcessLaunchInfo &launch_i
|
||||||
bool
|
bool
|
||||||
Host::AddPosixSpawnFileAction(void *_file_actions, const FileAction *info, Log *log, Error &error)
|
Host::AddPosixSpawnFileAction(void *_file_actions, const FileAction *info, Log *log, Error &error)
|
||||||
{
|
{
|
||||||
|
#ifndef __ANDROID__
|
||||||
if (info == NULL)
|
if (info == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -1024,6 +1048,10 @@ Host::AddPosixSpawnFileAction(void *_file_actions, const FileAction *info, Log *
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return error.Success();
|
return error.Success();
|
||||||
|
#else
|
||||||
|
error.SetErrorString("Host::AddPosixSpawnFileAction() not supported on Android");
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // LaunchProcedssPosixSpawn: Apple, Linux, FreeBSD and other GLIBC systems
|
#endif // LaunchProcedssPosixSpawn: Apple, Linux, FreeBSD and other GLIBC systems
|
||||||
|
|
|
@ -40,6 +40,13 @@ typedef void * get_socket_option_arg_type;
|
||||||
const NativeSocket Socket::kInvalidSocketValue = -1;
|
const NativeSocket Socket::kInvalidSocketValue = -1;
|
||||||
#endif // #if defined(_WIN32)
|
#endif // #if defined(_WIN32)
|
||||||
|
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
// Android does not have SUN_LEN
|
||||||
|
#ifndef SUN_LEN
|
||||||
|
#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) + strlen((ptr)->sun_path))
|
||||||
|
#endif
|
||||||
|
#endif // #ifdef __ANDROID__
|
||||||
|
|
||||||
Socket::Socket(NativeSocket socket, SocketProtocol protocol, bool should_close)
|
Socket::Socket(NativeSocket socket, SocketProtocol protocol, bool should_close)
|
||||||
: IOObject(eFDTypeSocket, should_close)
|
: IOObject(eFDTypeSocket, should_close)
|
||||||
, m_protocol(protocol)
|
, m_protocol(protocol)
|
||||||
|
|
|
@ -14,7 +14,9 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#ifndef __ANDROID__
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// C++ Includes
|
// C++ Includes
|
||||||
// Other libraries and framework includes
|
// Other libraries and framework includes
|
||||||
|
@ -375,6 +377,7 @@ Host::GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &process_info)
|
||||||
void
|
void
|
||||||
Host::Backtrace (Stream &strm, uint32_t max_frames)
|
Host::Backtrace (Stream &strm, uint32_t max_frames)
|
||||||
{
|
{
|
||||||
|
#ifndef __ANDROID__
|
||||||
if (max_frames > 0)
|
if (max_frames > 0)
|
||||||
{
|
{
|
||||||
std::vector<void *> frame_buffer (max_frames, NULL);
|
std::vector<void *> frame_buffer (max_frames, NULL);
|
||||||
|
@ -388,6 +391,9 @@ Host::Backtrace (Stream &strm, uint32_t max_frames)
|
||||||
::free (strs);
|
::free (strs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
assert(false && "::backtrace() not supported on Android");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
|
|
|
@ -69,6 +69,7 @@ HostInfoPosix::LookupUserName(uint32_t uid, std::string &user_name)
|
||||||
const char *
|
const char *
|
||||||
HostInfoPosix::LookupGroupName(uint32_t gid, std::string &group_name)
|
HostInfoPosix::LookupGroupName(uint32_t gid, std::string &group_name)
|
||||||
{
|
{
|
||||||
|
#ifndef __ANDROID__
|
||||||
char group_buffer[PATH_MAX];
|
char group_buffer[PATH_MAX];
|
||||||
size_t group_buffer_size = sizeof(group_buffer);
|
size_t group_buffer_size = sizeof(group_buffer);
|
||||||
struct group group_info;
|
struct group group_info;
|
||||||
|
@ -94,6 +95,9 @@ HostInfoPosix::LookupGroupName(uint32_t gid, std::string &group_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
group_name.clear();
|
group_name.clear();
|
||||||
|
#else
|
||||||
|
assert(false && "getgrgid_r() not supported on Android");
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,12 @@ Error
|
||||||
HostThreadPosix::Cancel()
|
HostThreadPosix::Cancel()
|
||||||
{
|
{
|
||||||
Error error;
|
Error error;
|
||||||
|
#ifndef __ANDROID__
|
||||||
int err = ::pthread_cancel(m_thread);
|
int err = ::pthread_cancel(m_thread);
|
||||||
error.SetError(err, eErrorTypePOSIX);
|
error.SetError(err, eErrorTypePOSIX);
|
||||||
|
#else
|
||||||
|
error.SetErrorString("HostThreadPosix::Cancel() not supported on Android");
|
||||||
|
#endif
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,9 @@
|
||||||
#include "lldb/Core/StreamFile.h"
|
#include "lldb/Core/StreamFile.h"
|
||||||
#include "lldb/Core/Timer.h"
|
#include "lldb/Core/Timer.h"
|
||||||
|
|
||||||
|
#ifndef LLDB_DISABLE_LIBEDIT
|
||||||
#include "lldb/Host/Editline.h"
|
#include "lldb/Host/Editline.h"
|
||||||
|
#endif
|
||||||
#include "lldb/Host/Host.h"
|
#include "lldb/Host/Host.h"
|
||||||
#include "lldb/Host/HostInfo.h"
|
#include "lldb/Host/HostInfo.h"
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#define liblldb_LinuxThread_H_
|
#define liblldb_LinuxThread_H_
|
||||||
|
|
||||||
// Other libraries and framework includes
|
// Other libraries and framework includes
|
||||||
#include "POSIXThread.h"
|
#include "Plugins/Process/POSIX/POSIXThread.h"
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// @class LinuxThread
|
// @class LinuxThread
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
#include <sys/personality.h>
|
#include <sys/personality.h>
|
||||||
|
#ifndef __ANDROID__
|
||||||
#include <sys/procfs.h>
|
#include <sys/procfs.h>
|
||||||
|
#endif
|
||||||
#include <sys/ptrace.h>
|
#include <sys/ptrace.h>
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
@ -58,7 +60,12 @@
|
||||||
#include "Plugins/Process/Utility/LinuxSignals.h"
|
#include "Plugins/Process/Utility/LinuxSignals.h"
|
||||||
#include "NativeThreadLinux.h"
|
#include "NativeThreadLinux.h"
|
||||||
#include "ProcFileReader.h"
|
#include "ProcFileReader.h"
|
||||||
#include "ProcessPOSIXLog.h"
|
#include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
|
||||||
|
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
#define __ptrace_request int
|
||||||
|
#define PT_DETACH PTRACE_DETACH
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEBUG_PTRACE_MAXBYTES 20
|
#define DEBUG_PTRACE_MAXBYTES 20
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@
|
||||||
#define lldb_NativeRegisterContextLinux_x86_64_h
|
#define lldb_NativeRegisterContextLinux_x86_64_h
|
||||||
|
|
||||||
#include "lldb/Target/NativeRegisterContextRegisterInfo.h"
|
#include "lldb/Target/NativeRegisterContextRegisterInfo.h"
|
||||||
#include "RegisterContext_x86.h"
|
#include "Plugins/Process/Utility/RegisterContext_x86.h"
|
||||||
#include "lldb-x86-register-enums.h"
|
#include "Plugins/Process/Utility/lldb-x86-register-enums.h"
|
||||||
|
|
||||||
namespace lldb_private
|
namespace lldb_private
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
#include "lldb/Target/Target.h"
|
#include "lldb/Target/Target.h"
|
||||||
|
|
||||||
#include "ProcessLinux.h"
|
#include "ProcessLinux.h"
|
||||||
#include "ProcessPOSIXLog.h"
|
#include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
|
||||||
#include "Plugins/Process/Utility/InferiorCallPOSIX.h"
|
#include "Plugins/Process/Utility/InferiorCallPOSIX.h"
|
||||||
#include "Plugins/Process/Utility/LinuxSignals.h"
|
#include "Plugins/Process/Utility/LinuxSignals.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "ProcessMonitor.h"
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
|
|
||||||
// Other libraries and framework includes
|
// Other libraries and framework includes
|
||||||
#include "lldb/Target/Process.h"
|
#include "lldb/Target/Process.h"
|
||||||
#include "ProcessMessage.h"
|
#include "Plugins/Process/POSIX/ProcessMessage.h"
|
||||||
#include "ProcessPOSIX.h"
|
#include "Plugins/Process/POSIX/ProcessPOSIX.h"
|
||||||
|
|
||||||
class ProcessMonitor;
|
class ProcessMonitor;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <sys/personality.h>
|
#include <sys/personality.h>
|
||||||
|
#ifndef __ANDROID__
|
||||||
#include <sys/procfs.h>
|
#include <sys/procfs.h>
|
||||||
|
#endif
|
||||||
#include <sys/ptrace.h>
|
#include <sys/ptrace.h>
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
@ -39,11 +41,16 @@
|
||||||
#include "lldb/Target/RegisterContext.h"
|
#include "lldb/Target/RegisterContext.h"
|
||||||
#include "lldb/Utility/PseudoTerminal.h"
|
#include "lldb/Utility/PseudoTerminal.h"
|
||||||
|
|
||||||
#include "POSIXThread.h"
|
#include "Plugins/Process/POSIX/POSIXThread.h"
|
||||||
#include "ProcessLinux.h"
|
#include "ProcessLinux.h"
|
||||||
#include "ProcessPOSIXLog.h"
|
#include "Plugins/Process/POSIX/ProcessPOSIXLog.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "ProcessMonitor.h"
|
||||||
|
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
#define __ptrace_request int
|
||||||
|
#define PT_DETACH PTRACE_DETACH
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEBUG_PTRACE_MAXBYTES 20
|
#define DEBUG_PTRACE_MAXBYTES 20
|
||||||
|
|
||||||
// Support ptrace extensions even when compiled without required kernel support
|
// Support ptrace extensions even when compiled without required kernel support
|
||||||
|
|
|
@ -31,18 +31,17 @@
|
||||||
#include "POSIXThread.h"
|
#include "POSIXThread.h"
|
||||||
#include "ProcessPOSIX.h"
|
#include "ProcessPOSIX.h"
|
||||||
#include "ProcessPOSIXLog.h"
|
#include "ProcessPOSIXLog.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "Plugins/Process/Linux/ProcessMonitor.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_arm64.h"
|
#include "RegisterContextPOSIXProcessMonitor_arm64.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_mips64.h"
|
#include "RegisterContextPOSIXProcessMonitor_mips64.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_x86.h"
|
#include "RegisterContextPOSIXProcessMonitor_x86.h"
|
||||||
#include "RegisterContextLinux_arm64.h"
|
#include "Plugins/Process/Utility/RegisterContextLinux_arm64.h"
|
||||||
#include "RegisterContextLinux_i386.h"
|
#include "Plugins/Process/Utility/RegisterContextLinux_i386.h"
|
||||||
#include "RegisterContextLinux_x86_64.h"
|
#include "Plugins/Process/Utility/RegisterContextLinux_x86_64.h"
|
||||||
#include "RegisterContextFreeBSD_i386.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
|
||||||
#include "RegisterContextFreeBSD_mips64.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_mips64.h"
|
||||||
#include "RegisterContextFreeBSD_x86_64.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
|
||||||
|
#include "Plugins/Process/Utility/UnwindLLDB.h"
|
||||||
#include "UnwindLLDB.h"
|
|
||||||
|
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
// Other libraries and framework includes
|
// Other libraries and framework includes
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "RegisterContextPOSIX.h"
|
#include "Plugins/Process/Utility/RegisterContextPOSIX.h"
|
||||||
|
|
||||||
class ProcessMessage;
|
class ProcessMessage;
|
||||||
class ProcessMonitor;
|
class ProcessMonitor;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "ProcessPOSIX.h"
|
#include "ProcessPOSIX.h"
|
||||||
#include "ProcessPOSIXLog.h"
|
#include "ProcessPOSIXLog.h"
|
||||||
#include "Plugins/Process/Utility/InferiorCallPOSIX.h"
|
#include "Plugins/Process/Utility/InferiorCallPOSIX.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "Plugins/Process/Linux/ProcessMonitor.h"
|
||||||
#include "POSIXThread.h"
|
#include "POSIXThread.h"
|
||||||
|
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "lldb/Core/RegisterValue.h"
|
#include "lldb/Core/RegisterValue.h"
|
||||||
|
|
||||||
#include "RegisterContextPOSIX_arm64.h"
|
#include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h"
|
||||||
#include "ProcessPOSIX.h"
|
#include "ProcessPOSIX.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_arm64.h"
|
#include "RegisterContextPOSIXProcessMonitor_arm64.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "Plugins/Process/Linux/ProcessMonitor.h"
|
||||||
|
|
||||||
#define REG_CONTEXT_SIZE (GetGPRSize())
|
#define REG_CONTEXT_SIZE (GetGPRSize())
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,10 @@
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "lldb/Core/RegisterValue.h"
|
#include "lldb/Core/RegisterValue.h"
|
||||||
|
|
||||||
#include "RegisterContextPOSIX_mips64.h"
|
#include "Plugins/Process/Utility/RegisterContextPOSIX_mips64.h"
|
||||||
#include "ProcessPOSIX.h"
|
#include "ProcessPOSIX.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_mips64.h"
|
#include "RegisterContextPOSIXProcessMonitor_mips64.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "Plugins/Process/Linux/ProcessMonitor.h"
|
||||||
|
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
|
|
|
@ -10,9 +10,9 @@
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "lldb/Core/RegisterValue.h"
|
#include "lldb/Core/RegisterValue.h"
|
||||||
|
|
||||||
#include "ProcessPOSIX.h"
|
#include "Plugins/Process/POSIX/ProcessPOSIX.h"
|
||||||
#include "RegisterContextPOSIXProcessMonitor_x86.h"
|
#include "RegisterContextPOSIXProcessMonitor_x86.h"
|
||||||
#include "ProcessMonitor.h"
|
#include "Plugins/Process/Linux/ProcessMonitor.h"
|
||||||
|
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
|
@ -48,6 +48,7 @@ size_and_rw_bits(size_t size, bool read, bool write)
|
||||||
return (0x2 << 2) | rw;
|
return (0x2 << 2) | rw;
|
||||||
default:
|
default:
|
||||||
assert(0 && "invalid size, must be one of 1, 2, 4, or 8");
|
assert(0 && "invalid size, must be one of 1, 2, 4, or 8");
|
||||||
|
return 0; // Unreachable. Just to silence compiler.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
#include "lldb/lldb-defines.h"
|
#include "lldb/lldb-defines.h"
|
||||||
#include "lldb/lldb-enumerations.h"
|
#include "lldb/lldb-enumerations.h"
|
||||||
|
|
||||||
#include "ARM64_GCC_Registers.h"
|
#include "Utility/ARM64_GCC_Registers.h"
|
||||||
#include "ARM64_DWARF_Registers.h"
|
#include "Utility/ARM64_DWARF_Registers.h"
|
||||||
|
|
||||||
#ifndef GPR_OFFSET
|
#ifndef GPR_OFFSET
|
||||||
#error GPR_OFFSET must be defined before including this header file
|
#error GPR_OFFSET must be defined before including this header file
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "lldb/Core/DataExtractor.h"
|
#include "lldb/Core/DataExtractor.h"
|
||||||
#include "lldb/Core/RegisterValue.h"
|
#include "lldb/Core/RegisterValue.h"
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "RegisterContextPOSIX.h"
|
#include "Plugins/Process/Utility/RegisterContextPOSIX.h"
|
||||||
#include "RegisterContextPOSIXCore_mips64.h"
|
#include "RegisterContextPOSIXCore_mips64.h"
|
||||||
|
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "lldb/Core/DataExtractor.h"
|
#include "lldb/Core/DataExtractor.h"
|
||||||
#include "lldb/Core/RegisterValue.h"
|
#include "lldb/Core/RegisterValue.h"
|
||||||
#include "lldb/Target/Thread.h"
|
#include "lldb/Target/Thread.h"
|
||||||
#include "RegisterContextPOSIX.h"
|
#include "Plugins/Process/Utility/RegisterContextPOSIX.h"
|
||||||
#include "RegisterContextPOSIXCore_x86_64.h"
|
#include "RegisterContextPOSIXCore_x86_64.h"
|
||||||
|
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
|
|
|
@ -16,10 +16,10 @@
|
||||||
|
|
||||||
#include "ThreadElfCore.h"
|
#include "ThreadElfCore.h"
|
||||||
#include "ProcessElfCore.h"
|
#include "ProcessElfCore.h"
|
||||||
#include "RegisterContextLinux_x86_64.h"
|
#include "Plugins/Process/Utility/RegisterContextLinux_x86_64.h"
|
||||||
#include "RegisterContextFreeBSD_i386.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_i386.h"
|
||||||
#include "RegisterContextFreeBSD_mips64.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_mips64.h"
|
||||||
#include "RegisterContextFreeBSD_x86_64.h"
|
#include "Plugins/Process/Utility/RegisterContextFreeBSD_x86_64.h"
|
||||||
#include "RegisterContextPOSIXCore_mips64.h"
|
#include "RegisterContextPOSIXCore_mips64.h"
|
||||||
#include "RegisterContextPOSIXCore_x86_64.h"
|
#include "RegisterContextPOSIXCore_x86_64.h"
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#ifndef LLDB_DISABLE_POSIX
|
#ifndef LLDB_DISABLE_POSIX
|
||||||
#include <spawn.h>
|
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <sys/mman.h> // for mmap
|
#include <sys/mman.h> // for mmap
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -9,10 +9,6 @@
|
||||||
|
|
||||||
#include "lldb/Host/Config.h"
|
#include "lldb/Host/Config.h"
|
||||||
|
|
||||||
#ifndef LLDB_DISABLE_POSIX
|
|
||||||
#include <spawn.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "lldb/Target/ProcessLaunchInfo.h"
|
#include "lldb/Target/ProcessLaunchInfo.h"
|
||||||
#include "lldb/Target/FileAction.h"
|
#include "lldb/Target/FileAction.h"
|
||||||
#include "lldb/Target/Target.h"
|
#include "lldb/Target/Target.h"
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#include "lldb/Target/ThreadSpec.h"
|
#include "lldb/Target/ThreadSpec.h"
|
||||||
#include "lldb/Target/Unwind.h"
|
#include "lldb/Target/Unwind.h"
|
||||||
#include "Plugins/Process/Utility/UnwindLLDB.h"
|
#include "Plugins/Process/Utility/UnwindLLDB.h"
|
||||||
#include "UnwindMacOSXFrameBackchain.h"
|
#include "Plugins/Process/Utility/UnwindMacOSXFrameBackchain.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "lldb/lldb-python.h"
|
|
||||||
|
|
||||||
// C Includes
|
// C Includes
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
Loading…
Reference in New Issue