| #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!"); | |
| } |