Files
poky/meta/recipes-devtools/elfutils/files/musl-obstack-fts.patch
Khem Raj d5b73bdb45 elfutils: Fix eu-* utils builds for musl
Re-organize the musl patches in three different areas namely
libs, utils and tests, this will help maintain them in future
version bumps

Add obstack dependency on musl targets which is needed for eu-*

PN and PN-binutils is not empty anymore on musl

(From OE-Core rev: a747239978e63f22d4107e6e12c75b5f78043cce)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-07-23 22:26:28 +01:00

106 lines
3.7 KiB
Diff

Look for libfts and libobstack during configure, these
libraries are external to libc when using musl, whereas
on glibc these libraries are provided in libc itself.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Inappropriate [workaround for musl]
--- a/configure.ac
+++ b/configure.ac
@@ -494,6 +494,60 @@ else
fi
AC_SUBST([argp_LDADD])
+dnl Check if we have fts available from our libc
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#if !defined(__x86_64__)
+ #undef _FILE_OFFSET_BITS
+ #define _FILE_OFFSET_BITS 32
+ #endif
+ #include <fts.h>],
+ [FTS* fts = 0; return fts_close(fts); return 0;]
+ )],
+ [libc_has_fts="true"],
+ [libc_has_fts="false"]
+)
+
+dnl If our libc doesn't provide fts, then test for libfts
+if test "$libc_has_fts" = "false" ; then
+ AC_MSG_WARN("libc does not have fts")
+ AC_CHECK_LIB([fts], [fts_close], [have_fts="true"], [have_fts="false"])
+
+ if test "$have_fts" = "false"; then
+ AC_MSG_ERROR("no libfts found")
+ else
+ fts_LDADD="-lfts"
+ fi
+else
+ fts_LDADD=""
+fi
+AC_SUBST([fts_LDADD])
+
+dnl Check if we have obstack available from our libc
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <obstack.h>],
+ [_obstack_begin(0, 0, 0, NULL, NULL); return 0;]
+ )],
+ [libc_has_obstack="true"],
+ [libc_has_obstack="false"]
+)
+
+dnl If our libc doesn't provide obstack, then test for libobstack
+if test "$libc_has_obstack" = "false" ; then
+ AC_MSG_WARN("libc does not have obstack")
+ AC_CHECK_LIB([obstack], [_obstack_begin], [have_obstack="true"], [have_obstack="false"])
+
+ if test "$have_obstack" = "false"; then
+ AC_MSG_ERROR("no libobstack found")
+ else
+ obstack_LDADD="-lobstack"
+ fi
+else
+ obstack_LDADD=""
+fi
+AC_SUBST([obstack_LDADD])
+
dnl The directories with content.
dnl Documentation.
--- a/libdw/Makefile.am
+++ b/libdw/Makefile.am
@@ -108,7 +108,7 @@ am_libdw_pic_a_OBJECTS = $(libdw_a_SOURC
libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \
../libdwfl/libdwfl_pic.a ../libebl/libebl.a
libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
-libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS)
+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(zip_LIBS)
libdw_so_SOURCES =
libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
# The rpath is necessary for libebl because its $ORIGIN use will
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -68,8 +68,8 @@ ar_no_Wstack_usage = yes
unstrip_no_Wstack_usage = yes
readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
-nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl \
- $(demanglelib)
+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) \
+ $(obstack_LDADD) -ldl $(demanglelib)
size_LDADD = $(libelf) $(libeu) $(argp_LDADD)
strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl
elflint_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
@@ -77,9 +77,9 @@ findtextrel_LDADD = $(libdw) $(libelf) $
addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib)
elfcmp_LDADD = $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
objdump_LDADD = $(libasm) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
-ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
+ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
strings_LDADD = $(libelf) $(libeu) $(argp_LDADD)
-ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
+ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl
stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) -ldl $(demanglelib)
elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)