forked from roolebo/elfutils
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
strip,unstrip: Use and set shdrstrndx consistently.
In various places in strip we used e_shstrndx instead of shdrstrndx and we didn't setup the shdrstrndx for the debug file. In unstrip we forgot to copy the shdrstrndx in case the -o output option was used. Added a new testcase that adds many sections to a testfile and runs strip, elflint, unstrip and elfcmp. Signed-off-by: Mark Wielaard <[email protected]>
- Loading branch information
Mark Wielaard
committed
Sep 13, 2018
1 parent
b14633d
commit d5b0502
Showing
6 changed files
with
140 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,10 @@ | ||
2018-09-13 Mark Wielaard <[email protected]> | ||
|
||
* strip.c (handle_elf): Check against shstrndx, not e_shstrndx. | ||
Explicitly set shdrstrndx for debug file. | ||
* unstrip.c (copy_elf): Explicitly copy shstrndx. | ||
(find_alloc_sections_prelink): Document shnum usage. | ||
|
||
2018-09-13 Mark Wielaard <[email protected]> | ||
|
||
* elflint.c (check_elf_header): Use shnum instead of e_shnum for all | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,9 @@ | ||
2018-09-13 Mark Wielaard <[email protected]> | ||
|
||
* run-strip-test-many.sh: New test. | ||
* Makefile.am (TESTS): Add run-strip-test-many.sh. | ||
(EXTRA_DIST): Likewise. | ||
|
||
2018-09-13 Mark Wielaard <[email protected]> | ||
|
||
* run-typeiter-many.sh: New test. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#! /bin/sh | ||
# Copyright (C) 2018 Red Hat, Inc. | ||
# This file is part of elfutils. | ||
# | ||
# This file is free software; you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License as published by | ||
# the Free Software Foundation; either version 3 of the License, or | ||
# (at your option) any later version. | ||
# | ||
# elfutils is distributed in the hope that it will be useful, but | ||
# WITHOUT ANY WARRANTY; without even the implied warranty of | ||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
# GNU General Public License for more details. | ||
# | ||
# You should have received a copy of the GNU General Public License | ||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
. $srcdir/test-subr.sh | ||
|
||
# Use the original file from run-strip-test.sh but with many sections | ||
testfiles testfile | ||
tempfiles testfile.strip testfile.debug testfile.unstrip | ||
|
||
echo "Adding sections to testfile" | ||
testrun ${abs_builddir}/addsections 65535 testfile | ||
|
||
echo "Testing strip -o" | ||
testrun ${abs_top_builddir}/src/strip -o testfile.strip -f testfile.debug testfile | ||
|
||
# Do the parts check out? | ||
echo "elflint testfile.strip" | ||
testrun ${abs_top_builddir}/src/elflint --gnu -q testfile.strip | ||
echo "elflint testfile.debug" | ||
testrun ${abs_top_builddir}/src/elflint --gnu -q -d testfile.debug | ||
|
||
# Now test unstrip recombining those files. | ||
echo "unstrip" | ||
testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.strip testfile.debug | ||
echo "elfcmp" | ||
testrun ${abs_top_builddir}/src/elfcmp testfile testfile.unstrip | ||
|
||
# test strip -g | ||
echo "Testing strip -g" | ||
testrun ${abs_top_builddir}/src/strip -g -o testfile.strip -f testfile.debug testfile | ||
|
||
# Do the parts check out? | ||
echo "elflint testfile.strip" | ||
testrun ${abs_top_builddir}/src/elflint --gnu -q testfile.strip | ||
echo "elflint testfile.debug" | ||
testrun ${abs_top_builddir}/src/elflint --gnu -q -d testfile.debug | ||
|
||
# Now strip "in-place" and make sure it is smaller. | ||
echo "TEsting strip in-place" | ||
SIZE_original=$(stat -c%s testfile) | ||
echo "original size $SIZE_original" | ||
|
||
testrun ${abs_top_builddir}/src/strip testfile | ||
SIZE_stripped=$(stat -c%s testfile) | ||
echo "stripped size $SIZE_stripped" | ||
test $SIZE_stripped -lt $SIZE_original || | ||
{ echo "*** failure in-place strip file not smaller $original"; exit 1; } | ||
|
||
echo "elflint in-place" | ||
testrun ${abs_top_builddir}/src/elflint --gnu -q testfile | ||
|
||
exit 0 |