summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2019-06-03 18:00:20 +0200
committerMark Wielaard <mark@klomp.org>2019-06-03 18:00:20 +0200
commitd08c68fec94b26663257d24dbb8d94f2ed8935cd (patch)
tree39007ac4ea9659f88cc0737c6e72caaa851eac87
parentbfcf8b1fee8805b42b262baf352c58574df59362 (diff)
downloadelfutils-d08c68fec94b26663257d24dbb8d94f2ed8935cd.tar.gz
tests: elfcopy --reverse-offs should only swap sections next to each other.
The run-reverse-sections-self.sh (which really should have been called "swap-sections") could fail if the ELF file had sections that were not directly next to each other swapped. Add a check to make sure the swapped sections are actually directly next to each other. Signed-off-by: Mark Wielaard <mark@klomp.org>
-rw-r--r--tests/ChangeLog5
-rw-r--r--tests/elfcopy.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index b4877db5..e0387939 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-03 Mark Wielaard <mark@klomp.org>
+
+ * elfcopy.c (copy_elf): When swapping the sh_offsets of two sections,
+ make sure they are actually next to each other.
+
2019-05-12 Mark Wielaard <mark@klomp.org>
* Makefile.am (check_PROGRAMS): Add elfrdwrnop.
diff --git a/tests/elfcopy.c b/tests/elfcopy.c
index d457badb..4542222e 100644
--- a/tests/elfcopy.c
+++ b/tests/elfcopy.c
@@ -225,6 +225,7 @@ copy_elf (const char *in, const char *out, bool use_mmap, bool reverse_offs)
&& shdr.sh_addralign == 1
&& last_shdr.sh_type != SHT_NOBITS
&& shdr.sh_type != SHT_NOBITS
+ && last_shdr.sh_offset + last_shdr.sh_size == shdr.sh_offset
&& (phnum == 0
|| ((shdr.sh_flags & SHF_ALLOC) == 0
&& (last_shdr.sh_flags & SHF_ALLOC) == 0)))