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

From: Daniel Borkmann
Date: Mon Jul 30 2018 - 20:14:00 EST


On 07/30/2018 09:35 PM, Jakub Kicinski wrote:
> 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>

Applied to bpf-next, thanks Thomas!