labath added a comment.

The patch is pretty big, so I haven't done an in-depth review yet. The fact 
that you've ran clang-format over entire files (and not just the diffs) does 
not help.

For a start, I've highlighted the parts that I believe can/should go into a 
separate patch. Some of them are obvious and can be committed immediately. 
Others should go through a separate review. We can get back to the core of the 
patch once these have been dealt with (FWIW, I haven't seen anything obviously 
wrong from a quick glance).



================
Comment at: include/lldb/Core/Debugger.h:338
   }
+  bool StartEventHandlerThread();
 
----------------
This looks like experimental code accidentally left in (?)


================
Comment at: include/lldb/Target/Platform.h:599
     error.SetErrorStringWithFormat(
-        "Platform::ReadFile() is not supported in the %s platform",
+        "Platform::WriteFile() is not supported in the %s platform",
         GetName().GetCString());
----------------
To keep the scope of this patch (which is already pretty big) as small as 
possible, could you submit this as a separate patch? No review needed.


================
Comment at: include/lldb/lldb-types.h:42-45
+typedef void *process_t;                          // Process type is HANDLE
+typedef void *thread_t;                           // Host thread type
+typedef void *file_t;                             // Host file type
+typedef unsigned int __w64 socket_t;              // Host socket type
----------------
Please revert or submit as a separate patch.


================
Comment at: lldb.xcodeproj/project.pbxproj:10522
                                        "-lxml2",
+                                       "-lLLVMSupport",
                                        "-framework",
----------------
I am surpised that you needed to change the xcode project in any way, as this 
code should not even build there. Please explain.


================
Comment at: 
packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteRegisterState.py:28
+
+        # Skip O* packet test for Windows. Will add it back when pty is 
supported.
+        triple = self.dbg.GetSelectedPlatform().GetTriple()
----------------
The fact that you were able to do this told me that this part of the test is 
actually irrelevant. So, I just went ahead and deleted this part altogether 
(r357451).


================
Comment at: 
packages/Python/lldbsuite/test/tools/lldb-server/TestGdbRemoteThreadsInStopReply.py:208-211
+    # In current implementation of llgs on Windows, as a response to '\x03' 
packet, the debugger
+    # of the native process will trigger a call to DebugBreakProcess that will 
create a new thread
+    # to handle the exception debug event. So one more stop thread will be 
notified to the
+    # delegate, e.g. llgs.  So tests below to assert the stop threads number 
will all fail.
----------------
That sounds fun. Is that how things are supposed to work, or is that something 
you're planning to change/fix? (mostly just curious).


================
Comment at: 
packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py:674-675
 
+    #@expectedFailureAll(oslist=["windows"])
+    #skipIfWindows
     @llgs_test
----------------
delete ?


================
Comment at: 
packages/Python/lldbsuite/test/tools/lldb-server/TestLldbGdbServer.py:1494
         threads = self.wait_for_thread_count(3, timeout_seconds=5)
-        self.assertEqual(len(threads), 3)
+        self.assertEqual(len(threads) - 1, 3)
 
----------------
The -1 looks like it needs to be windows-only.


================
Comment at: 
packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py:434
         attempts = 0
-        MAX_ATTEMPTS = 20
+        MAX_ATTEMPTS = 1
 
----------------
I don't think this can go in like this. However, I agree that this double-retry 
loop is pretty ugly. When I get some time, I'll try to see if I can rewrite 
this part to use reverse connects. That way we won't get any races at all. For 
the time being, I'd just revert this.


================
Comment at: packages/Python/lldbsuite/test/tools/lldb-server/main.cpp:1
 //===-- main.cpp ------------------------------------------------*- C++ 
-*-===//
 //
----------------
Could you (as a separate patch) convert this file to use c++ threads? That 
should allow us to cut down on the ifdefs by using standard std::thread and 
std::mutex.


================
Comment at: source/Host/common/Socket.cpp:89-104
+    socket_up = llvm::make_unique<TCPSocket>(true, child_processes_inherit);
     break;
   case ProtocolUdp:
-    socket_up =
-        llvm::make_unique<UDPSocket>(true, child_processes_inherit);
+    socket_up = llvm::make_unique<UDPSocket>(true, child_processes_inherit);
     break;
   case ProtocolUnixDomain:
 #ifndef LLDB_DISABLE_POSIX
----------------
Please avoid spurious reformats of entire files. This makes it patches hard to 
review, particularly when they are as large as this one.

For the changes in this specific file, I think you can just commit them as a 
separate patch. Or revert the file completely, as the only thing you seem to be 
doing is adding logging.


