Mercurial > hg > CbC > CbC_llvm
view libunwind/test/libunwind_02.pass.cpp @ 221:79ff65ed7e25
LLVM12 Original
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Jun 2021 19:15:29 +0900 |
parents | 1d019706d866 |
children | c4bab56944e8 |
line wrap: on
line source
#include <assert.h> #include <stdlib.h> #include <unwind.h> #define EXPECTED_NUM_FRAMES 50 #define NUM_FRAMES_UPPER_BOUND 100 _Unwind_Reason_Code callback(_Unwind_Context *context, void *cnt) { (void)context; int *i = (int *)cnt; ++*i; if (*i > NUM_FRAMES_UPPER_BOUND) { abort(); } return _URC_NO_REASON; } void test_backtrace() { int n = 0; _Unwind_Backtrace(&callback, &n); if (n < EXPECTED_NUM_FRAMES) { abort(); } } int test(int i) { if (i == 0) { test_backtrace(); return 0; } else { return i + test(i - 1); } } int main(int, char**) { int total = test(50); assert(total == 1275); return 0; }