[PATCH] readelf: Read the decompressed data when processing .zdebug DWARF sections.

Mark Wielaard mjw at redhat.com
Wed Apr 9 20:43:28 UTC 2014


readelf uses libdw to open the Dwarf and read some of the DWARF data.
But it also uses its own parsers to display some of the low-level
unprocessed data. If the DWARF debug section was zlib compressed it
should actually use the decompressed section data from libdw instead
of the raw section data.

Includes a testcase for those sections that couldn't be properly
displayed when compressed before.

Signed-off-by: Mark Wielaard <mjw at redhat.com>
---
 src/ChangeLog               |   11 +
 src/readelf.c               |   18 +-
 tests/ChangeLog             |    9 +
 tests/Makefile.am           |    7 +-
 tests/run-readelf-zdebug.sh |  539 +++++++++++++++++++++++++++++++++++++++++++
 tests/testfile-debug.bz2    |  Bin 0 -> 5441 bytes
 tests/testfile-zdebug.bz2   |  Bin 0 -> 6647 bytes
 7 files changed, 575 insertions(+), 9 deletions(-)
 create mode 100755 tests/run-readelf-zdebug.sh
 create mode 100755 tests/testfile-debug.bz2
 create mode 100755 tests/testfile-zdebug.bz2

diff --git a/src/ChangeLog b/src/ChangeLog
index c166267..e2bc866 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,14 @@
+2014-04-09  Mark Wielaard  <mjw at redhat.com>
+
+	* readelf.c (print_debug_aranges_section): Don't get the raw section
+	data, use the possibly decompressed .[z]debug sectiondata.
+	(print_debug_ranges_section): Likewise.
+	(print_debug_frame_section): Likewise.
+	(print_debug_line_section): Likewise.
+	(print_debug_loc_section): Likewise.
+	(print_debug_macinfo_section): Likewise.
+	(print_debug_macro_section): Likewise.
+
 2014-03-05  Mark Wielaard  <mjw at redhat.com>
 
 	* readelf.c (attr_callback): Print DW_FORM_sdata values as signed
diff --git a/src/readelf.c b/src/readelf.c
index d2efbae..ff5de10 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -4516,7 +4516,7 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
       return;
     }
 
-  Elf_Data *data = elf_rawdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_aranges];
 
   if (unlikely (data == NULL))
     {
@@ -4670,7 +4670,7 @@ print_debug_ranges_section (Dwfl_Module *dwflmod,
 			    Elf_Scn *scn, GElf_Shdr *shdr,
 			    Dwarf *dbg)
 {
-  Elf_Data *data = elf_rawdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_ranges];
 
   if (unlikely (data == NULL))
     {
@@ -5183,7 +5183,10 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
       return;
     }
 
-  Elf_Data *data = elf_rawdata (scn, NULL);
+  bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0;
+  Elf_Data *data = (is_eh_frame
+		    ? elf_rawdata (scn, NULL)
+		    : dbg->sectiondata[IDX_debug_frame]);
 
   if (unlikely (data == NULL))
     {
@@ -5191,7 +5194,6 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
 	     scnname, elf_errmsg (-1));
       return;
     }
