commit:     fd5a3a9743f6feb7f921433e187621e228f79927
Author:     Jory Pratt <anarchy <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 13 05:01:35 2019 +0000
Commit:     Jory Pratt <anarchy <AT> gentoo <DOT> org>
CommitDate: Fri Dec 13 05:01:35 2019 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=fd5a3a97

dev-libs/elfutils: Version bump 0.178

Package-Manager: Portage-2.3.81, Repoman-2.3.20
Signed-off-by: Jory Pratt <anarchy <AT> gentoo.org>

 dev-libs/elfutils/Manifest                         |   1 +
 dev-libs/elfutils/elfutils-0.178.ebuild            |  94 ++++++++++++++++++
 .../elfutils/files/0.178/fix-aarch64_fregs.patch   |  48 +++++++++
 .../elfutils/files/0.178/musl-asm_ptrace_h.patch   |  26 +++++
 dev-libs/elfutils/files/0.178/musl-cdefs.patch     |  45 +++++++++
 dev-libs/elfutils/files/0.178/musl-error_h.patch   |  81 ++++++++++++++++
 .../elfutils/files/0.178/musl-fts-obstack.patch    | 107 +++++++++++++++++++++
 dev-libs/elfutils/files/0.178/musl-macros.patch    |  73 ++++++++++++++
 dev-libs/elfutils/files/0.178/musl-qsort_r.patch   |  79 +++++++++++++++
 .../elfutils/files/0.178/musl-strerror_r.patch     |  33 +++++++
 dev-libs/elfutils/files/0.178/musl-strndupa.patch  |  32 ++++++
 dev-libs/elfutils/metadata.xml                     |   4 +
 12 files changed, 623 insertions(+)

diff --git a/dev-libs/elfutils/Manifest b/dev-libs/elfutils/Manifest
index 1e9d789..0e02e5c 100644
--- a/dev-libs/elfutils/Manifest
+++ b/dev-libs/elfutils/Manifest
@@ -1,2 +1,3 @@
 DIST elfutils-0.176.tar.bz2 8646075 BLAKE2B 
7f23d59b7f5d74946fea928a7fada7764c1f96a5eefefc4a3a382090eb7cad07c80419218300d853ccbef8f4e2288eb443ff06b3e64bf4511d9fa7aa84f5b794
 SHA512 
7f032913be363a43229ded85d495dcf7542b3c85974aaaba0d984228dc9ac1721da3dc388d3fa02325a80940161db7e9ad2c9e4521a424ad8a7d050c0902915b
 DIST elfutils-0.177.tar.bz2 8852413 BLAKE2B 
03f432342651f7646d73b7847325bd14b722ce34d85df01b1ad072b916af9b9da2d0d119cd24e952073bd584ec76b027ba9b6c7d45fb057372b3e700b1f5741a
 SHA512 
2779987463a22ed220759e25a09c9a1eb84c0f36db37675136e59aa55c7f8f90b7a7d34ffc4e6a4291d7fa73692a1bd1a303a74270b11d1623b4f9868d19498f
+DIST elfutils-0.178.tar.bz2 9007557 BLAKE2B 
241b611dbfac37f35a670fbe80096c21b870e4b26fcddc8af26fba0373c9cd72eae42aabae2803b7b16c3bf649aeda036b1ea1b40952b43c4021ed23fcb51e80
 SHA512 
356656ad0db8f6877b461de1a11280de16a9cc5d8dde4381a938a212e828e32755135e5e3171d311c4c9297b728fbd98123048e2e8fbf7fe7de68976a2daabe5

