labath added a comment.

In D131335#3733117 <https://reviews.llvm.org/D131335#3733117>, @Michael137 
wrote:

> In D131335#3732877 <https://reviews.llvm.org/D131335#3732877>, @labath wrote:
>
>> FWIW, I would be all for attaching the abi tags to the clang declarations if 
>> they would be in some easily accessible form (e.g. a DWARF attribute). 
>> Parsing them out of the mangled name is somewhat dubious, but I am not 
>> entirely against that, if it is necessary for some use case. However, even 
>> if we did that, I'd still say that attaching the asm attribute is a good 
>> idea.
>
> We're actually thinking of maybe getting rid off the fallback logic for the 
> C++ plugin entirely. Only a handful of API tests seem to call into it (and 
> some of them don't even expect the symbol to be found). But maybe there are 
> some critical corner cases that require this that aren't covered by the tests.

I expect that this logic exists mostly for the benefit of low-quality or 
"minimal" debug info, at least that's what it looks like for me when I see the 
kinds of fallbacks that are used. For example the `char`->`signed char` 
substitution exists probably to work around the fact that DWARF does not really 
recognize `char` as a separate type (not in the same way that C does). So the 
type `char` could end up having using DW_ATE_signed_char (same as `signed 
char`) or DW_ATE_unsigned_char (same as `unsigned char`), depending on whether 
the type actually is signed or not. Makes sense if all you want is to provide a 
description of the type, but it does not sufficient for reconstructing mangled 
names. This is why our DWARF parsing code 
(TypeSystemClang::GetBuiltinTypeForDWARFEncodingAndBitSize) needs to use string 
comparisons to get this right. One could say the same for int->long 
substitutions, etc.

That means that these things will only show up when using debug info produced 
by third-party compilers (I think even gcc should be fine), which is not 
something that we test regularly. That said, I don't think this is a good 
reason to keep this code around, and I'd hope that the asm labels will fix most 
of these issues (obviously, you won't be able to call the right overload based 
on the signedness of a char variable, but you couldn't do that before either). 
If it breaks anyones use case, we can figure out how to fix this in a better 
way.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D131335

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

Reply via email to