From 79b9181ff552e54bacc74fc0b0699e6133645c6b Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 28 Aug 2013 21:54:58 +0200 Subject: [PATCH] tests: Add s390 and s390x addrcfi testcases. Signed-off-by: Mark Wielaard --- tests/ChangeLog | 10 +++ tests/Makefile.am | 3 +- tests/addrcfi.c | 6 ++ tests/run-addrcfi.sh | 154 ++++++++++++++++++++++++++++++++++++++++ tests/testfiles390.bz2 | Bin 0 -> 3132 bytes tests/testfiles390x.bz2 | Bin 0 -> 3026 bytes 6 files changed, 172 insertions(+), 1 deletion(-) create mode 100755 tests/testfiles390.bz2 create mode 100755 tests/testfiles390x.bz2 diff --git a/tests/ChangeLog b/tests/ChangeLog index 6192d88e6..5871f9d0f 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,13 @@ +2013-08-28 Mark Wielaard + + * 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 * addrcfi.c (handle_cfi): Use printf not error. diff --git a/tests/Makefile.am b/tests/Makefile.am index bebb5cd3b..8e4f88afb 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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' diff --git a/tests/addrcfi.c b/tests/addrcfi.c index 398b2918b..8a2d126c8 100644 --- a/tests/addrcfi.c +++ b/tests/addrcfi.c @@ -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) { diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh index 2f9eb1518..adf8d8b38 100755 --- a/tests/run-addrcfi.sh +++ b/tests/run-addrcfi.sh @@ -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 index 0000000000000000000000000000000000000000..14ebf6c76c9d00238ff1ad5fc423ceb21dd7d20a GIT binary patch literal 3132 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 U*xnW2P}lx0