Re-enable libunwind for arm.
Update to handle the new optimized way that libunwind works.
In addition, a small refactor of the BacktraceMap code.
A few new tests of for good measure.
Change-Id: I2f9b4f5ad5a0dfe907b31febee76e4b9b94fb76f
diff --git a/libbacktrace/UnwindCurrent.cpp b/libbacktrace/UnwindCurrent.cpp
index d1195ee..17b71b9 100644
--- a/libbacktrace/UnwindCurrent.cpp
+++ b/libbacktrace/UnwindCurrent.cpp
@@ -25,6 +25,7 @@
#include <libunwind.h>
#include "UnwindCurrent.h"
+#include "UnwindMap.h"
// Define the ucontext_t structures needed for each supported arch.
#if defined(__arm__)
@@ -119,8 +120,8 @@
}
if (resolve) {
- frame->func_name = backtrace_obj_->GetFunctionName(frame->pc, &frame->func_offset);
- frame->map = backtrace_obj_->FindMap(frame->pc);
+ frame->func_name = GetFunctionName(frame->pc, &frame->func_offset);
+ frame->map = FindMap(frame->pc);
} else {
frame->map = NULL;
frame->func_offset = 0;
@@ -171,10 +172,6 @@
UnwindThread::~UnwindThread() {
}
-bool UnwindThread::Init() {
- return true;
-}
-
void UnwindThread::ThreadUnwind(
siginfo_t* /*siginfo*/, void* sigcontext, size_t num_ignore_frames) {
ExtractContext(sigcontext);