Re: [PATCH 1/1] perf build: Require at least clang 16.0.6 to build BPF skeletons

From: James Clark
Date: Thu Sep 12 2024 - 11:01:07 EST




On 12/09/2024 15:50, Arnaldo Carvalho de Melo wrote:
On Thu, Sep 12, 2024 at 03:40:32PM +0100, James Clark wrote:
On 11/09/2024 13:24, Arnaldo Carvalho de Melo wrote:
Howard reported problems using perf features that use BPF:

perf $ clang -v
Debian clang version 15.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /bin
Found candidate GCC installation: /bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /bin/../lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
perf $ ./perf trace -e write --max-events=1
libbpf: prog 'sys_enter_rename': BPF program load failed: Permission denied
libbpf: prog 'sys_enter_rename': -- BEGIN PROG LOAD LOG --
0: R1=ctx() R10=fp0

But it works with:

perf $ clang -v
Debian clang version 16.0.6 (15~deb12u1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /bin
Found candidate GCC installation: /bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /bin/../lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
perf $ ./perf trace -e write --max-events=1
0.000 ( 0.009 ms): gmain/1448 write(fd: 4, buf: \1\0\0\0\0\0\0\0, count: 8) = 8 (kworker/0:0-eve)
perf $

So lets make that the required version, if you happen to have a slightly
older version where this work, please report so that we can adjust the
minimum required version.
I wasn't able to reproduce the issue with either of these versions. But I
suppose it could be an issue with only 15.0.6.

Interesting, that complicates things, probably the best way then is to
try to build it, if it fails, mention that 15.0.6 is known to be
problematic and suggest working versions?

- Arnaldo

I'll try to build it and see. But Ubuntu 22 only has clang 11 to 15 so making 16 the minimum could be an issue.