Loading debuggerd/Android.mk +3 −3 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ include $(BUILD_EXECUTABLE) include $(CLEAR_VARS) LOCAL_SRC_FILES := crasher.c LOCAL_SRC_FILES := crasher.cpp LOCAL_SRC_FILES_arm := arm/crashglue.S LOCAL_SRC_FILES_arm64 := arm64/crashglue.S LOCAL_SRC_FILES_mips := mips/crashglue.S Loading @@ -63,9 +63,9 @@ LOCAL_SRC_FILES_x86 := x86/crashglue.S LOCAL_SRC_FILES_x86_64 := x86_64/crashglue.S LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) LOCAL_MODULE_TAGS := optional LOCAL_CFLAGS += -fstack-protector-all -Werror -Wno-free-nonheap-object -Wno-date-time LOCAL_CPPFLAGS := $(common_cppflags) -fstack-protector-all -Wno-free-nonheap-object -Wno-date-time #LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_SHARED_LIBRARIES := libcutils liblog libc LOCAL_SHARED_LIBRARIES := libcutils liblog # The arm emulator has VFP but not VFPv3-D32. ifeq ($(ARCH_ARM_HAVE_VFP_D32),true) Loading debuggerd/crasher.c→debuggerd/crasher.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -22,8 +22,9 @@ extern const char* __progname; void crash1(void); void crashnostack(void); extern "C" void crash1(void); extern "C" void crashnostack(void); static int do_action(const char* arg); static void maybe_abort() { Loading Loading @@ -159,6 +160,10 @@ static int do_action(const char* arg) __assert("some_file.c", 123, "false"); } else if (!strcmp(arg, "assert2")) { __assert2("some_file.c", 123, "some_function", "false"); } else if (!strcmp(arg, "fortify")) { char buf[10]; __read_chk(-1, buf, 32, 10); while (true) pause(); } else if (!strcmp(arg, "LOG_ALWAYS_FATAL")) { LOG_ALWAYS_FATAL("hello %s", "world"); } else if (!strcmp(arg, "LOG_ALWAYS_FATAL_IF")) { Loading @@ -172,7 +177,7 @@ static int do_action(const char* arg) } else if (!strcmp(arg, "heap-usage")) { abuse_heap(); } else if (!strcmp(arg, "SIGSEGV-unmapped")) { char* map = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); char* map = reinterpret_cast<char*>(mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); munmap(map, sizeof(int)); map[0] = '8'; } Loading @@ -189,6 +194,7 @@ static int do_action(const char* arg) fprintf(stderr, " abort call abort()\n"); fprintf(stderr, " assert call assert() without a function\n"); fprintf(stderr, " assert2 call assert() with a function\n"); fprintf(stderr, " fortify fail a _FORTIFY_SOURCE check\n"); fprintf(stderr, " LOG_ALWAYS_FATAL call LOG_ALWAYS_FATAL\n"); fprintf(stderr, " LOG_ALWAYS_FATAL_IF call LOG_ALWAYS_FATAL\n"); fprintf(stderr, " SIGFPE cause a SIGFPE\n"); Loading Loading
debuggerd/Android.mk +3 −3 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ include $(BUILD_EXECUTABLE) include $(CLEAR_VARS) LOCAL_SRC_FILES := crasher.c LOCAL_SRC_FILES := crasher.cpp LOCAL_SRC_FILES_arm := arm/crashglue.S LOCAL_SRC_FILES_arm64 := arm64/crashglue.S LOCAL_SRC_FILES_mips := mips/crashglue.S Loading @@ -63,9 +63,9 @@ LOCAL_SRC_FILES_x86 := x86/crashglue.S LOCAL_SRC_FILES_x86_64 := x86_64/crashglue.S LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) LOCAL_MODULE_TAGS := optional LOCAL_CFLAGS += -fstack-protector-all -Werror -Wno-free-nonheap-object -Wno-date-time LOCAL_CPPFLAGS := $(common_cppflags) -fstack-protector-all -Wno-free-nonheap-object -Wno-date-time #LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_SHARED_LIBRARIES := libcutils liblog libc LOCAL_SHARED_LIBRARIES := libcutils liblog # The arm emulator has VFP but not VFPv3-D32. ifeq ($(ARCH_ARM_HAVE_VFP_D32),true) Loading
debuggerd/crasher.c→debuggerd/crasher.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -22,8 +22,9 @@ extern const char* __progname; void crash1(void); void crashnostack(void); extern "C" void crash1(void); extern "C" void crashnostack(void); static int do_action(const char* arg); static void maybe_abort() { Loading Loading @@ -159,6 +160,10 @@ static int do_action(const char* arg) __assert("some_file.c", 123, "false"); } else if (!strcmp(arg, "assert2")) { __assert2("some_file.c", 123, "some_function", "false"); } else if (!strcmp(arg, "fortify")) { char buf[10]; __read_chk(-1, buf, 32, 10); while (true) pause(); } else if (!strcmp(arg, "LOG_ALWAYS_FATAL")) { LOG_ALWAYS_FATAL("hello %s", "world"); } else if (!strcmp(arg, "LOG_ALWAYS_FATAL_IF")) { Loading @@ -172,7 +177,7 @@ static int do_action(const char* arg) } else if (!strcmp(arg, "heap-usage")) { abuse_heap(); } else if (!strcmp(arg, "SIGSEGV-unmapped")) { char* map = mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); char* map = reinterpret_cast<char*>(mmap(NULL, sizeof(int), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)); munmap(map, sizeof(int)); map[0] = '8'; } Loading @@ -189,6 +194,7 @@ static int do_action(const char* arg) fprintf(stderr, " abort call abort()\n"); fprintf(stderr, " assert call assert() without a function\n"); fprintf(stderr, " assert2 call assert() with a function\n"); fprintf(stderr, " fortify fail a _FORTIFY_SOURCE check\n"); fprintf(stderr, " LOG_ALWAYS_FATAL call LOG_ALWAYS_FATAL\n"); fprintf(stderr, " LOG_ALWAYS_FATAL_IF call LOG_ALWAYS_FATAL\n"); fprintf(stderr, " SIGFPE cause a SIGFPE\n"); Loading