* commit '0dd3fe220b3c7d7013871ec4b1f7875586f4d719': Integrate vfp-crasher with crasher.
This commit is contained in:
commit
3a03e61ccf
8 changed files with 75 additions and 161 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
int main()
|
||||
{
|
||||
extern void crash(void);
|
||||
|
||||
crash();
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue