This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
Re: [PATCH] elflint: Fix sh_entsize check when comparing SHT_HASH and SHT_GNU_HASH.
- From: Mark Wielaard <mjw at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Mon, 15 Feb 2016 23:48:45 +0100
- Subject: Re: [PATCH] elflint: Fix sh_entsize check when comparing SHT_HASH and SHT_GNU_HASH.
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.