<div dir="ltr">Quick update: I've just committed to trunk all the patches for MSVC12 (Visual Studio 2013 RC) build support.<div>It should now be possible to use cmake to generate a Visual Studio solution (.sln) and compile LLDB under both Visual Studio 2013 and MingW32. This include all LLDB libraries, not the lldb.exe driver though.</div>

<div>It's probably easy to add Visual Studio 2012 support as well (just a few changes).</div><div><br></div><div>Unsupported:</div><div>- lldb.exe driver (Deepak is working on it)</div><div>- Python support</div><div>

<br></div><div>I will now focus my work on finishing and merging lldbProcessWindows, so that LLDB can debug win32 clang/gcc executables with LLDB. My current version already work for some simple executables so hopefully it shouldn't be far away.</div>

<div>This should make LLDB usable in real scenarios/products for the Win32 LLVM/Clang toolchain.</div><div><br></div><div>Further along the road, it would also be great to support PDB (well, not even sure about legal aspect of it). It would probably be a priority only when LLVM/Clang supports the MSVC ABI (I heard there was some work in that direction), so that MSVC-compiled libraries can be used and debugged on windows.</div>

<div><br></div><div>Thanks again to all the people who helped for this integration (especially the authors of the original windows branch).</div><div><br></div><div>Virgile</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On Wed, Sep 18, 2013 at 8:18 PM, Greg Clayton <span dir="ltr"><<a href="mailto:gclayton@apple.com" target="_blank">gclayton@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im"><br>
On Sep 17, 2013, at 6:30 AM, Deepak Panickal <<a href="mailto:deepak@codeplay.com">deepak@codeplay.com</a>> wrote:<br>
<br>
> Hi,<br>
><br>
> We cannot run the test suite on Windows as we've not added native debugging on Windows. A lot of the tests compile a native executable  which will not work in Windows. One idea to go about  testing would be to add a remote target such as connecting to a remote debugserver.<br>


<br>
</div>This is what the "platform" stuff that we merged in will start to be able to do. There are going to need to be many modifications to the test suite to get it to run remotely. Most of them are making sure we involve the platform to install/upload/download files prior to running each test. Before running the remote tests a "lldb-platform" binary will need to be started on the remote system then in the test suite python code we would need to do the equivalent of:<br>


<br>
(lldb) platform select remote-linux<br>
(lldb) platform connect connect://remote.linux.box:1234<br>
<br>
Now when we run the tests, we now know we are connected to a remote system and after each test suite build we would need to:<br>
- compile in host<br>
- install executable or shared libraries on remote host prior to running the test<br>
- then run the program remotely (which should happen automagically if we are connected to a remote platform)<br>
- get any files that are produced by the test (stdout redirected files, etc) back onto the host for the test suite to handle<br>
<br>
A lot of the platform code has been started, and there is still work to be done to finish this off, but the work is _very_ worthwhile.<br>
<div class="im"><br>
> As a first focused patch, we can consider the LLDB command-line driver.  The current driver depends on libeditline, which is not available on Windows. The version we have developed contains a lot of #ifdefs, generally because editline has been integrated quite deeply into the driver.<br>


><br>
> Would it be acceptable to add #ifdefs around most of the libedit code to get it working on windows, or would refactoring more of the library into IOChannel from Driver to allow for a windows-targeted IOChannel be more ideal?<br>


> We pretty much have a version based on #ifdefs ready to go.  Refactoring would be cleaner in the long run but take more time to develop.<br>
<br>
</div>Abstracting it into a new class is the way to do. The main questions is if we try and build this into the LLDB shared library or into just the driver. Just the driver for now would suffice. Feel free to make a wrapper class for libedit as long as we don't lose any functionality that currently exists.<br>


<span class="HOEnZb"><font color="#888888"><br>
Greg<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> Thanks,<br>
> Deepak<br>
><br>
><br>
> On 16/09/2013 17:05, Thirumurthi, Ashok wrote:<br>
>> Nice to hear, Deepak,<br>
>><br>
>> Are you in a position to run the test suite on Windows?  Have you considered breaking down the work into more focused patches?<br>
>><br>
>> I expect that LLDB will be branched in early November (around the time of the next llvm developer conference).  That gives folks a chance to meet in person to resolve release blockers.  So, it would be good to aim for a stable trunk on that time-frame,<br>


