blob: ac4ee0a6d969954c1979461c80446140829a1157 [file] [log] [blame]
/*
* Copyright 2017, Data61
* Commonwealth Scientific and Industrial Research Organisation (CSIRO)
* ABN 41 687 119 230.
*
* This software may be distributed and modified according to the terms of
* the BSD 2-Clause license. Note that NO WARRANTY is provided.
* See "LICENSE_BSD2.txt" for details.
*
* @TAG(DATA61_BSD)
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <sel4debug/stack_trace.h>
#define STACK_TRACE(x) do { \
void *frame = __builtin_frame_address(x); \
if (!frame) return; \
void *ret = __builtin_return_address(x); \
assert(ret); \
void *addr = __builtin_extract_return_addr(ret); \
printf("Possible stack call (%d) from %p with frame at %p\n", x, addr, frame); \
} while (0) \
/**/
void print_stack_trace(void) {
STACK_TRACE(0);
STACK_TRACE(1);
STACK_TRACE(2);
STACK_TRACE(3);
STACK_TRACE(4);
STACK_TRACE(5);
STACK_TRACE(6);
STACK_TRACE(7);
STACK_TRACE(8);
STACK_TRACE(9);
STACK_TRACE(10);
}