add back linux 4.4 workarounds
authorAlexandros Couloumbis <alex@ozo.com>
Mon, 11 May 2020 11:44:12 +0000 (14:44 +0300)
committerAlexandros Couloumbis <alex@ozo.com>
Mon, 11 May 2020 11:44:12 +0000 (14:44 +0300)
package/devel/perf/Makefile
package/devel/perf/musl-compat.h [new file with mode: 0644]
package/devel/perf/musl-include/asm/errno.h [new file with mode: 0644]
package/devel/perf/musl-include/string.h [new file with mode: 0644]

index aa478a04310295a9be292f9376c4919110f063c4..6569109ea460042476f542c3b28da5fbfbb7333f 100644 (file)
@@ -59,6 +59,12 @@ MAKE_FLAGS = \
        O=$(PKG_BUILD_DIR) \
        prefix=/usr
 
+ifdef CONFIG_LINUX_4_4
+ifdef CONFIG_USE_MUSL
+ MAKE_FLAGS += EXTRA_CFLAGS="-I$(CURDIR)/musl-include -include $(CURDIR)/musl-compat.h -D__UCLIBC__"
+endif
+endif
+
 define Build/Compile
        +$(MAKE_FLAGS) $(MAKE) $(PKG_JOBS) \
                --no-print-directory \
diff --git a/package/devel/perf/musl-compat.h b/package/devel/perf/musl-compat.h
new file mode 100644 (file)
index 0000000..83aa00a
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef __PERF_MUSL_COMPAT_H
+#define __PERF_MUSL_COMPAT_H
+
+#ifndef __ASSEMBLER__
+
+#include <sys/ioctl.h>
+#include <asm/unistd.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#undef _IOWR
+#undef _IOR
+#undef _IOW
+#undef _IOC
+#undef _IO
+
+#define _SC_LEVEL1_DCACHE_LINESIZE -1
+
+static inline long sysconf_wrap(int name)
+{
+       FILE *f;
+       int val;
+
+       switch (name) {
+       case _SC_LEVEL1_DCACHE_LINESIZE:
+               f = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r");
+               if (!f)
+                       return 0;
+
+               if (fscanf(f, "%d", &val) != 1)
+                       return 0;
+
+               fclose(f);
+               return val;
+       default:
+               return sysconf(name);
+       }
+}
+
+#define sysconf(_n) sysconf_wrap(_n)
+
+#endif
+#endif
diff --git a/package/devel/perf/musl-include/asm/errno.h b/package/devel/perf/musl-include/asm/errno.h
new file mode 100644 (file)
index 0000000..8c4b1be
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MUSL_COMPAT_ASM_ERRNO_H
+#define __MUSL_COMPAT_ASM_ERRNO_H
+
+/* Avoid including different versions of errno.h, the defines (incorrectly)
+ * cause a redefinition error on PowerPC */
+#include <errno.h>
+
+#endif
diff --git a/package/devel/perf/musl-include/string.h b/package/devel/perf/musl-include/string.h
new file mode 100644 (file)
index 0000000..65dc2f1
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __MUSL_COMPAT_STRING_H
+#define __MUSL_COMPAT_STRING_H
+
+#include_next <string.h>
+
+/* Change XSI compliant version into GNU extension hackery */
+static inline char *
+gnu_strerror_r(int err, char *buf, size_t buflen)
+{
+       if (strerror_r(err, buf, buflen))
+               return NULL;
+       return buf;
+}
+#ifdef _GNU_SOURCE
+#define strerror_r gnu_strerror_r
+#endif
+
+#endif