]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
tests: Add s390 and s390x addrcfi testcases.
authorMark Wielaard <mjw@redhat.com>
Wed, 28 Aug 2013 19:54:58 +0000 (21:54 +0200)
committerMark Wielaard <mjw@redhat.com>
Tue, 3 Sep 2013 09:38:37 +0000 (11:38 +0200)
Signed-off-by: Mark Wielaard <mjw@redhat.com>
tests/ChangeLog
tests/Makefile.am
tests/addrcfi.c
tests/run-addrcfi.sh
tests/testfiles390.bz2 [new file with mode: 0755]
tests/testfiles390x.bz2 [new file with mode: 0755]

index 6192d88e65861f6b1864d6b9e6dfd7297d30320e..5871f9d0f836976ca3c817ef86505edc2f581ebb 100644 (file)
@@ -1,3 +1,13 @@
+2013-08-28  Mark Wielaard  <mjw@redhat.com>
+
+       * addrcfi.c (handle_cfi): Handle .debug_frame or .eh_frame
+       completely missing.
+       * run-addrcfi.sh: Add case for EM_S390 ELFCLASS32 and ELFCLASS64.
+       * testfiles390.bz2: New testfile.
+       * testfiles390x.bz2: Likewise.
+       * Makefile.am (EXTRA_DIST): Add testfiles390.bz2 and
+       testfiles390x.bz2.
+
 2013-08-28  Mark Wielaard  <mjw@redhat.com>
 
        * addrcfi.c (handle_cfi): Use printf not error.
index bebb5cd3b96a82d03bb0bc5a1358c6be5c2351ea..8e4f88afb41ae5bb250bc20b23127f82b2830f74 100644 (file)
@@ -203,7 +203,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
             testfilenolines.bz2 test-core-lib.so.bz2 test-core.core.bz2 \
             test-core.exec.bz2 run-addr2line-test.sh \
             run-addr2line-i-test.sh testfile-inlines.bz2 \
-            testfileppc32.bz2 testfileppc64.bz2
+            testfileppc32.bz2 testfileppc64.bz2 \
+            testfiles390.bz2 testfiles390x.bz2
 
 if USE_VALGRIND
 valgrind_cmd='valgrind -q --trace-children=yes --error-exitcode=1 --run-libc-freeres=no'