diff --git a/dev-libs/elfutils/elfutils-0.178.ebuild 
b/dev-libs/elfutils/elfutils-0.178.ebuild
new file mode 100644
index 0000000..e00d6b2
--- /dev/null
+++ b/dev-libs/elfutils/elfutils-0.178.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic multilib-minimal
+
+DESCRIPTION="Libraries/utilities to handle ELF objects (drop in replacement 
for libelf)"
+HOMEPAGE="http://elfutils.org/";
+SRC_URI="https://sourceware.org/elfutils/ftp/${PV}/${P}.tar.bz2";
+
+LICENSE="|| ( GPL-2+ LGPL-3+ ) utils? ( GPL-3+ )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="bzip2 lzma nls static-libs test +threads +utils valgrind"
+
+RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+       bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
+       lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
+       elibc_musl? (
+               sys-libs/argp-standalone
+               sys-libs/fts-standalone
+               sys-libs/obstack-standalone
+       )
+       !dev-libs/libelf"
+DEPEND="${RDEPEND}
+       valgrind? ( dev-util/valgrind )
+"
+BDEPEND="nls? ( sys-devel/gettext )
+       >=sys-devel/flex-2.5.4a
+       sys-devel/m4
+       elibc_musl? ( dev-libs/libbsd )"
+
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.118-PaX-support.patch
+       "${FILESDIR}"/${PN}-0.175-disable-biarch-test-PR24158.patch
+       "${FILESDIR}"/${PN}-0.177-disable-large.patch
+       "${FILESDIR}"/${PV}/fix-aarch64_fregs.patch
+       "${FILESDIR}"/${PV}/musl-asm_ptrace_h.patch
+       "${FILESDIR}"/${PV}/musl-cdefs.patch
+       "${FILESDIR}"/${PV}/musl-macros.patch
+       "${FILESDIR}"/${PV}/musl-fts-obstack.patch
+       "${FILESDIR}"/${PV}/musl-qsort_r.patch
+       "${FILESDIR}"/${PV}/musl-strerror_r.patch
+       "${FILESDIR}"/${PV}/musl-strndupa.patch
+       "${FILESDIR}"/${PV}/musl-error_h.patch
+)
+
+src_prepare() {
+       default
+
+       eautoreconf
+
+       if ! use static-libs; then
+               sed -i -e '/^lib_LIBRARIES/s:=.*:=:' -e '/^%.os/s:%.o$::' 
lib{asm,dw,elf}/Makefile.in || die
+       fi
+       # https://sourceware.org/PR23914
+       sed -i 's:-Werror::' */Makefile.in || die
+}
+
+src_configure() {
+       use test && append-flags -g #407135
+       multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+       ECONF_SOURCE="${S}" econf \
+               $(use_enable nls) \
+               $(use_enable threads thread-safety) \
+               $(use_enable valgrind) \
+               --disable-debuginfod \
+               --program-prefix="eu-" \
+               --with-zlib \
+               $(use_with bzip2 bzlib) \
+               $(use_with lzma)
+}
+
+multilib_src_test() {
+       env     
LD_LIBRARY_PATH="${BUILD_DIR}/libelf:${BUILD_DIR}/libebl:${BUILD_DIR}/libdw:${BUILD_DIR}/libasm"
 \
+               LC_ALL="C" \
+               emake check VERBOSE=1
+}
+
+multilib_src_install_all() {
+       einstalldocs
+       dodoc NOTES
+       # These build quick, and are needed for most tests, so don't
+       # disable their building when the USE flag is disabled.
+       if ! use utils; then
+               rm -rf "${ED}"/usr/bin || die
+       fi
+}

