probinson added a comment.

In D69309#1787994 <https://reviews.llvm.org/D69309#1787994>, @friss wrote:

> In D69309#1787409 <https://reviews.llvm.org/D69309#1787409>, @labath wrote:
>
> > In D69309#1787297 <https://reviews.llvm.org/D69309#1787297>, @jarin wrote:
> >
> > > In D69309#1752738 <https://reviews.llvm.org/D69309#1752738>, @friss wrote:
> > >
> > > > Basically, today the debug info will describe an entity named 
> > > > "Foo<int>". The accelerator tables all reference this name. So when 
> > > > Clang asks us if we know "Foo" (which is what happens when 
> > > > instantiating), we fail to find the right instantiations. The consensus 
> > > > of the above discussion was that we should change the debug info to 
> > > > have "Foo" as the name of any instantiation, with a child DIE 
> > > > describing the template arguments. Just doing this in the compiler 
> > > > causes test failures in LLDB, so there's some work to do in LLDB to 
> > > > support this.
> > >
> > >
> > > Frederic, you say that "doing this in the compiler causes test failures 
> > > in LLDB", which implies you have tried adding the template in the 
> > > compiler. Do you have that compiler patch lying around so that we could 
> > > have a look at what can be done on the lldb side?
> > >
> > > I agree that a good long term fix is to have "Foo" as an entity in DWARF, 
> > > although for backwards compatibility it might be better if the "Foo" 
> > > template just contained references to the instantiations rather than 
> > > having them as children.
> >
> >
> > I am afraid you're overestimating the scope of that idea. I *think* that 
> > Fred was referring to simply changing the string that gets put into the 
> > DW_AT_name field of the /instantation/ (and, by extension, the accelerator 
> > table). The debug info would still describe instantiations only.
>
>
> Just confirming that this is indeed what I meant. I don't have the patch 
> handy anymore (it was extremely small, about 5 lines IIRC).


FWIW, the Sony debugger throws away the `<type>` part of the DW_AT_name and 
reconstructs it from the template_parameter children.  The presence of typedefs 
and/or enums can make the `<type>` text inconsistent, especially across enums.  
Our debugger reconstructs the type-parameters because it's more consistent that 
way.


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

https://reviews.llvm.org/D69309



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

Reply via email to