<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">The new demangler was introduced in LLDB because while it does not yet support the full Itanium ABI C++ mangling specification, LLDB often demangles huge numbers of symbols to enable friendly breakpoint matching commands.  So it made sense to have a “fast path” even while a full replacement wasn’t yet available.  I think it makes a lot of sense to migrate the project to LLVM once it covers more of the mangling specification.<div class=""><br class=""></div><div class="">I would be happy to correspond with anyone who is considering contributing to the effort.<br class=""><div class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="" style="font-family: LucidaGrande; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><font color="#424242" class="" style="font-family: 'Lucida Grande'; font-size: x-small;">Kate Stone</font><span class="" style="font-family: 'Lucida Grande'; font-size: x-small;"> </span><font color="#009193" class="" style="font-family: 'Lucida Grande'; font-size: x-small;"><a href="mailto:k8stone@apple.com" class="">k8stone@apple.com</a></font></div><div class="" style="font-family: Times; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><font face="Lucida Grande" size="1" class=""><font color="#009193" class=""></font> Xcode <font color="#424242" class="">Runtime Analysis Tools</font></font></div></div></div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Feb 18, 2015, at 10:49 AM, Zachary Turner <<a href="mailto:zturner@google.com" class="">zturner@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">FWIW there's been some discussion on this side about writing a new ABI-agnostic demangler and putting in LLVM.  That seems like the more logical place for any kind of demangler, so hopefully we can coordinate so that we don't duplicate effort.  <br class=""></div><br class=""><div class="gmail_quote">On Wed Feb 18 2015 at 10:45:57 AM Kate Stone <<a href="mailto:katherine_stone@apple.com" class="">katherine_stone@apple.com</a>> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="">As this code is literally a copy of demangler sources from another project with strategic bug fixes I would recommend leaving it as is.  It is possible that it will be replaced wholesale from time to time until I find the time to finish replacing it with the fast demangler.<div class=""><br class=""><div class="">
<div style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; word-wrap: break-word;" class=""><div style="letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; word-wrap: break-word;" class=""><div style="font-family:LucidaGrande;word-wrap:break-word" class=""><font color="#424242" style="font-family:'Lucida Grande';font-size:x-small" class="">Kate Stone</font><span style="font-family:'Lucida Grande';font-size:x-small" class=""> </span><font color="#009193" style="font-family:'Lucida Grande';font-size:x-small" class=""><a href="mailto:k8stone@apple.com" target="_blank" class="">k8stone@apple.com</a></font></div><div style="font-family:Times;word-wrap:break-word" class=""><font face="Lucida Grande" size="1" class=""><font color="#009193" class=""></font> Xcode <font color="#424242" class="">Runtime Analysis Tools</font></font></div></div></div>
</div></div></div><div style="word-wrap:break-word" class=""><div class="">
<br class=""><div class=""><blockquote type="cite" class=""><div class="">On Feb 18, 2015, at 10:27 AM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank" class="">zturner@google.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class="">Yea I figured this wasn't going to be a problem because the demangling path on Windows is like 10 lines to call into a Windows API to demangle for us.  On the other hand, it looks like an easy fix to change it to not use template aliases.  But since for all practical purposes Windows is the only platform that this matters for, I guess someone who is more of a style guide purist than me would have to make the change as I'm not motivated enough to do so.  Looks like just a couple of simple replacements though.<br class=""><div class=""><br class=""></div><div class="">As long as we don't use template aliases for new code going forward though, I'm happy.  They're mostly just syntactic sugar anyway, so they're never necessary to achieve something that you couldn't do otherwise.</div></div><br class=""><div class="gmail_quote">On Wed Feb 18 2015 at 10:21:45 AM <<a href="mailto:jingham@apple.com" target="_blank" class="">jingham@apple.com</a>> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">That code is actually from a copy of the llvm cxa_demangle.cpp (look at the comment around line 33 of that file.<br class="">
<br class="">
We had to include this because the demangler that shipped with the system for certain OS X releases crashed for some bad input.  We couldn't get a fix into the OS right away, so we put a fixed version into lldb.  You will only use it if you define LLDB_USE_BUILTIN_DEMANGLER, presumably you wouldn't do that on Windows.<br class="">
<br class="">
I don't think we need to muck with this code...<br class="">
<br class="">
Jim<br class="">
<br class="">
<br class="">
> On Feb 18, 2015, at 3:55 AM, Tamas Berghammer <<a href="mailto:tberghammer@google.com" target="_blank" class="">tberghammer@google.com</a>> wrote:<br class="">
><br class="">
> I removed the alias template from GDBRemoteCommunicationServerCo<u class=""></u>mmon.h but there are still some template aliases in the code base. Based on my first check (not necessarily complete) I find two more usage of template aliases in source/Core/Mangled.cpp lines 4867 and 4868. I have no idea about how that part of the code works and if it can cause any issue with MSVC or not but we should consider removing it also (it is in the code base since 2013-10-30).<br class="">
><br class="">
> Tamas<br class="">
><br class="">
> On Tue, Feb 17, 2015 at 11:33 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank" class="">zturner@google.com</a>> wrote:<br class="">
> +<a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank" class="">lldb-dev@cs.uiuc.edu</a>  since this is of general interest.<br class="">
><br class="">
> A little background: template aliases are a new C++11 feature.  If you aren't familiar with it, then the simple TL;DR version of it is that it's like a template typedef.  The syntax for using one looks like this:<br class="">
><br class="">
> template<class T><br class="">
> using Foo = std::list<T>   // Foo<T> is the same as std::list<T> now.<br class="">
><br class="">
> Up until last weekend, LLVM's minimum toolchain requirement was MSVC 2012, which did not support template aliases at all, so they were banned.  Last weekend we upgraded the minimum required version to MSVC 2013, which we thought would allow template aliases to be used.  Unfortunately, this is not the case.  A base install of MSVC 2013 with no updaets will still not compile template aliases.  I believe we're actually requiring MSVC 2013 Update 4 as the baseline, but sadly this doesn't fix the problem.  A fully updated MSVC 2013 will compile them, but generate incorrect code.  This is more sinister, since it means you can use them, but the code won't work.<br class="">
><br class="">
> As a result, template aliases are still banned until we upgrade the minimum required version to 2015, which will still be a while as it's not officially out yet.  Please keep this in mind and try not to use them when writing new code.  Thanks!<br class="">
><br class="">
><br class="">
><br class="">
> On Tue Feb 17 2015 at 3:21:03 PM Vince Harron <<a href="mailto:vharron@google.com" target="_blank" class="">vharron@google.com</a>> wrote:<br class="">
> Hi Tamas,<br class="">
><br class="">
> zturner@ informed me that MSVC 2013 doesn't generate correct code for template alases.  Can you remove your use on<br class="">
><br class="">
> "<u class=""></u>GDBRemoteCommunicationServerCo<u class=""></u>mmon.h, lines 182 and 183"<br class="">
><br class="">
> Thanks,<br class="">
><br class="">
> Vince<br class="">
><br class="">
><br class="">
> --<br class="">
><br class="">
> Vince Harron |         Technical Lead Manager |        <a href="mailto:vharron@google.com" target="_blank" class="">vharron@google.com</a> |    858-442-0868<br class="">
><br class="">
><br class="">
> ______________________________<u class=""></u>_________________<br class="">
> lldb-dev mailing list<br class="">
> <a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank" class="">lldb-dev@cs.uiuc.edu</a><br class="">
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank" class="">http://lists.cs.uiuc.edu/<u class=""></u>mailman/listinfo/lldb-dev</a><br class="">
<br class="">
</blockquote></div>
_______________________________________________<br class="">lldb-dev mailing list<br class=""><a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank" class="">lldb-dev@cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br class=""></div></blockquote></div><br class=""></div></div></blockquote></div>
</div></blockquote></div><br class=""></div></div></body></html>