• Jiri Olsa's avatar
    perf build: Stop using __weak bpf_object__next_program() to handle older libbpf versions · 8916d725
    Jiri Olsa authored
    By adding a feature test for bpf_object__next_program() and providing a fallback if
    it isn't present in older versions of libbpf.
    
    Committer testing:
    
      $ rpm -q libbpf-devel
      libbpf-devel-0.4.0-2.fc35.x86_64
      $ make -C tools/perf LIBBPF_DYNAMIC=1 O=/tmp/build/perf install-bin
      $ cat /tmp/build/perf/feature/test-libbpf-bpf_object__next_program.make.output
      test-libbpf-bpf_object__next_program.c: In function ‘main’:
      test-libbpf-bpf_object__next_program.c:6:9: error: implicit declaration of function ‘bpf_object__next_program’; did you mean ‘bpf_object__unpin_programs’? [-Werror=implicit-function-declaration]
          6 |         bpf_object__next_program(NULL /* obj */, NULL /* prev */);
            |         ^~~~~~~~~~~~~~~~~~~~~~~~
            |         bpf_object__unpin_programs
      cc1: all warnings being treated as errors
      $
      $ objdump -dS /tmp/build/perf/perf | grep '<bpf_object__next_program>:' -A20
      00000000005b2dc0 <bpf_object__next_program>:
      {
        5b2dc0:	55                   	push   %rbp
        5b2dc1:	48 89 e5             	mov    %rsp,%rbp
        5b2dc4:	48 83 ec 10          	sub    $0x10,%rsp
        5b2dc8:	64 48 8b 04 25 28 00 	mov    %fs:0x28,%rax
        5b2dcf:	00 00
        5b2dd1:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
        5b2dd5:	31 c0                	xor    %eax,%eax
    	  return bpf_program__next(prev, obj);
        5b2dd7:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
        5b2ddb:	64 48 2b 04 25 28 00 	sub    %fs:0x28,%rax
        5b2de2:	00 00
        5b2de4:	75 0f                	jne    5b2df5 <bpf_object__next_program+0x35>
      }
        5b2de6:	c9                   	leave
        5b2de7:	49 89 f8             	mov    %rdi,%r8
        5b2dea:	48 89 f7             	mov    %rsi,%rdi
    	  return bpf_program__next(prev, obj);
        5b2ded:	4c 89 c6             	mov    %r8,%rsi
        5b2df0:	e9 3b b4 e5 ff       	jmp    40e230 <bpf_program__next@plt>
        $
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ilya Leoshkevich <iii@linux.ibm.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: http://lore.kernel.org/linux-perf-users/YozLKby7ITEtchC9@kravaSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    8916d725
test-libbpf-bpf_object__next_program.c 151 Bytes