diff options
author | Christopher Ferris <cferris@google.com> | 2018-05-17 18:37:38 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2018-05-17 18:58:42 -0700 |
commit | 1e564e970a463445fe9ca9996518d971d5a2a06b (patch) | |
tree | c586fb152cb74b2b2b694fda379fb6eb4f7deddb /libunwindstack/include/unwindstack | |
parent | 124f11fc24a16bf2a5b11fc4ca830f03b3940149 (diff) | |
download | unwinding-1e564e970a463445fe9ca9996518d971d5a2a06b.tar.gz |
Fix bug when doing signal handler lookup.
The new lld linker uses all non-zero offset executable maps. There was
a bug when trying to find if the stack is in a signal handler that caused
the code to read the wrong place in the elf. Fixed by not adding the elf
offset to the relative pc.
Also fixed the unwind_for_offline tool to dump multiple stacks if necessary.
Added new offline unit test that would have failed with the old code.
Bug: 79936827
Test: Ran unit tests and libbacktrace unit tests.
Test: Dumped backtraces of system pids.
Test: Ran 137-cfi art test.
Change-Id: Iaca8c18c2a314902e64c3f72831234297e8dcb1b
Diffstat (limited to 'libunwindstack/include/unwindstack')
-rw-r--r-- | libunwindstack/include/unwindstack/Elf.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libunwindstack/include/unwindstack/Elf.h b/libunwindstack/include/unwindstack/Elf.h index 385973e..f4cdbda 100644 --- a/libunwindstack/include/unwindstack/Elf.h +++ b/libunwindstack/include/unwindstack/Elf.h @@ -65,8 +65,8 @@ class Elf { uint64_t GetRelPc(uint64_t pc, const MapInfo* map_info); - bool Step(uint64_t rel_pc, uint64_t adjusted_rel_pc, uint64_t elf_offset, Regs* regs, - Memory* process_memory, bool* finished); + bool Step(uint64_t rel_pc, uint64_t adjusted_rel_pc, Regs* regs, Memory* process_memory, + bool* finished); ElfInterface* CreateInterfaceFromMemory(Memory* memory); |