Re: [PATCH] libbpf: Use PRIu64 for sym->st_value to fix build on 32-bit arches

Arnaldo Carvalho de Melo
2019-12-03T14:41:14Z

Em Tue, Dec 03, 2019 at 07:20:08PM +0530, Naresh Kamboju escreveu:
> Hi Arnaldo,
>
> FYI,
>
> On Wed, 27 Nov 2019 at 19:15, Arnaldo Carvalho de Melo
> <arnaldo.melo@gmail.com> wrote:
> >
> > Another fix I'm carrying in my perf/core branch,
> >
> > Regards,
> >
> > - Arnaldo
> >
> > commit 98bb09f90a0ae33125fabc8f41529345382f1498
> > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> > Date: Wed Nov 27 09:26:54 2019 -0300
> >
> > libbpf: Use PRIu64 for sym->st_value to fix build on 32-bit arches
> >
> > The st_value field is a 64-bit value, so use PRIu64 to fix this error on
> > 32-bit arches:
> >
> > In file included from libbpf.c:52:
> > libbpf.c: In function 'bpf_program__record_reloc':
> > libbpf_internal.h:59:22: error: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'Elf64_Addr' {aka 'const long long unsigned int'} [-Werror=format=]
> > libbpf_print(level, "libbpf: " fmt, ##__VA_ARGS__); \
> > ^~~~~~~~~~
> > libbpf_internal.h:62:27: note: in expansion of macro '__pr'
> > #define pr_warn(fmt, ...) __pr(LIBBPF_WARN, fmt, ##__VA_ARGS__)
> > ^~~~
> > libbpf.c:1822:4: note: in expansion of macro 'pr_warn'
> > pr_warn("bad call relo offset: %lu\n", sym->st_value);
> > ^~~~~~~
> > libbpf.c:1822:37: note: format string is defined here
> > pr_warn("bad call relo offset: %lu\n", sym->st_value);
> > ~~^
> > %llu
>
> This build error is been noticed on Linux mainline kernel for 32-bit
> architectures from Nov 26.

Right, the fix is in the bpf tree:

https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/commit/?id=7c3977d1e804

Should go upstream soon.

- Arnaldo

> Full build log,
> https://ci.linaro.org/job/openembedded-lkft-linux-mainline/DISTRO=lkft,MACHINE=intel-core2-32,label=docker-lkft/2297/consoleText
> https://ci.linaro.org/job/openembedded-lkft-linux-mainline/
>
> - Naresh

--

- Arnaldo