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