158 lines
5.2 KiB
Diff
158 lines
5.2 KiB
Diff
From 1d2de32e97bf5569cc33ee9a90c873e1bbd2b1e6 Mon Sep 17 00:00:00 2001
|
|
From: q66 <daniel@octaforge.org>
|
|
Date: Sun, 6 Sep 2020 18:21:37 +0200
|
|
Subject: [PATCH] fix build on musl
|
|
|
|
---
|
|
.../sysprof-capture-cursor.c | 1 +
|
|
.../sysprof-capture-reader.c | 1 +
|
|
src/libsysprof-capture/sysprof-capture-util.c | 1 +
|
|
.../sysprof-capture-writer-cat.c | 1 +
|
|
src/libsysprof-capture/sysprof-collector.c | 1 +
|
|
src/libsysprof-capture/sysprof-compat.h | 28 +++++++++++++++++++
|
|
src/libsysprof-capture/sysprof-platform.c | 1 +
|
|
7 files changed, 34 insertions(+)
|
|
create mode 100644 src/libsysprof-capture/sysprof-compat.h
|
|
|
|
diff --git src/libsysprof-capture/sysprof-capture-cursor.c src/libsysprof-capture/sysprof-capture-cursor.c
|
|
index 24563f0..bb77a60 100644
|
|
--- a/src/libsysprof-capture/sysprof-capture-cursor.c
|
|
+++ b/src/libsysprof-capture/sysprof-capture-cursor.c
|
|
@@ -59,6 +59,7 @@
|
|
#include <assert.h>
|
|
#include <stdlib.h>
|
|
|
|
+#include "sysprof-compat.h"
|
|
#include "sysprof-capture-condition.h"
|
|
#include "sysprof-capture-cursor.h"
|
|
#include "sysprof-capture-reader.h"
|
|
diff --git src/libsysprof-capture/sysprof-capture-reader.c src/libsysprof-capture/sysprof-capture-reader.c
|
|
index 67c6b28..252d006 100644
|
|
--- a/src/libsysprof-capture/sysprof-capture-reader.c
|
|
+++ b/src/libsysprof-capture/sysprof-capture-reader.c
|
|
@@ -68,6 +68,7 @@
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
|
|
+#include "sysprof-compat.h"
|
|
#include "sysprof-capture-reader.h"
|
|
#include "sysprof-capture-util-private.h"
|
|
#include "sysprof-capture-writer.h"
|
|
diff --git src/libsysprof-capture/sysprof-capture-util.c src/libsysprof-capture/sysprof-capture-util.c
|
|
index 0bbea06..0e5f7e7 100644
|
|
--- a/src/libsysprof-capture/sysprof-capture-util.c
|
|
+++ b/src/libsysprof-capture/sysprof-capture-util.c
|
|
@@ -56,6 +56,7 @@
|
|
|
|
#include "config.h"
|
|
|
|
+#include <stdint.h>
|
|
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
diff --git src/libsysprof-capture/sysprof-capture-writer-cat.c src/libsysprof-capture/sysprof-capture-writer-cat.c
|
|
index 66171b9..9febbbb 100644
|
|
--- a/src/libsysprof-capture/sysprof-capture-writer-cat.c
|
|
+++ b/src/libsysprof-capture/sysprof-capture-writer-cat.c
|
|
@@ -63,6 +63,7 @@
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
|
|
+#include "sysprof-compat.h"
|
|
#include "sysprof-capture.h"
|
|
#include "sysprof-macros-internal.h"
|
|
|
|
diff --git src/libsysprof-capture/sysprof-collector.c src/libsysprof-capture/sysprof-collector.c
|
|
index 1d7a0d6..7af6c96 100644
|
|
--- a/src/libsysprof-capture/sysprof-collector.c
|
|
+++ b/src/libsysprof-capture/sysprof-collector.c
|
|
@@ -73,6 +73,7 @@
|
|
|
|
#include "mapped-ring-buffer.h"
|
|
|
|
+#include "sysprof-compat.h"
|
|
#include "sysprof-capture-util-private.h"
|
|
#include "sysprof-collector.h"
|
|
#include "sysprof-macros-internal.h"
|
|
diff --git src/libsysprof-capture/sysprof-compat.h src/libsysprof-capture/sysprof-compat.h
|
|
new file mode 100644
|
|
index 0000000..ae9bf10
|
|
--- /dev/null
|
|
+++ b/src/libsysprof-capture/sysprof-compat.h
|
|
@@ -0,0 +1,28 @@
|
|
+/* added by q66 @ void to fix build on musl */
|
|
+
|
|
+#pragma once
|
|
+
|
|
+#ifndef __GLIBC__
|
|
+
|
|
+#include <stdlib.h>
|
|
+#include <errno.h>
|
|
+
|
|
+/* from glibc */
|
|
+#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
|
|
+
|
|
+static inline void *reallocarray(void *p, size_t nmemb, size_t sz) {
|
|
+ if (sz && (nmemb > ((size_t)-1 / sz))) {
|
|
+ errno = ENOMEM;
|
|
+ return NULL;
|
|
+ }
|
|
+ return realloc(p, nmemb * sz);
|
|
+}
|
|
+
|
|
+#endif
|
|
diff --git src/libsysprof-capture/sysprof-platform.c src/libsysprof-capture/sysprof-platform.c
|
|
index a80ab89..05bd590 100644
|
|
--- a/src/libsysprof-capture/sysprof-platform.c
|
|
+++ b/src/libsysprof-capture/sysprof-platform.c
|
|
@@ -60,6 +60,7 @@
|
|
#include <sys/syscall.h>
|
|
#include <unistd.h>
|
|
|
|
+#include "sysprof-compat.h"
|
|
#include "sysprof-capture-util-private.h"
|
|
#include "sysprof-platform.h"
|
|
|
|
--
|
|
2.28.0
|
|
|
|
From here onward, blame sgn
|
|
Index: meson.build
|
|
===================================================================
|
|
--- a/meson.build
|
|
+++ b/meson.build
|
|
@@ -69,6 +69,7 @@ config_h.set('LOCALEDIR', 'PACKAGE_LOCAL
|
|
config_h.set('HAVE_EXECINFO_H', cc.has_header('execinfo.h'))
|
|
|
|
config_h.set('HAVE_STRLCPY', cc.has_function('strlcpy'))
|
|
+config_h.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray'))
|
|
|
|
if get_option('libunwind')
|
|
libunwind_dep = dependency('libunwind-generic', required: false)
|
|
Index: src/libsysprof-capture/sysprof-compat.h
|
|
===================================================================
|
|
--- a/src/libsysprof-capture/sysprof-compat.h 2021-02-05 23:39:58.352258624 +0100
|
|
+++ b/src/libsysprof-capture/sysprof-compat.h 2021-02-05 23:47:07.662841454 +0100
|
|
@@ -17,6 +17,7 @@
|
|
__result; }))
|
|
#endif
|
|
|
|
+#ifndef HAVE_REALLOCARRAY
|
|
static inline void *reallocarray(void *p, size_t nmemb, size_t sz) {
|
|
if (sz && (nmemb > ((size_t)-1 / sz))) {
|
|
errno = ENOMEM;
|
|
@@ -24,5 +25,5 @@
|
|
}
|
|
return realloc(p, nmemb * sz);
|
|
}
|
|
-
|
|
+#endif
|
|
#endif
|