-  bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0;
 
   if (is_eh_frame)
     printf (gettext ("\
@@ -6122,7 +6124,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr,
 
   /* There is no functionality in libdw to read the information in the
      way it is represented here.  Hardcode the decoder.  */
-  Elf_Data *data = elf_getdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_line];
   if (unlikely (data == NULL || data->d_buf == NULL))
     {
       error (0, 0, gettext ("cannot get line data section data: %s"),
@@ -6604,7 +6606,7 @@ print_debug_loc_section (Dwfl_Module *dwflmod,
 			 Ebl *ebl, GElf_Ehdr *ehdr,
 			 Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg)
 {
-  Elf_Data *data = elf_rawdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_loc];
 
   if (unlikely (data == NULL))
     {
@@ -6741,7 +6743,7 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
 
   /* There is no function in libdw to iterate over the raw content of
      the section but it is easy enough to do.  */
-  Elf_Data *data = elf_getdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_macinfo];
   if (unlikely (data == NULL || data->d_buf == NULL))
     {
       error (0, 0, gettext ("cannot get macro information section data: %s"),
@@ -6895,7 +6897,7 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
 	  (uint64_t) shdr->sh_offset);
   putc_unlocked ('\n', stdout);
 
-  Elf_Data *data = elf_getdata (scn, NULL);
+  Elf_Data *data = dbg->sectiondata[IDX_debug_macro];
   if (unlikely (data == NULL || data->d_buf == NULL))
     {
       error (0, 0, gettext ("cannot get macro information section data: %s"),
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 9b0e7ac..0a581be 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-09  Mark Wielaard  <mjw at redhat.com>
+
+	* run-readelf-zdebug.sh: New test.
+	* testfile-debug.bz2: New testfile.
+	* testfile-zdebug.bz2: New testfile.
+	* Makefile.am (TESTS): Add run-readelf-zdebug.sh if ZLIB.
+	(EXTRA_DIST): Add run-readelf-zdebug.sh, testfile-debug.bz2 and
+	testfile-zdebug.bz2.
+
 2014-03-11  Josh Stone  <jistone at redhat.com>
 
 	* testfilebaxmin.bz2: New testfile.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5e64095..09c034b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -127,6 +127,10 @@ if LZMA
 TESTS += run-readelf-s.sh run-dwflsyms.sh
 endif
 
+if ZLIB
+TESTS += run-readelf-zdebug.sh
+endif
+
 if HAVE_LIBASM
 check_PROGRAMS += $(asm_TESTS)
 TESTS += $(asm_TESTS)
@@ -266,7 +270,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     testfile-backtrace-demangle.cc \
 	     testfile-backtrace-demangle.core.bz2 \
 	     run-stack-d-test.sh run-stack-i-test.sh \
-	     testfiledwarfinlines.bz2 testfiledwarfinlines.core.bz2
+	     testfiledwarfinlines.bz2 testfiledwarfinlines.core.bz2 \
+	     run-readelf-zdebug.sh testfile-debug.bz2 testfile-zdebug.bz2
 
 if USE_VALGRIND
 valgrind_cmd='valgrind -q --error-exitcode=1 --run-libc-freeres=no'
diff --git a/tests/run-readelf-zdebug.sh b/tests/run-readelf-zdebug.sh
new file mode 100755
index 0000000..37cf7ea
--- /dev/null
+++ b/tests/run-readelf-zdebug.sh
@@ -0,0 +1,539 @@
+#! /bin/sh
+# Copyright (C) 2014 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
+
+# - testfile-zdebug.c
+# #define UINT64_MAX 18446744073709551615UL
+#
+# int
+# main (int argc, char **argv)
+# {
+#   unsigned long a = UINT64_MAX - 8;
+#   unsigned long b = 42 + argc;
+#
+#   if ( a + b < b )
+#     argc = a + argc;
+#   else
+#      b--;
+#
+#   return a - b;
+# }
+#
+# gcc -g3 -O3 -fuse-ld=gold -Xlinker --compress-debug-sections=none \
+#     -fno-asynchronous-unwind-tables -o testfile-debug testfile-zdebug.c
+# gcc -g3 -O3 -fuse-ld=gold -Xlinker --compress-debug-sections=zlib \
+#     -fno-asynchronous-unwind-tables -o testfile-zdebug testfile-zdebug.c
+
+testfiles testfile-debug testfile-zdebug
+tempfiles readelf.out
+tempfiles loc.out aranges.out ranges.out macro.out line.out frame.out
+
+cat > loc.out << \EOF
+
+DWARF section [30] '.debug_loc' at offset 0xa17:
+ [     0]  0x00000000004003c0..0x00000000004003c3 [   0] reg5
+           0x00000000004003c3..0x00000000004003d6 [   0] breg5 -42
+                                                  [   2] stack_value
+           0x00000000004003d6..0x00000000004003d9 [   0] GNU_entry_value:
+       [   0] reg5
+                                                  [   3] stack_value
+EOF
+
+cat loc.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug
+
+cat loc.out | sed -e "s/.debug_loc' at offset 0xa17/.zdebug_loc' at offset 0x1a27/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-zdebug
+
+cat > aranges.out << \EOF
+
+DWARF section [31] '.debug_aranges' at offset 0xa65:
+
+Table at offset 0:
+
+ Length:            44
+ DWARF version:      2
+ CU offset:          0
+ Address size:       8
+ Segment size:       0
+
+   0x00000000004003c0..0x0000000000000019
+EOF
+
+cat aranges.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=aranges testfile-debug
+
+cat aranges.out | sed -e "s/.debug_aranges' at offset 0xa65/.zdebug_aranges' at offset 0x1a5f/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=aranges testfile-zdebug
+
+cat > ranges.out << \EOF
+
+DWARF section [32] '.debug_ranges' at offset 0xa95:
+ [     0]  0x00000000004003c0..0x00000000004003d9
+EOF
+
+cat ranges.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=ranges testfile-debug
+
+cat ranges.out | sed -e "s/.debug_ranges' at offset 0xa95/.zdebug_ranges' at offset 0x1a87/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=ranges testfile-zdebug
+
+cat > macro.out << \EOF
+
+DWARF section [33] '.debug_macro' at offset 0xab5:
+
+ Offset:             0x0
+ Version:            4
+ Flag:               0x2
+ Offset length:      4
+ .debug_line offset: 0x0
+
+ #include offset 0x17
+ start_file 0, [1] /tmp/testfile-zdebug.c
+  #define UINT64_MAX 18446744073709551615UL, line 1 (indirect)
+ end_file
+
+ Offset:             0x17
+ Version:            4
+ Flag:               0x0
+ Offset length:      4
+
+ #define __STDC__ 1, line 1 (indirect)
+ #define __STDC_HOSTED__ 1, line 1 (indirect)
+ #define __GNUC__ 4, line 1 (indirect)
+ #define __GNUC_MINOR__ 8, line 1 (indirect)
+ #define __GNUC_PATCHLEVEL__ 2, line 1 (indirect)
+ #define __VERSION__ "4.8.2 20140120 (Red Hat 4.8.2-15)", line 1 (indirect)
+ #define __GNUC_RH_RELEASE__ 15, line 1 (indirect)
+ #define __ATOMIC_RELAXED 0, line 1 (indirect)
+ #define __ATOMIC_SEQ_CST 5, line 1 (indirect)
+ #define __ATOMIC_ACQUIRE 2, line 1 (indirect)
+ #define __ATOMIC_RELEASE 3, line 1 (indirect)
+ #define __ATOMIC_ACQ_REL 4, line 1 (indirect)
+ #define __ATOMIC_CONSUME 1, line 1 (indirect)
+ #define __OPTIMIZE__ 1, line 1 (indirect)
+ #define __FINITE_MATH_ONLY__ 0, line 1 (indirect)
+ #define _LP64 1, line 1 (indirect)
+ #define __LP64__ 1, line 1 (indirect)
+ #define __SIZEOF_INT__ 4, line 1 (indirect)
+ #define __SIZEOF_LONG__ 8, line 1 (indirect)
+ #define __SIZEOF_LONG_LONG__ 8, line 1 (indirect)
+ #define __SIZEOF_SHORT__ 2, line 1 (indirect)
+ #define __SIZEOF_FLOAT__ 4, line 1 (indirect)
+ #define __SIZEOF_DOUBLE__ 8, line 1 (indirect)
+ #define __SIZEOF_LONG_DOUBLE__ 16, line 1 (indirect)
+ #define __SIZEOF_SIZE_T__ 8, line 1 (indirect)
+ #define __CHAR_BIT__ 8, line 1 (indirect)
+ #define __BIGGEST_ALIGNMENT__ 16, line 1 (indirect)
+ #define __ORDER_LITTLE_ENDIAN__ 1234, line 1 (indirect)
+ #define __ORDER_BIG_ENDIAN__ 4321, line 1 (indirect)
+ #define __ORDER_PDP_ENDIAN__ 3412, line 1 (indirect)
+ #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__, line 1 (indirect)
+ #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__, line 1 (indirect)
+ #define __SIZEOF_POINTER__ 8, line 1 (indirect)
+ #define __SIZE_TYPE__ long unsigned int, line 1 (indirect)
+ #define __PTRDIFF_TYPE__ long int, line 1 (indirect)
+ #define __WCHAR_TYPE__ int, line 1 (indirect)
+ #define __WINT_TYPE__ unsigned int, line 1 (indirect)
+ #define __INTMAX_TYPE__ long int, line 1 (indirect)
+ #define __UINTMAX_TYPE__ long unsigned int, line 1 (indirect)
+ #define __CHAR16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __CHAR32_TYPE__ unsigned int, line 1 (indirect)
+ #define __SIG_ATOMIC_TYPE__ int, line 1 (indirect)
+ #define __INT8_TYPE__ signed char, line 1 (indirect)
+ #define __INT16_TYPE__ short int, line 1 (indirect)
+ #define __INT32_TYPE__ int, line 1 (indirect)
+ #define __INT64_TYPE__ long int, line 1 (indirect)
+ #define __UINT8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __UINT32_TYPE__ unsigned int, line 1 (indirect)
+ #define __UINT64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INT_LEAST8_TYPE__ signed char, line 1 (indirect)
+ #define __INT_LEAST16_TYPE__ short int, line 1 (indirect)
+ #define __INT_LEAST32_TYPE__ int, line 1 (indirect)
+ #define __INT_LEAST64_TYPE__ long int, line 1 (indirect)
+ #define __UINT_LEAST8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT_LEAST16_TYPE__ short unsigned int, line 1 (indirect)
+ #define __UINT_LEAST32_TYPE__ unsigned int, line 1 (indirect)
+ #define __UINT_LEAST64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INT_FAST8_TYPE__ signed char, line 1 (indirect)
+ #define __INT_FAST16_TYPE__ long int, line 1 (indirect)
+ #define __INT_FAST32_TYPE__ long int, line 1 (indirect)
+ #define __INT_FAST64_TYPE__ long int, line 1 (indirect)
+ #define __UINT_FAST8_TYPE__ unsigned char, line 1 (indirect)
+ #define __UINT_FAST16_TYPE__ long unsigned int, line 1 (indirect)
+ #define __UINT_FAST32_TYPE__ long unsigned int, line 1 (indirect)
+ #define __UINT_FAST64_TYPE__ long unsigned int, line 1 (indirect)
+ #define __INTPTR_TYPE__ long int, line 1 (indirect)
+ #define __UINTPTR_TYPE__ long unsigned int, line 1 (indirect)
+ #define __GXX_ABI_VERSION 1002, line 1 (indirect)
+ #define __SCHAR_MAX__ 127, line 1 (indirect)
+ #define __SHRT_MAX__ 32767, line 1 (indirect)
+ #define __INT_MAX__ 2147483647, line 1 (indirect)
+ #define __LONG_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __LONG_LONG_MAX__ 9223372036854775807LL, line 1 (indirect)
+ #define __WCHAR_MAX__ 2147483647, line 1 (indirect)
+ #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1), line 1 (indirect)
+ #define __WINT_MAX__ 4294967295U, line 1 (indirect)
+ #define __WINT_MIN__ 0U, line 1 (indirect)
+ #define __PTRDIFF_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __SIZE_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INTMAX_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INTMAX_C(c) c ## L, line 1 (indirect)
+ #define __UINTMAX_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINTMAX_C(c) c ## UL, line 1 (indirect)
+ #define __SIG_ATOMIC_MAX__ 2147483647, line 1 (indirect)
+ #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1), line 1 (indirect)
+ #define __INT8_MAX__ 127, line 1 (indirect)
+ #define __INT16_MAX__ 32767, line 1 (indirect)
+ #define __INT32_MAX__ 2147483647, line 1 (indirect)
+ #define __INT64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINT8_MAX__ 255, line 1 (indirect)
+ #define __UINT16_MAX__ 65535, line 1 (indirect)
+ #define __UINT32_MAX__ 4294967295U, line 1 (indirect)
+ #define __UINT64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INT_LEAST8_MAX__ 127, line 1 (indirect)
+ #define __INT8_C(c) c, line 1 (indirect)
+ #define __INT_LEAST16_MAX__ 32767, line 1 (indirect)
+ #define __INT16_C(c) c, line 1 (indirect)
+ #define __INT_LEAST32_MAX__ 2147483647, line 1 (indirect)
+ #define __INT32_C(c) c, line 1 (indirect)
+ #define __INT_LEAST64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT64_C(c) c ## L, line 1 (indirect)
+ #define __UINT_LEAST8_MAX__ 255, line 1 (indirect)
+ #define __UINT8_C(c) c, line 1 (indirect)
+ #define __UINT_LEAST16_MAX__ 65535, line 1 (indirect)
+ #define __UINT16_C(c) c, line 1 (indirect)
+ #define __UINT_LEAST32_MAX__ 4294967295U, line 1 (indirect)
+ #define __UINT32_C(c) c ## U, line 1 (indirect)
+ #define __UINT_LEAST64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT64_C(c) c ## UL, line 1 (indirect)
+ #define __INT_FAST8_MAX__ 127, line 1 (indirect)
+ #define __INT_FAST16_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT_FAST32_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __INT_FAST64_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINT_FAST8_MAX__ 255, line 1 (indirect)
+ #define __UINT_FAST16_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT_FAST32_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __UINT_FAST64_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __INTPTR_MAX__ 9223372036854775807L, line 1 (indirect)
+ #define __UINTPTR_MAX__ 18446744073709551615UL, line 1 (indirect)
+ #define __FLT_EVAL_METHOD__ 0, line 1 (indirect)
+ #define __DEC_EVAL_METHOD__ 2, line 1 (indirect)
+ #define __FLT_RADIX__ 2, line 1 (indirect)
+ #define __FLT_MANT_DIG__ 24, line 1 (indirect)
+ #define __FLT_DIG__ 6, line 1 (indirect)
+ #define __FLT_MIN_EXP__ (-125), line 1 (indirect)
+ #define __FLT_MIN_10_EXP__ (-37), line 1 (indirect)
+ #define __FLT_MAX_EXP__ 128, line 1 (indirect)
+ #define __FLT_MAX_10_EXP__ 38, line 1 (indirect)
+ #define __FLT_DECIMAL_DIG__ 9, line 1 (indirect)
+ #define __FLT_MAX__ 3.40282346638528859812e+38F, line 1 (indirect)
+ #define __FLT_MIN__ 1.17549435082228750797e-38F, line 1 (indirect)
+ #define __FLT_EPSILON__ 1.19209289550781250000e-7F, line 1 (indirect)
+ #define __FLT_DENORM_MIN__ 1.40129846432481707092e-45F, line 1 (indirect)
+ #define __FLT_HAS_DENORM__ 1, line 1 (indirect)
+ #define __FLT_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __FLT_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __DBL_MANT_DIG__ 53, line 1 (indirect)
+ #define __DBL_DIG__ 15, line 1 (indirect)
+ #define __DBL_MIN_EXP__ (-1021), line 1 (indirect)
+ #define __DBL_MIN_10_EXP__ (-307), line 1 (indirect)
+ #define __DBL_MAX_EXP__ 1024, line 1 (indirect)
+ #define __DBL_MAX_10_EXP__ 308, line 1 (indirect)
+ #define __DBL_DECIMAL_DIG__ 17, line 1 (indirect)
+ #define __DBL_MAX__ ((double)1.79769313486231570815e+308L), line 1 (indirect)
+ #define __DBL_MIN__ ((double)2.22507385850720138309e-308L), line 1 (indirect)
+ #define __DBL_EPSILON__ ((double)2.22044604925031308085e-16L), line 1 (indirect)
+ #define __DBL_DENORM_MIN__ ((double)4.94065645841246544177e-324L), line 1 (indirect)
+ #define __DBL_HAS_DENORM__ 1, line 1 (indirect)
+ #define __DBL_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __DBL_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __LDBL_MANT_DIG__ 64, line 1 (indirect)
+ #define __LDBL_DIG__ 18, line 1 (indirect)
+ #define __LDBL_MIN_EXP__ (-16381), line 1 (indirect)
+ #define __LDBL_MIN_10_EXP__ (-4931), line 1 (indirect)
+ #define __LDBL_MAX_EXP__ 16384, line 1 (indirect)
+ #define __LDBL_MAX_10_EXP__ 4932, line 1 (indirect)
+ #define __DECIMAL_DIG__ 21, line 1 (indirect)
+ #define __LDBL_MAX__ 1.18973149535723176502e+4932L, line 1 (indirect)
+ #define __LDBL_MIN__ 3.36210314311209350626e-4932L, line 1 (indirect)
+ #define __LDBL_EPSILON__ 1.08420217248550443401e-19L, line 1 (indirect)
+ #define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L, line 1 (indirect)
+ #define __LDBL_HAS_DENORM__ 1, line 1 (indirect)
+ #define __LDBL_HAS_INFINITY__ 1, line 1 (indirect)
+ #define __LDBL_HAS_QUIET_NAN__ 1, line 1 (indirect)
+ #define __DEC32_MANT_DIG__ 7, line 1 (indirect)
+ #define __DEC32_MIN_EXP__ (-94), line 1 (indirect)
+ #define __DEC32_MAX_EXP__ 97, line 1 (indirect)
+ #define __DEC32_MIN__ 1E-95DF, line 1 (indirect)
+ #define __DEC32_MAX__ 9.999999E96DF, line 1 (indirect)
+ #define __DEC32_EPSILON__ 1E-6DF, line 1 (indirect)
+ #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF, line 1 (indirect)
+ #define __DEC64_MANT_DIG__ 16, line 1 (indirect)
+ #define __DEC64_MIN_EXP__ (-382), line 1 (indirect)
+ #define __DEC64_MAX_EXP__ 385, line 1 (indirect)
+ #define __DEC64_MIN__ 1E-383DD, line 1 (indirect)
+ #define __DEC64_MAX__ 9.999999999999999E384DD, line 1 (indirect)
+ #define __DEC64_EPSILON__ 1E-15DD, line 1 (indirect)
+ #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD, line 1 (indirect)
+ #define __DEC128_MANT_DIG__ 34, line 1 (indirect)
+ #define __DEC128_MIN_EXP__ (-6142), line 1 (indirect)
+ #define __DEC128_MAX_EXP__ 6145, line 1 (indirect)
+ #define __DEC128_MIN__ 1E-6143DL, line 1 (indirect)
+ #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL, line 1 (indirect)
+ #define __DEC128_EPSILON__ 1E-33DL, line 1 (indirect)
+ #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL, line 1 (indirect)
+ #define __REGISTER_PREFIX__ , line 1 (indirect)
+ #define __USER_LABEL_PREFIX__ , line 1 (indirect)
+ #define __GNUC_GNU_INLINE__ 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1, line 1 (indirect)
+ #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1, line 1 (indirect)
+ #define __GCC_ATOMIC_BOOL_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_SHORT_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_INT_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_LONG_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_LLONG_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1, line 1 (indirect)
+ #define __GCC_ATOMIC_POINTER_LOCK_FREE 2, line 1 (indirect)
+ #define __GCC_HAVE_DWARF2_CFI_ASM 1, line 1 (indirect)
+ #define __PRAGMA_REDEFINE_EXTNAME 1, line 1 (indirect)
+ #define __SIZEOF_INT128__ 16, line 1 (indirect)
+ #define __SIZEOF_WCHAR_T__ 4, line 1 (indirect)
+ #define __SIZEOF_WINT_T__ 4, line 1 (indirect)
+ #define __SIZEOF_PTRDIFF_T__ 8, line 1 (indirect)
+ #define __amd64 1, line 1 (indirect)
+ #define __amd64__ 1, line 1 (indirect)
+ #define __x86_64 1, line 1 (indirect)
+ #define __x86_64__ 1, line 1 (indirect)
+ #define __ATOMIC_HLE_ACQUIRE 65536, line 1 (indirect)
+ #define __ATOMIC_HLE_RELEASE 131072, line 1 (indirect)
+ #define __k8 1, line 1 (indirect)
+ #define __k8__ 1, line 1 (indirect)
+ #define __code_model_small__ 1, line 1 (indirect)
+ #define __MMX__ 1, line 1 (indirect)
+ #define __SSE__ 1, line 1 (indirect)
+ #define __SSE2__ 1, line 1 (indirect)
+ #define __FXSR__ 1, line 1 (indirect)
+ #define __SSE_MATH__ 1, line 1 (indirect)
+ #define __SSE2_MATH__ 1, line 1 (indirect)
+ #define __gnu_linux__ 1, line 1 (indirect)
+ #define __linux 1, line 1 (indirect)
+ #define __linux__ 1, line 1 (indirect)
+ #define linux 1, line 1 (indirect)
+ #define __unix 1, line 1 (indirect)
+ #define __unix__ 1, line 1 (indirect)
+ #define unix 1, line 1 (indirect)
+ #define __ELF__ 1, line 1 (indirect)
+ #define __DECIMAL_BID_FORMAT__ 1, line 1 (indirect)
+
+EOF
+
+cat macro.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=macro testfile-debug
+
+cat macro.out | sed -e "s/.debug_macro' at offset 0xab5/.zdebug_macro' at offset 0x1aa7/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=macro testfile-zdebug
+
+cat > line.out << \EOF
+
+DWARF section [34] '.debug_line' at offset 0x104c:
+
+Table at offset 0:
+
+ Length:                     70
+ DWARF version:              2
+ Prologue length:            40
+ Minimum instruction length: 1
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base:                  -5
+ Line range:                 14
+ Opcode base:                13
+
+Opcodes:
+  [ 1]  0 arguments
+  [ 2]  1 argument
+  [ 3]  1 argument
+  [ 4]  1 argument
+  [ 5]  1 argument
+  [ 6]  0 arguments
+  [ 7]  0 arguments
+  [ 8]  0 arguments
+  [ 9]  1 argument
+  [10]  0 arguments
+  [11]  0 arguments
+  [12]  1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir   Time      Size      Name
+ 1     0     0         0         testfile-zdebug.c
+
+Line number statements:
+ [    32] extended opcode 2:  set address to 0x4003c0
+ [    3d] special opcode 22: address+0 = 0x4003c0, line+4 = 5
+ [    3e] special opcode 20: address+0 = 0x4003c0, line+2 = 7
+ [    3f] special opcode 104: address+6 = 0x4003c6, line+2 = 9
+ [    40] special opcode 77: address+4 = 0x4003ca, line+3 = 12
+ [    41] special opcode 62: address+3 = 0x4003cd, line+2 = 14
+ [    42] special opcode 86: address+5 = 0x4003d2, line-2 = 12
+ [    43] special opcode 76: address+4 = 0x4003d6, line+2 = 14
+ [    44] special opcode 47: address+2 = 0x4003d8, line+1 = 15
+ [    45] advance address by 1 to 0x4003d9
+ [    47] extended opcode 1:  end of sequence
+EOF
+
+cat line.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=line testfile-debug
+
+cat line.out | sed -e "s/.debug_line' at offset 0x104c/.zdebug_line' at offset 0x1d53/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=line testfile-zdebug
+
+
+cat > frame.out << \EOF
+
+Call frame information section [16] '.eh_frame' at offset 0x5b8:
+
+ [     0] CIE length=20
+   CIE_id:                   0
+   version:                  1
+   augmentation:             "zR"
+   code_alignment_factor:    1
+   data_alignment_factor:    -8
+   return_address_register:  16
+   Augmentation data:        0x1b (FDE address encoding: sdata4 pcrel)
+
+   Program:
+     def_cfa r7 (rsp) at offset 8
+     offset r16 (rip) at cfa-8
+     nop
+     nop
+
+ [    18] FDE length=20 cie=[     0]
+   CIE_pointer:              28
+   initial_location:         0x00000000ffffff08 (offset: 0x4e0)
+   address_range:            0x2 (end offset: 0x4e2)
+
+   Program:
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+
+ [    30] FDE length=44 cie=[     0]
+   CIE_pointer:              52
+   initial_location:         0x00000000ffffff00 (offset: 0x4f0)
+   address_range:            0x89 (end offset: 0x579)
+
+   Program:
+     advance_loc 17 to 0x501
+     offset r12 (r12) at cfa-40
+     offset r6 (rbp) at cfa-48
+     advance_loc 31 to 0x520
+     def_cfa_offset 64
+     offset r3 (rbx) at cfa-56
+     offset r15 (r15) at cfa-16
+     offset r14 (r14) at cfa-24
+     offset r13 (r13) at cfa-32
+     advance_loc1 88 to 0x578
+     def_cfa_offset 8
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+
+ [    60] FDE length=36 cie=[     0]
+   CIE_pointer:              100
+   initial_location:         0x00000000fffffd80 (offset: 0x3a0)
+   address_range:            0x20 (end offset: 0x3c0)
+
+   Program:
+     def_cfa_offset 16
+     advance_loc 6 to 0x3a6
+     def_cfa_offset 24
+     advance_loc 10 to 0x3b0
+     def_cfa_expression 11
+          [   0] breg7 8
+          [   2] breg16 0
+          [   4] lit15
+          [   5] and
+          [   6] lit11
+          [   7] ge
+          [   8] lit3
+          [   9] shl
+          [  10] plus
+     nop
+     nop
+     nop
+     nop
+
+ [    88] Zero terminator
+
+Call frame search table section [17] '.eh_frame_hdr':
+ version:          1
+ eh_frame_ptr_enc: 0x1b (sdata4 pcrel)
+ fde_count_enc:    0x3 (udata4)
+ table_enc:        0x3b (sdata4 datarel)
+ eh_frame_ptr:     0xffffffffffffff70 (offset: 0x5b8)
+ fde_count:        3
+ Table:
+  0xfffffd5c (offset:  0x3a0) -> 0xffffffd4 fde=[    60]
+  0xfffffe9c (offset:  0x4e0) -> 0xffffff8c fde=[    18]
+  0xfffffeac (offset:  0x4f0) -> 0xffffffa4 fde=[    30]
+
+DWARF section [36] '.debug_frame' at offset 0x29b8:
+
+ [     0] CIE length=20
+   CIE_id:                   18446744073709551615
+   version:                  1
+   augmentation:             ""
+   code_alignment_factor:    1
+   data_alignment_factor:    -8
+   return_address_register:  16
+
+   Program:
+     def_cfa r7 (rsp) at offset 8
+     offset r16 (rip) at cfa-8
+     nop
+     nop
+     nop
+     nop
+     nop
+     nop
+
+ [    18] FDE length=20 cie=[     0]
+   CIE_pointer:              0
+   initial_location:         0x00000000004003c0
+   address_range:            0x19
+
+   Program:
+EOF
+
+cat frame.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=frame testfile-debug
+
+cat frame.out | sed -e "s/.debug_frame' at offset 0x29b8/.zdebug_frame' at offset 0x2728/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=frame testfile-zdebug
+
+
diff --git a/tests/testfile-debug.bz2 b/tests/testfile-debug.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..88e59de7eb41e65932bdeafd3fbe4e6ca13b4d5e
GIT binary patch
literal 5441
zcmV-H6~5|1T4*^jL0KkKSz^UOY5*A)fB*mg|NsC0|NsC0|NsC0|Nr0r_wWCH|M30)
z|Nege at B82se{Ed8z4PFMyYCM4h3eRRf%m+e+0*9DRVnUoMF&|Z6;v;0vaHft(v_yl
z+2^655(6S&rkhEFQxyFIMooxh(KAA1dT7ZRspJrPO*V;>XiYH<GCd}Y)G*L!(FW2z
zO{B=gZ4)MG7zD&=iRv_A44Pw5Xdnb=38Do?(t4TcPf3$9Y6gtd000000j7We$N&#e
z4FCWD00000003wJ00x=}LP~oi$*JvACZ2+54Kx5W13&-`Gz~NW0B8ZAXaE2j00000
z000000000IYDqMjr|O at nF{);edr-=6QZ}cPD9NU3dT0 at VOo4zvXwyuZ10jGD0%X7f
z0|?MDG|8h(fM{eMp^1WNrU{9Y0uoYVNr9kE7z02PPeN&k!7((%(*Oj>7!jjPAiw}k
zGG>ziO))ZI156VH$&kS?0%?(;G{G<dB0>acm`yY?n1ZJC^pk32dTKpW^vI1*Q%^z-
zH>hfFQh7|6OwwX{MvT&JBQ*`EHh>xlk)Y9p8UVs!4Fl2`5s=BDpfvNel=wTUFWNo_
zshQ_F*e>jkLxuyU(GMG4+d!L18QKIl5Y0qGjR41=VlfIlQwgyiv38APpVXT;J<&##
zwwR#4H)*-GIE8KCNVFUYru4JRyfLUdy<@p(O*48&6R;yLuTg;&QOiOSO!0!5uB6%s
zHBFmIQG+wNAV<vhULysv+EG>Icyo6wkJ?DY4q>Ew5w#N6*3K|-7;ePtWN3`RGGqzr
zDPegwWOn%dRvN1rdy2u-A0K8y8!1W@=jmnhvZBy}3Zj&DV5M19ANY0W3lmAQ>cxP^
zvW7Ynv=_olGv?Ltlfyh20tgmw)XI1sJ^Oi`#rC4gEVW%Kv6b-|xa~#3YQD`ga9Gm-
z33DI{%GC$}Do#jAqq7tWgfLE&9A%Ul*nok+5ClLhiW0<lBL5iEGf~ihhzoK7V8EY(
z)g}SYHy#i<p~L94on7{t*M{lP66R<w3>7-)^qYIkYkkR(BJP+Zq{7GK7$c`R6!&10
z=d+70xA10GcAaFZPbDSC at 3LMN_jt2~+xhJ4>N;&EOKg9O{99dc2q+^JMI=%PGjYq=
ztU_>XgfodH>@=*9GpqoxkOadbAPG;mb4R+)4u*7uhj!;99<>ctUu3w?zBjeJThLv9
zR;7-<>e`LM6U&6g+itA$gYea4BgEiUxW70{R=pdImZh5R*KWNW*wWZWk;%8aHe#6J
zqb9b;NaV`ac<HD%`ZBmv3fSRp7hvp;w>6rtvLc$WgL2Y_veFOAx=E<?t}MD&(>2z2
zTYV{fD}Il?Yi+fbQ-qm<Wpnd>nxBJm?D|_{BaEXxmga_2F|vfS0}2=rP=uFf<rKkE
zG5QorwNS3W$xIAvyh4x^mT3Su_h4kXCOWAmefO_Ez$Z0=i45`*nF3FcCV*rJZ!9n{
zB$IPsaSVo=ChKBA*w{(z4B7}92wW7Vg$*kpXHbR)92Ut}5e1VT3(h at sF9p|UnAK+W
zcY78#RjILXy^F1T3uvC8$+%(TX=Y4f+d0Y^2scdh66Nmr86$HXE|qXL3>$i!8sph+
z=Gw_OgSXSapU=8um2kNdG`YhnnqOtPNo1`WiKArdhc+45+5A@}k(1J at Sts(*g0ZIe
z_bIU0>nYnTYfa|Wn{2<!a!#GzUU9vtb`Z9q*g34V1D1&O2o7j8#Tg_+-++pPjf{ga
zRFb+o=Gn<$<61czk*KTGBT~(lUTVr1b+TgwSjHqaPSF?1jKcGE6(@5dahv*cHe*Zo
z at U*!ZqfdJ2t`@$G5Z>oTsN?IK%0P16PuW7fVM0gBKX}dzVIVk{X}YLUD8_iuVP?|}
zK_IkUB9N12)Y{s)?4x7VJX3^b-Ix7-TYFCDp4V?x%KV$o340Y*KsPcP8tcM=Idp(v
z4aNNc!cjQf`84ycoHHq at l+bA^_T8TBy!M}+zpk^s*;~hOIq$KybR8MU9Gi_b9y(4W
zNuvNL%)*Z-VMlu~KpK!r5p6`H;Iw=9;##634X(8|3XwrfSJ5n*dZQyqEEaVYGc774
z)zwLbDIA_{rI-l7VvHD&V+`vlkrPjxq8aw*3kpIgC`ASgkuxi*WthfDC|qF-0}hTe
z4Vo5M9b4AyRl8CH0TzH|Ol=Jo?`1hd;qfh^)o1)4q2Tu&#zePYW#4%o#$u_UW7%!7
zq>Wm(wHn-~#@An)U?}}f$`Id}E6J4k;y2rj#qO_%Zu!i~kq73NjP0iarpIfE>Bm)e
znux at gfMCxL0GE?{U4PK+o~?A(xExL=(XRzoZ&+b?UDsV+9-AH%^V$FX8ibo$0MWx<
z(;5jbQs~2KP8Z*Ie20hFb6#BAkRBPI81)@_YMymAUw*Z=Z0JI;pS;6c%S0Eis{4_+
z^JuUhRenL;90#O8ffa$kf({I7soYES{qd?HHtY$vh(e}Aqc at W8W&2#;hlMkvc=7pY
z)0;@fAlD`h3~w`e4z&iebKG%G42e#!$7PYH*vnX58+K(%6QgL1X=1Pi=>aU-ZASv;
zzTV?~*r1rLc+1D>L}i^|f5UASkV%cfFyW^W#@<&F_xPr~^1QR4;Gz@&LI?<Fu~g0*
z{XKrf&%?w6reE23xEByKPC5BaMdBB`ntY=LfCV at tiU9$@Aos)!fl@>(fB;Ylk_d{a
zEADRERJ&2t(K%HboK$p+(y!v8p-=7j*0?SuyNz{>8dit~3T-5Jce)00njeB|1*p=q
z<LT~IpO}0G^V++%gUNYk_2awzi%;)^jb=(rCosYp`!*f5_dU;$C;%gdCx?4bU9-g7
z>U<u?cl6rpV7Vcjx+BC??PC*_74_J?-TT+d**eC(`_zVTP=^)|XQ^XV-0H`<1rk-D
zp{uI1Us5&}AHwV6Yb$AVeQLE7!H4l<At<uhD4o6hmA9d5i_Fd&O=G!JGt<wkKAnb_
z($D63a_>dhwds}NZnfTBck%B_^s$b^Ubz%KMP*<0n6b`UT<IlZy`Dhu0hPaJYik at r
zEq;}(<ID=ydkAX`H&Trelsgvmnh!`*S<G6*AGGY)I5)-D9CMp%u}dqP0y8ifoWbOu
zchG~iimSa*G`beagwpgz#7vjrA*8xze|nK0ZP8z>!PT;6E{kx(a9q<1Kl0T&ycH$)
ze5+1bJ8{k-;xc1MY^)_jV#PSkZdiqxCMR6=ZnCAJ+Obr?U#WyXQORm$q9%e5?;)}p
zi&-fO2}F_<n<U|c4h|)Ht9_*HL?eqiodbvG{Y+1PANtX38rI|vN81!AnrdQVU at -WA
z5KIVQhR_Yx_7kTv($bQN5fCEP(pw5ploLRLQ32CpH%$to{YK?GD-CyO37b+!h++Xu
zqp+n=m7r{mjbPf;Uq|+-n}MT+D~R~jv|lrGbXj at tXt)uJtrm6Famqxgic~1l=PXz{
z?+ABpNgb<7gH&T_ORIphsDPpM`7)>WMuD1^&W1O#q at WI0c(dH9Yy%9(4dmt2AX4i1
zoNS%Y0+&Jv5Y;=1K`038Fj_C;aD-IEhRgZVkzKGZbLcu!p<#?$0fM<%bdlDj&#rb9
zatyG;3L<5S9MDxT%7Sq01Yd+JVPt5~K@>(TE<yRjz}ssza`AB%lRz;z88TTst+@$v
z2 at -@1o~j66$*mns(1J#f1QHI40ugj5%~XpDrzxc%10+|AlW+xzQY^sCk&-BY7OH;d
z4b<d%pNmDd=^q0v)7ZjE>|`&U3vN<18q-5<G;40b6;&0)V6?W7XuTJRw)7dqV9`7b
zjhV$$$!S3vZTP-<*UpeIrV#fyu|VOvV%(lG20j6n^M+*F8}LCaaY(U4u60b#gEoT1
z6Du#O%4NYM6(Uul&_NzR-5Ad_dBTNCN`wI`=JzO*8DtQS2Ij$5$-)b6s_2;Ac2Gr<
zQ9%<6ZKy at H6R49=A$iWApgweFc|b^1wZcRMorKsb=yM-0Mf<i#I|y!#;AYclrYo(x
zMYvWtlF*?A!X+$Q83qBgJ964rNeq(Dmkt=WEarjM;6$flwt^uAqQOhVJ4x*X74ka_
z5PP`$l at dEm=OZeYRo9R7s4PJU%C%eB7_!P}YPw at VT*<t`DvImyq}gq(bre0;l8K3f
z7AXDP_>Arq%tjlBiKyDkE0eM8RDz<4YgMhF2o0Q*CQiv6-^7hEQHRn(a1wLw$Y((l
z9l@%*whl!- at k`db&k%hD$(9CSfyR_~4u?u`th8ou>dPe|R0BDwQ#m-0ArwXgS4u*n
z6q<!0TBc!C-KV-qC>9B_suG8yQt0mWJwsf>)<$4~u6JoiL`+^Nl54#Uh&F(#fuxvr
z${30&DxxYPHi3f0M3L7+nj;$$OaHsB%QkcCe?FWUJChJI$epr6YDD=Q$q3m(JPG~+
z2_>i8v~em6#8DToa7PmJ0z(a8_U+iBCS-JBHrj0xk7P{Eq0l2~%ZBUESgN9;s;aA>
zHr-3LU?DF_qmtU8%Y>A{Xs*Uc<1;-~fu{rg%(+bF?MlX!M}|QL_r}qoAkraudo-~U
zV19OPCkz2WWBjBk3l$1OR<<*Z6`M+i{e~uxGVr<;dTp}|QlOHh37csFwXYf1zQMY;
z57~J305#@XrHw(ykdo at 1NkaxQ?ryA=0Bzv9bK_1y_hizLUf7yLACv9!YajLHLa-4T
zi2)uE(h-TkDc<WaiO|DSXqU{UY@!TqAJFqOQ~o8@%ik3KR(@?fD>3tNrXFqcIcVi`
z08+-LqI<y-1p?p=?y9aTpm8{nRaIDus_BZM5fKp)6;)MH6;#!Oa1#+%8eF4gxT#Y6
zi|hclQ~4Xc{yzocZw|9ToJEy$F`1W2L>)|`Zf%E2?8#M5kCN+oz8l0p5c)aj(3)T!
zp5xM-6F08jtr=dk1xRJGYDkv=UxyGXAZU;%V8zysUu5n*UvVzOjl0-SljJgoMP at +Q
zX&9I>Bxr!&%d<ial#vJ(jsu3#SaJCjm({H>(u<JQ$f*NEzimuYn-U5Mi3FViG!iC2
z5TYB1AZ<a(>FYw?Fj|G#7T%ILLj{N{l%y->2UVSLF<~3(3pX|{HiF|iKs00)#{8B*
z&KQ2sLA6Dkwc?-n<FqT$pAuK6l%&K^fmDY<7)P1eDqjmJODjV{Xl;Qr11QvFtR at n(
zGF6MJOoYrJ0$HFjNC1NUj6)>0*c3s>$BZwjHroXls>O&Rs>NamieG(8EwJgdsbVs!
z#aZJE40WW61!|@gP>>B=Zj=QP0Am2S&o-8AR4zEB8CQ*9tIIfFOqMRqasJ9 at L9LSt
zgkjcvpZHg$g@{mLFtM~-J8Jq?!H_6qNAh{<S{!PUCB`^>O{KyP2g;Jv!EOz5S`;xQ
z!G0j$NDdw7Shf|Y27hn2(VBhXS=jh~jTe8mmeV_C01K16w$ybmt{kOX&Om3dm^9X;
z;w3uuvrAUpjMW(S%bKhgs*~4HK*Z!~oeXJ)2<gDC+t9CUmgorETUGcM3>lcbkQtbh
zKmx&20N;J!hJeV?bH!U5Y>*jOS#3xHZYxkTBq3M<6lu81HEWf0svSgEEVbpd%ZzlD
z7$srayA--c15$S&Em2cZ9)y+(44!tHhF6O<n32fAn`GtSx++f$d*0Sq;$9+x#<Q8)
z)p`ZMqtjWg5jmf~4N4r80tR5My5|89DF=i~z at RZ%V!;z8Sd$>IBqc?lH7Qs?1=51Y
zR55FbH(0AR;BzwDAPgXH5kS(Ymr`=*F1sn?<kE)Mn?o(K4y!?!wp0bXQM|U!;s6o}
zTF&e;0#XT*qcaFgh7spMxej(g8x6$JsUnF1x`ZI=#s at v2B-jh0((X3L{ab@);*;-F
z?nkAq)1F*+$@6!699BnkMM)yqL9sF>8k!43zgp5>L`GLUsyW!pjw}u_&GTJE8^C!?
zo_UnWLM(g((%60&@=(N#T3~5Pmyjz2PUBZ3Jpw8%7dLHeaW#^JHLM<AJ8sx0E3bl0
zx3+>tL7jLIi4Ka^kj(V33A5VO7%@js?zcgxC?H&ZI)@uJf?Jy>V)hbg0E)@QMqq8B
z2Z1)t46PlfX%ss?X!>41q)(sQ<>gwlENdF$Lj_K(BqUQbjquJ_1B`V_CK3e~RZ8Y8
zhA at p%-||}#QkfDh^^!|>pq&oVikU7%&=#pQ7=7H%D62;xNVyS9q^pd1HY7g;%a}l`
z(6LAP<@-fNszqW<f}O?CnAQt&{M-nJdka7}Jq@?f7@%!<POM2vh`DhEj7E}{8aZby
zw;1#;yycty+-T-43 at D#_RrrwIY{F$D0jX at Dt)*$s-`P0|(DOZZSVg>e?uXn_Wg!5n
zc!5L#6lM}<Hk5%7Y!he-5DJS{;-r!b3RcodmI at I+xee=KYshX7bycS(1qKBrK_Z!t
z28zp-!0BFXp`Pj%m7wHsL-meE{Ds3E%eM%dv<qPcZUB*sa!_(j3npq-0 at gx-LKt3D
z&#z6^EJnOU;ANZW!p*_71xani^|3JMgBB9fQLa+<*oLP^-euy;{HtM$iii-BNpx<n
zouU2q-Qij|cyEz#GKk)TXNqo!`~ldu;8`zPB%OyVQ81{%7=QOSpxMLVEksyGFxR|=
zc^K<^=>|{a*{VbineWti at ht~?*xK@(D>+7xusCk8%yV?SC}G`r#bU*Qk&V%W2 at h=8
zharcC&~PN##LYuuFZ6(@>~p&CNGOyL8#?GT>883;LaDWGv&#~MZUCUmvmC^7q)0iL
zbJ1sXF*&*8{<a1?@u!Z=cnj2b^G8(c#zB#&mus6Y5j#sP)L#^q at VTQRm64U&_^9FG
z1XqE0;-j8W+{HM?)iy~Syz(<JftKlo|9@`<^;&h)qgp$kon|T!IEy6^cizMQ2>1qK
z?jG>3KAwJ;d?W{WMgWjW at TeR^Ln6Q!8$CKEi6`Kr(mNSRze}gJWmFuks8;ulfk$wP
z1?&}v8LD);%h#ahP^NFrA2ZgG!ai&wq=~3^@IH1<0WfAE$s^b3>Cy<xnT0S!WDM~_
z9D at rELt&cnoxNv1`a#rVGB^i}J4+3k$9q7J`FA{WTxnm-A(+WnO&+Spz)!-%5Ue#B
rwUjb*ZRyL`)3qY4&XJnl<+wV|JQlSlis)|D|BJaIoG3^!VxYAELGJt+

literal 0
HcmV?d00001

diff --git a/tests/testfile-zdebug.bz2 b/tests/testfile-zdebug.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..784041ce0a95f1cf4711b8e37dc54ffe88ca2a93
GIT binary patch
literal 6647
zcmV<T83^V=T4*^jL0KkKS-Al4^Z*S3|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0|NsC0
z|NsC0|Nr0-pL`GmFQ7e{_V?dg&wDR--e<k>&tBVmmihFdUq{g2K5h4XIwdTtAc+Iv
zR3 at 5FA~u?)^i#>|o|+z$YH5;wlhZ{%B$|GLV4j*7nkE8i=uDb=Q_^~#NwmQUw3=z?
z$vmUdZ3n4}d8xHeB6+0R2-9k5f=>cqPbPwTH877PVr>Nqsp at DlO`uFP(FST}Q$|fa
zDD?F`Q%?!CFe&Df0&00DfJvvd0|uICCQ~szOf=G&=*dl|sj_G$28~Rbo6>2DZB0Eg
zn<Htdf}g3OGff(3WNjLng-uN<rbfzsrjyk5Psr4IYHX7!wLeLOPf_}46WWu?dQ<eu
zHls49`l5b~P3oCF8k(My$&}N{8)};;s3T8P(@i7E9*wGgqtp}B^*v8h(^DFmsrqR&
z$}(jADVl0*ll4y&@kfz8L(@}1sEBH5>N1U{lX|9NO{#tpdNe&sen~whn2geFqr}3E
zJfnK1o>NUfN_qy=m^Ac;)iiBQrjt+AJwc|LX{V^$RMWyu9#H(K8a*J|jLJ0qQJRla
z3FRJB(1Z084FgjVG($o(WG9eQ)YHm-jVa|GlhR{QJtov`PZY at Y8hK5qGBRyV4LwXC
zG|8r#GgHwFjRuVx4Kxgm05ls>paVlgKmY?rs0N!;)DkF!)X9`!nqY%Qnp4wEL6alY
zJx at bPiepLoQ1p)}>Ul?~coJ<*iK&>0r=;~ZlWKWSQ`Fi|Q`8<%^o9u9o{_Z}gF{A{
zJx!$aXqsv283SY^YH5&k^5J^euJrr6ISoHIReEbFz|OS3GZGs}Qrf}00<$vfoIspH
zAhLk68{$)<(WxOA;YnNvDjxQcid?Y!k3w*vRGPMQ^e}_MrM9)JSftB6OBM_YvxfHf
zH4=guuv4Wn%|Z#iCT$E8)1-6(1nM%JqKI*rapsZb6=SpO56~EkyimYntd_A78}1bW
zFr!DvVVz_dlx<yO4doF9K_vxAMJ+i!BlI}jRn1)tM<0*7MsX6ktKm#h7L}&MIL2Uz
zm`D(nVn$|R0fH<QRkV=EVqpwB8zUQ=I85cUDBNY{w|zqj3 at GGqS3Zqw*ndAapW)o}
z`fS{Dz2*=3`na6d+raEAgaKq(;5pbA4+QIUdcU_s5h%bzQ$CU7u^rx4fC5!>71+D|
zEl)G$UldhSVUBJIUPm{swyT&zLuyx)V2r$wM3o^I(Yol?-N;Zendp-#9s{zglq1j2
zOp_`;Y0-CFSP=%5j3A)k#=#622~5zU(Pq*>Nf;psL5LeeO#&N0kl>&}gKSJ~4iJFb
zOQL8inwVh*lXp!@;|K{YBT5WNTDFj&(n#>yNwf$Le8d at cfWX>80AZLRVVEoOA`oo1
zWs^cFG=fr9g=wusSELMeMru?VP7xl^R*e3aBhqq3QfYdJc*Wjnv}{}zOfhQfAi2}R
zAp4MCHt6baSp7`sRC1141P6(smV*9FbW=zX06-BGqA*vHXRwp2Df1&aP$xH)&)7g6
z3eFQuBrAc1Tu4qFAJXX+QNRP|9_})OCl$yg#|ZgDL2128O}&=8X=vegjm9kG5slS#
zg*D~X3K at lrQCsIgWo}K4*lInQVmCHISz2ryM6i0?WI`PbU=t;VY+wz~wcPKn?4lTL
zm~^%kQ`x33exzU3R?q1&m<+m?*fhs^XfTljP|QQmv<6wM)8Rg2n1H2yMoI)nnPR~|
z;U{O9l0OClAj-yM9DC>mC$RcE*stBYfxD{eH1|@i9j)}n!z;6|o?R9iFc?9p9a}cI
zE!1YGgsGIb)owdpmWZ}}d^c<Yn|ww<;4v(-7BQTww6w3ZEnH--wC<-j?2($TjuW-A
z%Ru<8a6GQAE0<^Jes0$HWA`?i>{jdX{(DNkS)^LHF(uWsl<i_#=$N-mlATCYrGCG8
z^e38o{PWK|yJ_ZRS?mAUA#K`61&c)fTULxX_y`{<uLYa7tr5)QjX5I|ByFRxX?Qmu
z$DscC95<1Z#qT7NX}n%Cd_~XKes7-=cGSC#rrDjCAOt$-l)P|-paita8_S5+xkb|<
z=EN_$ID7|{0Nf}BvZfG7S?Ot0lEF6<ext#k&td$X&!-P03lvbf at q`yxw%&!C%*q?*
z6q*N1;?^BQCP>J_#gL=SVw43YBq$<;z|%}apI^bV6ciPVG;3tGSBqyz|ML3PHTC!p
z7S27p#5MIhD1R(ICLnY#n``~P#jb&#HMV9rrWs!2lN)ZAzmDeb^-JMWnE+`Ty7OW6
z*p5T;UUS{SEaN(-onfr at P}bw1MIl8DGt=ukoU=Pyze<fcX0SSB<wO7w)_ptH`hBJI
zE$<y=4z#!<_r*E-Qv}-R6l(mghUD+A?!<E;OS|t?2+VYGqDEZpGEeqDbPWVW6AA2>
zPl#bZ;@-2iWU+alJQB}tZ>ePp(hf>|!n2H%A#K}cB1_G4S|@F!XKg$E2K{8{#%^+6
zo$V1n4v3r0o)wsR3k{l(;Q$7T6 at 8%S<4ZO&P%163h@$BCXW6-sv7>xf{+cqX)PesE
zy<L0{Xj25Ztq+rDaL- at q!-_C_j}hB_T>#lK1Kz?HHQm>NT2$1Tv+qlx2okSSY2lGA
zW7``*uqEJmv~;NwAL26bO7Czp1%ZG70|S2PNf@=cWnp5fF;iC8cv{_Vitf#8D*B~{
zH4u!@!qAfC7+V5XA}^V&%t at 8L>GI9W>#&}}DGdq)1&@W~Kb3FEa&X1^tGg~Gc-chE
zu%TV9IPz&9KH_qU{*Kk_4Us_~YWt<8@#<7f at q5$xRfwTR06?w#P!gqc!6|PhJ0>b%
zY|BN#LpHgK at LIdpox!EIIUxUUAI+_?ZjOi4XHLh4zo);(@gE$nyqijzvqz;YVFtcz
z`T8VQHYf at RPYkDKqJ)VO3YSy2zE57<AgSY)0H8|(X;T}UmIB)|B5a_4NjX^*<?pVk
z{x*0f#h%2`b$im)OuKAW;<`eUnl)NHS%~&AJA=@%rNP_%^4SsSs1`S28HTO55|g_%
zE=2nS3Pvy+(W-`rU3GO*nceNO&}0#Oh9K>uJ2}-QjMnjAmA|aQ)i06CDO0MvOp~BT
z?8}`KB7{i-;E#J%0NLzE*oB87m1}E{+)x?)roNU6{BcrE7sL-F6B+SLr_S}RXpPBr
zl=_-HFQ?sD=NFF6aW5ER0?~FQ_lDP|&1khBiG?{;_wks?R|v1`-x1>=>Se>f6jB9d
zcldDYJLs59 at Z_eQ=W<Z*GIkzMco3ZhHCdoV*B`O>t<50|29(26v9zO30Y1I~D9~2m
z|IbO`={wpN_p`pc)?$BsW}#<BRH27OfR_`U0ig(&3|FN9vY77&dtFIJFuFOe=b*&b
zBo6`b>+!rtmXyGG_7T58dZqOF2nEXxuzcen3hzH8`b%>0$q9!J>W!1Fkj`ffc<KDm
zc5U1_riZb)v}H-#8DqQAH)bS(Lot!J$Xebf;7HNqB#7P~BWWO0W3=p=JZS!H^4g4f
zO_PO$+6mb%M`>#YLOujp*ow8 at t7{xBmzx!YUUy}nO7>IXoS(?kCG=*hUuC>&2ACAA
zKt(+nfo)hhgo9Zrd^uZ2{YmVS`w$$|Uph_DPSvnT2Tj+5KswJ3k`a;-$fkh8?eD6N
zsU<5b$;&DO0s{rNX|I%2Lc^o@;PV`9UGpiQyET$32a&6X(yOo=aWc{x=Rt#G$V0)N
zzfDy>-e${Z&&RjbUs~L3e{7Z-$WiqM5;!GniE9f{U#uD&ghhp#8-_s40&7f+n&R99
z3^N?b4!XlqiA^wM4IV^!t47*5r$Lxm2N|ha6dM~qpI3F+?laytr!SAC#^77&=q%@`
zWw<0F1qfXym`PeOWqc}>uXb<M3=gC{2zdhH-8eKt;rv(*U{0onjz)~DN at _by{thJ>
z?jLGp34e6Abne;5Mb$#hS{$i34;2%U9L3%*0;Z_*y{>BRHcW~^rV}`!KkXZy+K^9Z
zh=>4(L=hYVHO?jTN?IkS8pz*~K{HX8!UU7KoqlLQLSrgtGM?heB*yhIqzP|S)OB-o
zT2*P($(LugiE_V*4BVnB^M%#J%GrL*WF7#h2hijL03dv!nUC@?vkP=Mx>Iq_)6N*?
z7yy9r^mD4<VwhuxXMst*fAyr!r^qVM at aSJ@n=5+h4H{`}K7v+?&&LqEQXl~N00j5~
z%e0RESN at rad6_c;?sbzX*QKtIw&7L0_4GT$(5AqR8Z!lX?TWiOBWVSJ6fYoa`f6L<
z&G%csVv3CRmi9a{1gLf$FVk8&Hq%ml0*1gv!H`XDC1RlP(D&;@h at 1x23%nnwNW$Mz
z;y_kUUV68%wM+uw-~h%os9?+Z(_Z?I<$bgc`w4B8P(#x|IYRqx#`LP~w+z8R_6 at id
zwg&(VXccs>l9k+vum~|-?d(y5hnWPRkJfe(&#3Vg$$!nSuB&F#W4bY{&%~ZpH6P9S
zr;QV+gSDrr)xEw+0ey!BA*~*CmhhnRy*mSEb}>d?(NgU?yKHU!N0{P^*{BzVzEo1W
z4e!I%r7bz;-4dC%{sQ}PA_nFYdF0>;e!f`8E^V4^uZEg%UKKDWuA~|cm-)s$0kMa%
z%Di-CR~`=3a`vn9*Q-lK^f7HmV^}U{n$gjhQ~_{-mBMjwq1`$e3FHPc5@>p3doj%L
zoLnI~1LVKyWD@(9*_bN1<-{T0HI_Q^k<h1~+fzMx-=I}Qg;b>T%T&=IsvfUx`y?uE
ziQrARsiD|9A>so#`@9TyV>IIa?*hJNENl-plY@!kF55pK%$b?0z at z&dq+EM~ZstQ*
zwSuZ1G{ul>j#gWW+ZO<w3IZcc^34(@CKgLk#o2NwS}xNKbI9tlJIskW6g6Ub6}-AZ
z4mMT(C#AU0)s=IMTrEKXinfTSD?B-{Yah>vMQ=+?*rz>AHT1|b^~j{|_PIZQ#m&lW
z^jro at Oi0^pw%cvD87nJda{E|%OehBzPpkCodAddh16;$Xwt6{<lgK0(obf{c0_ZCS
zM4ghK;e_MQDy-O2gOa5Z79MtQaiQ=!$n3ui{Iz?;Zy|R^+9rXQ7rW}~Yhk<y)XaD9
z6O-_<`X7(Z<n_9G?<3QIg8mr+RwA_(t!_8}YgMQBydEWQj#7p<M-W!z9WaT9S`M#q
z7)FdxHT7H;$I6$X&Q9Teywhlv_ska&KkV+;So`n=;JM9BzAD2SuV at yeh_-;*akg1e
zRi(b+`rc+^VdiHl at fckv$nG<_+xR|mHN2gy*DvGAxy|<OMtEx{Ek4G9o?Ju)(K+)S
z5vol>Sk|D3#5D$k&4Qf3@|Rt{f3wTp$+6>YIj$c9lB^2~@pJTHY0nla6_Xx;Js#V)
z_TN78jTeMjo9xe>C`;E+#Fg?Ap^yd(pi+{>mFR}&bLiynwiy1O$KHl(RNNP(WMTjI
zK#oKxbv5QZuvaQ%ToReJ^fW(PO_=DaXrjOnOFs%EFp<EOg#p5LdPqQY`xe{lx>XjL
z&XTin4OL?%MqC&*CeaHZ_qL2R?=?aPC7B^!QXeQOBXbNXoG;`fKv_Zx0xJnwcb~Y;
zVYvQI-jH+bF`lL(z?UC=0=B+Ya{|)Dl(I;>6-XTR+IuT9NcEJvuT!L<-RXN<^}f2E
zT)-k$=EWKdn-fQq+V?d&+~qQuGN~7kEw63FZ3jhRU at HpD9DMuTER>G^+ at Ol0q%gV;
z`qy3KOMO|I>T1zhOycE8m6rg4P*%Dev?yT8X&`B_o39fVlgfIRD+5MDTB&`;-P0?T
zGRu(`wj>)1o`=zQ5^3dC4R#_6CSRK2kQ4z>JTGrFGnS#+tC2llF?ouByTA$yX6A?p
zAS;jy02#b}90A!EjOzoV#hhsNGLMTC<JutzLC7EgHkS=y87zm(uIU)5`1g7_nkAuy
z>tqTKID%7>`lYg$<ICZr;hqzsp#<2P|Mb=G_u9 at xe`Ht&tWPL8O^I^~@KCFnR~W5b
z4T=d(e+d;uz1!TP+x$=!K|atgnVO`K&+tW;VT_Mc6)Myv4h;uOd#H0y;A9 at iSFY<$
zXt at 6G`F$P5N<he at BS3wUOWu9t8pShDc-fZRdhB^I!hnUWVK|H!2L{}Pktw!DIQSF$
z&r0jvZ9WG0tsr$2Df;Y37PS7BOJI)=uWhQMBecxwG4m_eFWXvN>d)x>&OP>%Lx<w_
z+o#0m at C`!GseNarPS%dw at u>82w@?>i+y>m2)kMYamYmJ6pxRrp2xSN*OP^z83baZR
ze}@w-%flCJy4>w2z%|O$$x+paB$?yUDe<s$sOz+dL&%imC$hiHz?s8Yn*#L069qDo
z-t&&mF5HF1xx~Ky&r)i=KgNB)-qH<9Z1tAPZT5`Xxqz0bYaMl1ZyB+@<~rTNhUh#V
zH!JAD)48kGa?GgZR94l7!@;SP9W_iw3cJsnwBKd>Whk*Qjny<Jl1tE*;$o4^x2%ug
zdKz+ETMWl+EN3G*7 at oDGT1%~#{O=^bfOcDfUG_db7Wk70P!_OZT*L9(oR9Z^Sq5YG
zb`OosS;ior`*G)orCwGi4eTv)<E@@o-K0ojR8J6k8=fGlla2fl4$<W#WyYGlvkcqr
z*`=$piyrGGft6QHJ8O1m$&Qz7(s1k^Xf={3t;M9xV6{twjT9YMH#|2Sf9qhU_vH8_
zSGuK!N at t)4L`O?Vqwy#cGhT8|2d6EGU-6S)&kydewRV3fPljXwy9+S_kH<c1q0)f5
zRi@*I(+rvx4o5Yve<7e3{D}1LyG3mz at iZN%DSUIMEZ)F<0V|v-l*SGdB at jF?ToBLb
zwh^4=ufBi8qUtQ~-ny=1yMFxhw?3K9(uwwuA~7<nXjIGiD~xKx4gH~&whv<v)t6n7
zZxNE!i~Nelh0~K&Ex3&p_Zp)oXYAWeA-qoo<YID%9R4K6Q^A at uBOpiASuKj4+nhK6
z)O$Djt64XeD5(s;{m?~ST1H~1r?kGJbg63eK$lsg9MLS#t*7`T at 1mI4EX^q!%Z9dn
zOfrKB$Icc+wwGGvwDSc<f-hoSG?#CPocb>V)^RE^x(-du)^2;UyZ4_%$(sY_uq__0
zC?XyD?r;3JrmkMB(H&u+#mkrD6F)L}crtSx_7M7aZndoAiC^WG(>}y~ehuXW?PW7x
zgWZJc9PBkZismNs36<gJ$p8DYD{>nT at bEH=pmu%cuc5N4vap{YW~4KZ^pjQ4#~G^k
z2Z7F)!bIN-T_wX>mjy4}gP738Xc~+KU<@j+d^>$nd|QnwA8Mf~);g^rH_qKP_blyT
zZabUPC_OIo_ok<J2a2zR4t(#?(l;~bjf$YnmJ8qw5x5jwM(|%`hxl#PquasvBhAJc
z92XVl>Ju3f^R2;QjyjC{Yh@=rNcYgRqg92 at DTm0OS^Dx$kb}oyvFx+8o*M9sQ8Ec`
z;9QVaHj+8r>q`ibj!y4tT>A}L?toSO>PG1<m&pt-)_Mom1PJV_A3>34NU_w%FE?PS
z7?%yU->9`kM)b*5JpI!d&$yX{rS%awV~bIVjMZ(Ik?Jb*yu?^~SM~V3ZI;R2IlWE9
z$hQZTt2LfYifpA;^Pi@^F{tPD&SI=#ok?iY;ZR$4m9eKAfnoLR*cD-OP>SbyJ+h?=
zGKfad!v;%6(bn<P0AL^<-a}ndEGwj}pi7Ax?eS8wb?b;wzmMllf`?va$(hn-U at tI{
zd65$|mLXr2l*dn2XFCZ)bGof!bX^pcItAM?L9pJrIkpXr1K}c$%0c_@@IX1Ron4~w
z8x3<Ykn-Si4mRT*lOi6DoWm&l!25b4X8vDWSKh2%_d`+u`xE>U-hGd~V%wsdS|IL|
zT?6LVgfQ-mrL{a~VeF+xD=+ at Ph80jJDAp_B{Y-X?6kh}{lNP)x8sO&5RMZ2bF6fIS
zec{`4Wes=C*1kAuVN||TcFGbJxs<V<-L=eECde%5#+}K}%1vt_nFOK6&n3L~F33-3
zzEavsU_4qa0%_wU`Ta+o*o=K>T%riHJ0!WH$tw$~)4M=AK126QsV%O+LVM>gztClH
zGY5rbZ$e8R#tk^Z`Ey#;xA}~Yib`WmAzU>$Y?|pU`3;Il=$<OPzcy*MVLMXKb7Fuu
zdD=O?K&y7$8}*4RVSZBIo)GOnlmi)elrtkS#NCaH;Ni03R`<sOg;<&zLEMe2xQ=CH
zSZZFm@{}Cak58T^Mn%-y*rH~x*V!A;DAUPRa8O*>Lt%pk!_&(qpw`d}!*rPU^`J*y
zNxYbDI-bSNrQ6QeBtj0Ur at uVie9~b(*r&7RnN7_HExNF&&3U86s&#Vtkmn9(4!OvL
zK0oA+;@gxT0LpZTW9UicPHulk|EK{6y2<%l^HcTUB`(#q-9Y&a#0>62H+QN>4~)gQ
z180>^u%efXJDd~|uzwDE0v!!;e=iX1>c;mD6jDL42u=(OReG1=qHig43QT6N24~B_
z<~1H#^|5Ed_iknwn^nZaHz9dyM!h=hB?#d at 5$(Dnm)EK9<mPtPHu-a>PRFVma+R|?
z0_|wL98L0DLh4y>d|m5`MY@?g)XYxfjHZ}5&@!S0F4lgW^8wmtW*Pm%JnU%X6-#3x
zk}Jl;zCZRc9 at 9<Xc0T^=#O}Sm|L14EC&2VIH!BHn)!Wk9LUZr%zRZQ=IL#bxR+$$5
zn+^`#>$NgeHL&v9J4a2QwjAVO#@mtHcsm`=uMca4zgNB=8>au_?ntK!5*HvI9)LtN
B)Kvfg

literal 0
HcmV?d00001

-- 
1.7.1



More information about the elfutils-devel mailing list