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

--- Comment #2 from Fangrui Song <i at maskray dot me> ---
> /tmp/p/elfutils/out/debug/src/elflint --quiet --gnu-ld 
> /tmp/p/elfutils/out/lld/src/addr2line
> section [ 6] '.gnu.version_r': entry 3 has invalid offset to next entry

In `.gnu.version_r`, places all Vernaux entries after all Verneed entries . It
seems that elflint expects that a Vernaux is immediately followed by its
associated Vernaux entries.
I think this is overly restrictive and should be dropped.

> section [23] '.relro_padding' has wrong type: expected RELR, is NOBITS
> section [23] '.relro_padding' has wrong flags: expected none and possibly 
> ALLOC, is WRITE|ALLOC

.relro_padding has to be WRITE|ALLOC to be part of PT_GNU_TLS (also the first
RW PT_LOAD).
https://maskray.me/blog/2020-11-15-explain-gnu-linker-options#z-relro

GNU ld uses DATA_SEGMENT_ALIGN/DATA_SEGMENT_RELRO_END and has size penalty.

> section [11] '.rodata': merge flag set but entry size is zero

lld keeps the SHF_MERGE flag in the output section to show that at least one
input section has the SHF_MERGE flag.
This is extra information, which helped me debug some weird linker scripts.

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

Reply via email to