[Lldb-commits] [PATCH] D18519: Allow building LLDB on Windows with MinGW 64/4.9.2 and later
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 4 02:24:02 PDT 2016
labath added a comment.
In http://reviews.llvm.org/D18519#390337, @eran.ifrah wrote:
> Spoke too soon, the hack into `CMakeLists.txt` is still needed
> Passing ` -mbig-obj` crashes `ld.exe` (although it crashes in a much later stage, at about 77% in the build)
Clang only puts /bigobj on a couple of files, which are known to produce extremely large object files. Would that help you get past the linker error by any chance?
================
Comment at: source/API/CMakeLists.txt:74-85
@@ -73,6 +73,14 @@
# want every single library taking a dependency on the script interpreters.
-target_link_libraries(liblldb PRIVATE
- lldbPluginScriptInterpreterNone
- lldbPluginScriptInterpreterPython
- )
+if(MINGW)
+ target_link_libraries(liblldb PRIVATE
+ lldbPluginScriptInterpreterNone
+ lldbPluginScriptInterpreterPython
+ Dbghelp # Needed for MiniDumpWriteDump
+ )
+else()
+ target_link_libraries(liblldb PRIVATE
+ lldbPluginScriptInterpreterNone
+ lldbPluginScriptInterpreterPython
+ )
+endif()
----------------
I think you should add this library to `system_libs` in LLDBConfig.cmake. Then it should get linked in automatically.
================
Comment at: source/Plugins/Process/Windows/Live/DebuggerThread.cpp:380-383
@@ -379,5 +379,6 @@
{
+ DWORD dwPidToDetach = m_pid_to_detach;
WINLOG_IFANY(WINDOWS_LOG_EVENT | WINDOWS_LOG_EXCEPTION | WINDOWS_LOG_PROCESS,
"Breakpoint exception is cue to detach from process 0x%x",
- m_pid_to_detach);
+ dwPidToDetach);
::DebugActiveProcessStop(m_pid_to_detach);
----------------
zturner: The point here is that m_pid_to_detach is an std::atomic, and you shouldn't be passing those through `...` (I am not sure how it even worked in the first place).
An alternative would be putting `m_pid_to_detach.load()` here...
================
Comment at: tools/argdumper/CMakeLists.txt:6-8
@@ +5,5 @@
+if(MINGW)
+ # link directly against the dll file
+ add_dependencies(lldb-argdumper liblldb)
+ target_link_libraries(lldb-argdumper -L"${CMAKE_BINARY_DIR}/bin" -llldb)
+else()
----------------
It's a hack, but I think I know why you need it... there are issues with multiply defined symbols in lldb on windows, so I guess mingw is just more sensitive to them...
http://reviews.llvm.org/D18519
More information about the lldb-commits
mailing list