[lldb-dev] LLDB /w Windows and MinGW64
Eran Ifrah via lldb-dev
lldb-dev at lists.llvm.org
Mon Mar 28 11:31:13 PDT 2016
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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160328/e141290b/attachment-0001.html>
More information about the lldb-dev
mailing list