Em Thu, Sep 21, 2017 at 02:01:13PM +0800, Li Zhijian escreveu: > since f045b8c, we failed to build perf with LIBCLANGLLVM=1, this patch is to > fix the following compiling errors > -------------- > lizhijian@haswell-OptiPlex-9020:~/lkp/linux/tools/perf$ make > LLVM_CONFIG=/usr/bin/llvm-config-3.9 LIBCLANGLLVM=1 > CXX util/c++/clang-test.o > In file included from /home/lizj/linux/tools/include/linux/list.h:5:0, > from /home/lizj/linux/tools/perf/util/namespaces.h:13, > from /home/lizj/linux/tools/perf/util/util.h:15, > from /home/lizj/linux/tools/perf/util/util-cxx.h:20, > from util/c++/clang-c.h:5, > from util/c++/clang-test.cpp:2: > /home/lizj/linux/tools/include/linux/list.h: In function ‘void > list_del(list_head*)’: > /home/lizj/linux/tools/include/linux/poison.h:14:31: error: pointer of type > ‘void *’ used in arithmetic [-Werror=pointer-arith] > # define POISON_POINTER_DELTA 0 > ^ > /home/lizj/linux/tools/include/linux/poison.h:22:41: note: in expansion of > macro ‘POISON_POINTER_DELTA’ > #define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA) > ^ > /home/lizj/linux/tools/include/linux/list.h:107:16: note: in expansion of > macro ‘LIST_POISON1’ > entry->next = LIST_POISON1; > ^ > In file included from /home/lizj/linux/tools/perf/util/namespaces.h:13:0, > from /home/lizj/linux/tools/perf/util/util.h:15, > from /home/lizj/linux/tools/perf/util/util-cxx.h:20, > from util/c++/clang-c.h:5, > from util/c++/clang-test.cpp:2: > /home/lizj/linux/tools/include/linux/list.h:107:14: error: invalid conversion > from ‘void*’ to ‘list_head*’ [-fpermissive]
> +++ b/tools/perf/util/namespaces.h > @@ -10,7 +10,6 @@ > #define __PERF_NAMESPACES_H > > #include "../perf.h" > -#include <linux/list.h> > #include <linux/refcount.h> Well, you can't do that, as namespaces.h needs list.h, a bit after te above hunk: 9 #ifndef __PERF_NAMESPACES_H 10 #define __PERF_NAMESPACES_H 11 12 #include "../perf.h" 13 #include <linux/list.h> 14 #include <linux/refcount.h> 15 16 struct namespaces_event; 17 18 struct namespaces { 19 struct list_head list; 20 u64 end_time; 21 struct perf_ns_link_info link_info[]; 22 }; Can you try with the following patch instead? diff --git a/tools/include/linux/poison.h b/tools/include/linux/poison.h index 51334edec506..f306a7642509 100644 --- a/tools/include/linux/poison.h +++ b/tools/include/linux/poison.h @@ -14,6 +14,10 @@ # define POISON_POINTER_DELTA 0 #endif +#ifdef __cplusplus +#define LIST_POISON1 NULL +#define LIST_POISON2 NULL +#else /* * These are non-NULL pointers that will result in page faults * under normal circumstances, used to verify that nobody uses @@ -21,6 +25,7 @@ */ #define LIST_POISON1 ((void *) 0x100 + POISON_POINTER_DELTA) #define LIST_POISON2 ((void *) 0x200 + POISON_POINTER_DELTA) +#endif /********** include/linux/timer.h **********/ /*