summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdde_linux26/lib/src/arch/l4/process.c4
-rw-r--r--libddekit/include/ddekit/printf.h2
-rw-r--r--libddekit/printf.c12
3 files changed, 14 insertions, 4 deletions
diff --git a/libdde_linux26/lib/src/arch/l4/process.c b/libdde_linux26/lib/src/arch/l4/process.c
index b5189cd4..ac700f82 100644
--- a/libdde_linux26/lib/src/arch/l4/process.c
+++ b/libdde_linux26/lib/src/arch/l4/process.c
@@ -220,10 +220,6 @@ void do_exit(long code)
** Misc functions **
*****************************************************************************/
-void dump_stack(void)
-{
-}
-
char *get_task_comm(char *buf, struct task_struct *tsk)
{
diff --git a/libddekit/include/ddekit/printf.h b/libddekit/include/ddekit/printf.h
index 35b0dfa1..6dafa18d 100644
--- a/libddekit/include/ddekit/printf.h
+++ b/libddekit/include/ddekit/printf.h
@@ -18,6 +18,8 @@ int ddekit_printf(const char *fmt, ...);
*/
int ddekit_vprintf(const char *fmt, va_list va);
+void dump_stack(void);
+
/** Log function and message.
* \ingroup DDEKit_util
*/
diff --git a/libddekit/printf.c b/libddekit/printf.c
index dacc65e6..c4a8b718 100644
--- a/libddekit/printf.c
+++ b/libddekit/printf.c
@@ -10,6 +10,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <mach.h>
+#include <execinfo.h>
#include "ddekit/printf.h"
@@ -93,3 +94,14 @@ int log_init ()
return 0;
}
+
+void dump_stack()
+{
+#define NUM_TRACES 16
+ void *trace[NUM_TRACES];
+ int trace_size = 0;
+
+ fprintf (stderr, "dump the stack\n");
+ trace_size = backtrace(trace, NUM_TRACES);
+ backtrace_symbols_fd(trace, trace_size, 2);
+}