diff --git a/SOURCES/bpftrace-0.12.1-Fix-single-arg-wildcard-listings.patch b/SOURCES/bpftrace-0.12.1-Fix-single-arg-wildcard-listings.patch new file mode 100644 index 0000000..1841c93 --- /dev/null +++ b/SOURCES/bpftrace-0.12.1-Fix-single-arg-wildcard-listings.patch @@ -0,0 +1,72 @@ +From b7fd0900b18c4b640926e0bb830464565a527ca1 Mon Sep 17 00:00:00 2001 +From: Daniel Xu +Date: Mon, 5 Apr 2021 14:35:08 -0700 +Subject: [PATCH] Fix single arg wildcard listings + +The docs say we can do stuff like + + # bpftrace -l "*sleep*" + +so we should probably implement it. We probably regressed on this during +the probe matching refactoring. +--- + src/ast/attachpoint_parser.cpp | 10 +++++++--- + tests/runtime/regression | 6 ++++++ + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/src/ast/attachpoint_parser.cpp b/src/ast/attachpoint_parser.cpp +index cfac09bc..b62549d7 100644 +--- a/src/ast/attachpoint_parser.cpp ++++ b/src/ast/attachpoint_parser.cpp +@@ -77,6 +77,9 @@ AttachPointParser::State AttachPointParser::parse_attachpoint(AttachPoint &ap) + std::set probe_types; + if (has_wildcard(parts_.front())) + { ++ // Single argument listing looks at all relevant probe types ++ std::string probetype_query = (parts_.size() == 1) ? "*" : parts_.front(); ++ + // Probe type expansion + // If PID is specified or the second part of the attach point is a path + // (contains '/'), use userspace probe types. +@@ -85,12 +88,12 @@ AttachPointParser::State AttachPointParser::parse_attachpoint(AttachPoint &ap) + (parts_.size() >= 2 && parts_[1].find('/') != std::string::npos)) + { + probe_types = bpftrace_.probe_matcher_->expand_probetype_userspace( +- parts_.front()); ++ probetype_query); + } + else + { + probe_types = bpftrace_.probe_matcher_->expand_probetype_kernel( +- parts_.front()); ++ probetype_query); + } + } + else +@@ -111,7 +114,8 @@ AttachPointParser::State AttachPointParser::parse_attachpoint(AttachPoint &ap) + for (const auto &probe_type : probe_types) + { + std::string raw_input = ap.raw_input; +- erase_prefix(raw_input); ++ if (parts_.size() > 1) ++ erase_prefix(raw_input); + raw_input = probe_type + ":" + raw_input; + // New attach points have ignore_invalid set to true - probe types for + // which raw_input has invalid number of parts will be ignored (instead +diff --git a/tests/runtime/regression b/tests/runtime/regression +index 7f40ffdb..b7fa4653 100644 +--- a/tests/runtime/regression ++++ b/tests/runtime/regression +@@ -33,3 +33,9 @@ NAME c_array_indexing + RUN bpftrace -v -e 'struct Foo { int a; uint8_t b[10]; } uprobe:testprogs/uprobe_test:function2 { $foo = (struct Foo *)arg0; printf("%c %c %c %c %c\n", $foo->b[0], $foo->b[1], $foo->b[2], $foo->b[3], $foo->b[4]) }' -c ./testprogs/uprobe_test + EXPECT h e l l o + TIMEOUT 5 ++ ++# https://github.com/iovisor/bpftrace/issues/1773 ++NAME single_arg_wildcard_listing ++RUN bpftrace -l "*do_nanosleep*" ++EXPECT kprobe:do_nanosleep ++TIMEOUT 1 +-- +2.34.1 + diff --git a/SOURCES/bpftrace-0.12.1-Update-bio-tools-to-work-on-RHEL9.patch b/SOURCES/bpftrace-0.12.1-Update-bio-tools-to-work-on-RHEL9.patch new file mode 100644 index 0000000..d89a1f2 --- /dev/null +++ b/SOURCES/bpftrace-0.12.1-Update-bio-tools-to-work-on-RHEL9.patch @@ -0,0 +1,84 @@ +From 617bb8501c091be2501b3abe4dad47804d5a4278 Mon Sep 17 00:00:00 2001 +From: Viktor Malik +Date: Mon, 17 Jan 2022 11:15:26 +0100 +Subject: [PATCH] Update bio* tools to work on RHEL9 + +Kernel commit: + 9e6c144e5fee block: inline hot paths of blk_account_io_*() +renamed some functions used in the tools. + +Kernel commit: + 5f8d3bf600d2 block: move struct request to blk-mq.h +moved "struct request" to a different header. + +This fixes both issues. +--- + tools/biolatency.bt | 4 ++-- + tools/biosnoop.bt | 6 +++--- + tools/biostacks.bt | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/tools/biolatency.bt b/tools/biolatency.bt +index 4ea910b4..8fb0490d 100755 +--- a/tools/biolatency.bt ++++ b/tools/biolatency.bt +@@ -16,12 +16,12 @@ BEGIN + printf("Tracing block device I/O... Hit Ctrl-C to end.\n"); + } + +-kprobe:blk_account_io_start ++kprobe:__blk_account_io_start + { + @start[arg0] = nsecs; + } + +-kprobe:blk_account_io_done ++kprobe:__blk_account_io_done + /@start[arg0]/ + { + @usecs = hist((nsecs - @start[arg0]) / 1000); +diff --git a/tools/biosnoop.bt b/tools/biosnoop.bt +index 38ffeb52..6519054c 100755 +--- a/tools/biosnoop.bt ++++ b/tools/biosnoop.bt +@@ -1,5 +1,5 @@ + #!/usr/bin/env bpftrace +-#include ++#include + /* + * biosnoop.bt Block I/O tracing tool, showing per I/O latency. + * For Linux, uses bpftrace, eBPF. +@@ -16,7 +16,7 @@ BEGIN + printf("%-12s %-7s %-16s %-6s %7s\n", "TIME(ms)", "DISK", "COMM", "PID", "LAT(ms)"); + } + +-kprobe:blk_account_io_start ++kprobe:__blk_account_io_start + { + @start[arg0] = nsecs; + @iopid[arg0] = pid; +@@ -24,7 +24,7 @@ kprobe:blk_account_io_start + @disk[arg0] = ((struct request *)arg0)->rq_disk->disk_name; + } + +-kprobe:blk_account_io_done ++kprobe:__blk_account_io_done + /@start[arg0] != 0 && @iopid[arg0] != 0 && @iocomm[arg0] != ""/ + + { +diff --git a/tools/biostacks.bt b/tools/biostacks.bt +index 58201cdf..fdd2efed 100755 +--- a/tools/biostacks.bt ++++ b/tools/biostacks.bt +@@ -18,7 +18,7 @@ BEGIN + printf("Tracing block I/O with init stacks. Hit Ctrl-C to end.\n"); + } + +-kprobe:blk_account_io_start ++kprobe:__blk_account_io_start + { + @reqstack[arg0] = kstack; + @reqts[arg0] = nsecs; +-- +2.34.1 + diff --git a/SPECS/bpftrace.spec b/SPECS/bpftrace.spec index a580f8e..1a87ac1 100644 --- a/SPECS/bpftrace.spec +++ b/SPECS/bpftrace.spec @@ -1,6 +1,6 @@ Name: bpftrace Version: 0.12.1 -Release: 7%{?dist} +Release: 8%{?dist} Summary: High-level tracing language for Linux eBPF License: ASL 2.0 @@ -9,6 +9,8 @@ Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz Patch0: %{name}-%{version}-RHEL-9-fixes.patch Patch1: %{name}-%{version}-Fix-mdflush.patch Patch2: %{name}-%{version}-orc-Fix-build-with-clang-13.patch +Patch3: %{name}-%{version}-Fix-single-arg-wildcard-listings.patch +Patch4: %{name}-%{version}-Update-bio-tools-to-work-on-RHEL9.patch Patch10: %{name}-%{version}-aarch64-fixes-statsnoop-and-opensnoop.patch @@ -83,6 +85,10 @@ find %{buildroot}%{_datadir}/%{name}/tools -type f -exec \ %{_datadir}/%{name}/tools/doc/*.txt %changelog +* Mon Feb 21 2022 Viktor Malik - 0.12.1-8 +- Fix wildcard listing bug +- Fix bio* tools + * Thu Dec 02 2021 Jerome Marchand - 0.12.1.7 - Bump up required bcc version.