Subject: Re: [PATCHv2 0/3] perf tools: Fix prologue generation

From: Jiri Olsa <[email-masked]>
Date: Mon, 23 May 2022 09:49:26 +0200

On Sat, May 21, 2022 at 02:44:05PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Fri, May 20, 2022 at 02:46:49PM -0700, Andrii Nakryiko escreveu:
> > On Thu, May 19, 2022 at 4:03 AM Jiri Olsa <[email-masked]> wrote:
> > > On Wed, May 18, 2022 at 11:46:44AM +0200, Jiri Olsa wrote:
> > > > On Tue, May 17, 2022 at 03:02:53PM -0700, Andrii Nakryiko wrote:
> > > > > Jiri, libbpf v0.8 is out, can you please re-send your perf patches?
> 
> > > > yep, just made new fedora package.. will resend the perf changes soon
> 
> > > fedora package is on the way, but I'll need perf/core to merge
> > > the bpf_program__set_insns change.. Arnaldo, any idea when this
> > > could happen?
> 
> > Can we land these patches through bpf-next to avoid such complicated
> > cross-tree dependencies? As I started removing libbpf APIs I also
> > noticed that perf is still using few other deprecated APIs:
> >   - bpf_map__next;
> >   - bpf_program__next;
> >   - bpf_load_program;
> >   - btf__get_from_id;

these were added just to bypass the time window when they were not
available in the package, so can be removed now (in the patch below)

>  
> > It's trivial to fix up, but doing it across few trees will delay
> > libbpf work as well.
>  
> > So let's land this through bpf-next, if Arnaldo doesn't mind?
> 
> Yeah, that should be ok, the only consideration is that I'm submitting
> this today to Linus:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/commit/?h=tmp.perf/urgent&id=0ae065a5d265bc5ada13e350015458e0c5e5c351
> 
> To address this:
> 
> https://lore.kernel.org/linux-perf-users/[email-masked]/

ok, we can do that via bpf-next, but of course there's a problem ;-)

perf/core already has dependency commit [1]

so either we wait for perf/core and bpf-next/master to sync or:

  - perf/core reverts [1] and
  - bpf-next/master takes [1] and the rest

I have the changes ready if you guys are ok with that

thanks,
jirka

[1] https://lore.kernel.org/bpf/[email-masked]/

---
Subject: [PATCH bpf-next] perf tools: Remove the weak libbpf functions

We added weak functions for some new libbpf functions because
they were not packaged at that time [1].

These functions are now available in package, so we can remove
their weak perf variants.

[1] https://lore.kernel.org/linux-perf-users/[email-masked]/

Signed-off-by: Jiri Olsa <[email-masked]>
---
 tools/perf/util/bpf-event.c | 51 -------------------------------------
 1 file changed, 51 deletions(-)

diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c
index 94624733af7e..025f331b3867 100644
--- a/tools/perf/util/bpf-event.c
+++ b/tools/perf/util/bpf-event.c
@@ -22,57 +22,6 @@
 #include "record.h"
 #include "util/synthetic-events.h"
 
-struct btf * __weak btf__load_from_kernel_by_id(__u32 id)
-{
-       struct btf *btf;
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-       int err = btf__get_from_id(id, &btf);
-#pragma GCC diagnostic pop
-
-       return err ? ERR_PTR(err) : btf;
-}
-
-int __weak bpf_prog_load(enum bpf_prog_type prog_type,
-			 const char *prog_name __maybe_unused,
-			 const char *license,
-			 const struct bpf_insn *insns, size_t insn_cnt,
-			 const struct bpf_prog_load_opts *opts)
-{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-	return bpf_load_program(prog_type, insns, insn_cnt, license,
-				opts->kern_version, opts->log_buf, opts->log_size);
-#pragma GCC diagnostic pop
-}
-
-struct bpf_program * __weak
-bpf_object__next_program(const struct bpf_object *obj, struct bpf_program *prev)
-{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-	return bpf_program__next(prev, obj);
-#pragma GCC diagnostic pop
-}
-
-struct bpf_map * __weak
-bpf_object__next_map(const struct bpf_object *obj, const struct bpf_map *prev)
-{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-	return bpf_map__next(prev, obj);
-#pragma GCC diagnostic pop
-}
-
-const void * __weak
-btf__raw_data(const struct btf *btf_ro, __u32 *size)
-{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-	return btf__get_raw_data(btf_ro, size);
-#pragma GCC diagnostic pop
-}
-
 static int snprintf_hex(char *buf, size_t size, unsigned char *data, size_t len)
 {
 	int ret = 0;
-- 
2.35.3