Strictly speaking SHF_EXCLUDE is a processor specific section flag, but it is used generically in the GNU toolchain. For example when adding .gnu.lto_ sections.
Signed-off-by: Mark Wielaard <m...@klomp.org> --- src/ChangeLog | 5 +++++ src/elflint.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index e11fe79a..dc345a04 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2020-04-16 Mark Wielaard <m...@klomp.org> + + * elflint.c (check_sections): Mask out SHF_EXCLUDE from processor + specific section flags when --gnu is given. + 2020-02-08 Mark Wielaard <m...@klomp.org> * elflint.c (check_program_header): Handle PT_GNU_PROPERTY. diff --git a/src/elflint.c b/src/elflint.c index 480d84ba..0ef43236 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -3921,6 +3921,11 @@ section [%2zu] '%s': size not multiple of entry size\n"), GElf_Xword sh_flags = shdr->sh_flags & ~(GElf_Xword) ALL_SH_FLAGS; if (sh_flags & SHF_MASKPROC) { + /* Strictly speaking SHF_EXCLUDE is a processor specific + section flag, but it is used generically in the GNU + toolchain. */ + if (gnuld) + sh_flags &= ~(GElf_Xword) SHF_EXCLUDE; if (!ebl_machine_section_flag_check (ebl, sh_flags & SHF_MASKPROC)) ERROR (gettext ("section [%2zu] '%s'" -- 2.18.2