summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch')
-rw-r--r--meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch118
1 files changed, 118 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch b/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
new file mode 100644
index 0000000000..e78514b814
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
@@ -0,0 +1,118 @@
+From b3952bd5e28f2a4d86c7377de239db8fa7237e14 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 31 Oct 2020 22:14:05 -0700
+Subject: [PATCH] tools: Add error.h for non-glibc case
+
+error is glibc specific API, so this patch will mostly not accepted
+upstream given that elfutils has been closely tied to glibc
+
+Upstream-Status: Inappropriate [workaround for musl]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ tools/debugedit.c | 6 +++++-
+ tools/elfdeps.c | 6 +++++-
+ tools/error.h | 27 +++++++++++++++++++++++++++
+ tools/sepdebugcrcfix.c | 6 +++++-
+ 4 files changed, 42 insertions(+), 3 deletions(-)
+ create mode 100644 tools/error.h
+
+diff --git a/tools/debugedit.c b/tools/debugedit.c
+index 9f8dcd0fb..852f46073 100644
+--- a/tools/debugedit.c
++++ b/tools/debugedit.c
+@@ -26,7 +26,6 @@
+ #include <byteswap.h>
+ #include <endian.h>
+ #include <errno.h>
+-#include <error.h>
+ #include <limits.h>
+ #include <string.h>
+ #include <stdlib.h>
+@@ -40,6 +39,11 @@
+
+ #include <gelf.h>
+ #include <dwarf.h>
++#ifdef __GLIBC__
++#include <error.h>
++#else
++#include "error.h"
++#endif
+
+
+ /* Unfortunately strtab manipulation functions were only officially added
+diff --git a/tools/elfdeps.c b/tools/elfdeps.c
+index 6d9094874..f69e60997 100644
+--- a/tools/elfdeps.c
++++ b/tools/elfdeps.c
+@@ -5,10 +5,14 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <fcntl.h>
+-#include <error.h>
+ #include <errno.h>
+ #include <popt.h>
+ #include <gelf.h>
++#ifdef __GLIBC__
++#include <error.h>
++#else
++#include "error.h"
++#endif
+
+ #include <rpm/rpmstring.h>
+ #include <rpm/argv.h>
+diff --git a/tools/error.h b/tools/error.h
+new file mode 100644
+index 000000000..ef06827a0
+--- /dev/null
++++ b/tools/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/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
+index fba460014..2be9c1fd8 100644
+--- a/tools/sepdebugcrcfix.c
++++ b/tools/sepdebugcrcfix.c
+@@ -29,9 +29,13 @@
+ #include <endian.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <error.h>
+ #include <libelf.h>
+ #include <gelf.h>
++#ifdef __GLIBC__
++#include <error.h>
++#else
++#include "error.h"
++#endif
+
+ #ifndef _
+ #define _(x) x
+--
+2.29.2
+