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 <mjw@redhat.com>
+2015-10-02 Mark Wielaard <mjw@redhat.com>
+
+ * unstrip.c (copy_elided_sections): Use SH_INFO_LINK_P, not just
+ SHF_INFO_LINK.
+
2015-10-02 Mark Wielaard <mjw@redhat.com>
* strip.c (handle_elf): Don't move around allocated NOBITS sections.
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)