On Mon, Mar 28, 2016 at 6:56 PM, Zachary Turner <ztur...@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.if...@gmail.com> wrote: > >> On Mon, Mar 28, 2016 at 6:10 PM, Zachary Turner <ztur...@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@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@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/
lldb-mingw.patch
Description: Binary data
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev