7747b60faa5dcfd43d920c1e60abdab1150aab32 |
|
01-Feb-2018 |
Christopher Ferris <cferris@google.com> |
Load dex files from ART-specific data structure. Fixes cdex which was recently changed to have shared data section, which means the DEX PC cannot be used to find the right symbol, as the bytecode is no longer within the dex file, and in-fact, we might have to scan multiple dex files to find the method. Bug: 72520014 Test: testrunner.py --host --cdex-none -t 137 Test: testrunner.py --host --cdex-fast -t 137 Test: All unit tests pass. Change-Id: I80265d05ad69dd9cefbe3f8a75e4cd349002af5e
/system/core/libunwindstack/tools/unwind.cpp
|
d70ea5ea8511ae9b9ae57b17390e4027d20e3390 |
|
31-Jan-2018 |
Christopher Ferris <cferris@google.com> |
Move dex pc frame creation into libunwindstack. Test: Compiles, all unit tests pass. Test: Ran 137-cfi art test in interpreter and verified interpreter Test: frames still show up. Change-Id: Icea90194986faa733a873e8cf467fc2513eb5573
/system/core/libunwindstack/tools/unwind.cpp
|
98984b41da78448df24d8d9ced842066328d5f11 |
|
17-Jan-2018 |
Christopher Ferris <cferris@google.com> |
Add support for getting a dex pc. Changes: - Change the register type from int16_t to uint32_t for the location data and the Eval processing. This is because the special dex pc is > 65535. - Add the ability for Dwarf register location information to point to a register that is itself a Dwarf location register. - Add dex_pc to the frame information. - Modify the unwind tool to print the dex pc if non-zero. This does not implement the printing of the dex information in anything but the unwind tool. It's not the final form of this printing. Bug: 72070049 Test: Ran new unit tests. Test: Dumped stack while in interpreter running 137-cfi art test and Test: verified dex pc is set to non-zero. Change-Id: I6ce8a6b577fb4f92abacbd433b1f68977e272542
/system/core/libunwindstack/tools/unwind.cpp
|
150db124f3f3c0f8e1c341fd33c6c64310e0ac39 |
|
21-Dec-2017 |
Christopher Ferris <cferris@google.com> |
Add ability to read jit gdb data. Changes: - New JitDebug class to handle all of the jit gdb interface. - Add unit tests for all, along with new offline test using debug data. - Add new Memory type called MemoryOfflineParts that has multiple MemoryOffline objects to support the offline test. - Update the tools to use the JitDebug object. - Modify libbacktrace to use the JitDebug, but only looking in libart.so and libartd.so. - Change the Format32Bits to Is32Bit since it's more accurate and I use it in a different context where original name didn't make sense. - Add a new function to find global variables in an elf file (GetGlobalVariable). - Add a new function to determine if a pc is valid for this elf (IsValidPc). Bug: 68396769 Test: Ran new unit tests. Added new offline test that uses jit debug data. Test: Ran art test that generates jit data and verified a crash unwinds Test: through the jit data. Change-Id: I6e7ee2f5bab2242028a06feece156dff21c0a974
/system/core/libunwindstack/tools/unwind.cpp
|
61b1a1ae7797e0d3177400cdb3cda028ea14669d |
|
08-Nov-2017 |
Douglas Leung <douglas.leung@mips.com> |
Add libunwindstack support for Mips and Mips64 This patch requires v3.18 kernel or above, because v3.10 kernel has a bug (as of 8/1/2017) in the ptrace(GETREGSET) function for mips and mips64. Change-Id: I004c1fa190193eebe1c84440b366289122a6bd8a Signed-off-by: Douglas Leung <douglas.leung@mips.com> Signed-off-by: Dejan Jovicevic <dejan.jovicevic@mips.com>
/system/core/libunwindstack/tools/unwind.cpp
|
d06001d6e07b14b865f3294fff82d2571ed7cb2c |
|
01-Dec-2017 |
Christopher Ferris <cferris@google.com> |
Split arch data into separate files. Add an ArchEnum to express the arch of the Elf objects and Reg objects. Split out the regs code into per arch pieces and generic parts. Also, split out the header files for each arch. Do not break out the test code yet, there isn't enough and it doesn't help to maintain the tests. Test: libunwindstack/libbacktrace/debuggerd unit tests pass. Test: Running debuggerd -b <PIDS> yields valid data on bullhead. Change-Id: If61f6c730c9ff2249f986b41de8c4d62f7158325
/system/core/libunwindstack/tools/unwind.cpp
|
ae3b136506ff0056359db52df5f78bfa1beea5e7 |
|
06-Oct-2017 |
Christopher Ferris <cferris@google.com> |
Use Unwinder object for unwind tool. Test: Ran unwind on arm and arm64 processes. Change-Id: I8a2a3ed31482044fe51d7e0d8c7f5588d5aad81c
/system/core/libunwindstack/tools/unwind.cpp
|
b9de87f7edefd7a2473134b267716c5fd750e89f |
|
20-Sep-2017 |
Christopher Ferris <cferris@google.com> |
Add a new unwind method on error. If a function crashes by jumping into unexecutable code, the old method could not unwind through that. Add a fallback method to set the pc from the default return address location. In addition, add a new finished check for steps. This will provide a method to indicate that this step is the last step. This prevents cases where the fallback method might be triggered incorrectly. Update the libbacktrace code to unwind using the new methodology. Update the unwind tool to use the new unwind methodology. Add a new option to crasher that calls through a null function. Create a new object, Unwinder, that encapsulates the a basic unwind. For now, libbacktrace will still use the custom code. Added new unit tests to cover the new cases. Also add a test that crashes calling a nullptr as a function, and then has call frames in the signal stack. Bug: 65842173 Test: Pass all unit tests, verify crasher dumps properly. Change-Id: Ia18430ab107e9f7bdf0e14a9b74710b1280bd7f4
/system/core/libunwindstack/tools/unwind.cpp
|
5f118519fd323a0c71b54de9279e8a9ea6a56271 |
|
01-Sep-2017 |
Christopher Ferris <cferris@google.com> |
Add a method to share the process memory object. New function to create the process memory object. This allows for a future where different remote process memory objects could be created depending on the way remote memory can be created. Even different local memory objects that access memory without doing any checks. It also allows MemoryRange objects to share one single process memory object and could help if the process memory object caches data. Small changes to MapInfo::CreateMemory to when some errors are detected. - Always check if the map is a device map, instead of only if the name is not empty. - Check if a memory map is readable before creating the memory from process memory. Bug: 23762183 Test: Ran unit tests, unwound on device using the new code. Change-Id: I12a93c2dc19639689a528ec41c67bfac74d431b3
/system/core/libunwindstack/tools/unwind.cpp
|
0953ecd03a90350117d6881c55959c6644972b79 |
|
25-Aug-2017 |
Josh Gao <jmgao@google.com> |
libunwindstack: make machine type a property of Regs. There are no actual users of the machine type output parameter to Regs::RemoteGet. The concrete implementations of Regs know what machine type they represent anyway, so provide an accessor to query. Test: treehugger Test: libunwindstack tests on 32/64-bit host, hikey960 Change-Id: Ia25910531d36c41b2b6919f154cfa914aae63117
/system/core/libunwindstack/tools/unwind.cpp
|
d226a5140989f509a0ed3e2723f05d5fc93ce8df |
|
14-Jul-2017 |
Christopher Ferris <cferris@google.com> |
Make the library usable as a library. - Add namespace unwindstack everywhere so that it's easier for other code to use the library. - Move some of the header files into include/unwindstack so that they can be exposed. - Modify the headers so that only a limited number need to be exposed. - Update the tools to use the new headers. - Add a GetLoadBias() call on the Elf object. This prevents the need to get the interface object out of the Elf object. - Move the GetRelPc() call out of the Reg class, to the Elf class. It's not always the case that a Reg object will be around when you want to get a relative pc. The tests for this moved to ElfTest.cpp. Bug: 23762183 Test: Unit tests pass. Change-Id: Iac609dac1dd90ed83d1a1e24ff2579c96c023bc3
/system/core/libunwindstack/tools/unwind.cpp
|
b5d7a875128d58924832ab9b97b72f9e37af9b7a |
|
13-Jul-2017 |
Christopher Ferris <cferris@google.com> |
Move tools to separate directory. Bug: 23762183 Test: Ran unit tests, ran new tools. Change-Id: Icc7cbb4102a68042f4683d6dd622f21bc5e74deb
/system/core/libunwindstack/tools/unwind.cpp
|