https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99490

--- Comment #10 from Jan Kratochvil <jan.kratochvil at redhat dot com> ---
clang is using DW_AT_ranges+DW_FORM_rnglistx+DW_AT_rnglists_base in the main
file but in the DWO file it assumes DW_AT_rnglists_base is right after the
.debug_rnglists header (as it does not make sense to point it anywhere else in
a DWO file having single CU). It makes sense although I do not see it specified
in DWARF-5:

.debug_info contents:
...
0x00000014: DW_TAG_skeleton_unit [1]  
...
              DW_AT_ranges [DW_FORM_rnglistx]   (indexed (0x0) rangelist =
0x00000010
                 [0x0000000000401110, 0x0000000000401111)
                 [0x0000000000401120, 0x0000000000401121)
                 [0x0000000000401130, 0x0000000000401171))
...
              DW_AT_rnglists_base [DW_FORM_sec_offset]  (0x0000000c)

.debug_info.dwo contents:
...
0x00000014: DW_TAG_compile_unit [1] *
...
                  DW_AT_ranges [DW_FORM_rnglistx]       (indexed (0x0)
rangelist = 0x00000010
                     [0x0000000000000004, 0x0000000000000016)
                     [0x0000000000000022, 0x0000000000000034))

https://github.com/llvm/llvm-project/blob/523d7bc6f427f9ae32e54dbf1764826cfb269d21/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp#L388

Reply via email to