diff options
author | Christopher Ferris <cferris@google.com> | 2020-09-28 20:13:53 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-09-28 20:13:53 +0000 |
commit | 06c5c6958ad9455b579b7b29c0fc881adec573cc (patch) | |
tree | a050128d65a79f6ac8be8ef582ce8edd3be59974 /libbacktrace/UnwindStack.cpp | |
parent | 392c59b819a3df256266e4475876dfc020dad7b7 (diff) | |
parent | 0bd4f2dfc1a141c1ee2ad52b7e742c854ec06c28 (diff) |
Merge "Add arch member into Unwinder object." am: 087552a89b am: 89f54f6f86 am: d232e3c435 am: 0bd4f2dfc1
Original change: https://android-review.googlesource.com/c/platform/system/core/+/1437275
Change-Id: I1bd0289d05aa589db9623c51fdac8ad3fd322a9a
Diffstat (limited to 'libbacktrace/UnwindStack.cpp')
-rw-r--r-- | libbacktrace/UnwindStack.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libbacktrace/UnwindStack.cpp b/libbacktrace/UnwindStack.cpp index 624711f797..82ff21c092 100644 --- a/libbacktrace/UnwindStack.cpp +++ b/libbacktrace/UnwindStack.cpp @@ -52,11 +52,11 @@ bool Backtrace::Unwind(unwindstack::Regs* regs, BacktraceMap* back_map, unwinder.SetResolveNames(stack_map->ResolveNames()); stack_map->SetArch(regs->Arch()); if (stack_map->GetJitDebug() != nullptr) { - unwinder.SetJitDebug(stack_map->GetJitDebug(), regs->Arch()); + unwinder.SetJitDebug(stack_map->GetJitDebug()); } #if !defined(NO_LIBDEXFILE_SUPPORT) if (stack_map->GetDexFiles() != nullptr) { - unwinder.SetDexFiles(stack_map->GetDexFiles(), regs->Arch()); + unwinder.SetDexFiles(stack_map->GetDexFiles()); } #endif unwinder.Unwind(skip_names, &stack_map->GetSuffixesToIgnore()); @@ -180,5 +180,10 @@ bool UnwindStackPtrace::Unwind(size_t num_ignore_frames, void* context) { } size_t UnwindStackPtrace::Read(uint64_t addr, uint8_t* buffer, size_t bytes) { +#if defined(__aarch64__) + // Tagged pointer after Android R would lead top byte to have random values + // https://source.android.com/devices/tech/debug/tagged-pointers + addr &= (1ULL << 56) - 1; +#endif return memory_->Read(addr, buffer, bytes); } |