1#include <stdio.h> 2#include <unwind.h> 3 4extern "C" void arm_function_3(int* p); 5extern "C" void thumb_function_1(int* p); 6extern "C" void thumb_function_2(int* p); 7 8extern "C" _Unwind_Reason_Code trace_function(_Unwind_Context* context, void *) { 9 printf("0x%x\n", _Unwind_GetIP(context)); 10 fflush(stdout); 11 return _URC_NO_REASON; 12} 13 14void thumb_function_1(int*) { 15 int a = 0; 16 arm_function_3(&a); 17} 18 19void thumb_function_2(int*) { 20 printf("unwinding...\n"); 21 _Unwind_Backtrace(trace_function, (void*) "backtrace!"); 22} 23