2023-07-01 01:40:34 -04:00
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
#ifndef LIB_API
|
|
|
|
|
#define LIB_API
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
__attribute__((noinline)) void frame1(
|
|
|
|
|
void** expected,
|
|
|
|
|
void** unwound,
|
|
|
|
|
void (*frame2)(void** expected, void** unwound)) {
|
2023-07-12 18:41:53 -04:00
|
|
|
expected[3] = __builtin_extract_return_addr(__builtin_return_address(0));
|
2023-07-01 01:40:34 -04:00
|
|
|
frame2(expected, unwound);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LIB_API void frame0(
|
|
|
|
|
void** expected,
|
|
|
|
|
void** unwound,
|
|
|
|
|
void (*frame2)(void** expected, void** unwound)) {
|
2023-07-12 18:41:53 -04:00
|
|
|
expected[4] = __builtin_extract_return_addr(__builtin_return_address(0));
|
2023-07-01 01:40:34 -04:00
|
|
|
frame1(expected, unwound, frame2);
|
|
|
|
|
}
|
|
|
|
|
|