From f869caf2b52876d31c8e9a15129122510cf20573 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Mar 28 2023 09:46:40 +0000 Subject: import bcc-0.25.0-2.el8 --- diff --git a/.bcc.metadata b/.bcc.metadata index e3a63ae..51078f8 100644 --- a/.bcc.metadata +++ b/.bcc.metadata @@ -1 +1 @@ -896d0249470dedfabfcc9a4c8b4089a55b793277 SOURCES/bcc-0.24.0.tar.gz +059187f62e915eb74ea7b18e19fcb185f9d18255 SOURCES/bcc-0.25.0.tar.gz diff --git a/.gitignore b/.gitignore index 277ef94..9cf0677 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/bcc-0.24.0.tar.gz +SOURCES/bcc-0.25.0.tar.gz diff --git a/SOURCES/bcc-0.24.0-Manpages-remove-unstable-statement.patch b/SOURCES/bcc-0.24.0-Manpages-remove-unstable-statement.patch deleted file mode 100644 index 7b60d98..0000000 --- a/SOURCES/bcc-0.24.0-Manpages-remove-unstable-statement.patch +++ /dev/null @@ -1,1452 +0,0 @@ -From 6362a8e023cb53a523ab5a3d11bddcdbe05229fc Mon Sep 17 00:00:00 2001 -From: Jerome Marchand -Date: Tue, 6 Aug 2019 14:44:33 +0200 -Subject: [PATCH] Manpages: remove unstable statement - -The tools are tested before each release. They should be stable -enough. ---- - man/man8/argdist.8 | 2 -- - man/man8/bashreadline.8 | 2 -- - man/man8/bindsnoop.8 | 2 -- - man/man8/biolatency.8 | 2 -- - man/man8/biolatpcts.8 | 2 -- - man/man8/biosnoop.8 | 2 -- - man/man8/biotop.8 | 2 -- - man/man8/bitesize.8 | 2 -- - man/man8/bpflist.8 | 2 -- - man/man8/bps.8 | 2 -- - man/man8/btrfsdist.8 | 2 -- - man/man8/btrfsslower.8 | 2 -- - man/man8/cachestat.8 | 2 -- - man/man8/cachetop.8 | 2 -- - man/man8/capable.8 | 2 -- - man/man8/compactsnoop.8 | 2 -- - man/man8/cpudist.8 | 2 -- - man/man8/cpuunclaimed.8 | 2 -- - man/man8/criticalstat.8 | 2 -- - man/man8/dbslower.8 | 2 -- - man/man8/dbstat.8 | 2 -- - man/man8/dcsnoop.8 | 2 -- - man/man8/dcstat.8 | 2 -- - man/man8/deadlock.8 | 2 -- - man/man8/dirtop.8 | 2 -- - man/man8/drsnoop.8 | 2 -- - man/man8/execsnoop.8 | 2 -- - man/man8/exitsnoop.8 | 2 -- - man/man8/ext4dist.8 | 2 -- - man/man8/ext4slower.8 | 2 -- - man/man8/filelife.8 | 2 -- - man/man8/fileslower.8 | 2 -- - man/man8/filetop.8 | 2 -- - man/man8/funccount.8 | 2 -- - man/man8/funcinterval.8 | 2 -- - man/man8/funclatency.8 | 2 -- - man/man8/funcslower.8 | 2 -- - man/man8/gethostlatency.8 | 2 -- - man/man8/hardirqs.8 | 2 -- - man/man8/inject.8 | 4 ---- - man/man8/killsnoop.8 | 2 -- - man/man8/klockstat.8 | 2 -- - man/man8/kvmexit.8 | 2 -- - man/man8/llcstat.8 | 2 -- - man/man8/mdflush.8 | 2 -- - man/man8/memleak.8 | 2 -- - man/man8/mountsnoop.8 | 2 -- - man/man8/mysqld_qslower.8 | 2 -- - man/man8/netqtop.8 | 2 -- - man/man8/nfsdist.8 | 2 -- - man/man8/nfsslower.8 | 2 -- - man/man8/offcputime.8 | 2 -- - man/man8/offwaketime.8 | 2 -- - man/man8/oomkill.8 | 2 -- - man/man8/opensnoop.8 | 2 -- - man/man8/pidpersec.8 | 2 -- - man/man8/profile.8 | 2 -- - man/man8/readahead.8 | 2 -- - man/man8/reset-trace.8 | 2 -- - man/man8/runqlat.8 | 2 -- - man/man8/runqlen.8 | 2 -- - man/man8/runqslower.8 | 2 -- - man/man8/shmsnoop.8 | 2 -- - man/man8/slabratetop.8 | 2 -- - man/man8/sofdsnoop.8 | 2 -- - man/man8/softirqs.8 | 2 -- - man/man8/solisten.8 | 2 -- - man/man8/spfdsnoop.8 | 2 -- - man/man8/sslsniff.8 | 2 -- - man/man8/stackcount.8 | 2 -- - man/man8/statsnoop.8 | 2 -- - man/man8/swapin.8 | 2 -- - man/man8/syncsnoop.8 | 2 -- - man/man8/syscount.8 | 2 -- - man/man8/tcpaccept.8 | 2 -- - man/man8/tcpconnect.8 | 2 -- - man/man8/tcpconnlat.8 | 2 -- - man/man8/tcpdrop.8 | 2 -- - man/man8/tcplife.8 | 2 -- - man/man8/tcpretrans.8 | 2 -- - man/man8/tcprtt.8 | 2 -- - man/man8/tcpstates.8 | 2 -- - man/man8/tcpsubnet.8 | 2 -- - man/man8/tcpsynbl.8 | 2 -- - man/man8/tcptop.8 | 2 -- - man/man8/tcptracer.8 | 2 -- - man/man8/threadsnoop.8 | 2 -- - man/man8/tplist.8 | 2 -- - man/man8/trace.8 | 2 -- - man/man8/ttysnoop.8 | 2 -- - man/man8/ucalls.8 | 2 -- - man/man8/uflow.8 | 2 -- - man/man8/ugc.8 | 2 -- - man/man8/uobjnew.8 | 2 -- - man/man8/ustat.8 | 2 -- - man/man8/uthreads.8 | 2 -- - man/man8/vfscount.8 | 2 -- - man/man8/vfsstat.8 | 2 -- - man/man8/virtiostat.8 | 2 -- - man/man8/wakeuptime.8 | 2 -- - man/man8/xfsdist.8 | 2 -- - man/man8/xfsslower.8 | 2 -- - man/man8/zfsdist.8 | 2 -- - man/man8/zfsslower.8 | 2 -- - 104 files changed, 210 deletions(-) - -diff --git a/man/man8/argdist.8 b/man/man8/argdist.8 -index 3033571b..91f13a33 100644 ---- a/man/man8/argdist.8 -+++ b/man/man8/argdist.8 -@@ -191,7 +191,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein -diff --git a/man/man8/bashreadline.8 b/man/man8/bashreadline.8 -index bc68a491..705c514e 100644 ---- a/man/man8/bashreadline.8 -+++ b/man/man8/bashreadline.8 -@@ -53,8 +53,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/bindsnoop.8 b/man/man8/bindsnoop.8 -index f8fa1850..05ed95a7 100644 ---- a/man/man8/bindsnoop.8 -+++ b/man/man8/bindsnoop.8 -@@ -141,8 +141,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Pavel Dubovitsky - .SH SEE ALSO -diff --git a/man/man8/biolatency.8 b/man/man8/biolatency.8 -index c13f6c8a..6beef490 100644 ---- a/man/man8/biolatency.8 -+++ b/man/man8/biolatency.8 -@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/biolatpcts.8 b/man/man8/biolatpcts.8 -index 7a06a11d..9dd41d08 100644 ---- a/man/man8/biolatpcts.8 -+++ b/man/man8/biolatpcts.8 -@@ -81,8 +81,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Tejun Heo - .SH SEE ALSO -diff --git a/man/man8/biosnoop.8 b/man/man8/biosnoop.8 -index 4c073f76..2b2f7434 100644 ---- a/man/man8/biosnoop.8 -+++ b/man/man8/biosnoop.8 -@@ -79,8 +79,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/biotop.8 b/man/man8/biotop.8 -index ed25521f..b00bf68a 100644 ---- a/man/man8/biotop.8 -+++ b/man/man8/biotop.8 -@@ -95,8 +95,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH INSPIRATION -diff --git a/man/man8/bitesize.8 b/man/man8/bitesize.8 -index 99cdbaab..529a1e26 100644 ---- a/man/man8/bitesize.8 -+++ b/man/man8/bitesize.8 -@@ -43,8 +43,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Allan McAleavy - .SH SEE ALSO -diff --git a/man/man8/bpflist.8 b/man/man8/bpflist.8 -index 1cab0c81..afefd3af 100644 ---- a/man/man8/bpflist.8 -+++ b/man/man8/bpflist.8 -@@ -54,7 +54,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein -diff --git a/man/man8/bps.8 b/man/man8/bps.8 -index 4316be0b..8af8ee2d 100644 ---- a/man/man8/bps.8 -+++ b/man/man8/bps.8 -@@ -81,7 +81,5 @@ This is from bcc. - https://github.com/iovisor/bcc - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Martin Lau -diff --git a/man/man8/btrfsdist.8 b/man/man8/btrfsdist.8 -index 480264f9..cbf75121 100644 ---- a/man/man8/btrfsdist.8 -+++ b/man/man8/btrfsdist.8 -@@ -74,8 +74,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/btrfsslower.8 b/man/man8/btrfsslower.8 -index a1ea106a..33864589 100644 ---- a/man/man8/btrfsslower.8 -+++ b/man/man8/btrfsslower.8 -@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/cachestat.8 b/man/man8/cachestat.8 -index 172194d4..575941fc 100644 ---- a/man/man8/cachestat.8 -+++ b/man/man8/cachestat.8 -@@ -76,8 +76,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Allan McAleavy - .SH SEE ALSO -diff --git a/man/man8/cachetop.8 b/man/man8/cachetop.8 -index 5642fa1d..1fe4067b 100644 ---- a/man/man8/cachetop.8 -+++ b/man/man8/cachetop.8 -@@ -83,8 +83,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Emmanuel Bretelle - .SH SEE ALSO -diff --git a/man/man8/capable.8 b/man/man8/capable.8 -index 342946f8..2b7d13ba 100644 ---- a/man/man8/capable.8 -+++ b/man/man8/capable.8 -@@ -87,8 +87,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/compactsnoop.8 b/man/man8/compactsnoop.8 -index a2933d7a..c1339579 100644 ---- a/man/man8/compactsnoop.8 -+++ b/man/man8/compactsnoop.8 -@@ -173,7 +173,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Wenbo Zhang -diff --git a/man/man8/cpudist.8 b/man/man8/cpudist.8 -index b5179102..a7825d64 100644 ---- a/man/man8/cpudist.8 -+++ b/man/man8/cpudist.8 -@@ -99,8 +99,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/cpuunclaimed.8 b/man/man8/cpuunclaimed.8 -index 674be499..107ff67b 100644 ---- a/man/man8/cpuunclaimed.8 -+++ b/man/man8/cpuunclaimed.8 -@@ -98,8 +98,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/criticalstat.8 b/man/man8/criticalstat.8 -index 6b1c1110..6df592a3 100644 ---- a/man/man8/criticalstat.8 -+++ b/man/man8/criticalstat.8 -@@ -66,8 +66,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Joel Fernandes - .SH SEE ALSO -diff --git a/man/man8/dbslower.8 b/man/man8/dbslower.8 -index e39b8bd0..e73b77f1 100644 ---- a/man/man8/dbslower.8 -+++ b/man/man8/dbslower.8 -@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein, Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/dbstat.8 b/man/man8/dbstat.8 -index c8e8fd8f..2ca31c67 100644 ---- a/man/man8/dbstat.8 -+++ b/man/man8/dbstat.8 -@@ -64,8 +64,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/dcsnoop.8 b/man/man8/dcsnoop.8 -index 6ccb3b65..1d707ba1 100644 ---- a/man/man8/dcsnoop.8 -+++ b/man/man8/dcsnoop.8 -@@ -69,8 +69,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/dcstat.8 b/man/man8/dcstat.8 -index e2bc4dc8..0501460f 100644 ---- a/man/man8/dcstat.8 -+++ b/man/man8/dcstat.8 -@@ -53,8 +53,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/deadlock.8 b/man/man8/deadlock.8 -index 3e7744ce..9f0f7de0 100644 ---- a/man/man8/deadlock.8 -+++ b/man/man8/deadlock.8 -@@ -144,7 +144,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Kenny Yu -diff --git a/man/man8/dirtop.8 b/man/man8/dirtop.8 -index cc61a676..9a0fd3d9 100644 ---- a/man/man8/dirtop.8 -+++ b/man/man8/dirtop.8 -@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Erwan Velu - .SH INSPIRATION -diff --git a/man/man8/drsnoop.8 b/man/man8/drsnoop.8 -index 572c0dce..3563da81 100644 ---- a/man/man8/drsnoop.8 -+++ b/man/man8/drsnoop.8 -@@ -104,7 +104,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Wenbo Zhang -diff --git a/man/man8/execsnoop.8 b/man/man8/execsnoop.8 -index e42ad38a..9daaf4b1 100644 ---- a/man/man8/execsnoop.8 -+++ b/man/man8/execsnoop.8 -@@ -141,8 +141,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/exitsnoop.8 b/man/man8/exitsnoop.8 -index 86a43921..c37e1caf 100644 ---- a/man/man8/exitsnoop.8 -+++ b/man/man8/exitsnoop.8 -@@ -102,8 +102,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Arturo Martin-de-Nicolas - .SH SEE ALSO -diff --git a/man/man8/ext4dist.8 b/man/man8/ext4dist.8 -index 61ecb727..ba17fc3d 100644 ---- a/man/man8/ext4dist.8 -+++ b/man/man8/ext4dist.8 -@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/ext4slower.8 b/man/man8/ext4slower.8 -index a16bd5ef..b6276269 100644 ---- a/man/man8/ext4slower.8 -+++ b/man/man8/ext4slower.8 -@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/filelife.8 b/man/man8/filelife.8 -index 9495d4e2..6438b374 100644 ---- a/man/man8/filelife.8 -+++ b/man/man8/filelife.8 -@@ -64,8 +64,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/fileslower.8 b/man/man8/fileslower.8 -index fe912436..d567986b 100644 ---- a/man/man8/fileslower.8 -+++ b/man/man8/fileslower.8 -@@ -106,8 +106,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/filetop.8 b/man/man8/filetop.8 -index ba0cbd6e..1f818d68 100644 ---- a/man/man8/filetop.8 -+++ b/man/man8/filetop.8 -@@ -111,8 +111,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH INSPIRATION -diff --git a/man/man8/funccount.8 b/man/man8/funccount.8 -index 16ce4fc0..1c7b71c1 100644 ---- a/man/man8/funccount.8 -+++ b/man/man8/funccount.8 -@@ -104,8 +104,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg, Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/funcinterval.8 b/man/man8/funcinterval.8 -index 8a603998..39be3377 100755 ---- a/man/man8/funcinterval.8 -+++ b/man/man8/funcinterval.8 -@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Edward Wu - .SH SEE ALSO -diff --git a/man/man8/funclatency.8 b/man/man8/funclatency.8 -index 3eef805b..22496d18 100644 ---- a/man/man8/funclatency.8 -+++ b/man/man8/funclatency.8 -@@ -130,8 +130,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg, Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/funcslower.8 b/man/man8/funcslower.8 -index 06f17934..0e85989d 100644 ---- a/man/man8/funcslower.8 -+++ b/man/man8/funcslower.8 -@@ -117,8 +117,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/gethostlatency.8 b/man/man8/gethostlatency.8 -index a9d18e07..876f3983 100644 ---- a/man/man8/gethostlatency.8 -+++ b/man/man8/gethostlatency.8 -@@ -55,8 +55,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/hardirqs.8 b/man/man8/hardirqs.8 -index 12ae6be5..1b38779a 100644 ---- a/man/man8/hardirqs.8 -+++ b/man/man8/hardirqs.8 -@@ -88,8 +88,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg, Hengqi Chen - .SH SEE ALSO -diff --git a/man/man8/inject.8 b/man/man8/inject.8 -index 2ab80dbb..85b36b6e 100644 ---- a/man/man8/inject.8 -+++ b/man/man8/inject.8 -@@ -112,9 +112,5 @@ example usage, output, and commentary for this tool. - Linux - - --.SH STABILITY --Unstable - in development. -- -- - .SH AUTHOR - Howard McLauchlan -diff --git a/man/man8/killsnoop.8 b/man/man8/killsnoop.8 -index acb376ea..2543b6a6 100644 ---- a/man/man8/killsnoop.8 -+++ b/man/man8/killsnoop.8 -@@ -82,8 +82,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/klockstat.8 b/man/man8/klockstat.8 -index 0a3167d1..57f9db18 100644 ---- a/man/man8/klockstat.8 -+++ b/man/man8/klockstat.8 -@@ -182,8 +182,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH CREDITS - This tool is based on work of David Valin and his script. - .SH AUTHOR -diff --git a/man/man8/kvmexit.8 b/man/man8/kvmexit.8 -index c0cb4c98..0b56cecc 100644 ---- a/man/man8/kvmexit.8 -+++ b/man/man8/kvmexit.8 -@@ -109,7 +109,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Fei Li -diff --git a/man/man8/llcstat.8 b/man/man8/llcstat.8 -index 36dbed7d..2b554c46 100644 ---- a/man/man8/llcstat.8 -+++ b/man/man8/llcstat.8 -@@ -63,8 +63,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Teng Qin - .SH SEE ALSO -diff --git a/man/man8/mdflush.8 b/man/man8/mdflush.8 -index 9d10ca87..3c3b9bba 100644 ---- a/man/man8/mdflush.8 -+++ b/man/man8/mdflush.8 -@@ -49,8 +49,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/memleak.8 b/man/man8/memleak.8 -index 2fd26764..d56cf207 100644 ---- a/man/man8/memleak.8 -+++ b/man/man8/memleak.8 -@@ -135,7 +135,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein -diff --git a/man/man8/mountsnoop.8 b/man/man8/mountsnoop.8 -index 01efdf9c..8afafba0 100644 ---- a/man/man8/mountsnoop.8 -+++ b/man/man8/mountsnoop.8 -@@ -46,8 +46,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Omar Sandoval - .SH SEE ALSO -diff --git a/man/man8/mysqld_qslower.8 b/man/man8/mysqld_qslower.8 -index 5753079a..7daf074b 100644 ---- a/man/man8/mysqld_qslower.8 -+++ b/man/man8/mysqld_qslower.8 -@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/netqtop.8 b/man/man8/netqtop.8 -index bfa34d11..8750782b 100644 ---- a/man/man8/netqtop.8 -+++ b/man/man8/netqtop.8 -@@ -50,7 +50,5 @@ Also look in the bcc distribution for a netqtop_example.txt file containing - example usage, output and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development - .SH AUTHOR - Yolandajn -diff --git a/man/man8/nfsdist.8 b/man/man8/nfsdist.8 -index c72cfaa6..34532c18 100644 ---- a/man/man8/nfsdist.8 -+++ b/man/man8/nfsdist.8 -@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Samuel Nair - .SH SEE ALSO -diff --git a/man/man8/nfsslower.8 b/man/man8/nfsslower.8 -index 22b36e3e..66021002 100644 ---- a/man/man8/nfsslower.8 -+++ b/man/man8/nfsslower.8 -@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion nfsslower_examples.txt file co - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Samuel Nair - .SH SEE ALSO -diff --git a/man/man8/offcputime.8 b/man/man8/offcputime.8 -index be5387b9..270991d8 100644 ---- a/man/man8/offcputime.8 -+++ b/man/man8/offcputime.8 -@@ -110,8 +110,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/offwaketime.8 b/man/man8/offwaketime.8 -index 7334b6f8..f0704e92 100644 ---- a/man/man8/offwaketime.8 -+++ b/man/man8/offwaketime.8 -@@ -107,8 +107,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/oomkill.8 b/man/man8/oomkill.8 -index b6d6f9e1..965ba545 100644 ---- a/man/man8/oomkill.8 -+++ b/man/man8/oomkill.8 -@@ -47,8 +47,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/opensnoop.8 b/man/man8/opensnoop.8 -index fee83263..953af623 100644 ---- a/man/man8/opensnoop.8 -+++ b/man/man8/opensnoop.8 -@@ -148,8 +148,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/pidpersec.8 b/man/man8/pidpersec.8 -index 2164ffaf..9d272c81 100644 ---- a/man/man8/pidpersec.8 -+++ b/man/man8/pidpersec.8 -@@ -33,8 +33,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/profile.8 b/man/man8/profile.8 -index 30871afe..8523a731 100644 ---- a/man/man8/profile.8 -+++ b/man/man8/profile.8 -@@ -148,8 +148,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/readahead.8 b/man/man8/readahead.8 -index a2a10914..da8e4fe4 100644 ---- a/man/man8/readahead.8 -+++ b/man/man8/readahead.8 -@@ -51,8 +51,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Suchakra Sharma - .SH SEE ALSO -diff --git a/man/man8/reset-trace.8 b/man/man8/reset-trace.8 -index e96d4790..90f525e0 100644 ---- a/man/man8/reset-trace.8 -+++ b/man/man8/reset-trace.8 -@@ -53,7 +53,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg -diff --git a/man/man8/runqlat.8 b/man/man8/runqlat.8 -index d535ebbf..9e146a5e 100644 ---- a/man/man8/runqlat.8 -+++ b/man/man8/runqlat.8 -@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/runqlen.8 b/man/man8/runqlen.8 -index b36a5a18..c2f0ffb4 100644 ---- a/man/man8/runqlen.8 -+++ b/man/man8/runqlen.8 -@@ -78,8 +78,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/runqslower.8 b/man/man8/runqslower.8 -index 55ea5bd9..dbbec5ae 100644 ---- a/man/man8/runqslower.8 -+++ b/man/man8/runqslower.8 -@@ -84,8 +84,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Ivan Babrou, original BCC Python version - Andrii Nakryiko, CO-RE version -diff --git a/man/man8/shmsnoop.8 b/man/man8/shmsnoop.8 -index e7092e19..944e9f07 100644 ---- a/man/man8/shmsnoop.8 -+++ b/man/man8/shmsnoop.8 -@@ -66,8 +66,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Jiri Olsa - .SH SEE ALSO -diff --git a/man/man8/slabratetop.8 b/man/man8/slabratetop.8 -index bfe897fc..18d1e5ea 100644 ---- a/man/man8/slabratetop.8 -+++ b/man/man8/slabratetop.8 -@@ -68,8 +68,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/sofdsnoop.8 b/man/man8/sofdsnoop.8 -index cd3ffa27..94432544 100644 ---- a/man/man8/sofdsnoop.8 -+++ b/man/man8/sofdsnoop.8 -@@ -58,5 +58,3 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. -diff --git a/man/man8/softirqs.8 b/man/man8/softirqs.8 -index a9a14414..df2fc90b 100644 ---- a/man/man8/softirqs.8 -+++ b/man/man8/softirqs.8 -@@ -85,8 +85,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHORS - Brendan Gregg, Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/solisten.8 b/man/man8/solisten.8 -index 4d8ffe95..fd863447 100644 ---- a/man/man8/solisten.8 -+++ b/man/man8/solisten.8 -@@ -45,5 +45,3 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. -diff --git a/man/man8/spfdsnoop.8 b/man/man8/spfdsnoop.8 -index ffad57c5..df80437f 100644 ---- a/man/man8/spfdsnoop.8 -+++ b/man/man8/spfdsnoop.8 -@@ -77,8 +77,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Jiri Olsa - .SH SEE ALSO -diff --git a/man/man8/sslsniff.8 b/man/man8/sslsniff.8 -index df81664b..1d2749fa 100644 ---- a/man/man8/sslsniff.8 -+++ b/man/man8/sslsniff.8 -@@ -86,8 +86,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHORS - Adrian Lopez and Mark Drayton - .SH SEE ALSO -diff --git a/man/man8/stackcount.8 b/man/man8/stackcount.8 -index d2459561..2cf789c1 100644 ---- a/man/man8/stackcount.8 -+++ b/man/man8/stackcount.8 -@@ -150,8 +150,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg, Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/statsnoop.8 b/man/man8/statsnoop.8 -index c0555043..d1560b3c 100644 ---- a/man/man8/statsnoop.8 -+++ b/man/man8/statsnoop.8 -@@ -83,8 +83,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/swapin.8 b/man/man8/swapin.8 -index c5ef1ffc..89600460 100644 ---- a/man/man8/swapin.8 -+++ b/man/man8/swapin.8 -@@ -50,8 +50,6 @@ Also look in the bcc distribution for a companion _examples.txt file - containing example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/syncsnoop.8 b/man/man8/syncsnoop.8 -index 8543f213..cd7b0629 100644 ---- a/man/man8/syncsnoop.8 -+++ b/man/man8/syncsnoop.8 -@@ -45,8 +45,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/syscount.8 b/man/man8/syscount.8 -index d13793be..88343e14 100644 ---- a/man/man8/syscount.8 -+++ b/man/man8/syscount.8 -@@ -102,8 +102,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/tcpaccept.8 b/man/man8/tcpaccept.8 -index 05b79693..6dd35301 100644 ---- a/man/man8/tcpaccept.8 -+++ b/man/man8/tcpaccept.8 -@@ -118,8 +118,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcpconnect.8 b/man/man8/tcpconnect.8 -index 0ea84686..04952d74 100644 ---- a/man/man8/tcpconnect.8 -+++ b/man/man8/tcpconnect.8 -@@ -197,8 +197,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcpconnlat.8 b/man/man8/tcpconnlat.8 -index 84762b45..3771baa7 100644 ---- a/man/man8/tcpconnlat.8 -+++ b/man/man8/tcpconnlat.8 -@@ -125,8 +125,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcpdrop.8 b/man/man8/tcpdrop.8 -index c9b777b3..82e400eb 100644 ---- a/man/man8/tcpdrop.8 -+++ b/man/man8/tcpdrop.8 -@@ -83,8 +83,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcplife.8 b/man/man8/tcplife.8 -index 5fb4c283..cc76d870 100644 ---- a/man/man8/tcplife.8 -+++ b/man/man8/tcplife.8 -@@ -136,8 +136,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcpretrans.8 b/man/man8/tcpretrans.8 -index 0b643d11..aebdab73 100644 ---- a/man/man8/tcpretrans.8 -+++ b/man/man8/tcpretrans.8 -@@ -103,8 +103,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcprtt.8 b/man/man8/tcprtt.8 -index 1ed32d6e..4ccf88e0 100644 ---- a/man/man8/tcprtt.8 -+++ b/man/man8/tcprtt.8 -@@ -95,8 +95,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - zhenwei pi - .SH SEE ALSO -diff --git a/man/man8/tcpstates.8 b/man/man8/tcpstates.8 -index 57c40a83..1d6b8a29 100644 ---- a/man/man8/tcpstates.8 -+++ b/man/man8/tcpstates.8 -@@ -137,8 +137,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcpsubnet.8 b/man/man8/tcpsubnet.8 -index 525b8082..daf41583 100644 ---- a/man/man8/tcpsubnet.8 -+++ b/man/man8/tcpsubnet.8 -@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Rodrigo Manyari - .SH INSPIRATION -diff --git a/man/man8/tcpsynbl.8 b/man/man8/tcpsynbl.8 -index 8557af2b..c03c5460 100644 ---- a/man/man8/tcpsynbl.8 -+++ b/man/man8/tcpsynbl.8 -@@ -69,8 +69,6 @@ Also look in the bcc distribution for a companion _examples.txt file - containing example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tcptop.8 b/man/man8/tcptop.8 -index f4f1c3d7..013cb3d9 100644 ---- a/man/man8/tcptop.8 -+++ b/man/man8/tcptop.8 -@@ -127,8 +127,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH INSPIRATION -diff --git a/man/man8/tcptracer.8 b/man/man8/tcptracer.8 -index 59240f4b..331efe9a 100644 ---- a/man/man8/tcptracer.8 -+++ b/man/man8/tcptracer.8 -@@ -113,8 +113,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Iago López Galeiras - .SH SEE ALSO -diff --git a/man/man8/threadsnoop.8 b/man/man8/threadsnoop.8 -index 3c655f24..007281ad 100644 ---- a/man/man8/threadsnoop.8 -+++ b/man/man8/threadsnoop.8 -@@ -52,8 +52,6 @@ Also look in the bcc distribution for a companion _examples.txt file - containing example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/tplist.8 b/man/man8/tplist.8 -index da5edf37..f7e459da 100644 ---- a/man/man8/tplist.8 -+++ b/man/man8/tplist.8 -@@ -56,7 +56,5 @@ This is from bcc. - https://github.com/iovisor/bcc - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein -diff --git a/man/man8/trace.8 b/man/man8/trace.8 -index acfff58f..17aa20bc 100644 ---- a/man/man8/trace.8 -+++ b/man/man8/trace.8 -@@ -216,7 +216,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein -diff --git a/man/man8/ttysnoop.8 b/man/man8/ttysnoop.8 -index e2ec037f..e20feb01 100644 ---- a/man/man8/ttysnoop.8 -+++ b/man/man8/ttysnoop.8 -@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/ucalls.8 b/man/man8/ucalls.8 -index dfc4b8b2..be38c9fb 100644 ---- a/man/man8/ucalls.8 -+++ b/man/man8/ucalls.8 -@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/uflow.8 b/man/man8/uflow.8 -index 1d0951c3..d8800166 100644 ---- a/man/man8/uflow.8 -+++ b/man/man8/uflow.8 -@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/ugc.8 b/man/man8/ugc.8 -index 782ae634..5dd17f3a 100644 ---- a/man/man8/ugc.8 -+++ b/man/man8/ugc.8 -@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/uobjnew.8 b/man/man8/uobjnew.8 -index f4a9c74c..5cd7ef1b 100644 ---- a/man/man8/uobjnew.8 -+++ b/man/man8/uobjnew.8 -@@ -80,8 +80,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/ustat.8 b/man/man8/ustat.8 -index 371d855e..f37fc91f 100644 ---- a/man/man8/ustat.8 -+++ b/man/man8/ustat.8 -@@ -125,8 +125,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/uthreads.8 b/man/man8/uthreads.8 -index 6acffa56..5a91f2d4 100644 ---- a/man/man8/uthreads.8 -+++ b/man/man8/uthreads.8 -@@ -60,8 +60,6 @@ Also look in the bcc distribution for a companion _example.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Sasha Goldshtein - .SH SEE ALSO -diff --git a/man/man8/vfscount.8 b/man/man8/vfscount.8 -index febbc9e6..0cc65adf 100644 ---- a/man/man8/vfscount.8 -+++ b/man/man8/vfscount.8 -@@ -54,8 +54,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/vfsstat.8 b/man/man8/vfsstat.8 -index 929e6b63..f439857e 100644 ---- a/man/man8/vfsstat.8 -+++ b/man/man8/vfsstat.8 -@@ -57,8 +57,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/virtiostat.8 b/man/man8/virtiostat.8 -index 8578f8d3..ac312c56 100644 ---- a/man/man8/virtiostat.8 -+++ b/man/man8/virtiostat.8 -@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - zhenwei pi - .SH SEE ALSO -diff --git a/man/man8/wakeuptime.8 b/man/man8/wakeuptime.8 -index 8630ae4a..3c7cf80a 100644 ---- a/man/man8/wakeuptime.8 -+++ b/man/man8/wakeuptime.8 -@@ -96,8 +96,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/xfsdist.8 b/man/man8/xfsdist.8 -index 3c890007..75b2c66e 100644 ---- a/man/man8/xfsdist.8 -+++ b/man/man8/xfsdist.8 -@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/xfsslower.8 b/man/man8/xfsslower.8 -index 30ec3253..c914dcee 100644 ---- a/man/man8/xfsslower.8 -+++ b/man/man8/xfsslower.8 -@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/zfsdist.8 b/man/man8/zfsdist.8 -index 1e5632fd..6c5de7d7 100644 ---- a/man/man8/zfsdist.8 -+++ b/man/man8/zfsdist.8 -@@ -75,8 +75,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO -diff --git a/man/man8/zfsslower.8 b/man/man8/zfsslower.8 -index d1e2f9c1..31d382f6 100644 ---- a/man/man8/zfsslower.8 -+++ b/man/man8/zfsslower.8 -@@ -108,8 +108,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing - example usage, output, and commentary for this tool. - .SH OS - Linux --.SH STABILITY --Unstable - in development. - .SH AUTHOR - Brendan Gregg - .SH SEE ALSO --- -2.35.3 - diff --git a/SOURCES/bcc-0.24.0-RHEL-libbpf-version-fixes.patch b/SOURCES/bcc-0.24.0-RHEL-libbpf-version-fixes.patch deleted file mode 100644 index b00d20e..0000000 --- a/SOURCES/bcc-0.24.0-RHEL-libbpf-version-fixes.patch +++ /dev/null @@ -1,324 +0,0 @@ -From 8f2951559127ffb93c3e36d5fc9d870768826ae9 Mon Sep 17 00:00:00 2001 -From: Jerome Marchand -Date: Thu, 24 Mar 2022 16:08:17 +0100 -Subject: [PATCH 2/2] RHEL: libbpf version fixes - -Revert "bcc: Replace deprecated libbpf APIs" since the libbpf version -provided in RHEL 8 doesn't provide the new APIs. - -Remove BPF_MAP_TYPE_BLOOM_FILTER from bps since the libbpf version in -RHEL 8, doesn't provide bloom filter map. - -Rename btf__load_vmlinux_btf into libbpf_find_kernel_btf. The function -has been renamed upstream for naming consistency, but RHEL 8 libbpf -still uses the old name. - -Add definition of struct bpf_core_relo. ---- - introspection/bps.c | 1 - - libbpf-tools/ksnoop.c | 2 +- - src/cc/bcc_btf.cc | 73 ++++++++++++++++++++++++++++++++++++- - src/cc/libbpf.c | 84 +++++++------------------------------------ - 4 files changed, 85 insertions(+), 75 deletions(-) - -diff --git a/introspection/bps.c b/introspection/bps.c -index 232b23d4..6ec02e6c 100644 ---- a/introspection/bps.c -+++ b/introspection/bps.c -@@ -80,7 +80,6 @@ static const char * const map_type_strings[] = { - [BPF_MAP_TYPE_RINGBUF] = "ringbuf", - [BPF_MAP_TYPE_INODE_STORAGE] = "inode_storage", - [BPF_MAP_TYPE_TASK_STORAGE] = "task_storage", -- [BPF_MAP_TYPE_BLOOM_FILTER] = "bloom_filter", - }; - - #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) -diff --git a/libbpf-tools/ksnoop.c b/libbpf-tools/ksnoop.c -index 69c58403..a6ea6107 100644 ---- a/libbpf-tools/ksnoop.c -+++ b/libbpf-tools/ksnoop.c -@@ -347,7 +347,7 @@ static struct btf *get_btf(const char *name) - name && strlen(name) > 0 ? name : "vmlinux"); - - if (!vmlinux_btf) { -- vmlinux_btf = btf__load_vmlinux_btf(); -+ vmlinux_btf = libbpf_find_kernel_btf(); - if (!vmlinux_btf) { - err = -errno; - p_err("No BTF, cannot determine type info: %s", strerror(-err)); -diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc -index 7f551ae8..c78ba823 100644 ---- a/src/cc/bcc_btf.cc -+++ b/src/cc/bcc_btf.cc -@@ -170,6 +170,77 @@ static int btf_ext_setup_line_info(struct btf_ext *btf_ext) - return btf_ext_setup_info(btf_ext, ¶m); - } - -+/* bpf_core_relo_kind encodes which aspect of captured field/type/enum value -+ * has to be adjusted by relocations. -+ */ -+enum bpf_core_relo_kind { -+ BPF_FIELD_BYTE_OFFSET = 0, /* field byte offset */ -+ BPF_FIELD_BYTE_SIZE = 1, /* field size in bytes */ -+ BPF_FIELD_EXISTS = 2, /* field existence in target kernel */ -+ BPF_FIELD_SIGNED = 3, /* field signedness (0 - unsigned, 1 - signed) */ -+ BPF_FIELD_LSHIFT_U64 = 4, /* bitfield-specific left bitshift */ -+ BPF_FIELD_RSHIFT_U64 = 5, /* bitfield-specific right bitshift */ -+ BPF_TYPE_ID_LOCAL = 6, /* type ID in local BPF object */ -+ BPF_TYPE_ID_TARGET = 7, /* type ID in target kernel */ -+ BPF_TYPE_EXISTS = 8, /* type existence in target kernel */ -+ BPF_TYPE_SIZE = 9, /* type size in bytes */ -+ BPF_ENUMVAL_EXISTS = 10, /* enum value existence in target kernel */ -+ BPF_ENUMVAL_VALUE = 11, /* enum value integer value */ -+}; -+ -+/* The minimum bpf_core_relo checked by the loader -+ * -+ * CO-RE relocation captures the following data: -+ * - insn_off - instruction offset (in bytes) within a BPF program that needs -+ * its insn->imm field to be relocated with actual field info; -+ * - type_id - BTF type ID of the "root" (containing) entity of a relocatable -+ * type or field; -+ * - access_str_off - offset into corresponding .BTF string section. String -+ * interpretation depends on specific relocation kind: -+ * - for field-based relocations, string encodes an accessed field using -+ * a sequence of field and array indices, separated by colon (:). It's -+ * conceptually very close to LLVM's getelementptr ([0]) instruction's -+ * arguments for identifying offset to a field. -+ * - for type-based relocations, strings is expected to be just "0"; -+ * - for enum value-based relocations, string contains an index of enum -+ * value within its enum type; -+ * -+ * Example to provide a better feel. -+ * -+ * struct sample { -+ * int a; -+ * struct { -+ * int b[10]; -+ * }; -+ * }; -+ * -+ * struct sample *s = ...; -+ * int x = &s->a; // encoded as "0:0" (a is field #0) -+ * int y = &s->b[5]; // encoded as "0:1:0:5" (anon struct is field #1, -+ * // b is field #0 inside anon struct, accessing elem #5) -+ * int z = &s[10]->b; // encoded as "10:1" (ptr is used as an array) -+ * -+ * type_id for all relocs in this example will capture BTF type id of -+ * `struct sample`. -+ * -+ * Such relocation is emitted when using __builtin_preserve_access_index() -+ * Clang built-in, passing expression that captures field address, e.g.: -+ * -+ * bpf_probe_read(&dst, sizeof(dst), -+ * __builtin_preserve_access_index(&src->a.b.c)); -+ * -+ * In this case Clang will emit field relocation recording necessary data to -+ * be able to find offset of embedded `a.b.c` field within `src` struct. -+ * -+ * [0] https://llvm.org/docs/LangRef.html#getelementptr-instruction -+ */ -+struct bpf_core_relo { -+ __u32 insn_off; -+ __u32 type_id; -+ __u32 access_str_off; -+ enum bpf_core_relo_kind kind; -+}; -+ - static int btf_ext_setup_core_relos(struct btf_ext *btf_ext) - { - struct btf_ext_sec_setup_param param = { -@@ -597,7 +668,7 @@ int BTF::load(uint8_t *btf_sec, uintptr_t btf_sec_size, - return -1; - } - -- if (btf__load_into_kernel(btf)) { -+ if (btf__load(btf)) { - btf__free(btf); - warning("Loading .BTF section failed\n"); - return -1; -diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c -index e6403299..7410ae1a 100644 ---- a/src/cc/libbpf.c -+++ b/src/cc/libbpf.c -@@ -297,25 +297,6 @@ static uint64_t ptr_to_u64(void *ptr) - return (uint64_t) (unsigned long) ptr; - } - --static int libbpf_bpf_map_create(struct bpf_create_map_attr *create_attr) --{ -- LIBBPF_OPTS(bpf_map_create_opts, p); -- -- p.map_flags = create_attr->map_flags; -- p.numa_node = create_attr->numa_node; -- p.btf_fd = create_attr->btf_fd; -- p.btf_key_type_id = create_attr->btf_key_type_id; -- p.btf_value_type_id = create_attr->btf_value_type_id; -- p.map_ifindex = create_attr->map_ifindex; -- if (create_attr->map_type == BPF_MAP_TYPE_STRUCT_OPS) -- p.btf_vmlinux_value_type_id = create_attr->btf_vmlinux_value_type_id; -- else -- p.inner_map_fd = create_attr->inner_map_fd; -- -- return bpf_map_create(create_attr->map_type, create_attr->name, create_attr->key_size, -- create_attr->value_size, create_attr->max_entries, &p); --} -- - int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) - { - unsigned name_len = attr->name ? strlen(attr->name) : 0; -@@ -323,7 +304,7 @@ int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) - - memcpy(map_name, attr->name, min(name_len, BPF_OBJ_NAME_LEN - 1)); - attr->name = map_name; -- int ret = libbpf_bpf_map_create(attr); -+ int ret = bpf_create_map_xattr(attr); - - if (ret < 0 && errno == EPERM) { - if (!allow_rlimit) -@@ -335,7 +316,7 @@ int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) - rl.rlim_max = RLIM_INFINITY; - rl.rlim_cur = rl.rlim_max; - if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) -- ret = libbpf_bpf_map_create(attr); -+ ret = bpf_create_map_xattr(attr); - } - } - -@@ -345,12 +326,12 @@ int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) - attr->btf_fd = 0; - attr->btf_key_type_id = 0; - attr->btf_value_type_id = 0; -- ret = libbpf_bpf_map_create(attr); -+ ret = bpf_create_map_xattr(attr); - } - - if (ret < 0 && name_len && (errno == E2BIG || errno == EINVAL)) { - map_name[0] = '\0'; -- ret = libbpf_bpf_map_create(attr); -+ ret = bpf_create_map_xattr(attr); - } - - if (ret < 0 && errno == EPERM) { -@@ -363,7 +344,7 @@ int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) - rl.rlim_max = RLIM_INFINITY; - rl.rlim_cur = rl.rlim_max; - if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) -- ret = libbpf_bpf_map_create(attr); -+ ret = bpf_create_map_xattr(attr); - } - } - return ret; -@@ -627,47 +608,6 @@ int bpf_prog_get_tag(int fd, unsigned long long *ptag) - return 0; - } - --static int libbpf_bpf_prog_load(const struct bpf_load_program_attr *load_attr, -- char *log_buf, size_t log_buf_sz) --{ -- LIBBPF_OPTS(bpf_prog_load_opts, p); -- -- if (!load_attr || !log_buf != !log_buf_sz) { -- errno = EINVAL; -- return -EINVAL; -- } -- -- p.expected_attach_type = load_attr->expected_attach_type; -- switch (load_attr->prog_type) { -- case BPF_PROG_TYPE_STRUCT_OPS: -- case BPF_PROG_TYPE_LSM: -- p.attach_btf_id = load_attr->attach_btf_id; -- break; -- case BPF_PROG_TYPE_TRACING: -- case BPF_PROG_TYPE_EXT: -- p.attach_btf_id = load_attr->attach_btf_id; -- p.attach_prog_fd = load_attr->attach_prog_fd; -- break; -- default: -- p.prog_ifindex = load_attr->prog_ifindex; -- p.kern_version = load_attr->kern_version; -- } -- p.log_level = load_attr->log_level; -- p.log_buf = log_buf; -- p.log_size = log_buf_sz; -- p.prog_btf_fd = load_attr->prog_btf_fd; -- p.func_info_rec_size = load_attr->func_info_rec_size; -- p.func_info_cnt = load_attr->func_info_cnt; -- p.func_info = load_attr->func_info; -- p.line_info_rec_size = load_attr->line_info_rec_size; -- p.line_info_cnt = load_attr->line_info_cnt; -- p.line_info = load_attr->line_info; -- p.prog_flags = load_attr->prog_flags; -- -- return bpf_prog_load(load_attr->prog_type, load_attr->name, load_attr->license, -- load_attr->insns, load_attr->insns_cnt, &p); --} -- - int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - char *log_buf, unsigned log_buf_size, bool allow_rlimit) - { -@@ -750,7 +690,7 @@ int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - attr->name = prog_name; - } - -- ret = libbpf_bpf_prog_load(attr, attr_log_buf, attr_log_buf_size); -+ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); - - // func_info/line_info may not be supported in old kernels. - if (ret < 0 && attr->func_info && errno == EINVAL) { -@@ -761,14 +701,14 @@ int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - attr->line_info = NULL; - attr->line_info_cnt = 0; - attr->line_info_rec_size = 0; -- ret = libbpf_bpf_prog_load(attr, attr_log_buf, attr_log_buf_size); -+ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); - } - - // BPF object name is not supported on older Kernels. - // If we failed due to this, clear the name and try again. - if (ret < 0 && name_len && (errno == E2BIG || errno == EINVAL)) { - prog_name[0] = '\0'; -- ret = libbpf_bpf_prog_load(attr, attr_log_buf, attr_log_buf_size); -+ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); - } - - if (ret < 0 && errno == EPERM) { -@@ -787,7 +727,7 @@ int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - rl.rlim_max = RLIM_INFINITY; - rl.rlim_cur = rl.rlim_max; - if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) -- ret = libbpf_bpf_prog_load(attr, attr_log_buf, attr_log_buf_size); -+ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); - } - } - -@@ -805,7 +745,7 @@ int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - // If logging is not already enabled, enable it and do the syscall again. - if (attr->log_level == 0) { - attr->log_level = 1; -- ret = libbpf_bpf_prog_load(attr, log_buf, log_buf_size); -+ ret = bpf_load_program_xattr(attr, log_buf, log_buf_size); - } - // Print the log message and return. - bpf_print_hints(ret, log_buf); -@@ -829,7 +769,7 @@ int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, - goto return_result; - } - tmp_log_buf[0] = 0; -- ret = libbpf_bpf_prog_load(attr, tmp_log_buf, tmp_log_buf_size); -+ ret = bpf_load_program_xattr(attr, tmp_log_buf, tmp_log_buf_size); - if (ret < 0 && errno == ENOSPC) { - // Temporary buffer size is not enough. Double it and try again. - free(tmp_log_buf); -@@ -1369,7 +1309,7 @@ int kernel_struct_has_field(const char *struct_name, const char *field_name) - struct btf *btf; - int i, ret, btf_id; - -- btf = btf__load_vmlinux_btf(); -+ btf = libbpf_find_kernel_btf(); - ret = libbpf_get_error(btf); - if (ret) - return -1; --- -2.35.3 - diff --git a/SOURCES/bcc-0.24.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch b/SOURCES/bcc-0.24.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch deleted file mode 100644 index 9f58ae0..0000000 --- a/SOURCES/bcc-0.24.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch +++ /dev/null @@ -1,69 +0,0 @@ -From e9ae2826b8712d491362771233ed6bf21ae1a07a Mon Sep 17 00:00:00 2001 -From: Jerome Marchand -Date: Thu, 19 May 2022 16:37:40 +0200 -Subject: [PATCH 3/3] libbpf: Allow kernel_struct_has_field to reach field in - unnamed struct or union - -Some field can belong to unnamed struct or union. In C, they are -accessed as if their belong directly to the parent struct or union but -this is not the case for BTF. - -When looking for a field, kernel_struct_has_field should also look -reccursively into unnamed structs or unions. ---- - src/cc/libbpf.c | 28 ++++++++++++++++++---------- - 1 file changed, 18 insertions(+), 10 deletions(-) - -diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c -index 7410ae1a..e98b8852 100644 ---- a/src/cc/libbpf.c -+++ b/src/cc/libbpf.c -@@ -1302,12 +1302,27 @@ bool bpf_has_kernel_btf(void) - return true; - } - -+static int find_member_by_name(struct btf *btf, const struct btf_type *btf_type, const char *field_name) { -+ const struct btf_member *btf_member = btf_members(btf_type); -+ int i; -+ -+ for (i = 0; i < btf_vlen(btf_type); i++, btf_member++) { -+ const char *name = btf__name_by_offset(btf, btf_member->name_off); -+ if (!strcmp(name, field_name)) { -+ return 1; -+ } else if (name[0] == '\0') { -+ if (find_member_by_name(btf, btf__type_by_id(btf, btf_member->type), field_name)) -+ return 1; -+ } -+ } -+ return 0; -+} -+ - int kernel_struct_has_field(const char *struct_name, const char *field_name) - { - const struct btf_type *btf_type; -- const struct btf_member *btf_member; - struct btf *btf; -- int i, ret, btf_id; -+ int ret, btf_id; - - btf = libbpf_find_kernel_btf(); - ret = libbpf_get_error(btf); -@@ -1321,14 +1336,7 @@ int kernel_struct_has_field(const char *struct_name, const char *field_name) - } - - btf_type = btf__type_by_id(btf, btf_id); -- btf_member = btf_members(btf_type); -- for (i = 0; i < btf_vlen(btf_type); i++, btf_member++) { -- if (!strcmp(btf__name_by_offset(btf, btf_member->name_off), field_name)) { -- ret = 1; -- goto cleanup; -- } -- } -- ret = 0; -+ ret = find_member_by_name(btf, btf_type, field_name); - - cleanup: - btf__free(btf); --- -2.35.3 - diff --git a/SOURCES/bcc-0.25.0-Fix-bpf_pseudo_fd-type-conversion-error.patch b/SOURCES/bcc-0.25.0-Fix-bpf_pseudo_fd-type-conversion-error.patch new file mode 100644 index 0000000..7ee0a2c --- /dev/null +++ b/SOURCES/bcc-0.25.0-Fix-bpf_pseudo_fd-type-conversion-error.patch @@ -0,0 +1,77 @@ +From 728005aac7c23590a406ac67235d915e416bff5d Mon Sep 17 00:00:00 2001 +From: Yonghong Song +Date: Sat, 13 Aug 2022 17:50:07 -0700 +Subject: [PATCH 1/2] Fix bpf_pseudo_fd() type conversion error + +With llvm15 and llvm16, the following command line + sudo ./trace.py 'smp_call_function_single "%K", arg1' +will cause error: + /virtual/main.c:60:36: error: incompatible integer to pointer conversion passing 'u64' + (aka 'unsigned long long') to parameter of type 'void *' [-Wint-conversion] + bpf_perf_event_output(ctx, bpf_pseudo_fd(1, -1), CUR_CPU_IDENTIFIER, &__data, sizeof(__data)); + ^~~~~~~~~~~~~~~~~~~~ + 1 error generated. + Failed to compile BPF module + +In helpers.h, we have + u64 bpf_pseudo_fd(u64, u64) asm("llvm.bpf.pseudo"); +Apparently, <= llvm14 can tolerate u64 -> 'void *' conversion, but +llvm15 by default will cause an error. + +Let us explicitly convert bpf_pseudo_fd to 'void *' to avoid +such errors. + +Signed-off-by: Yonghong Song +--- + src/cc/frontends/clang/b_frontend_action.cc | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/cc/frontends/clang/b_frontend_action.cc b/src/cc/frontends/clang/b_frontend_action.cc +index a4e05b16..dbeba3e4 100644 +--- a/src/cc/frontends/clang/b_frontend_action.cc ++++ b/src/cc/frontends/clang/b_frontend_action.cc +@@ -957,7 +957,7 @@ bool BTypeVisitor::VisitCallExpr(CallExpr *Call) { + string arg0 = rewriter_.getRewrittenText(expansionRange(Call->getArg(0)->getSourceRange())); + string args_other = rewriter_.getRewrittenText(expansionRange(SourceRange(GET_BEGINLOC(Call->getArg(1)), + GET_ENDLOC(Call->getArg(2))))); +- txt = "bpf_perf_event_output(" + arg0 + ", bpf_pseudo_fd(1, " + fd + ")"; ++ txt = "bpf_perf_event_output(" + arg0 + ", (void *)bpf_pseudo_fd(1, " + fd + ")"; + txt += ", CUR_CPU_IDENTIFIER, " + args_other + ")"; + + // e.g. +@@ -986,7 +986,7 @@ bool BTypeVisitor::VisitCallExpr(CallExpr *Call) { + string meta_len = rewriter_.getRewrittenText(expansionRange(Call->getArg(3)->getSourceRange())); + txt = "bpf_perf_event_output(" + + skb + ", " + +- "bpf_pseudo_fd(1, " + fd + "), " + ++ "(void *)bpf_pseudo_fd(1, " + fd + "), " + + "((__u64)" + skb_len + " << 32) | BPF_F_CURRENT_CPU, " + + meta + ", " + + meta_len + ");"; +@@ -1006,12 +1006,12 @@ bool BTypeVisitor::VisitCallExpr(CallExpr *Call) { + string keyp = rewriter_.getRewrittenText(expansionRange(Call->getArg(1)->getSourceRange())); + string flag = rewriter_.getRewrittenText(expansionRange(Call->getArg(2)->getSourceRange())); + txt = "bpf_" + string(memb_name) + "(" + ctx + ", " + +- "bpf_pseudo_fd(1, " + fd + "), " + keyp + ", " + flag + ");"; ++ "(void *)bpf_pseudo_fd(1, " + fd + "), " + keyp + ", " + flag + ");"; + } else if (memb_name == "ringbuf_output") { + string name = string(Ref->getDecl()->getName()); + string args = rewriter_.getRewrittenText(expansionRange(SourceRange(GET_BEGINLOC(Call->getArg(0)), + GET_ENDLOC(Call->getArg(2))))); +- txt = "bpf_ringbuf_output(bpf_pseudo_fd(1, " + fd + ")"; ++ txt = "bpf_ringbuf_output((void *)bpf_pseudo_fd(1, " + fd + ")"; + txt += ", " + args + ")"; + + // e.g. +@@ -1033,7 +1033,7 @@ bool BTypeVisitor::VisitCallExpr(CallExpr *Call) { + } else if (memb_name == "ringbuf_reserve") { + string name = string(Ref->getDecl()->getName()); + string arg0 = rewriter_.getRewrittenText(expansionRange(Call->getArg(0)->getSourceRange())); +- txt = "bpf_ringbuf_reserve(bpf_pseudo_fd(1, " + fd + ")"; ++ txt = "bpf_ringbuf_reserve((void *)bpf_pseudo_fd(1, " + fd + ")"; + txt += ", " + arg0 + ", 0)"; // Flags in reserve are meaningless + } else if (memb_name == "ringbuf_discard") { + string name = string(Ref->getDecl()->getName()); +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-Fix-clang-15-int-to-pointer-conversion-errors.patch b/SOURCES/bcc-0.25.0-Fix-clang-15-int-to-pointer-conversion-errors.patch new file mode 100644 index 0000000..6b12079 --- /dev/null +++ b/SOURCES/bcc-0.25.0-Fix-clang-15-int-to-pointer-conversion-errors.patch @@ -0,0 +1,96 @@ +From f5a6c22f613d0566ba542f38f349be379e3844e8 Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Wed, 26 Oct 2022 14:41:54 +0200 +Subject: [PATCH 2/2] Fix clang 15 int to pointer conversion errors + +Since version 15, clang issues error for implicit conversion of +integer to pointer. Several tools are broken. This patch add explicit +pointer cast where needed. + +Fixes the following errors: +/virtual/main.c:37:18: error: incompatible integer to pointer conversion initializing 'struct request *' with an expression of type 'unsigned long' [-Wint-conversion] + struct request *req = ctx->di; + ^ ~~~~~~~ +/virtual/main.c:49:18: error: incompatible integer to pointer conversion initializing 'struct request *' with an expression of type 'unsigned long' [-Wint-conversion] + struct request *req = ctx->di; + ^ ~~~~~~~ +2 errors generated. + +/virtual/main.c:73:19: error: incompatible integer to pointer conversion initializing 'struct pt_regs *' with an expression of type 'unsigned long' [-Wint-conversion] + struct pt_regs * __ctx = ctx->di; + ^ ~~~~~~~ +/virtual/main.c:100:240: error: incompatible integer to pointer conversion passing 'u64' (aka 'unsigned long long') to parameter of type 'const void *' [-Wint-conversion] + data.ppid = ({ typeof(pid_t) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&({ typeof(struct task_struct *) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&task->real_parent); _val; })->tgid); _val; }); + ^~~~~~~~~~~~~~~~~~~~~~~ +/virtual/main.c:100:118: error: incompatible integer to pointer conversion passing 'u64' (aka 'unsigned long long') to parameter of type 'const void *' [-Wint-conversion] + data.ppid = ({ typeof(pid_t) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&({ typeof(struct task_struct *) _val; __builtin_memset(&_val, 0, sizeof(_val)); bpf_probe_read(&_val, sizeof(_val), (u64)&task->real_parent); _val; })->tgid); _val; }); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Jerome Marchand +--- + src/cc/frontends/clang/b_frontend_action.cc | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/cc/frontends/clang/b_frontend_action.cc b/src/cc/frontends/clang/b_frontend_action.cc +index dbeba3e4..c0582464 100644 +--- a/src/cc/frontends/clang/b_frontend_action.cc ++++ b/src/cc/frontends/clang/b_frontend_action.cc +@@ -517,9 +517,9 @@ bool ProbeVisitor::VisitUnaryOperator(UnaryOperator *E) { + string pre, post; + pre = "({ typeof(" + E->getType().getAsString() + ") _val; __builtin_memset(&_val, 0, sizeof(_val));"; + if (cannot_fall_back_safely) +- pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (u64)"; ++ pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (void *)"; + else +- pre += " bpf_probe_read(&_val, sizeof(_val), (u64)"; ++ pre += " bpf_probe_read(&_val, sizeof(_val), (void *)"; + post = "); _val; })"; + rewriter_.ReplaceText(expansionLoc(E->getOperatorLoc()), 1, pre); + rewriter_.InsertTextAfterToken(expansionLoc(GET_ENDLOC(sub)), post); +@@ -581,9 +581,9 @@ bool ProbeVisitor::VisitMemberExpr(MemberExpr *E) { + string pre, post; + pre = "({ typeof(" + E->getType().getAsString() + ") _val; __builtin_memset(&_val, 0, sizeof(_val));"; + if (cannot_fall_back_safely) +- pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (u64)&"; ++ pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (void *)&"; + else +- pre += " bpf_probe_read(&_val, sizeof(_val), (u64)&"; ++ pre += " bpf_probe_read(&_val, sizeof(_val), (void *)&"; + post = rhs + "); _val; })"; + rewriter_.InsertText(expansionLoc(GET_BEGINLOC(E)), pre); + rewriter_.ReplaceText(expansionRange(SourceRange(member, GET_ENDLOC(E))), post); +@@ -635,9 +635,9 @@ bool ProbeVisitor::VisitArraySubscriptExpr(ArraySubscriptExpr *E) { + + pre = "({ typeof(" + E->getType().getAsString() + ") _val; __builtin_memset(&_val, 0, sizeof(_val));"; + if (cannot_fall_back_safely) +- pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (u64)(("; ++ pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (void *)(("; + else +- pre += " bpf_probe_read(&_val, sizeof(_val), (u64)(("; ++ pre += " bpf_probe_read(&_val, sizeof(_val), (void *)(("; + if (isMemberDereference(base)) { + pre += "&"; + // If the base of the array subscript is a member dereference, we'll rewrite +@@ -747,8 +747,8 @@ void BTypeVisitor::genParamDirectAssign(FunctionDecl *D, string& preamble, + arg->addAttr(UnavailableAttr::CreateImplicit(C, "ptregs")); + size_t d = idx - 1; + const char *reg = calling_conv_regs[d]; +- preamble += " " + text + " = " + fn_args_[0]->getName().str() + "->" + +- string(reg) + ";"; ++ preamble += " " + text + " = (" + arg->getType().getAsString() + ")" + ++ fn_args_[0]->getName().str() + "->" + string(reg) + ";"; + } + } + } +@@ -762,7 +762,7 @@ void BTypeVisitor::genParamIndirectAssign(FunctionDecl *D, string& preamble, + + if (idx == 0) { + new_ctx = "__" + arg->getName().str(); +- preamble += " struct pt_regs * " + new_ctx + " = " + ++ preamble += " struct pt_regs * " + new_ctx + " = (void *)" + + arg->getName().str() + "->" + + string(calling_conv_regs[0]) + ";"; + } else { +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-Fix-get_kprobe_functions.patch b/SOURCES/bcc-0.25.0-Fix-get_kprobe_functions.patch new file mode 100644 index 0000000..b3b224f --- /dev/null +++ b/SOURCES/bcc-0.25.0-Fix-get_kprobe_functions.patch @@ -0,0 +1,30 @@ +From c27899b15bca6188d34c0b87b3389eeda2a90cb5 Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Mon, 9 Jan 2023 18:17:20 +0100 +Subject: [PATCH] Fix get_kprobe_functions + +get_kprobe_functions will not only return a function that matches the +regular expression, but also any function that starts with a +substrings that matches it. This is obviously not the intended +behavior. +The issue is easily fixed by replacing re.match by re.fullmatch. +--- + src/python/bcc/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/python/bcc/__init__.py b/src/python/bcc/__init__.py +index 7175b98e..970ddcc2 100644 +--- a/src/python/bcc/__init__.py ++++ b/src/python/bcc/__init__.py +@@ -745,7 +745,7 @@ DEBUG_BTF = 0x20 + # Exclude all gcc 8's extra .cold functions + elif re.match(b'^.*\.cold(\.\d+)?$', fn): + continue +- if (t.lower() in [b't', b'w']) and re.match(event_re, fn) \ ++ if (t.lower() in [b't', b'w']) and re.fullmatch(event_re, fn) \ + and fn not in blacklist: + fns.append(fn) + return set(fns) # Some functions may appear more than once +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-Manpages-remove-unstable-statement.patch b/SOURCES/bcc-0.25.0-Manpages-remove-unstable-statement.patch new file mode 100644 index 0000000..904bff1 --- /dev/null +++ b/SOURCES/bcc-0.25.0-Manpages-remove-unstable-statement.patch @@ -0,0 +1,1480 @@ +From ce407eab95f96badd1879c9c7342eeabcfd17311 Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Tue, 6 Aug 2019 14:44:33 +0200 +Subject: [PATCH 1/3] Manpages: remove unstable statement + +The tools are tested before each release. They should be stable +enough. +--- + man/man8/argdist.8 | 2 -- + man/man8/bashreadline.8 | 2 -- + man/man8/bindsnoop.8 | 2 -- + man/man8/biolatency.8 | 2 -- + man/man8/biolatpcts.8 | 2 -- + man/man8/biopattern.8 | 2 -- + man/man8/biosnoop.8 | 2 -- + man/man8/biotop.8 | 2 -- + man/man8/bitesize.8 | 2 -- + man/man8/bpflist.8 | 2 -- + man/man8/bps.8 | 2 -- + man/man8/btrfsdist.8 | 2 -- + man/man8/btrfsslower.8 | 2 -- + man/man8/cachestat.8 | 2 -- + man/man8/cachetop.8 | 2 -- + man/man8/capable.8 | 2 -- + man/man8/compactsnoop.8 | 2 -- + man/man8/cpudist.8 | 2 -- + man/man8/cpuunclaimed.8 | 2 -- + man/man8/criticalstat.8 | 2 -- + man/man8/dbslower.8 | 2 -- + man/man8/dbstat.8 | 2 -- + man/man8/dcsnoop.8 | 2 -- + man/man8/dcstat.8 | 2 -- + man/man8/deadlock.8 | 2 -- + man/man8/dirtop.8 | 2 -- + man/man8/drsnoop.8 | 2 -- + man/man8/execsnoop.8 | 2 -- + man/man8/exitsnoop.8 | 2 -- + man/man8/ext4dist.8 | 2 -- + man/man8/ext4slower.8 | 2 -- + man/man8/filelife.8 | 2 -- + man/man8/fileslower.8 | 2 -- + man/man8/filetop.8 | 2 -- + man/man8/funccount.8 | 2 -- + man/man8/funcinterval.8 | 2 -- + man/man8/funclatency.8 | 2 -- + man/man8/funcslower.8 | 2 -- + man/man8/gethostlatency.8 | 2 -- + man/man8/hardirqs.8 | 2 -- + man/man8/inject.8 | 4 ---- + man/man8/killsnoop.8 | 2 -- + man/man8/klockstat.8 | 2 -- + man/man8/kvmexit.8 | 2 -- + man/man8/llcstat.8 | 2 -- + man/man8/mdflush.8 | 2 -- + man/man8/memleak.8 | 2 -- + man/man8/mountsnoop.8 | 2 -- + man/man8/mysqld_qslower.8 | 2 -- + man/man8/netqtop.8 | 2 -- + man/man8/nfsdist.8 | 2 -- + man/man8/nfsslower.8 | 2 -- + man/man8/offcputime.8 | 2 -- + man/man8/offwaketime.8 | 2 -- + man/man8/oomkill.8 | 2 -- + man/man8/opensnoop.8 | 2 -- + man/man8/pidpersec.8 | 2 -- + man/man8/profile.8 | 2 -- + man/man8/readahead.8 | 2 -- + man/man8/reset-trace.8 | 2 -- + man/man8/runqlat.8 | 2 -- + man/man8/runqlen.8 | 2 -- + man/man8/runqslower.8 | 2 -- + man/man8/shmsnoop.8 | 2 -- + man/man8/slabratetop.8 | 2 -- + man/man8/sofdsnoop.8 | 2 -- + man/man8/softirqs.8 | 2 -- + man/man8/solisten.8 | 2 -- + man/man8/spfdsnoop.8 | 2 -- + man/man8/sslsniff.8 | 2 -- + man/man8/stackcount.8 | 2 -- + man/man8/statsnoop.8 | 2 -- + man/man8/swapin.8 | 2 -- + man/man8/syncsnoop.8 | 2 -- + man/man8/syscount.8 | 2 -- + man/man8/tcpaccept.8 | 2 -- + man/man8/tcpcong.8 | 2 -- + man/man8/tcpconnect.8 | 2 -- + man/man8/tcpconnlat.8 | 2 -- + man/man8/tcpdrop.8 | 2 -- + man/man8/tcplife.8 | 2 -- + man/man8/tcpretrans.8 | 2 -- + man/man8/tcprtt.8 | 2 -- + man/man8/tcpstates.8 | 2 -- + man/man8/tcpsubnet.8 | 2 -- + man/man8/tcpsynbl.8 | 2 -- + man/man8/tcptop.8 | 2 -- + man/man8/tcptracer.8 | 2 -- + man/man8/threadsnoop.8 | 2 -- + man/man8/tplist.8 | 2 -- + man/man8/trace.8 | 2 -- + man/man8/ttysnoop.8 | 2 -- + man/man8/ucalls.8 | 2 -- + man/man8/uflow.8 | 2 -- + man/man8/ugc.8 | 2 -- + man/man8/uobjnew.8 | 2 -- + man/man8/ustat.8 | 2 -- + man/man8/uthreads.8 | 2 -- + man/man8/vfscount.8 | 2 -- + man/man8/vfsstat.8 | 2 -- + man/man8/virtiostat.8 | 2 -- + man/man8/wakeuptime.8 | 2 -- + man/man8/xfsdist.8 | 2 -- + man/man8/xfsslower.8 | 2 -- + man/man8/zfsdist.8 | 2 -- + man/man8/zfsslower.8 | 2 -- + 106 files changed, 214 deletions(-) + +diff --git a/man/man8/argdist.8 b/man/man8/argdist.8 +index 75b7fe63..99291521 100644 +--- a/man/man8/argdist.8 ++++ b/man/man8/argdist.8 +@@ -191,7 +191,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein +diff --git a/man/man8/bashreadline.8 b/man/man8/bashreadline.8 +index bc68a491..705c514e 100644 +--- a/man/man8/bashreadline.8 ++++ b/man/man8/bashreadline.8 +@@ -53,8 +53,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/bindsnoop.8 b/man/man8/bindsnoop.8 +index f8fa1850..05ed95a7 100644 +--- a/man/man8/bindsnoop.8 ++++ b/man/man8/bindsnoop.8 +@@ -141,8 +141,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Pavel Dubovitsky + .SH SEE ALSO +diff --git a/man/man8/biolatency.8 b/man/man8/biolatency.8 +index db2ef484..21c3930e 100644 +--- a/man/man8/biolatency.8 ++++ b/man/man8/biolatency.8 +@@ -108,8 +108,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/biolatpcts.8 b/man/man8/biolatpcts.8 +index 7a06a11d..9dd41d08 100644 +--- a/man/man8/biolatpcts.8 ++++ b/man/man8/biolatpcts.8 +@@ -81,8 +81,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Tejun Heo + .SH SEE ALSO +diff --git a/man/man8/biopattern.8 b/man/man8/biopattern.8 +index 451d667f..70ba73e7 100644 +--- a/man/man8/biopattern.8 ++++ b/man/man8/biopattern.8 +@@ -70,8 +70,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/biosnoop.8 b/man/man8/biosnoop.8 +index 24f19edf..06a85757 100644 +--- a/man/man8/biosnoop.8 ++++ b/man/man8/biosnoop.8 +@@ -82,8 +82,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/biotop.8 b/man/man8/biotop.8 +index 47392bc7..ac71d34e 100644 +--- a/man/man8/biotop.8 ++++ b/man/man8/biotop.8 +@@ -98,8 +98,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Rocky Xing + .SH INSPIRATION +diff --git a/man/man8/bitesize.8 b/man/man8/bitesize.8 +index 655f69e7..314560b8 100644 +--- a/man/man8/bitesize.8 ++++ b/man/man8/bitesize.8 +@@ -43,8 +43,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Allan McAleavy + .SH SEE ALSO +diff --git a/man/man8/bpflist.8 b/man/man8/bpflist.8 +index 1cab0c81..afefd3af 100644 +--- a/man/man8/bpflist.8 ++++ b/man/man8/bpflist.8 +@@ -54,7 +54,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein +diff --git a/man/man8/bps.8 b/man/man8/bps.8 +index 4316be0b..8af8ee2d 100644 +--- a/man/man8/bps.8 ++++ b/man/man8/bps.8 +@@ -81,7 +81,5 @@ This is from bcc. + https://github.com/iovisor/bcc + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Martin Lau +diff --git a/man/man8/btrfsdist.8 b/man/man8/btrfsdist.8 +index 480264f9..cbf75121 100644 +--- a/man/man8/btrfsdist.8 ++++ b/man/man8/btrfsdist.8 +@@ -74,8 +74,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/btrfsslower.8 b/man/man8/btrfsslower.8 +index a1ea106a..33864589 100644 +--- a/man/man8/btrfsslower.8 ++++ b/man/man8/btrfsslower.8 +@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/cachestat.8 b/man/man8/cachestat.8 +index 172194d4..575941fc 100644 +--- a/man/man8/cachestat.8 ++++ b/man/man8/cachestat.8 +@@ -76,8 +76,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Allan McAleavy + .SH SEE ALSO +diff --git a/man/man8/cachetop.8 b/man/man8/cachetop.8 +index bb7bb3cc..079b3cbf 100644 +--- a/man/man8/cachetop.8 ++++ b/man/man8/cachetop.8 +@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Emmanuel Bretelle, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/capable.8 b/man/man8/capable.8 +index 342946f8..2b7d13ba 100644 +--- a/man/man8/capable.8 ++++ b/man/man8/capable.8 +@@ -87,8 +87,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/compactsnoop.8 b/man/man8/compactsnoop.8 +index a2933d7a..c1339579 100644 +--- a/man/man8/compactsnoop.8 ++++ b/man/man8/compactsnoop.8 +@@ -173,7 +173,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Wenbo Zhang +diff --git a/man/man8/cpudist.8 b/man/man8/cpudist.8 +index 59937baa..1d6a7198 100644 +--- a/man/man8/cpudist.8 ++++ b/man/man8/cpudist.8 +@@ -115,8 +115,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/cpuunclaimed.8 b/man/man8/cpuunclaimed.8 +index 674be499..107ff67b 100644 +--- a/man/man8/cpuunclaimed.8 ++++ b/man/man8/cpuunclaimed.8 +@@ -98,8 +98,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/criticalstat.8 b/man/man8/criticalstat.8 +index 6b1c1110..6df592a3 100644 +--- a/man/man8/criticalstat.8 ++++ b/man/man8/criticalstat.8 +@@ -66,8 +66,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Joel Fernandes + .SH SEE ALSO +diff --git a/man/man8/dbslower.8 b/man/man8/dbslower.8 +index e39b8bd0..e73b77f1 100644 +--- a/man/man8/dbslower.8 ++++ b/man/man8/dbslower.8 +@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein, Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/dbstat.8 b/man/man8/dbstat.8 +index c8e8fd8f..2ca31c67 100644 +--- a/man/man8/dbstat.8 ++++ b/man/man8/dbstat.8 +@@ -64,8 +64,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/dcsnoop.8 b/man/man8/dcsnoop.8 +index 6ccb3b65..1d707ba1 100644 +--- a/man/man8/dcsnoop.8 ++++ b/man/man8/dcsnoop.8 +@@ -69,8 +69,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/dcstat.8 b/man/man8/dcstat.8 +index e2bc4dc8..0501460f 100644 +--- a/man/man8/dcstat.8 ++++ b/man/man8/dcstat.8 +@@ -53,8 +53,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/deadlock.8 b/man/man8/deadlock.8 +index 3e7744ce..9f0f7de0 100644 +--- a/man/man8/deadlock.8 ++++ b/man/man8/deadlock.8 +@@ -144,7 +144,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Kenny Yu +diff --git a/man/man8/dirtop.8 b/man/man8/dirtop.8 +index cc61a676..9a0fd3d9 100644 +--- a/man/man8/dirtop.8 ++++ b/man/man8/dirtop.8 +@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Erwan Velu + .SH INSPIRATION +diff --git a/man/man8/drsnoop.8 b/man/man8/drsnoop.8 +index 90ca901f..64cc1c68 100644 +--- a/man/man8/drsnoop.8 ++++ b/man/man8/drsnoop.8 +@@ -107,7 +107,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Wenbo Zhang +diff --git a/man/man8/execsnoop.8 b/man/man8/execsnoop.8 +index e42ad38a..9daaf4b1 100644 +--- a/man/man8/execsnoop.8 ++++ b/man/man8/execsnoop.8 +@@ -141,8 +141,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/exitsnoop.8 b/man/man8/exitsnoop.8 +index 86a43921..c37e1caf 100644 +--- a/man/man8/exitsnoop.8 ++++ b/man/man8/exitsnoop.8 +@@ -102,8 +102,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Arturo Martin-de-Nicolas + .SH SEE ALSO +diff --git a/man/man8/ext4dist.8 b/man/man8/ext4dist.8 +index 61ecb727..ba17fc3d 100644 +--- a/man/man8/ext4dist.8 ++++ b/man/man8/ext4dist.8 +@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/ext4slower.8 b/man/man8/ext4slower.8 +index a16bd5ef..b6276269 100644 +--- a/man/man8/ext4slower.8 ++++ b/man/man8/ext4slower.8 +@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/filelife.8 b/man/man8/filelife.8 +index 9495d4e2..6438b374 100644 +--- a/man/man8/filelife.8 ++++ b/man/man8/filelife.8 +@@ -64,8 +64,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/fileslower.8 b/man/man8/fileslower.8 +index fe912436..d567986b 100644 +--- a/man/man8/fileslower.8 ++++ b/man/man8/fileslower.8 +@@ -106,8 +106,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/filetop.8 b/man/man8/filetop.8 +index 2d5f191d..6b588ef9 100644 +--- a/man/man8/filetop.8 ++++ b/man/man8/filetop.8 +@@ -111,8 +111,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH INSPIRATION +diff --git a/man/man8/funccount.8 b/man/man8/funccount.8 +index b2cb8575..9e019d92 100644 +--- a/man/man8/funccount.8 ++++ b/man/man8/funccount.8 +@@ -104,8 +104,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/funcinterval.8 b/man/man8/funcinterval.8 +index 77128290..f76ff315 100644 +--- a/man/man8/funcinterval.8 ++++ b/man/man8/funcinterval.8 +@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Edward Wu + .SH SEE ALSO +diff --git a/man/man8/funclatency.8 b/man/man8/funclatency.8 +index 9012b832..088b26cd 100644 +--- a/man/man8/funclatency.8 ++++ b/man/man8/funclatency.8 +@@ -131,8 +131,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/funcslower.8 b/man/man8/funcslower.8 +index 06f17934..0e85989d 100644 +--- a/man/man8/funcslower.8 ++++ b/man/man8/funcslower.8 +@@ -117,8 +117,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/gethostlatency.8 b/man/man8/gethostlatency.8 +index a9d18e07..876f3983 100644 +--- a/man/man8/gethostlatency.8 ++++ b/man/man8/gethostlatency.8 +@@ -55,8 +55,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/hardirqs.8 b/man/man8/hardirqs.8 +index aa9afb84..e74d56b3 100644 +--- a/man/man8/hardirqs.8 ++++ b/man/man8/hardirqs.8 +@@ -95,8 +95,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Hengqi Chen, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/inject.8 b/man/man8/inject.8 +index 2ab80dbb..85b36b6e 100644 +--- a/man/man8/inject.8 ++++ b/man/man8/inject.8 +@@ -112,9 +112,5 @@ example usage, output, and commentary for this tool. + Linux + + +-.SH STABILITY +-Unstable - in development. +- +- + .SH AUTHOR + Howard McLauchlan +diff --git a/man/man8/killsnoop.8 b/man/man8/killsnoop.8 +index acb376ea..2543b6a6 100644 +--- a/man/man8/killsnoop.8 ++++ b/man/man8/killsnoop.8 +@@ -82,8 +82,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/klockstat.8 b/man/man8/klockstat.8 +index 0a3167d1..57f9db18 100644 +--- a/man/man8/klockstat.8 ++++ b/man/man8/klockstat.8 +@@ -182,8 +182,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH CREDITS + This tool is based on work of David Valin and his script. + .SH AUTHOR +diff --git a/man/man8/kvmexit.8 b/man/man8/kvmexit.8 +index c0cb4c98..0b56cecc 100644 +--- a/man/man8/kvmexit.8 ++++ b/man/man8/kvmexit.8 +@@ -109,7 +109,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Fei Li +diff --git a/man/man8/llcstat.8 b/man/man8/llcstat.8 +index 5a28d338..7440fe3b 100644 +--- a/man/man8/llcstat.8 ++++ b/man/man8/llcstat.8 +@@ -66,8 +66,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Teng Qin + .SH SEE ALSO +diff --git a/man/man8/mdflush.8 b/man/man8/mdflush.8 +index e22c46b3..66939b25 100644 +--- a/man/man8/mdflush.8 ++++ b/man/man8/mdflush.8 +@@ -49,8 +49,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/memleak.8 b/man/man8/memleak.8 +index 2fd26764..d56cf207 100644 +--- a/man/man8/memleak.8 ++++ b/man/man8/memleak.8 +@@ -135,7 +135,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein +diff --git a/man/man8/mountsnoop.8 b/man/man8/mountsnoop.8 +index 01efdf9c..8afafba0 100644 +--- a/man/man8/mountsnoop.8 ++++ b/man/man8/mountsnoop.8 +@@ -46,8 +46,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Omar Sandoval + .SH SEE ALSO +diff --git a/man/man8/mysqld_qslower.8 b/man/man8/mysqld_qslower.8 +index 5753079a..7daf074b 100644 +--- a/man/man8/mysqld_qslower.8 ++++ b/man/man8/mysqld_qslower.8 +@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/netqtop.8 b/man/man8/netqtop.8 +index bfa34d11..8750782b 100644 +--- a/man/man8/netqtop.8 ++++ b/man/man8/netqtop.8 +@@ -50,7 +50,5 @@ Also look in the bcc distribution for a netqtop_example.txt file containing + example usage, output and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development + .SH AUTHOR + Yolandajn +diff --git a/man/man8/nfsdist.8 b/man/man8/nfsdist.8 +index c72cfaa6..34532c18 100644 +--- a/man/man8/nfsdist.8 ++++ b/man/man8/nfsdist.8 +@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Samuel Nair + .SH SEE ALSO +diff --git a/man/man8/nfsslower.8 b/man/man8/nfsslower.8 +index 22b36e3e..66021002 100644 +--- a/man/man8/nfsslower.8 ++++ b/man/man8/nfsslower.8 +@@ -114,8 +114,6 @@ Also look in the bcc distribution for a companion nfsslower_examples.txt file co + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Samuel Nair + .SH SEE ALSO +diff --git a/man/man8/offcputime.8 b/man/man8/offcputime.8 +index be5387b9..270991d8 100644 +--- a/man/man8/offcputime.8 ++++ b/man/man8/offcputime.8 +@@ -110,8 +110,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/offwaketime.8 b/man/man8/offwaketime.8 +index 44e3b684..4f4880e3 100644 +--- a/man/man8/offwaketime.8 ++++ b/man/man8/offwaketime.8 +@@ -110,8 +110,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/oomkill.8 b/man/man8/oomkill.8 +index b6d6f9e1..965ba545 100644 +--- a/man/man8/oomkill.8 ++++ b/man/man8/oomkill.8 +@@ -47,8 +47,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/opensnoop.8 b/man/man8/opensnoop.8 +index fee83263..953af623 100644 +--- a/man/man8/opensnoop.8 ++++ b/man/man8/opensnoop.8 +@@ -148,8 +148,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/pidpersec.8 b/man/man8/pidpersec.8 +index 2164ffaf..9d272c81 100644 +--- a/man/man8/pidpersec.8 ++++ b/man/man8/pidpersec.8 +@@ -33,8 +33,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/profile.8 b/man/man8/profile.8 +index 916224a9..6339dbfa 100644 +--- a/man/man8/profile.8 ++++ b/man/man8/profile.8 +@@ -148,8 +148,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/readahead.8 b/man/man8/readahead.8 +index a2a10914..da8e4fe4 100644 +--- a/man/man8/readahead.8 ++++ b/man/man8/readahead.8 +@@ -51,8 +51,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Suchakra Sharma + .SH SEE ALSO +diff --git a/man/man8/reset-trace.8 b/man/man8/reset-trace.8 +index e96d4790..90f525e0 100644 +--- a/man/man8/reset-trace.8 ++++ b/man/man8/reset-trace.8 +@@ -53,7 +53,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg +diff --git a/man/man8/runqlat.8 b/man/man8/runqlat.8 +index d535ebbf..9e146a5e 100644 +--- a/man/man8/runqlat.8 ++++ b/man/man8/runqlat.8 +@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/runqlen.8 b/man/man8/runqlen.8 +index b36a5a18..c2f0ffb4 100644 +--- a/man/man8/runqlen.8 ++++ b/man/man8/runqlen.8 +@@ -78,8 +78,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/runqslower.8 b/man/man8/runqslower.8 +index 55ea5bd9..dbbec5ae 100644 +--- a/man/man8/runqslower.8 ++++ b/man/man8/runqslower.8 +@@ -84,8 +84,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Ivan Babrou, original BCC Python version + Andrii Nakryiko, CO-RE version +diff --git a/man/man8/shmsnoop.8 b/man/man8/shmsnoop.8 +index e7092e19..944e9f07 100644 +--- a/man/man8/shmsnoop.8 ++++ b/man/man8/shmsnoop.8 +@@ -66,8 +66,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Jiri Olsa + .SH SEE ALSO +diff --git a/man/man8/slabratetop.8 b/man/man8/slabratetop.8 +index bfe897fc..18d1e5ea 100644 +--- a/man/man8/slabratetop.8 ++++ b/man/man8/slabratetop.8 +@@ -68,8 +68,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/sofdsnoop.8 b/man/man8/sofdsnoop.8 +index cd3ffa27..94432544 100644 +--- a/man/man8/sofdsnoop.8 ++++ b/man/man8/sofdsnoop.8 +@@ -58,5 +58,3 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. +diff --git a/man/man8/softirqs.8 b/man/man8/softirqs.8 +index fa475f78..311fd0e6 100644 +--- a/man/man8/softirqs.8 ++++ b/man/man8/softirqs.8 +@@ -99,8 +99,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHORS + Brendan Gregg, Sasha Goldshtein, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/solisten.8 b/man/man8/solisten.8 +index 4d8ffe95..fd863447 100644 +--- a/man/man8/solisten.8 ++++ b/man/man8/solisten.8 +@@ -45,5 +45,3 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. +diff --git a/man/man8/spfdsnoop.8 b/man/man8/spfdsnoop.8 +index ffad57c5..df80437f 100644 +--- a/man/man8/spfdsnoop.8 ++++ b/man/man8/spfdsnoop.8 +@@ -77,8 +77,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Jiri Olsa + .SH SEE ALSO +diff --git a/man/man8/sslsniff.8 b/man/man8/sslsniff.8 +index 4b80191a..86219f8a 100644 +--- a/man/man8/sslsniff.8 ++++ b/man/man8/sslsniff.8 +@@ -108,8 +108,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHORS + Adrian Lopez and Mark Drayton + .SH SEE ALSO +diff --git a/man/man8/stackcount.8 b/man/man8/stackcount.8 +index d2459561..2cf789c1 100644 +--- a/man/man8/stackcount.8 ++++ b/man/man8/stackcount.8 +@@ -150,8 +150,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg, Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/statsnoop.8 b/man/man8/statsnoop.8 +index c0555043..d1560b3c 100644 +--- a/man/man8/statsnoop.8 ++++ b/man/man8/statsnoop.8 +@@ -83,8 +83,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/swapin.8 b/man/man8/swapin.8 +index 9ef2eb9c..7347899d 100644 +--- a/man/man8/swapin.8 ++++ b/man/man8/swapin.8 +@@ -56,8 +56,6 @@ Also look in the bcc distribution for a companion _examples.txt file + containing example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/syncsnoop.8 b/man/man8/syncsnoop.8 +index 8543f213..cd7b0629 100644 +--- a/man/man8/syncsnoop.8 ++++ b/man/man8/syncsnoop.8 +@@ -45,8 +45,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/syscount.8 b/man/man8/syscount.8 +index 8c245dd8..54f9fe66 100644 +--- a/man/man8/syscount.8 ++++ b/man/man8/syscount.8 +@@ -108,8 +108,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein, Rocky Xing + .SH SEE ALSO +diff --git a/man/man8/tcpaccept.8 b/man/man8/tcpaccept.8 +index 05b79693..6dd35301 100644 +--- a/man/man8/tcpaccept.8 ++++ b/man/man8/tcpaccept.8 +@@ -118,8 +118,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcpcong.8 b/man/man8/tcpcong.8 +index 877ed805..3fd0a253 100644 +--- a/man/man8/tcpcong.8 ++++ b/man/man8/tcpcong.8 +@@ -128,8 +128,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + jacky gan + .SH SEE ALSO +diff --git a/man/man8/tcpconnect.8 b/man/man8/tcpconnect.8 +index 0ea84686..04952d74 100644 +--- a/man/man8/tcpconnect.8 ++++ b/man/man8/tcpconnect.8 +@@ -197,8 +197,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcpconnlat.8 b/man/man8/tcpconnlat.8 +index 84762b45..3771baa7 100644 +--- a/man/man8/tcpconnlat.8 ++++ b/man/man8/tcpconnlat.8 +@@ -125,8 +125,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcpdrop.8 b/man/man8/tcpdrop.8 +index c9b777b3..82e400eb 100644 +--- a/man/man8/tcpdrop.8 ++++ b/man/man8/tcpdrop.8 +@@ -83,8 +83,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcplife.8 b/man/man8/tcplife.8 +index 5fb4c283..cc76d870 100644 +--- a/man/man8/tcplife.8 ++++ b/man/man8/tcplife.8 +@@ -136,8 +136,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcpretrans.8 b/man/man8/tcpretrans.8 +index 0b643d11..aebdab73 100644 +--- a/man/man8/tcpretrans.8 ++++ b/man/man8/tcpretrans.8 +@@ -103,8 +103,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcprtt.8 b/man/man8/tcprtt.8 +index fcd8bfe9..4ee6b8b5 100644 +--- a/man/man8/tcprtt.8 ++++ b/man/man8/tcprtt.8 +@@ -95,8 +95,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + zhenwei pi + .SH SEE ALSO +diff --git a/man/man8/tcpstates.8 b/man/man8/tcpstates.8 +index 57c40a83..1d6b8a29 100644 +--- a/man/man8/tcpstates.8 ++++ b/man/man8/tcpstates.8 +@@ -137,8 +137,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcpsubnet.8 b/man/man8/tcpsubnet.8 +index 525b8082..daf41583 100644 +--- a/man/man8/tcpsubnet.8 ++++ b/man/man8/tcpsubnet.8 +@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Rodrigo Manyari + .SH INSPIRATION +diff --git a/man/man8/tcpsynbl.8 b/man/man8/tcpsynbl.8 +index 8557af2b..c03c5460 100644 +--- a/man/man8/tcpsynbl.8 ++++ b/man/man8/tcpsynbl.8 +@@ -69,8 +69,6 @@ Also look in the bcc distribution for a companion _examples.txt file + containing example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tcptop.8 b/man/man8/tcptop.8 +index f4f1c3d7..013cb3d9 100644 +--- a/man/man8/tcptop.8 ++++ b/man/man8/tcptop.8 +@@ -127,8 +127,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH INSPIRATION +diff --git a/man/man8/tcptracer.8 b/man/man8/tcptracer.8 +index 59240f4b..331efe9a 100644 +--- a/man/man8/tcptracer.8 ++++ b/man/man8/tcptracer.8 +@@ -113,8 +113,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Iago López Galeiras + .SH SEE ALSO +diff --git a/man/man8/threadsnoop.8 b/man/man8/threadsnoop.8 +index 3c655f24..007281ad 100644 +--- a/man/man8/threadsnoop.8 ++++ b/man/man8/threadsnoop.8 +@@ -52,8 +52,6 @@ Also look in the bcc distribution for a companion _examples.txt file + containing example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/tplist.8 b/man/man8/tplist.8 +index da5edf37..f7e459da 100644 +--- a/man/man8/tplist.8 ++++ b/man/man8/tplist.8 +@@ -56,7 +56,5 @@ This is from bcc. + https://github.com/iovisor/bcc + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein +diff --git a/man/man8/trace.8 b/man/man8/trace.8 +index c4417e5f..bd1b11b2 100644 +--- a/man/man8/trace.8 ++++ b/man/man8/trace.8 +@@ -217,7 +217,5 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein +diff --git a/man/man8/ttysnoop.8 b/man/man8/ttysnoop.8 +index e2ec037f..e20feb01 100644 +--- a/man/man8/ttysnoop.8 ++++ b/man/man8/ttysnoop.8 +@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/ucalls.8 b/man/man8/ucalls.8 +index dfc4b8b2..be38c9fb 100644 +--- a/man/man8/ucalls.8 ++++ b/man/man8/ucalls.8 +@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/uflow.8 b/man/man8/uflow.8 +index 1d0951c3..d8800166 100644 +--- a/man/man8/uflow.8 ++++ b/man/man8/uflow.8 +@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/ugc.8 b/man/man8/ugc.8 +index 782ae634..5dd17f3a 100644 +--- a/man/man8/ugc.8 ++++ b/man/man8/ugc.8 +@@ -90,8 +90,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/uobjnew.8 b/man/man8/uobjnew.8 +index f4a9c74c..5cd7ef1b 100644 +--- a/man/man8/uobjnew.8 ++++ b/man/man8/uobjnew.8 +@@ -80,8 +80,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/ustat.8 b/man/man8/ustat.8 +index 371d855e..f37fc91f 100644 +--- a/man/man8/ustat.8 ++++ b/man/man8/ustat.8 +@@ -125,8 +125,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/uthreads.8 b/man/man8/uthreads.8 +index 6acffa56..5a91f2d4 100644 +--- a/man/man8/uthreads.8 ++++ b/man/man8/uthreads.8 +@@ -60,8 +60,6 @@ Also look in the bcc distribution for a companion _example.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Sasha Goldshtein + .SH SEE ALSO +diff --git a/man/man8/vfscount.8 b/man/man8/vfscount.8 +index febbc9e6..0cc65adf 100644 +--- a/man/man8/vfscount.8 ++++ b/man/man8/vfscount.8 +@@ -54,8 +54,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/vfsstat.8 b/man/man8/vfsstat.8 +index 929e6b63..f439857e 100644 +--- a/man/man8/vfsstat.8 ++++ b/man/man8/vfsstat.8 +@@ -57,8 +57,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/virtiostat.8 b/man/man8/virtiostat.8 +index 8578f8d3..ac312c56 100644 +--- a/man/man8/virtiostat.8 ++++ b/man/man8/virtiostat.8 +@@ -58,8 +58,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + zhenwei pi + .SH SEE ALSO +diff --git a/man/man8/wakeuptime.8 b/man/man8/wakeuptime.8 +index 8630ae4a..3c7cf80a 100644 +--- a/man/man8/wakeuptime.8 ++++ b/man/man8/wakeuptime.8 +@@ -96,8 +96,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/xfsdist.8 b/man/man8/xfsdist.8 +index 3c890007..75b2c66e 100644 +--- a/man/man8/xfsdist.8 ++++ b/man/man8/xfsdist.8 +@@ -72,8 +72,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/xfsslower.8 b/man/man8/xfsslower.8 +index 30ec3253..c914dcee 100644 +--- a/man/man8/xfsslower.8 ++++ b/man/man8/xfsslower.8 +@@ -105,8 +105,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/zfsdist.8 b/man/man8/zfsdist.8 +index 1e5632fd..6c5de7d7 100644 +--- a/man/man8/zfsdist.8 ++++ b/man/man8/zfsdist.8 +@@ -75,8 +75,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +diff --git a/man/man8/zfsslower.8 b/man/man8/zfsslower.8 +index d1e2f9c1..31d382f6 100644 +--- a/man/man8/zfsslower.8 ++++ b/man/man8/zfsslower.8 +@@ -108,8 +108,6 @@ Also look in the bcc distribution for a companion _examples.txt file containing + example usage, output, and commentary for this tool. + .SH OS + Linux +-.SH STABILITY +-Unstable - in development. + .SH AUTHOR + Brendan Gregg + .SH SEE ALSO +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-RHEL-libbpf-version-fixes.patch b/SOURCES/bcc-0.25.0-RHEL-libbpf-version-fixes.patch new file mode 100644 index 0000000..fa08b57 --- /dev/null +++ b/SOURCES/bcc-0.25.0-RHEL-libbpf-version-fixes.patch @@ -0,0 +1,684 @@ +From 66d9bffa99738bbed50b3d5b2d87990cdb5e4a58 Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Mon, 28 Nov 2022 12:23:59 +0100 +Subject: [PATCH] RHEL: libbpf version fixes + +Revert "[bcc] stop using deprecated `bpf_load_program_attr`" +Revert "backport `struct bpf_create_map_attr`" +Revert "bcc: Replace deprecated libbpf API" + +Revert "bcc: Replace deprecated libbpf APIs" since the libbpf version +provided in RHEL 8 doesn't provide the new APIs. + +Remove BPF_MAP_TYPE_BLOOM_FILTER from bps since the libbpf version in +RHEL 8, doesn't provide bloom filter map. + +Rename btf__load_vmlinux_btf into libbpf_find_kernel_btf. The function +has been renamed upstream for naming consistency, but RHEL 8 libbpf +still uses the old name. + +Also use the older btf__get_nr_types() instead of btf__type_cnt() for +the same reason. + +Add definition of struct bpf_core_relo. +--- + introspection/bps.c | 1 - + libbpf-tools/ksnoop.c | 4 +- + src/cc/bcc_btf.cc | 73 +++++++++++++++- + src/cc/bpf_module.cc | 38 ++++---- + src/cc/common.cc | 4 +- + src/cc/libbpf.c | 196 +++++++++++++++--------------------------- + src/cc/libbpf.h | 28 ++---- + 7 files changed, 169 insertions(+), 175 deletions(-) + +diff --git a/introspection/bps.c b/introspection/bps.c +index 232b23d4..6ec02e6c 100644 +--- a/introspection/bps.c ++++ b/introspection/bps.c +@@ -80,7 +80,6 @@ static const char * const map_type_strings[] = { + [BPF_MAP_TYPE_RINGBUF] = "ringbuf", + [BPF_MAP_TYPE_INODE_STORAGE] = "inode_storage", + [BPF_MAP_TYPE_TASK_STORAGE] = "task_storage", +- [BPF_MAP_TYPE_BLOOM_FILTER] = "bloom_filter", + }; + + #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) +diff --git a/libbpf-tools/ksnoop.c b/libbpf-tools/ksnoop.c +index 87fe175c..960e901b 100644 +--- a/libbpf-tools/ksnoop.c ++++ b/libbpf-tools/ksnoop.c +@@ -347,7 +347,7 @@ static struct btf *get_btf(const char *name) + name && strlen(name) > 0 ? name : "vmlinux"); + + if (!vmlinux_btf) { +- vmlinux_btf = btf__load_vmlinux_btf(); ++ vmlinux_btf = libbpf_find_kernel_btf(); + if (!vmlinux_btf) { + err = -errno; + p_err("No BTF, cannot determine type info: %s", strerror(-err)); +@@ -357,7 +357,7 @@ static struct btf *get_btf(const char *name) + if (!name || strlen(name) == 0) + return vmlinux_btf; + +- mod_btf = btf__load_module_btf(name, vmlinux_btf); ++ mod_btf = libbpf_find_kernel_btf(name, vmlinux_btf); + if (!mod_btf) { + err = -errno; + p_err("No BTF for module '%s': %s", name, strerror(-err)); +diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc +index be248612..74fc902c 100644 +--- a/src/cc/bcc_btf.cc ++++ b/src/cc/bcc_btf.cc +@@ -170,6 +170,77 @@ static int btf_ext_setup_line_info(struct btf_ext *btf_ext) + return btf_ext_setup_info(btf_ext, ¶m); + } + ++/* bpf_core_relo_kind encodes which aspect of captured field/type/enum value ++ * has to be adjusted by relocations. ++ */ ++enum bpf_core_relo_kind { ++ BPF_FIELD_BYTE_OFFSET = 0, /* field byte offset */ ++ BPF_FIELD_BYTE_SIZE = 1, /* field size in bytes */ ++ BPF_FIELD_EXISTS = 2, /* field existence in target kernel */ ++ BPF_FIELD_SIGNED = 3, /* field signedness (0 - unsigned, 1 - signed) */ ++ BPF_FIELD_LSHIFT_U64 = 4, /* bitfield-specific left bitshift */ ++ BPF_FIELD_RSHIFT_U64 = 5, /* bitfield-specific right bitshift */ ++ BPF_TYPE_ID_LOCAL = 6, /* type ID in local BPF object */ ++ BPF_TYPE_ID_TARGET = 7, /* type ID in target kernel */ ++ BPF_TYPE_EXISTS = 8, /* type existence in target kernel */ ++ BPF_TYPE_SIZE = 9, /* type size in bytes */ ++ BPF_ENUMVAL_EXISTS = 10, /* enum value existence in target kernel */ ++ BPF_ENUMVAL_VALUE = 11, /* enum value integer value */ ++}; ++ ++/* The minimum bpf_core_relo checked by the loader ++ * ++ * CO-RE relocation captures the following data: ++ * - insn_off - instruction offset (in bytes) within a BPF program that needs ++ * its insn->imm field to be relocated with actual field info; ++ * - type_id - BTF type ID of the "root" (containing) entity of a relocatable ++ * type or field; ++ * - access_str_off - offset into corresponding .BTF string section. String ++ * interpretation depends on specific relocation kind: ++ * - for field-based relocations, string encodes an accessed field using ++ * a sequence of field and array indices, separated by colon (:). It's ++ * conceptually very close to LLVM's getelementptr ([0]) instruction's ++ * arguments for identifying offset to a field. ++ * - for type-based relocations, strings is expected to be just "0"; ++ * - for enum value-based relocations, string contains an index of enum ++ * value within its enum type; ++ * ++ * Example to provide a better feel. ++ * ++ * struct sample { ++ * int a; ++ * struct { ++ * int b[10]; ++ * }; ++ * }; ++ * ++ * struct sample *s = ...; ++ * int x = &s->a; // encoded as "0:0" (a is field #0) ++ * int y = &s->b[5]; // encoded as "0:1:0:5" (anon struct is field #1, ++ * // b is field #0 inside anon struct, accessing elem #5) ++ * int z = &s[10]->b; // encoded as "10:1" (ptr is used as an array) ++ * ++ * type_id for all relocs in this example will capture BTF type id of ++ * `struct sample`. ++ * ++ * Such relocation is emitted when using __builtin_preserve_access_index() ++ * Clang built-in, passing expression that captures field address, e.g.: ++ * ++ * bpf_probe_read(&dst, sizeof(dst), ++ * __builtin_preserve_access_index(&src->a.b.c)); ++ * ++ * In this case Clang will emit field relocation recording necessary data to ++ * be able to find offset of embedded `a.b.c` field within `src` struct. ++ * ++ * [0] https://llvm.org/docs/LangRef.html#getelementptr-instruction ++ */ ++struct bpf_core_relo { ++ __u32 insn_off; ++ __u32 type_id; ++ __u32 access_str_off; ++ enum bpf_core_relo_kind kind; ++}; ++ + static int btf_ext_setup_core_relos(struct btf_ext *btf_ext) + { + struct btf_ext_sec_setup_param param = { +@@ -597,7 +668,7 @@ int BTF::load(uint8_t *btf_sec, uintptr_t btf_sec_size, + return -1; + } + +- if (btf__load_into_kernel(btf)) { ++ if (btf__load(btf)) { + btf__free(btf); + warning("Loading .BTF section failed\n"); + return -1; +diff --git a/src/cc/bpf_module.cc b/src/cc/bpf_module.cc +index 86f6a228..490fffe8 100644 +--- a/src/cc/bpf_module.cc ++++ b/src/cc/bpf_module.cc +@@ -407,7 +407,7 @@ int BPFModule::create_maps(std::map> &map_tids, + } + + if (pinned_id <= 0) { +- struct bcc_create_map_attr attr = {}; ++ struct bpf_create_map_attr attr = {}; + attr.map_type = (enum bpf_map_type)map_type; + attr.name = map_name; + attr.key_size = key_size; +@@ -982,22 +982,26 @@ int BPFModule::bcc_func_load(int prog_type, const char *name, + const char *license, unsigned kern_version, + int log_level, char *log_buf, unsigned log_buf_size, + const char *dev_name, unsigned flags, int expected_attach_type) { +- struct bpf_prog_load_opts opts = {}; ++ struct bpf_load_program_attr attr = {}; + unsigned func_info_cnt, line_info_cnt, finfo_rec_size, linfo_rec_size; + void *func_info = NULL, *line_info = NULL; + int ret; + ++ attr.prog_type = (enum bpf_prog_type)prog_type; + if (expected_attach_type != -1) { +- opts.expected_attach_type = (enum bpf_attach_type)expected_attach_type; ++ attr.expected_attach_type = (enum bpf_attach_type)expected_attach_type; + } +- if (prog_type != BPF_PROG_TYPE_TRACING && +- prog_type != BPF_PROG_TYPE_EXT) { +- opts.kern_version = kern_version; ++ attr.name = name; ++ attr.insns = insns; ++ attr.license = license; ++ if (attr.prog_type != BPF_PROG_TYPE_TRACING && ++ attr.prog_type != BPF_PROG_TYPE_EXT) { ++ attr.kern_version = kern_version; + } +- opts.prog_flags = flags; +- opts.log_level = log_level; ++ attr.prog_flags = flags; ++ attr.log_level = log_level; + if (dev_name) +- opts.prog_ifindex = if_nametoindex(dev_name); ++ attr.prog_ifindex = if_nametoindex(dev_name); + + if (btf_) { + int btf_fd = btf_->get_fd(); +@@ -1008,17 +1012,17 @@ int BPFModule::bcc_func_load(int prog_type, const char *name, + &finfo_rec_size, &line_info, + &line_info_cnt, &linfo_rec_size); + if (!ret) { +- opts.prog_btf_fd = btf_fd; +- opts.func_info = func_info; +- opts.func_info_cnt = func_info_cnt; +- opts.func_info_rec_size = finfo_rec_size; +- opts.line_info = line_info; +- opts.line_info_cnt = line_info_cnt; +- opts.line_info_rec_size = linfo_rec_size; ++ attr.prog_btf_fd = btf_fd; ++ attr.func_info = func_info; ++ attr.func_info_cnt = func_info_cnt; ++ attr.func_info_rec_size = finfo_rec_size; ++ attr.line_info = line_info; ++ attr.line_info_cnt = line_info_cnt; ++ attr.line_info_rec_size = linfo_rec_size; + } + } + +- ret = bcc_prog_load_xattr((enum bpf_prog_type)prog_type, name, license, insns, &opts, prog_len, log_buf, log_buf_size, allow_rlimit_); ++ ret = bcc_prog_load_xattr(&attr, prog_len, log_buf, log_buf_size, allow_rlimit_); + if (btf_) { + free(func_info); + free(line_info); +diff --git a/src/cc/common.cc b/src/cc/common.cc +index 3143adb0..11970275 100644 +--- a/src/cc/common.cc ++++ b/src/cc/common.cc +@@ -34,11 +34,11 @@ using std::experimental::optional; + static optional get_enum_val_from_btf(const char *name) { + optional val; + +- auto btf = btf__load_vmlinux_btf(); ++ auto btf = libbpf_find_kernel_btf(); + if (libbpf_get_error(btf)) + return {}; + +- for (size_t i = 1; i < btf__type_cnt(btf); i++) { ++ for (size_t i = 1; i <= btf__get_nr_types(btf); i++) { + auto t = btf__type_by_id(btf, i); + if (btf_kind(t) != BTF_KIND_ENUM) + continue; +diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c +index 0c09f9b3..7042c792 100644 +--- a/src/cc/libbpf.c ++++ b/src/cc/libbpf.c +@@ -319,33 +319,14 @@ static uint64_t ptr_to_u64(void *ptr) + return (uint64_t) (unsigned long) ptr; + } + +-static int libbpf_bpf_map_create(struct bcc_create_map_attr *create_attr) +-{ +- LIBBPF_OPTS(bpf_map_create_opts, p); +- +- p.map_flags = create_attr->map_flags; +- p.numa_node = create_attr->numa_node; +- p.btf_fd = create_attr->btf_fd; +- p.btf_key_type_id = create_attr->btf_key_type_id; +- p.btf_value_type_id = create_attr->btf_value_type_id; +- p.map_ifindex = create_attr->map_ifindex; +- if (create_attr->map_type == BPF_MAP_TYPE_STRUCT_OPS) +- p.btf_vmlinux_value_type_id = create_attr->btf_vmlinux_value_type_id; +- else +- p.inner_map_fd = create_attr->inner_map_fd; +- +- return bpf_map_create(create_attr->map_type, create_attr->name, create_attr->key_size, +- create_attr->value_size, create_attr->max_entries, &p); +-} +- +-int bcc_create_map_xattr(struct bcc_create_map_attr *attr, bool allow_rlimit) ++int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit) + { + unsigned name_len = attr->name ? strlen(attr->name) : 0; + char map_name[BPF_OBJ_NAME_LEN] = {}; + + memcpy(map_name, attr->name, min(name_len, BPF_OBJ_NAME_LEN - 1)); + attr->name = map_name; +- int ret = libbpf_bpf_map_create(attr); ++ int ret = bpf_create_map_xattr(attr); + + if (ret < 0 && errno == EPERM) { + if (!allow_rlimit) +@@ -357,7 +338,7 @@ int bcc_create_map_xattr(struct bcc_create_map_attr *attr, bool allow_rlimit) + rl.rlim_max = RLIM_INFINITY; + rl.rlim_cur = rl.rlim_max; + if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) +- ret = libbpf_bpf_map_create(attr); ++ ret = bpf_create_map_xattr(attr); + } + } + +@@ -367,12 +348,12 @@ int bcc_create_map_xattr(struct bcc_create_map_attr *attr, bool allow_rlimit) + attr->btf_fd = 0; + attr->btf_key_type_id = 0; + attr->btf_value_type_id = 0; +- ret = libbpf_bpf_map_create(attr); ++ ret = bpf_create_map_xattr(attr); + } + + if (ret < 0 && name_len && (errno == E2BIG || errno == EINVAL)) { + map_name[0] = '\0'; +- ret = libbpf_bpf_map_create(attr); ++ ret = bpf_create_map_xattr(attr); + } + + if (ret < 0 && errno == EPERM) { +@@ -385,7 +366,7 @@ int bcc_create_map_xattr(struct bcc_create_map_attr *attr, bool allow_rlimit) + rl.rlim_max = RLIM_INFINITY; + rl.rlim_cur = rl.rlim_max; + if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) +- ret = libbpf_bpf_map_create(attr); ++ ret = bpf_create_map_xattr(attr); + } + } + return ret; +@@ -395,7 +376,7 @@ int bcc_create_map(enum bpf_map_type map_type, const char *name, + int key_size, int value_size, + int max_entries, int map_flags) + { +- struct bcc_create_map_attr attr = {}; ++ struct bpf_create_map_attr attr = {}; + + attr.map_type = map_type; + attr.name = name; +@@ -644,70 +625,24 @@ int bpf_prog_get_tag(int fd, unsigned long long *ptag) + return -2; + } + +-static int libbpf_bpf_prog_load(enum bpf_prog_type prog_type, +- const char *prog_name, const char *license, +- const struct bpf_insn *insns, size_t insn_cnt, +- struct bpf_prog_load_opts *opts, +- char *log_buf, size_t log_buf_sz) +-{ +- +- LIBBPF_OPTS(bpf_prog_load_opts, p); +- +- if (!opts || !log_buf != !log_buf_sz) { +- errno = EINVAL; +- return -EINVAL; +- } +- +- p.expected_attach_type = opts->expected_attach_type; +- switch (prog_type) { +- case BPF_PROG_TYPE_STRUCT_OPS: +- case BPF_PROG_TYPE_LSM: +- p.attach_btf_id = opts->attach_btf_id; +- break; +- case BPF_PROG_TYPE_TRACING: +- case BPF_PROG_TYPE_EXT: +- p.attach_btf_id = opts->attach_btf_id; +- p.attach_prog_fd = opts->attach_prog_fd; +- break; +- default: +- p.prog_ifindex = opts->prog_ifindex; +- p.kern_version = opts->kern_version; +- } +- p.log_level = opts->log_level; +- p.log_buf = log_buf; +- p.log_size = log_buf_sz; +- p.prog_btf_fd = opts->prog_btf_fd; +- p.func_info_rec_size = opts->func_info_rec_size; +- p.func_info_cnt = opts->func_info_cnt; +- p.func_info = opts->func_info; +- p.line_info_rec_size = opts->line_info_rec_size; +- p.line_info_cnt = opts->line_info_cnt; +- p.line_info = opts->line_info; +- p.prog_flags = opts->prog_flags; +- +- return bpf_prog_load(prog_type, prog_name, license, +- insns, insn_cnt, &p); +-} +- +-int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, +- const char *license, const struct bpf_insn *insns, +- struct bpf_prog_load_opts *opts, int prog_len, ++int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, int prog_len, + char *log_buf, unsigned log_buf_size, bool allow_rlimit) + { +- unsigned name_len = prog_name ? strlen(prog_name) : 0; +- char *tmp_log_buf = NULL, *opts_log_buf = NULL; +- unsigned tmp_log_buf_size = 0, opts_log_buf_size = 0; ++ unsigned name_len = attr->name ? strlen(attr->name) : 0; ++ char *tmp_log_buf = NULL, *attr_log_buf = NULL; ++ unsigned tmp_log_buf_size = 0, attr_log_buf_size = 0; + int ret = 0, name_offset = 0, expected_attach_type = 0; +- char new_prog_name[BPF_OBJ_NAME_LEN] = {}; ++ char prog_name[BPF_OBJ_NAME_LEN] = {}; + + unsigned insns_cnt = prog_len / sizeof(struct bpf_insn); ++ attr->insns_cnt = insns_cnt; + +- if (opts->log_level > 0) { ++ if (attr->log_level > 0) { + if (log_buf_size > 0) { + // Use user-provided log buffer if available. + log_buf[0] = 0; +- opts_log_buf = log_buf; +- opts_log_buf_size = log_buf_size; ++ attr_log_buf = log_buf; ++ attr_log_buf_size = log_buf_size; + } else { + // Create and use temporary log buffer if user didn't provide one. + tmp_log_buf_size = LOG_BUF_SIZE; +@@ -715,82 +650,82 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + if (!tmp_log_buf) { + fprintf(stderr, "bpf: Failed to allocate temporary log buffer: %s\n\n", + strerror(errno)); +- opts->log_level = 0; ++ attr->log_level = 0; + } else { + tmp_log_buf[0] = 0; +- opts_log_buf = tmp_log_buf; +- opts_log_buf_size = tmp_log_buf_size; ++ attr_log_buf = tmp_log_buf; ++ attr_log_buf_size = tmp_log_buf_size; + } + } + } + +- + if (name_len) { +- if (strncmp(prog_name, "kprobe__", 8) == 0) ++ if (strncmp(attr->name, "kprobe__", 8) == 0) + name_offset = 8; +- else if (strncmp(prog_name, "kretprobe__", 11) == 0) ++ else if (strncmp(attr->name, "kretprobe__", 11) == 0) + name_offset = 11; +- else if (strncmp(prog_name, "tracepoint__", 12) == 0) ++ else if (strncmp(attr->name, "tracepoint__", 12) == 0) + name_offset = 12; +- else if (strncmp(prog_name, "raw_tracepoint__", 16) == 0) ++ else if (strncmp(attr->name, "raw_tracepoint__", 16) == 0) + name_offset = 16; +- else if (strncmp(prog_name, "kfunc__", 7) == 0) { ++ else if (strncmp(attr->name, "kfunc__", 7) == 0) { + name_offset = 7; + expected_attach_type = BPF_TRACE_FENTRY; +- } else if (strncmp(prog_name, "kmod_ret__", 10) == 0) { ++ } else if (strncmp(attr->name, "kmod_ret__", 10) == 0) { + name_offset = 10; + expected_attach_type = BPF_MODIFY_RETURN; +- } else if (strncmp(prog_name, "kretfunc__", 10) == 0) { ++ } else if (strncmp(attr->name, "kretfunc__", 10) == 0) { + name_offset = 10; + expected_attach_type = BPF_TRACE_FEXIT; +- } else if (strncmp(prog_name, "lsm__", 5) == 0) { ++ } else if (strncmp(attr->name, "lsm__", 5) == 0) { + name_offset = 5; + expected_attach_type = BPF_LSM_MAC; +- } else if (strncmp(prog_name, "bpf_iter__", 10) == 0) { ++ } else if (strncmp(attr->name, "bpf_iter__", 10) == 0) { + name_offset = 10; + expected_attach_type = BPF_TRACE_ITER; + } + +- if (prog_type == BPF_PROG_TYPE_TRACING || +- prog_type == BPF_PROG_TYPE_LSM) { +- ret = libbpf_find_vmlinux_btf_id(prog_name + name_offset, ++ if (attr->prog_type == BPF_PROG_TYPE_TRACING || ++ attr->prog_type == BPF_PROG_TYPE_LSM) { ++ ret = libbpf_find_vmlinux_btf_id(attr->name + name_offset, + expected_attach_type); + if (ret == -EINVAL) { + fprintf(stderr, "bpf: vmlinux BTF is not found\n"); + return ret; + } else if (ret < 0) { + fprintf(stderr, "bpf: %s is not found in vmlinux BTF\n", +- prog_name + name_offset); ++ attr->name + name_offset); + return ret; + } + +- opts->attach_btf_id = ret; +- opts->expected_attach_type = expected_attach_type; ++ attr->attach_btf_id = ret; ++ attr->expected_attach_type = expected_attach_type; + } + +- memcpy(new_prog_name, prog_name + name_offset, ++ memcpy(prog_name, attr->name + name_offset, + min(name_len - name_offset, BPF_OBJ_NAME_LEN - 1)); ++ attr->name = prog_name; + } + +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, opts_log_buf, opts_log_buf_size); ++ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); + + // func_info/line_info may not be supported in old kernels. +- if (ret < 0 && opts->func_info && errno == EINVAL) { +- opts->prog_btf_fd = 0; +- opts->func_info = NULL; +- opts->func_info_cnt = 0; +- opts->func_info_rec_size = 0; +- opts->line_info = NULL; +- opts->line_info_cnt = 0; +- opts->line_info_rec_size = 0; +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, opts_log_buf, opts_log_buf_size); ++ if (ret < 0 && attr->func_info && errno == EINVAL) { ++ attr->prog_btf_fd = 0; ++ attr->func_info = NULL; ++ attr->func_info_cnt = 0; ++ attr->func_info_rec_size = 0; ++ attr->line_info = NULL; ++ attr->line_info_cnt = 0; ++ attr->line_info_rec_size = 0; ++ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); + } + + // BPF object name is not supported on older Kernels. + // If we failed due to this, clear the name and try again. + if (ret < 0 && name_len && (errno == E2BIG || errno == EINVAL)) { +- new_prog_name[0] = '\0'; +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, opts_log_buf, opts_log_buf_size); ++ prog_name[0] = '\0'; ++ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); + } + + if (ret < 0 && errno == EPERM) { +@@ -809,14 +744,14 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + rl.rlim_max = RLIM_INFINITY; + rl.rlim_cur = rl.rlim_max; + if (setrlimit(RLIMIT_MEMLOCK, &rl) == 0) +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, opts_log_buf, opts_log_buf_size); ++ ret = bpf_load_program_xattr(attr, attr_log_buf, attr_log_buf_size); + } + } + + if (ret < 0 && errno == E2BIG) { + fprintf(stderr, + "bpf: %s. Program %s too large (%u insns), at most %d insns\n\n", +- strerror(errno), new_prog_name, insns_cnt, BPF_MAXINSNS); ++ strerror(errno), attr->name, insns_cnt, BPF_MAXINSNS); + return -1; + } + +@@ -825,9 +760,9 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + // User has provided a log buffer. + if (log_buf_size) { + // If logging is not already enabled, enable it and do the syscall again. +- if (opts->log_level == 0) { +- opts->log_level = 1; +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, log_buf, log_buf_size); ++ if (attr->log_level == 0) { ++ attr->log_level = 1; ++ ret = bpf_load_program_xattr(attr, log_buf, log_buf_size); + } + // Print the log message and return. + bpf_print_hints(ret, log_buf); +@@ -841,8 +776,8 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + if (tmp_log_buf) + free(tmp_log_buf); + tmp_log_buf_size = LOG_BUF_SIZE; +- if (opts->log_level == 0) +- opts->log_level = 1; ++ if (attr->log_level == 0) ++ attr->log_level = 1; + for (;;) { + tmp_log_buf = malloc(tmp_log_buf_size); + if (!tmp_log_buf) { +@@ -851,7 +786,7 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + goto return_result; + } + tmp_log_buf[0] = 0; +- ret = libbpf_bpf_prog_load(prog_type, new_prog_name, license, insns, insns_cnt, opts, tmp_log_buf, tmp_log_buf_size); ++ ret = bpf_load_program_xattr(attr, tmp_log_buf, tmp_log_buf_size); + if (ret < 0 && errno == ENOSPC) { + // Temporary buffer size is not enough. Double it and try again. + free(tmp_log_buf); +@@ -865,7 +800,7 @@ int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, + + // Check if we should print the log message if log_level is not 0, + // either specified by user or set due to error. +- if (opts->log_level > 0) { ++ if (attr->log_level > 0) { + // Don't print if user enabled logging and provided log buffer, + // but there is no error. + if (log_buf && ret < 0) +@@ -885,13 +820,16 @@ int bcc_prog_load(enum bpf_prog_type prog_type, const char *name, + const char *license, unsigned kern_version, + int log_level, char *log_buf, unsigned log_buf_size) + { +- struct bpf_prog_load_opts opts = {}; +- ++ struct bpf_load_program_attr attr = {}; + ++ attr.prog_type = prog_type; ++ attr.name = name; ++ attr.insns = insns; ++ attr.license = license; + if (prog_type != BPF_PROG_TYPE_TRACING && prog_type != BPF_PROG_TYPE_EXT) +- opts.kern_version = kern_version; +- opts.log_level = log_level; +- return bcc_prog_load_xattr(prog_type, name, license, insns, &opts, prog_len, log_buf, log_buf_size, true); ++ attr.kern_version = kern_version; ++ attr.log_level = log_level; ++ return bcc_prog_load_xattr(&attr, prog_len, log_buf, log_buf_size, true); + } + + int bpf_open_raw_sock(const char *name) +@@ -1388,7 +1326,7 @@ int kernel_struct_has_field(const char *struct_name, const char *field_name) + struct btf *btf; + int i, ret, btf_id; + +- btf = btf__load_vmlinux_btf(); ++ btf = libbpf_find_kernel_btf(); + ret = libbpf_get_error(btf); + if (ret) + return -1; +@@ -1565,7 +1503,7 @@ int bpf_attach_xdp(const char *dev_name, int progfd, uint32_t flags) { + return -1; + } + +- ret = bpf_xdp_attach(ifindex, progfd, flags, NULL); ++ ret = bpf_set_link_xdp_fd(ifindex, progfd, flags); + if (ret) { + libbpf_strerror(ret, err_buf, sizeof(err_buf)); + fprintf(stderr, "bpf: Attaching prog to %s: %s\n", dev_name, err_buf); +diff --git a/src/cc/libbpf.h b/src/cc/libbpf.h +index dd86f0a9..e001d740 100644 +--- a/src/cc/libbpf.h ++++ b/src/cc/libbpf.h +@@ -27,25 +27,8 @@ + extern "C" { + #endif + +-struct bcc_create_map_attr { +- const char *name; +- enum bpf_map_type map_type; +- __u32 map_flags; +- __u32 key_size; +- __u32 value_size; +- __u32 max_entries; +- __u32 numa_node; +- __u32 btf_fd; +- __u32 btf_key_type_id; +- __u32 btf_value_type_id; +- __u32 map_ifindex; +- union { +- __u32 inner_map_fd; +- __u32 btf_vmlinux_value_type_id; +- }; +-}; +- +-struct bpf_prog_load_opts; ++struct bpf_create_map_attr; ++struct bpf_load_program_attr; + + enum bpf_probe_attach_type { + BPF_PROBE_ENTRY, +@@ -61,7 +44,7 @@ struct bcc_perf_buffer_opts { + int bcc_create_map(enum bpf_map_type map_type, const char *name, + int key_size, int value_size, int max_entries, + int map_flags); +-int bcc_create_map_xattr(struct bcc_create_map_attr *attr, bool allow_rlimit); ++int bcc_create_map_xattr(struct bpf_create_map_attr *attr, bool allow_rlimit); + int bpf_update_elem(int fd, void *key, void *value, unsigned long long flags); + int bpf_lookup_elem(int fd, void *key, void *value); + int bpf_delete_elem(int fd, void *key); +@@ -89,11 +72,10 @@ int bcc_prog_load(enum bpf_prog_type prog_type, const char *name, + const struct bpf_insn *insns, int prog_len, + const char *license, unsigned kern_version, + int log_level, char *log_buf, unsigned log_buf_size); +-int bcc_prog_load_xattr(enum bpf_prog_type prog_type, const char *prog_name, +- const char *license, const struct bpf_insn *insns, +- struct bpf_prog_load_opts *opts, ++int bcc_prog_load_xattr(struct bpf_load_program_attr *attr, + int prog_len, char *log_buf, + unsigned log_buf_size, bool allow_rlimit); ++ + int bpf_attach_socket(int sockfd, int progfd); + + /* create RAW socket. If name is not NULL/a non-empty null-terminated string, +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-Revert-tools-tcpaccept-Fix-support-for-v5.6-kernels.patch b/SOURCES/bcc-0.25.0-Revert-tools-tcpaccept-Fix-support-for-v5.6-kernels.patch new file mode 100644 index 0000000..1c31ae9 --- /dev/null +++ b/SOURCES/bcc-0.25.0-Revert-tools-tcpaccept-Fix-support-for-v5.6-kernels.patch @@ -0,0 +1,42 @@ +From acee5d39d24b102e8ed09a242cb1c53246a1fb7f Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Tue, 29 Nov 2022 15:33:49 +0100 +Subject: [PATCH] Revert "tools/tcpaccept: Fix support for v5.6+ kernels" + +This reverts commit 28955512d991ee3849c2a9accfc54bef9cd35f21. + +It breaks tcpaccept on RHEL 8 kernel. +--- + tools/tcpaccept.py | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/tools/tcpaccept.py b/tools/tcpaccept.py +index b2ace4fa..d3e44143 100755 +--- a/tools/tcpaccept.py ++++ b/tools/tcpaccept.py +@@ -116,7 +116,7 @@ int kretprobe__inet_csk_accept(struct pt_regs *ctx) + return 0; + + // check this is TCP +- u16 protocol = 0; ++ u8 protocol = 0; + // workaround for reading the sk_protocol bitfield: + + // Following comments add by Joe Yin: +@@ -132,12 +132,7 @@ int kretprobe__inet_csk_accept(struct pt_regs *ctx) + int gso_max_segs_offset = offsetof(struct sock, sk_gso_max_segs); + int sk_lingertime_offset = offsetof(struct sock, sk_lingertime); + +- +- // Since kernel v5.6 sk_protocol is its own u16 field and gso_max_segs +- // precedes sk_lingertime. +- if (sk_lingertime_offset - gso_max_segs_offset == 2) +- protocol = newsk->sk_protocol; +- else if (sk_lingertime_offset - gso_max_segs_offset == 4) ++ if (sk_lingertime_offset - gso_max_segs_offset == 4) + // 4.10+ with little endian + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + protocol = *(u8 *)((u64)&newsk->sk_gso_max_segs - 3); +-- +2.38.1 + diff --git a/SOURCES/bcc-0.25.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch b/SOURCES/bcc-0.25.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch new file mode 100644 index 0000000..66baec5 --- /dev/null +++ b/SOURCES/bcc-0.25.0-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch @@ -0,0 +1,75 @@ +From 16277e3910c9281d807fc6d3b4ce41c62d7d265e Mon Sep 17 00:00:00 2001 +From: Jerome Marchand +Date: Thu, 19 May 2022 16:37:40 +0200 +Subject: [PATCH 3/3] libbpf: Allow kernel_struct_has_field to reach field in + unnamed struct or union + +Some fields can belong to unnamed struct or union (e.g. rcu and +rcu_users fields of task_struct). In C, they are accessed as if their +belong directly to the parent of the unnamed struct or union but this +is not the case for BTF. + +When looking for a field, kernel_struct_has_field should also look +reccursively into unnamed structs or unions. That allows code such as +the following to work as expected: + +BPF.kernel_struct_has_field('task_struct', 'rcu') + +Signed-off-by: Jerome Marchand +--- + src/cc/libbpf.c | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c +index 5f7a3f68..bdfde1f5 100644 +--- a/src/cc/libbpf.c ++++ b/src/cc/libbpf.c +@@ -1319,12 +1319,27 @@ bool bpf_has_kernel_btf(void) + return true; + } + ++static int find_member_by_name(struct btf *btf, const struct btf_type *btf_type, const char *field_name) { ++ const struct btf_member *btf_member = btf_members(btf_type); ++ int i; ++ ++ for (i = 0; i < btf_vlen(btf_type); i++, btf_member++) { ++ const char *name = btf__name_by_offset(btf, btf_member->name_off); ++ if (!strcmp(name, field_name)) { ++ return 1; ++ } else if (name[0] == '\0') { ++ if (find_member_by_name(btf, btf__type_by_id(btf, btf_member->type), field_name)) ++ return 1; ++ } ++ } ++ return 0; ++} ++ + int kernel_struct_has_field(const char *struct_name, const char *field_name) + { + const struct btf_type *btf_type; +- const struct btf_member *btf_member; + struct btf *btf; +- int i, ret, btf_id; ++ int ret, btf_id; + + btf = libbpf_find_kernel_btf(); + ret = libbpf_get_error(btf); +@@ -1338,14 +1353,7 @@ int kernel_struct_has_field(const char *struct_name, const char *field_name) + } + + btf_type = btf__type_by_id(btf, btf_id); +- btf_member = btf_members(btf_type); +- for (i = 0; i < btf_vlen(btf_type); i++, btf_member++) { +- if (!strcmp(btf__name_by_offset(btf, btf_member->name_off), field_name)) { +- ret = 1; +- goto cleanup; +- } +- } +- ret = 0; ++ ret = find_member_by_name(btf, btf_type, field_name); + + cleanup: + btf__free(btf); +-- +2.38.1 + diff --git a/SPECS/bcc.spec b/SPECS/bcc.spec index b605ff2..7f3f43c 100644 --- a/SPECS/bcc.spec +++ b/SPECS/bcc.spec @@ -8,7 +8,7 @@ %endif Name: bcc -Version: 0.24.0 +Version: 0.25.0 Release: 2%{?dist} Summary: BPF Compiler Collection (BCC) License: ASL 2.0 @@ -17,6 +17,10 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz Patch0: %{name}-%{version}-Manpages-remove-unstable-statement.patch Patch1: %{name}-%{version}-RHEL-libbpf-version-fixes.patch Patch2: %{name}-%{version}-libbpf-Allow-kernel_struct_has_field-to-reach-field-.patch +Patch3: %{name}-%{version}-Fix-bpf_pseudo_fd-type-conversion-error.patch +Patch4: %{name}-%{version}-Fix-clang-15-int-to-pointer-conversion-errors.patch +Patch5: %{name}-%{version}-Revert-tools-tcpaccept-Fix-support-for-v5.6-kernels.patch +Patch6: %{name}-%{version}-Fix-get_kprobe_functions.patch # Arches will be included as upstream support is added and dependencies are # satisfied in the respective arches @@ -214,6 +218,13 @@ done %changelog +* Tue Jan 10 2023 Jerome Marchand - 0.25.0-2 +- Fix tcpdrop tool + +* Wed Nov 30 2022 Jerome Marchand - 0.25.0-1 +- Rebase to bcc-0.25.0 +- Rebuild on LLVM 15 + * Thu Jun 23 2022 Jerome Marchand - 0.24.0-2 - Rebuild on libbpf 0.5.0