summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-01-06 20:12:03 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-01-06 20:12:03 +0000
commit9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc (patch)
treedd2a1ddf0476664c2b823409c36cbccd52662ca7 /include
parent3bd2e91faeb9eeec1aae82c64a3253afff551cfd (diff)
downloadsrc-test2-9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc.tar.gz
src-test2-9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc.zip
Notes
Diffstat (limited to 'include')
-rw-r--r--include/Makefile13
-rw-r--r--include/lldb/Core/StringList.h24
-rw-r--r--include/lldb/Host/android/Android.h31
-rw-r--r--include/lldb/Host/android/Config.h28
-rw-r--r--include/lldb/Host/android/HostInfoAndroid.h33
-rw-r--r--include/lldb/Host/android/ProcessLauncherAndroid.h26
-rw-r--r--include/lldb/Host/linux/AbstractSocket.h28
-rw-r--r--include/lldb/Host/linux/Config.h28
-rw-r--r--include/lldb/Host/linux/HostInfoLinux.h50
-rw-r--r--include/lldb/Host/linux/HostThreadLinux.h32
-rw-r--r--include/lldb/Host/linux/Personality.h25
-rw-r--r--include/lldb/Host/linux/Ptrace.h66
-rw-r--r--include/lldb/Host/linux/Signalfd.h54
-rw-r--r--include/lldb/Host/linux/Uio.h23
-rw-r--r--include/lldb/Host/macosx/Config.h28
-rw-r--r--include/lldb/Host/macosx/HostInfoMacOSX.h47
-rw-r--r--include/lldb/Host/macosx/HostThreadMacOSX.h31
-rw-r--r--include/lldb/Host/mingw/Config.h30
-rw-r--r--include/lldb/Host/msvc/Config.h37
-rw-r--r--include/lldb/Host/windows/AutoHandle.h40
-rw-r--r--include/lldb/Host/windows/ConnectionGenericFileWindows.h68
-rw-r--r--include/lldb/Host/windows/HostInfoWindows.h46
-rw-r--r--include/lldb/Host/windows/HostProcessWindows.h47
-rw-r--r--include/lldb/Host/windows/HostThreadWindows.h42
-rw-r--r--include/lldb/Host/windows/LockFileWindows.h49
-rw-r--r--include/lldb/Host/windows/PipeWindows.h74
-rw-r--r--include/lldb/Host/windows/ProcessLauncherWindows.h31
-rw-r--r--include/lldb/Host/windows/editlinewin.h123
-rw-r--r--include/lldb/Host/windows/win32.h107
-rw-r--r--include/lldb/Host/windows/windows.h29
-rw-r--r--include/lldb/Makefile31
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