Subject: [PATCH] perf annotate: Fix build on 32 bit for BPF annotation

Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs") adds
support for BPF programs annotations but the new code does not build on 32-bit.

Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
---
tools/perf/util/annotate.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index c8b01176c9e1..09762985c713 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1714,8 +1714,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
if (dso->binary_type != DSO_BINARY_TYPE__BPF_PROG_INFO)
return -1;

- pr_debug("%s: handling sym %s addr %lx len %lx\n", __func__,
- sym->name, sym->start, sym->end - sym->start);
+ pr_debug("%s: handling sym %s addr %" PRIx64 " len %" PRIx64 "\n", __func__,
+ sym->name, sym->start, sym->end - sym->start);

memset(tpath, 0, sizeof(tpath));
perf_exe(tpath, sizeof(tpath));
@@ -1740,7 +1740,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
info_linear = info_node->info_linear;
sub_id = dso->bpf_prog.sub_id;

- info.buffer = (void *)(info_linear->info.jited_prog_insns);
+ info.buffer = (void *)(uintptr_t)(info_linear->info.jited_prog_insns);
info.buffer_length = info_linear->info.jited_prog_len;

if (info_linear->info.nr_line_info)
@@ -1776,7 +1776,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
const char *srcline;
u64 addr;

- addr = pc + ((u64 *)(info_linear->info.jited_ksyms))[sub_id];
+ addr = pc + ((u64 *)(uintptr_t)(info_linear->info.jited_ksyms))[sub_id];
count = disassemble(pc, &info);

if (prog_linfo)
--
2.20.1


2019-04-03 21:35:19

by Song Liu

[permalink] [raw]
Subject: Re: [PATCH] perf annotate: Fix build on 32 bit for BPF annotation



> On Apr 3, 2019, at 12:44 PM, Thadeu Lima de Souza Cascardo <[email protected]> wrote:
>
> Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs") adds
> support for BPF programs annotations but the new code does not build on 32-bit.
>
> Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
> Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>

Acked-by: Song Liu <[email protected]>

Thanks for the fix!
Song

> ---
> tools/perf/util/annotate.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index c8b01176c9e1..09762985c713 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -1714,8 +1714,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> if (dso->binary_type != DSO_BINARY_TYPE__BPF_PROG_INFO)
> return -1;
>
> - pr_debug("%s: handling sym %s addr %lx len %lx\n", __func__,
> - sym->name, sym->start, sym->end - sym->start);
> + pr_debug("%s: handling sym %s addr %" PRIx64 " len %" PRIx64 "\n", __func__,
> + sym->name, sym->start, sym->end - sym->start);
>
> memset(tpath, 0, sizeof(tpath));
> perf_exe(tpath, sizeof(tpath));
> @@ -1740,7 +1740,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> info_linear = info_node->info_linear;
> sub_id = dso->bpf_prog.sub_id;
>
> - info.buffer = (void *)(info_linear->info.jited_prog_insns);
> + info.buffer = (void *)(uintptr_t)(info_linear->info.jited_prog_insns);
> info.buffer_length = info_linear->info.jited_prog_len;
>
> if (info_linear->info.nr_line_info)
> @@ -1776,7 +1776,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> const char *srcline;
> u64 addr;
>
> - addr = pc + ((u64 *)(info_linear->info.jited_ksyms))[sub_id];
> + addr = pc + ((u64 *)(uintptr_t)(info_linear->info.jited_ksyms))[sub_id];
> count = disassemble(pc, &info);
>
> if (prog_linfo)
> --
> 2.20.1
>

Subject: PING: Re: [PATCH] perf annotate: Fix build on 32 bit for BPF annotation

On Wed, Apr 03, 2019 at 09:34:02PM +0000, Song Liu wrote:
>
>
> > On Apr 3, 2019, at 12:44 PM, Thadeu Lima de Souza Cascardo <[email protected]> wrote:
> >
> > Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs") adds
> > support for BPF programs annotations but the new code does not build on 32-bit.
> >
> > Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
> > Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
>
> Acked-by: Song Liu <[email protected]>
>
> Thanks for the fix!
> Song
>

Thanks for the ack.

Pinging for getting this applied, as this is a build failure on i386.

Thanks.
Cascardo.

