Home | History | Annotate | Download | only in test
      1 #include <libunwind.h>
      2 #include <stdlib.h>
      3 
      4 void backtrace(int lower_bound) {
      5   unw_context_t context;
      6   unw_getcontext(&context);
      7 
      8   unw_cursor_t cursor;
      9   unw_init_local(&cursor, &context);
     10 
     11   int n = 0;
     12   do {
     13     ++n;
     14     if (n > 100) {
     15       abort();
     16     }
     17   } while (unw_step(&cursor) > 0);
     18 
     19   if (n < lower_bound) {
     20     abort();
     21   }
     22 }
     23 
     24 void test1(int i) {
     25   backtrace(i);
     26 }
     27 
     28 void test2(int i, int j) {
     29   backtrace(i);
     30   test1(j);
     31 }
     32 
     33 void test3(int i, int j, int k) {
     34   backtrace(i);
     35   test2(j, k);
     36 }
     37 
     38 int main() {
     39   test1(1);
     40   test2(1, 2);
     41   test3(1, 2, 3);
     42 }
     43