diff --git a/dev-libs/elfutils/files/0.178/fix-aarch64_fregs.patch 
b/dev-libs/elfutils/files/0.178/fix-aarch64_fregs.patch
new file mode 100644
index 0000000..004bafe
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/fix-aarch64_fregs.patch
@@ -0,0 +1,48 @@
+From dd394676bb8b8e7e4a584a58664ea20472b948e5 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 20:44:47 -0600
+Subject: [PATCH 1/9] Fix aarch64 support for dwarf_fregs
+
+---
+ backends/aarch64_initreg.c | 4 ++--
+ backends/arm_initreg.c     | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/backends/aarch64_initreg.c b/backends/aarch64_initreg.c
+index daf6f37..6445276 100644
+--- a/backends/aarch64_initreg.c
++++ b/backends/aarch64_initreg.c
+@@ -33,7 +33,7 @@
+ #include "system.h"
+ #include <assert.h>
+ #if defined(__aarch64__) && defined(__linux__)
+-# include <linux/uio.h>
++# include <sys/uio.h>
+ # include <sys/user.h>
+ # include <sys/ptrace.h>
+ /* Deal with old glibc defining user_pt_regs instead of user_regs_struct.  */
+@@ -82,7 +82,7 @@ aarch64_set_initial_registers_tid (pid_t tid __attribute__ 
((unused)),
+ 
+   Dwarf_Word dwarf_fregs[32];
+   for (int r = 0; r < 32; r++)
+-    dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF;
++    dwarf_fregs[r] = (unsigned int)fregs.vregs[r] & 0xFFFFFFFF;
+ 
+   if (! setfunc (64, 32, dwarf_fregs, arg))
+     return false;
+diff --git a/backends/arm_initreg.c b/backends/arm_initreg.c
+index efcabaf..062bb9e 100644
+--- a/backends/arm_initreg.c
++++ b/backends/arm_initreg.c
+@@ -38,7 +38,7 @@
+ #endif
+ 
+ #ifdef __aarch64__
+-# include <linux/uio.h>
++# include <sys/uio.h>
+ # include <sys/user.h>
+ # include <sys/ptrace.h>
+ /* Deal with old glibc defining user_pt_regs instead of user_regs_struct.  */
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-asm_ptrace_h.patch 
b/dev-libs/elfutils/files/0.178/musl-asm_ptrace_h.patch
new file mode 100644
index 0000000..7731f63
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-asm_ptrace_h.patch
@@ -0,0 +1,26 @@
+From fa623f8330c8e7264eba98d0e8199ef4aa219d2a Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:34:57 -0600
+Subject: [PATCH 2/9] include asm.h for non glibc systems on ppc
+
+---
+ backends/ppc_initreg.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
+index 0e0d359..3dbcc2d 100644
+--- a/backends/ppc_initreg.c
++++ b/backends/ppc_initreg.c
+@@ -32,6 +32,9 @@
+ 
+ #include <stdlib.h>
+ #if defined(__powerpc__) && defined(__linux__)
++#if !defined(__GLIBC__)
++# include <asm/ptrace.h>
++#endif
+ # include <sys/ptrace.h>
+ # include <sys/user.h>
+ #endif
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-cdefs.patch 
b/dev-libs/elfutils/files/0.178/musl-cdefs.patch
new file mode 100644
index 0000000..7a73f42
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-cdefs.patch
@@ -0,0 +1,45 @@
+From 4e124b57e40c15c9ccb19c6a219816cfc8d2a167 Mon Sep 17 00:00:00 2001
+From: Jory Pratt <[email protected]>
+Date: Thu, 12 Dec 2019 22:38:30 -0600
+Subject: [PATCH 3/3] Fix cdefs.h include for musl
+
+---
+ lib/fixedsizehash.h | 5 ++++-
+ libelf/elf.h        | 4 ++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h
+index dac2a5f..910f3ac 100644
+--- a/lib/fixedsizehash.h
++++ b/lib/fixedsizehash.h
+@@ -30,8 +30,11 @@
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
++#if !defined(__GLIBC__)
++#include <bsd/sys/cdefs.h>
++#else
+ #include <sys/cdefs.h>
+-
++#endif
+ #include <system.h>
+ 
+ #ifdef __CONCAT
+diff --git a/libelf/elf.h b/libelf/elf.h
+index 7adc752..8cfc337 100644
+--- a/libelf/elf.h
++++ b/libelf/elf.h
+@@ -21,6 +21,10 @@
+ 
+ #include <features.h>
+ 
++#if !defined(__GLIBC__)
++#include <bsd/sys/cdefs.h>
++#endif
++
+ __BEGIN_DECLS
+ 
+ /* Standard ELF types.  */
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-error_h.patch 
b/dev-libs/elfutils/files/0.178/musl-error_h.patch
new file mode 100644
index 0000000..949e600
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-error_h.patch
@@ -0,0 +1,81 @@
+From 9cb8fad40329cc6445233af0b6ac3f2adde19c65 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 22:00:47 -0600
+Subject: [PATCH 9/9] Add hacked up error header for non GLIBC machines
+
+---
+ lib/error.h | 27 +++++++++++++++++++++++++++
+ src/error.h | 27 +++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+)
+ create mode 100644 lib/error.h
+ create mode 100644 src/error.h
+
+diff --git a/lib/error.h b/lib/error.h
+new file mode 100644
+index 0000000..ef06827
+--- /dev/null
++++ b/lib/error.h
+@@ -0,0 +1,27 @@
++#ifndef _ERROR_H_
++#define _ERROR_H_
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++static unsigned int error_message_count = 0;
++
++static inline void error(int status, int errnum, const char* format, ...)
++{
++      va_list ap;
++      fprintf(stderr, "%s: ", program_invocation_name);
++      va_start(ap, format);
++      vfprintf(stderr, format, ap);
++      va_end(ap);
++      if (errnum)
++              fprintf(stderr, ": %s", strerror(errnum));
++      fprintf(stderr, "\n");
++      error_message_count++;
++      if (status)
++              exit(status);
++}
++
++#endif        /* _ERROR_H_ */
+diff --git a/src/error.h b/src/error.h
+new file mode 100644
+index 0000000..ef06827
+--- /dev/null
++++ b/src/error.h
+@@ -0,0 +1,27 @@
++#ifndef _ERROR_H_
++#define _ERROR_H_
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <errno.h>
++
++static unsigned int error_message_count = 0;
++
++static inline void error(int status, int errnum, const char* format, ...)
++{
++      va_list ap;
++      fprintf(stderr, "%s: ", program_invocation_name);
++      va_start(ap, format);
++      vfprintf(stderr, format, ap);
++      va_end(ap);
++      if (errnum)
++              fprintf(stderr, ": %s", strerror(errnum));
++      fprintf(stderr, "\n");
++      error_message_count++;
++      if (status)
++              exit(status);
++}
++
++#endif        /* _ERROR_H_ */
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-fts-obstack.patch 
b/dev-libs/elfutils/files/0.178/musl-fts-obstack.patch
new file mode 100644
index 0000000..2484164
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-fts-obstack.patch
@@ -0,0 +1,107 @@
+From e9c4f15652e5c89c51d61007c296daf2cebca014 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:53:18 -0600
+Subject: [PATCH 4/9] Check libc for fts and obstack or use standalone
+
+---
+ configure.ac      | 56 +++++++++++++++++++++++++++++++++++++++++++++++
+ libdw/Makefile.am |  2 +-
+ src/Makefile.am   |  2 +-
+ 3 files changed, 58 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5a2dc37..7a17a9d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -529,6 +529,62 @@ 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 The directories with content.
+ 
+ dnl Documentation.
+diff --git a/libdw/Makefile.am b/libdw/Makefile.am
+index 33b5838..af30825 100644
+--- a/libdw/Makefile.am
++++ b/libdw/Makefile.am
+@@ -109,7 +109,7 @@ libdw_so_LIBS = ../libebl/libebl_pic.a 
../backends/libebl_backends_pic.a \
+               ../libcpu/libcpu_pic.a libdw_pic.a ../libdwelf/libdwelf_pic.a \
+               ../libdwfl/libdwfl_pic.a
+ libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
+-libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) -pthread
++libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) 
$(obstack_LDADD) $(zip_LIBS) -pthread
+ libdw_so_SOURCES =
+ libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
+       $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e462e7d..d0cab5a 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -46,7 +46,7 @@ libelf = ../libelf/libelf.a -lz
+ else
+ libasm = ../libasm/libasm.so
+ libdw = ../libdw/libdw.so
+-libelf = ../libelf/libelf.so
++libelf = ../libelf/libelf.so $(fts_LDADD) $(obstack_LDADD)
+ endif
+ libebl = ../libebl/libebl.a ../backends/libebl_backends.a ../libcpu/libcpu.a
+ libeu = ../lib/libeu.a
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-macros.patch 
b/dev-libs/elfutils/files/0.178/musl-macros.patch
new file mode 100644
index 0000000..f549b69
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-macros.patch
@@ -0,0 +1,73 @@
+From f49c96b011df0bd03eb45f72bdb102d580fab964 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:54:37 -0600
+Subject: [PATCH 5/9] Add macros for musl support
+
+---
+ src/arlib.h       | 10 ++++++++++
+ src/elfcompress.c |  8 ++++++++
+ src/strip.c       |  8 ++++++++
+ 3 files changed, 26 insertions(+)
+
+diff --git a/src/arlib.h b/src/arlib.h
+index e117166..c66a5c9 100644
+--- a/src/arlib.h
++++ b/src/arlib.h
+@@ -29,6 +29,16 @@
+ #include <stdint.h>
+ #include <sys/types.h>
+ 
++#if !defined(ACCESSPERMS)
++# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
++#endif
++#if !defined(ALLPERMS)
++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 
*/
++#endif
++#if !defined(DEFFILEMODE)
++# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 
0666*/
++#endif
++
+ 
+ /* State of -D/-U flags.  */
+ extern bool arlib_deterministic_output;
+diff --git a/src/elfcompress.c b/src/elfcompress.c
+index 6ba6af4..f7d032b 100644
+--- a/src/elfcompress.c
++++ b/src/elfcompress.c
+@@ -37,6 +37,14 @@
+ #include "libeu.h"
+ #include "printversion.h"
+ 
++#if !defined(FNM_EXTMATCH)
++# define FNM_EXTMATCH 0
++#endif
++
++#if !defined(ALLPERMS)
++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 
*/
++#endif
++
+ /* Name and version of program.  */
+ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+ 
+diff --git a/src/strip.c b/src/strip.c
+index 48792a7..d2f0c60 100644
+--- a/src/strip.c
++++ b/src/strip.c
+@@ -46,6 +46,14 @@
+ #include <system.h>
+ #include <printversion.h>
+ 
++#if !defined(FNM_EXTMATCH)
++# define FNM_EXTMATCH 0
++#endif
++
++#if !defined(ACCESSPERMS)
++#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
++#endif
++
+ typedef uint8_t GElf_Byte;
+ 
+ /* Name and version of program.  */
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-qsort_r.patch 
b/dev-libs/elfutils/files/0.178/musl-qsort_r.patch
new file mode 100644
index 0000000..3e45828
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-qsort_r.patch
@@ -0,0 +1,79 @@
+From 2fe70c56695e170ae7b859c154a83532de2dee22 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:55:34 -0600
+Subject: [PATCH 6/9] musl qsort_r
+
+---
+ src/readelf.c | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/src/readelf.c b/src/readelf.c
+index cbb519d..dea513b 100644
+--- a/src/readelf.c
++++ b/src/readelf.c
+@@ -4829,10 +4829,11 @@ listptr_base (struct listptr *p)
+   return cudie_base (&cu);
+ }
+ 
++static const char *listptr_name;
++
+ static int
+-compare_listptr (const void *a, const void *b, void *arg)
++compare_listptr (const void *a, const void *b)
+ {
+-  const char *name = arg;
+   struct listptr *p1 = (void *) a;
+   struct listptr *p2 = (void *) b;
+ 
+@@ -4848,21 +4849,21 @@ compare_listptr (const void *a, const void *b, void 
*arg)
+         p1->warned = p2->warned = true;
+         error (0, 0,
+                gettext ("%s %#" PRIx64 " used with different address sizes"),
+-               name, (uint64_t) p1->offset);
++               listptr_name, (uint64_t) p1->offset);
+       }
+       if (p1->dwarf64 != p2->dwarf64)
+       {
+         p1->warned = p2->warned = true;
+         error (0, 0,
+                gettext ("%s %#" PRIx64 " used with different offset sizes"),
+-               name, (uint64_t) p1->offset);
++               listptr_name, (uint64_t) p1->offset);
+       }
+       if (listptr_base (p1) != listptr_base (p2))
+       {
+         p1->warned = p2->warned = true;
+         error (0, 0,
+                gettext ("%s %#" PRIx64 " used with different base addresses"),
+-               name, (uint64_t) p1->offset);
++               listptr_name, (uint64_t) p1->offset);
+       }
+       if (p1->attr != p2 ->attr)
+       {
+@@ -4870,7 +4871,7 @@ compare_listptr (const void *a, const void *b, void *arg)
+         error (0, 0,
+                gettext ("%s %#" PRIx64
+                         " used with different attribute %s and %s"),
+-               name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr),
++               listptr_name, (uint64_t) p1->offset, dwarf_attr_name 
(p2->attr),
+                dwarf_attr_name (p2->attr));
+       }
+     }
+@@ -4941,9 +4942,11 @@ notice_listptr (enum section_e section, struct 
listptr_table *table,
+ static void
+ sort_listptr (struct listptr_table *table, const char *name)
+ {
+-  if (table->n > 0)
+-    qsort_r (table->table, table->n, sizeof table->table[0],
+-           &compare_listptr, (void *) name);
++  if (table->n > 0) {
++    listptr_name = name;
++    qsort (table->table, table->n, sizeof table->table[0],
++           &compare_listptr);
++  }
+ }
+ 
+ static bool
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-strerror_r.patch 
b/dev-libs/elfutils/files/0.178/musl-strerror_r.patch
new file mode 100644
index 0000000..f6ca800
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-strerror_r.patch
@@ -0,0 +1,33 @@
+From 00bd0b5e75bbed231aa743502df96e0641da86fd Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:58:10 -0600
+Subject: [PATCH 7/9] musl strerror_r
+
+---
+ libdwfl/dwfl_error.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
+index 7bcf61c..ff25ebb 100644
+--- a/libdwfl/dwfl_error.c
++++ b/libdwfl/dwfl_error.c
+@@ -154,7 +154,16 @@ dwfl_errmsg (int error)
+   switch (error &~ 0xffff)
+     {
+     case OTHER_ERROR (ERRNO):
++#if defined(__GLIBC__)
+       return strerror_r (error & 0xffff, "bad", 0);
++#else
++      {
++        static __thread char buf[128] = "";
++        if (0 == strerror_r(error & 0xffff, buf, sizeof(buf)))
++          return buf;
++      }
++      return "strerror_r() failed";
++#endif
+     case OTHER_ERROR (LIBELF):
+       return elf_errmsg (error & 0xffff);
+     case OTHER_ERROR (LIBDW):
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/files/0.178/musl-strndupa.patch 
b/dev-libs/elfutils/files/0.178/musl-strndupa.patch
new file mode 100644
index 0000000..5acd7e4
--- /dev/null
+++ b/dev-libs/elfutils/files/0.178/musl-strndupa.patch
@@ -0,0 +1,32 @@
+From 411f7a1d30f03cb64e4716977e3504e25af8ce90 Mon Sep 17 00:00:00 2001
+From: 
+Date: Thu, 12 Dec 2019 21:58:31 -0600
+Subject: [PATCH 8/9] musl strndupa
+
+---
+ src/unstrip.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/unstrip.c b/src/unstrip.c
+index 9b8c09a..afce497 100644
+--- a/src/unstrip.c
++++ b/src/unstrip.c
+@@ -56,6 +56,15 @@
+ # define _(str) gettext (str)
+ #endif
+ 
++#ifndef strndupa
++#define strndupa(s, n) \
++       (__extension__ ({const char *__in = (s);                    \
++                        size_t __len = strnlen (__in, (n)) + 1;    \
++                        char *__out = (char *) alloca (__len);     \
++                        __out[__len-1] = '\0';                     \
++                        (char *) memcpy (__out, __in, __len-1);}))
++#endif
++
+ /* Name and version of program.  */
+ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+ 
+-- 
+2.24.1
+

diff --git a/dev-libs/elfutils/metadata.xml b/dev-libs/elfutils/metadata.xml
index 14c09d8..10d87fa 100644
--- a/dev-libs/elfutils/metadata.xml
+++ b/dev-libs/elfutils/metadata.xml
@@ -9,5 +9,9 @@
                <flag name="lzma">Support automatic decompression of 
LZMA-compressed files and kernel images</flag>
                <flag name="threads">Build the libraries with thread safe 
support</flag>
                <flag name="utils">Install command-line utilities (all the eu-* 
programs)</flag>
+               <flag name="valgrind">Add support for memory debugging using 
<pkg>dev-util/valgrind</pkg></flag>
        </use>
+       <upstream>
+               <remote-id 
type="cpe">cpe:/a:elfutils_project:elfutils</remote-id>
+       </upstream>
 </pkgmetadata>

Reply via email to