Re: [PATCH v3] perf build: Build error in libbpf with EXTRA_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -O2"

From: Jakub Kicinski
Date: Mon Jul 30 2018 - 15:35:18 EST


On Mon, 30 Jul 2018 10:53:23 +0200, Thomas Richter wrote:
> commit 531b014e7a2f ("tools: bpf: make use of reallocarray")
> causes a compiler error when building the perf tool in the linux-next
> tree. Compile file tools/lib/bpf/libbpf.c on a FEDORA 28
> installation with gcc compiler
> version: gcc (GCC) 8.0.1 20180324 (Red Hat 8.0.1-0.20)
> shows this error message:
>
> [root@p23lp27] # make V=1 EXTRA_CFLAGS="-Wp,-D_FORTIFY_SOURCE=2 -O2"
> [...]
> make -f /home6/tmricht/linux-next/tools/build/Makefile.build
> dir=./util/scripting-engines obj=libperf
> libbpf.c: In function âbpf_object__elf_collectâ:
> libbpf.c:811:15: error: ignoring return value of âstrerror_râ,
> declared with attribute warn_unused_result [-Werror=unused-result]
> strerror_r(-err, errmsg, sizeof(errmsg));
> ^
> cc1: all warnings being treated as errors
> mv: cannot stat './.libbpf.o.tmp': No such file or directory
> /home6/tmricht/linux-next/tools/build/Makefile.build:96: recipe for target 'libbpf.o' failed
>
> Replace all occurrences of strerror() by calls to strerror_r().
> To keep the compiler quiet also use the return value from strerror_r()
> otherwise a 'variable set but not use' warning which is treated as error
> terminates the compile.
>
> Cc: Alexei Starovoitov <ast@xxxxxxxxxx>
> Cc: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> Cc: Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx>
> Suggested-by: Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx>
> Suggested-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
> Reviewed-by: Hendrik Brueckner <brueckner@xxxxxxxxxxxxx>
> Signed-off-by: Thomas Richter <tmricht@xxxxxxxxxxxxx>

Conversion looks correct, thank you!

Reviewed-by: Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx>