| #! /bin/sh |
| # Copyright (C) 2015 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 |
| |
| # uncompress -> gnucompress -> uncompress -> elfcompress -> uncompress |
| testrun_elfcompress_file() |
| { |
| infile="$1" |
| uncompressedfile="${infile}.uncompressed" |
| tempfiles "$uncompressedfile" |
| |
| echo "uncompress $infile -> $uncompressedfile" |
| testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${uncompressedfile} ${infile} |
| testrun ${abs_top_builddir}/src/elflint --gnu-ld ${uncompressedfile} |
| |
| SIZE_uncompressed=$(stat -c%s $uncompressedfile) |
| |
| gnucompressedfile="${infile}.gnu" |
| tempfiles "$gnucompressedfile" |
| echo "compress gnu $uncompressedfile -> $gnucompressedfile" |
| testrun ${abs_top_builddir}/src/elfcompress -v -t gnu -o ${gnucompressedfile} ${uncompressedfile} |
| testrun ${abs_top_builddir}/src/elflint --gnu-ld ${gnucompressedfile} |
| |
| SIZE_gnucompressed=$(stat -c%s $gnucompressedfile) |
| test $SIZE_gnucompressed -lt $SIZE_uncompressed || |
| { echo "*** failure $gnucompressedfile not smaller"; exit -1; } |
| |
| gnuuncompressedfile="${infile}.gnu.uncompressed" |
| tempfiles "$gnuuncompressedfile" |
| echo "uncompress $gnucompressedfile -> $gnuuncompressedfile" |
| testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${gnuuncompressedfile} ${gnucompressedfile} |
| testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${gnuuncompressedfile} |
| |
| elfcompressedfile="${infile}.gabi" |
| tempfiles "$elfcompressedfile" |
| echo "compress gabi $uncompressedfile -> $elfcompressedfile" |
| testrun ${abs_top_builddir}/src/elfcompress -v -t zlib -o ${elfcompressedfile} ${uncompressedfile} |
| testrun ${abs_top_builddir}/src/elflint --gnu-ld ${elfcompressedfile} |
| |
| SIZE_elfcompressed=$(stat -c%s $elfcompressedfile) |
| test $SIZE_elfcompressed -lt $SIZE_uncompressed || |
| { echo "*** failure $elfcompressedfile not smaller"; exit -1; } |
| |
| elfuncompressedfile="${infile}.gabi.uncompressed" |
| tempfiles "$elfuncompressedfile" |
| echo "uncompress $elfcompressedfile -> $elfuncompressedfile" |
| testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${elfuncompressedfile} ${elfcompressedfile} |
| testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${elfuncompressedfile} |
| } |
| |
| testrun_elfcompress() |
| { |
| testfile="$1" |
| testfiles ${testfile} |
| testrun_elfcompress_file ${testfile} |
| |
| # Merge the string tables to make things a little more interesting. |
| mergedfile="${testfile}.merged" |
| tempfiles ${mergedfile} |
| echo "merging string tables ${testfile} -> ${mergedfile}" |
| testrun ${abs_top_builddir}/tests/elfstrmerge -o ${mergedfile} ${testfile} |
| testrun_elfcompress_file ${mergedfile} |
| } |
| |
| # Random ELF32 testfile |
| testrun_elfcompress testfile4 |
| |
| # Random ELF64 testfile |
| testrun_elfcompress testfile12 |
| |
| # Random ELF64BE testfile |
| testrun_elfcompress testfileppc64 |
| |
| # Random ELF32BE testfile |
| testrun_elfcompress testfileppc32 |
| |
| # Already compressed files |
| testrun_elfcompress testfile-zgnu64 |
| testrun_elfcompress testfile-zgnu64be |
| testrun_elfcompress testfile-zgabi64 |
| testrun_elfcompress testfile-zgabi64be |
| testrun_elfcompress testfile-zgnu32 |
| testrun_elfcompress testfile-zgnu32be |
| testrun_elfcompress testfile-zgabi32 |
| testrun_elfcompress testfile-zgabi32be |
| |
| exit 0 |