thumb.cpp revision e16cb84e2324f05334d18dcf5956f20f44262b62
1e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <stdio.h> 2e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project#include <unwind.h> 3e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 4e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern "C" void arm_function_3(int*p); 5e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern "C" void thumb_function_1(int*p); 6e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern "C" void thumb_function_2(int*p); 7e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 8e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectextern "C" _Unwind_Reason_Code trace_function(_Unwind_Context *context, void *arg) 9e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{ 10e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project int i = 0; 11e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("0x%x\n", _Unwind_GetIP(context)); 12e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project fflush(stdout); 13e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project return _URC_NO_REASON; 14e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project} 15e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 16e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectvoid thumb_function_1(int*p) 17e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{ 18e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project int a = 0; 19e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project arm_function_3(&a); 20e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project} 21e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project 22e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Projectvoid thumb_function_2(int*p) 23e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project{ 24e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project int a = 0; 25e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project printf("unwinding...\n"); 26e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project _Unwind_Backtrace(trace_function, (void*)"backtrace!"); 27e16cb84e2324f05334d18dcf5956f20f44262b62The Android Open Source Project} 28