From: Mark Wielaard Date: Fri, 2 Oct 2015 14:31:36 +0000 (+0200) Subject: unstrip: Update sh_info when SH_INFO_LINK_P not just when SHF_INFO_LINK set X-Git-Tag: elfutils-0.164~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e084502768cc845bacc2457c22d097f49808751;p=thirdparty%2Felfutils.git unstrip: Update sh_info when SH_INFO_LINK_P not just when SHF_INFO_LINK set SHF_INFO_LINK is not consistently set when sh_info is actually a section index reference. Use SH_INFO_LINK_P to check whether to update the sh_info value. SH_INFO_LINK_P also checks the section type to know whether or not sh_info is meant as section index. Found by run-strip-strmerge.sh test with older binutils. Signed-off-by: Mark Wielaard --- diff --git a/src/ChangeLog b/src/ChangeLog index 72bb0ab8a..411c70bf5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2015-10-02 Mark Wielaard + + * unstrip.c (copy_elided_sections): Use SH_INFO_LINK_P, not just + SHF_INFO_LINK. + 2015-10-02 Mark Wielaard * strip.c (handle_elf): Don't move around allocated NOBITS sections. diff --git a/src/unstrip.c b/src/unstrip.c index d40df97d1..d193708a9 100644 --- a/src/unstrip.c +++ b/src/unstrip.c @@ -1526,7 +1526,7 @@ more sections in stripped file than debug file -- arguments reversed?")); if (sec->shdr.sh_link != SHN_UNDEF) shdr_mem.sh_link = ndx_section[sec->shdr.sh_link - 1]; - if (shdr_mem.sh_flags & SHF_INFO_LINK) + if (SH_INFO_LINK_P (&sec->shdr) && sec->shdr.sh_info != 0) shdr_mem.sh_info = ndx_section[sec->shdr.sh_info - 1]; if (strtab != NULL)