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]

[PATCH] 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 to as section index.

Found by run-strip-strmerge.sh test with older binutils.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 src/ChangeLog | 5 +++++
 src/unstrip.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 72bb0ab..411c70b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,10 @@
 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.
 	Don't just mark the section header string table as unused.
 	* unstrip.c (copy_elided_sections): Add header names to strtab if
diff --git a/src/unstrip.c b/src/unstrip.c
index d40df97..d193708 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)
-- 
1.8.3.1


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