[DWARFLinker][DWARFv5] Add support for .debug_rnglists.
authorAlexey Lapshin <a.v.lapshin@mail.ru>
Sun, 26 Feb 2023 17:57:50 +0000 (18:57 +0100)
committerAlexey Lapshin <a.v.lapshin@mail.ru>
Sun, 26 Feb 2023 18:18:51 +0000 (19:18 +0100)
commit1a50207f4ea575da2a3e861369227ce9f1d885e7
tree4241fdd0921c31f8a3537c4146a02adaeec81565
parentb5fc2a474ebabb082f52f43cea2d5b299f28bd70
[DWARFLinker][DWARFv5] Add support for .debug_rnglists.

This patch adds support of DWARFv5 .debug_rnglists table.
As DWARFLinker resolves relocations, it is able to always
use DW_FORM_addr instead of DW_FORM_addrx. DW_FORM_addrx
helps to minimize number of relocations, it is also used for
split DWARF. Both of these cases are not relevant for the
DWARFLinker. Thus, this patch converts all DW_FORM_addrx
forms into the DW_FORM_addr. And, as the result, it converts
range lists of DW_FORM_rnglistx form into the DW_FORM_sec_offset.
For the --update case all DW_FORM_addrx, DW_FORM_rnglistx
are preserved as is.

Reviewed By: aprantl

Differential Revision: https://reviews.llvm.org/D143903
13 files changed:
llvm/include/llvm/DWARFLinker/DWARFLinker.h
llvm/include/llvm/DWARFLinker/DWARFLinkerCompileUnit.h
llvm/include/llvm/DWARFLinker/DWARFStreamer.h
llvm/lib/DWARFLinker/DWARFLinker.cpp
llvm/lib/DWARFLinker/DWARFLinkerCompileUnit.cpp
llvm/lib/DWARFLinker/DWARFStreamer.cpp
llvm/test/tools/dsymutil/Inputs/dwarf5-rnglists.o [new file with mode: 0644]
llvm/test/tools/dsymutil/X86/dwarf5-addrx.test
llvm/test/tools/dsymutil/X86/dwarf5-rnglists.test [new file with mode: 0644]
llvm/test/tools/dsymutil/X86/op-convert-offset.test
llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-addrx.test
llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-rnglists.test [new file with mode: 0644]
llvm/test/tools/llvm-dwarfutil/ELF/X86/warning-skipped-rnglists.test [deleted file]