<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/78367>78367</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DebugInfo] Declarations show up in debug-names when TUs are used
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
felipepiovezan
</td>
</tr>
</table>
<pre>
We are adding _declarations_ of types to debug-names when type units are involved:
For example:
```
namespace MyNamespace {
struct MyStruct1 {
char c1;
};
struct MyStruct2 {
char c2;
};
}
MyNamespace::MyStruct1 gv1;
MyNamespace::MyStruct2 gv2;
```
Compiling with:
```
clang++ -target x86_64 -c two_tus.cpp -g2 -gpubnames -fdebug-types-section -o - | \
llvm-dwarfdump - --debug-names | \
grep MyStruct2 -A14
```
We see:
```
Bucket 0 [
Name 1 {
Hash: 0xE186C022
String: 0x00000037 "MyStruct2"
Entry @ 0xc9 {
Abbrev: 0x26c
Tag: DW_TAG_structure_type
DW_IDX_type_unit: 0x01
DW_IDX_die_offset: 0x00000025
}
Entry @ 0xd0 {
Abbrev: 0x268
Tag: DW_TAG_structure_type
DW_IDX_die_offset: 0x00000034
}
}
]
```
I can't explain why this second entry is added. Looking at the debug-info section, the offset `0x34` is an offset to the declaration inside the CU:
```
0x00000029: DW_TAG_namespace
DW_AT_name ("MyNamespace")
0x0000002b: DW_TAG_structure_type
DW_AT_declaration (true)
DW_AT_signature (0x8b108ad18e93cb95)
0x00000034: DW_TAG_structure_type
DW_AT_declaration (true)
DW_AT_signature (0x690ca39e0eeaec8f)
0x0000003d: NULL
```
But declarations are not supposed to show up in debug-names...
_Originally posted by @felipepiovezan in https://github.com/llvm/llvm-project/issues/77457#issuecomment-1894610109_
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVttu4zYTfhr6ZiCDos4XvvBh_f8BstuLTZDeCRQ1ltmVSUGkfOjTF6K0spLdpFu0RKDQc_zmmxEpboysFOKKRBsS7Ra8s0fdrg5YywYbqc_4J1eLQpe31QsCbxF4WUpVQV6iqHnLrdTK5KAPYG8NGrAaSiy6ylP8hAYuR1ROA52S1rgIUp11fcaSBGtCd4Su97oFvPJTU-MkG58xHf_cTxez4QLh8-3LtCfJZlAb23bCwufbV7fx7xoQR96C8EkwCkiym_Zv3NjMbfRjP_Xr9zOsM0h9FcH6jqM63zO_a8agOs8Sva58eG71qZF1T_9F2uOdq9e2ouaqImxD2AY8y9sKLVzTOI9D8ATYi85tZ5aiacCrGHhV0xVDs7zD0DrXSc-g6JsLngYPSLIFEm2HBHV9PnnlhbeHsjs14IHnzXv-yrZqsZlR66398IMCXxAM_s0QAGw68Q0tUOiHdpQB9LTCvOdu_Z-bniig109-Gm8pY6P2q22lqgYVdStIgDA2YSWTqVuflG1vQEIK9CqyWZp1UbR4HgKxWMx9AJ64S7F7yZ_W_8uHSetazHuKR8vdS_6w-91J8v4lGSH5rwONVqXEXB8OBu0cOYtG42kkf8Rc0rfUwBvo6T-G_ivYgnBufAc4g0qi3Qcz8QCCK8ISC3htai4VXI43sEdpwKDQqgR0ZUrTn01YLuFR62_9S8It2COO55FUBw3jTBO2dZoBLZCY0msQkpi6IOq73OrRfzrpQCojS3Ti7fPHczo1J-vpgO9ETmfYvf3rJycdGWKpm8L7KcEYYdk80RS5-MUG3deQbV7RmNO2HU5pRrP-auB9SJig0Wta-DTlpZ9iFogii97BFoT_AbYfcL3jcwfqIMYZFTzIkCJyFOnhPYjl0BiAL8-Pjx9M4Kaz8yEYbjGlLZiuabTBsp8Uc9QX6BqQan4BLpfLeaT8t1ZWUvG6vkGjjcUSCveCvr5w-yBHaxvTTxjbE7avpD12xVLoE2H7_vwd_3lNq_9AYQnbS2M6NITtkySMEsICJxD6dEJlPT_NwtinPs3ykctFuQrKLMj4Ald-QqMwzOIgXRxXRXwQyKOYp36R-UWMkc8iRuMkzPwDjfhCrhhlIfX9xNGYLkXqi1TQgouEpzTiJKR44rJe9hCXuq0WDssqSYM4WdS8wNq4Lw7GFF7AKfsxj3aLduXKKrrKkJDW0lhzj2Klrd2nyq5n-EEdNIl2sJu35udtGL5Dnp6H1nUGy0XX1qt_wXFfyV8BAAD__6g2qpE">