Lines Matching refs:unwinder
24 #include "unwinder.h"
74 static size_t UnwinderRemote(std::shared_ptr<Unwinder> unwinder, const pid_t tid)
76 if (unwinder == nullptr) {
79 MAYBE_UNUSED bool unwRet = unwinder->UnwindRemote(tid);
80 auto frames = unwinder->GetFrames();
85 static size_t UnwinderRemoteFp(std::shared_ptr<Unwinder> unwinder, const pid_t tid)
87 if (unwinder == nullptr) {
91 unwinder->SetRegs(regs);
94 unwinder->EnableFpCheckMapExec(false);
95 unwinder->UnwindByFp(&context);
96 auto frames = unwinder->GetPcs();
101 static bool GetUnwinder(pid_t pid, void* data, std::shared_ptr<Unwinder>& unwinder, bool& isFp)
106 unwinder = iter->second;
108 unwinder = std::make_shared<Unwinder>(pid);
109 unwinders_[pid] = unwinder;
113 if ((dataPtr != nullptr) && (unwinder != nullptr)) {
114 unwinder->EnableFillFrames(dataPtr->isFillFrames);
115 unwinder->EnableUnwindCache(dataPtr->isCache);
138 std::shared_ptr<Unwinder> unwinder = nullptr;
140 if (!GetUnwinder(pid, data, unwinder, isFp) || (unwinder == nullptr)) {
141 state.SkipWithError("Failed to get unwinder.");
148 unwSize = UnwinderRemoteFp(unwinder, pid);
150 unwSize = UnwinderRemote(unwinder, pid);