diff --git a/libc/backtrace.c b/libc/backtrace.c new file mode 100644 index 0000000..4d86edb --- /dev/null +++ b/libc/backtrace.c @@ -0,0 +1,116 @@ +/* Copyright (C) 2025 John Törnblom + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, see +. */ + +#include +#include +#include +#include +#include +#include + + +#define MAX_SYMBOL_SIZE 99 + + +size_t +backtrace(void **buffer, size_t size) { + void **frame = __builtin_frame_address(0); + void *addr = __builtin_return_address(0); + int i; + + for(i=0; i