>><br>
>> -        Ashok<br>
>><br>
>> From: <a href="mailto:lldb-dev-bounces@cs.uiuc.edu">lldb-dev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:lldb-dev-bounces@cs.uiuc.edu">lldb-dev-bounces@cs.uiuc.edu</a>] On Behalf Of Deepak Panickal<br>
>> Sent: Monday, September 16, 2013 10:42 AM<br>
>> To: <a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
>> Subject: Re: [lldb-dev] Merging/Unification of windows and trunk builds<br>
>><br>
>> Hello all,<br>
>><br>
>> Recently, there has been quite some activity towards more Windows support in LLDB. We have been working on this for a while and have created a patch based on the Windows branch and the changes Virgile has been committing to trunk.<br>


>><br>
>> The aim being for the patch to successfully build in Visual Studio 2012 for those developers who want 'native' windows support. The November CTP version of the Visual Studio 2012 compiler has to be used due to the recent C++11 changes in trunk.<br>


>><br>
>> We've created an LLDB driver as well for Windows by removing the editline dependency on Windows. This is just support for the lldb library itself, we have not added on-windows debugging. We primarily use Windows LLDB with the remote plugins.<br>


>><br>
>> The patch will be ready soon as we're doing a final cleanup and we'll submit it shortly.<br>
>><br>
>> Thanks,<br>
>> Deepak<br>
>><br>
>> On 27/08/2013 16:54, Virgile Bello wrote:<br>
>> Yes sure, I keep in touch with Carlos. He's been very helpful and supportive.<br>
>><br>
>> MSVC11 changes are related to the lack of <functional>, and some template instantiations issues, so not so huge different but that might be enough so that it is better kept as a separate patch/branch until everybody migrate to MSVC12? (MSVC11 doesn't support full C++11 which LLDB targets, so if we want to keep trunk clean from those issues it seems to be the only option).<br>


>> Note that you can compile it in MSVC11 with toolset vc120.<br>
>><br>
>> For lldbProcessWindows, I will merge it to LLDB.<br>
>> For the MSVC AD7 debugengine, not sure yet if I will open-source it or do a low-cost commercial product out of it.<br>
>><br>
>> Didn't have a chance to check embarcadero code yet, I will do that as soon as I am finished with the windows patches. However, it seems they took a different approach (using windows implementation of POSIX functions).<br>


>><br>
>> Sincerely,<br>
>> Virgile<br>
>><br>
>><br>
>> On Mon, Aug 26, 2013 at 3:41 AM, Joćo Matos <<a href="mailto:ripzonetriton@gmail.com">ripzonetriton@gmail.com</a>> wrote:<br>
>> On Sun, Aug 25, 2013 at 1:53 PM, Virgile Bello <<a href="mailto:virgile.bello@gmail.com">virgile.bello@gmail.com</a>> wrote:<br>
>> I currently target MSVC12 since it is supposed to have better C++11 support, but going from MSVC12 to MSVC11 is only a few changes.<br>
>><br>
>> If everybody is OK to go this way, most of the windows branch will end up being merged.<br>
>> If people are interested in helping, I could publish the branch so we could work on it together.<br>
>><br>
>> After that there might still be some changes in the windows branch that I didn't do, so it would be good to evaluate what's left (but probably not so much).<br>
>><br>
>> I am OK with this, but better talk with Carlos to make sure you get all of the fixes he has been piling on top of the Windows branch. I'll try to test your patches with MSVC11 and report whatever problems are found.<br>


>><br>
>> Now, I happen to be working on the lldbProcessWindows/lldbDynamicLibraryWindows plugins. Many features are working (stack trace, breakpoints, stepping, disassembly, threads, locals, etc...).<br>
>> I currently use it in a MSVC DebugEngine plugin. It's still early stage but it's starting to work.<br>
>><br>
>> Let me know what you think!<br>
>><br>
>> This sounds awesome. I'd love to give it a try, are you open-sourcing the plugin?<br>
>><br>
>> Also are you re-using any of the work that was open-sourced by Embarcadero for the port? I only gave it a quick glance, but it seemed to have a lot of code that could be re-used.<br>
>><br>
>> --<br>
>> Joćo Matos<br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> lldb-dev mailing list<br>
>> <a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
>><br>
><br>
> _______________________________________________<br>
> lldb-dev mailing list<br>
> <a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br>
<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
</div></div></blockquote></div><br></div>