index 398b2918bbbebad25cc3ecb970caa62ca11e7acd..8a2d126c8f9e05c5ab06e779237978f51299cea7 100644 (file)
@@ -107,6 +107,12 @@ static int
 handle_cfi (Dwfl *dwfl, const char *which, Dwarf_CFI *cfi,
            GElf_Addr pc, struct stuff *stuff)
 {
+  if (cfi == NULL)
+    {
+      printf ("handle_cfi no CFI (%s): %s\n", which, dwarf_errmsg (-1));
+      return -1;
+    }
+
   int result = dwarf_cfi_addrframe (cfi, pc - stuff->bias, &stuff->frame);
   if (result != 0)
     {
index 2f9eb151830d41196eec3d39f5eace6eeedc6aab..adf8d8b3876e5a8e6997968e6e52d8a9a1c016d0 100755 (executable)
@@ -2342,3 +2342,157 @@ dwarf_cfi_addrframe (.eh_frame): no matching address range
        vector reg1154 (vr30): undefined
        vector reg1155 (vr31): undefined
 EOF
+
+# EM_S390 (ELFCLASS32) (function bar 0x4004d8)
+# Note. Only in .eh_frame, there is no .debug_frame.
+# Same as PPC above but with -m31.
+testfiles testfiles390
+testrun_compare ${abs_builddir}/addrcfi -e testfiles390 0x4004d8 <<\EOF
+.eh_frame has 0x4004d8 => [0x4004d8, 0x4004e8):
+       return address in reg14
+       CFA location expression: bregx(15,96)
+       integer reg0 (%r0): undefined
+       integer reg1 (%r1): undefined
+       integer reg2 (%r2): undefined
+       integer reg3 (%r3): undefined
+       integer reg4 (%r4): undefined
+       integer reg5 (%r5): undefined
+       integer reg6 (%r6): same_value
+       integer reg7 (%r7): same_value
+       integer reg8 (%r8): same_value
+       integer reg9 (%r9): same_value
+       integer reg10 (%r10): same_value
+       integer reg11 (%r11): same_value
+       integer reg12 (%r12): same_value
+       integer reg13 (%r13): same_value
+       integer reg14 (%r14): same_value
+       integer reg15 (%r15): same_value
+       FPU reg16 (%f0): undefined
+       FPU reg17 (%f2): undefined
+       FPU reg18 (%f4): undefined
+       FPU reg19 (%f6): undefined
+       FPU reg20 (%f1): undefined
+       FPU reg21 (%f3): undefined
+       FPU reg22 (%f5): undefined
+       FPU reg23 (%f7): undefined
+       FPU reg24 (%f8): same_value
+       FPU reg25 (%f10): same_value
+       FPU reg26 (%f12): same_value
+       FPU reg27 (%f14): same_value
+       FPU reg28 (%f9): same_value
+       FPU reg29 (%f11): same_value
+       FPU reg30 (%f13): same_value
+       FPU reg31 (%f15): same_value
+       control reg32 (%c0): undefined
+       control reg33 (%c1): undefined
+       control reg34 (%c2): undefined
+       control reg35 (%c3): undefined
+       control reg36 (%c4): undefined
+       control reg37 (%c5): undefined
+       control reg38 (%c6): undefined
+       control reg39 (%c7): undefined
+       control reg40 (%c8): undefined
+       control reg41 (%c9): undefined
+       control reg42 (%c10): undefined
+       control reg43 (%c11): undefined
+       control reg44 (%c12): undefined
+       control reg45 (%c13): undefined
+       control reg46 (%c14): undefined
+       control reg47 (%c15): undefined
+       access reg48 (%a0): undefined
+       access reg49 (%a1): undefined
+       access reg50 (%a2): undefined
+       access reg51 (%a3): undefined
+       access reg52 (%a4): undefined
+       access reg53 (%a5): undefined
+       access reg54 (%a6): undefined
+       access reg55 (%a7): undefined
+       access reg56 (%a8): undefined
+       access reg57 (%a9): undefined
+       access reg58 (%a10): undefined
+       access reg59 (%a11): undefined
+       access reg60 (%a12): undefined
+       access reg61 (%a13): undefined
+       access reg62 (%a14): undefined
+       access reg63 (%a15): undefined
+       control reg64 (%pswm): undefined
+       control reg65 (%pswa): undefined
+handle_cfi no CFI (.debug_frame): no error
+EOF
+
+# EM_S390 (ELFCLASS64) (function bar 0x0000000080000510)
+# Note. Only in .eh_frame, there is no .debug_frame.
+# Same as s390 above but without -m31.
+testfiles testfiles390x
+testrun_compare ${abs_builddir}/addrcfi -e testfiles390x 0x0000000080000510 <<\EOF
+.eh_frame has 0x80000510 => [0x80000510, 0x80000524):
+       return address in reg14
+       CFA location expression: bregx(15,160)
+       integer reg0 (%r0): undefined
+       integer reg1 (%r1): undefined
+       integer reg2 (%r2): undefined
+       integer reg3 (%r3): undefined
+       integer reg4 (%r4): undefined
+       integer reg5 (%r5): undefined
+       integer reg6 (%r6): same_value
+       integer reg7 (%r7): same_value
+       integer reg8 (%r8): same_value
+       integer reg9 (%r9): same_value
+       integer reg10 (%r10): same_value
+       integer reg11 (%r11): same_value
+       integer reg12 (%r12): same_value
+       integer reg13 (%r13): same_value
+       integer reg14 (%r14): same_value
+       integer reg15 (%r15): same_value
+       FPU reg16 (%f0): undefined
+       FPU reg17 (%f2): undefined
+       FPU reg18 (%f4): undefined
+       FPU reg19 (%f6): undefined
+       FPU reg20 (%f1): undefined
+       FPU reg21 (%f3): undefined
+       FPU reg22 (%f5): undefined
+       FPU reg23 (%f7): undefined
+       FPU reg24 (%f8): same_value
+       FPU reg25 (%f10): same_value
+       FPU reg26 (%f12): same_value
+       FPU reg27 (%f14): same_value
+       FPU reg28 (%f9): same_value
+       FPU reg29 (%f11): same_value
+       FPU reg30 (%f13): same_value
+       FPU reg31 (%f15): same_value
+       control reg32 (%c0): undefined
+       control reg33 (%c1): undefined
+       control reg34 (%c2): undefined
+       control reg35 (%c3): undefined
+       control reg36 (%c4): undefined
+       control reg37 (%c5): undefined
+       control reg38 (%c6): undefined
+       control reg39 (%c7): undefined
+       control reg40 (%c8): undefined
+       control reg41 (%c9): undefined
+       control reg42 (%c10): undefined
+       control reg43 (%c11): undefined
+       control reg44 (%c12): undefined
+       control reg45 (%c13): undefined
+       control reg46 (%c14): undefined
+       control reg47 (%c15): undefined
+       access reg48 (%a0): undefined
+       access reg49 (%a1): undefined
+       access reg50 (%a2): undefined
+       access reg51 (%a3): undefined
+       access reg52 (%a4): undefined
+       access reg53 (%a5): undefined
+       access reg54 (%a6): undefined
+       access reg55 (%a7): undefined
+       access reg56 (%a8): undefined
+       access reg57 (%a9): undefined
+       access reg58 (%a10): undefined
+       access reg59 (%a11): undefined
+       access reg60 (%a12): undefined
+       access reg61 (%a13): undefined
+       access reg62 (%a14): undefined
+       access reg63 (%a15): undefined
+       control reg64 (%pswm): undefined
+       control reg65 (%pswa): undefined
+handle_cfi no CFI (.debug_frame): no error
+EOF
diff --git a/tests/testfiles390.bz2 b/tests/testfiles390.bz2
new file mode 100755 (executable)
index 0000000..14ebf6c
Binary files /dev/null and b/tests/testfiles390.bz2 differ
diff --git a/tests/testfiles390x.bz2 b/tests/testfiles390x.bz2
new file mode 100755 (executable)
index 0000000..eb63ed8
Binary files /dev/null and b/tests/testfiles390x.bz2 differ