[lldb-dev] LLDB /w Windows and MinGW64

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Mon Mar 28 08:56:47 PDT 2016


Patches welcome. If you can split it into independent pieces that would be
helpful, but it's not always possible.

The NativeProcessProtocol error, that's the interface that converts
debugging events that occur on the inferior into packets that can be sent
to the server, and vice versa. Since Windows doesn't currently use lldb
server, this piece has never been written for Windows
On Mon, Mar 28, 2016 at 8:41 AM Eran Ifrah <eran.ifrah at gmail.com> wrote:

> On Mon, Mar 28, 2016 at 6:10 PM, Zachary Turner <zturner at google.com>
> wrote:
>
>> I'm the main Windows maintainer,
>
> Hi
>>
>
>> and while We've gotten things working pretty well on Windows, our effort
>> has been 100% on building with msvc and/or clang-cl. Building with mingw
>> has a different set of pre processor defines and some other subtle
>> differences, so it doesn't surprise me that things don't work quite right.
>>
>> ​I got it to compile (I have a big patch that I can send you if you are
> interested)
> mainly involves blocking code under __MINGW32__ and some updates to the
> various CMakeLists.txt and AddLLDB.cmake module files
> Some functions are missing in MinGW implementations (like gets_s and
> others :/)
>>
>
>> You can try getting lldb-server to build and run under Windows, or you
>> can try to get it to use the non lldb server codepath on MinGW, but you may
>> still run into some
>
> ​I got lldb-server to compile and run on Windows, however, it crashes
> immediately and the backtrace shows this:
>
> 0  0x0000000000724615
>  lldb_private::NativeProcessProtocol::Launch(lldb_private::ProcessLaunchInfo&,
> lldb_private::NativeProcessProtocol::NativeDelegate&,
> lldb_private::MainLoopBase&,
> std::shared_ptr<lldb_private::NativeProcessProtocol>&)
> 1  0x00000000005f815d
>  lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::LaunchProcess()
>
> 2  0x00000000004020e5
>  handle_launch(lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS&,
> int, char const* const*)
> 3  0x000000000040335e  main_gdbserver(int, char**)
> 4  0x000000000188329c  main
>
>
> I had to #ifndef __MINGW32__ around lldb-platform.cpp as it contains too
> much Linux code that can not be compiled under Windows (fork, exec*)
> and basically lldb-server calls the main_gdbserver instead of
> main_platform function
>
> ​Looking at the function that crashes, I see this:
>
> llvm_unreachable("Platform has no NativeProcessProtocol support");
>
> Any ideas?
> Thanks!
>
> issues after that as well, since you're the first person afaik to try
>> building with MinGW
>>
>
>
>> On Sun, Mar 27, 2016 at 10:29 PM Eran Ifrah via lldb-dev <
>> lldb-dev at lists.llvm.org> wrote:
>>
>>> Hi,
>>>
>>> I have built LLDB on Windows 7 using MinGW64/4.9.2 (took some effort to
>>> get the job done...)
>>> When I tried to debug a simple hello world executable, I get this output:
>>>
>>> D:\software\msys-for-clang\1.0\home\PC\build-release-64-lldb\bin>lldb.exe
>>> HelloWorld.exe
>>> (lldb) target create "HelloWorld.exe"
>>> Current executable set to 'HelloWorld.exe' (x86_64).
>>> (lldb) b main.cpp:7
>>> Breakpoint 1: where = HelloWorld.exe`main + 26 at main.cpp:7, address =
>>> 0x000000000040154a
>>> (lldb) r
>>> error: process launch failed: unable to locate lldb-server
>>> (lldb)
>>>
>>> I can't seem to locate lldb-server anywhere, and according
>>> to LLDBConfig.cmake, this target should not get built on Windows:
>>>
>>> # Figure out if lldb could use lldb-server.  If so, then we'll
>>> # ensure we build lldb-server when an lldb target is being built.
>>> if ((CMAKE_SYSTEM_NAME MATCHES "Darwin") OR
>>>     (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") OR
>>>     (CMAKE_SYSTEM_NAME MATCHES "Linux") OR
>>>     (CMAKE_SYSTEM_NAME MATCHES "NetBSD"))
>>>     set(LLDB_CAN_USE_LLDB_SERVER 1)
>>> else()
>>>     set(LLDB_CAN_USE_LLDB_SERVER 0)
>>> endif()
>>>
>>> and in the tools/CMakeLists.txt file we have this:
>>>
>>> if (LLDB_CAN_USE_LLDB_SERVER)
>>>   add_subdirectory(lldb-server)
>>> endif()
>>>
>>>
>>> Any ideas?
>>>
>>> Thanks,
>>>
>>> --
>>> Eran Ifrah,
>>> Author of
>>> ​CodeLite
>>> , a cross platform open source C/C++ IDE: http://www.codelite.org
>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>>
>>
>
>
> --
> Eran Ifrah,
> Author of codelite, a cross platform open source C/C++ IDE:
> http://www.codelite.org
> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160328/dd5b277d/attachment-0001.html>


More information about the lldb-dev mailing list