https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101141
Bug ID: 101141 Summary: Fedora glibc debuginfo .dwz contains a partial unit with needed debuginfo but which is not imported Product: gcc Version: 11.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: roc at ocallahan dot org Target Milestone: --- The Fedora 34 package glibc-debuginfo-2.33-16.fc34.x86_64 package has glibc symbols in /usr/lib/debug/.build-id/08/1490fc18239fa63189a53e526a68ee5d19c571.debug whose .gnu_debugaltlink is /usr/lib/debug/usr/.dwz/glibc-2.33-16.fc34.x86_64. /usr/lib/debug/.build-id/08/1490fc18239fa63189a53e526a68ee5d19c571.debug has a compilation unit that imports the partial unit at 0x1f63c from the .dwz file: UNIT<header overall offset = 0x000795ee>: < 0><0x0000000c GOFF=0x000795fa> DW_TAG_compile_unit DW_AT_producer <.debug_str(sup)+0x0001200e> DW_AT_language DW_LANG_C11 DW_AT_name global-locale.c DW_AT_comp_dir /usr/src/debug/glibc-2.33-16.fc34.x86_64/locale DW_AT_stmt_list <.debug_line+0x0000ce8a> < 1><0x0000001e GOFF=0x0007960c> DW_TAG_imported_unit DW_AT_import <.debug_info(sup)+0x0001f63c> That partial unit contains a variable declaration whose DW_AT_specification (0x1f0d2) lives in another partial compilation unit: UNIT<header overall offset = 0x0001f630>: < 0><0x0000000c GOFF=0x0001f63c> DW_TAG_partial_unit DW_AT_stmt_list <.debug_line+0x00000000> ... < 1><0x00000038 GOFF=0x0001f668> DW_TAG_variable DW_AT_specification <.debug_info+0x0001f0d2> DW_AT_decl_file 0x0000013b /usr/src/debug/glibc-2.33-16.fc34.x86_64/locale/global-locale.c DW_AT_decl_line 0x00000040 DW_AT_decl_column 0x00000013 DW_AT_location len 0x000a: 0e00000000000000009b: DW_OP_const8u 0 DW_OP_form_tls_address UNIT<header overall offset = 0x0001f0c1>: < 0><0x0000000c GOFF=0x0001f0cd> DW_TAG_partial_unit DW_AT_stmt_list <.debug_line+0x00000000> < 1><0x00000011 GOFF=0x0001f0d2> DW_TAG_variable DW_AT_name __libc_tsd_LOCALE DW_AT_decl_file 0x00000089 /usr/src/debug/glibc-2.33-16.fc34.x86_64/locale/localeinfo.h DW_AT_decl_line 0x000000e1 DW_AT_decl_column 0x00000001 DW_AT_type <.debug_info+0x00035fb3> DW_AT_external yes DW_AT_declaration yes However, the partial unit at 0x1f0cd is not imported anywhere in /usr/lib/debug/.build-id/08/1490fc18239fa63189a53e526a68ee5d19c571.debug as far as I can tell. I think the compilation unit at global-locale.c, at least, should be importing it.