#include <stdio.h> #include <unwind.h> extern "C" void arm_function_3(int* p); extern "C" void thumb_function_1(int* p); extern "C" void thumb_function_2(int* p); extern "C" _Unwind_Reason_Code trace_function(_Unwind_Context* context, void *) { printf("0x%x\n", _Unwind_GetIP(context)); fflush(stdout); return _URC_NO_REASON; } void thumb_function_1(int*) { int a = 0; arm_function_3(&a); } void thumb_function_2(int*) { printf("unwinding...\n"); _Unwind_Backtrace(trace_function, (void*) "backtrace!"); }