summaryrefslogtreecommitdiffstats
path: root/libbacktrace/include/backtrace/BacktraceMap.h
Commit message (Collapse)AuthorAgeFilesLines
* Revert^2 "Prepare to fail in RefBase destructor if count is untouched"Hans Boehm2018-08-081-0/+1
| | | | | | | | | | This reverts commit b9d0753d2ba88cc60947823e68bb3bed60268361. Reason for revert: Re-land with MacOS workaround. Test: Build (on Linux) and boot AOSP, with weak symbols enabled and disabled. Change-Id: I5150cd90367178f3b039761dca3bccc9c2987df1
* Revert "Prepare to fail in RefBase destructor if count is untouched"Hans Boehm2018-08-071-1/+0
| | | | | | | | This reverts commit 9d3146af22588e0c23e110be13a515f5347bf687. Reason for revert: It appears that weak symbols don't work as expected on MacOS, breaking the MacOS aapt build. Change-Id: Ica0955106485a7bf2e2c3f09ff7910e230eb4139
* Prepare to fail in RefBase destructor if count is untouchedHans Boehm2018-08-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move towards crashing if a normally configured RefBase object is destroyed without ever incrementing the reference count. We've been threatening to do this for a long time. The previously last known violation had been fixed. This also fixes stack trace printing from RefBase, which had previously been broken, and which we found necessary to track down further violations of this rule. Unfortunately, we found several more violations with the aid of that fix. After existing CLs are submitted, there are still some failures, but they are no longer numerous. Thus this CL doesn't actually crash in the event of a violation, but does log a verbose stack trace if it encounters one. Bugs have been filed against the remaining known RefBase client offenders. We plan to enable crashing on usage violations once those are fixed. The fix for the stack trace printing breakage unfortunately requires the use of weak symbols in order to avoid a circular build dependency. We expect to eventually replace this with execinfo.h functionality. Some random reformatting, driven by consistency with current formatting requirements. Add missing include to BacktraceMap.h. Bug: 79112958 Bug: 30292291 Test: Boot AOSP, Master Change-Id: I8151c54560c3b6f75ffc4c48229f0388a2066958
* libprocinfo: add functions reading process map file.Yabin Cui2018-05-141-2/+0
| | | | | | | | | | | | | | | | Add test and benchmark. Also switch libbacktrace, libunwindstack, libmemunreachable to use libprocinfo for map file reading. The benchmark shows using libprocinfo speeds up map file reading in libbacktrace and libunwindstack 18% - 36% on walleye. Bug: http://b/79118393 Test: run procinfo_test. Test: run libunwindstack_test. Test: run libbacktrace_test. Test: run memunreachable_test. Change-Id: Icf281c352f4103fc8d4ba6732c5c07b943330ca1
* Support a map that represents gdb jit elf data.Yabin Cui2018-03-211-0/+4
| | | | | | | | | | | | | Changes: - Add a new flag to the libbacktrace and libunwindstack map data. - Modify the unwinder to handle this map to use the raw pc when stepping. - Add new unit tests for this case. Bug: http://b/73127105 Test: Run simpleperf to unwind through jit symfiles. Test: Run new unit tests. Test: Run 137-cfi test on host. Change-Id: I10bc0410680accc6d35fe51e9f1098911f667e01
* Modify the offline handling interface.Christopher Ferris2018-02-231-2/+1
| | | | | | | | | | | - Add a new function Backtrace::UnwindOffline that takes the stack data. - Modify BacktraceMap::CreateOffline so it doesn't take the stack data. This makes it easier to reuse the map object created this way. Reusing the map object increases simpleperf speed (unwinds per second) by 50%. Test: backtrace_test libunwindstack_test Change-Id: I90cfbae9e50d95d8a0e3cd394b33ba36d65d45f7
* Add ability to skip function name resolution.Christopher Ferris2018-02-201-0/+8
| | | | | | | Bug: 73558129 Test: New unit tests pass. Change-Id: I3a6b17d2590aacb367ab3e3a51cc85be73ad64eb
* Include the map name when dumping memory around a register.Elliott Hughes2018-02-151-0/+3
| | | | | | Bug: http://b/19590178 Test: ran tests, ran crasher Change-Id: Ib9afa34c860d8732ef1943eb4decd0b7c8fb55fd
* Use new unwinder for offline in libbacktrace.Christopher Ferris2018-01-291-1/+5
| | | | | | | | | | | | | libbbacktrace changes: - Completely rewrite the BacktraceOffline class to use the new unwinder. - Modify the test data to save ucontext_t data instead of unw_context data. - Convert the previous tests from unw_context data to ucontext_t data. Bug: 65682279 Test: New unit tests pass in libunwindstack. Test: All offline tests continue to pass. Change-Id: I540345c304b20199d46deeb0349a0638a0f3ab2f
* Change all uintptr_t to uint64_t in API.Christopher Ferris2018-01-181-11/+11
| | | | | | | | | | | | | | | | | In order to support the offline unwinding properly, get rid of the usage of non-fixed type uintptr_t from all API calls. In addition, completely remove the old local and remote unwinding code that used libunwind. The next step will be to move the offline unwinding to the new unwinder. Bug: 65682279 Test: Ran unit tests for libbacktrace/debuggerd. Test: Ran debuggerd -b on a few arm and arm64 processes. Test: Ran crasher and crasher64 and verified tombstones look correct. Change-Id: Ib0c6cee3ad6785a102b74908a3d8e5e93e5c6b33
* Demand read load bias for a map.Christopher Ferris2017-12-051-8/+46
| | | | | | | | | | | | | | | | | | | Add a static GetLoadBias method to the Elf object that only reads just enough to get the load bias. Add a method to MapInfo that gets the load bias. First attempt to get it if the elf object already exists. If no elf object was created, use the new static method to get the load bias. In BacktraceMap, add a custom iterator so that when code dereferences a map element, that's when the load bias will be retrieved if it hasn't already been set. Bug: 69871050 Test: New unit tests, verify tombstones have non-zero load bias values for Test: libraries with a non-zero load bias. Change-Id: I125f4abc827589957fce2f0df24b0f25d037d732
* Switch libbacktrace new unwinder.Christopher Ferris2017-10-301-2/+0
| | | | | | | | | | | | | Update the backtrace leak tests to share a map since this is the most common way it will be used, and it runs much faster. Remove the CreateNew functions, and references to them. Remove benchmarks of CreateNew functions. Test: Builds, ran new unit tests, ran art tests. Change-Id: I4a25a412f1a74c6d43aebbebbf32ead20ead8f94
* Add an interface for stopping in certain maps.Christopher Ferris2017-10-241-2/+9
| | | | | | | | | Also, change the std::set parameters to std::vector. As jmgao points out, a small std::set is not really the best choice for performance reasons. Test: All unit tests pass, enabled the new unwinder and did a kill -3 on Test: an android process. Change-Id: I81227d7b79a9b7cf1d54fb0e3331d3cf4d4d3c4f
* libbacktrace: expose BacktraceMap's unwindstack::Memory.Josh Gao2017-10-201-0/+5
| | | | | Test: mma Change-Id: Icd2b891b121b90d55e3ac45037a59c24221a2496
* libunwindstack: expose UnwindStackMap::GetFunctionName.Josh Gao2017-10-201-0/+3
| | | | | Test: mma Change-Id: I8736ff5c2ed7c5e64eb68df5f4eccfed614612c7
* Show the number of VMAs in the tombstone.Elliott Hughes2017-09-261-0/+2
| | | | | | | | | | Tombstones (especially ones with lots of VMAs) are regularly truncated. We can at least show the number of VMAs, though, for anyone interested in knowing whether they got close to the default 64Ki limit. Bug: http://b/66911122 Test: ran crasher, examined tombstone Change-Id: I286db66f28f132307d573dbe5164efc969dc6ddc
* Add support for the new unwind method.Christopher Ferris2017-08-031-0/+2
| | | | | | | | | | | | | | | Also add a comment to the GetElf function to indicate that it never returns nullptr. Also needed to add this library to the a million and one places that the vndk has hard-coded this data. Bug: 23762183 Test: Built, nothing uses the new code. Test: However, I did run backtrace_test using this code, and all tests pass. Change-Id: Ib270665dcb7a7607075e36d88be76dbde6e2faa8 (cherry picked from commit dc4104b720c7fd2014ccfa9fa621d02df58a43c4)
* Revert "Add support for the new unwind method."Christopher Ferris2017-08-021-2/+0
| | | | | | | | This reverts commit 5b460d13a4c383fa6c9a416d64502430ab065209. Reason for revert: Strange sailfish boot problem. Change-Id: Ibde9375405cca4343c262335647dac120aab4d73
* Add support for the new unwind method.Christopher Ferris2017-07-311-0/+2
| | | | | | | | | | | | Also add a comment to the GetElf function to indicate that it never returns nullptr. Bug: 23762183 Test: Built, nothing uses the new code. Test: However, I did run backtrace_test using this code, and all tests pass. Change-Id: I252b9c2497e2d3d94347dd6e506170bf50cbfe16
* Cleanup the libbacktrace interface a bit.Christopher Ferris2017-07-191-9/+1
| | | | | | | | | | | | - Change the field name load_base to load_bias (which is what it really is). - Add a rel_pc field so that callers do not need to compute it themselves. - Remove the BacktraceMap::GetRelativePc() since nobody should need to compute this themselves. Bug: 23762183 Test: Compiles and unit tests pass (debuggerd, libbacktrace). Change-Id: I2cb579767120adf08c407a58f3c487ee3f2b45fc
* Moved include/backtrace to libbacktrace/includeVijay Venkatraman2017-04-111-0/+129
Export libbacktrace_headers Bug: 33241851 Test: Build sailfish Change-Id: Iba310ffc21d17ba542bed954a960ab305037061c