[PATCH] libdw: Allow .debug_frame only Dwarf.

Mark Wielaard mark@klomp.org
Wed Jun 27 13:00:00 GMT 2018


.debug_frame is useful independent from the other .debug sections.

Add a simplified variant of the addrcfi testcase dwarfcfi.
dwarfcfi only uses dwarf_frame calls and no dwfl helpers.

Signed-off-by: Mark Wielaard <mark@klomp.org>
---
 libdw/ChangeLog                      |   5 +
 libdw/dwarf_begin_elf.c              |   3 +-
 tests/ChangeLog                      |  17 ++++
 tests/Makefile.am                    |   8 +-
 tests/dwarfcfi.c                     | 175 +++++++++++++++++++++++++++++++++++
 tests/run-dwarfcfi.sh                | 133 ++++++++++++++++++++++++++
 tests/testfile11-debugframe.bz2      | Bin 0 -> 2202 bytes
 tests/testfile12-debugframe.bz2      | Bin 0 -> 1385 bytes
 tests/testfileaarch64-debugframe.bz2 | Bin 0 -> 1820 bytes
 tests/testfilearm-debugframe.bz2     | Bin 0 -> 1987 bytes
 tests/testfileppc32-debugframe.bz2   | Bin 0 -> 1526 bytes
 tests/testfileppc64-debugframe.bz2   | Bin 0 -> 1555 bytes
 12 files changed, 339 insertions(+), 2 deletions(-)
 create mode 100644 tests/dwarfcfi.c
 create mode 100755 tests/run-dwarfcfi.sh
 create mode 100644 tests/testfile11-debugframe.bz2
 create mode 100644 tests/testfile12-debugframe.bz2
 create mode 100755 tests/testfileaarch64-debugframe.bz2
 create mode 100755 tests/testfilearm-debugframe.bz2
 create mode 100755 tests/testfileppc32-debugframe.bz2
 create mode 100755 tests/testfileppc64-debugframe.bz2

diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index c7e39c6..97f4f19 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,8 @@
+2018-06-27  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf_begin_elf.c (check_section): Allow a single .debug_frame
+	section.
+
 2018-06-25  Mark Wielaard  <mark@klomp.org>
 
 	* Makefile.am (libdw_a_SOURCES): Add dwarf_next_lines.c.
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
index e1542c7..184a6dc 100644
--- a/libdw/dwarf_begin_elf.c
+++ b/libdw/dwarf_begin_elf.c
@@ -209,7 +209,8 @@ valid_p (Dwarf *result)
      Require at least one section that can be read "standalone".  */
   if (likely (result != NULL)
       && unlikely (result->sectiondata[IDX_debug_info] == NULL
-		   && result->sectiondata[IDX_debug_line] == NULL))
+		   && result->sectiondata[IDX_debug_line] == NULL
+		   && result->sectiondata[IDX_debug_frame] == NULL))
     {
       Dwarf_Sig8_Hash_free (&result->sig8_hash);
       __libdw_seterrno (DWARF_E_NO_DWARF);
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 256edec..1e03f6b 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,20 @@
+2018-06-27  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf_cfi.c: New file.
+	* run-dwarfcfi.sh: New test.
+	* testfile11-debugframe.bz2: New testfile.
+	* testfile12-debugframe.bz2: Likewise.
+	* testfileaarch64-debugframe.bz2: Likewise.
+	* testfilearm-debugframe.bz2: Likewise.
+	* testfileppc32-debugframe.bz2: Likewise.
+	* testfileppc64-debugframe.bz2: Likewise.
+	* Makefile.am (check_PROGRAMS): Add dwarfcfi.
+	(TESTS): Add run-dwarfcfi.sh.
+	(EXTRA_DIST): Add run-dwarfcfi.sh, testfile11-debugframe.bz2,
+	testfile12-debugframe.bz2, testfileaarch64-debugframe.bz2,
+	testfilearm-debugframe.bz2, testfileppc32-debugframe.bz2 and
+	testfileppc64-debugframe.bz2.
+
 2018-06-25  Mark Wielaard  <mark@klomp.org>
 
 	* next-files.c: New file.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7b29fd8..47e5555 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -46,6 +46,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
 		  dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \
 		  dwfl-addr-sect dwfl-bug-report early-offscn \
 		  dwfl-bug-getmodules dwarf-getmacros dwarf-ranges addrcfi \
+		  dwarfcfi \
 		  test-flag-nobits dwarf-getstring rerequest_tag \
 		  alldts typeiter typeiter2 low_high_pc \
 		  test-elf_cntl_gelf_getshdr dwflsyms dwfllines \
@@ -95,6 +96,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
 	run-ranlib-test2.sh run-ranlib-test3.sh run-ranlib-test4.sh \
 	run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
 	run-find-prologues.sh run-allregs.sh run-addrcfi.sh \
+	run-dwarfcfi.sh \
 	run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
 	run-readelf-const-values.sh \
 	run-varlocs-self.sh run-exprlocs-self.sh \
@@ -205,7 +207,10 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
 	     run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
 	     run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
 	     run-readelf-const-values.sh testfile-const-values.debug.bz2 \
-	     run-addrcfi.sh \
+	     run-addrcfi.sh run-dwarfcfi.sh \
+	     testfile11-debugframe.bz2 testfile12-debugframe.bz2 \
+	     testfileaarch64-debugframe.bz2 testfilearm-debugframe.bz2 \
+	     testfileppc32-debugframe.bz2 testfileppc64-debugframe.bz2 \
 	     run-varlocs-self.sh run-exprlocs-self.sh \
 	     run-find-prologues.sh run-allregs.sh run-native-test.sh \
 	     run-addrname-test.sh run-dwfl-bug-offline-rel.sh \
@@ -506,6 +511,7 @@ dwarf_getmacros_LDADD = $(libdw)
 dwarf_ranges_LDADD = $(libdw)
 dwarf_getstring_LDADD = $(libdw)
 addrcfi_LDADD = $(libdw) $(libebl) $(libelf) $(argp_LDADD) -ldl
+dwarfcfi_LDADD = $(libdw) $(libelf)
 test_flag_nobits_LDADD = $(libelf)
 rerequest_tag_LDADD = $(libdw)
 alldts_LDADD = $(libdw) $(libelf)
diff --git a/tests/dwarfcfi.c b/tests/dwarfcfi.c
new file mode 100644
index 0000000..db4a36f
--- /dev/null
+++ b/tests/dwarfcfi.c
@@ -0,0 +1,175 @@
+/* Test program for DWARF (.debug_frame) CFI handling.
+   Copyright (C) 2009-2010, 2013, 2015, 2018 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/>.  */
+
+#include <config.h>
+#include <assert.h>
+#include <inttypes.h>
+#include <error.h>
+#include ELFUTILS_HEADER(dw)
+#include <dwarf.h>
+#include <argp.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "../libdw/known-dwarf.h"
+
+static const char *
+op_name (unsigned int code)
+{
+  static const char *const known[] =
+    {
+#define DWARF_ONE_KNOWN_DW_OP(NAME, CODE) [CODE] = #NAME,
+      DWARF_ALL_KNOWN_DW_OP
+#undef DWARF_ONE_KNOWN_DW_OP
+    };
+
+  if (likely (code < sizeof (known) / sizeof (known[0])))
+    return known[code];
+
+  return NULL;
+}
+
+static void
+print_detail (int result, const Dwarf_Op *ops, size_t nops)
+{
+  if (result < 0)
+    printf ("indeterminate (%s)\n", dwarf_errmsg (-1));
+  else if (nops == 0)
+    printf ("%s\n", ops == NULL ? "same_value" : "undefined");
+  else
+    {
+      printf ("%s expression:", result == 0 ? "location" : "value");
+      for (size_t i = 0; i < nops; ++i)
+	{
+	  printf (" %s", op_name(ops[i].atom));
+	  if (ops[i].number2 == 0)
+	    {
+	      if (ops[i].atom == DW_OP_addr)
+		printf ("(%#" PRIx64 ")", ops[i].number);
+	      else if (ops[i].number != 0)
+		printf ("(%" PRId64 ")", ops[i].number);
+	    }
+	  else
+	    printf ("(%" PRId64 ",%" PRId64 ")",
+		    ops[i].number, ops[i].number2);
+	}
+      puts ("");
+    }
+}
+
+static int
+handle_address (Dwarf_CFI *cfi, GElf_Addr pc)
+{
+  Dwarf_Frame *frame;
+  int result = dwarf_cfi_addrframe (cfi, pc, &frame);
+  if (result != 0)
+    {
+      printf ("dwarf_cfi_addrframe: %s\n", dwarf_errmsg (-1));
+      return 1;
+    }
+
+  Dwarf_Addr start = pc;
+  Dwarf_Addr end = pc;
+  bool signalp;
+  int ra_regno = dwarf_frame_info (frame, &start, &end, &signalp);
+
+  printf ("%#" PRIx64 " => [%#" PRIx64 ", %#" PRIx64 "):\n",
+	  pc, start, end);
+
+  if (ra_regno < 0)
+    printf ("\treturn address register unavailable (%s)\n",
+	    dwarf_errmsg (-1));
+  else
+    printf ("\treturn address in reg%u%s\n",
+	    ra_regno, signalp ? " (signal frame)" : "");
+
+  // Point cfa_ops to dummy to match print_detail expectations.
+  // (nops == 0 && cfa_ops != NULL => "undefined")
+  Dwarf_Op dummy;
+  Dwarf_Op *cfa_ops = &dummy;
+  size_t cfa_nops;
+  result = dwarf_frame_cfa (frame, &cfa_ops, &cfa_nops);
+
+  printf ("\tCFA ");
+  print_detail (result, cfa_ops, cfa_nops);
+
+  // Print the location of the first 10 (DWARF nr) registers
+  for (int r = 0; r < 10; r++)
+    {
+      Dwarf_Op ops_mem[3];
+      Dwarf_Op *ops;
+      size_t nops;
+      printf ("\treg%d: ", r);
+      int reg_result = dwarf_frame_register (frame, r, ops_mem, &ops, &nops);
+      print_detail (reg_result, ops, nops);
+      result |= reg_result;
+    }
+
+  free (frame);
+  return result;
+}
+
+int
+main (int argc, char *argv[])
+{
+  if (argc <= 2)
+    error (EXIT_FAILURE, 0, "need file name argument and addresses");
+
+  int fd = open (argv[1], O_RDONLY);
+  if (fd == -1)
+    error (EXIT_FAILURE, errno, "cannot open input file `%s'", argv[1]);
+
+  elf_version (EV_CURRENT);
+
+  Elf *elf = elf_begin (fd, ELF_C_READ, NULL);
+  if (elf == NULL)
+    error (EXIT_FAILURE, 0, "cannot create ELF descriptor: %s",
+	   elf_errmsg (-1));
+
+  Dwarf *dwarf = dwarf_begin_elf (elf, DWARF_C_READ, NULL);
+  if (dwarf == NULL)
+    error (EXIT_FAILURE, 0, "cannot create DWARF descriptor: %s",
+	   dwarf_errmsg (-1));
+
+  Dwarf_CFI *cfi = dwarf_getcfi (dwarf);
+  if (cfi == NULL)
+    error (EXIT_FAILURE, 0, "cannot get DWARF CFI from .dwarf_frame: %s",
+	   dwarf_errmsg (-1));
+
+  int result = 0;
+  int args = 2;
+  do
+    {
+      char *endp;
+      uintmax_t addr = strtoumax (argv[args], &endp, 0);
+      if (endp != argv[args])
+	result |= handle_address (cfi, addr);
+      else
+	result = 1;
+    }
+  while (args++ < argc - 1);
+
+  dwarf_end (dwarf);
+  elf_end (elf);
+
+  return result;
+}
diff --git a/tests/run-dwarfcfi.sh b/tests/run-dwarfcfi.sh
new file mode 100755
index 0000000..98fa171
--- /dev/null
+++ b/tests/run-dwarfcfi.sh
@@ -0,0 +1,133 @@
+#! /bin/sh
+# Test for dwarf_getcfi.
+# Copyright (C) 2018 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
+
+# Test files come from run-addrcfi with all sections stripped except
+# the .debug_frame.
+# for i in <testfiles>
+#   eu-strip -f $i-debugframe $i
+#   eu-strip -g --remove-comment --keep-section=.debug_frame $i-debugframe
+# done
+testfiles testfile11-debugframe testfile12-debugframe
+testfiles testfileaarch64-debugframe
+testfiles testfilearm-debugframe
+testfiles testfileppc32-debugframe
+testfiles testfileppc64-debugframe
+
+testfiles testfile11-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfile11-debugframe 0x080489b8 <<\EOF
+0x80489b8 => [0x80489b8, 0x80489b9):
+	return address in reg8
+	CFA location expression: bregx(4,4)
+	reg0: undefined
+	reg1: undefined
+	reg2: undefined
+	reg3: same_value
+	reg4: location expression: call_frame_cfa stack_value
+	reg5: same_value
+	reg6: same_value
+	reg7: same_value
+	reg8: location expression: call_frame_cfa plus_uconst(-4)
+	reg9: undefined
+EOF
+
+testfiles testfile12-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfile12-debugframe 0x00000000000009d0 <<\EOF
+0x9d0 => [0x9d0, 0x9d1):
+	return address in reg16
+	CFA location expression: bregx(7,8)
+	reg0: same_value
+	reg1: undefined
+	reg2: undefined
+	reg3: undefined
+	reg4: undefined
+	reg5: undefined
+	reg6: same_value
+	reg7: location expression: call_frame_cfa stack_value
+	reg8: undefined
+	reg9: undefined
+EOF
+
+testfiles testfileppc32-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfileppc32-debugframe 0x100004c0 <<\EOF
+0x100004c0 => [0x100004c0, 0x100004d0):
+	return address in reg65
+	CFA location expression: bregx(1)
+	reg0: undefined
+	reg1: location expression: call_frame_cfa stack_value
+	reg2: same_value
+	reg3: undefined
+	reg4: undefined
+	reg5: undefined
+	reg6: undefined
+	reg7: undefined
+	reg8: undefined
+	reg9: undefined
+EOF
+
+testfiles testfileppc64-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfileppc64-debugframe 0x00000000100005b0 <<\EOF
+0x100005b0 => [0x100005b0, 0x100005d0):
+	return address in reg65
+	CFA location expression: bregx(1)
+	reg0: undefined
+	reg1: location expression: call_frame_cfa stack_value
+	reg2: same_value
+	reg3: undefined
+	reg4: undefined
+	reg5: undefined
+	reg6: undefined
+	reg7: undefined
+	reg8: undefined
+	reg9: undefined
+EOF
+
+testfiles testfilearm-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfilearm-debugframe 0x00008510 <<\EOF
+0x8510 => [0x8510, 0x8524):
+	return address in reg14
+	CFA location expression: bregx(13)
+	reg0: undefined
+	reg1: undefined
+	reg2: undefined
+	reg3: undefined
+	reg4: same_value
+	reg5: same_value
+	reg6: same_value
+	reg7: same_value
+	reg8: same_value
+	reg9: undefined
+EOF
+
+testfiles testfileaarch64-debugframe
+testrun_compare ${abs_builddir}/dwarfcfi testfileaarch64-debugframe 0x400550 <<\EOF
+0x400550 => [0x400550, 0x400568):
+	return address in reg30
+	CFA location expression: bregx(31)
+	reg0: undefined
+	reg1: undefined
+	reg2: undefined
+	reg3: undefined
+	reg4: undefined
+	reg5: undefined
+	reg6: undefined
+	reg7: undefined
+	reg8: undefined
+	reg9: undefined
+EOF
diff --git a/tests/testfile11-debugframe.bz2 b/tests/testfile11-debugframe.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..5c07d16a02b3ae653c61901320c7550a40e7c0dd
GIT binary patch
literal 2202
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
Of>#|(ODW1Rvg1E{G29ve

literal 0
HcmV?d00001

diff --git a/tests/testfile12-debugframe.bz2 b/tests/testfile12-debugframe.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..b8cc19c3cbad5e38f03dee6f7c1ab2b27013f86c
GIT binary patch
literal 1385
zcmV-v1(y0kT4*^jL0KkKS!U5OzyJn0fB*mg|NPMF|40A#{%ZgC-*C%7M|DC(V$5(5
z(nJFQa{$l;`xb<x9<CYyp`wDCG-$*!Wc4tb0LTCUGynh^XwWnb15BC&K*-UfKm?%z
z0WxGEJcU0~QTm~^03N2AJwN~&Gynhq20#D+9#d%qg%e1gp-h=Jpu`$IPfbjW^+&1d
zU?H^tG|<U}(8S56ni^yVO*9PvWDsCYFq&dwXvu&k0GbR0(*Oj?fB+GKF)<hf(8Mxm
z!78cyRW$W9$N&uh0MKX+G8zB?$PEJ!$Ob?F0001bpaxvRtr$E9jiQAhR}3j5cA#0Z
z&MGZS739t9uW8Y1N%pH2KRbfR1aq@KL%SD^8rS8W_t3=?5FJ~irhIXyHhs-$(Fn&e
zWbCWO@_$vw4V>6NHcn>s$pY0_(9Ts=aJ>W&)f7lyX4*+Fz#{E}S`At+(^XUZT3Bn+
zRS};7B@)_UL<xQWnX5QQ>`E26QQ`@#M6Xq~PDFM64{)+rJnP=>@aguPjP38AtrH?3
zK$)0sVbhc;LWl*38oi{53`r!|GDtKwHX#}#5(Pxq(*_MQ;9~Y(quVqYZ5Wt^8W0Vj
zNwf<ji8k0Jxsf)JjxvsjB_aTA2y6#*5|Roqk;D!(<Bdko3ds@|;Nmujj0B)12aO0Y
zp{q__StPk;0ieSlin|$l?4_&GpKo~AEGBr01rCCHTd8A$3_<Fmq(qfJ(Ip=%qiIsj
zTqe%ON{p&#nzY3a4;oW}V`PMEsGUwXQ6D=)>oN^C#>d6%Q)XKXfGU`D<j_=U`$guF
zp`S@7!Q^QYxBp?8nhSs@1^@>pkRWJ+GXkUeG+3t>wmy`tH_zkzd;I=gEg=xdg5v}Q
z36T*nG6HsddSY5BWL{O`67M`rV-3|%muE%>T*{z-oBbyyEO%|$t<&GU+dGrYcC7|g
zt5(&|X(Go5#VNXa93S?GU3J&p&97+Cb<TFRuS(aZ*_`D7?KFV;TJvu7opEN>%2fKY
zyvo|r`|*NY4Riqfwe+AH9O11-n7h(On?=eI7Y4=XF$Jtnvj{pi5+=uvMo=ntC`H1^
zEUcin3~umX6M^)e0I(OYm?fXwJTUP{J3i!8X;jJ#z&l{hsMGyJmKW!<v96l1?ZY5F
z1p)%n?2t4MAVERq2n)e@C?-HaKybib6oqxx6oKx6vityHqNsa19PDs7?(|j)XPb0?
z4>N~?gPr!BM;IFwoCZRZZ^{QHLC;|J-|A4-LzjTi<*l8B#Q%6QNi|~&xHw26<%*p6
z2GsK71he8*6u$!H7Fvhej(+N`d6Il#kr9-rjc31d(uqRSasYvgzAkj599qt9w@)%L
zw`4B_#qThF6;C1QZ%>qrno;CVrd-3)#GKt^=91p&!MWI?i#H`LF{Q^SIPbrz1Hgn5
z(8L(v_K)JDDmrrOMZ^^-Lbo)bBGr0|7ZXF=agLcbiHk?ZIn8=qufM-!^sH}TR~~6K
z;P8@Er_r8y5rW2(a;C%=VzC2#o~cC@JSjG)M|6_j+8=4FAR8UMA^qGFjvpVN2m-Fz
zl0!lY*<{GBu3^tn9zH{X^%vqaZX`;E)~qPa42=3^tx#D&Fie&M%TjV=u#_f)$B~)E
z7Y1<LBU)Xtri!s6-O=pjeAlg`)}&J=G~zNfQ$)hSV3<9!*fL#!gt7*`q=Rdfh|^&F
zwjGnhWDIy^ytpXIrnID0MLDd>jOESLry`ZrOW6-UJffj~87o)(OjLPvRN0bPzF_KI
rF~lPXLQ_6bSrMUO6px9;Oc4Z{Ws%T93Y7&R|BJaIoG3^$Xqeytx1x0M

literal 0
HcmV?d00001

diff --git a/tests/testfileaarch64-debugframe.bz2 b/tests/testfileaarch64-debugframe.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..e77494a10fc2ed99f50190a67441d8af2549796a
GIT binary patch
literal 1820
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
E4|6&ovH$=8

literal 0
HcmV?d00001

diff --git a/tests/testfilearm-debugframe.bz2 b/tests/testfilearm-debugframe.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..51ce2d3711bb1f6f8153b0f35aca57ca2b15929c
GIT binary patch
literal 1987
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
V0mV4AK*BTrF64@Ep&?L8kigc0X!-yE

literal 0
HcmV?d00001

diff --git a/tests/testfileppc32-debugframe.bz2 b/tests/testfileppc32-debugframe.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..b6ae4ea6710f0ba322e513a0f2e168e18dcd4817
GIT binary patch
literal 1526
zcmV<S1qu2>T4*^jL0KkKStB;t!vF?rfB*mg|NrDyedPc5|78F7-|Xgq+(hL;2m^FL
zba!e-^=;4vfl6Ro29p2=VX2WCnFREiC$%(Uo<@Nf2pR^OWMuU{CWoZRWb}Y!8U}%o
zXvvy^rc9ob6CfoJ2x>N_K{ZX3@}8%t+McKCBhq@9gCGC^Gz~NW00E|e0000Q07<B!
zCQ<+cLqO5#s4@TsnE(Om000^Q00w{n9-sq2)6yW*5u*{NO)_CHOieK{3<MaOVlWdE
z0RS{$1YnH}hD;+MX`?_vrXxlpOqyiEV3?X>Vi*W9G{j&gCISFxzzD$_84Q?4K+{Hn
ztMZ}q8w;0}I{y#J@1adM2g1%~oUTjeVZ(=|uK}v~s7a>8)a^`Y@;7bCl~q<H)>gr;
zuds!@-q^&l!EUIbMgLj^5!nh#grq5c<$%b!kdOis97iJ+Rd13&ffHt65p_<4p`Uk^
zw(8s}(3q2MrOtBPtjT<=2<-+X6z5>ax#U<$2mmrbVwa?Yw{zdiB2x%Okpu!Nmu6PA
z6E3)-81p)6A|r$q617Au_|VhIvrN<8N(&YG9-wuho#6nW<2&+=a1KGl=3+L0(l$m<
zO+W-wjU2y*`{P50MoyMV#`_jG^J2pCZ`O|I(`vFP43UcNj1oGZ%N-?{AOHzXszY60
zzKxt-igh@a_9xAUa$Cs5Yr=JvzQcdUW3{?iHEh4McKf%{r3^4+wi<D|Stoo*0SuMb
z2O@VF$O|%w71!KJk0Dj!F@=jUQ|8aOi+c{+3QG|rPoGZ9jM_qV(ycNmtb`yc^(jCB
z638J2NB|m1Nft@qa5rHhfDa^^mr1AzaBY=ZX<%~9fK^ddQmCq0R+Q7>Eyb*8qZkI+
zEm8rij(a)XwL)r)37J$u1Q8(+KoOEK1_2a;$glxsMM{xj7{mpMB*<10C~OiEkyI87
z0%EBlQAJ3w7E4LL?u-G9LqYyUj$*I<r<%On?F7BixX@|5<gYkD1Z^Q0<PaQ7$1o~&
zZCnj~+fcRa<Sz~mZYkg?RPa7NYw28A0&vjKFzl2_n<kma@{~$ZFhJd~q$QyRgf@3l
zS{8=RLM!uT(Q_rlHi#LLuL3C|$!vgAq|SU`Ltz0y13grwWX>2=fOZH5hC@k)NE1nb
z3K%58l5WiO8DU09Wa}k4Bq@f_-?|LW8yjksRaI2IYcb|Mm))1S`gW1^vfoO4befup
zgrYP3YNvAeR1o|tX<HX6NfB>aN0?~mzWcuO`Md6Xt!y=ayoqMisH3U6@+%1@C{8a<
zh+ek6&Bhu6=1PK)y|3fAt-d?W&+oj#bu5`MWP%bv0|eXCEi%-*p)%ie@GOwi#<tnD
z46;Dxbv8rGZEQSq?@@yq^cJlUyEz0YQ4?La=vLBDtrA(lS3z{iZPI@6rVNlBciGOl
zamz9=Q*?h3NEORB;Xm-iw`d|W46Tx)s;HyQA;t{5vpIt0TJ-JBFsxV7+L--FI22Z2
zdvd;KFs*O{cq%IQWH`rIGf`8fGL?6#riO8R4+cxNF=Yt4N*Hua(Ay~cc6G+{<zaBB
zWEUB>MF`%~f<Y0o+!4e?!j|I{%#At7Wn+~!up`FDlC2()w3AE>m6;nVp2kw9lvKRv
z7(_27k|Z@Ro1?3YDimoI9)v~ZNmN$t{+*Qyv{6*d>yT<ZO4>E5-HQ_<lS_Fu*i#A?
zO;u55YN28yZINlQp3TwW%`6~lj@HUfGeY&$ys?satimX)w2OhjlpZ~*L?1%zhI~Yc
zxH4iZG7^Rt*<LCZp<)#X=G?U+z)B1liCI#Va#S)mGA(gDgQf+@Q&LmFIl55CuJ+=>
z#Re+@W+IsL;sOQiLQ|n|<Z)9PjRq9BaS4>-ZdhsUZ*#Gk%vJa6lJSVexS)T#1n0ZM
zb5&K%JchT%;xq^lSKNXArEB9_2Mv5K&Gf8lOS+Q>eZ8X`O#wx0rsl6>p8Xr6Fx{~B
cT(BIxx&p+L0i<BidE@>r<ce^iAVzJohA^bG+5i9m

literal 0
HcmV?d00001

diff --git a/tests/testfileppc64-debugframe.bz2 b/tests/testfileppc64-debugframe.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..85c80ac66266fda4ad25211c81f6207a43824db8
GIT binary patch
literal 1555
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
FO8{wgzsLXp

literal 0
HcmV?d00001

-- 
1.8.3.1



More information about the Elfutils-devel mailing list