+2017-04-05 Mark Wielaard <mark@klomp.org>
+
+ * elflint.c (check_elf_header): Decompress all sections.
+
2017-03-28 Mark Wielaard <mark@klomp.org>
* elflint (check_group): Don't check if there is no flag word.
ERROR (gettext ("invalid section header index\n"));
}
- /* Check the shdrs actually exist. */
+ /* Check the shdrs actually exist. And uncompress them before
+ further checking. Indexes between sections reference the
+ uncompressed data. */
unsigned int scnt;
Elf_Scn *scn = NULL;
for (scnt = 1; scnt < shnum; ++scnt)
scn = elf_nextscn (ebl->elf, scn);
if (scn == NULL)
break;
+ /* If the section wasn't compressed this does nothing, but
+ returns an error. We don't care. */
+ elf_compress (scn, 0, 0);
}
if (scnt < shnum)
ERROR (gettext ("Can only check %u headers, shnum was %u\n"), scnt, shnum);
+2017-04-05 Mark Wielaard <mark@klomp.org>
+
+ * test-subr.sh (testrun_on_self_compressed): New function.
+ * run-elflint-self.sh: Call testrun_on_self_compressed.
+ * run-elflint-test.sh: Add testfile42z and testfile-s390x-hash-bothz.
+
2017-03-30 Mark Wielaard <mark@klomp.org>
* peel_type.c: New file.
#! /bin/sh
-# Copyright (C) 2005, 2007 Red Hat, Inc.
+# Copyright (C) 2005, 2007, 2017 Red Hat, Inc.
# This file is part of elfutils.
# Written by Ulrich Drepper <drepper@redhat.com>, 2005.
#
. $srcdir/test-subr.sh
testrun_on_self ${abs_top_builddir}/src/elflint --quiet --gnu-ld
+testrun_on_self_compressed ${abs_top_builddir}/src/elflint --quiet --gnu-ld
testfiles testfile42
testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile42
+# Contains debuginfo, compress it, recheck
+tempfiles testfile42z
+testrun ${abs_top_builddir}/src/elfcompress -f -q -o testfile42z testfile42
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile42z
+
testfiles testfile46
testrun ${abs_top_builddir}/src/elflint -q testfile46
testfiles testfile-s390x-hash-both
testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile-s390x-hash-both
+# Compress the symtab/strtab just because and recheck
+tempfiles testfile-s390x-hash-bothz
+testrun ${abs_top_builddir}/src/elfcompress -f -q --name='.s??tab' -o testfile-s390x-hash-bothz testfile-s390x-hash-both
+testrun ${abs_top_builddir}/src/elflint -q --gnu-ld testfile-s390x-hash-bothz
+
exit 0
#! /bin/sh
-# Copyright (C) 2005-2015 Red Hat, Inc.
+# Copyright (C) 2005-2015, 2017 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
if test $exit_status != 0; then exit $exit_status; fi
}
+# Compress the files first. Compress both debug sections and symtab.
+testrun_on_self_compressed()
+{
+ exit_status=0
+
+ for file in $self_test_files; do
+ tempfiles ${file}z
+ testrun ${abs_top_builddir}/src/elfcompress -f -q -o ${file}z ${file}
+ testrun ${abs_top_builddir}/src/elfcompress -f -q --name='.s??tab' ${file}z
+
+ testrun $* ${file}z \
+ || { echo "*** failure in $* ${file}z"; exit_status=1; }
+ done
+
+ # Only exit if something failed
+ if test $exit_status != 0; then exit $exit_status; fi
+}
+
# Same as above, but redirects stdout to /dev/null
testrun_on_self_quiet()
{