summaryrefslogtreecommitdiff
path: root/repo/elfutils
diff options
context:
space:
mode:
Diffstat (limited to 'repo/elfutils')
-rw-r--r--repo/elfutils/elfutils.xibuild54
-rw-r--r--repo/elfutils/error.h27
-rw-r--r--repo/elfutils/fix-aarch64_fregs.patch14
-rw-r--r--repo/elfutils/fix-uninitialized.patch17
-rw-r--r--repo/elfutils/musl-asm-ptrace-h.patch10
-rw-r--r--repo/elfutils/musl-macros.patch87
-rw-r--r--repo/elfutils/musl-strndupa.patch18
7 files changed, 227 insertions, 0 deletions
diff --git a/repo/elfutils/elfutils.xibuild b/repo/elfutils/elfutils.xibuild
new file mode 100644
index 0000000..5f7eb38
--- /dev/null
+++ b/repo/elfutils/elfutils.xibuild
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+MAKEDEPS="bison flex zlib bzip2 xz argp-standalone libtool musl-obstack"
+DEPS="musl zlib"
+
+PKG_VER=0.186
+SOURCE=https://sourceware.org/elfutils/ftp/$PKG_VER/elfutils-$PKG_VER.tar.bz2
+ADDITIONAL="
+ error.h
+ fix-aarch64_fregs.patch
+ fix-uninitialized.patch
+ musl-macros.patch
+ musl-strndupa.patch
+ musl-asm-ptrace-h.patch
+"
+
+DESC="Utilities and DSOs to handle ELF files and DWARF data"
+
+prepare () {
+ apply_patches
+
+ cp error.h lib
+ cp error.h src
+
+ cat > lib/libintl.h <<-EOF
+ #ifndef LIBINTL_H
+ #define LIBINTL_H
+ #define _(x) (x)
+ #endif
+ EOF
+
+}
+
+build () {
+ CFLAGS="$CFLAGS -Wno-error -Wno-null-dereference" \
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-werror \
+ --program-prefix=eu- \
+ --enable-deterministic-archives \
+ --disable-nls \
+ --disable-libdebuginfod \
+ --disable-debuginfod
+ make
+}
+
+package() {
+ make DESTDIR=$PKG_DEST install
+ rm -r "$PKG_DEST"/usr/lib/libelf.so.*
+ rm -r "$PKG_DEST"/usr/include/libelf.h
+}
diff --git a/repo/elfutils/error.h b/repo/elfutils/error.h
new file mode 100644
index 0000000..ef06827
--- /dev/null
+++ b/repo/elfutils/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/repo/elfutils/fix-aarch64_fregs.patch b/repo/elfutils/fix-aarch64_fregs.patch
new file mode 100644
index 0000000..4007416
--- /dev/null
+++ b/repo/elfutils/fix-aarch64_fregs.patch
@@ -0,0 +1,14 @@
+It looks like fregs.vregs[] is an array of double?
+Casting to Dwarf_Word instead of & 0xFFFFFFF should do.
+
+--- a/backends/aarch64_initreg.c 2015-11-27 14:36:29.000000000 +0100
++++ b/backends/aarch64_initreg.c 2016-08-09 03:47:25.428560159 +0200
+@@ -82,7 +82,7 @@
+
+ Dwarf_Word dwarf_fregs[32];
+ for (int r = 0; r < 32; r++)
+- dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF;
++ dwarf_fregs[r] = (Dwarf_Word)fregs.vregs[r];
+
+ if (! setfunc (64, 32, dwarf_fregs, arg))
+ return false;
diff --git a/repo/elfutils/fix-uninitialized.patch b/repo/elfutils/fix-uninitialized.patch
new file mode 100644
index 0000000..31ecd9e
--- /dev/null
+++ b/repo/elfutils/fix-uninitialized.patch
@@ -0,0 +1,17 @@
+
+--- a/libcpu/i386_disasm.c 2015-08-21 14:22:37.000000000 +0200
++++ b/libcpu/i386_disasm.c 2015-11-20 06:30:59.250629957 +0100
+@@ -1,4 +1,4 @@
+-/* Disassembler for x86.
++/* Disassembler for x86.
+ Copyright (C) 2007, 2008, 2009, 2011 Red Hat, Inc.
+ This file is part of elfutils.
+ Written by Ulrich Drepper <drepper@redhat.com>, 2007.
+@@ -710,6 +710,7 @@
+
+ case 'm':
+ /* Mnemonic. */
++ str = mnebuf;
+
+ if (unlikely (instrtab[cnt].mnemonic == MNE_INVALID))
+ {
diff --git a/repo/elfutils/musl-asm-ptrace-h.patch b/repo/elfutils/musl-asm-ptrace-h.patch
new file mode 100644
index 0000000..fc14686
--- /dev/null
+++ b/repo/elfutils/musl-asm-ptrace-h.patch
@@ -0,0 +1,10 @@
+--- a/backends/ppc_initreg.c 2019-11-26 23:48:42.000000000 +0100
++++ b/backends/ppc_initreg.c 2019-12-08 16:57:58.334872602 +0100
+@@ -32,6 +32,7 @@
+
+ #include <stdlib.h>
+ #if defined(__powerpc__) && defined(__linux__)
++# include <asm/ptrace.h>
+ # include <sys/ptrace.h>
+ # include <sys/user.h>
+ #endif
diff --git a/repo/elfutils/musl-macros.patch b/repo/elfutils/musl-macros.patch
new file mode 100644
index 0000000..0d7ec41
--- /dev/null
+++ b/repo/elfutils/musl-macros.patch
@@ -0,0 +1,87 @@
+--- a/src/arlib.h 2015-08-21 14:22:37.000000000 +0200
++++ b/src/arlib.h 2015-11-20 08:02:55.153199611 +0100
+@@ -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;
+--- a/src/elfcompress.c.orig 2016-04-02 12:51:26.903848894 +0200
++++ b/src/elfcompress.c 2016-04-02 12:55:15.076996338 +0200
+@@ -35,6 +35,14 @@
+ #include <gelf.h>
+ #include "system.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. */
+ static void print_version (FILE *stream, struct argp_state *state);
+ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+diff --git a/lib/libeu.h b/lib/libeu.h
+index 69fe3d7..e5c99b8 100644
+--- a/lib/libeu.h
++++ b/lib/libeu.h
+@@ -31,6 +31,27 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
++#include <alloca.h>
++#include <string.h>
++
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++ (__extension__ \
++ ({ long int __result; \
++ do __result = (long int) (expression); \
++ while (__result == -1L && errno == EINTR); \
++ __result; }))
++#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
+
+ extern void *xmalloc (size_t) __attribute__ ((__malloc__));
+ extern void *xcalloc (size_t, size_t) __attribute__ ((__malloc__));
+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. */
diff --git a/repo/elfutils/musl-strndupa.patch b/repo/elfutils/musl-strndupa.patch
new file mode 100644
index 0000000..a520688
--- /dev/null
+++ b/repo/elfutils/musl-strndupa.patch
@@ -0,0 +1,18 @@
+--- a/src/unstrip.c.orig 2017-04-27 14:26:26.000000000 +0000
++++ b/src/unstrip.c 2017-05-05 15:51:33.515154220 +0000
+@@ -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;
+