This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 1/6] libdwelf: Add dwelf_scn_gnu_compressed_size.


Helper function to get the size of a GNU compressed zdebug section.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 libdw/ChangeLog                          |   4 ++
 libdw/libdw.map                          |   5 ++
 libdwelf/ChangeLog                       |   7 ++
 libdwelf/Makefile.am                     |   4 +-
 libdwelf/dwelf_scn_gnu_compressed_size.c |  77 ++++++++++++++++++++++
 libdwelf/libdwelf.h                      |   9 ++-
 tests/ChangeLog                          |  12 ++++
 tests/Makefile.am                        |  10 ++-
 tests/dwelfgnucompressed.c               | 104 +++++++++++++++++++++++++++++
 tests/run-dwelfgnucompressed.sh          | 108 +++++++++++++++++++++++++++++++
 tests/testfile-zgnu32.bz2                | Bin 0 -> 780 bytes
 tests/testfile-zgnu32be.bz2              | Bin 0 -> 779 bytes
 tests/testfile-zgnu64.bz2                | Bin 0 -> 785 bytes
 tests/testfile-zgnu64be.bz2              | Bin 0 -> 795 bytes
 14 files changed, 334 insertions(+), 6 deletions(-)
 create mode 100644 libdwelf/dwelf_scn_gnu_compressed_size.c
 create mode 100644 tests/dwelfgnucompressed.c
 create mode 100755 tests/run-dwelfgnucompressed.sh
 create mode 100755 tests/testfile-zgnu32.bz2
 create mode 100755 tests/testfile-zgnu32be.bz2
 create mode 100755 tests/testfile-zgnu64.bz2
 create mode 100755 tests/testfile-zgnu64be.bz2

diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 5218145..c59b3f4 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,7 @@
+2015-10-28  Mark Wielaard  <mjw@redhat.com>
+
+	* libdw.map (ELFUTILS_0.165): New. Add dwelf_scn_gnu_compressed_size.
+
 2015-10-16  Dmitry V. Levin  <ldv@altlinux.org>
 
 	* dwarf_getsrclines.c (read_srclines): Initialize state early.
diff --git a/libdw/libdw.map b/libdw/libdw.map
index 1d4cbb0..1681b6b 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -322,3 +322,8 @@ ELFUTILS_0.161 {
     dwarf_macro_getparamcnt;
     dwarf_macro_param;
 } ELFUTILS_0.160;
+
+ELFUTILS_0.165 {
+  global:
+    dwelf_scn_gnu_compressed_size;
+} ELFUTILS_0.161;
diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog
index f182ecf..fe8af1b 100644
--- a/libdwelf/ChangeLog
+++ b/libdwelf/ChangeLog
@@ -1,3 +1,10 @@
+2015-10-28  Mark Wielaard  <mjw@redhat.com>
+
+	* Makefile.am (libdwelf_a_SOURCES): Add
+	dwelf_scn_gnu_compressed_size.c.
+	* dwelf_scn_gnu_compressed_size.c: Likewise.
+	* libdwelf.h (dwelf_scn_gnu_compressed_size): New declaration.
+
 2015-10-14  Chih-Hung Hsieh  <chh@google.com>
 
 	* dwelf_elf_gnu_build_id.c (find_elf_build_id): Move nested function
diff --git a/libdwelf/Makefile.am b/libdwelf/Makefile.am
index cd4b7dd..4de4b2e 100644
--- a/libdwelf/Makefile.am
+++ b/libdwelf/Makefile.am
@@ -2,7 +2,7 @@
 ##
 ## Process this file with automake to create Makefile.in
 ##
-## Copyright (C) 2014 Red Hat, Inc.
+## Copyright (C) 2014, 2015 Red Hat, Inc.
 ## This file is part of elfutils.
 ##
 ## This file is free software; you can redistribute it and/or modify
