summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2013-09-02 16:46:50 +0200
committerMark Wielaard <mjw@redhat.com>2013-09-03 11:43:19 +0200
commit92e47d616d15beec31c406ce254e639faa8fac2b (patch)
treec0df7b450863f22e36c0bc798d174962a6e92564 /tests
parent79b9181ff552e54bacc74fc0b0699e6133645c6b (diff)
downloadandroid_external_elfutils-92e47d616d15beec31c406ce254e639faa8fac2b.tar.gz
android_external_elfutils-92e47d616d15beec31c406ce254e639faa8fac2b.tar.bz2
android_external_elfutils-92e47d616d15beec31c406ce254e639faa8fac2b.zip
backends: Hook abi_cfi for arm.
New arm_abi_cfi that defines initial CFA, rules for callee-saved regs, including VFP ones and return register. Note the DWARF abi extension for ARM says that "registers intentionally unused" should also be initialized as if by DW_CFA_same_value. The example given is "an integer-only function might be included in one executable file for targets with VFP and another for targets without". We don't currently do this yet. See the DWARF and calling convention documents: DWARF for the ARM Architecture ABI r2.09 http://infocenter.arm.com/help/topic/com.arm.doc.ihi0040b/IHI0040B_aadwarf.pdf Procedure Call Standard for the ARM Architecture ABI r2.09 http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf Also adds addrcfi arm testcase. Signed-off-by: Mark Wielaard <mjw@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog6
-rw-r--r--tests/Makefile.am3
-rwxr-xr-xtests/run-addrcfi.sh76
-rwxr-xr-xtests/testfilearm.bz2bin0 -> 3545 bytes
4 files changed, 84 insertions, 1 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 5871f9d0..b11f27bd 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2013-08-29 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrcfi.sh: Add case for EM_ARM.
+ * testfilearm.bz2: New testfile.
+ * Makefile.am (EXTRA_DIST): Add testfilesarm.bz2.
+
2013-08-28 Mark Wielaard <mjw@redhat.com>
* addrcfi.c (handle_cfi): Handle .debug_frame or .eh_frame
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8e4f88af..251ebc4a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -204,7 +204,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
test-core.exec.bz2 run-addr2line-test.sh \
run-addr2line-i-test.sh testfile-inlines.bz2 \
testfileppc32.bz2 testfileppc64.bz2 \
- testfiles390.bz2 testfiles390x.bz2
+ testfiles390.bz2 testfiles390x.bz2 \
+ testfilearm.bz2
if USE_VALGRIND
valgrind_cmd='valgrind -q --trace-children=yes --error-exitcode=1 --run-libc-freeres=no'
diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh
index adf8d8b3..70e85ed7 100755
--- a/tests/run-addrcfi.sh
+++ b/tests/run-addrcfi.sh
@@ -2496,3 +2496,79 @@ testrun_compare ${abs_builddir}/addrcfi -e testfiles390x 0x0000000080000510 <<\E
control reg65 (%pswa): undefined
handle_cfi no CFI (.debug_frame): no error
EOF
+
+# EM_ARM (function bar 0x00008510)
+# Note. Only in .debug_frame, the .eh_frame is actually empty.
+# Same as s390 and ppc above.
+testfiles testfilearm
+testrun_compare ${abs_builddir}/addrcfi -e testfilearm 0x00008510 <<\EOF
+dwarf_cfi_addrframe (.eh_frame): no matching address range
+.debug_frame has 0x8510 => [0x8510, 0x8524):
+ return address in reg14
+ CFA location expression: bregx(13)
+ integer reg0 (r0): undefined
+ integer reg1 (r1): undefined
+ integer reg2 (r2): undefined
+ integer reg3 (r3): undefined
+ integer reg4 (r4): same_value
+ integer reg5 (r5): same_value
+ integer reg6 (r6): same_value
+ integer reg7 (r7): same_value
+ integer reg8 (r8): same_value
+ integer reg9 (r9): undefined
+ integer reg10 (r10): same_value
+ integer reg11 (r11): same_value
+ integer reg12 (r12): undefined
+ integer reg13 (sp): undefined
+ integer reg14 (lr): same_value
+ integer reg15 (pc): location expression: regx(14)
+ FPA reg16 (f0): undefined
+ FPA reg17 (f1): undefined
+ FPA reg18 (f2): undefined
+ FPA reg19 (f3): undefined
+ FPA reg20 (f4): undefined
+ FPA reg21 (f5): undefined
+ FPA reg22 (f6): undefined
+ FPA reg23 (f7): undefined
+ FPA reg96 (f0): undefined
+ FPA reg97 (f1): undefined
+ FPA reg98 (f2): undefined
+ FPA reg99 (f3): undefined
+ FPA reg100 (f4): undefined
+ FPA reg101 (f5): undefined
+ FPA reg102 (f6): undefined
+ FPA reg103 (f7): undefined
+ integer reg128 (spsr): undefined
+ VFP reg256 (d0): undefined
+ VFP reg257 (d1): undefined
+ VFP reg258 (d2): undefined
+ VFP reg259 (d3): undefined
+ VFP reg260 (d4): undefined
+ VFP reg261 (d5): undefined
+ VFP reg262 (d6): undefined
+ VFP reg263 (d7): undefined
+ VFP reg264 (d8): same_value
+ VFP reg265 (d9): same_value
+ VFP reg266 (d10): same_value
+ VFP reg267 (d11): same_value
+ VFP reg268 (d12): same_value
+ VFP reg269 (d13): same_value
+ VFP reg270 (d14): same_value
+ VFP reg271 (d15): same_value
+ VFP reg272 (d16): undefined
+ VFP reg273 (d17): undefined
+ VFP reg274 (d18): undefined
+ VFP reg275 (d19): undefined
+ VFP reg276 (d20): undefined
+ VFP reg277 (d21): undefined
+ VFP reg278 (d22): undefined
+ VFP reg279 (d23): undefined
+ VFP reg280 (d24): undefined
+ VFP reg281 (d25): undefined
+ VFP reg282 (d26): undefined
+ VFP reg283 (d27): undefined
+ VFP reg284 (d28): undefined
+ VFP reg285 (d29): undefined
+ VFP reg286 (d30): undefined
+ VFP reg287 (d31): undefined
+EOF
diff --git a/tests/testfilearm.bz2 b/tests/testfilearm.bz2
new file mode 100755
index 00000000..d6cd090e
--- /dev/null
+++ b/tests/testfilearm.bz2
Binary files differ