diff options
| author | Vince Harron <vince@nethacker.com> | 2015-05-12 01:10:56 +0000 |
|---|---|---|
| committer | Vince Harron <vince@nethacker.com> | 2015-05-12 01:10:56 +0000 |
| commit | 8b33567189ea25fbdd454d9c4cc75cb2850a821f (patch) | |
| tree | 1f16337a50f4a62cd82d8961ee311390a9a10614 /lldb/source/Host | |
| parent | 7b6c0e02acd94ece5b3d6674a1c397adf7f9d7b3 (diff) | |
| download | bcm5719-llvm-8b33567189ea25fbdd454d9c4cc75cb2850a821f.tar.gz bcm5719-llvm-8b33567189ea25fbdd454d9c4cc75cb2850a821f.zip | |
Get lldb-server building on android-9
Build lldb-server with an android-9 sysroot.
llvm-svn: 237078
Diffstat (limited to 'lldb/source/Host')
| -rw-r--r-- | lldb/source/Host/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | lldb/source/Host/android/LibcGlue.cpp | 39 | ||||
| -rw-r--r-- | lldb/source/Host/posix/HostInfoPosix.cpp | 26 |
3 files changed, 65 insertions, 1 deletions
diff --git a/lldb/source/Host/CMakeLists.txt b/lldb/source/Host/CMakeLists.txt index 5f5547764dc..a13defa46c5 100644 --- a/lldb/source/Host/CMakeLists.txt +++ b/lldb/source/Host/CMakeLists.txt @@ -104,6 +104,7 @@ else() if (__ANDROID_NDK__) add_host_subdirectory(android android/HostInfoAndroid.cpp + android/LibcGlue.cpp android/ProcessLauncherAndroid.cpp linux/Host.cpp linux/HostInfoLinux.cpp diff --git a/lldb/source/Host/android/LibcGlue.cpp b/lldb/source/Host/android/LibcGlue.cpp new file mode 100644 index 00000000000..d443a92724e --- /dev/null +++ b/lldb/source/Host/android/LibcGlue.cpp @@ -0,0 +1,39 @@ +//===-- LibcGlue.cpp --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// This files adds functions missing from libc on earlier versions of Android + +#include <android/api-level.h> + +#if __ANDROID_API__ < 21 + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <sys/syscall.h> +#include <signal.h> + +#include "lldb/Host/Time.h" + +time_t timegm(struct tm* t) +{ + return (time_t) timegm64(t); +} + +int signalfd (int fd, const sigset_t *mask, int flags) +{ + return syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags); +} + +int posix_openpt(int flags) +{ + return open("/dev/ptmx", flags); +} + +#endif diff --git a/lldb/source/Host/posix/HostInfoPosix.cpp b/lldb/source/Host/posix/HostInfoPosix.cpp index debff52d8c1..160bd235565 100644 --- a/lldb/source/Host/posix/HostInfoPosix.cpp +++ b/lldb/source/Host/posix/HostInfoPosix.cpp @@ -17,6 +17,7 @@ #include <grp.h> #include <limits.h> +#include <mutex> #include <netdb.h> #include <pwd.h> #include <sys/types.h> @@ -47,9 +48,31 @@ HostInfoPosix::GetHostname(std::string &s) return false; } +#ifdef __ANDROID_NDK__ +#include <android/api-level.h> +#endif +#if defined(__ANDROID_API__) && __ANDROID_API__ < 21 +#define USE_GETPWUID +#endif + +#ifdef USE_GETPWUID +static std::mutex s_getpwuid_lock; +#endif + const char * HostInfoPosix::LookupUserName(uint32_t uid, std::string &user_name) { +#ifdef USE_GETPWUID + // getpwuid_r is missing from android-9 + // make getpwuid thread safe with a mutex + std::lock_guard<std::mutex> lock(s_getpwuid_lock); + struct passwd *user_info_ptr = ::getpwuid(uid); + if (user_info_ptr) + { + user_name.assign(user_info_ptr->pw_name); + return user_name.c_str(); + } +#else struct passwd user_info; struct passwd *user_info_ptr = &user_info; char user_buffer[PATH_MAX]; @@ -62,8 +85,9 @@ HostInfoPosix::LookupUserName(uint32_t uid, std::string &user_name) return user_name.c_str(); } } +#endif user_name.clear(); - return NULL; + return nullptr; } const char * |