> > ---
> > tools/perf/util/annotate.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> > index c8b01176c9e1..09762985c713 100644
> > --- a/tools/perf/util/annotate.c
> > +++ b/tools/perf/util/annotate.c
> > @@ -1714,8 +1714,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> > if (dso->binary_type != DSO_BINARY_TYPE__BPF_PROG_INFO)
> > return -1;
> >
> > - pr_debug("%s: handling sym %s addr %lx len %lx\n", __func__,
> > - sym->name, sym->start, sym->end - sym->start);
> > + pr_debug("%s: handling sym %s addr %" PRIx64 " len %" PRIx64 "\n", __func__,
> > + sym->name, sym->start, sym->end - sym->start);
> >
> > memset(tpath, 0, sizeof(tpath));
> > perf_exe(tpath, sizeof(tpath));
> > @@ -1740,7 +1740,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> > info_linear = info_node->info_linear;
> > sub_id = dso->bpf_prog.sub_id;
> >
> > - info.buffer = (void *)(info_linear->info.jited_prog_insns);
> > + info.buffer = (void *)(uintptr_t)(info_linear->info.jited_prog_insns);
> > info.buffer_length = info_linear->info.jited_prog_len;
> >
> > if (info_linear->info.nr_line_info)
> > @@ -1776,7 +1776,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
> > const char *srcline;
> > u64 addr;
> >
> > - addr = pc + ((u64 *)(info_linear->info.jited_ksyms))[sub_id];
> > + addr = pc + ((u64 *)(uintptr_t)(info_linear->info.jited_ksyms))[sub_id];
> > count = disassemble(pc, &info);
> >
> > if (prog_linfo)
> > --
> > 2.20.1
> >
>

2019-04-23 15:12:35

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: PING: Re: [PATCH] perf annotate: Fix build on 32 bit for BPF annotation

Em Tue, Apr 23, 2019 at 11:58:48AM -0300, Thadeu Lima de Souza Cascardo escreveu:
> On Wed, Apr 03, 2019 at 09:34:02PM +0000, Song Liu wrote:
> >
> >
> > > On Apr 3, 2019, at 12:44 PM, Thadeu Lima de Souza Cascardo <[email protected]> wrote:
> > >
> > > Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs") adds
> > > support for BPF programs annotations but the new code does not build on 32-bit.
> > >
> > > Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
> > > Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
> >
> > Acked-by: Song Liu <[email protected]>
> >
> > Thanks for the fix!
> > Song
> >
>
> Thanks for the ack.
>
> Pinging for getting this applied, as this is a build failure on i386.

Thanks, applied to perf/urgent.

- Arnaldo

Subject: [tip:perf/urgent] perf annotate: Fix build on 32 bit for BPF annotation

Commit-ID: 01e985e900d3e602e9b1a55372a8e5274012a417
Gitweb: https://git.kernel.org/tip/01e985e900d3e602e9b1a55372a8e5274012a417
Author: Thadeu Lima de Souza Cascardo <[email protected]>
AuthorDate: Wed, 3 Apr 2019 16:44:52 -0300
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Thu, 2 May 2019 16:00:19 -0400

perf annotate: Fix build on 32 bit for BPF annotation

Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs") adds
support for BPF programs annotations but the new code does not build on 32-bit.

Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
Acked-by: Song Liu <[email protected]>
Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/annotate.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index c8b01176c9e1..09762985c713 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1714,8 +1714,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
if (dso->binary_type != DSO_BINARY_TYPE__BPF_PROG_INFO)
return -1;

- pr_debug("%s: handling sym %s addr %lx len %lx\n", __func__,
- sym->name, sym->start, sym->end - sym->start);
+ pr_debug("%s: handling sym %s addr %" PRIx64 " len %" PRIx64 "\n", __func__,
+ sym->name, sym->start, sym->end - sym->start);

memset(tpath, 0, sizeof(tpath));
perf_exe(tpath, sizeof(tpath));
@@ -1740,7 +1740,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
info_linear = info_node->info_linear;
sub_id = dso->bpf_prog.sub_id;

- info.buffer = (void *)(info_linear->info.jited_prog_insns);
+ info.buffer = (void *)(uintptr_t)(info_linear->info.jited_prog_insns);
info.buffer_length = info_linear->info.jited_prog_len;

if (info_linear->info.nr_line_info)
@@ -1776,7 +1776,7 @@ static int symbol__disassemble_bpf(struct symbol *sym,
const char *srcline;
u64 addr;

- addr = pc + ((u64 *)(info_linear->info.jited_ksyms))[sub_id];
+ addr = pc + ((u64 *)(uintptr_t)(info_linear->info.jited_ksyms))[sub_id];
count = disassemble(pc, &info);

if (prog_linfo)