diff options
author | Elliott Hughes <enh@google.com> | 2014-07-09 22:31:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-07-09 14:45:53 +0000 |
commit | b518659848b6f3f939e1b5b150ae8586b9b8d0ce (patch) | |
tree | 2c8111542554e140a6296d2faae2614789e1b467 | |
parent | 328c3ef6e0c89686d56b8ce5f926affacd98e815 (diff) | |
parent | e7f18e14a9e9267150e24f0cb8bd8bd52db7946e (diff) | |
download | system_core-b518659848b6f3f939e1b5b150ae8586b9b8d0ce.zip system_core-b518659848b6f3f939e1b5b150ae8586b9b8d0ce.tar.gz system_core-b518659848b6f3f939e1b5b150ae8586b9b8d0ce.tar.bz2 |
Merge "Integrate vfp-crasher with crasher."
-rw-r--r-- | debuggerd/Android.mk | 34 | ||||
-rw-r--r-- | debuggerd/arm/crashglue.S | 40 | ||||
-rw-r--r-- | debuggerd/arm/machine.cpp | 25 | ||||
-rw-r--r-- | debuggerd/arm/vfp.S | 43 | ||||
-rw-r--r-- | debuggerd/arm64/crashglue.S | 38 | ||||
-rw-r--r-- | debuggerd/arm64/machine.cpp | 7 | ||||
-rw-r--r-- | debuggerd/arm64/vfp.S | 42 | ||||
-rw-r--r-- | debuggerd/vfp-crasher.c | 7 |
8 files changed, 75 insertions, 161 deletions
diff --git a/debuggerd/Android.mk b/debuggerd/Android.mk index e4d7ecc..191e283 100644 --- a/debuggerd/Android.mk +++ b/debuggerd/Android.mk @@ -22,13 +22,6 @@ LOCAL_CPPFLAGS := \ -Wunused \ -Werror \ -ifeq ($(ARCH_ARM_HAVE_VFP),true) -LOCAL_CFLAGS_arm += -DWITH_VFP -endif # ARCH_ARM_HAVE_VFP -ifeq ($(ARCH_ARM_HAVE_VFP_D32),true) -LOCAL_CFLAGS_arm += -DWITH_VFP_D32 -endif # ARCH_ARM_HAVE_VFP_D32 - LOCAL_SHARED_LIBRARIES := \ libbacktrace \ libcutils \ @@ -65,30 +58,3 @@ LOCAL_MODULE_STEM_64 := crasher64 LOCAL_MULTILIB := both include $(BUILD_EXECUTABLE) - -include $(CLEAR_VARS) - -ifeq ($(ARCH_ARM_HAVE_VFP),true) -LOCAL_MODULE_TARGET_ARCH += arm -LOCAL_SRC_FILES_arm := arm/vfp.S -LOCAL_CFLAGS_arm += -DWITH_VFP -ifeq ($(ARCH_ARM_HAVE_VFP_D32),true) -LOCAL_CFLAGS_arm += -DWITH_VFP_D32 -endif # ARCH_ARM_HAVE_VFP_D32 -endif # ARCH_ARM_HAVE_VFP == true -LOCAL_CFLAGS += -Werror - -LOCAL_SRC_FILES_arm64 := arm64/vfp.S -LOCAL_MODULE_TARGET_ARCH += arm64 - -LOCAL_SRC_FILES := vfp-crasher.c -LOCAL_MODULE := vfp-crasher -LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) -LOCAL_MODULE_TAGS := optional -LOCAL_SHARED_LIBRARIES := libcutils liblog libc - -LOCAL_MODULE_STEM_32 := vfp-crasher -LOCAL_MODULE_STEM_64 := vfp-crasher64 -LOCAL_MULTILIB := both - -include $(BUILD_EXECUTABLE) diff --git a/debuggerd/arm/crashglue.S b/debuggerd/arm/crashglue.S index eb9d0e3..8649056 100644 --- a/debuggerd/arm/crashglue.S +++ b/debuggerd/arm/crashglue.S @@ -1,8 +1,5 @@ .globl crash1 .type crash1, %function -.globl crashnostack -.type crashnostack, %function - crash1: ldr r0, =0xa5a50000 ldr r1, =0xa5a50001 @@ -18,11 +15,46 @@ crash1: ldr r11, =0xa5a50011 ldr r12, =0xa5a50012 + + fconstd d0, #0 + fconstd d1, #1 + fconstd d2, #2 + fconstd d3, #3 + fconstd d4, #4 + fconstd d5, #5 + fconstd d6, #6 + fconstd d7, #7 + fconstd d8, #8 + fconstd d9, #9 + fconstd d10, #10 + fconstd d11, #11 + fconstd d12, #12 + fconstd d13, #13 + fconstd d14, #14 + fconstd d15, #15 + fconstd d16, #16 + fconstd d17, #17 + fconstd d18, #18 + fconstd d19, #19 + fconstd d20, #20 + fconstd d21, #21 + fconstd d22, #22 + fconstd d23, #23 + fconstd d24, #24 + fconstd d25, #25 + fconstd d26, #26 + fconstd d27, #27 + fconstd d28, #28 + fconstd d29, #29 + fconstd d30, #30 + fconstd d31, #31 + mov lr, #0 ldr lr, [lr] b . - +.globl crashnostack +.type crashnostack, %function crashnostack: mov sp, #0 mov r0, #0 diff --git a/debuggerd/arm/machine.cpp b/debuggerd/arm/machine.cpp index 839d47a..8270066 100644 --- a/debuggerd/arm/machine.cpp +++ b/debuggerd/arm/machine.cpp @@ -27,21 +27,8 @@ #include "../utility.h" #include "../machine.h" -// enable to dump memory pointed to by every register -#define DUMP_MEMORY_FOR_ALL_REGISTERS 1 - -#ifdef WITH_VFP -#ifdef WITH_VFP_D32 -#define NUM_VFP_REGS 32 -#else -#define NUM_VFP_REGS 16 -#endif -#endif - -// If configured to do so, dump memory around *all* registers -// for the crashing thread. void dump_memory_and_code(log_t* log, pid_t tid) { - struct pt_regs regs; + pt_regs regs; if (ptrace(PTRACE_GETREGS, tid, 0, ®s)) { return; } @@ -73,7 +60,7 @@ void dump_memory_and_code(log_t* log, pid_t tid) { } void dump_registers(log_t* log, pid_t tid) { - struct pt_regs r; + pt_regs r; if (ptrace(PTRACE_GETREGS, tid, 0, &r)) { _LOG(log, logtype::REGISTERS, "cannot get registers: %s\n", strerror(errno)); return; @@ -93,19 +80,15 @@ void dump_registers(log_t* log, pid_t tid) { static_cast<uint32_t>(r.ARM_lr), static_cast<uint32_t>(r.ARM_pc), static_cast<uint32_t>(r.ARM_cpsr)); -#ifdef WITH_VFP - struct user_vfp vfp_regs; - int i; - + user_vfp vfp_regs; if (ptrace(PTRACE_GETVFPREGS, tid, 0, &vfp_regs)) { _LOG(log, logtype::REGISTERS, "cannot get registers: %s\n", strerror(errno)); return; } - for (i = 0; i < NUM_VFP_REGS; i += 2) { + for (size_t i = 0; i < 32; i += 2) { _LOG(log, logtype::REGISTERS, " d%-2d %016llx d%-2d %016llx\n", i, vfp_regs.fpregs[i], i+1, vfp_regs.fpregs[i+1]); } _LOG(log, logtype::REGISTERS, " scr %08lx\n", vfp_regs.fpscr); -#endif } diff --git a/debuggerd/arm/vfp.S b/debuggerd/arm/vfp.S deleted file mode 100644 index 9744f6f..0000000 --- a/debuggerd/arm/vfp.S +++ /dev/null @@ -1,43 +0,0 @@ - .text - .align 2 - .global crash - .type crash, %function -crash: - fconstd d0, #0 - fconstd d1, #1 - fconstd d2, #2 - fconstd d3, #3 - fconstd d4, #4 - fconstd d5, #5 - fconstd d6, #6 - fconstd d7, #7 - fconstd d8, #8 - fconstd d9, #9 - fconstd d10, #10 - fconstd d11, #11 - fconstd d12, #12 - fconstd d13, #13 - fconstd d14, #14 - fconstd d15, #15 -#ifdef WITH_VFP_D32 - fconstd d16, #16 - fconstd d17, #17 - fconstd d18, #18 - fconstd d19, #19 - fconstd d20, #20 - fconstd d21, #21 - fconstd d22, #22 - fconstd d23, #23 - fconstd d24, #24 - fconstd d25, #25 - fconstd d26, #26 - fconstd d27, #27 - fconstd d28, #28 - fconstd d29, #29 - fconstd d30, #30 - fconstd d31, #31 -#endif - mov r0, #0 - str r0, [r0] - bx lr - diff --git a/debuggerd/arm64/crashglue.S b/debuggerd/arm64/crashglue.S index b06b67c..e58b542 100644 --- a/debuggerd/arm64/crashglue.S +++ b/debuggerd/arm64/crashglue.S @@ -1,8 +1,5 @@ .globl crash1 .type crash1, %function -.globl crashnostack -.type crashnostack, %function - crash1: ldr x0, =0xa5a50000 ldr x1, =0xa5a50001 @@ -35,11 +32,46 @@ crash1: ldr x28, =0xa5a50028 ldr x29, =0xa5a50029 + fmov d0, -1.0 // -1 is more convincing than 0. + fmov d1, 1.0 + fmov d2, 2.0 + fmov d3, 3.0 + fmov d4, 4.0 + fmov d5, 5.0 + fmov d6, 6.0 + fmov d7, 7.0 + fmov d8, 8.0 + fmov d9, 9.0 + fmov d10, 10.0 + fmov d11, 11.0 + fmov d12, 12.0 + fmov d13, 13.0 + fmov d14, 14.0 + fmov d15, 15.0 + fmov d16, 16.0 + fmov d17, 17.0 + fmov d18, 18.0 + fmov d19, 19.0 + fmov d20, 20.0 + fmov d21, 21.0 + fmov d22, 22.0 + fmov d23, 23.0 + fmov d24, 24.0 + fmov d25, 25.0 + fmov d26, 26.0 + fmov d27, 27.0 + fmov d28, 28.0 + fmov d29, 29.0 + fmov d30, 30.0 + fmov d31, 31.0 + mov x30, xzr ldr x30, [x30] b . +.globl crashnostack +.type crashnostack, %function crashnostack: mov x0, xzr add sp, x0, xzr diff --git a/debuggerd/arm64/machine.cpp b/debuggerd/arm64/machine.cpp index 48308c3..ec664bd 100644 --- a/debuggerd/arm64/machine.cpp +++ b/debuggerd/arm64/machine.cpp @@ -30,13 +30,6 @@ #include "../utility.h" #include "../machine.h" -/* enable to dump memory pointed to by every register */ -#define DUMP_MEMORY_FOR_ALL_REGISTERS 1 - -/* - * If configured to do so, dump memory around *all* registers - * for the crashing thread. - */ void dump_memory_and_code(log_t* log, pid_t tid) { struct user_pt_regs regs; struct iovec io; diff --git a/debuggerd/arm64/vfp.S b/debuggerd/arm64/vfp.S deleted file mode 100644 index bf12c22..0000000 --- a/debuggerd/arm64/vfp.S +++ /dev/null @@ -1,42 +0,0 @@ - .text - .align 2 - .global crash - .type crash, %function -crash: - fmov d0, XZR - fmov d1, 1.0 - fmov d2, 2.0 - fmov d3, 3.0 - fmov d4, 4.0 - fmov d5, 5.0 - fmov d6, 6.0 - fmov d7, 7.0 - fmov d8, 8.0 - fmov d9, 9.0 - fmov d10, 10.0 - fmov d11, 11.0 - fmov d12, 12.0 - fmov d13, 13.0 - fmov d14, 14.0 - fmov d15, 15.0 - fmov d16, 16.0 - fmov d17, 17.0 - fmov d18, 18.0 - fmov d19, 19.0 - fmov d20, 20.0 - fmov d21, 21.0 - fmov d22, 22.0 - fmov d23, 23.0 - fmov d24, 24.0 - fmov d25, 25.0 - fmov d26, 26.0 - fmov d27, 27.0 - fmov d28, 28.0 - fmov d29, 29.0 - fmov d30, 30.0 - fmov d31, 31.0 - - mov x0, xzr - str x0, [x0] - br x30 - diff --git a/debuggerd/vfp-crasher.c b/debuggerd/vfp-crasher.c deleted file mode 100644 index 7a19cdd..0000000 --- a/debuggerd/vfp-crasher.c +++ /dev/null @@ -1,7 +0,0 @@ -int main() -{ - extern void crash(void); - - crash(); - return 0; -} |