diff --git a/lldb/include/lldb/Host/windows/PosixApi.h b/lldb/include/lldb/Host/windows/PosixApi.h --- a/lldb/include/lldb/Host/windows/PosixApi.h +++ b/lldb/include/lldb/Host/windows/PosixApi.h @@ -45,6 +45,15 @@ #define S_IRWXG 0 #define S_IRWXO 0 +#ifdef __MINGW32__ +// pyconfig.h typedefs this. We require python headers to be included before +// any LLDB headers, but there's no way to prevent python's pid_t definition +// from leaking, so this is the best option. +#ifndef NO_PID_T +#include +#endif +#endif // __MINGW32__ + #ifdef _MSC_VER // PRIxxx format macros for printf() @@ -80,6 +89,8 @@ char *strcasestr(const char *s, const char *find); char *realpath(const char *name, char *resolved); +#ifdef _MSC_VER + int usleep(uint32_t useconds); char *basename(char *path); char *dirname(char *path); @@ -87,6 +98,8 @@ int strcasecmp(const char *s1, const char *s2); int strncasecmp(const char *s1, const char *s2, size_t n); +#endif // _MSC_VER + // empty functions inline int posix_openpt(int flag) { LLVM_BUILTIN_UNREACHABLE; } diff --git a/lldb/source/Host/windows/FileSystem.cpp b/lldb/source/Host/windows/FileSystem.cpp --- a/lldb/source/Host/windows/FileSystem.cpp +++ b/lldb/source/Host/windows/FileSystem.cpp @@ -12,6 +12,9 @@ #include #include +// For _SH_* +#include + #include "lldb/Host/FileSystem.h" #include "lldb/Host/windows/AutoHandle.h" #include "lldb/Host/windows/PosixApi.h" diff --git a/lldb/source/Initialization/SystemInitializerCommon.cpp b/lldb/source/Initialization/SystemInitializerCommon.cpp --- a/lldb/source/Initialization/SystemInitializerCommon.cpp +++ b/lldb/source/Initialization/SystemInitializerCommon.cpp @@ -25,6 +25,8 @@ #if defined(_WIN32) #include "Plugins/Process/Windows/Common/ProcessWindowsLog.h" #include "lldb/Host/windows/windows.h" +// for _CrtSetReportMode +#include #endif #include "llvm/Support/TargetSelect.h" diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.cpp @@ -16,6 +16,11 @@ #include #include +#ifdef __MINGW32__ +// usleep +#include +#endif + #include "llvm/Support/FileSystem.h" #include "llvm/Support/Threading.h" diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -16,6 +16,10 @@ #include #include #endif +#ifdef __MINGW32__ +// usleep +#include +#endif #include #include #include diff --git a/lldb/tools/driver/Platform.h b/lldb/tools/driver/Platform.h --- a/lldb/tools/driver/Platform.h +++ b/lldb/tools/driver/Platform.h @@ -15,6 +15,10 @@ #if defined(_MSC_VER) #include #endif +#if defined(__MINGW32__) +// pid_t +#include +#endif #include "lldb/Host/windows/windows.h" #include diff --git a/lldb/tools/lldb-vscode/VSCode.cpp b/lldb/tools/lldb-vscode/VSCode.cpp --- a/lldb/tools/lldb-vscode/VSCode.cpp +++ b/lldb/tools/lldb-vscode/VSCode.cpp @@ -16,7 +16,9 @@ #if defined(_WIN32) #define NOMINMAX +#ifndef __MINGW32__ #include +#endif // __MINGW32__ #include #include #endif diff --git a/lldb/tools/lldb-vscode/lldb-vscode.cpp b/lldb/tools/lldb-vscode/lldb-vscode.cpp --- a/lldb/tools/lldb-vscode/lldb-vscode.cpp +++ b/lldb/tools/lldb-vscode/lldb-vscode.cpp @@ -50,7 +50,9 @@ #include "VSCode.h" #if defined(_WIN32) +#ifndef PATH_MAX #define PATH_MAX MAX_PATH +#endif typedef int socklen_t; constexpr const char *dev_null_path = "nul";