From 0f4667f0bb4b000d74ade07e90bd690b7217a19d Mon Sep 17 00:00:00 2001
|
From: Hongxu Jia <hongxu.jia@windriver.com>
|
Date: Fri, 23 Aug 2019 10:18:47 +0800
|
Subject: [PATCH] musl-libs
|
|
Collection of fixes needed to compile libelf and other libraries
|
provided by elfutils for musl targets
|
|
error is glibc specific API, so this patch will mostly not accepted
|
upstream given that elfutils has been closely tied to glibc
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
Upstream-Status: Inappropriate [workaround for musl]
|
|
Rebase to 0.177
|
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
|
---
|
lib/error.h | 27 +++++++++++++++++++++++++++
|
lib/fixedsizehash.h | 1 -
|
lib/libeu.h | 1 +
|
libdwfl/linux-kernel-modules.c | 1 +
|
libelf/elf.h | 7 +++++++
|
5 files changed, 36 insertions(+), 1 deletion(-)
|
create mode 100644 lib/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/lib/fixedsizehash.h b/lib/fixedsizehash.h
|
index dac2a5f..43016fc 100644
|
--- a/lib/fixedsizehash.h
|
+++ b/lib/fixedsizehash.h
|
@@ -30,7 +30,6 @@
|
#include <errno.h>
|
#include <stdlib.h>
|
#include <string.h>
|
-#include <sys/cdefs.h>
|
|
#include <system.h>
|
|
diff --git a/lib/libeu.h b/lib/libeu.h
|
index ecb4d01..edc85e3 100644
|
--- a/lib/libeu.h
|
+++ b/lib/libeu.h
|
@@ -29,6 +29,7 @@
|
#ifndef LIBEU_H
|
#define LIBEU_H
|
|
+#include "system.h"
|
#include <stddef.h>
|
#include <stdint.h>
|
|
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
|
index c0f8dfa..aa78033 100644
|
--- a/libdwfl/linux-kernel-modules.c
|
+++ b/libdwfl/linux-kernel-modules.c
|
@@ -50,6 +50,7 @@
|
#include <sys/utsname.h>
|
#include <fcntl.h>
|
#include <unistd.h>
|
+#include "system.h"
|
|
/* If fts.h is included before config.h, its indirect inclusions may not
|
give us the right LFS aliases of these functions, so map them manually. */
|
diff --git a/libelf/elf.h b/libelf/elf.h
|
index 8e3e618..1353890 100644
|
--- a/libelf/elf.h
|
+++ b/libelf/elf.h
|
@@ -19,6 +19,10 @@
|
#ifndef _ELF_H
|
#define _ELF_H 1
|
|
+#ifdef __cplusplus
|
+extern "C" {
|
+#endif
|
+
|
/* Standard ELF types. */
|
|
#include <stdint.h>
|
@@ -4102,4 +4106,7 @@ enum
|
#define R_ARC_TLS_LE_S9 0x4a
|
#define R_ARC_TLS_LE_32 0x4b
|
|
+#ifdef __cplusplus
|
+}
|
+#endif
|
#endif /* elf.h */
|