[PATCH] D62809: [yaml2obj] - Change gow we handle implicit sections.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 3 05:43:08 PDT 2019


grimar created this revision.
grimar added a reviewer: jhenderson.
Herald added a subscriber: jakehehrlich.

We have a few sections that can be added implicitly to the output:
".dynsym", ".dynstr", ".symtab", ".strtab" and ".shstrtab".

Problem appears when such section is listed explicitly in YAML.
In that case it's content is written twice:
first time during writing of regular sections listed in the document
and second time during special handling.

Because of that their file offsets can become unexpectedly broken:
(yaml file for sample below lists `.dynsym` explicitly before `.text.foo`)

  Before patch:
    [Nr] Name              Type             Address           Offset
         Size              EntSize          Flags  Link  Info  Align
    [ 0]                   NULL             0000000000000000  00000000
         0000000000000000  0000000000000000           0     0     0
    [ 1] .dynsym           DYNSYM           0000000000000100  00000250
         0000000000000030  0000000000000018   A       6     0     8
    [ 2] .text.foo         PROGBITS         0000000000000200  00000200
         0000000000000000  0000000000000000  AX       0     0     0
  
  After patch:
  Section Headers:
    [Nr] Name         Type             Address           Offset
         Size              EntSize          Flags  Link  Info  Align
    [ 0]                   NULL             0000000000000000  00000000
         0000000000000000  0000000000000000           0     0     0
    [ 1] .dynsym           DYNSYM           0000000000000100  00000200
         0000000000000030  0000000000000018   A       6     0     8
    [ 2] .text.foo         PROGBITS         0000000000000200  00000230
         0000000000000000  0000000000000000  AX       0     0     0

This patch reorganizes our code and fixes the issue described.


https://reviews.llvm.org/D62809

Files:
  test/tools/yaml2obj/implicit-sections.test
  tools/yaml2obj/yaml2elf.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62809.202696.patch
Type: text/x-patch
Size: 10097 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190603/37fe3fe8/attachment-0001.bin>


More information about the llvm-commits mailing list