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.
I would be happy to correspond with anyone who is considering contributing to the effort. Kate Stone k8st...@apple.com <mailto:k8st...@apple.com> Xcode Runtime Analysis Tools > On Feb 18, 2015, at 10:49 AM, Zachary Turner <ztur...@google.com> wrote: > > 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. > > On Wed Feb 18 2015 at 10:45:57 AM Kate Stone <katherine_st...@apple.com > <mailto:katherine_st...@apple.com>> wrote: > 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. > > Kate Stone k8st...@apple.com <mailto:k8st...@apple.com> > Xcode Runtime Analysis Tools > >> On Feb 18, 2015, at 10:27 AM, Zachary Turner <ztur...@google.com >> <mailto:ztur...@google.com>> wrote: >> >> 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. >> >> 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. >> >> On Wed Feb 18 2015 at 10:21:45 AM <jing...@apple.com >> <mailto:jing...@apple.com>> wrote: >> That code is actually from a copy of the llvm cxa_demangle.cpp (look at the >> comment around line 33 of that file. >> >> 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. >> >> I don't think we need to muck with this code... >> >> Jim >> >> >> > On Feb 18, 2015, at 3:55 AM, Tamas Berghammer <tbergham...@google.com >> > <mailto:tbergham...@google.com>> wrote: >> > >> > I removed the alias template from GDBRemoteCommunicationServerCommon.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). >> > >> > Tamas >> > >> > On Tue, Feb 17, 2015 at 11:33 PM, Zachary Turner <ztur...@google.com >> > <mailto:ztur...@google.com>> wrote: >> > +lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu> since this is of >> > general interest. >> > >> > 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: >> > >> > template<class T> >> > using Foo = std::list<T> // Foo<T> is the same as std::list<T> now. >> > >> > 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. >> > >> > 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! >> > >> > >> > >> > On Tue Feb 17 2015 at 3:21:03 PM Vince Harron <vhar...@google.com >> > <mailto:vhar...@google.com>> wrote: >> > Hi Tamas, >> > >> > zturner@ informed me that MSVC 2013 doesn't generate correct code for >> > template alases. Can you remove your use on >> > >> > "GDBRemoteCommunicationServerCommon.h, lines 182 and 183" >> > >> > Thanks, >> > >> > Vince >> > >> > >> > -- >> > >> > Vince Harron | Technical Lead Manager | vhar...@google.com >> > <mailto:vhar...@google.com> | 858-442-0868 >> > >> > >> > _______________________________________________ >> > lldb-dev mailing list >> > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu> >> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev >> > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev> >> >> _______________________________________________ >> lldb-dev mailing list >> lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu> >> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev >> <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev> >
_______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev