| From b88d0b6a79ee94762f3f0a2caa6060261aecc2b2 Mon Sep 17 00:00:00 2001 |
| From: Alexei Starovoitov <ast@kernel.org> |
| Date: Thu, 4 Apr 2019 14:37:14 -0700 |
| Subject: samples/bpf: fix build with new clang |
| |
| [ Upstream commit 636e78b1cdb40b77a79b143dbd9d94847b360efa ] |
| |
| clang started to error on invalid asm clobber usage in x86 headers |
| and many bpf program samples failed to build with the message: |
| |
| CLANG-bpf /data/users/ast/bpf-next/samples/bpf/xdp_redirect_kern.o |
| In file included from /data/users/ast/bpf-next/samples/bpf/xdp_redirect_kern.c:14: |
| In file included from ../include/linux/in.h:23: |
| In file included from ../include/uapi/linux/in.h:24: |
| In file included from ../include/linux/socket.h:8: |
| In file included from ../include/linux/uio.h:14: |
| In file included from ../include/crypto/hash.h:16: |
| In file included from ../include/linux/crypto.h:26: |
| In file included from ../include/linux/uaccess.h:5: |
| In file included from ../include/linux/sched.h:15: |
| In file included from ../include/linux/sem.h:5: |
| In file included from ../include/uapi/linux/sem.h:5: |
| In file included from ../include/linux/ipc.h:9: |
| In file included from ../include/linux/refcount.h:72: |
| ../arch/x86/include/asm/refcount.h:72:36: error: asm-specifier for input or output variable conflicts with asm clobber list |
| r->refs.counter, e, "er", i, "cx"); |
| ^ |
| ../arch/x86/include/asm/refcount.h:86:27: error: asm-specifier for input or output variable conflicts with asm clobber list |
| r->refs.counter, e, "cx"); |
| ^ |
| 2 errors generated. |
| |
| Override volatile() to workaround the problem. |
| |
| Signed-off-by: Alexei Starovoitov <ast@kernel.org> |
| Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| samples/bpf/asm_goto_workaround.h | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/samples/bpf/asm_goto_workaround.h b/samples/bpf/asm_goto_workaround.h |
| index 5cd7c1d1a5d56..7409722727ca1 100644 |
| --- a/samples/bpf/asm_goto_workaround.h |
| +++ b/samples/bpf/asm_goto_workaround.h |
| @@ -13,4 +13,5 @@ |
| #define asm_volatile_goto(x...) asm volatile("invalid use of asm_volatile_goto") |
| #endif |
| |
| +#define volatile(x...) volatile("") |
| #endif |
| -- |
| 2.20.1 |
| |