[PATCH] D76410: [ELF] Don't combine SHF_LINK_ORDER sections linking different output sections

Peter Collingbourne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 20 17:23:00 PDT 2020


pcc requested changes to this revision.
pcc added inline comments.
This revision now requires changes to proceed.


================
Comment at: lld/test/ELF/partition-move-to-main-startstop.s:18
 
+// CHECK: part1
 // CHECK: no_startstop
----------------
MaskRay wrote:
> grimar wrote:
> > I think this kind of breaks the logic of this test?
> > 
> > See the output before this patch:
> > 
> > ```
> >   [ 4] .dynstr           STRTAB           00000000002002b0  000002b0
> >        0000000000000039  0000000000000000   A       0     0     1 
> >   [ 5] has_startstop     PROGBITS         00000000002002e9  000002e9
> >        0000000000000010  0000000000000000  AL       8     0     1
> >   [ 6] no_startstop      PROGBITS         00000000002002f9  000002f9
> >        0000000000000008  0000000000000000  AL       8     0     1
> > ...
> >   [10] part1             LOOS+0xfff4c06   0000000000203000  00001000
> >        0000000000000040  0000000000000000   A       0     0     1
> > 
> > Symbol table '.symtab' contains 6 entries:
> >    Num:    Value          Size Type    Bind   Vis      Ndx Name
> > ...
> >      2: 00000000002002e9     0 NOTYPE  GLOBAL PROTECTED    5 __start_has_startstop
> >      3: 00000000002002f9     0 NOTYPE  GLOBAL PROTECTED    5 __stop_has_startstop
> > ```
> > 
> > And after:
> > 
> > 
> > ```
> >  [ 5] has_startstop     PROGBITS         00000000002002e9  000002e9
> >        0000000000000008  0000000000000000  AL       9     0     1
> >   [ 6] has_startstop     PROGBITS         00000000002002f1  000002f1
> >        0000000000000008  0000000000000000  AL      18     0     1
> >   [ 7] no_startstop      PROGBITS         00000000002002f9  000002f9
> >        0000000000000008  0000000000000000  AL       9     0     1
> >   [ 8] .rodata           PROGBITS         0000000000200304  00000304
> >        000000000000000c  0000000000000000   A       0     0     4
> > ...
> >   [11] part1             LOOS+0xfff4c06   0000000000203000  00001000
> >        0000000000000040  0000000000000000   A       0     0     1
> > 
> > Symbol table '.symtab' contains 6 entries:
> >    Num:    Value          Size Type    Bind   Vis      Ndx Name
> > ...
> >      2: 00000000002002e9     0 NOTYPE  GLOBAL PROTECTED    5 __start_has_startstop
> >      3: 00000000002002f1     0 NOTYPE  GLOBAL PROTECTED    5 __stop_has_startstop
> > ```
> > 
> > `__stop_has_startstop` points to the begining of the second `has_startstop` section now.
> This demonstrates that `__start_`/`__stop_` symbols should not be used with SHF_LINK_ORDER sections.
> Added a comment.
`__start_`/`__stop_` are absolutely being used with SHF_LINK_ORDER sections right now. See e.g. `hwasan_globals` which may be linked to `.data`/`.data.rel.ro`/`.rodata`/`.bss`. We need a solution for such use cases before making this change, if it is to be made at all.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76410/new/

https://reviews.llvm.org/D76410





More information about the llvm-commits mailing list