@@ -40,7 +40,7 @@ pkginclude_HEADERS = libdwelf.h
 noinst_HEADERS = libdwelfP.h
 
 libdwelf_a_SOURCES = dwelf_elf_gnu_debuglink.c dwelf_dwarf_gnu_debugaltlink.c \
-	dwelf_elf_gnu_build_id.c
+		     dwelf_elf_gnu_build_id.c dwelf_scn_gnu_compressed_size.c
 
 libdwelf = $(libdw)
 
diff --git a/libdwelf/dwelf_scn_gnu_compressed_size.c b/libdwelf/dwelf_scn_gnu_compressed_size.c
new file mode 100644
index 0000000..d39b702
--- /dev/null
+++ b/libdwelf/dwelf_scn_gnu_compressed_size.c
@@ -0,0 +1,77 @@
+/* Return size of GNU compressed section.
+   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 either
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at
+       your option) any later version
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at
+       your option) any later version
+
+   or both in parallel, as here.
+
+   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 copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libdwelfP.h"
+#include "libelfP.h"
+
+ssize_t
+dwelf_scn_gnu_compressed_size (Elf_Scn *scn)
+{
+  if (scn == NULL)
+    return -1;
+
+  GElf_Shdr shdr;
+  if (gelf_getshdr (scn, &shdr) == NULL)
+    return -1;
+
+  /* Allocated or no bits sections can never be compressed.  */
+  if ((shdr.sh_flags & SHF_ALLOC) != 0
+      || shdr.sh_type == SHT_NULL
+      || shdr.sh_type == SHT_NOBITS)
+    return -1;
+
+  Elf_Data *d = elf_rawdata (scn, NULL);
+  if (d == NULL)
+    return -1;
+
+  if (d->d_size >= 4 + 8
+      && memcmp (d->d_buf, "ZLIB", 4) == 0)
+    {
+      /* There is a 12-byte header of "ZLIB" followed by
+	 an 8-byte big-endian size.  There is only one type and
+	 alignment isn't preserved separately.  */
+      uint64_t size;
+      memcpy (&size, d->d_buf + 4, sizeof size);
+      size = be64toh (size);
+
+      /* One more sanity check, size should be bigger than original
+	 data size plus some overhead (4 chars ZLIB + 8 bytes size + 6
+	 bytes zlib stream overhead + 5 bytes overhead max for one 16K
+	 block) and should fit into a size_t.  */
+      if (size + 4 + 8 + 6 + 5 < d->d_size || size > SIZE_MAX)
+	return -1;
+
+      return size;
+    }
+
+  return -1;
+}
diff --git a/libdwelf/libdwelf.h b/libdwelf/libdwelf.h
index e16dc0f..7f7f679 100644
--- a/libdwelf/libdwelf.h
+++ b/libdwelf/libdwelf.h
@@ -1,5 +1,5 @@
 /* Interfaces for libdwelf. DWARF ELF Low-level Functions.
-   Copyright (C) 2014 Red Hat, Inc.
+   Copyright (C) 2014, 2015 Red Hat, Inc.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -65,6 +65,13 @@ extern ssize_t dwelf_dwarf_gnu_debugaltlink (Dwarf *dwarf,
    note.  Returns -1 in case of malformed data or other errors.  */
 extern ssize_t dwelf_elf_gnu_build_id (Elf *elf, const void **build_idp);
 
