[Bug default/27438] [dwz, odr, multifile] Multifile after odr not optimal

vries at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Fri Feb 19 12:24:30 GMT 2021


https://sourceware.org/bugzilla/show_bug.cgi?id=27438

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
The problem is caused by the fact that the duplicate chain:
...
duplicate chain:
 139 O 26b2adba(fdca21c2) 26b2adba bbb structure_type
 1af O 26b2adba(d80f5f71) 26b2adba bbb structure_type
...
starts with a decl in CU1:
...
 <1><139>: Abbrev Number: 5 (DW_TAG_structure_type)
    <13a>   DW_AT_name        : bbb
    <13e>   DW_AT_declaration : 1
...
and then has a def in CU2:
...
 <1><1af>: Abbrev Number: 2 (DW_TAG_structure_type)
    <1b0>   DW_AT_name        : bbb
    <1b4>   DW_AT_byte_size   : 4
    <1b5>   DW_AT_decl_file   : 1
    <1b6>   DW_AT_decl_line   : 4
    <1b7>   DW_AT_sibling     : <0x1c8>
...

This is a problem for writing out the dies, since there we count on accessing
the attributes and children of the first die in the duplicate chain.

This problem is fixed by reorder_dups, which switches order of def and decl.

However, consequently the DW_AT_decl_file with value 1, referring to odr-2.cc
in CU2 will be interpreted using the file table of CU1, and ends up referring
to odr.cc instead.  This is the root cause.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Dwz mailing list