Re: net/bpf/test_run.c:154:14: warning: no previous prototype for 'bpf_fentry_test7'

From: Yonghong Song
Date: Fri Jun 04 2021 - 11:52:51 EST




On 6/4/21 12:50 AM, kernel test robot wrote:
Hi Yonghong,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f88cd3fb9df228e5ce4e13ec3dbad671ddb2146e
commit: d923021c2ce12acb50dc7086a1bf66eed82adf6a bpf: Add tests for PTR_TO_BTF_ID vs. null comparison
date: 11 months ago
config: x86_64-rhel (attached as .config)
compiler: gcc-6 (Ubuntu 6.4.0-17ubuntu1) 6.4.0 20180424
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d923021c2ce12acb50dc7086a1bf66eed82adf6a
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d923021c2ce12acb50dc7086a1bf66eed82adf6a
# 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@xxxxxxxxx>

All warnings (new ones prefixed by >>):

net/bpf/test_run.c:120:14: warning: no previous prototype for 'bpf_fentry_test1' [-Wmissing-prototypes]
int noinline bpf_fentry_test1(int a)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:125:14: warning: no previous prototype for 'bpf_fentry_test2' [-Wmissing-prototypes]
int noinline bpf_fentry_test2(int a, u64 b)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:130:14: warning: no previous prototype for 'bpf_fentry_test3' [-Wmissing-prototypes]
int noinline bpf_fentry_test3(char a, int b, u64 c)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:135:14: warning: no previous prototype for 'bpf_fentry_test4' [-Wmissing-prototypes]
int noinline bpf_fentry_test4(void *a, char b, int c, u64 d)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:140:14: warning: no previous prototype for 'bpf_fentry_test5' [-Wmissing-prototypes]
int noinline bpf_fentry_test5(u64 a, void *b, short c, int d, u64 e)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:145:14: warning: no previous prototype for 'bpf_fentry_test6' [-Wmissing-prototypes]
int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:154:14: warning: no previous prototype for 'bpf_fentry_test7' [-Wmissing-prototypes]
int noinline bpf_fentry_test7(struct bpf_fentry_test_t *arg)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:159:14: warning: no previous prototype for 'bpf_fentry_test8' [-Wmissing-prototypes]
int noinline bpf_fentry_test8(struct bpf_fentry_test_t *arg)
^~~~~~~~~~~~~~~~
net/bpf/test_run.c:164:14: warning: no previous prototype for 'bpf_modify_return_test' [-Wmissing-prototypes]
int noinline bpf_modify_return_test(int a, int *b)
^~~~~~~~~~~~~~~~~~~~~~

I think this has been discussed earlier.

In net/bpf/test_run.c, we have,

__diag_push();
__diag_ignore(GCC, 8, "-Wmissing-prototypes",
"Global functions as their definitions will be in vmlinux BTF");
int noinline bpf_fentry_test1(int a)
{
return a + 1;
}
...

Unfortunately, the __diag_ignore macro only effective for gcc8 and later.

So for gcc6, the above warning will be emitted. Is it possible for the tool to check and ignore this error if the gcc version is less than 8?



vim +/bpf_fentry_test7 +154 net/bpf/test_run.c

153
> 154 int noinline bpf_fentry_test7(struct bpf_fentry_test_t *arg)
155 {
156 return (long)arg;
157 }
158
> 159 int noinline bpf_fentry_test8(struct bpf_fentry_test_t *arg)
160 {
161 return (long)arg->a;
162 }
163

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx