amccarth added a subscriber: amccarth.
amccarth added a comment.

I'm not a CMake expert, so I haven't really reviewed those bits.

================
Comment at: cmake/modules/LLDBConfig.cmake:253
@@ -250,2 +252,3 @@
+    else()
        add_definitions( /D _UNICODE /D UNICODE )
 endif()
----------------
Can you check the indentation here?  It looks wrong in the diff.

================
Comment at: cmake/modules/LLDBConfig.cmake:399
@@ +398,3 @@
+        # It seems that lldb-server is required for Windows/MINGW, I am not 
sure why
+        # So we allows it to built
+        set(LLDB_CAN_USE_LLDB_SERVER 1)
----------------
typos:  `allow` `build`

================
Comment at: include/lldb/Host/windows/win32.h:96
@@ -95,3 +95,3 @@
 // MSVC 2015 and higher have timespec.  Otherwise we need to define it 
ourselves.
-#if defined(_MSC_VER) && _MSC_VER >= 1900
+#if (defined(_MSC_VER) && (_MSC_VER >= 1900)) || defined(__MINGW32__)
 #include <time.h>
----------------
zturner wrote:
> This might be cleaner to say `#if defined(_MSC_VER) && _MSC_VER < 1900` then 
> define it ourselves, otherwise `#include <time.h>`.    This way you don't 
> need to `define(__MINGW32__)`
This could be simplified by turning it around:

    #if defined(_MSC_VER) && (_MSC_VER < 1900)
    struct timespec ...
    #else
    #include <time.h>
    #endif

That would keep the comment completely consistent with the code.

================
Comment at: source/Host/windows/FileSystem.cpp:268
@@ +267,3 @@
+#else
+    file = fopen(path, mode);
+#endif
----------------
This code just went through the trouble of converting the path from UTF-8 to a 
wide string.  If you can't use `_wfopen_s`, it seems you should skip more of 
this function.  (I'm also surprised you didn't have to make a similar change in 
more places.)

================
Comment at: source/Host/windows/ProcessRunLock.cpp:4
@@ +3,3 @@
+#ifdef __MINGW32__
+#define _WIN32_WINNT 0x0600
+#include <synchapi.h>
----------------
This is probably something we need to define in the environment so that it's 
applied consistently throughout.

================
Comment at: source/Plugins/ObjectFile/PECOFF/WindowsMiniDump.cpp:30
@@ -29,3 +29,3 @@
     if (!process_sp) return false;
-#ifdef _WIN32
+#if defined(WIN32) && !defined(__MINGW32__)
     HANDLE process_handle = ::OpenProcess(PROCESS_QUERY_INFORMATION | 
PROCESS_VM_READ, FALSE, process_sp->GetID());
----------------
zturner wrote:
> Three things here.
> 
>   # `_WIN32` got changed to `WIN32`.  Was this intentional or accidental?
>   # The given conditional appears to be equivalent to `#if defined(_MSC_VER)` 
> which is simpler to understand.
>   # Why disable this for MinGW builds?  Other native Win32 APIs are 
> available, is this one not?
What the goal of skipping this here?  As far as I can see, this is just calling 
Win32 APIs, so I'd expect those to be available regardless of which compiler 
you're using.

================
Comment at: source/Plugins/Process/Windows/Common/ProcessWindowsLog.h:107
@@ -95,1 +106,3 @@
+#define WINWARN_IFALL(Flags, ...) 
+#endif
 
----------------
This will silently break logging on Windows.  Why is this necessary?

================
Comment at: source/Utility/PseudoTerminal.cpp:23
@@ -22,2 +22,3 @@
 #include "lldb/Host/windows/win32.h"
+#ifndef __MINGW32__
 typedef uint32_t pid_t;
----------------
zturner wrote:
> Change to `#if defined(_MSC_VER)`.  In practice they're equivalent but in 
> theory saying "one single compiler" is narrower than saying "every compiler 
> except X"
What we're really worried about here is which language runtime library we're 
using, because the Microsoft one doesn't define non-standard types like 
`pid_t`.  So this should probably be:

    #ifdef _MSC_VER



================
Comment at: tools/driver/Driver.cpp:1302
@@ -1301,3 +1301,3 @@
 int
-#ifdef WIN32
+#if defined(WIN32) && !defined(__MINGW32__)
 wmain(int argc, wchar_t const *wargv[])
----------------
zturner wrote:
> Should change this to `#if defined(_MSC_VER)`.  Also if you don't need the 
> `wchar_t` version of `main()`, then is the CMake change that adds `-D_UNICODE 
> -DUNICODE` also necessary?  Or maybe that can be removed?
We probably should get rid of wmain and just have main everywhere.  Then, in 
the WinAPI-specific code below, we could use `GetCommandLineW` to get the 
command line and convert them into UTF-8.

================
Comment at: tools/driver/Driver.cpp:1314
@@ -1313,3 +1313,3 @@
 
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(__MINGW32__)
         // Convert wide arguments to UTF-8
----------------
zturner wrote:
> `#if defined(_MSC_VER)`
If we get rid of `wmain` above and make this block fetch the wide command line 
directly, then this code could be the same on Windows, regardless of the 
compiler, eliminating the need to make this #if more complex.

================
Comment at: tools/lldb-server/lldb-platform.cpp:418
@@ -416,1 +417,2 @@
 }
+#endif // WIN32
----------------
Comment lost the underscore:  `_WIN32`


http://reviews.llvm.org/D18519



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to