From patchwork Wed Mar 23 15:55:00 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Werner X-Patchwork-Id: 756 Return-Path: Delivered-To: unknown Received: from imap.gmail.com (74.125.159.109) by localhost6.localdomain6 with IMAP4-SSL; 08 Jun 2011 14:45:31 -0000 Delivered-To: patches@linaro.org Received: by 10.220.180.8 with SMTP id bs8cs11683vcb; Wed, 23 Mar 2011 08:55:12 -0700 (PDT) Received: by 10.213.35.194 with SMTP id q2mr112669ebd.0.1300895710831; Wed, 23 Mar 2011 08:55:10 -0700 (PDT) Received: from mtagate7.uk.ibm.com (mtagate7.uk.ibm.com [194.196.100.167]) by mx.google.com with ESMTPS id w12si12044839eeh.2.2011.03.23.08.55.10 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 23 Mar 2011 08:55:10 -0700 (PDT) Received-SPF: neutral (google.com: 194.196.100.167 is neither permitted nor denied by best guess record for domain of ken.werner@linaro.org) client-ip=194.196.100.167; Authentication-Results: mx.google.com; spf=neutral (google.com: 194.196.100.167 is neither permitted nor denied by best guess record for domain of ken.werner@linaro.org) smtp.mail=ken.werner@linaro.org Received: from d06nrmr1806.portsmouth.uk.ibm.com (d06nrmr1806.portsmouth.uk.ibm.com [9.149.39.193]) by mtagate7.uk.ibm.com (8.13.1/8.13.1) with ESMTP id p2NFt9WH015659 for ; Wed, 23 Mar 2011 15:55:09 GMT Received: from d06av11.portsmouth.uk.ibm.com (d06av11.portsmouth.uk.ibm.com [9.149.37.252]) by d06nrmr1806.portsmouth.uk.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p2NFta371884358 for ; Wed, 23 Mar 2011 15:55:36 GMT Received: from d06av11.portsmouth.uk.ibm.com (loopback [127.0.0.1]) by d06av11.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p2NFt8ba022407 for ; Wed, 23 Mar 2011 09:55:08 -0600 Received: from localhost.localdomain (dyn-9-152-224-51.boeblingen.de.ibm.com [9.152.224.51]) by d06av11.portsmouth.uk.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p2NFt7Tt022296; Wed, 23 Mar 2011 09:55:07 -0600 From: Ken Werner To: libunwind-devel@nongnu.org Subject: [PATCH 2/8] Remove the arm-extbl-test. Date: Wed, 23 Mar 2011 15:55:00 +0000 Message-Id: <1300895706-5424-3-git-send-email-ken.werner@linaro.org> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1300895706-5424-1-git-send-email-ken.werner@linaro.org> References: <1300895706-5424-1-git-send-email-ken.werner@linaro.org> This test case relies on old libunwind internals such as the arm_stackframe. Since the ARM extbtl-parser now operates on the DWARF model directly the arm-extbl-test isn't of any particular use anymore. Signed-off-by: Ken Werner --- .gitignore | 1 - tests/Makefile.am | 9 ----- tests/arm-extbl-test.c | 95 ------------------------------------------------ 3 files changed, 0 insertions(+), 105 deletions(-) delete mode 100644 tests/arm-extbl-test.c diff --git a/.gitignore b/.gitignore index ddf9372..d3ed395 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,3 @@ tests/test-strerror tests/test-proc-info tests/test-ptrace-misc tests/test-varargs -tests/arm-extbl-test diff --git a/tests/Makefile.am b/tests/Makefile.am index 11f4f30..4f65388 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -46,9 +46,6 @@ endif #ARCH_IA64 Ltest-nomalloc rs-race noinst_PROGRAMS_cdep = forker mapper test-ptrace-misc test-varargs \ Gperf-simple Lperf-simple -if ARCH_ARM - check_PROGRAMS_arch = arm-extbl-test -endif #ARCH_ARM if SUPPORT_CXX_EXCEPTIONS check_PROGRAMS_cdep += Ltest-cxx-exceptions @@ -75,11 +72,6 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS) noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ $(noinst_PROGRAMS_arch) -arm_extbl_test_CPPFLAGS = -I$(top_srcdir)/src \ - -I$(top_srcdir)/include/tdep-$(arch) \ - -funwind-tables -arm_extbl_test_LDFLAGS = -static - Lia64_test_readonly_SOURCES = Lia64-test-readonly.c ia64-test-readonly-asm.S Gia64_test_readonly_SOURCES = Gia64-test-readonly.c ia64-test-readonly-asm.S Lia64_test_stack_SOURCES = Lia64-test-stack.c ia64-test-stack-asm.S \ @@ -93,7 +85,6 @@ Gia64_test_nat_SOURCES = Gia64-test-nat.c ia64-test-nat-asm.S ia64_test_dyn1_SOURCES = ia64-test-dyn1.c ia64-dyn-asm.S flush-cache.S ppc64_test_altivec_SOURCES = ppc64-test-altivec.c ppc64-test-altivec-utils.c ppc64_test_wchar_SOURCES = ppc64-test-wchar.c -arm_extbl_test_SOURCES = arm-extbl-test.c Gtest_init_SOURCES = Gtest-init.cxx Ltest_init_SOURCES = Ltest-init.cxx Ltest_cxx_exceptions_SOURCES = Ltest-cxx-exceptions.cxx diff --git a/tests/arm-extbl-test.c b/tests/arm-extbl-test.c deleted file mode 100644 index 730fcd7..0000000 --- a/tests/arm-extbl-test.c +++ /dev/null @@ -1,95 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright 2011 Linaro Limited - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "libunwind_i.h" - -static int -arm_exidx_unwind_frame (struct arm_stackframe *frame) -{ - Debug (2, "frame: fp=%p, sp=%p, lr=%p, pc=%p\n", - frame->fp, frame->sp, frame->lr, frame->pc); - - struct arm_exidx_table *table = arm_exidx_table_find (frame->pc); - if (NULL == table) - return -1; - - struct arm_exidx_entry *entry = arm_exidx_table_lookup (table, frame->pc); - if (NULL == entry) - return -1; - - struct arm_exidx_vrs s; - arm_exidx_frame_to_vrs(frame, &s); - - uint8_t buf[32], n_buf = arm_exidx_extract (entry, buf); - if (arm_exidx_decode (buf, n_buf, &arm_exidx_vrs_callback, &s) < 0) - return -1; - - return arm_exidx_vrs_to_frame(&s, frame); -} - -typedef void (*arm_exidx_backtrace_callback_t) (void *, struct arm_stackframe *); - -static int -arm_exidx_backtrace (arm_exidx_backtrace_callback_t cb) -{ - register void *current_sp asm ("sp"); - struct arm_stackframe frame = { - .fp = __builtin_frame_address (0), - .sp = current_sp, - .lr = __builtin_return_address (0), - .pc = &arm_exidx_backtrace, - }; - - while (1) - { - void *where = frame.pc; - if (arm_exidx_unwind_frame (&frame) < 0) - break; - (*cb) (where, &frame); - } - return 0; -} - -static void -b (void *where, struct arm_stackframe *frame) -{ - Debug (2, "%p -> %p (%p)\n", where, frame->pc, frame->sp - 4); -} - -static int -a (int foo) -{ - if (foo > 0) - return a (foo - 1); - arm_exidx_backtrace (&b); - return foo; -} - -int -main (int argc, char *argv[]) -{ - mi_init (); - arm_exidx_init_local (argv[0]); - return a (argc); -}