Message ID | 20200717184706.3477154-1-yhs@fb.com |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | compute bpf_skc_to_*() helper socket btf ids at build time | expand |
On Fri, Jul 17, 2020 at 11:47:06AM -0700, Yonghong Song wrote: > The BTF_ID_LIST macro definition in btf_ids.h: > #define BTF_ID_LIST(name) \ > __BTF_ID_LIST(name) \ > extern u32 name[]; > > The variable defined in __BTF_ID_LIST has > ".local" directive, which means the variable > is only available in the current file. > So change the scope of "name" in the declaration > from "extern" to "static". > > Signed-off-by: Yonghong Song <yhs@fb.com> Acked-by: Jiri Olsa <jolsa@redhat.com> thanks, jirka > --- > include/linux/btf_ids.h | 2 +- > tools/include/linux/btf_ids.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h > index 1cdb56950ffe..cebc9a655959 100644 > --- a/include/linux/btf_ids.h > +++ b/include/linux/btf_ids.h > @@ -66,7 +66,7 @@ asm( \ > > #define BTF_ID_LIST(name) \ > __BTF_ID_LIST(name) \ > -extern u32 name[]; > +static u32 name[]; > > /* > * The BTF_ID_UNUSED macro defines 4 zero bytes. > diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h > index fe019774f8a7..b870776201e5 100644 > --- a/tools/include/linux/btf_ids.h > +++ b/tools/include/linux/btf_ids.h > @@ -64,7 +64,7 @@ asm( \ > > #define BTF_ID_LIST(name) \ > __BTF_ID_LIST(name) \ > -extern u32 name[]; > +static u32 name[]; > > /* > * The BTF_ID_UNUSED macro defines 4 zero bytes. > -- > 2.24.1 >
Hi Yonghong, I love your patch! Yet something to improve: [auto build test ERROR on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Yonghong-Song/compute-bpf_skc_to_-helper-socket-btf-ids-at-build-time/20200718-025117 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: x86_64-rhel-7.6-kselftests (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): In file included from kernel/bpf/btf.c:21: >> kernel/bpf/btf.c:3625:13: warning: array 'bpf_ctx_convert_btf_id' assumed to have one element 3625 | BTF_ID_LIST(bpf_ctx_convert_btf_id) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/ccYr5IvF.s: Assembler messages: /tmp/ccYr5IvF.s:23808: Error: symbol `bpf_ctx_convert_btf_id' is already defined -- In file included from kernel/bpf/stackmap.c:12: >> kernel/bpf/stackmap.c:580:13: warning: array 'bpf_get_task_stack_btf_ids' assumed to have one element 580 | BTF_ID_LIST(bpf_get_task_stack_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/ccjqxVG0.s: Assembler messages: >> /tmp/ccjqxVG0.s:4352: Error: symbol `bpf_get_task_stack_btf_ids' is already defined -- In file included from net/core/filter.c:78: >> net/core/filter.c:3783:13: warning: array 'bpf_skb_output_btf_ids' assumed to have one element 3783 | BTF_ID_LIST(bpf_skb_output_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ >> net/core/filter.c:4179:13: warning: array 'bpf_xdp_output_btf_ids' assumed to have one element 4179 | BTF_ID_LIST(bpf_xdp_output_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/ccAPtQBF.s: Assembler messages: >> /tmp/ccAPtQBF.s:67210: Error: symbol `bpf_xdp_output_btf_ids' is already defined >> /tmp/ccAPtQBF.s:67358: Error: symbol `bpf_skb_output_btf_ids' is already defined -- In file included from net/core/filter.c:78: >> net/core/filter.c:3783:13: warning: array 'bpf_skb_output_btf_ids' assumed to have one element 3783 | BTF_ID_LIST(bpf_skb_output_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ >> net/core/filter.c:4179:13: warning: array 'bpf_xdp_output_btf_ids' assumed to have one element 4179 | BTF_ID_LIST(bpf_xdp_output_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/cc5vDkeD.s: Assembler messages: /tmp/cc5vDkeD.s:67210: Error: symbol `bpf_xdp_output_btf_ids' is already defined /tmp/cc5vDkeD.s:67358: Error: symbol `bpf_skb_output_btf_ids' is already defined -- kernel/trace/bpf_trace.c: In function '____bpf_trace_printk': kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] 538 | return __BPF_TP_EMIT(); | ^~~~~~ kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] kernel/trace/bpf_trace.c:538:2: warning: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] In file included from kernel/trace/bpf_trace.c:17: kernel/trace/bpf_trace.c: At top level: >> kernel/trace/bpf_trace.c:746:13: warning: array 'bpf_seq_printf_btf_ids' assumed to have one element 746 | BTF_ID_LIST(bpf_seq_printf_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ >> kernel/trace/bpf_trace.c:766:13: warning: array 'bpf_seq_write_btf_ids' assumed to have one element 766 | BTF_ID_LIST(bpf_seq_write_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/ccD742Hy.s: Assembler messages: >> /tmp/ccD742Hy.s:18358: Error: symbol `bpf_seq_write_btf_ids' is already defined >> /tmp/ccD742Hy.s:18376: Error: symbol `bpf_seq_printf_btf_ids' is already defined -- In file included from kernel/bpf/stackmap.c:12: >> kernel/bpf/stackmap.c:580:13: warning: array 'bpf_get_task_stack_btf_ids' assumed to have one element 580 | BTF_ID_LIST(bpf_get_task_stack_btf_ids) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/cc3dyWIM.s: Assembler messages: /tmp/cc3dyWIM.s:4352: Error: symbol `bpf_get_task_stack_btf_ids' is already defined -- In file included from kernel/bpf/btf.c:21: >> kernel/bpf/btf.c:3625:13: warning: array 'bpf_ctx_convert_btf_id' assumed to have one element 3625 | BTF_ID_LIST(bpf_ctx_convert_btf_id) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' 69 | static u32 name[]; | ^~~~ /tmp/ccCr2PU4.s: Assembler messages: /tmp/ccCr2PU4.s:23808: Error: symbol `bpf_ctx_convert_btf_id' is already defined --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Yonghong,
I love your patch! Yet something to improve:
[auto build test ERROR on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Yonghong-Song/compute-bpf_skc_to_-helper-socket-btf-ids-at-build-time/20200718-025117
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: x86_64-rhel-7.6-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from kernel/bpf/btf.c:21:
kernel/bpf/btf.c:3625:13: warning: array 'bpf_ctx_convert_btf_id' assumed to have one element
3625 | BTF_ID_LIST(bpf_ctx_convert_btf_id)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST'
69 | static u32 name[];
| ^~~~
/tmp/ccXM0qVD.s: Assembler messages:
>> /tmp/ccXM0qVD.s:23808: Error: symbol `bpf_ctx_convert_btf_id' is already defined
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On 7/17/20 4:12 PM, kernel test robot wrote: > Hi Yonghong, > > I love your patch! Yet something to improve: > > [auto build test ERROR on bpf-next/master] > > url: https://github.com/0day-ci/linux/commits/Yonghong-Song/compute-bpf_skc_to_-helper-socket-btf-ids-at-build-time/20200718-025117 > base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master > config: x86_64-rhel-7.6-kselftests (attached as .config) > compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 > reproduce (this is a W=1 build): > # save the attached .config to linux build tree > make W=1 ARCH=x86_64 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@intel.com> > > All error/warnings (new ones prefixed by >>): > > In file included from kernel/bpf/btf.c:21: >>> kernel/bpf/btf.c:3625:13: warning: array 'bpf_ctx_convert_btf_id' assumed to have one element > 3625 | BTF_ID_LIST(bpf_ctx_convert_btf_id) > | ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' > 69 | static u32 name[]; > | ^~~~ > /tmp/ccYr5IvF.s: Assembler messages: > /tmp/ccYr5IvF.s:23808: Error: symbol `bpf_ctx_convert_btf_id' is already defined gcc8 is fine and gcc9 enforced the rules as `name` is defined both in assembly code and in C code. I guess `static u32 name[]` won't work. I will restore to original `extern u32 name[]`. Thanks. > -- > In file included from kernel/bpf/stackmap.c:12: >>> kernel/bpf/stackmap.c:580:13: warning: array 'bpf_get_task_stack_btf_ids' assumed to have one element > 580 | BTF_ID_LIST(bpf_get_task_stack_btf_ids) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > include/linux/btf_ids.h:69:12: note: in definition of macro 'BTF_ID_LIST' > 69 | static u32 name[]; > | ^~~~ > /tmp/ccjqxVG0.s: Assembler messages: [...]
diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index 1cdb56950ffe..cebc9a655959 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h @@ -66,7 +66,7 @@ asm( \ #define BTF_ID_LIST(name) \ __BTF_ID_LIST(name) \ -extern u32 name[]; +static u32 name[]; /* * The BTF_ID_UNUSED macro defines 4 zero bytes. diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h index fe019774f8a7..b870776201e5 100644 --- a/tools/include/linux/btf_ids.h +++ b/tools/include/linux/btf_ids.h @@ -64,7 +64,7 @@ asm( \ #define BTF_ID_LIST(name) \ __BTF_ID_LIST(name) \ -extern u32 name[]; +static u32 name[]; /* * The BTF_ID_UNUSED macro defines 4 zero bytes.
The BTF_ID_LIST macro definition in btf_ids.h: #define BTF_ID_LIST(name) \ __BTF_ID_LIST(name) \ extern u32 name[]; The variable defined in __BTF_ID_LIST has ".local" directive, which means the variable is only available in the current file. So change the scope of "name" in the declaration from "extern" to "static". Signed-off-by: Yonghong Song <yhs@fb.com> --- include/linux/btf_ids.h | 2 +- tools/include/linux/btf_ids.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)