Squashed 'third_party/elfutils/' content from commit 555e15e

Change-Id: I61cde98949e47e5c8c09c33260de17f30921be79
git-subtree-dir: third_party/elfutils
git-subtree-split: 555e15ebe8bf1eb33d00747173cfc80cc65648a4
diff --git a/tests/run-compress-test.sh b/tests/run-compress-test.sh
new file mode 100755
index 0000000..a6a298f
--- /dev/null
+++ b/tests/run-compress-test.sh
@@ -0,0 +1,102 @@
+#! /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