platform_system_core/libbacktrace
Yabin Cui 9879137720 libBacktraceOffline: improve unwinding callchains.
1. Extend MAX_BACKTRACE_FRAMES to 256, as we can have callchains
   with length near 256 when recording Android applications.

2. .eh_frame and .ARM.exidx doesn't know how to unwind from instructions
   setting up or destroying stack frames. It can lead to wrong callchains,
   which may contain pcs outside executable mapping areas. Stop unwinding
   once this is detected.

3. Some CIE entries in .eh_frame/.debug_frame suggest unwinder reading
   personality routine from memory. However, that is not available in
   offline unwinding, and leads to ACCESS_MEM_FAILED error. Work around
   this by returning all zero data when failed to read data for some
   addresses.

4. Some libraries have empty .eh_frame_hdr but valid .eh_frame.
   Work around this by building eh_frame_hdr manually.

5. Prefer to use .debug_frame than .eh_frame. Because the former
   can unwind instructions setting up and destroying stack frames.

Bug: http://b/69383534
Test: run backtrace_test.
Test: run simpleperf on some apps.

Change-Id: I62dddda3865dd567c6be150ce5527dc2d3516256
2017-12-18 18:20:44 -08:00
..
include/backtrace libBacktraceOffline: improve unwinding callchains. 2017-12-18 18:20:44 -08:00
testdata libBacktraceOffline: improve unwinding callchains. 2017-12-18 18:20:44 -08:00
.clang-format Add a 2 width option of clang format. 2017-03-10 13:01:39 -08:00
Android.bp Add method to detect remote read function to use. 2017-12-07 19:00:00 -08:00
Backtrace.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
backtrace_benchmarks.cpp Make sure at least XX maps are created. 2017-12-08 12:48:46 -08:00
backtrace_offline_test.cpp libBacktraceOffline: improve unwinding callchains. 2017-12-18 18:20:44 -08:00
backtrace_read_benchmarks.cpp Add method to detect remote read function to use. 2017-12-07 19:00:00 -08:00
backtrace_test.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
backtrace_testlib.cpp Test unwinding through a signal handler. 2017-03-23 16:16:02 -07:00
backtrace_testlib.h Test unwinding through a signal handler. 2017-03-23 16:16:02 -07:00
BacktraceAsyncSafeLog.h Use async safe logging in signal handlers. 2017-05-04 17:15:17 -07:00
BacktraceCurrent.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
BacktraceCurrent.h Allow calling GetFunctionName before unwinding. 2017-03-21 14:21:49 -07:00
BacktraceLog.h liblog: use log/log.h when utilizing ALOG macros 2017-01-11 09:31:15 -08:00
BacktraceMap.cpp Demand read load bias for a map. 2017-12-05 13:12:47 -08:00
BacktraceOffline.cpp libBacktraceOffline: improve unwinding callchains. 2017-12-18 18:20:44 -08:00
BacktraceOffline.h libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
BacktracePtrace.cpp Revert "Use process_vm_readv to read memory." 2016-11-10 23:19:30 +00:00
BacktracePtrace.h Add method to detect remote read function to use. 2017-12-07 19:00:00 -08:00
GetPss.cpp Fix misc-macro-parentheses warnings in adb, debuggerd, libbacktrace. 2016-05-18 15:53:15 -07:00
GetPss.h Create an UnwindMapLocal object. 2014-04-03 14:19:24 -07:00
OWNERS Add OWNERS. 2017-12-07 13:30:03 -08:00
thread_utils.c Remove libbacktrace definition of gettid. 2015-05-13 13:44:34 -07:00
thread_utils.h Fix libbacktrace host build. 2015-12-07 20:09:24 -08:00
ThreadEntry.cpp Use async safe logging in signal handlers. 2017-05-04 17:15:17 -07:00
ThreadEntry.h Allow calling GetFunctionName before unwinding. 2017-03-21 14:21:49 -07:00
UnwindCurrent.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
UnwindCurrent.h Allow calling GetFunctionName before unwinding. 2017-03-21 14:21:49 -07:00
UnwindMap.cpp Switch libbacktrace new unwinder. 2017-10-30 13:37:50 -07:00
UnwindMap.h Allow calling GetFunctionName before unwinding. 2017-03-21 14:21:49 -07:00
UnwindPtrace.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
UnwindPtrace.h Allow calling GetFunctionName before unwinding. 2017-03-21 14:21:49 -07:00
UnwindStack.cpp libbacktrace: export offline unwinding failures. 2017-12-15 13:29:53 -08:00
UnwindStack.h Add method to detect remote read function to use. 2017-12-07 19:00:00 -08:00
UnwindStackMap.cpp Demand read load bias for a map. 2017-12-05 13:12:47 -08:00
UnwindStackMap.h Demand read load bias for a map. 2017-12-05 13:12:47 -08:00