diff --git a/package/devel/perf/musl-compat.h b/package/devel/perf/musl-compat.h
index ecfbec6a29144e26e2c53a6cff9beccb7cebfe42..d0fa7810fa8e95de825bae8ed63d00c1b9735128 100644
--- a/package/devel/perf/musl-compat.h
+++ b/package/devel/perf/musl-compat.h
@@ -1,6 +1,8 @@
 #ifndef __PERF_MUSL_COMPAT_H
 #define __PERF_MUSL_COMPAT_H
 
+#ifndef __ASSEMBLER__
+
 #include <sys/ioctl.h>
 #include <string.h>
 #include <unistd.h>
@@ -15,8 +17,14 @@
 #undef _IO
 
 /* Change XSI compliant version into GNU extension hackery */
-#define strerror_r(err, buf, buflen) \
-	(strerror_r(err, buf, buflen) ? NULL : buf)
+static inline char *
+gnu_strerror_r(int err, char *buf, size_t buflen)
+{
+	if (strerror_r(err, buf, buflen))
+		return NULL;
+	return buf;
+}
+#define strerror_r gnu_strerror_r
 
 #define _SC_LEVEL1_DCACHE_LINESIZE -1
 
@@ -60,3 +68,4 @@ static inline int compat_sched_getcpu(void)
 #define sched_getcpu compat_sched_getcpu
 
 #endif
+#endif