[lldb-dev] LLDB /w Windows and MinGW64

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Thu Mar 31 20:31:56 PDT 2016


I will have another look tomorrow.

On Thu, Mar 31, 2016 at 11:56 AM Eran Ifrah <eran.ifrah at gmail.com> wrote:

> Ping...
>
> On Mon, Mar 28, 2016 at 10:19 PM, Eran Ifrah <eran.ifrah at gmail.com> wrote:
>
>> Sorry, the current status is that lldb-server is no longer needed,
>> however the debuggee process hangs and the lldb.exe is "froze" (i.e. it
>> does not accept user input)
>>
>> Here is the backtrace: http://pastebin.com/mbLFgCA6
>> I will try and get lldb built in debug mode for better debugging... but
>> this will take sometime as the generated files are too large to written to
>> the file system - (clang sources)
>>
>> I will teak the CMakeLists.txt files to fix this and will report back
>> In the meantime, if you have any more hints/tips - I will be happy to try
>> them here
>>
>>
>> Thanks
>>
>>
>>
>> On Mon, Mar 28, 2016 at 10:13 PM, Eran Ifrah <eran.ifrah at gmail.com>
>> wrote:
>>
>>> I was able to locate the problematic
>>> code: ProcessWindowsLive::Initialize() was not called due to wrong macros
>>> http://reviews.llvm.org/D18520
>>>
>>>
>>> On Mon, Mar 28, 2016 at 9:31 PM, Eran Ifrah <eran.ifrah at gmail.com>
>>> wrote:
>>>
>>>> Done.
>>>>
>>>> http://reviews.llvm.org/D18519
>>>>
>>>>
>>>> On Mon, Mar 28, 2016 at 9:28 PM, Zachary Turner <zturner at google.com>
>>>> wrote:
>>>>
>>>>> Almost, there's one more step.  Click Create a New Revision on that
>>>>> screen, then give it a title and a description.  For reviewers put zturner,
>>>>> and for subscribers put lldb-commits
>>>>>
>>>>> On Mon, Mar 28, 2016 at 11:20 AM Eran Ifrah <eran.ifrah at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Is this what you meant:
>>>>>> http://reviews.llvm.org/differential/diff/51809/
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> On Mon, Mar 28, 2016 at 8:58 PM, Zachary Turner <zturner at google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> For the patch, can you create an account on reviews.llvm.org, and
>>>>>>> upload your patch there?  This makes interactive reviewing / commenting
>>>>>>> much easier.  Let me know if you need help getting that set up.
>>>>>>>
>>>>>>> On Mon, Mar 28, 2016 at 10:58 AM Zachary Turner <zturner at google.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> If you compile with MSVC or Clang-cl it wouldn't ask for
>>>>>>>> lldb-server.  So most likely there is some code that is using #if
>>>>>>>> defined(_MSC_VER) when it should be using #if defined(LLVM_ON_WINDOWS).
>>>>>>>>
>>>>>>>> You'll have to hunt that down, but a good starting point might be
>>>>>>>> to put a breakpoint in ProcessWindowsLive::CreateInstance and then work
>>>>>>>> backwards to see why that isn't getting called (assuming it's not).
>>>>>>>>
>>>>>>>> On Mon, Mar 28, 2016 at 9:05 AM Eran Ifrah <eran.ifrah at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> On Mon, Mar 28, 2016 at 6:56 PM, Zachary Turner <
>>>>>>>>> zturner at google.com> wrote:
>>>>>>>>>
>>>>>>>>>> Patches welcome. If you can split it into independent pieces that
>>>>>>>>>> would be helpful, but it's not always possible.
>>>>>>>>>>
>>>>>>>>>> Patch is attached, I think you will find it quite straight
>>>>>>>>> forward - feel free to comment and send it back for revise
>>>>>>>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>> ​So this raises the question: how come lldb asks for it? (see my
>>>>>>>>> first emai inl this conversation)
>>>>>>>>> I would have build LLDB in debug mode, but it seems that MinGW
>>>>>>>>> as.exe fails to write some of the files "File too big"
>>>>>>>>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 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/
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Eran Ifrah,
>>>>>>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>>>>>>> http://www.codelite.org
>>>>>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Eran Ifrah,
>>>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>>>> http://www.codelite.org
>>>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Eran Ifrah,
>>>> Author of codelite, a cross platform open source C/C++ IDE:
>>>> http://www.codelite.org
>>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>>
>>>
>>>
>>>
>>> --
>>> Eran Ifrah,
>>> Author of codelite, a cross platform open source C/C++ IDE:
>>> http://www.codelite.org
>>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>>
>>
>>
>>
>> --
>> Eran Ifrah,
>> Author of codelite, a cross platform open source C/C++ IDE:
>> http://www.codelite.org
>> CodeLite IDE Blog: http://codeliteide.blogspot.com/
>>
>
>
>
> --
> 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/20160401/141dcd65/attachment-0001.html>


More information about the lldb-dev mailing list