+/* Returns the size of the uncompressed data of a GNU compressed
+   section.  The section name should start with .zdebug (but this
+   isn't checked by this function).  If the section isn't compressed
+   (the section data doesn't start with ZLIB) -1 is returned. If an
+   error occured -1 is returned and elf_errno is set.  */
+extern ssize_t dwelf_scn_gnu_compressed_size (Elf_Scn *scn);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 69a25fc..64889d4 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,15 @@
+2015-10-28  Mark Wielaard  <mjw@redhat.com>
+
+	* dwelfgnucompressed.c: New file.
+	* run-dwelfgnucompressed.sh: New test.
+	* testfile-zgnu32.bz2: New testfile.
+	* testfile-zgnu64.bz2: Likewise.
+	* Makefile.am (check_PROGRAMS): Add dwelfgnucompressed.
+	(TESTS): Add run-dwelfgnucompressed.sh.
+	(EXTRA_DIST): Add run-dwelfgnucompressed.sh, testfile-zgnu32.bz2,
+	testfile-zgnu64.bz2, testfile-zgnu32be.bz2, testfile-zgnu64be.bz2.
+	(dwelfgnucompressed_LDADD): New variable.
+
 2015-10-16  Mark Wielaard  <mjw@redhat.com>
 
 	* Makefile.am [BUILD_STATIC] (libdw): Add -lz.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 30cf137..349f88f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -52,7 +52,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
 		  backtrace-data backtrace-dwarf debuglink debugaltlink \
 		  buildid deleted deleted-lib.so aggregate_size vdsosyms \
 		  getsrc_die strptr newdata elfstrtab dwfl-proc-attach \
-		  elfshphehdr elfstrmerge
+		  elfshphehdr elfstrmerge dwelfgnucompressed
 
 asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
 	    asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -120,7 +120,7 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
 	run-readelf-dwz-multi.sh run-allfcts-multi.sh run-deleted.sh \
 	run-linkmap-cut.sh run-aggregate-size.sh vdsosyms run-readelf-A.sh \
 	run-getsrc-die.sh run-strptr.sh newdata elfstrtab dwfl-proc-attach \
-	elfshphehdr run-lfs-symbols.sh
+	elfshphehdr run-lfs-symbols.sh run-dwelfgnucompressed.sh
 
 if !BIARCH
 export ELFUTILS_DISABLE_BIARCH = 1
@@ -304,7 +304,10 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     testfile-x32-core.bz2 testfile-x32.bz2 \
 	     backtrace.x32.core.bz2 backtrace.x32.exec.bz2 \
 	     testfile-x32-s.bz2 testfile-x32-d.bz2 testfile-x32-debug.bz2 \
-	     run-lfs-symbols.sh lfs-symbols testfile-nolfs.bz2
+	     run-lfs-symbols.sh lfs-symbols testfile-nolfs.bz2 \
+	     testfile-zgnu32.bz2 testfile-zgnu64.bz2 \
+	     testfile-zgnu32be.bz2 testfile-zgnu64be.bz2 \
+	     run-dwelfgnucompressed.sh
 
 if USE_VALGRIND
 valgrind_cmd='valgrind -q --error-exitcode=1 --run-libc-freeres=no'
@@ -453,6 +456,7 @@ dwfl_proc_attach_LDADD = $(libdw)
 dwfl_proc_attach_LDFLAGS = -pthread $(AM_LDFLAGS)
 elfshphehdr_LDADD =$(libelf)
 elfstrmerge_LDADD = $(libebl) $(libelf)
+dwelfgnucompressed_LDADD = $(libelf) $(libdw)
 
 if GCOV
 check: check-am coverage
