diff options
Diffstat (limited to 'libunwindstack/ThreadUnwinder.cpp')
-rw-r--r-- | libunwindstack/ThreadUnwinder.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libunwindstack/ThreadUnwinder.cpp b/libunwindstack/ThreadUnwinder.cpp index b649491..9a8a0a6 100644 --- a/libunwindstack/ThreadUnwinder.cpp +++ b/libunwindstack/ThreadUnwinder.cpp @@ -145,7 +145,7 @@ ThreadEntry* ThreadUnwinder::SendSignalToThread(int signal, pid_t tid) { return nullptr; } -void ThreadUnwinder::UnwindWithSignal(int signal, pid_t tid, +void ThreadUnwinder::UnwindWithSignal(int signal, pid_t tid, std::unique_ptr<Regs>* initial_regs, const std::vector<std::string>* initial_map_names_to_skip, const std::vector<std::string>* map_suffixes_to_ignore) { ClearErrors(); @@ -164,6 +164,9 @@ void ThreadUnwinder::UnwindWithSignal(int signal, pid_t tid, } std::unique_ptr<Regs> regs(Regs::CreateFromUcontext(Regs::CurrentArch(), entry->GetUcontext())); + if (initial_regs != nullptr) { + initial_regs->reset(regs->Clone()); + } SetRegs(regs.get()); UnwinderFromPid::Unwind(initial_map_names_to_skip, map_suffixes_to_ignore); |