diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
commit | 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc (patch) | |
tree | dd2a1ddf0476664c2b823409c36cbccd52662ca7 /include | |
parent | 3bd2e91faeb9eeec1aae82c64a3253afff551cfd (diff) | |
download | src-test2-9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc.tar.gz src-test2-9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc.zip |
Notes
Diffstat (limited to 'include')
31 files changed, 1321 insertions, 0 deletions
diff --git a/include/Makefile b/include/Makefile new file mode 100644 index 000000000000..02acdce10271 --- /dev/null +++ b/include/Makefile @@ -0,0 +1,13 @@ +##===- include/Makefile ------------------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LLDB_LEVEL := .. +DIRS := lldb + +include $(LLDB_LEVEL)/Makefile diff --git a/include/lldb/Core/StringList.h b/include/lldb/Core/StringList.h index 3e341b994075..53bdb6994a56 100644 --- a/include/lldb/Core/StringList.h +++ b/include/lldb/Core/StringList.h @@ -133,8 +133,15 @@ public: operator << (const char* str); StringList& + operator << (const std::string &s); + + StringList& operator << (StringList strings); + // Copy assignment for a vector of strings + StringList& + operator = (const std::vector<std::string> &rhs); + // This string list contains a list of valid auto completion // strings, and the "s" is passed in. "matches" is filled in // with zero or more string values that start with "s", and @@ -147,6 +154,23 @@ public: StringList &matches, size_t &exact_matches_idx) const; + // Dump the StringList to the given lldb_private::Log, `log`, one item per line. + // If given, `name` will be used to identify the start and end of the list in the output. + virtual void LogDump(Log *log, const char *name = nullptr); + + // Static helper to convert an iterable of strings to a StringList, and then + // dump it with the semantics of the `LogDump` method. + template<typename T> static void LogDump(Log *log, T s_iterable, const char *name = nullptr) + { + if (!log) + return; + // Make a copy of the iterable as a StringList + StringList l{}; + for (const auto &s : s_iterable) + l << s; + + l.LogDump(log, name); + } private: STLStringArray m_strings; }; diff --git a/include/lldb/Host/android/Android.h b/include/lldb/Host/android/Android.h new file mode 100644 index 000000000000..8efc1a53b01f --- /dev/null +++ b/include/lldb/Host/android/Android.h @@ -0,0 +1,31 @@ +//===-- lldb-android.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_lldb_android_h_ +#define LLDB_lldb_android_h_ + +#include <sstream> +#include <string> +#include <errno.h> + +#define _isatty isatty +#define SYS_tgkill __NR_tgkill + +namespace std +{ + template <typename T> + std::string to_string(T value) + { + std::ostringstream os ; + os << value ; + return os.str() ; + } +} + +#endif // LLDB_lldb_android_h_ diff --git a/include/lldb/Host/android/Config.h b/include/lldb/Host/android/Config.h new file mode 100644 index 000000000000..f16ed86cabb8 --- /dev/null +++ b/include/lldb/Host/android/Config.h @@ -0,0 +1,28 @@ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//---------------------------------------------------------------------- +// LLDB currently doesn't have a dynamic configuration mechanism, so we +// are going to hardcode things for now. Eventually these files will +// be auto generated by some configuration script that can detect +// platform functionality availability. +//---------------------------------------------------------------------- + +#ifndef liblldb_Platform_Config_h_ +#define liblldb_Platform_Config_h_ + +#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 + +//#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1 + +//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1 + +//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1 + +#endif // #ifndef liblldb_Platform_Config_h_ diff --git a/include/lldb/Host/android/HostInfoAndroid.h b/include/lldb/Host/android/HostInfoAndroid.h new file mode 100644 index 000000000000..08eb1abf3b51 --- /dev/null +++ b/include/lldb/Host/android/HostInfoAndroid.h @@ -0,0 +1,33 @@ +//===-- HostInfoAndroid.h ---------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_android_HostInfoAndroid_h_ +#define lldb_Host_android_HostInfoAndroid_h_ + +#include "lldb/Host/linux/HostInfoLinux.h" + +namespace lldb_private +{ + +class HostInfoAndroid : public HostInfoLinux +{ + friend class HostInfoBase; + + public: + static FileSpec GetDefaultShell(); + static FileSpec ResolveLibraryPath (const std::string& path, const ArchSpec& arch); + + protected: + static void ComputeHostArchitectureSupport(ArchSpec &arch_32, ArchSpec &arch_64); + static bool ComputeTempFileBaseDirectory(FileSpec &file_spec); +}; + +} // end of namespace lldb_private + +#endif // #ifndef lldb_Host_android_HostInfoAndroid_h_ diff --git a/include/lldb/Host/android/ProcessLauncherAndroid.h b/include/lldb/Host/android/ProcessLauncherAndroid.h new file mode 100644 index 000000000000..8d4847810028 --- /dev/null +++ b/include/lldb/Host/android/ProcessLauncherAndroid.h @@ -0,0 +1,26 @@ +//===-- ProcessLauncherAndroid.h --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_android_ProcessLauncherAndroid_h_ +#define lldb_Host_android_ProcessLauncherAndroid_h_ + +#include "lldb/Host/ProcessLauncher.h" + +namespace lldb_private +{ + +class ProcessLauncherAndroid : public ProcessLauncher +{ + public: + virtual HostProcess LaunchProcess(const ProcessLaunchInfo &launch_info, Error &error); +}; + +} // end of namespace lldb_private + +#endif diff --git a/include/lldb/Host/linux/AbstractSocket.h b/include/lldb/Host/linux/AbstractSocket.h new file mode 100644 index 000000000000..7814410a04d7 --- /dev/null +++ b/include/lldb/Host/linux/AbstractSocket.h @@ -0,0 +1,28 @@ +//===-- AbstractSocket.h ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_AbstractSocket_h_ +#define liblldb_AbstractSocket_h_ + +#include "lldb/Host/posix/DomainSocket.h" + +namespace lldb_private +{ + class AbstractSocket: public DomainSocket + { + public: + AbstractSocket(bool child_processes_inherit, Error &error); + + protected: + size_t GetNameOffset() const override; + void DeleteSocketFile(llvm::StringRef name) override; + }; +} + +#endif // ifndef liblldb_AbstractSocket_h_ diff --git a/include/lldb/Host/linux/Config.h b/include/lldb/Host/linux/Config.h new file mode 100644 index 000000000000..49d97dd5793c --- /dev/null +++ b/include/lldb/Host/linux/Config.h @@ -0,0 +1,28 @@ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//---------------------------------------------------------------------- +// LLDB currently doesn't have a dynamic configuration mechanism, so we +// are going to hardcode things for now. Eventually these files will +// be auto generated by some configuration script that can detect +// platform functionality availability. +//---------------------------------------------------------------------- + +#ifndef liblldb_Platform_Config_h_ +#define liblldb_Platform_Config_h_ + +#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 + +#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1 + +//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1 + +//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1 + +#endif // #ifndef liblldb_Platform_Config_h_ diff --git a/include/lldb/Host/linux/HostInfoLinux.h b/include/lldb/Host/linux/HostInfoLinux.h new file mode 100644 index 000000000000..e4b22075325d --- /dev/null +++ b/include/lldb/Host/linux/HostInfoLinux.h @@ -0,0 +1,50 @@ +//===-- HostInfoLinux.h -----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_linux_HostInfoLinux_h_ +#define lldb_Host_linux_HostInfoLinux_h_ + +#include "lldb/Host/FileSpec.h" +#include "lldb/Host/posix/HostInfoPosix.h" + +#include "llvm/ADT/StringRef.h" + +#include <string> + +namespace lldb_private +{ + +class HostInfoLinux : public HostInfoPosix +{ + friend class HostInfoBase; + + private: + // Static class, unconstructable. + HostInfoLinux(); + ~HostInfoLinux(); + + public: + static void Initialize(); + static uint32_t GetMaxThreadNameLength(); + + static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update); + static bool GetOSBuildString(std::string &s); + static bool GetOSKernelDescription(std::string &s); + static llvm::StringRef GetDistributionId(); + static FileSpec GetProgramFileSpec(); + + protected: + static bool ComputeSupportExeDirectory(FileSpec &file_spec); + static bool ComputeSystemPluginsDirectory(FileSpec &file_spec); + static bool ComputeUserPluginsDirectory(FileSpec &file_spec); + static void ComputeHostArchitectureSupport(ArchSpec &arch_32, ArchSpec &arch_64); +}; +} + +#endif diff --git a/include/lldb/Host/linux/HostThreadLinux.h b/include/lldb/Host/linux/HostThreadLinux.h new file mode 100644 index 000000000000..9091f41dae47 --- /dev/null +++ b/include/lldb/Host/linux/HostThreadLinux.h @@ -0,0 +1,32 @@ +//===-- HostThreadLinux.h ---------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_linux_HostThreadLinux_h_ +#define lldb_Host_linux_HostThreadLinux_h_ + +#include "lldb/Host/posix/HostThreadPosix.h" + +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/SmallString.h" + +namespace lldb_private +{ + +class HostThreadLinux : public HostThreadPosix +{ + public: + HostThreadLinux(); + HostThreadLinux(lldb::thread_t thread); + + static void SetName(lldb::thread_t thread, llvm::StringRef name); + static void GetName(lldb::thread_t thread, llvm::SmallVectorImpl<char> &name); +}; +} + +#endif diff --git a/include/lldb/Host/linux/Personality.h b/include/lldb/Host/linux/Personality.h new file mode 100644 index 000000000000..48fc2e2bdd4c --- /dev/null +++ b/include/lldb/Host/linux/Personality.h @@ -0,0 +1,25 @@ +//===-- Personality.h -------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// This file defines personality functions & structures + +#ifndef liblldb_Host_linux_Personality_h_ +#define liblldb_Host_linux_Personality_h_ + +#ifdef __ANDROID_NDK__ +#include <android/api-level.h> +#endif + +#if defined(__ANDROID_API__) && __ANDROID_API__ < 21 +#include <linux/personality.h> +#else +#include <sys/personality.h> +#endif + +#endif // liblldb_Host_linux_Personality_h_ diff --git a/include/lldb/Host/linux/Ptrace.h b/include/lldb/Host/linux/Ptrace.h new file mode 100644 index 000000000000..b28bb37715d6 --- /dev/null +++ b/include/lldb/Host/linux/Ptrace.h @@ -0,0 +1,66 @@ +//===-- Ptrace.h ------------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// This file defines ptrace functions & structures + +#ifndef liblldb_Host_linux_Ptrace_h_ +#define liblldb_Host_linux_Ptrace_h_ + +#include <sys/ptrace.h> + +#ifdef __ANDROID_NDK__ +#define PT_DETACH PTRACE_DETACH +typedef int __ptrace_request; +#endif + +#define DEBUG_PTRACE_MAXBYTES 20 + +// Support ptrace extensions even when compiled without required kernel support +#ifndef PT_GETREGS + #ifndef PTRACE_GETREGS + #define PTRACE_GETREGS 12 + #endif +#endif +#ifndef PT_SETREGS + #ifndef PTRACE_SETREGS + #define PTRACE_SETREGS 13 + #endif +#endif +#ifndef PT_GETFPREGS + #ifndef PTRACE_GETFPREGS + #define PTRACE_GETFPREGS 14 + #endif +#endif +#ifndef PT_SETFPREGS + #ifndef PTRACE_SETFPREGS + #define PTRACE_SETFPREGS 15 + #endif +#endif +#ifndef PTRACE_GETREGSET + #define PTRACE_GETREGSET 0x4204 +#endif +#ifndef PTRACE_SETREGSET + #define PTRACE_SETREGSET 0x4205 +#endif +#ifndef PTRACE_GET_THREAD_AREA + #define PTRACE_GET_THREAD_AREA 25 +#endif +#ifndef PTRACE_ARCH_PRCTL + #define PTRACE_ARCH_PRCTL 30 +#endif +#ifndef ARCH_GET_FS + #define ARCH_SET_GS 0x1001 + #define ARCH_SET_FS 0x1002 + #define ARCH_GET_FS 0x1003 + #define ARCH_GET_GS 0x1004 +#endif + +#define LLDB_PTRACE_NT_ARM_TLS 0x401 // ARM TLS register + +#endif // liblldb_Host_linux_Ptrace_h_ diff --git a/include/lldb/Host/linux/Signalfd.h b/include/lldb/Host/linux/Signalfd.h new file mode 100644 index 000000000000..cf50e87097fb --- /dev/null +++ b/include/lldb/Host/linux/Signalfd.h @@ -0,0 +1,54 @@ +//===-- Signalfd.h ----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// This file defines signalfd functions & structures + +#ifndef liblldb_Host_linux_Signalfd_h_ +#define liblldb_Host_linux_Signalfd_h_ + +#ifdef __ANDROID_NDK__ +#include <android/api-level.h> +#endif + +#if defined(__ANDROID_API__) && __ANDROID_API__ < 21 + +#include <linux/types.h> +#include <linux/fcntl.h> + +#define SFD_CLOEXEC O_CLOEXEC +#define SFD_NONBLOCK O_NONBLOCK + +struct signalfd_siginfo { + __u32 ssi_signo; + __s32 ssi_errno; + __s32 ssi_code; + __u32 ssi_pid; + __u32 ssi_uid; + __s32 ssi_fd; + __u32 ssi_tid; + __u32 ssi_band; + __u32 ssi_overrun; + __u32 ssi_trapno; + __s32 ssi_status; + __s32 ssi_int; + __u64 ssi_ptr; + __u64 ssi_utime; + __u64 ssi_stime; + __u64 ssi_addr; + __u16 ssi_addr_lsb; + __u8 __pad[46]; +}; + +int signalfd (int fd, const sigset_t *mask, int flags); + +#else +#include <sys/signalfd.h> +#endif + +#endif // liblldb_Host_linux_Signalfd_h_ diff --git a/include/lldb/Host/linux/Uio.h b/include/lldb/Host/linux/Uio.h new file mode 100644 index 000000000000..08894c0a2ca8 --- /dev/null +++ b/include/lldb/Host/linux/Uio.h @@ -0,0 +1,23 @@ +//===-- Uio.h ---------------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_Host_linux_Uio_h_ +#define liblldb_Host_linux_Uio_h_ + +#include <sys/uio.h> + +// We shall provide our own implementation of process_vm_readv if it is not present +#ifndef HAVE_PROCESS_VM_READV +ssize_t process_vm_readv(::pid_t pid, + const struct iovec *local_iov, unsigned long liovcnt, + const struct iovec *remote_iov, unsigned long riovcnt, + unsigned long flags); +#endif + +#endif // liblldb_Host_linux_Uio_h_ diff --git a/include/lldb/Host/macosx/Config.h b/include/lldb/Host/macosx/Config.h new file mode 100644 index 000000000000..c8add4498f27 --- /dev/null +++ b/include/lldb/Host/macosx/Config.h @@ -0,0 +1,28 @@ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//---------------------------------------------------------------------- +// LLDB currently doesn't have a dynamic configuration mechanism, so we +// are going to hardcode things for now. Eventually these files will +// be auto generated by some configuration script that can detect +// platform functionality availability. +//---------------------------------------------------------------------- + +#ifndef liblldb_Platform_Config_h_ +#define liblldb_Platform_Config_h_ + +#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 + +#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1 + +#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1 + +#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1 + +#endif // #ifndef liblldb_Platform_Config_h_ diff --git a/include/lldb/Host/macosx/HostInfoMacOSX.h b/include/lldb/Host/macosx/HostInfoMacOSX.h new file mode 100644 index 000000000000..3b62c7fb9061 --- /dev/null +++ b/include/lldb/Host/macosx/HostInfoMacOSX.h @@ -0,0 +1,47 @@ +//===-- HostInfoMacOSX.h ----------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_macosx_HostInfoMacOSX_h_ +#define lldb_Host_macosx_HostInfoMacOSX_h_ + +#include "lldb/Host/FileSpec.h" +#include "lldb/Host/posix/HostInfoPosix.h" + +namespace lldb_private +{ + +class ArchSpec; + +class HostInfoMacOSX : public HostInfoPosix +{ + friend class HostInfoBase; + + private: + // Static class, unconstructable. + HostInfoMacOSX(); + ~HostInfoMacOSX(); + + public: + static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update); + static bool GetOSBuildString(std::string &s); + static bool GetOSKernelDescription(std::string &s); + static FileSpec GetProgramFileSpec(); + + protected: + static bool ComputeSupportExeDirectory(FileSpec &file_spec); + static void ComputeHostArchitectureSupport(ArchSpec &arch_32, ArchSpec &arch_64); + static bool ComputeHeaderDirectory(FileSpec &file_spec); + static bool ComputePythonDirectory(FileSpec &file_spec); + static bool ComputeClangDirectory(FileSpec &file_spec); + static bool ComputeSystemPluginsDirectory(FileSpec &file_spec); + static bool ComputeUserPluginsDirectory(FileSpec &file_spec); +}; +} + +#endif diff --git a/include/lldb/Host/macosx/HostThreadMacOSX.h b/include/lldb/Host/macosx/HostThreadMacOSX.h new file mode 100644 index 000000000000..9173aaf92f32 --- /dev/null +++ b/include/lldb/Host/macosx/HostThreadMacOSX.h @@ -0,0 +1,31 @@ +//===-- HostThreadMacOSX.h --------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_macosx_HostThreadMacOSX_h_ +#define lldb_Host_macosx_HostThreadMacOSX_h_ + +#include "lldb/Host/posix/HostThreadPosix.h" + +namespace lldb_private +{ + +class HostThreadMacOSX : public HostThreadPosix +{ + friend class ThreadLauncher; + + public: + HostThreadMacOSX(); + HostThreadMacOSX(lldb::thread_t thread); + + protected: + static lldb::thread_result_t ThreadCreateTrampoline(lldb::thread_arg_t arg); +}; +} + +#endif diff --git a/include/lldb/Host/mingw/Config.h b/include/lldb/Host/mingw/Config.h new file mode 100644 index 000000000000..cdf6f21e0988 --- /dev/null +++ b/include/lldb/Host/mingw/Config.h @@ -0,0 +1,30 @@ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//---------------------------------------------------------------------- +// LLDB currently doesn't have a dynamic configuration mechanism, so we +// are going to hardcode things for now. Eventually these files will +// be auto generated by some configuration script that can detect +// platform functionality availability. +//---------------------------------------------------------------------- + +#ifndef liblldb_Platform_Config_h_ +#define liblldb_Platform_Config_h_ + +#define LLDB_DISABLE_POSIX + +//#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 + +//#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1 + +//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1 + +//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1 + +#endif // #ifndef liblldb_Platform_Config_h_ diff --git a/include/lldb/Host/msvc/Config.h b/include/lldb/Host/msvc/Config.h new file mode 100644 index 000000000000..4a4ed5799c53 --- /dev/null +++ b/include/lldb/Host/msvc/Config.h @@ -0,0 +1,37 @@ +//===-- Config.h -----------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +//---------------------------------------------------------------------- +// LLDB currently doesn't have a dynamic configuration mechanism, so we +// are going to hardcode things for now. Eventually these files will +// be auto generated by some configuration script that can detect +// platform functionality availability. +//---------------------------------------------------------------------- + +#ifndef liblldb_host_msvc_Config_h_ +#define liblldb_host_msvc_Config_h_ + +#define LLDB_DISABLE_POSIX + +//#define LLDB_CONFIG_TERMIOS_SUPPORTED 1 + +//#define LLDB_CONFIG_TILDE_RESOLVES_TO_USER 1 + +//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1 + +//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1 + +#if _HAS_EXCEPTIONS == 0 +// Due to a bug in <thread>, when _HAS_EXCEPTIONS == 0 the header will try to call +// uncaught_exception() without having a declaration for it. The fix for this is +// to manually #include <eh.h>, which contains this declaration. +#include <eh.h> +#endif + +#endif // #ifndef liblldb_Platform_Config_h_ diff --git a/include/lldb/Host/windows/AutoHandle.h b/include/lldb/Host/windows/AutoHandle.h new file mode 100644 index 000000000000..04411c47d9e2 --- /dev/null +++ b/include/lldb/Host/windows/AutoHandle.h @@ -0,0 +1,40 @@ +//===-- AutoHandle.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_lldb_Host_windows_AutoHandle_h_ +#define LLDB_lldb_Host_windows_AutoHandle_h_ + +namespace lldb_private { + +class AutoHandle { +public: + AutoHandle(HANDLE handle, HANDLE invalid_value = INVALID_HANDLE_VALUE) + : m_handle(handle) + , m_invalid_value(invalid_value) + { + } + + ~AutoHandle() + { + if (m_handle != m_invalid_value) + ::CloseHandle(m_handle); + } + + bool IsValid() const { return m_handle != m_invalid_value; } + + HANDLE get() const { return m_handle; } +private: + HANDLE m_handle; + HANDLE m_invalid_value; +}; + +} + +#endif + diff --git a/include/lldb/Host/windows/ConnectionGenericFileWindows.h b/include/lldb/Host/windows/ConnectionGenericFileWindows.h new file mode 100644 index 000000000000..bfe9b2e0c7b8 --- /dev/null +++ b/include/lldb/Host/windows/ConnectionGenericFileWindows.h @@ -0,0 +1,68 @@ +//===-- ConnectionGenericFileWindows.h --------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_Host_windows_ConnectionGenericFileWindows_h_ +#define liblldb_Host_windows_ConnectionGenericFileWindows_h_ + +#include "lldb/Core/Connection.h" +#include "lldb/Host/windows/windows.h" +#include "lldb/lldb-types.h" + +namespace lldb_private +{ + +class Error; + +class ConnectionGenericFile : public lldb_private::Connection +{ + public: + ConnectionGenericFile(); + + ConnectionGenericFile(lldb::file_t file, bool owns_file); + + ~ConnectionGenericFile() override; + + bool IsConnected() const override; + + lldb::ConnectionStatus Connect(const char *s, Error *error_ptr) override; + + lldb::ConnectionStatus Disconnect(Error *error_ptr) override; + + size_t Read(void *dst, size_t dst_len, uint32_t timeout_usec, lldb::ConnectionStatus &status, Error *error_ptr) override; + + size_t Write(const void *src, size_t src_len, lldb::ConnectionStatus &status, Error *error_ptr) override; + + std::string GetURI() override; + + bool InterruptRead() override; + + protected: + OVERLAPPED m_overlapped; + HANDLE m_file; + HANDLE m_event_handles[2]; + bool m_owns_file; + LARGE_INTEGER m_file_position; + + enum + { + kBytesAvailableEvent, + kInterruptEvent + }; + + private: + void InitializeEventHandles(); + void IncrementFilePointer(DWORD amount); + + std::string m_uri; + + DISALLOW_COPY_AND_ASSIGN(ConnectionGenericFile); +}; +} + +#endif diff --git a/include/lldb/Host/windows/HostInfoWindows.h b/include/lldb/Host/windows/HostInfoWindows.h new file mode 100644 index 000000000000..022e15533d31 --- /dev/null +++ b/include/lldb/Host/windows/HostInfoWindows.h @@ -0,0 +1,46 @@ +//===-- HostInfoWindows.h ---------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_windows_HostInfoWindows_h_ +#define lldb_Host_windows_HostInfoWindows_h_ + +#include "lldb/Host/HostInfoBase.h" +#include "lldb/Host/FileSpec.h" + +namespace lldb_private +{ + +class HostInfoWindows : public HostInfoBase +{ + friend class HostInfoBase; + + private: + // Static class, unconstructable. + HostInfoWindows(); + ~HostInfoWindows(); + + public: + static size_t GetPageSize(); + + static bool GetOSVersion(uint32_t &major, uint32_t &minor, uint32_t &update); + static bool GetOSBuildString(std::string &s); + static bool GetOSKernelDescription(std::string &s); + static bool GetHostname(std::string &s); + static FileSpec GetProgramFileSpec(); + static FileSpec GetDefaultShell(); + + protected: + static bool ComputePythonDirectory(FileSpec &file_spec); + + private: + static FileSpec m_program_filespec; +}; +} + +#endif diff --git a/include/lldb/Host/windows/HostProcessWindows.h b/include/lldb/Host/windows/HostProcessWindows.h new file mode 100644 index 000000000000..6f8ad3dc4d40 --- /dev/null +++ b/include/lldb/Host/windows/HostProcessWindows.h @@ -0,0 +1,47 @@ +//===-- HostProcessWindows.h ------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_HostProcessWindows_h_ +#define lldb_Host_HostProcessWindows_h_ + +#include "lldb/Host/HostNativeProcessBase.h" +#include "lldb/lldb-types.h" + +namespace lldb_private +{ + +class FileSpec; + +class HostProcessWindows : public HostNativeProcessBase +{ + public: + HostProcessWindows(); + explicit HostProcessWindows(lldb::process_t process); + ~HostProcessWindows(); + + void SetOwnsHandle(bool owns); + + virtual Error Terminate(); + virtual Error GetMainModule(FileSpec &file_spec) const; + + virtual lldb::pid_t GetProcessId() const; + virtual bool IsRunning() const; + + virtual HostThread StartMonitoring(HostProcess::MonitorCallback callback, void *callback_baton, bool monitor_signals); + + private: + static lldb::thread_result_t MonitorThread(void *thread_arg); + + void Close(); + + bool m_owns_handle; +}; +} + +#endif diff --git a/include/lldb/Host/windows/HostThreadWindows.h b/include/lldb/Host/windows/HostThreadWindows.h new file mode 100644 index 000000000000..e0c78c37d69a --- /dev/null +++ b/include/lldb/Host/windows/HostThreadWindows.h @@ -0,0 +1,42 @@ +//===-- HostThreadWindows.h -------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_windows_HostThreadWindows_h_ +#define lldb_Host_windows_HostThreadWindows_h_ + +#include "lldb/Host/HostNativeThreadBase.h" + +#include "llvm/ADT/SmallString.h" + +namespace lldb_private +{ + +class HostThreadWindows : public HostNativeThreadBase +{ + DISALLOW_COPY_AND_ASSIGN(HostThreadWindows); + + public: + HostThreadWindows(); + HostThreadWindows(lldb::thread_t thread); + virtual ~HostThreadWindows(); + + void SetOwnsHandle(bool owns); + + virtual Error Join(lldb::thread_result_t *result); + virtual Error Cancel(); + virtual void Reset(); + + lldb::tid_t GetThreadId() const; + + private: + bool m_owns_handle; +}; +} + +#endif diff --git a/include/lldb/Host/windows/LockFileWindows.h b/include/lldb/Host/windows/LockFileWindows.h new file mode 100644 index 000000000000..b2b8896f18c4 --- /dev/null +++ b/include/lldb/Host/windows/LockFileWindows.h @@ -0,0 +1,49 @@ +//===-- LockFileWindows.h ---------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_Host_posix_LockFileWindows_h_ +#define liblldb_Host_posix_LockFileWindows_h_ + +#include "lldb/Host/LockFileBase.h" +#include "lldb/Host/windows/windows.h" + +namespace lldb_private { + +class LockFileWindows : public LockFileBase +{ +public: + explicit LockFileWindows (int fd); + ~LockFileWindows (); + +protected: + Error + DoWriteLock (const uint64_t start, const uint64_t len) override; + + Error + DoTryWriteLock (const uint64_t start, const uint64_t len) override; + + Error + DoReadLock (const uint64_t start, const uint64_t len) override; + + Error + DoTryReadLock (const uint64_t start, const uint64_t len) override; + + Error + DoUnlock () override; + + bool + IsValidFile () const override; + +private: + HANDLE m_file; +}; + +} // namespace lldb_private + +#endif // liblldb_Host_posix_LockFileWindows_h_ diff --git a/include/lldb/Host/windows/PipeWindows.h b/include/lldb/Host/windows/PipeWindows.h new file mode 100644 index 000000000000..7170c7c36815 --- /dev/null +++ b/include/lldb/Host/windows/PipeWindows.h @@ -0,0 +1,74 @@ +//===-- PipePosix.h ---------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_Host_windows_PipeWindows_h_ +#define liblldb_Host_windows_PipeWindows_h_ + +#include "lldb/Host/PipeBase.h" +#include "lldb/Host/windows/windows.h" + +namespace lldb_private +{ + +//---------------------------------------------------------------------- +/// @class Pipe PipeWindows.h "lldb/Host/windows/PipeWindows.h" +/// @brief A windows-based implementation of Pipe, a class that abtracts +/// unix style pipes. +/// +/// A class that abstracts the LLDB core from host pipe functionality. +//---------------------------------------------------------------------- +class PipeWindows : public PipeBase +{ + public: + PipeWindows(); + ~PipeWindows() override; + + Error CreateNew(bool child_process_inherit) override; + Error CreateNew(llvm::StringRef name, bool child_process_inherit) override; + Error CreateWithUniqueName(llvm::StringRef prefix, bool child_process_inherit, llvm::SmallVectorImpl<char>& name) override; + Error OpenAsReader(llvm::StringRef name, bool child_process_inherit) override; + Error OpenAsWriterWithTimeout(llvm::StringRef name, bool child_process_inherit, const std::chrono::microseconds &timeout) override; + + bool CanRead() const override; + bool CanWrite() const override; + + int GetReadFileDescriptor() const override; + int GetWriteFileDescriptor() const override; + int ReleaseReadFileDescriptor() override; + int ReleaseWriteFileDescriptor() override; + void CloseReadFileDescriptor() override; + void CloseWriteFileDescriptor() override; + + void Close() override; + + Error Delete(llvm::StringRef name) override; + + Error Write(const void *buf, size_t size, size_t &bytes_written) override; + Error ReadWithTimeout(void *buf, size_t size, const std::chrono::microseconds &timeout, size_t &bytes_read) override; + + // PipeWindows specific methods. These allow access to the underlying OS handle. + HANDLE GetReadNativeHandle(); + HANDLE GetWriteNativeHandle(); + + private: + Error OpenNamedPipe(llvm::StringRef name, bool child_process_inherit, bool is_read); + + HANDLE m_read; + HANDLE m_write; + + int m_read_fd; + int m_write_fd; + + OVERLAPPED m_read_overlapped; + OVERLAPPED m_write_overlapped; +}; + +} // namespace lldb_private + +#endif // liblldb_Host_posix_PipePosix_h_ diff --git a/include/lldb/Host/windows/ProcessLauncherWindows.h b/include/lldb/Host/windows/ProcessLauncherWindows.h new file mode 100644 index 000000000000..a2fe665dcfaf --- /dev/null +++ b/include/lldb/Host/windows/ProcessLauncherWindows.h @@ -0,0 +1,31 @@ +//===-- ProcessLauncherWindows.h --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_windows_ProcessLauncherWindows_h_ +#define lldb_Host_windows_ProcessLauncherWindows_h_ + +#include "lldb/Host/ProcessLauncher.h" +#include "lldb/Host/windows/windows.h" + +namespace lldb_private +{ + +class ProcessLaunchInfo; + +class ProcessLauncherWindows : public ProcessLauncher +{ + public: + virtual HostProcess LaunchProcess(const ProcessLaunchInfo &launch_info, Error &error); + + protected: + HANDLE GetStdioHandle(const ProcessLaunchInfo &launch_info, int fd); +}; +} + +#endif diff --git a/include/lldb/Host/windows/editlinewin.h b/include/lldb/Host/windows/editlinewin.h new file mode 100644 index 000000000000..907ef373a372 --- /dev/null +++ b/include/lldb/Host/windows/editlinewin.h @@ -0,0 +1,123 @@ +//===-- ELWrapper.h ---------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#pragma once + +#include <stdio.h> + +// EditLine editor function return codes. +// For user-defined function interface +#define CC_NORM 0 +#define CC_NEWLINE 1 +#define CC_EOF 2 +#define CC_ARGHACK 3 +#define CC_REFRESH 4 +#define CC_CURSOR 5 +#define CC_ERROR 6 +#define CC_FATAL 7 +#define CC_REDISPLAY 8 +#define CC_REFRESH_BEEP 9 + +// el_set/el_get parameters +#define EL_PROMPT 0 // , el_pfunc_t +#define EL_TERMINAL 1 // , const char * +#define EL_EDITOR 2 // , const char * +#define EL_SIGNAL 3 // , int); +#define EL_BIND 4 // , const char *, ..., NULL +#define EL_TELLTC 5 // , const char *, ..., NULL +#define EL_SETTC 6 // , const char *, ..., NULL +#define EL_ECHOTC 7 // , const char *, ..., NULL +#define EL_SETTY 8 // , const char *, ..., NULL +#define EL_ADDFN 9 // , const char *, const char *, el_func_t +#define EL_HIST 10 // , hist_fun_t, const char * +#define EL_EDITMODE 11 // , int +#define EL_RPROMPT 12 // , el_pfunc_t +#define EL_GETCFN 13 // , el_rfunc_t +#define EL_CLIENTDATA 14 // , void * +#define EL_UNBUFFERED 15 // , int +#define EL_PREP_TERM 16 // , int +#define EL_GETTC 17 // , const char *, ..., NULL +#define EL_GETFP 18 // , int, FILE ** +#define EL_SETFP 19 // , int, FILE * +#define EL_REFRESH 20 // , void +#define EL_PROMPT_ESC 21 // , prompt_func, Char); set/get + +#define EL_BUILTIN_GETCFN (NULL) + +// history defines +#define H_FUNC 0 // , UTSL +#define H_SETSIZE 1 // , const int +#define H_GETSIZE 2 // , void +#define H_FIRST 3 // , void +#define H_LAST 4 // , void +#define H_PREV 5 // , void +#define H_NEXT 6 // , void +#define H_CURR 8 // , const int +#define H_SET 7 // , int +#define H_ADD 9 // , const char * +#define H_ENTER 10 // , const char * +#define H_APPEND 11 // , const char * +#define H_END 12 // , void +#define H_NEXT_STR 13 // , const char * +#define H_PREV_STR 14 // , const char * +#define H_NEXT_EVENT 15 // , const int +#define H_PREV_EVENT 16 // , const int +#define H_LOAD 17 // , const char * +#define H_SAVE 18 // , const char * +#define H_CLEAR 19 // , void +#define H_SETUNIQUE 20 // , int +#define H_GETUNIQUE 21 // , void +#define H_DEL 22 // , int + +struct EditLine +{ +}; + +struct LineInfo +{ + const char *buffer; + const char *cursor; + const char *lastchar; +}; + +struct History +{ +}; + +struct HistEvent +{ + int num; + const char *str; +}; + +extern "C" +{ + // edit line API + EditLine *el_init ( const char *, FILE *, FILE *, FILE * ); + const char *el_gets ( EditLine *, int * ); + int el_set ( EditLine *, int, ... ); + + void el_end ( EditLine * ); + void el_reset ( EditLine * ); + int el_getc ( EditLine *, char * ); + void el_push ( EditLine *, const char * ); + void el_beep ( EditLine * ); + int el_parse ( EditLine *, int, const char ** ); + int el_get ( EditLine *, int, ... ); + int el_source ( EditLine *, const char * ); + void el_resize ( EditLine * ); + const LineInfo *el_line ( EditLine * ); + int el_insertstr( EditLine *, const char * ); + void el_deletestr( EditLine *, int ); + + // history API + History *history_init( void ); + void history_end ( History * ); + int history ( History *, HistEvent *, int, ... ); +};
\ No newline at end of file diff --git a/include/lldb/Host/windows/win32.h b/include/lldb/Host/windows/win32.h new file mode 100644 index 000000000000..2789a4b84f07 --- /dev/null +++ b/include/lldb/Host/windows/win32.h @@ -0,0 +1,107 @@ +//===-- lldb-win32.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_lldb_win32_h_ +#define LLDB_lldb_win32_h_ + +#include <stdarg.h> +#include <time.h> + +// posix utilities +int vasprintf(char **ret, const char *fmt, va_list ap); +char * strcasestr(const char *s, const char* find); +char* realpath(const char * name, char * resolved); + +#ifndef PATH_MAX +#define PATH_MAX 32768 +#endif + +#define O_NOCTTY 0 +#define O_NONBLOCK 0 +#define SIGTRAP 5 +#define SIGKILL 9 +#define SIGSTOP 20 + +#if defined(_MSC_VER) +# define S_IRUSR S_IREAD /* read, user */ +# define S_IWUSR S_IWRITE /* write, user */ +# define S_IXUSR 0 /* execute, user */ +#endif +#define S_IRGRP 0 /* read, group */ +#define S_IWGRP 0 /* write, group */ +#define S_IXGRP 0 /* execute, group */ +#define S_IROTH 0 /* read, others */ +#define S_IWOTH 0 /* write, others */ +#define S_IXOTH 0 /* execute, others */ +#define S_IRWXU 0 +#define S_IRWXG 0 +#define S_IRWXO 0 + +#ifdef _MSC_VER + +#include <inttypes.h> +#include <stdint.h> +#include <io.h> +typedef unsigned short mode_t; + +#ifdef LLDB_DISABLE_PYTHON +typedef uint32_t pid_t; +#endif // LLDB_DISABLE_PYTHON + +int usleep(uint32_t useconds); + +char* getcwd(char* path, int max); +int chdir(const char* path); +char* basename(char *path); +char *dirname(char *path); + +int strcasecmp(const char* s1, const char* s2); +int strncasecmp(const char* s1, const char* s2, size_t n); + +#if _MSC_VER < 1900 +namespace lldb_private { +int vsnprintf(char *buffer, size_t count, const char *format, va_list argptr); +} + +// inline to avoid linkage conflicts +int inline snprintf(char *buffer, size_t count, const char *format, ...) +{ + va_list argptr; + va_start(argptr, format); + int r = lldb_private::vsnprintf(buffer, count, format, argptr); + va_end(argptr); + return r; +} +#endif + +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + +#define __PRETTY_FUNCTION__ __FUNCSIG__ + +#define S_IFDIR _S_IFDIR +#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) + +#endif // _MSC_VER + +// timespec +// MSVC 2015 and higher have timespec. Otherwise we need to define it ourselves. +#if defined(_MSC_VER) && _MSC_VER >= 1900 +#include <time.h> +#else +struct timespec +{ + time_t tv_sec; + long tv_nsec; +}; +#endif + + +#endif // LLDB_lldb_win32_h_ diff --git a/include/lldb/Host/windows/windows.h b/include/lldb/Host/windows/windows.h new file mode 100644 index 000000000000..124e8de1dc90 --- /dev/null +++ b/include/lldb/Host/windows/windows.h @@ -0,0 +1,29 @@ +//===-- lldb-windows.h ------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_lldb_windows_h_ +#define LLDB_lldb_windows_h_ + +#define NTDDI_VERSION NTDDI_VISTA +#define _WIN32_WINNT _WIN32_WINNT_VISTA +#define WIN32_LEAN_AND_MEAN +#define NOGDI +#define NOMINMAX +#include <windows.h> +#undef GetUserName +#undef LoadImage +#undef CreateProcess +#undef far +#undef near +#undef FAR +#undef NEAR +#define FAR +#define NEAR + +#endif // LLDB_lldb_windows_h_ diff --git a/include/lldb/Makefile b/include/lldb/Makefile new file mode 100644 index 000000000000..6066298fce4a --- /dev/null +++ b/include/lldb/Makefile @@ -0,0 +1,31 @@ +LEVEL = ../../../.. +DIRS := + +include $(LEVEL)/Makefile.common + +install-local:: + $(Echo) Installing LLDB include files + $(Verb) $(MKDIR) $(DESTDIR)$(PROJ_includedir) + $(Verb) if test -d "$(PROJ_SRC_ROOT)/tools/lldb/include/lldb" ; then \ + cd $(PROJ_SRC_ROOT)/tools/lldb/include && \ + for hdr in `find lldb -type f '!' '(' -name '*~' \ + -o -name '.#*' -o -name '*.in' -o -name '*.txt' \ + -o -name 'Makefile' -o -name '*.td' -o -name '*.orig' ')' -print \ + | grep -v CVS | grep -v .svn | grep -v .dir` ; do \ + instdir=$(DESTDIR)`dirname "$(PROJ_includedir)/$$hdr"` ; \ + if test \! -d "$$instdir" ; then \ + $(EchoCmd) Making install directory $$instdir ; \ + $(MKDIR) $$instdir ;\ + fi ; \ + $(DataInstall) $$hdr $(DESTDIR)$(PROJ_includedir)/$$hdr ; \ + done ; \ + fi +ifneq ($(PROJ_SRC_ROOT),$(PROJ_OBJ_ROOT)) + $(Verb) if test -d "$(PROJ_OBJ_ROOT)/tools/lldb/include/lldb" ; then \ + cd $(PROJ_OBJ_ROOT)/tools/lldb/include && \ + for hdr in `find lldb -type f '!' '(' -name 'Makefile' ')' -print \ + | grep -v CVS | grep -v .tmp | grep -v .dir` ; do \ + $(DataInstall) $$hdr $(DESTDIR)$(PROJ_includedir)/$$hdr ; \ + done ; \ + fi +endif |