[OpenWrt-Devel] [PATCH] target/linux/mpc85xx: fix EDEADLOCK define collisions with musl
Alexandru Ardelean
ardeleanalex at gmail.com
Tue Apr 26 04:24:29 EDT 2016
libbpf fails to build.
perf just emits a warning and carries on.
This is a collision between linux's <errno.h> and musl's <errno.h>
when building for powerpc.
For powerpc, EDEADLOCK has value 58.
The initial definition in the kernel
include/uapi/asm-generic/errno.h : #define EDEADLOCK EDEADLK
Then this gets overriden:
arch/powerpc/include/uapi/asm/errno.h : #define EDEADLOCK 58
And in musl:
arch/powerpc/bits/errno.h : #define EDEADLOCK 58
There would be 2 ways to solve this:
1. Patch perf, libbpf and other tools to change the inclusion order of <errno.h>
2. Patch the kernel just for the powerpc arch to not re-define EDEADLOCK if defined
I chose 2.
=======================================================================
Build failure is:
CC libbpf.o
In file included from /home/sandu/work/Wrt1/openwrt/build_dir/target-powerpc_8540_musl-1.1.14_ewok/linux-mpc85xx_ewok/linux-4.4.6/arch/powerpc/include/uapi/asm/errno.h:4:0,
from /home/sandu/work/Wrt1/openwrt/build_dir/target-powerpc_8540_musl-1.1.14_ewok/linux-mpc85xx_ewok/linux-4.4.6/tools/include/linux/err.h:7,
from libbpf.h:13,
from libbpf.c:24:
/home/sandu/work/Wrt1/openwrt/build_dir/target-powerpc_8540_musl-1.1.14_ewok/linux-mpc85xx_ewok/linux-4.4.6/include/uapi/asm-generic/errno.h:39:0: error: "EDEADLOCK" redefined [-Werror]
#define EDEADLOCK EDEADLK
^
In file included from /home/sandu/work/Wrt1/openwrt/staging_dir/toolchain-powerpc_8540_gcc-5.3.0_musl-1.1.14/include/errno.h:10:0,
from libbpf.c:16:
/home/sandu/work/Wrt1/openwrt/staging_dir/toolchain-powerpc_8540_gcc-5.3.0_musl-1.1.14/include/bits/errno.h:58:0: note: this is the location of the previous definition
#define EDEADLOCK 58
^
cc1: all warnings being treated as errors
CC bpf.o
LD libbpf-in.o
powerpc-openwrt-linux-musl-ld: cannot find libbpf.o: No such file or directory
Signed-off-by: Alexandru Ardelean <ardeleanalex at gmail.com>
---
.../301-fix-edeadlock-define-collisions-with-musl.patch | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 target/linux/mpc85xx/patches-4.4/301-fix-edeadlock-define-collisions-with-musl.patch
diff --git a/target/linux/mpc85xx/patches-4.4/301-fix-edeadlock-define-collisions-with-musl.patch b/target/linux/mpc85xx/patches-4.4/301-fix-edeadlock-define-collisions-with-musl.patch
new file mode 100644
index 0000000..57a35f6
--- /dev/null
+++ b/target/linux/mpc85xx/patches-4.4/301-fix-edeadlock-define-collisions-with-musl.patch
@@ -0,0 +1,15 @@
+diff --git a/include/uapi/asm-generic/errno.h b/include/uapi/asm-generic/errno.h
+index 88e0914..7549bec 100644
+--- a/include/uapi/asm-generic/errno.h
++++ b/include/uapi/asm-generic/errno.h
+@@ -36,7 +36,9 @@
+ #define EBADRQC 56 /* Invalid request code */
+ #define EBADSLT 57 /* Invalid slot */
+
+-#define EDEADLOCK EDEADLK
++#ifndef EDEADLOCK
++#define EDEADLOCK 58
++#endif
+
+ #define EBFONT 59 /* Bad font file format */
+ #define ENOSTR 60 /* Device not a stream */
--
2.8.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list