blob: 10cdac646c42d153005c835494f4943dd4577033 [file] [log] [blame]
Brad Bishop19323692019-04-05 15:28:33 -04001From 990d377a92f4bab04bf6820fc81b3dcb6cf5e31d Mon Sep 17 00:00:00 2001
Brad Bishopd7bf8c12018-02-25 22:55:05 -05002From: Khem Raj <raj.khem@gmail.com>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08003Date: Mon, 2 Jul 2018 09:52:23 +0800
Brad Bishopd7bf8c12018-02-25 22:55:05 -05004Subject: [PATCH] build: Provide alternatives for glibc assumptions helps
5 compiling it on musl
6
7Upstream-Status: Pending
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9
Brad Bishopa5c52ff2018-11-23 10:55:50 +130010Rebase to 0.175
Brad Bishopd7bf8c12018-02-25 22:55:05 -050011
12Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Brad Bishop19323692019-04-05 15:28:33 -040013
Brad Bishopd7bf8c12018-02-25 22:55:05 -050014---
15 Makefile.am | 2 +-
Brad Bishopd7bf8c12018-02-25 22:55:05 -050016 lib/fixedsizehash.h | 1 -
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080017 lib/system.h | 12 +++++++++++-
Brad Bishopd7bf8c12018-02-25 22:55:05 -050018 libdw/Makefile.am | 3 ++-
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080019 libdwfl/dwfl_build_id_find_elf.c | 1 +
Brad Bishopd7bf8c12018-02-25 22:55:05 -050020 libdwfl/dwfl_error.c | 4 +++-
21 libdwfl/dwfl_module_getdwarf.c | 1 +
Brad Bishopd7bf8c12018-02-25 22:55:05 -050022 libdwfl/libdwfl_crc32_file.c | 9 +++++++++
23 libdwfl/linux-kernel-modules.c | 1 +
Brad Bishopd7bf8c12018-02-25 22:55:05 -050024 libelf/elf.h | 8 ++++++--
25 libelf/libelf.h | 1 +
26 libelf/libelfP.h | 1 +
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080027 12 files changed, 37 insertions(+), 7 deletions(-)
Brad Bishopd7bf8c12018-02-25 22:55:05 -050028
29diff --git a/Makefile.am b/Makefile.am
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080030index 2ff444e..41f77df 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -050031--- a/Makefile.am
32+++ b/Makefile.am
33@@ -28,7 +28,7 @@ pkginclude_HEADERS = version.h
34
35 # Add doc back when we have some real content.
36 SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \
37- backends src po tests
38+ backends po tests
39
40 EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
41 COPYING COPYING-GPLV2 COPYING-LGPLV3
Brad Bishopd7bf8c12018-02-25 22:55:05 -050042diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080043index dac2a5f..43016fc 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -050044--- a/lib/fixedsizehash.h
45+++ b/lib/fixedsizehash.h
46@@ -30,7 +30,6 @@
47 #include <errno.h>
48 #include <stdlib.h>
49 #include <string.h>
50-#include <sys/cdefs.h>
51
52 #include <system.h>
53
54diff --git a/lib/system.h b/lib/system.h
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080055index 292082b..308a762 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -050056--- a/lib/system.h
57+++ b/lib/system.h
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080058@@ -30,7 +30,7 @@
59 #define LIB_SYSTEM_H 1
60
61 #include <errno.h>
62-#include <error.h>
63+#include <err.h>
64 #include <stddef.h>
65 #include <stdint.h>
66 #include <sys/param.h>
Brad Bishop393846f2019-05-20 12:24:11 -040067@@ -51,6 +51,8 @@
Brad Bishopd7bf8c12018-02-25 22:55:05 -050068 #else
69 # error "Unknown byte order"
70 #endif
Brad Bishopd7bf8c12018-02-25 22:55:05 -050071+
72+#define error(status, errno, ...) err(status, __VA_ARGS__)
73
74 #ifndef MAX
75 #define MAX(m, n) ((m) < (n) ? (n) : (m))
Brad Bishopd7bf8c12018-02-25 22:55:05 -050076diff --git a/libdw/Makefile.am b/libdw/Makefile.am
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080077index 7a3d532..7ac1241 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -050078--- a/libdw/Makefile.am
79+++ b/libdw/Makefile.am
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080080@@ -108,7 +108,8 @@ am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os)
Brad Bishopd7bf8c12018-02-25 22:55:05 -050081 libdw_so_LIBS = libdw_pic.a ../libdwelf/libdwelf_pic.a \
82 ../libdwfl/libdwfl_pic.a ../libebl/libebl.a
83 libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
84-libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS)
85+fts_LDADD = -lfts
86+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) $(fts_LDADD)
87 libdw_so_SOURCES =
88 libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
89 # The rpath is necessary for libebl because its $ORIGIN use will
Brad Bishopd7bf8c12018-02-25 22:55:05 -050090diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080091index cc6c3f6..b06ab59 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -050092--- a/libdwfl/dwfl_build_id_find_elf.c
93+++ b/libdwfl/dwfl_build_id_find_elf.c
94@@ -31,6 +31,7 @@
95 #endif
96
97 #include "libdwflP.h"
98+#include "system.h"
99 #include <inttypes.h>
100 #include <fcntl.h>
101 #include <unistd.h>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500102diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800103index 7bcf61c..c345797 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500104--- a/libdwfl/dwfl_error.c
105+++ b/libdwfl/dwfl_error.c
106@@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error)
107 const char *
108 dwfl_errmsg (int error)
109 {
110+ static __thread char s[64] = "";
111 if (error == 0 || error == -1)
112 {
113 int last_error = global_error;
114@@ -154,7 +155,8 @@ dwfl_errmsg (int error)
115 switch (error &~ 0xffff)
116 {
117 case OTHER_ERROR (ERRNO):
118- return strerror_r (error & 0xffff, "bad", 0);
119+ strerror_r (error & 0xffff, s, sizeof(s));
120+ return s;
121 case OTHER_ERROR (LIBELF):
122 return elf_errmsg (error & 0xffff);
123 case OTHER_ERROR (LIBDW):
124diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300125index 56e6105..f4a0649 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500126--- a/libdwfl/dwfl_module_getdwarf.c
127+++ b/libdwfl/dwfl_module_getdwarf.c
128@@ -35,6 +35,7 @@
129 #include <fcntl.h>
130 #include <string.h>
131 #include <unistd.h>
132+#include "system.h"
133 #include "../libdw/libdwP.h" /* DWARF_E_* values are here. */
134 #include "../libelf/libelfP.h"
135 #include "system.h"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500136diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300137index 360e4ee..b5aa397 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500138--- a/libdwfl/linux-kernel-modules.c
139+++ b/libdwfl/linux-kernel-modules.c
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300140@@ -41,6 +41,7 @@
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500141
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300142 #include "libelfP.h"
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500143 #include "libdwflP.h"
144+#include "system.h"
145 #include <inttypes.h>
146 #include <errno.h>
147 #include <stdio.h>
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500148diff --git a/libelf/elf.h b/libelf/elf.h
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800149index 5dc632b..14da1b7 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500150--- a/libelf/elf.h
151+++ b/libelf/elf.h
152@@ -21,7 +21,9 @@
153
154 #include <features.h>
155
156-__BEGIN_DECLS
157+#ifdef __cplusplus
158+extern "C" {
159+#endif
160
161 /* Standard ELF types. */
162
Brad Bishop1a4b7ee2018-12-16 17:11:34 -0800163@@ -3937,6 +3939,8 @@ enum
164 #define R_METAG_TLS_LE_HI16 60
165 #define R_METAG_TLS_LE_LO16 61
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500166
167-__END_DECLS
168+#ifdef __cplusplus
169+}
170+#endif
171
172 #endif /* elf.h */
173diff --git a/libelf/libelf.h b/libelf/libelf.h
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300174index 1ff11c9..c21e018 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500175--- a/libelf/libelf.h
176+++ b/libelf/libelf.h
177@@ -29,6 +29,7 @@
178 #ifndef _LIBELF_H
179 #define _LIBELF_H 1
180
181+#include <fcntl.h>
182 #include <stdint.h>
183 #include <sys/types.h>
184
185diff --git a/libelf/libelfP.h b/libelf/libelfP.h
Brad Bishopa5c52ff2018-11-23 10:55:50 +1300186index 9f3e8e9..10a347a 100644
Brad Bishopd7bf8c12018-02-25 22:55:05 -0500187--- a/libelf/libelfP.h
188+++ b/libelf/libelfP.h
189@@ -32,6 +32,7 @@
190
191 #include <ar.h>
192 #include <gelf.h>
193+#include <libelf.h>
194
195 #include <errno.h>
196 #include <stdbool.h>