Patchwork libunwind: new pacakge

login
register
mail settings
Submitter Sven Neumann
Date June 26, 2013, 3:26 p.m.
Message ID <1372260390.2822.5.camel@sven>
Download mbox | patch
Permalink /patch/254793/
State Superseded
Headers show

Comments

Sven Neumann - June 26, 2013, 3:26 p.m.
Hi,

as we are also using libunwind with buildroot, perhaps I can add some of
our experiences with it...

Plain libunwind-1.1 won't compile on uClibc x86 as it uses setcontext().
This function is not available in uClibc (at least not in the released
versions). I have worked around this by commenting out some code in
libunwind (see attached patch), but this is probably not a good
solution.

I've also had a build failure at some point in the tests because there
is code that includes execinfo.h unconditionally.

I've attached the patches that we are using with libunwind. Perhaps they
can be useful for you.


Regards,
Sven

Patch

From 3ca58a368f6ec5bee5767df81df36dda5426cce5 Mon Sep 17 00:00:00 2001
From: Sven Neumann <s.neumann@raumfeld.com>
Date: Tue, 9 Oct 2012 12:11:05 +0200
Subject: [PATCH] tests: don't include execinfo.h unconditionally

On some systems (for example uCLibC in certain configurations),
backtrace support is not available.

Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
---
 tests/test-coredump-unwind.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/test-coredump-unwind.c b/tests/test-coredump-unwind.c
index 5254708..215b308 100644
--- a/tests/test-coredump-unwind.c
+++ b/tests/test-coredump-unwind.c
@@ -57,7 +57,11 @@ 
 #include <grp.h>
 
 /* For SIGSEGV handler code */
+
+#if HAVE_EXECINFO_H
 #include <execinfo.h>
+#endif
+
 #include <sys/ucontext.h>
 
 #include <libunwind-coredump.h>
@@ -238,6 +242,7 @@  void handle_sigsegv(int sig, siginfo_t *info, void *ucontext)
 			ip);
 
   {
+#if HAVE_EXECINFO_H
     /* glibc extension */
     void *array[50];
     int size;
@@ -245,6 +250,7 @@  void handle_sigsegv(int sig, siginfo_t *info, void *ucontext)
 #ifdef __linux__
     backtrace_symbols_fd(array, size, 2);
 #endif
+#endif
   }
 
   _exit(1);
-- 
1.7.9.5