[yaml2obj/obj2yaml] - Add support for SHT_RELR sections.
authorGeorgii Rymar <grimar@accesssoftek.com>
Wed, 15 Jan 2020 11:29:29 +0000 (14:29 +0300)
committerGeorgii Rymar <grimar@accesssoftek.com>
Wed, 15 Jan 2020 12:15:24 +0000 (15:15 +0300)
commit7570d387c21935b58afa67cb9ee17250e38721fa
treeb2fe64f4c8b521f34daf7188674286ceef0882ed
parent13f22f5d5958a46db1212a083a426e339204c783
[yaml2obj/obj2yaml] - Add support for SHT_RELR sections.

Note: this is a reland with a trivial 2 lines fix in ELFState<ELFT>::writeSectionContent.
      It adds a check similar to ones we already have for other sections to fix the case revealed
      by bots, like http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/60744.

The encoded sequence of Elf*_Relr entries in a SHT_RELR section looks
like [ AAAAAAAA BBBBBBB1 BBBBBBB1 ... AAAAAAAA BBBBBB1 ... ]
i.e. start with an address, followed by any number of bitmaps. The address
entry encodes 1 relocation. The subsequent bitmap entries encode up to 63(31)
relocations each, at subsequent offsets following the last address entry.

More information is here:
https://github.com/llvm-mirror/llvm/blob/master/lib/Object/ELF.cpp#L272

This patch adds a support for these sections.

Differential revision: https://reviews.llvm.org/D71872
llvm/include/llvm/ObjectYAML/ELFYAML.h
llvm/lib/ObjectYAML/ELFEmitter.cpp
llvm/lib/ObjectYAML/ELFYAML.cpp
llvm/tools/obj2yaml/elf2yaml.cpp