summaryrefslogtreecommitdiff
path: root/libunwindstack/ThreadUnwinder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libunwindstack/ThreadUnwinder.cpp')
-rw-r--r--libunwindstack/ThreadUnwinder.cpp5
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);