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