mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-06 15:20:12 +00:00
libexecinfo: Add recipe
This package is handy especially with musl to port apps which use glibc backtrace APIs build for musl systems alone Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
|||||||
|
From 910bbc2cb6cc1cfa6deed9d170da02a639902c7c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Sun, 19 Mar 2017 16:14:54 -0700
|
||||||
|
Subject: [PATCH 1/2] makefile: Fix build on linux
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
---
|
||||||
|
Makefile | 33 +++++++++++++++++----------------
|
||||||
|
1 file changed, 17 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
Index: libexecinfo-1.1/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- libexecinfo-1.1.orig/Makefile
|
||||||
|
+++ libexecinfo-1.1/Makefile
|
||||||
|
@@ -23,24 +23,25 @@
|
||||||
|
# SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
# $Id: Makefile,v 1.3 2004/07/19 05:19:55 sobomax Exp $
|
||||||
|
+#
|
||||||
|
+# Linux Makefile by Matt Smith <mcs@darkregion.net>, 2011/01/04
|
||||||
|
|
||||||
|
-LIB= execinfo
|
||||||
|
-
|
||||||
|
-SRCS= stacktraverse.c stacktraverse.h execinfo.c execinfo.h
|
||||||
|
-
|
||||||
|
-INCS= execinfo.h
|
||||||
|
-
|
||||||
|
-SHLIB_MAJOR= 1
|
||||||
|
-SHLIB_MINOR= 0
|
||||||
|
-
|
||||||
|
-NOPROFILE= yes
|
||||||
|
-
|
||||||
|
-DPADD= ${LIBM}
|
||||||
|
-LDADD= -lm
|
||||||
|
-
|
||||||
|
-#WARNS?= 4
|
||||||
|
-
|
||||||
|
-#stacktraverse.c: gen.py
|
||||||
|
-# ./gen.py > stacktraverse.c
|
||||||
|
+CC?=cc
|
||||||
|
+AR?=ar
|
||||||
|
+EXECINFO_CFLAGS=$(CFLAGS) -O2 -pipe -fno-strict-aliasing -std=gnu99 -fstack-protector -c
|
||||||
|
+EXECINFO_LDFLAGS=$(LDFLAGS)
|
||||||
|
+
|
||||||
|
+all: static dynamic
|
||||||
|
+
|
||||||
|
+static:
|
||||||
|
+ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c
|
||||||
|
+ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c
|
||||||
|
+ $(AR) rcs libexecinfo.a stacktraverse.o execinfo.o
|
||||||
|
+
|
||||||
|
+dynamic:
|
||||||
|
+ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c -o stacktraverse.So
|
||||||
|
+ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c -o execinfo.So
|
||||||
|
+ $(CC) -shared -Wl,-soname,libexecinfo.so.1 -o libexecinfo.so.1 $(EXECINFO_LDFLAGS) stacktraverse.So execinfo.So
|
||||||
|
|
||||||
|
-.include <bsd.lib.mk>
|
||||||
|
+clean:
|
||||||
|
+ rm -rf *.o *.So *.a *.so
|
||||||
+79
@@ -0,0 +1,79 @@
|
|||||||
|
From 0810817773fb81d7383d2fa8464244c8f79845fb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Sun, 19 Mar 2017 16:16:18 -0700
|
||||||
|
Subject: [PATCH 2/2] execinfo: Fix compiler errors found with newer gcc/clang
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
---
|
||||||
|
execinfo.c | 19 +++++++++++--------
|
||||||
|
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/execinfo.c b/execinfo.c
|
||||||
|
index 906fb14..9448b60 100644
|
||||||
|
--- a/execinfo.c
|
||||||
|
+++ b/execinfo.c
|
||||||
|
@@ -69,7 +69,8 @@ backtrace(void **buffer, int size)
|
||||||
|
char **
|
||||||
|
backtrace_symbols(void *const *buffer, int size)
|
||||||
|
{
|
||||||
|
- int i, clen, alen, offset;
|
||||||
|
+ size_t clen, alen;
|
||||||
|
+ int i, offset;
|
||||||
|
char **rval;
|
||||||
|
char *cp;
|
||||||
|
Dl_info info;
|
||||||
|
@@ -78,7 +79,6 @@ backtrace_symbols(void *const *buffer, int size)
|
||||||
|
rval = malloc(clen);
|
||||||
|
if (rval == NULL)
|
||||||
|
return NULL;
|
||||||
|
- (char **)cp = &(rval[size]);
|
||||||
|
for (i = 0; i < size; i++) {
|
||||||
|
if (dladdr(buffer[i], &info) != 0) {
|
||||||
|
if (info.dli_sname == NULL)
|
||||||
|
@@ -92,14 +92,14 @@ backtrace_symbols(void *const *buffer, int size)
|
||||||
|
2 + /* " <" */
|
||||||
|
strlen(info.dli_sname) + /* "function" */
|
||||||
|
1 + /* "+" */
|
||||||
|
- D10(offset) + /* "offset */
|
||||||
|
+ 10 + /* "offset */
|
||||||
|
5 + /* "> at " */
|
||||||
|
strlen(info.dli_fname) + /* "filename" */
|
||||||
|
1; /* "\0" */
|
||||||
|
rval = realloc_safe(rval, clen + alen);
|
||||||
|
if (rval == NULL)
|
||||||
|
return NULL;
|
||||||
|
- snprintf(cp, alen, "%p <%s+%d> at %s",
|
||||||
|
+ snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s",
|
||||||
|
buffer[i], info.dli_sname, offset, info.dli_fname);
|
||||||
|
} else {
|
||||||
|
alen = 2 + /* "0x" */
|
||||||
|
@@ -108,12 +108,15 @@ backtrace_symbols(void *const *buffer, int size)
|
||||||
|
rval = realloc_safe(rval, clen + alen);
|
||||||
|
if (rval == NULL)
|
||||||
|
return NULL;
|
||||||
|
- snprintf(cp, alen, "%p", buffer[i]);
|
||||||
|
+ snprintf((char *) rval + clen, alen, "%p", buffer[i]);
|
||||||
|
}
|
||||||
|
- rval[i] = cp;
|
||||||
|
- cp += alen;
|
||||||
|
+ rval[i] = (char *) clen;
|
||||||
|
+ clen += alen;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ for (i = 0; i < size; i++)
|
||||||
|
+ rval[i] += (long) rval;
|
||||||
|
+
|
||||||
|
return rval;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -155,6 +158,6 @@ backtrace_symbols_fd(void *const *buffer, int size, int fd)
|
||||||
|
return;
|
||||||
|
snprintf(buf, len, "%p\n", buffer[i]);
|
||||||
|
}
|
||||||
|
- write(fd, buf, len - 1);
|
||||||
|
+ write(fd, buf, strlen(buf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.12.0
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Copyright (C) 2017 Khem Raj <raj.khem@gmail.com>
|
||||||
|
# Released under the MIT license (see COPYING.MIT for the terms)
|
||||||
|
|
||||||
|
DESCRIPTION = "A quick-n-dirty BSD licensed clone of the GNU libc backtrace facility."
|
||||||
|
HOMEPAGE = "http://www.freshports.org/devel/libexecinfo"
|
||||||
|
LIC_FILES_CHKSUM = "file://execinfo.c;endline=25;md5=85bd3fa4ea9acae5182e29db063fe2e5"
|
||||||
|
LICENSE = "BSD-2-Clause"
|
||||||
|
SECTION = "libs"
|
||||||
|
DEPENDS = ""
|
||||||
|
|
||||||
|
SRC_URI = "http://distcache.freebsd.org/local-distfiles/itetcu/${BP}.tar.bz2 \
|
||||||
|
file://0001-makefile-Fix-build-on-linux.patch \
|
||||||
|
file://0002-execinfo-Fix-compiler-errors-found-with-newer-gcc-cl.patch \
|
||||||
|
"
|
||||||
|
SRC_URI[md5sum] = "8e9e81c554c1c5d735bc877448e92b91"
|
||||||
|
SRC_URI[sha256sum] = "c9a21913e7fdac8ef6b33250b167aa1fc0a7b8a175145e26913a4c19d8a59b1f"
|
||||||
|
|
||||||
|
CFLAGS += "-fno-omit-frame-pointer"
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
install -D -m 0744 ${S}/execinfo.h ${D}${includedir}/execinfo.h
|
||||||
|
install -D -m 0744 ${S}/stacktraverse.h ${D}${includedir}/stacktraverse.h
|
||||||
|
install -D -m 0744 ${B}/libexecinfo.a ${D}${libdir}/libexecinfo.a
|
||||||
|
install -D -m 0755 ${B}/libexecinfo.so.1 ${D}${libdir}/libexecinfo.so.1
|
||||||
|
ln -s libexecinfo.so.1 ${D}${libdir}/libexecinfo.so
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# We will skip parsing for non-musl systems
|
||||||
|
#
|
||||||
|
COMPATIBLE_HOST = ".*-musl.*"
|
||||||
|
|
||||||
Reference in New Issue
Block a user