48extern int f3 (
int,
int);
55 return f2 (__LINE__) + 1;
59f3 (
int f1line,
int f2line)
71 f3line = __LINE__ + 1;
76 fprintf (stderr,
"test1: unexpected return value %d\n", i);
83 "test1: not enough frames; got %zu, expected at least 3\n",
88 check (
"test1", 0,
all, f3line,
"f3",
"edtest.c", &
data.failed);
89 check (
"test1", 1,
all, f2line,
"f2",
"edtest2_build.c", &
data.failed);
90 check (
"test1", 2,
all, f1line,
"test1",
"edtest.c", &
data.failed);
92 printf (
"%s: backtrace_full alloc stress\n",
data.failed ?
"FAIL" :
"PASS");
119 exit (
failures > 0 ? EXIT_FAILURE : EXIT_SUCCESS);
static int f2(int f1line)
#define BACKTRACE_SUPPORTS_THREADS
int backtrace_full(struct backtrace_state *state, int skip, backtrace_full_callback callback, backtrace_error_callback error_callback, void *data)
struct backtrace_state * backtrace_create_state(const char *filename, int threaded, backtrace_error_callback error_callback, void *data)
int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED)
int f3(int f1line, int f2line)
void check(const char *name, int index, const struct info *all, int want_lineno, const char *want_function, const char *want_file, int *failed)
void error_callback_create(void *data ATTRIBUTE_UNUSED, const char *msg, int errnum)
int callback_one(void *vdata, uintptr_t pc ATTRIBUTE_UNUSED, const char *filename, int lineno, const char *function)
void error_callback_one(void *vdata, const char *msg, int errnum)
Functions to help with cleanup.