1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2015 Red Hat, Inc. 3da0c48c4Sopenharmony_ci# This file is part of elfutils. 4da0c48c4Sopenharmony_ci# 5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify 6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by 7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or 8da0c48c4Sopenharmony_ci# (at your option) any later version. 9da0c48c4Sopenharmony_ci# 10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but 11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13da0c48c4Sopenharmony_ci# GNU General Public License for more details. 14da0c48c4Sopenharmony_ci# 15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License 16da0c48c4Sopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>. 17da0c48c4Sopenharmony_ci 18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh 19da0c48c4Sopenharmony_ci 20da0c48c4Sopenharmony_ci# uncompress -> gnucompress -> uncompress -> elfcompress -> uncompress 21da0c48c4Sopenharmony_citestrun_elfcompress_file() 22da0c48c4Sopenharmony_ci{ 23da0c48c4Sopenharmony_ci infile="$1" 24da0c48c4Sopenharmony_ci uncompressedfile="${infile}.uncompressed" 25da0c48c4Sopenharmony_ci tempfiles "$uncompressedfile" 26da0c48c4Sopenharmony_ci 27da0c48c4Sopenharmony_ci echo "uncompress $infile -> $uncompressedfile" 28da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${uncompressedfile} ${infile} 29da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elflint --gnu-ld ${uncompressedfile} 30da0c48c4Sopenharmony_ci 31da0c48c4Sopenharmony_ci SIZE_uncompressed=$(stat -c%s $uncompressedfile) 32da0c48c4Sopenharmony_ci 33da0c48c4Sopenharmony_ci gnucompressedfile="${infile}.gnu" 34da0c48c4Sopenharmony_ci tempfiles "$gnucompressedfile" 35da0c48c4Sopenharmony_ci echo "compress gnu $uncompressedfile -> $gnucompressedfile" 36da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcompress -v -t gnu -o ${gnucompressedfile} ${uncompressedfile} 37da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elflint --gnu-ld ${gnucompressedfile} 38da0c48c4Sopenharmony_ci 39da0c48c4Sopenharmony_ci SIZE_gnucompressed=$(stat -c%s $gnucompressedfile) 40da0c48c4Sopenharmony_ci test $SIZE_gnucompressed -lt $SIZE_uncompressed || 41da0c48c4Sopenharmony_ci { echo "*** failure $gnucompressedfile not smaller"; exit -1; } 42da0c48c4Sopenharmony_ci 43da0c48c4Sopenharmony_ci gnuuncompressedfile="${infile}.gnu.uncompressed" 44da0c48c4Sopenharmony_ci tempfiles "$gnuuncompressedfile" 45da0c48c4Sopenharmony_ci echo "uncompress $gnucompressedfile -> $gnuuncompressedfile" 46da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${gnuuncompressedfile} ${gnucompressedfile} 47da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${gnuuncompressedfile} 48da0c48c4Sopenharmony_ci 49da0c48c4Sopenharmony_ci elfcompressedfile="${infile}.gabi" 50da0c48c4Sopenharmony_ci tempfiles "$elfcompressedfile" 51da0c48c4Sopenharmony_ci echo "compress gabi $uncompressedfile -> $elfcompressedfile" 52da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcompress -v -t zlib -o ${elfcompressedfile} ${uncompressedfile} 53da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elflint --gnu-ld ${elfcompressedfile} 54da0c48c4Sopenharmony_ci 55da0c48c4Sopenharmony_ci SIZE_elfcompressed=$(stat -c%s $elfcompressedfile) 56da0c48c4Sopenharmony_ci test $SIZE_elfcompressed -lt $SIZE_uncompressed || 57da0c48c4Sopenharmony_ci { echo "*** failure $elfcompressedfile not smaller"; exit -1; } 58da0c48c4Sopenharmony_ci 59da0c48c4Sopenharmony_ci elfuncompressedfile="${infile}.gabi.uncompressed" 60da0c48c4Sopenharmony_ci tempfiles "$elfuncompressedfile" 61da0c48c4Sopenharmony_ci echo "uncompress $elfcompressedfile -> $elfuncompressedfile" 62da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${elfuncompressedfile} ${elfcompressedfile} 63da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${elfuncompressedfile} 64da0c48c4Sopenharmony_ci} 65da0c48c4Sopenharmony_ci 66da0c48c4Sopenharmony_citestrun_elfcompress() 67da0c48c4Sopenharmony_ci{ 68da0c48c4Sopenharmony_ci testfile="$1" 69da0c48c4Sopenharmony_ci testfiles ${testfile} 70da0c48c4Sopenharmony_ci testrun_elfcompress_file ${testfile} 71da0c48c4Sopenharmony_ci 72da0c48c4Sopenharmony_ci # Merge the string tables to make things a little more interesting. 73da0c48c4Sopenharmony_ci mergedfile="${testfile}.merged" 74da0c48c4Sopenharmony_ci tempfiles ${mergedfile} 75da0c48c4Sopenharmony_ci echo "merging string tables ${testfile} -> ${mergedfile}" 76da0c48c4Sopenharmony_ci testrun ${abs_top_builddir}/tests/elfstrmerge -o ${mergedfile} ${testfile} 77da0c48c4Sopenharmony_ci testrun_elfcompress_file ${mergedfile} 78da0c48c4Sopenharmony_ci} 79da0c48c4Sopenharmony_ci 80da0c48c4Sopenharmony_ci# Random ELF32 testfile 81da0c48c4Sopenharmony_citestrun_elfcompress testfile4 82da0c48c4Sopenharmony_ci 83da0c48c4Sopenharmony_ci# Random ELF64 testfile 84da0c48c4Sopenharmony_citestrun_elfcompress testfile12 85da0c48c4Sopenharmony_ci 86da0c48c4Sopenharmony_ci# Random ELF64BE testfile 87da0c48c4Sopenharmony_citestrun_elfcompress testfileppc64 88da0c48c4Sopenharmony_ci 89da0c48c4Sopenharmony_ci# Random ELF32BE testfile 90da0c48c4Sopenharmony_citestrun_elfcompress testfileppc32 91da0c48c4Sopenharmony_ci 92da0c48c4Sopenharmony_ci# Already compressed files 93da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgnu64 94da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgnu64be 95da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgabi64 96da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgabi64be 97da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgnu32 98da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgnu32be 99da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgabi32 100da0c48c4Sopenharmony_citestrun_elfcompress testfile-zgabi32be 101da0c48c4Sopenharmony_ci 102da0c48c4Sopenharmony_ciexit 0 103