================
Comment at: source/Host/common/SocketAddress.cpp:268
+#endif
+    printf("SocketAddress::GetAddressInfo - %s\n", error.AsCString());
   }
----------------
labath wrote:
> Writing to stdout like this is very rude. If there isn't a suitable way to 
> return this info, then I suggest writing this to the log instead.
This comment still stands.


================
Comment at: source/Host/windows/HostInfoWindows.cpp:98
 
+  s.clear();
   return llvm::convertWideToUTF8(buffer, s);
----------------
Move this into a separate patch, add a unit test checking that string is 
cleared when this function is called.


================
Comment at: source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h:294
+
+  lldb_private::UUID m_uuid;
 };
----------------
Move UUID handling into a separate patch.


================
Comment at: source/Plugins/Process/Utility/RegisterContextWindows_x64.cpp:103
+}
+#include <iostream>
+static const RegisterInfo *GetRegisterInfoPtr(const ArchSpec &target_arch) {
----------------
`<iostream>` is banned in llvm. (and it looks like you're not using it anyway).


================
Comment at: source/Plugins/Process/Utility/RegisterContextWindows_x64.h:33
+  uint32_t m_user_register_count;
+  std::vector<lldb_private::RegisterInfo> d_register_infos;
+};
----------------
`d_` ?


================
Comment at: source/Plugins/Process/Windows/Common/NativeProcessWindows.cpp:64
+namespace lldb_private {
+#if 1
+class ProcessWindowsData {
----------------
delete?


================
Comment at: source/Plugins/Process/Windows/Common/NativeProcessWindows.cpp:98
+  // Python vcont_s test allows single step into a running process.
+  if (1) {//state == eStateStopped || state == eStateCrashed) {
+    LLDB_LOG(log, "process {0} is in state {1}.  Resuming...",
----------------
delete?


================
Comment at: source/Plugins/Process/Windows/Common/NativeProcessWindows.h:16
+
+#include "IDebugDelegate.h"
+#include "ProcessDebugger.h"
----------------
It looks like IDebugDelegate.h is missing from the patch.


================
Comment at: source/Plugins/Process/Windows/Common/NativeProcessWindows.h:138
+  void OnExitProcess(uint32_t exit_code) {
+    if (m_process)
+      m_process->OnExitProcess(exit_code);
----------------
It looks like `m_process` will never be null. Convert it to a reference, and 
delete all the null-checks?


================
Comment at: source/Plugins/Process/Windows/Common/ProcessDebugger.h:16
+
+#include "ForwardDecl.h"
+
----------------
File missing from patch.


================
Comment at: source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp:565-585
+        free(m_decompression_scratch);
         m_decompression_scratch = nullptr;
       }
       size_t scratchbuf_size = 0;
       if (m_compression_type == CompressionType::LZFSE)
-        scratchbuf_size = compression_decode_scratch_buffer_size 
(COMPRESSION_LZFSE);
+        scratchbuf_size =
+            compression_decode_scratch_buffer_size(COMPRESSION_LZFSE);
----------------
spurious reformats.


================
Comment at: tools/lldb-server/SystemInitializerLLGS.cpp:37-52
+#if defined(_WIN32)
+  if (g_ref_count++ == 0) {
+    // Require Windows Sockets version 2.2.
+    auto wVersion = MAKEWORD(2, 2);
+    WSADATA wsaData;
+    auto err = WSAStartup(wVersion, &wsaData);
+    if (err == 0) {
----------------
zturner wrote:
> labath wrote:
> > I think a better option here would be to move this code to something like 
> > `Socket::Initialize`. Then we could call this from 
> > `SystemInitializerCommon::Initialize`, and it would be available to 
> > everyone. This would allow us to remove the copy of this code in 
> > PlatformWindows, and replace the `WSAStartup` calls in various unittests 
> > with `Socket::Initialize()`
> Also, why do we need the `g_ref_count`?  Can't we just print an error message 
> and call exit if the version is not what we expect?
I still believe this should go to Socket::Initialize (as a separate patch).


================
Comment at: tools/lldb-server/lldb-server.cpp:38-74
 
+namespace llgs {
 static void initialize() {
   if (auto e = g_debugger_lifetime->Initialize(
           llvm::make_unique<SystemInitializerLLGS>(), nullptr))
     llvm::consumeError(std::move(e));
 }
----------------
The whole file looks good. You can commit this separately straight away. (Maybe 
add a comment somewhere that the namespace is there to avoid conflicts on 
windows. Otherwise someone in the future might get the idea to replace the 
file-local namespace with an anonymous one.)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56233/new/

https://reviews.llvm.org/D56233



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

Reply via email to