• Jiri Olsa's avatar
    perf build: Stop using __weak bpf_prog_load() to handle older libbpf versions · 5c83eff3
    Jiri Olsa authored
    By adding a feature test for bpf_prog_load() 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_prog_load.make.output
      test-libbpf-bpf_prog_load.c: In function ‘main’:
      test-libbpf-bpf_prog_load.c:6:16: error: implicit declaration of function ‘bpf_prog_load’ [-Werror=implicit-function-declaration]
          6 |         return bpf_prog_load(0 /* prog_type */, NULL /* prog_name */,
            |                ^~~~~~~~~~~~~
      cc1: all warnings being treated as errors
      $
    
      $ objdump -dS /tmp/build/perf/perf | grep '<bpf_prog_load>:' -A20
      00000000005b2d70 <bpf_prog_load>:
      {
        5b2d70:	55                   	push   %rbp
        5b2d71:	48 89 ce             	mov    %rcx,%rsi
        5b2d74:	4c 89 c8             	mov    %r9,%rax
        5b2d77:	49 89 d2             	mov    %rdx,%r10
        5b2d7a:	4c 89 c2             	mov    %r8,%rdx
        5b2d7d:	48 89 e5             	mov    %rsp,%rbp
        5b2d80:	48 83 ec 18          	sub    $0x18,%rsp
        5b2d84:	64 48 8b 0c 25 28 00 	mov    %fs:0x28,%rcx
        5b2d8b:	00 00
        5b2d8d:	48 89 4d f8          	mov    %rcx,-0x8(%rbp)
        5b2d91:	31 c9                	xor    %ecx,%ecx
      	return bpf_load_program(prog_type, insns, insn_cnt, license,
        5b2d93:	41 8b 49 5c          	mov    0x5c(%r9),%ecx
        5b2d97:	51                   	push   %rcx
        5b2d98:	4d 8b 49 60          	mov    0x60(%r9),%r9
        5b2d9c:	4c 89 d1             	mov    %r10,%rcx
        5b2d9f:	44 8b 40 1c          	mov    0x1c(%rax),%r8d
        5b2da3:	e8 f8 aa e5 ff       	call   40d8a0 <bpf_load_program@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>
    5c83eff3
test-libbpf-bpf_prog_load.c 230 Bytes