Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b237f5fb authored by Elliott Hughes's avatar Elliott Hughes Committed by Android Git Automerger
Browse files

am 5acbb9bc: am b5186598: Merge "Integrate vfp-crasher with crasher."

* commit '5acbb9bc':
  Integrate vfp-crasher with crasher.
parents b2ac4243 5acbb9bc
Loading
Loading
Loading
Loading
+0 −34
Original line number Diff line number Diff line
@@ -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)
+36 −4
Original line number Diff line number Diff line
.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
+4 −21
Original line number Diff line number Diff line
@@ -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, &regs)) {
    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
}

debuggerd/arm/vfp.S

deleted100644 → 0
+0 −43
Original line number Diff line number Diff line
    .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
+35 −3
Original line number Diff line number Diff line
.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
Loading