Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 1 | #! /bin/sh |
Roland McGrath | 521c47d | 2008-04-11 07:01:58 +0000 | [diff] [blame] | 2 | # Copyright (C) 1999, 2000, 2002, 2003, 2005, 2007, 2008 Red Hat, Inc. |
Mark Wielaard | de2ed97 | 2012-06-05 17:15:16 +0200 | [diff] [blame] | 3 | # This file is part of elfutils. |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 4 | # Written by Ulrich Drepper <drepper@redhat.com>, 1999. |
Roland McGrath | 6d0c2e8 | 2006-04-05 00:59:43 +0000 | [diff] [blame] | 5 | # |
Mark Wielaard | de2ed97 | 2012-06-05 17:15:16 +0200 | [diff] [blame] | 6 | # This file is free software; you can redistribute it and/or modify |
| 7 | # it under the terms of the GNU General Public License as published by |
| 8 | # the Free Software Foundation; either version 3 of the License, or |
| 9 | # (at your option) any later version. |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 10 | # |
Mark Wielaard | de2ed97 | 2012-06-05 17:15:16 +0200 | [diff] [blame] | 11 | # elfutils is distributed in the hope that it will be useful, but |
Ulrich Drepper | 361df7d | 2006-04-04 21:38:57 +0000 | [diff] [blame] | 12 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
Mark Wielaard | de2ed97 | 2012-06-05 17:15:16 +0200 | [diff] [blame] | 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 14 | # GNU General Public License for more details. |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 15 | # |
Mark Wielaard | de2ed97 | 2012-06-05 17:15:16 +0200 | [diff] [blame] | 16 | # You should have received a copy of the GNU General Public License |
| 17 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
Ulrich Drepper | 361df7d | 2006-04-04 21:38:57 +0000 | [diff] [blame] | 18 | |
Roland McGrath | 1b8b446 | 2005-11-16 01:33:38 +0000 | [diff] [blame] | 19 | . $srcdir/test-subr.sh |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 20 | |
| 21 | original=${original:-testfile11} |
| 22 | stripped=${stripped:-testfile7} |
| 23 | debugout=${debugfile:+-f testfile.debug.temp -F $debugfile} |
| 24 | |
Roland McGrath | 521c47d | 2008-04-11 07:01:58 +0000 | [diff] [blame] | 25 | testfiles $original |
| 26 | test x$stripped = xtestfile.temp || testfiles $stripped $debugfile |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 27 | |
Roland McGrath | 4be1524 | 2007-04-25 03:09:33 +0000 | [diff] [blame] | 28 | tempfiles testfile.temp testfile.debug.temp testfile.unstrip |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 29 | |
Mark Wielaard | 86be792 | 2013-04-26 23:44:25 +0200 | [diff] [blame] | 30 | testrun ${abs_top_builddir}/src/strip -o testfile.temp $debugout $original |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 31 | |
Roland McGrath | 9aa8ef7 | 2007-05-18 08:59:43 +0000 | [diff] [blame] | 32 | status=0 |
| 33 | |
| 34 | cmp $stripped testfile.temp || status=$? |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 35 | |
| 36 | # Check elflint and the expected result. |
Mark Wielaard | 2203560 | 2016-02-04 09:53:41 +0100 | [diff] [blame] | 37 | testrun ${abs_top_builddir}/src/elflint --gnu -q testfile.temp || status=$? |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 38 | |
| 39 | test -z "$debugfile" || { |
Roland McGrath | 9aa8ef7 | 2007-05-18 08:59:43 +0000 | [diff] [blame] | 40 | cmp $debugfile testfile.debug.temp || status=$? |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 41 | |
| 42 | # Check elflint and the expected result. |
Mark Wielaard | 2203560 | 2016-02-04 09:53:41 +0100 | [diff] [blame] | 43 | testrun ${abs_top_builddir}/src/elflint --gnu -q -d testfile.debug.temp || status=$? |
Roland McGrath | 4be1524 | 2007-04-25 03:09:33 +0000 | [diff] [blame] | 44 | |
| 45 | # Now test unstrip recombining those files. |
Mark Wielaard | 86be792 | 2013-04-26 23:44:25 +0200 | [diff] [blame] | 46 | testrun ${abs_top_builddir}/src/unstrip -o testfile.unstrip testfile.temp testfile.debug.temp |
Roland McGrath | 4be1524 | 2007-04-25 03:09:33 +0000 | [diff] [blame] | 47 | |
| 48 | # Check that it came back whole. |
Mark Wielaard | 86be792 | 2013-04-26 23:44:25 +0200 | [diff] [blame] | 49 | testrun ${abs_top_builddir}/src/elfcmp --hash-inexact $original testfile.unstrip |
Ulrich Drepper | b08d5a8 | 2005-07-26 05:00:05 +0000 | [diff] [blame] | 50 | } |
| 51 | |
Mark Wielaard | e0b3232 | 2017-06-07 14:05:36 +0200 | [diff] [blame] | 52 | # test strip -g |
| 53 | testrun ${abs_top_builddir}/src/strip -g -o testfile.temp $original |
| 54 | |
| 55 | # Buggy eu-strip created multiple .shstrtab sections |
| 56 | shstrtab_SECS=$(testrun ${abs_top_builddir}/src/readelf -S testfile.temp | grep '.shstrtab' | wc --lines) |
| 57 | test $shstrtab_SECS -eq 1 || |
| 58 | { echo "*** failure not just one '.shstrtab' testfile.temp ($shstrtab_SECS)"; status=1; } |
| 59 | |
Mark Wielaard | 0d01165 | 2015-06-16 14:05:35 +0200 | [diff] [blame] | 60 | # Now strip in-place and make sure it is smaller. |
Mark Wielaard | 3a45dbb | 2015-10-04 23:47:47 +0200 | [diff] [blame] | 61 | SIZE_original=$(stat -c%s $original) |
| 62 | testrun ${abs_top_builddir}/src/strip $original |
| 63 | SIZE_stripped=$(stat -c%s $original) |
| 64 | test $SIZE_stripped -lt $SIZE_original || |
| 65 | { echo "*** failure in-place strip file not smaller $original"; status=1; } |
Mark Wielaard | 0d01165 | 2015-06-16 14:05:35 +0200 | [diff] [blame] | 66 | |
Roland McGrath | 521c47d | 2008-04-11 07:01:58 +0000 | [diff] [blame] | 67 | tempfiles testfile.sections |
Mark Wielaard | 86be792 | 2013-04-26 23:44:25 +0200 | [diff] [blame] | 68 | testrun ${abs_top_builddir}/src/readelf -S testfile.temp > testfile.sections || status=$? |
Roland McGrath | 521c47d | 2008-04-11 07:01:58 +0000 | [diff] [blame] | 69 | fgrep ' .debug_' testfile.sections && status=1 |
| 70 | |
Roland McGrath | 9aa8ef7 | 2007-05-18 08:59:43 +0000 | [diff] [blame] | 71 | exit $status |