diff options
author | Mark Wielaard <mjw@redhat.com> | 2015-10-02 16:31:36 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2015-10-05 21:58:59 +0200 |
commit | 2e084502768cc845bacc2457c22d097f49808751 (patch) | |
tree | eb2753f7d3ba09b7a8cadd42b4f61b77de24089b /src/unstrip.c | |
parent | df7dfab451246e8b088040e052ca01f9d6aba774 (diff) | |
download | elfutils-2e084502768cc845bacc2457c22d097f49808751.tar.gz |
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 <mjw@redhat.com>
Diffstat (limited to 'src/unstrip.c')
-rw-r--r-- | src/unstrip.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/unstrip.c b/src/unstrip.c index d40df97d..d193708a 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) |