This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]