diff --git a/tests/dwelfgnucompressed.c b/tests/dwelfgnucompressed.c
new file mode 100644
index 0000000..0132271
--- /dev/null
+++ b/tests/dwelfgnucompressed.c
@@ -0,0 +1,104 @@
+/* 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/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <assert.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <inttypes.h>
+
+#include ELFUTILS_HEADER(elf)
+#include ELFUTILS_HEADER(dwelf)
+#include <gelf.h>
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+  int cnt;
+
+  elf_version (EV_CURRENT);
+
+  for (cnt = 1; cnt < argc; ++cnt)
+    {
+      int fd = open (argv[cnt], O_RDONLY);
+
+      Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
+      if (elf == NULL)
+	{
+	  printf ("%s not usable %s\n", argv[cnt], elf_errmsg (-1));
+	  result = 1;
+	  close (fd);
+	  continue;
+	}
+
+      size_t shdrstrndx;
+      if (elf_getshdrstrndx (elf, &shdrstrndx) == -1)
+	{
+	  printf ("elf_getshdrstrnd failed %s\n", elf_errmsg (-1));
+	  result = 1;
+	  close (fd);
+	  continue;
+	}
+
+      Elf_Scn *scn = NULL;
+      while ((scn = elf_nextscn (elf, scn)) != NULL)
+	{
+	  int idx = elf_ndxscn (scn);
+	  GElf_Shdr shdr;
+	  if (gelf_getshdr (scn, &shdr) == NULL)
+	    {
+	      printf ("gelf_getshdr failed: %s\n", elf_errmsg (-1));
+	      result = 1;
+	      break;
+	    }
+
+	  const char *sname = elf_strptr (elf, shdrstrndx, shdr.sh_name);
+	  if (sname == NULL)
+	    {
+	      printf ("couldn't get section name: %s\n", elf_errmsg (-1));
+	      result = 1;
+	      break;
+	    }
+
+	  if (strncmp(".zdebug", sname, strlen (".zdebug")) == 0)
+	    {
+	      ssize_t size;
+	      if ((size = dwelf_scn_gnu_compressed_size (scn)) == -1)
+		{
+		  printf ("dwelf_scn_gnu_compressed_size failed: %s\n",
+			  elf_errmsg (-1));
+		  result = 1;
+		  break;
+		}
+	      printf ("section %d: GNU Compressed size: %zx\n", idx, size);
+	    }
+	}
+
+      elf_end (elf);
+      close (fd);
+    }
+
+  return result;
+}
diff --git a/tests/run-dwelfgnucompressed.sh b/tests/run-dwelfgnucompressed.sh
new file mode 100755
index 0000000..b93a56f
--- /dev/null
+++ b/tests/run-dwelfgnucompressed.sh
@@ -0,0 +1,108 @@
+#! /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
+
+# = funcs.s =
+# .globl testfunc
+# testfunc:
+# 	nop
+# 	ret
+# .type testfunc, @function
+# .size testfunc, .-testfunc
+#
+# .globl testfunc2
+# testfunc2:
+# 	call testfunc
+# 	nop
+# 	nop
+# 	ret
+# .type testfunc2, @function
+# .size testfunc2, .-testfunc2
+#
+# .globl functest3
+# functest3:
+# 	jmp local
+# 	nop
+# 	nop
+# local:
+# 	call testfunc2
+# 	ret
+# .type functest3, @function
+# .size functest3, .-functest3
+
+# = start.s =
+# .global _start
+# _start:
+# 	call functest3
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	nop
+# 	ret
+# .type _start, @function
+# .size _start, .-_start
+
+# gas --compress-debug-sections=zlib-gnu -32 -g -o start.o start.s
+# gas --compress-debug-sections=zlib-gnu -32 -g -o funcs.o funcs.s
+# ld --compress-debug-sections=zlib-gnu -melf_i386 -g -o zgnu32 funcs.o start.o
+
+# gas --compress-debug-sections=zlib-gnu -64 -g -o start.o start.s
+# gas --compress-debug-sections=zlib-gnu -64 -g -o funcs.o funcs.s
+# ld --compress-debug-sections=zlib-gnu -g -o zgnu32 funcs.o start.o
+
+testfiles testfile-zgnu64
+testrun_compare ${abs_top_builddir}/tests/dwelfgnucompressed testfile-zgnu64 <<\EOF
+section 2: GNU Compressed size: 60
+section 3: GNU Compressed size: aa
+section 5: GNU Compressed size: 8d
+EOF
+
+testfiles testfile-zgnu64be
+testrun_compare ${abs_top_builddir}/tests/dwelfgnucompressed testfile-zgnu64be <<\EOF
+section 3: GNU Compressed size: 60
+section 4: GNU Compressed size: 7e
+section 6: GNU Compressed size: 8d
+EOF
+
+testfiles testfile-zgnu32
+testrun_compare ${abs_top_builddir}/tests/dwelfgnucompressed testfile-zgnu32 <<\EOF
+section 2: GNU Compressed size: 40
+section 3: GNU Compressed size: 9a
+section 5: GNU Compressed size: 85
+EOF
+
+testfiles testfile-zgnu32be
+testrun_compare ${abs_top_builddir}/tests/dwelfgnucompressed testfile-zgnu32be <<\EOF
+section 3: GNU Compressed size: 40
+section 4: GNU Compressed size: 6e
+section 6: GNU Compressed size: 85
+EOF
+
+exit 0
diff --git a/tests/testfile-zgnu32.bz2 b/tests/testfile-zgnu32.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..9d622cad1739554cbf744ed471936a5b470a1148
GIT binary patch
literal 780
zcmV+n1M~bsT4*^jL0KkKSrTWQ^8f*#fB*mY{V8v8d(a)c9vWp)4e|9$6Wcs(<4h;aTe
z5FikJ=rF(n7&(9jrb#_2eiC|*LYQqS>6F@@ri}nJ(<9Vrw15E9)bfX^p`+A#gCVDq
z4(a)u=brbdrVH8xQO69i<yOafq-ATR(4fC+#RrVzwnBSsN~(V!VJWCog4$RU$J(@Cai
zJs<|AYB4Yb!enXcVlsLFj0vUyOaKX^0GJvns$}&v(9p(a)FLqKRW(U8P4XaE2MAPoS-
zGz@?M27m#}asxKZGK?5R5Ji21Q5yEQp)t=CDGIUfz~cARS5HPYDIDn^z*Io^;ucCG
zHtw5j1JVN%5M<aEaQzS(kf4#HkdcQ~U5_4t5gwNWlu%JfBnd+C+JOL;D8wQZF?0(h
z0WOF(a)r3nv6KpG%Mlpc^!E8?J&1<>d*V&OQFa-<(wM2O-fvjV(_WuK~}L`}JT+6*v?
z(a)PvLx6jkqXsEz0tj@aqIVi|>*F}7JmQeNKp2q8)VtOh|gNf!B(%@PR61Pg#*GZ0}Q
zh?tN~AhiHqgPs-vA>?X*jD})!yxK9i7U!mx(?AX7^f8ha0Kr}l#gkYiY0&P?TsWqz
zgPku?abrnHwn9;J$q4Hcd1g7jrm|~MR^X|eXh=RcYH!v?t21DCzSShq&|M!(*$p0#
znI6VpOnc$iSR|^Dice_i$5>Moj2M!7vitt+OyG&}EO38S%?@!YnnO&6(ZVN{qyws|
zGzk|UeDRR8U@$Om5aE9mVfe=ZFw!V7PrIK9WkqBMYXv(a)w1-v=R!XW5n=U7tC0tu{D
z(a)51bza!6+ME|4m=1(a)H}vxWAo!+Znwvoc$Xaf;P37800QW!|ru3Jg58d#|dOd(a)igw6
z`IfS>^ZO3bs3pqHF+dyyj2?s!?G_Tazec-uIe9~Sndh~#cDxZWqrsIkBZnGB&e}OK
zHlE)MBE?jULAULAI+1SNVLi0$3x5~em;RCdo^-MyT)<$CHOCUDGHPo>2rNs#@pmLs
Kg$V&BdCxGFj#bD2

literal 0
HcmV?d00001

diff --git a/tests/testfile-zgnu32be.bz2 b/tests/testfile-zgnu32be.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..c1dd589e49cee6f2381a4bb4afcda3101b917ee0
GIT binary patch
literal 779
zcmV+m1N8htT4*^jL0KkKS-pkc)&K$cfB*mg|LcBleVc!89d-ZbpLO#=dXzUvV8UnW
z7(gQnAvVAQJ)m1N15pV*PgBT&>J0z(a)000d%9-uS>)B{6601W^DdVteLnj1|Z)J-&+
z35kiCnrO%jng9SA00SU20000005miPfB=I4MhS(a)1CJ~UtFpMSuMiG$7rb9+XAke@}
zObLk5fQ*?i2~9+rYI<oWr1XZGdW{ByH6Bm^H1!P)2Gl)AsP!}hLqKQ-fNAOjO$LAf
zi~NQvzZOx`L-5fZuGQiciG@>%gU+i(a)V?2sWdGmsg8No#;A6Y=2oO=|o1p}vsAR+}~
ziUc4MFAiUXPSFAjyhK8rg*)yp-3C+a1+9FmN%EKqkik4xNt;#)=#2yx;O25+w{CEf
zLk&R;1mploZ02Ud6Eih5z-ZG3a9M;+ku=;08bo2<NL{TjM-p2xUMU&uDq4AvGX(Ag
zGT`QDpn4}Rz&v)5#W9p<GpI;xC1XH4zNj1Nk7^h?-Npv0eQ2$#$(ySxVqqwgIGUIB
z&tjk=P?_kuOkbkqLuK313`Qmj2tBH?o-c~i<uQ?t>}3{BT%KJROM-y}tU*Z%3)X6b
zft1<wb*e!DOt^caEE>?BWidCCo^;FfQed-NgyK3cx<P;AfK3NUo^AXvP^2O_b=8MR
zYnaza#(xHRG+5gMb{@EA;=}0vcWGI%70g|^Z0DU^W~%}EO?rc^8@<T-Bggr1j(MEC
z?=;W`=~7HL?)LD*UK=L{Q&I6I%S-hRe?kaLMoKtw0&FYt#3TjgB3#bMXUqUva;X+Z
zMR)40BtsDYumi7gqMd?mjDzz-ZnOoE!QHut)zbu0a#n$3rfSkfkwK*j&!xYjwZ(a)Ps
zmnsRE1b}D)Op4b9>G?9T1VPF0QBa_-04N}L>fq2iW#7DgZglWTY$oyQ<xP|6`#0Ze
zUesmTelm^Y$B7U<hX?JV2*5FUKm^w-cy-ue1Kpzr7NZ6#R_d7K>x$EYWrR=hcO+AV
J2(a)BX=?O^e0RDJ*e

literal 0
HcmV?d00001

diff --git a/tests/testfile-zgnu64.bz2 b/tests/testfile-zgnu64.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..1bc2c0906a4f2404d2df2b6e8aa6e096665ae2ba
GIT binary patch
literal 785
zcmV+s1Md7nT4*^jL0KkKSz)bY&;S9*|NsAg{cnDGdPCoQOgR7N-|)9?bS8IDd`9o2
z7zTBCrZ&I=8-Zrb6eJT(rlFdeWc3XXQ%w(1p`g$PjWjfApfU{r4Kf;Or>M{X05r+9
zG|B29WMVX6O&JCOG-;s084Ltq6C+GaOh$~1AkmP(CYS&d6A(2|Q$Y<iG}A*Nrhw2g
zG&BGjXwVG+0MGyc003wJ001OXMwHJ&hMOcFlhpLo&<&}kK+wnlHlP|BXwVt~pc)MT
z0000B9Rr$@2_y;e9?^JK(a)+lRwy39}0Bo#9AK4d}dW1Dv`6m~*9j{iwEDa>xjg)bd_
zUdu<RxT+JHCa@~!;F5(a)Abq0j5FLm)OzKZ8fD4Syd0abQaw>eg+DPevzr7;bpn;Th1
zsW1Y}X<fT%hAY9r!mzfjhsfs<VmnFZ1l$UmLhj?;3KKA-6pW3!*1S1d!A1`H07Sxz
zGqVT<cT8*Q&c3SOsU)*OS_<i-AMGDQb!i&Ep_5YyOC6&XhgqVY!Ub`ZIIt*>d&0Vk
zbEm&G2DtWbB8?LmmNPp(n>dMQD*7a#I6UVB8<{ZlAaTx&AJ>QmVwM^25)Mp{<kGvS
z#~|**b7PfIwnve1AXl%Dg2zG#bxUsQIZjDb;rdl9*FjW~kbo5frXVaujV=gNsA})C
zw9az0jD#@str2VCht9cq(<4YydvVe94Y3(a)ciZBcZ3;<{K6(a)lsM3apwOKcp1;-Y7&^
z*b*;$uOCz;{p<M*My=!U-Y#sp;UPyPa}q>`^kC)#xfr(3)Zb{d#KWOL89(a)ojL5W^u
z8jxfbHicM{3;_da7Nanl<N3(Jb0C?3PzC(a)gRP{DwgQ|X}>UO7*2zC>Aglp#qA*#rP
zr35q4TDw?1pr<H+d(Nkm{f1ld0t4t?il)m1ug$6Z2FaC)M2<gFUX=ng816Q2H(a)K*n
zR7a_46XY26m0)=3?c6jRn$ztB3`FV)L1KDIql=OU45bk<Fr~~RZ6P+snE2O-ngEH~
PKjQ94rwS4bHLRKdHyTwY

literal 0
HcmV?d00001

diff --git a/tests/testfile-zgnu64be.bz2 b/tests/testfile-zgnu64be.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..390c9c90bd3c54e364e1378aff44680732e8b1e6
GIT binary patch
literal 795
zcmV+$1LXWdT4*^jL0KkKS%F8Zh5!N}fB*mg{{4RKd`jPcK|KHG-+9VjQXY3fU|LL$
zP!uyxem1}YCj((fXpx{v=*dT(a)c|&S#K-z!?L8j6?pbym#NIgcFjXgo>Jx(a)uA>SP)o
zNYUvuZBHcdNE)VzrqZ6K!iJ5hkQx90X{LsN0000014BbV00000JwyzQMvMugAiyS#
zG#DcxfQ$lUX^Dx5(UF82G8hEY00LrS1d5ucsfo1&(9z{I8&EPDJwwuZngG*410yDy
zG#UWOp`#!&0LTCU4PykM3cNbpgog2<O`hzUS=gszB1KD}fdoKw;2jfxv`S4-!tmxw
znTIczHdI|}!UY-&XmA688vhbE6P163(tEkUb;EGO?m7Sk1_2F(a)ssaMZ)ljDk;F{1B
z^Q@>F5frr&iJ(o5wjoPkB1R=pA&F~Pi}8tJFhwSSq{J%mfnv<SGohoHciw}i)Ri{6
zA!;UbU?AfCD&)KARDn5(a)RisEZ*`^T%2OFN8qT>n^iQf2e<k3MCVHNvV5-67j%&kxg
z;fRf)wAsFJnNtjwMmZTQ-^l=3G1xd8*Tx`HF0SLA!E>lrkTdz3s<+C%qbNabP>SLx
zPpq}p44MHTX9*zz7J6-;v&Rh8w#hB-%Gn8n>!{5GHF#AqQ}tw5&$kW~C~e*{_(a)tQ>
zW0B9B%#B)9M=+X!1oX`+s+qYZuCPkq2{+gem+sC<R<vy-d1Ky_FDxt^cGJI^nzFJH
z?G#WmlpECmpmz*`TJJnJ#WUQ~{9sY&892s(LX+wxaQL-QhwOO3y7`R4i$y|CeIirn
z;0+}9FiT*6wi2N9#CQdkZthz!m_eeOATLZSw^amOvORJt5pbLnHc5~i<c;>)l_Oga
z<dp?D0(a)SntKpG%<0yKX6hFUDPBr}1c22|$`g!+HYE15rO8fNqtc2cd&tB%V1vg?eE
zZCrSZj7>`Jg-mKc>s6_JV-ELiYR!FkurjXhcr-b*r(3iB+0nUW%*de&=_p~pjDE&3
ZzTJchqgKZVGDMmFF64(a)Ep&<f~R}5;vWhDRr

literal 0
HcmV?d00001

-- 
1.8.3.1

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]