summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2015-10-16 13:15:01 +0200
committerMark Wielaard <mjw@redhat.com>2015-10-16 13:15:01 +0200
commit61c25a1c5b507629fa69b205a0e22d142092c6d1 (patch)
tree1aa7763af561f2eceda01ce3279b51c1d80d4be5
parentfd2e84cb31fa7585baa7daa9dae03a8ac725ae05 (diff)
elflint: Reject mergable string sections as relocation target.
Mergable sections can be the target of a relocation, but only if they contain items of the same size. So only reject mergable string sections as target of a relocation section. Signed-off-by: Mark Wielaard <mjw@redhat.com>
-rw-r--r--src/ChangeLog5
-rw-r--r--src/elflint.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index f459e117..0d2b1d61 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-16 Mark Wielaard <mjw@redhat.com>
+
+ * elflint.c (check_reloc_shdr): Reject only desthdrs if they have both
+ SHF_MERGE and SHF_STRINGS set.
+
2015-10-13 Jose E. Marchesi <jose.marchesi@oracle.com>
* elflint.c (check_sections): Do not rely on
diff --git a/src/elflint.c b/src/elflint.c
index 0a6f0df3..eada4d50 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -1254,9 +1254,10 @@ section [%2d] '%s': sh_info should be zero\n"),
}
}
- if (((*destshdrp)->sh_flags & (SHF_MERGE | SHF_STRINGS)) != 0)
+ if ((((*destshdrp)->sh_flags & SHF_MERGE) != 0)
+ && ((*destshdrp)->sh_flags & SHF_STRINGS) != 0)
ERROR (gettext ("\
-section [%2d] '%s': no relocations for merge-able sections possible\n"),
+section [%2d] '%s': no relocations for merge-able string sections possible\n"),
idx, section_name (ebl, idx));
}
}