On Mon, Apr 12, 2021 at 7:29 AM Yonghong Song <yhs@xxxxxx> wrote: > > With clang compiler: > make -j60 LLVM=1 LLVM_IAS=1 <=== compile kernel > make -j60 -C tools/testing/selftests/bpf LLVM=1 LLVM_IAS=1 > Some linker flags are not used/effective for some binaries and > we have warnings like: > warning: -lelf: 'linker' input unused [-Wunused-command-line-argument] > > We also have warnings like: > .../selftests/bpf/prog_tests/ns_current_pid_tgid.c:74:57: note: treat the string as an argument to avoid this > if (CHECK(waitpid(cpid, &wstatus, 0) == -1, "waitpid", strerror(errno))) > ^ > "%s", So why not do what the compiler suggests and use `"err %s", strerror(errno)` instead of silencing useful warning globally? > .../selftests/bpf/test_progs.h:129:35: note: expanded from macro 'CHECK' > _CHECK(condition, tag, duration, format) > ^ > .../selftests/bpf/test_progs.h:108:21: note: expanded from macro '_CHECK' > fprintf(stdout, ##format); \ > ^ > The first warning can be silenced with clang option -Wno-unused-command-line-argument, this one does seem necessary, otherwise we'll have to adjust per each .c file the list of libraries needed > and the second with -Wno-format-security. Further, gcc does not support the option > -Wno-unused-command-line-argument. Since the warning only happens with clang > compiler, these two options are enabled only when clang compiler is used and this > fixed the above warnings. > > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- > tools/testing/selftests/bpf/Makefile | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index bbd61cc3889b..ef7078756c8a 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -28,6 +28,11 @@ CFLAGS += -g -Og -rdynamic -Wall $(GENFLAGS) $(SAN_CFLAGS) \ > -Dbpf_load_program=bpf_test_load_program > LDLIBS += -lcap -lelf -lz -lrt -lpthread > > +# Silence some warnings when compiled with clang > +ifneq ($(LLVM),) > +CFLAGS += -Wno-unused-command-line-argument -Wno-format-security > +endif > + > # Order correspond to 'make run_tests' order > TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test_progs \ > test_verifier_log test_dev_cgroup \ > -- > 2.30.2 >