From 2f94d488bf3daaa6a8548ee77120fc2506a9bbe3 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 23 Aug 2019 10:19:48 +0800
Subject: [PATCH] musl-utils

Provide missing defines which otherwise are available on glibc system headers

Alter the error API to match posix version
use qsort instead of qsort_r which is glibc specific API

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>

---
 src/arlib.h       | 6 ++++++
 src/elfcompress.c | 7 +++++++
 src/strip.c       | 7 +++++++
 src/unstrip.c     | 9 +++++++++
 4 files changed, 29 insertions(+)

diff --git a/src/arlib.h b/src/arlib.h
index e117166..8326f6c 100644
--- a/src/arlib.h
+++ b/src/arlib.h
@@ -29,6 +29,12 @@
 #include <stdint.h>
 #include <sys/types.h>
 
+#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 2c6d91b..608646e 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -37,6 +37,13 @@
 #include "libeu.h"
 #include "printversion.h"
 
+#if !defined(ALLPERMS)
+# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) /* 07777 */
+#endif
+#if !defined(FNM_EXTMATCH)
+# define FNM_EXTMATCH (0)
+#endif
+
 /* Name and version of program.  */
 ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
diff --git a/src/strip.c b/src/strip.c
index 70fc8c0..d035d9e 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -46,6 +46,13 @@
 #include <system.h>
 #include <printversion.h>
 
+#if !defined(ACCESSPERMS)
+# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
+#endif
+#if !defined(FNM_EXTMATCH)
+# define FNM_EXTMATCH (0)
+#endif
+
 typedef uint8_t GElf_Byte;
 
 /* Name and version of program.  */
diff --git a/src/unstrip.c b/src/unstrip.c
index e488e81..0e44456 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -52,6 +52,15 @@
 #include "libeu.h"
 #include "printversion.h"
 
+#ifndef strndupa
+#define strndupa(s, n) \
+       ({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;
 
