[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug default/24249] Section offsets not monotonically increasing



https://sourceware.org/bugzilla/show_bug.cgi?id=24249

--- Comment #7 from Tom de Vries <vries at gcc dot gnu.org> ---
Created attachment 11635
  --> https://sourceware.org/bugzilla/attachment.cgi?id=11635&action=edit
Tentative patch

(In reply to Jakub Jelinek from comment #5)
> Pedantically, ELF doesn't require that.  But I view it as a QoI thing, there
> is no reason for a sane ELF producer to just put sections randomly in
> .shstrtab, sorting them by increasing .sh_offset is most reasonable.  And,
> both prelink and dwz and other tools just choose not to optimize if the
> producer didn't do a reasonable job.

I think it's reasonable to draw the line somewhere, so I'd understand it if
this gets marked resolved-wontfix.

OTOH, I'm not happy with not having a workaround (the ability to run say an elf
sanitizer or some such to fix this trivial problem to allow dwz to run on the
sanitized elf).

This tentative patch fixes up the bad-quality input in fdopen_dso in a fairly
orthogonal way, by sorting dso->shdr and dso->scn according to sh_offset, and
updating dso->ehdr.e_shstrndx.
...
$ gcc hello.c -g -fuse-ld=gold -Wl,--gdb-index
$ dwz a.out
dwz: Section offsets in a.out not monotonically increasing, fixing up
$ echo $?
0
$ readelf -S a.out
Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  ...
  [37] .shstrtab         STRTAB           0000000000000000  0000284f
       000000000000017f  0000000000000000           0     0     1
  [38] .gdb_index        PROGBITS         0000000000000000  00003390
       00000000000022f3  0000000000000000           0     0     4
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.