[lldb-dev] LLDB /w Windows and MinGW64

Eran Ifrah via lldb-dev lldb-dev at lists.llvm.org
Mon Mar 28 12:13:45 PDT 2016


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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160328/db87858c/attachment-0001.html>


More information about the lldb-dev mailing list