/* Copyright (c) 2006-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "str.h"
#include "backtrace-string.h"
#if defined(HAVE_BACKTRACE_SYMBOLS) && defined(HAVE_EXECINFO_H)
/* Linux */
#include <execinfo.h>
{
char **strings;
int ret, i;
if (ret <= STACK_SKIP_COUNT)
return -1;
for (i = STACK_SKIP_COUNT; i < ret; i++) {
if (i > STACK_SKIP_COUNT)
else {
/* out of memory case */
}
}
return 0;
}
/* Solaris */
#include <ucontext.h>
struct walk_context {
unsigned int pos;
};
void *context)
{
}
return 0;
}
{
if (getcontext(&uc) < 0)
return -1;
return 0;
}
#else
{
return -1;
}
#endif
{
if (backtrace_append(str) < 0)
return -1;
return 0;
}