On Tue, Feb 09, 2016 at 02:30:38PM +0100, Mark Wielaard wrote: > GCC6 -Wduplicated-cond found the following issue: > > elflint.c: In function ‘compare_hash_gnu_hash’: > elflint.c:2483:34: error: duplicated ‘if’ condition [-Werror=duplicated-cond] > else if (hash_shdr->sh_entsize == sizeof (Elf64_Word)) > ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ > elflint.c:2448:29: note: previously used here > if (hash_shdr->sh_entsize == sizeof (Elf32_Word)) > ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ > > Which is correct, a Word in both Elf32 and Elf64 files is 4 bytes. > We meant to check for sizeof (Elf64_Xword) which is 8 bytes. > > Also fix the section index and name in the error message. > > The reason we probably didn't see this issue before is that SHT_HASH > sections really always should have sh_entsize of 4 even on 64bit arches. > There are however a couple of arches with mistakes in their sysv ABI. > See libelf/common.h. This also would only be triggered if on such an > architectures when the ELF file would have both a SHT_HASH and SHT_GNU_HASH > section and elflint would try to compare those sections. > > Add an example testfile-s390x-hash-both to run-elflint-test.sh.
I pushed this to master.