bulbazord added a comment.

Thanks for the reviews and comments! It's kind of unfortunate that LLDB is like 
this right now but I believe this patch is a step in the right direction. :)



================
Comment at: lldb/source/Core/Mangled.cpp:322
   if (preference == ePreferDemangledWithoutArguments) {
-    return GetDemangledNameWithoutArguments(m_mangled, demangled);
+    if (Language *lang = Language::FindPlugin(GuessLanguage())) {
+      return lang->GetDemangledFunctionNameWithoutArguments(*this);
----------------
clayborg wrote:
> bulbazord wrote:
> > clayborg wrote:
> > > Maybe we should make a Language::FindPlugin(...) that like:
> > > ```
> > > Language *Language::FindPlugin(Mangled::ManglingScheme mangling_scheme);
> > > ```
> > > Should be easy to add since this change is kind of about refactoring and 
> > > putting the code into plug-ins. It is essentially what 
> > > "lldb::LanguageType Mangled::GuessLanguage() const" is doing. That code 
> > > could be moved to where Language::FindPlugin(...) lives.
> > `GuessLanguage` has a bunch of uses outside of `Mangled` itself, so I think 
> > that would make more sense if we performed other refactors first.
> > 
> > I don't think putting this into another `Language::FindPlugin` function is 
> > a good idea because (as I understand it) mangling schemes aren't specific 
> > to languages. 
> We _are_ using GuessLanguage to guess the language and we are using a 
> language specific plug-in to do the work. So effectively it is the same thing.
> 
> I wonder if GetName(...) should take an extra Language parameter? If a 
> lldb_private::Function wants the name as , then we _do_ know the language, 
> then it could send the language in for it to be more correct. Itanium name 
> mangling can mangle different languages right? Is there any way to 
> differentiate correctly without actually knowing the language?
Right, I understand. *Ideally* we wouldn't be doing that, but...

What you're suggesting might be better in the long run (using language 
information where available) but unfortunately I think that's far from where we 
are at currently. As for itanium name mangling, I don't think you can reliably 
determine the language the symbol came from unfortunately. Some languages have 
their own name mangling scheme luckily, so it may be easier for some languages.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105215/new/

https://reviews.llvm.org/D105215

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to