Public bug reported: [Impact] perf trace can work with BPF code and is able to use clang to build C code to do it. Currently, it won't be able to build them as it requires some include files that it looks at /usr/lib/perf/include/bpf/.
As this path is not dependent on the kernel version, shipping the latest code would make sense as long as headers are backwards compatible. Example code could be packaged on a versioned directory in a versioned package. [Test case] $ sudo perf trace -e open,openat,/usr/lib/perf/examples/bpf/augmented_raw_syscalls.c cat /etc/passwd > /dev/null 0.000 ( 0.027 ms): cat/2256 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC) = 3 0.058 ( 0.009 ms): cat/2256 openat(dfd: CWD, filename: "/lib/s390x-linux-gnu/libc.so.6", flags: RDONLY|CLOEXEC) = 3 0.307 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/locale-archive", flags: RDONLY|CLOEXEC) = 3 0.326 ( 0.007 ms): cat/2256 openat(dfd: CWD, filename: "/usr/share/locale/locale.alias", flags: RDONLY|CLOEXEC) = 3 0.361 ( 0.005 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", flags: RDONLY|CLOEXEC) = 3 0.373 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/s390x-linux-gnu/gconv/gconv-modules.cache") = 3 0.389 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", flags: RDONLY|CLOEXEC) = 3 0.403 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_TELEPHONE", flags: RDONLY|CLOEXEC) = 3 0.415 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_ADDRESS", flags: RDONLY|CLOEXEC) = 3 0.428 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_NAME", flags: RDONLY|CLOEXEC) = 3 0.440 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_PAPER", flags: RDONLY|CLOEXEC) = 3 0.456 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3 0.464 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3 0.475 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MONETARY", flags: RDONLY|CLOEXEC) = 3 0.489 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_COLLATE", flags: RDONLY|CLOEXEC) = 3 0.511 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_TIME", flags: RDONLY|CLOEXEC) = 3 0.525 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_NUMERIC", flags: RDONLY|CLOEXEC) = 3 0.536 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_CTYPE", flags: RDONLY|CLOEXEC) = 3 0.565 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/etc/passwd") = 3 [Potential regression] We might ship incompatible code with the running kernel. It might break building such examples. Or we might break the old contens of the packages we are adding files to. ** Affects: linux (Ubuntu) Importance: Low Assignee: Thadeu Lima de Souza Cascardo (cascardo) Status: In Progress ** Affects: linux (Ubuntu Focal) Importance: Undecided Status: New ** Affects: linux (Ubuntu Groovy) Importance: Low Assignee: Thadeu Lima de Souza Cascardo (cascardo) Status: In Progress ** Also affects: linux (Ubuntu Groovy) Importance: Undecided Status: New ** Also affects: linux (Ubuntu Focal) Importance: Undecided Status: New ** Changed in: linux (Ubuntu Groovy) Status: New => In Progress ** Changed in: linux (Ubuntu Groovy) Assignee: (unassigned) => Thadeu Lima de Souza Cascardo (cascardo) ** Changed in: linux (Ubuntu Groovy) Importance: Undecided => Low -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1892411 Title: Package perf-trace examples and include files Status in linux package in Ubuntu: In Progress Status in linux source package in Focal: New Status in linux source package in Groovy: In Progress Bug description: [Impact] perf trace can work with BPF code and is able to use clang to build C code to do it. Currently, it won't be able to build them as it requires some include files that it looks at /usr/lib/perf/include/bpf/. As this path is not dependent on the kernel version, shipping the latest code would make sense as long as headers are backwards compatible. Example code could be packaged on a versioned directory in a versioned package. [Test case] $ sudo perf trace -e open,openat,/usr/lib/perf/examples/bpf/augmented_raw_syscalls.c cat /etc/passwd > /dev/null 0.000 ( 0.027 ms): cat/2256 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC) = 3 0.058 ( 0.009 ms): cat/2256 openat(dfd: CWD, filename: "/lib/s390x-linux-gnu/libc.so.6", flags: RDONLY|CLOEXEC) = 3 0.307 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/locale-archive", flags: RDONLY|CLOEXEC) = 3 0.326 ( 0.007 ms): cat/2256 openat(dfd: CWD, filename: "/usr/share/locale/locale.alias", flags: RDONLY|CLOEXEC) = 3 0.361 ( 0.005 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", flags: RDONLY|CLOEXEC) = 3 0.373 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/s390x-linux-gnu/gconv/gconv-modules.cache") = 3 0.389 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", flags: RDONLY|CLOEXEC) = 3 0.403 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_TELEPHONE", flags: RDONLY|CLOEXEC) = 3 0.415 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_ADDRESS", flags: RDONLY|CLOEXEC) = 3 0.428 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_NAME", flags: RDONLY|CLOEXEC) = 3 0.440 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_PAPER", flags: RDONLY|CLOEXEC) = 3 0.456 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3 0.464 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", flags: RDONLY|CLOEXEC) = 3 0.475 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_MONETARY", flags: RDONLY|CLOEXEC) = 3 0.489 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_COLLATE", flags: RDONLY|CLOEXEC) = 3 0.511 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_TIME", flags: RDONLY|CLOEXEC) = 3 0.525 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_NUMERIC", flags: RDONLY|CLOEXEC) = 3 0.536 ( 0.004 ms): cat/2256 openat(dfd: CWD, filename: "/usr/lib/locale/C.UTF-8/LC_CTYPE", flags: RDONLY|CLOEXEC) = 3 0.565 ( 0.003 ms): cat/2256 openat(dfd: CWD, filename: "/etc/passwd") = 3 [Potential regression] We might ship incompatible code with the running kernel. It might break building such examples. Or we might break the old contens of the packages we are adding files to. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1892411/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp