eu-elflint has a flag '--gnu-ld' described as "Binary has been created with GNU ld and is therefore known to be broken in certain ways". Note that by GNU ld the original GNU binutils ld is meant, not the newer GNU binutils gold linker.
The following linty things are accepted under '--gnu-ld':
- When GNU ld decides to remove empty sections it leaves symbols referencing them behind. These are symbols in .symtab or .dynsym and for the named symbols have zero size. http://sourceware.org/PR13621
- _GLOBAL_OFFSET_TABLE_ symbol size does not match section size.
- _DYNAMIC symbol size does not match dynamic segment size.
- STB_LOCAL local symbol with version.
- thread-local data sections address not zero.
- relocation offset out of bounds.
- .debug_str section should have just SHF_MERGE | SHF_STRINGS flags set.
- A NOBITS section in the middle of a PT_LOAD segment is allowed if the underlying file contents is all zeros.