Loading include/backtrace/Backtrace.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,12 @@ struct ucontext; typedef ucontext ucontext_t; typedef ucontext ucontext_t; #endif #endif struct backtrace_stackinfo_t { uint64_t start; uint64_t end; const uint8_t* data; }; class Backtrace { class Backtrace { public: public: // Create the correct Backtrace object based on what is to be unwound. // Create the correct Backtrace object based on what is to be unwound. Loading @@ -66,6 +72,14 @@ public: // If map is not NULL, the map is still owned by the caller. // If map is not NULL, the map is still owned by the caller. static Backtrace* Create(pid_t pid, pid_t tid, BacktraceMap* map = NULL); static Backtrace* Create(pid_t pid, pid_t tid, BacktraceMap* map = NULL); // Create an offline Backtrace object that can be used to do an unwind without a process // that is still running. If cache_file is set to true, then elf information will be cached // for this call. The cached information survives until the calling process ends. This means // that subsequent calls to create offline Backtrace objects will continue to use the same // cache. It also assumes that the elf files used for each offline unwind are the same. static Backtrace* CreateOffline(pid_t pid, pid_t tid, BacktraceMap* map, const backtrace_stackinfo_t& stack, bool cache_file = false); virtual ~Backtrace(); virtual ~Backtrace(); // Get the current stack trace and store in the backtrace_ structure. // Get the current stack trace and store in the backtrace_ structure. Loading include/backtrace/BacktraceMap.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <deque> #include <deque> #include <string> #include <string> #include <vector> struct backtrace_map_t { struct backtrace_map_t { uintptr_t start = 0; uintptr_t start = 0; Loading @@ -48,6 +49,8 @@ public: // is unsupported. // is unsupported. static BacktraceMap* Create(pid_t pid, bool uncached = false); static BacktraceMap* Create(pid_t pid, bool uncached = false); static BacktraceMap* Create(pid_t pid, const std::vector<backtrace_map_t>& maps); virtual ~BacktraceMap(); virtual ~BacktraceMap(); // Fill in the map data structure for the given address. // Fill in the map data structure for the given address. Loading libbacktrace/Android.build.mk +12 −0 Original line number Original line Diff line number Diff line Loading @@ -69,7 +69,14 @@ LOCAL_LDLIBS := \ $($(module)_ldlibs) \ $($(module)_ldlibs) \ $($(module)_ldlibs_$(build_type)) \ $($(module)_ldlibs_$(build_type)) \ LOCAL_STRIP_MODULE := $($(module)_strip_module) ifeq ($(build_type),target) ifeq ($(build_type),target) ifneq (,$(filter $(LOCAL_SHARED_LIBRARIES),libLLVM)) LLVM_ROOT_PATH := external/llvm include $(LLVM_ROOT_PATH)/llvm.mk include $(LLVM_DEVICE_BUILD_MK) endif include $(BUILD_$(build_target)) include $(BUILD_$(build_target)) endif endif Loading @@ -77,6 +84,11 @@ ifeq ($(build_type),host) # Only build if host builds are supported. # Only build if host builds are supported. ifeq ($(build_host),true) ifeq ($(build_host),true) LOCAL_CFLAGS += -Wno-extern-c-compat -fno-omit-frame-pointer LOCAL_CFLAGS += -Wno-extern-c-compat -fno-omit-frame-pointer ifneq (,$(filter $(LOCAL_SHARED_LIBRARIES),libLLVM)) LLVM_ROOT_PATH := external/llvm include $(LLVM_ROOT_PATH)/llvm.mk include $(LLVM_HOST_BUILD_MK) endif include $(BUILD_HOST_$(build_target)) include $(BUILD_HOST_$(build_target)) endif endif endif endif libbacktrace/Android.mk +10 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ libbacktrace_common_conlyflags := \ libbacktrace_common_cppflags := \ libbacktrace_common_cppflags := \ -std=gnu++11 \ -std=gnu++11 \ -I external/libunwind/include/tdep \ # The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists. # The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists. libbacktrace_common_clang_cflags += \ libbacktrace_common_clang_cflags += \ Loading @@ -44,6 +45,7 @@ libbacktrace_src_files := \ Backtrace.cpp \ Backtrace.cpp \ BacktraceCurrent.cpp \ BacktraceCurrent.cpp \ BacktraceMap.cpp \ BacktraceMap.cpp \ BacktraceOffline.cpp \ BacktracePtrace.cpp \ BacktracePtrace.cpp \ thread_utils.c \ thread_utils.c \ ThreadEntry.cpp \ ThreadEntry.cpp \ Loading @@ -53,6 +55,7 @@ libbacktrace_src_files := \ libbacktrace_shared_libraries := \ libbacktrace_shared_libraries := \ libbase \ libbase \ libLLVM \ liblog \ liblog \ libunwind \ libunwind \ Loading Loading @@ -86,6 +89,8 @@ libbacktrace_test_cflags := \ libbacktrace_test_src_files := \ libbacktrace_test_src_files := \ backtrace_testlib.c \ backtrace_testlib.c \ libbacktrace_test_strip_module := false module := libbacktrace_test module := libbacktrace_test module_tag := debug module_tag := debug build_type := target build_type := target Loading @@ -107,6 +112,7 @@ backtrace_test_cflags_target := \ -DENABLE_PSS_TESTS \ -DENABLE_PSS_TESTS \ backtrace_test_src_files := \ backtrace_test_src_files := \ backtrace_offline_test.cpp \ backtrace_test.cpp \ backtrace_test.cpp \ GetPss.cpp \ GetPss.cpp \ thread_utils.c \ thread_utils.c \ Loading @@ -120,6 +126,8 @@ backtrace_test_shared_libraries := \ libbacktrace \ libbacktrace \ libbase \ libbase \ libcutils \ libcutils \ libLLVM \ libunwind \ backtrace_test_shared_libraries_target += \ backtrace_test_shared_libraries_target += \ libdl \ libdl \ Loading @@ -127,6 +135,8 @@ backtrace_test_shared_libraries_target += \ backtrace_test_ldlibs_host += \ backtrace_test_ldlibs_host += \ -ldl \ -ldl \ backtrace_test_strip_module := false module := backtrace_test module := backtrace_test module_tag := debug module_tag := debug build_type := target build_type := target Loading libbacktrace/Backtrace.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <cutils/threads.h> #include <cutils/threads.h> #include "BacktraceLog.h" #include "BacktraceLog.h" #include "BacktraceOffline.h" #include "thread_utils.h" #include "thread_utils.h" #include "UnwindCurrent.h" #include "UnwindCurrent.h" #include "UnwindPtrace.h" #include "UnwindPtrace.h" Loading Loading @@ -140,3 +141,8 @@ Backtrace* Backtrace::Create(pid_t pid, pid_t tid, BacktraceMap* map) { return new UnwindPtrace(pid, tid, map); return new UnwindPtrace(pid, tid, map); } } } } Backtrace* Backtrace::CreateOffline(pid_t pid, pid_t tid, BacktraceMap* map, const backtrace_stackinfo_t& stack, bool cache_file) { return new BacktraceOffline(pid, tid, map, stack, cache_file); } Loading
include/backtrace/Backtrace.h +14 −0 Original line number Original line Diff line number Diff line Loading @@ -52,6 +52,12 @@ struct ucontext; typedef ucontext ucontext_t; typedef ucontext ucontext_t; #endif #endif struct backtrace_stackinfo_t { uint64_t start; uint64_t end; const uint8_t* data; }; class Backtrace { class Backtrace { public: public: // Create the correct Backtrace object based on what is to be unwound. // Create the correct Backtrace object based on what is to be unwound. Loading @@ -66,6 +72,14 @@ public: // If map is not NULL, the map is still owned by the caller. // If map is not NULL, the map is still owned by the caller. static Backtrace* Create(pid_t pid, pid_t tid, BacktraceMap* map = NULL); static Backtrace* Create(pid_t pid, pid_t tid, BacktraceMap* map = NULL); // Create an offline Backtrace object that can be used to do an unwind without a process // that is still running. If cache_file is set to true, then elf information will be cached // for this call. The cached information survives until the calling process ends. This means // that subsequent calls to create offline Backtrace objects will continue to use the same // cache. It also assumes that the elf files used for each offline unwind are the same. static Backtrace* CreateOffline(pid_t pid, pid_t tid, BacktraceMap* map, const backtrace_stackinfo_t& stack, bool cache_file = false); virtual ~Backtrace(); virtual ~Backtrace(); // Get the current stack trace and store in the backtrace_ structure. // Get the current stack trace and store in the backtrace_ structure. Loading
include/backtrace/BacktraceMap.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include <deque> #include <deque> #include <string> #include <string> #include <vector> struct backtrace_map_t { struct backtrace_map_t { uintptr_t start = 0; uintptr_t start = 0; Loading @@ -48,6 +49,8 @@ public: // is unsupported. // is unsupported. static BacktraceMap* Create(pid_t pid, bool uncached = false); static BacktraceMap* Create(pid_t pid, bool uncached = false); static BacktraceMap* Create(pid_t pid, const std::vector<backtrace_map_t>& maps); virtual ~BacktraceMap(); virtual ~BacktraceMap(); // Fill in the map data structure for the given address. // Fill in the map data structure for the given address. Loading
libbacktrace/Android.build.mk +12 −0 Original line number Original line Diff line number Diff line Loading @@ -69,7 +69,14 @@ LOCAL_LDLIBS := \ $($(module)_ldlibs) \ $($(module)_ldlibs) \ $($(module)_ldlibs_$(build_type)) \ $($(module)_ldlibs_$(build_type)) \ LOCAL_STRIP_MODULE := $($(module)_strip_module) ifeq ($(build_type),target) ifeq ($(build_type),target) ifneq (,$(filter $(LOCAL_SHARED_LIBRARIES),libLLVM)) LLVM_ROOT_PATH := external/llvm include $(LLVM_ROOT_PATH)/llvm.mk include $(LLVM_DEVICE_BUILD_MK) endif include $(BUILD_$(build_target)) include $(BUILD_$(build_target)) endif endif Loading @@ -77,6 +84,11 @@ ifeq ($(build_type),host) # Only build if host builds are supported. # Only build if host builds are supported. ifeq ($(build_host),true) ifeq ($(build_host),true) LOCAL_CFLAGS += -Wno-extern-c-compat -fno-omit-frame-pointer LOCAL_CFLAGS += -Wno-extern-c-compat -fno-omit-frame-pointer ifneq (,$(filter $(LOCAL_SHARED_LIBRARIES),libLLVM)) LLVM_ROOT_PATH := external/llvm include $(LLVM_ROOT_PATH)/llvm.mk include $(LLVM_HOST_BUILD_MK) endif include $(BUILD_HOST_$(build_target)) include $(BUILD_HOST_$(build_target)) endif endif endif endif
libbacktrace/Android.mk +10 −0 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ libbacktrace_common_conlyflags := \ libbacktrace_common_cppflags := \ libbacktrace_common_cppflags := \ -std=gnu++11 \ -std=gnu++11 \ -I external/libunwind/include/tdep \ # The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists. # The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists. libbacktrace_common_clang_cflags += \ libbacktrace_common_clang_cflags += \ Loading @@ -44,6 +45,7 @@ libbacktrace_src_files := \ Backtrace.cpp \ Backtrace.cpp \ BacktraceCurrent.cpp \ BacktraceCurrent.cpp \ BacktraceMap.cpp \ BacktraceMap.cpp \ BacktraceOffline.cpp \ BacktracePtrace.cpp \ BacktracePtrace.cpp \ thread_utils.c \ thread_utils.c \ ThreadEntry.cpp \ ThreadEntry.cpp \ Loading @@ -53,6 +55,7 @@ libbacktrace_src_files := \ libbacktrace_shared_libraries := \ libbacktrace_shared_libraries := \ libbase \ libbase \ libLLVM \ liblog \ liblog \ libunwind \ libunwind \ Loading Loading @@ -86,6 +89,8 @@ libbacktrace_test_cflags := \ libbacktrace_test_src_files := \ libbacktrace_test_src_files := \ backtrace_testlib.c \ backtrace_testlib.c \ libbacktrace_test_strip_module := false module := libbacktrace_test module := libbacktrace_test module_tag := debug module_tag := debug build_type := target build_type := target Loading @@ -107,6 +112,7 @@ backtrace_test_cflags_target := \ -DENABLE_PSS_TESTS \ -DENABLE_PSS_TESTS \ backtrace_test_src_files := \ backtrace_test_src_files := \ backtrace_offline_test.cpp \ backtrace_test.cpp \ backtrace_test.cpp \ GetPss.cpp \ GetPss.cpp \ thread_utils.c \ thread_utils.c \ Loading @@ -120,6 +126,8 @@ backtrace_test_shared_libraries := \ libbacktrace \ libbacktrace \ libbase \ libbase \ libcutils \ libcutils \ libLLVM \ libunwind \ backtrace_test_shared_libraries_target += \ backtrace_test_shared_libraries_target += \ libdl \ libdl \ Loading @@ -127,6 +135,8 @@ backtrace_test_shared_libraries_target += \ backtrace_test_ldlibs_host += \ backtrace_test_ldlibs_host += \ -ldl \ -ldl \ backtrace_test_strip_module := false module := backtrace_test module := backtrace_test module_tag := debug module_tag := debug build_type := target build_type := target Loading
libbacktrace/Backtrace.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include <cutils/threads.h> #include <cutils/threads.h> #include "BacktraceLog.h" #include "BacktraceLog.h" #include "BacktraceOffline.h" #include "thread_utils.h" #include "thread_utils.h" #include "UnwindCurrent.h" #include "UnwindCurrent.h" #include "UnwindPtrace.h" #include "UnwindPtrace.h" Loading Loading @@ -140,3 +141,8 @@ Backtrace* Backtrace::Create(pid_t pid, pid_t tid, BacktraceMap* map) { return new UnwindPtrace(pid, tid, map); return new UnwindPtrace(pid, tid, map); } } } } Backtrace* Backtrace::CreateOffline(pid_t pid, pid_t tid, BacktraceMap* map, const backtrace_stackinfo_t& stack, bool cache_file) { return new BacktraceOffline(pid, tid, map, stack, cache_file); }