Compare commits
No commits in common. "c10s" and "c8" have entirely different histories.
@ -1 +0,0 @@
|
|||||||
1
|
|
70
.gitignore
vendored
70
.gitignore
vendored
@ -1,69 +1 @@
|
|||||||
/systemtap-3.1.tar.gz
|
SOURCES/systemtap-4.9.tar.gz
|
||||||
/systemtap-3.2-0.20170321git272146660f54.tar.gz
|
|
||||||
/systemtap-3.2-0.20170406git83d186dc7f5c.tar.gz
|
|
||||||
/systemtap-3.2-0.20170410gitcbf2583808d6.tar.gz
|
|
||||||
/systemtap-3.2-0.20170512gitc67d8f274b21.tar.gz
|
|
||||||
/systemtap-3.2.tar.gz
|
|
||||||
/systemtap-3.3-0.20180222git5ef0c24456e3.tar.gz
|
|
||||||
/systemtap-3.3-0.20180315gitc2585f2b58cd.tar.gz
|
|
||||||
/systemtap-3.3-0.20180420gitd4a446c.tar.gz
|
|
||||||
/systemtap-3.3-0.20180508git9c6ac6cda49e.tar.gz
|
|
||||||
/systemtap-3.3.tar.gz
|
|
||||||
/systemtap-4.0-0.20180810git.tar.gz
|
|
||||||
/systemtap-4.0-0.20180906git37598c4fee7c.tar.gz
|
|
||||||
/systemtap-4.0-0.20180914gitc51d4e55d285.tar.gz
|
|
||||||
/systemtap-4.0-0.20180914gitc1befcceae01.tar.gz
|
|
||||||
/systemtap-4.0-0.20180914git11a0a7aea387.tar.gz
|
|
||||||
/systemtap-4.0-0.20180914gitfe4e14f4af16.tar.gz
|
|
||||||
/systemtap-4.0-0.20180914gitfe4e14f4af16.1.tar.gz
|
|
||||||
/systemtap-4.0-0.20181003git4ad1e11de831.tar.gz
|
|
||||||
/systemtap-4.0.tar.gz
|
|
||||||
/systemtap-4.1-0.20181126gitf082df49dd91.tar.gz
|
|
||||||
/systemtap-4.1-0.20181126git47ce37a149b6.tar.gz
|
|
||||||
/systemtap-4.1-0.20181203gitec3b46eb9b19.tar.gz
|
|
||||||
/systemtap-4.1-0.20181204git891810c246d6.tar.gz
|
|
||||||
/systemtap-4.1-0.20190123gitc8084763b75f.tar.gz
|
|
||||||
/systemtap-4.1-0.20190125git905865da1024.tar.gz
|
|
||||||
/systemtap-4.1-0.20190207git4e76869512d2.tar.gz
|
|
||||||
/systemtap-4.1-0.20190307gitf7fb9c9182dc.tar.gz
|
|
||||||
/systemtap-4.1-0.20190308gitb3627d9aa037.tar.gz
|
|
||||||
/systemtap-4.1-0.20190327git2ede4cecb20c.tar.gz
|
|
||||||
/systemtap-4.1-0.20190502git446e7c358247.tar.gz
|
|
||||||
/systemtap-4.1.tar.gz
|
|
||||||
/systemtap-4.2-0.20190513git8b868f3dd030.tar.gz
|
|
||||||
/systemtap-4.2-0.20190613git2d77f531a5d1.tar.gz
|
|
||||||
/systemtap-4.2-0.20190618git47c3f6c60174.tar.gz
|
|
||||||
/systemtap-4.2-0.20190807gitebfc300ec2ad.tar.gz
|
|
||||||
/systemtap-4.2-0.20190827git8ffab23ff.tar.gz
|
|
||||||
/systemtap-4.2.tar.gz
|
|
||||||
/systemtap-4.3-0.20200112gitb1e6a6645bba.tar.gz
|
|
||||||
/systemtap-4.3-0.20200203git6c0b74f5910a.tar.gz
|
|
||||||
/systemtap-4.3-0.20200211git91ffb97ad335.tar.gz
|
|
||||||
/systemtap-4.3-0.20200529git6d50a5cadb64.tar.gz
|
|
||||||
/systemtap-4.3.tar.gz
|
|
||||||
/systemtap-4.4-0.20200714git8212024da2ae.tar.gz
|
|
||||||
/systemtap-4.4-0.20200714gite5a63d9c000a.tar.gz
|
|
||||||
/systemtap-4.4-0.20200715gitce0fa621eb35.tar.gz
|
|
||||||
/systemtap-4.4-0.20200731git87344e948606.tar.gz
|
|
||||||
/systemtap-4.4-0.20200805git82b8e1a07.tar.gz
|
|
||||||
/systemtap-4.4-0.20200922git05179173e71c.tar.gz
|
|
||||||
/systemtap-4.4.tar.gz
|
|
||||||
/systemtap-4.4-0.20201203gitf02f08bc6eff.tar.gz
|
|
||||||
/systemtap-4.5-0.20201203git963c215e781e.tar.gz
|
|
||||||
/systemtap-4.5-0.20201204git0d80048e02ec.tar.gz
|
|
||||||
/systemtap-4.5-0.20201210gitd86b64029598.tar.gz
|
|
||||||
/systemtap-4.5-0.20210105git6cb54128e005.tar.gz
|
|
||||||
/systemtap-4.5-0.20210107gita4d01e48d435.tar.gz
|
|
||||||
/systemtap-4.5-0.20210128gita790dc64a9d8.tar.gz
|
|
||||||
/systemtap-4.5-0.20210129gitea81249b90b9.tar.gz
|
|
||||||
/systemtap-4.5-0.202101291559git9e1a0f5703ad.tar.gz
|
|
||||||
/systemtap-4.5-0.202102101544git8d5e0abc542c.tar.gz
|
|
||||||
/systemtap-4.5.tar.gz
|
|
||||||
/systemtap-4.6.tar.gz
|
|
||||||
/systemtap-4.7.tar.gz
|
|
||||||
/systemtap-4.8.tar.gz
|
|
||||||
/systemtap-4.9.tar.gz
|
|
||||||
/systemtap-5.0.tar.gz
|
|
||||||
/systemtap-5.1.tar.gz
|
|
||||||
/systemtap-5.2.tar.gz
|
|
||||||
/systemtap-5.3.tar.gz
|
|
||||||
|
1
.systemtap.metadata
Normal file
1
.systemtap.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
7ba2ad579a5ba66ccfd36ad6df0896c9e136f9e9 SOURCES/systemtap-4.9.tar.gz
|
1845
SOURCES/pr29108.patch
Normal file
1845
SOURCES/pr29108.patch
Normal file
File diff suppressed because it is too large
Load Diff
99
SOURCES/pr30749.patch
Normal file
99
SOURCES/pr30749.patch
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
commit 9839db5514a29cf4f58b3de8cc6155088be6d061
|
||||||
|
gpg: Signature made Sat 12 Aug 2023 02:49:26 PM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Sat Aug 12 14:28:44 2023 -0400
|
||||||
|
|
||||||
|
PR30749: correct stap --sign-module timing
|
||||||
|
|
||||||
|
Previous code signed the temp directory copy, after it had already
|
||||||
|
been copied into the cache -- so the signature never made it to a
|
||||||
|
permanent artifact.
|
||||||
|
|
||||||
|
If the module was being fetched from the cache from a previous build
|
||||||
|
run, a sign (re)attempt will still be done. This may not be
|
||||||
|
necessary, but shouldn't be harmful.
|
||||||
|
|
||||||
|
Reported-By: Renaud Métrich <rmetrich@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/main.cxx b/main.cxx
|
||||||
|
index 06adb66ad..9f695cbd8 100644
|
||||||
|
--- a/main.cxx
|
||||||
|
+++ b/main.cxx
|
||||||
|
@@ -1190,8 +1190,10 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
s.mok_fingerprints.clear();
|
||||||
|
s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
}
|
||||||
|
- rc =
|
||||||
|
- sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
+ if (s.verbose)
|
||||||
|
+ clog << _F("Signing %s with mok key %s", s.module_filename().c_str(), mok_path.c_str())
|
||||||
|
+ << endl;
|
||||||
|
+ rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -1310,8 +1312,30 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
if (! s.use_script_cache && s.last_pass <= 4)
|
||||||
|
s.save_module = true;
|
||||||
|
|
||||||
|
+#if HAVE_NSS
|
||||||
|
+ // PR30749
|
||||||
|
+ if (!rc && s.module_sign_given)
|
||||||
|
+ {
|
||||||
|
+ // when run on client as --sign-module, mok fingerprints are result of mokutil -l
|
||||||
|
+ // when run from server as --sign-module=PATH, mok fingerprint is given by PATH
|
||||||
|
+ string mok_path;
|
||||||
|
+ if (!s.module_sign_mok_path.empty())
|
||||||
|
+ {
|
||||||
|
+ string mok_fingerprint;
|
||||||
|
+ split_path (s.module_sign_mok_path, mok_path, mok_fingerprint);
|
||||||
|
+ s.mok_fingerprints.clear();
|
||||||
|
+ s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (s.verbose)
|
||||||
|
+ clog << _F("Signing %s with mok key %s", s.module_filename().c_str(), mok_path.c_str())
|
||||||
|
+ << endl;
|
||||||
|
+ rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// Copy module to the current directory.
|
||||||
|
- if (s.save_module && !pending_interrupts)
|
||||||
|
+ if (!rc && s.save_module && !pending_interrupts)
|
||||||
|
{
|
||||||
|
string module_src_path = s.tmpdir + "/" + s.module_filename();
|
||||||
|
string module_dest_path = s.module_filename();
|
||||||
|
@@ -1327,29 +1351,11 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if HAVE_NSS
|
||||||
|
- if (s.module_sign_given)
|
||||||
|
- {
|
||||||
|
- // when run on client as --sign-module, mok fingerprints are result of mokutil -l
|
||||||
|
- // when run from server as --sign-module=PATH, mok fingerprint is given by PATH
|
||||||
|
- string mok_path;
|
||||||
|
- if (!s.module_sign_mok_path.empty())
|
||||||
|
- {
|
||||||
|
- string mok_fingerprint;
|
||||||
|
- split_path (s.module_sign_mok_path, mok_path, mok_fingerprint);
|
||||||
|
- s.mok_fingerprints.clear();
|
||||||
|
- s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
PROBE1(stap, pass4__end, &s);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
int
|
||||||
|
pass_5 (systemtap_session &s, vector<remote*> targets)
|
||||||
|
{
|
24
SOURCES/rhbz2223733.patch
Normal file
24
SOURCES/rhbz2223733.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
commit ead30c04c7157fec194c0f6d81e5c51c99bf25cf
|
||||||
|
gpg: Signature made Wed 24 May 2023 10:23:54 AM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Wed May 24 10:22:08 2023 -0400
|
||||||
|
|
||||||
|
PR30484: stap-report: scrape less of /sys /proc
|
||||||
|
|
||||||
|
Mainly: avoid process/busy parts like /proc/$pid.
|
||||||
|
|
||||||
|
diff --git a/stap-report b/stap-report
|
||||||
|
index 217ddf840..3b3a1a258 100755
|
||||||
|
--- a/stap-report
|
||||||
|
+++ b/stap-report
|
||||||
|
@@ -105,7 +105,7 @@ elif [ -f /var/log/packages ]; then
|
||||||
|
run "cat /var/log/packages | egrep 'systemtap|elfutils|kernel|gcc|dyninst|java|byteman|avahi|nss|nspr|dejagnu' | sort -k9"
|
||||||
|
fi
|
||||||
|
run "egrep 'PROBE|RANDOMIZE|RELOC|TRACE|MARKER|KALLSYM|_DEBUG_|LOCKDEP|LOCKING|MODULE|FENTRY|_SIG|BPF' /lib/modules/`uname -r`/build/.config | grep -v not.set | sort | fmt -w 80"
|
||||||
|
-run "find /debugfs /proc /sys /dev /sys/kernel/debug -type f -path '*kprobe*' -o -path '*yama*' 2>/dev/null | xargs grep -H ."
|
||||||
|
+run "find /debugfs /proc/sys /sys/kernel /dev -type f -path '*kprobe*' -o -path '*yama*' 2>/dev/null | xargs grep -H ."
|
||||||
|
run "lsmod"
|
||||||
|
run "avahi-browse -r -t _stap._tcp"
|
||||||
|
run "ifconfig -a"
|
64
SOURCES/rhbz2223735.patch
Normal file
64
SOURCES/rhbz2223735.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
commit ab0c5c25509600b7c9cecc9e10baebc984082b50
|
||||||
|
gpg: Signature made Fri 12 May 2023 11:18:18 AM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Fri May 12 11:13:45 2023 -0400
|
||||||
|
|
||||||
|
PR30442: failing optional statement probes should not trigger pass2 exceptions
|
||||||
|
|
||||||
|
In tapsets.cxx, query_cu() and query_module() aggressively caught &
|
||||||
|
sess-print_error'd semantic_errors from subsidiary call sites. They
|
||||||
|
are unaware of whether the probe in question is being resolved within
|
||||||
|
an optional (? or !) context. Instead of this, they now simply let
|
||||||
|
the exceptions propagate out to derive_probes() or similar, which does
|
||||||
|
know whether exceptions are errors in that context. That means
|
||||||
|
exceptions can propagate through elfutils iteration machinery too,
|
||||||
|
perhaps risking C level memory leaks, but so be it.
|
||||||
|
|
||||||
|
This fix goes well beyond statement probes per se, but hand-testing
|
||||||
|
and the testsuite appear not to show regressions related to this.
|
||||||
|
|
||||||
|
Added semok/badstmt.exp to test.
|
||||||
|
|
||||||
|
diff --git a/tapsets.cxx b/tapsets.cxx
|
||||||
|
index 859160bc5..7b7107371 100644
|
||||||
|
--- a/tapsets.cxx
|
||||||
|
+++ b/tapsets.cxx
|
||||||
|
@@ -2453,8 +2453,9 @@ query_cu (Dwarf_Die * cudie, dwarf_query * q)
|
||||||
|
}
|
||||||
|
catch (const semantic_error& e)
|
||||||
|
{
|
||||||
|
- q->sess.print_error (e);
|
||||||
|
- return DWARF_CB_ABORT;
|
||||||
|
+ // q->sess.print_error (e);
|
||||||
|
+ throw;
|
||||||
|
+ // return DWARF_CB_ABORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2696,8 +2697,9 @@ query_module (Dwfl_Module *mod,
|
||||||
|
}
|
||||||
|
catch (const semantic_error& e)
|
||||||
|
{
|
||||||
|
- q->sess.print_error (e);
|
||||||
|
- return DWARF_CB_ABORT;
|
||||||
|
+ // q->sess.print_error (e);
|
||||||
|
+ // return DWARF_CB_ABORT;
|
||||||
|
+ throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/testsuite/semok/stmtbad.stp b/testsuite/semok/stmtbad.stp
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000..06780790a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/testsuite/semok/stmtbad.stp
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+#! /bin/sh
|
||||||
|
+
|
||||||
|
+exec stap -v -p2 -e 'probe oneshot {log("nothing") }
|
||||||
|
+ probe process.statement("main@*:1")? { log("yo") }' -c stap
|
||||||
|
+
|
||||||
|
+# The optional misaddressed statement probe should let stap still
|
||||||
|
+# succeed with the oneshot probe.
|
@ -1,5 +1,3 @@
|
|||||||
# work around flakey gcc warnings
|
|
||||||
%{!?with_Werror: %global with_Werror 0}
|
|
||||||
%{!?with_sqlite: %global with_sqlite 0%{?fedora} >= 17 || 0%{?rhel} >= 7}
|
%{!?with_sqlite: %global with_sqlite 0%{?fedora} >= 17 || 0%{?rhel} >= 7}
|
||||||
# prefer prebuilt docs
|
# prefer prebuilt docs
|
||||||
%{!?with_docs: %global with_docs 0}
|
%{!?with_docs: %global with_docs 0}
|
||||||
@ -13,8 +11,8 @@
|
|||||||
%endif
|
%endif
|
||||||
%{!?with_rpm: %global with_rpm 1}
|
%{!?with_rpm: %global with_rpm 1}
|
||||||
%{!?elfutils_version: %global elfutils_version 0.179}
|
%{!?elfutils_version: %global elfutils_version 0.179}
|
||||||
%{!?with_boost: %global with_boost 1}
|
%{!?with_boost: %global with_boost 0}
|
||||||
%ifarch x86_64 ppc ppc64 ppc64le aarch64
|
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64
|
||||||
%{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7}
|
%{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7}
|
||||||
%else
|
%else
|
||||||
%{!?with_dyninst: %global with_dyninst 0}
|
%{!?with_dyninst: %global with_dyninst 0}
|
||||||
@ -45,13 +43,9 @@
|
|||||||
%{!?with_httpd: %global with_httpd 0}
|
%{!?with_httpd: %global with_httpd 0}
|
||||||
%{!?with_specific_python: %global with_specific_python 0%{?fedora} >= 31}
|
%{!?with_specific_python: %global with_specific_python 0%{?fedora} >= 31}
|
||||||
%{!?with_sysusers: %global with_sysusers 0%{?fedora} >= 32 || 0%{?rhel} >= 9}
|
%{!?with_sysusers: %global with_sysusers 0%{?fedora} >= 32 || 0%{?rhel} >= 9}
|
||||||
# NB: can't turn this on by default on any distro version whose builder system
|
|
||||||
# may run kernels different than the distro version itself.
|
|
||||||
%{!?with_check: %global with_check 0}
|
|
||||||
|
|
||||||
|
|
||||||
# Virt is supported on these arches, even on el7, but it's not in core EL7
|
# Virt is supported on these arches, even on el7, but it's not in core EL7
|
||||||
%if 0%{?rhel} && 0%{?rhel} <= 7
|
%if 0%{?rhel} <= 7
|
||||||
%ifarch ppc64le aarch64
|
%ifarch ppc64le aarch64
|
||||||
%global with_virthost 0
|
%global with_virthost 0
|
||||||
%endif
|
%endif
|
||||||
@ -70,6 +64,9 @@
|
|||||||
%else
|
%else
|
||||||
%if 0%{?rhel} >= 6
|
%if 0%{?rhel} >= 6
|
||||||
%define udevrulesdir /lib/udev/rules.d
|
%define udevrulesdir /lib/udev/rules.d
|
||||||
|
%else
|
||||||
|
# RHEL5
|
||||||
|
%define udevrulesdir /etc/udev/rules.d
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
@ -86,7 +83,11 @@
|
|||||||
%define dracutbindir %{_bindir}
|
%define dracutbindir %{_bindir}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%{!?_rpmmacrodir: %define _rpmmacrodir %{_rpmconfigdir}/macros.d}
|
%if 0%{?rhel} == 6
|
||||||
|
%{!?_rpmmacrodir: %define _rpmmacrodir /etc/rpm/}
|
||||||
|
%else
|
||||||
|
%{!?_rpmmacrodir: %define _rpmmacrodir %{_rpmconfigdir}/macros.d}
|
||||||
|
%endif
|
||||||
|
|
||||||
# To avoid testsuite/*/*.stp has shebang which doesn't start with '/'
|
# To avoid testsuite/*/*.stp has shebang which doesn't start with '/'
|
||||||
%define __brp_mangle_shebangs_exclude_from .stp$
|
%define __brp_mangle_shebangs_exclude_from .stp$
|
||||||
@ -96,10 +97,7 @@
|
|||||||
\
|
\
|
||||||
g stapusr 156\
|
g stapusr 156\
|
||||||
g stapsys 157\
|
g stapsys 157\
|
||||||
g stapdev 158\
|
g stapdev 158
|
||||||
g stapunpriv 159\
|
|
||||||
u stapunpriv 159 "systemtap unprivileged user" /var/lib/stapunpriv /sbin/nologin\
|
|
||||||
m stapunpriv stapunpriv
|
|
||||||
|
|
||||||
%define _systemtap_server_preinstall \
|
%define _systemtap_server_preinstall \
|
||||||
# See systemd-sysusers(8) sysusers.d(5)\
|
# See systemd-sysusers(8) sysusers.d(5)\
|
||||||
@ -124,8 +122,8 @@ m stapdev stapdev
|
|||||||
|
|
||||||
Name: systemtap
|
Name: systemtap
|
||||||
# PRERELEASE
|
# PRERELEASE
|
||||||
Version: 5.3
|
Version: 4.9
|
||||||
Release: 3b%{?release_override}%{?dist}
|
Release: 3%{?release_override}%{?dist}
|
||||||
# for version, see also configure.ac
|
# for version, see also configure.ac
|
||||||
|
|
||||||
|
|
||||||
@ -137,8 +135,7 @@ Release: 3b%{?release_override}%{?dist}
|
|||||||
# systemtap-runtime /usr/bin/staprun, /usr/bin/stapsh, /usr/bin/stapdyn
|
# systemtap-runtime /usr/bin/staprun, /usr/bin/stapsh, /usr/bin/stapdyn
|
||||||
# systemtap-client /usr/bin/stap, samples, docs, tapset(bonus), req:-runtime
|
# systemtap-client /usr/bin/stap, samples, docs, tapset(bonus), req:-runtime
|
||||||
# systemtap-initscript /etc/init.d/systemtap, dracut module, req:systemtap
|
# systemtap-initscript /etc/init.d/systemtap, dracut module, req:systemtap
|
||||||
# systemtap-sdt-devel /usr/include/sys/sdt.h
|
# systemtap-sdt-devel /usr/include/sys/sdt.h /usr/bin/dtrace
|
||||||
# systemtap-sdt-dtrace /usr/bin/dtrace
|
|
||||||
# systemtap-testsuite /usr/share/systemtap/testsuite*, req:systemtap, req:sdt-devel
|
# systemtap-testsuite /usr/share/systemtap/testsuite*, req:systemtap, req:sdt-devel
|
||||||
# systemtap-runtime-java libHelperSDT.so, HelperSDT.jar, stapbm, req:-runtime
|
# systemtap-runtime-java libHelperSDT.so, HelperSDT.jar, stapbm, req:-runtime
|
||||||
# systemtap-runtime-virthost /usr/bin/stapvirt, req:libvirt req:libxml2
|
# systemtap-runtime-virthost /usr/bin/stapvirt, req:libvirt req:libxml2
|
||||||
@ -159,12 +156,15 @@ Release: 3b%{?release_override}%{?dist}
|
|||||||
# intermediary stap-server for --use-server: systemtap-server (-devel unused)
|
# intermediary stap-server for --use-server: systemtap-server (-devel unused)
|
||||||
|
|
||||||
Summary: Programmable system-wide instrumentation system
|
Summary: Programmable system-wide instrumentation system
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
|
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
|
||||||
|
|
||||||
Patch1: systemtap-defined.patch
|
Patch1: rhbz2223733.patch
|
||||||
Patch2: systemtap-dev_tapset.patch
|
Patch2: rhbz2223735.patch
|
||||||
|
Patch3: pr29108.patch
|
||||||
|
Patch4: pr30749.patch
|
||||||
|
|
||||||
|
|
||||||
# Build*
|
# Build*
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
@ -175,7 +175,6 @@ BuildRequires: pkgconfig(nss)
|
|||||||
BuildRequires: pkgconfig(avahi-client)
|
BuildRequires: pkgconfig(avahi-client)
|
||||||
%if %{with_debuginfod}
|
%if %{with_debuginfod}
|
||||||
BuildRequires: pkgconfig(libdebuginfod)
|
BuildRequires: pkgconfig(libdebuginfod)
|
||||||
BuildRequires: pkgconfig(json-c)
|
|
||||||
%endif
|
%endif
|
||||||
%if %{with_dyninst}
|
%if %{with_dyninst}
|
||||||
BuildRequires: dyninst-devel >= 10.0
|
BuildRequires: dyninst-devel >= 10.0
|
||||||
@ -192,7 +191,9 @@ BuildRequires: pkgconfig(ncurses)
|
|||||||
BuildRequires: systemd
|
BuildRequires: systemd
|
||||||
%endif
|
%endif
|
||||||
# Needed for libstd++ < 4.0, without <tr1/memory>
|
# Needed for libstd++ < 4.0, without <tr1/memory>
|
||||||
|
%if %{with_boost}
|
||||||
BuildRequires: boost-devel
|
BuildRequires: boost-devel
|
||||||
|
%endif
|
||||||
%if %{with_crash}
|
%if %{with_crash}
|
||||||
BuildRequires: crash-devel zlib-devel
|
BuildRequires: crash-devel zlib-devel
|
||||||
%endif
|
%endif
|
||||||
@ -214,7 +215,7 @@ BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf
|
|||||||
%endif
|
%endif
|
||||||
%if %{with_emacsvim}
|
%if %{with_emacsvim}
|
||||||
# for _emacs_sitelispdir macros etc.
|
# for _emacs_sitelispdir macros etc.
|
||||||
BuildRequires: emacs-common
|
BuildRequires: emacs
|
||||||
%endif
|
%endif
|
||||||
%if %{with_java}
|
%if %{with_java}
|
||||||
BuildRequires: java-devel
|
BuildRequires: java-devel
|
||||||
@ -225,6 +226,9 @@ BuildRequires: pkgconfig(libvirt)
|
|||||||
BuildRequires: pkgconfig(libxml-2.0)
|
BuildRequires: pkgconfig(libxml-2.0)
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: readline-devel
|
BuildRequires: readline-devel
|
||||||
|
%if 0%{?rhel} <= 5
|
||||||
|
BuildRequires: pkgconfig(ncurses)
|
||||||
|
%endif
|
||||||
%if %{with_python2_probes}
|
%if %{with_python2_probes}
|
||||||
BuildRequires: python2-devel
|
BuildRequires: python2-devel
|
||||||
%if 0%{?fedora} >= 1
|
%if 0%{?fedora} >= 1
|
||||||
@ -246,14 +250,8 @@ BuildRequires: libmicrohttpd-devel
|
|||||||
BuildRequires: libuuid-devel
|
BuildRequires: libuuid-devel
|
||||||
%endif
|
%endif
|
||||||
%if %{with_sysusers}
|
%if %{with_sysusers}
|
||||||
BuildRequires: systemd-rpm-macros
|
BuildRequires: systemd-rpm-macros
|
||||||
%endif
|
%endif
|
||||||
%if %{with_check}
|
|
||||||
BuildRequires: kernel-devel
|
|
||||||
# and some of the same Requires: as below
|
|
||||||
BuildRequires: dejagnu gcc make
|
|
||||||
%endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Install requirements
|
# Install requirements
|
||||||
@ -270,8 +268,8 @@ the components needed to locally develop and execute systemtap scripts.
|
|||||||
|
|
||||||
%package server
|
%package server
|
||||||
Summary: Instrumentation System Server
|
Summary: Instrumentation System Server
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-devel = %{version}-%{release}
|
Requires: systemtap-devel = %{version}-%{release}
|
||||||
Conflicts: systemtap-devel < %{version}-%{release}
|
Conflicts: systemtap-devel < %{version}-%{release}
|
||||||
Conflicts: systemtap-runtime < %{version}-%{release}
|
Conflicts: systemtap-runtime < %{version}-%{release}
|
||||||
@ -300,8 +298,8 @@ compiles systemtap scripts to kernel objects on their demand.
|
|||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Summary: Programmable system-wide instrumentation system - development headers, tools
|
Summary: Programmable system-wide instrumentation system - development headers, tools
|
||||||
License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND BSD-2-Clause
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
|
|
||||||
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
|
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
|
||||||
Recommends: (kernel-debug-devel if kernel-debug)
|
Recommends: (kernel-debug-devel if kernel-debug)
|
||||||
@ -330,8 +328,8 @@ a copy of the standard tapset library and the runtime library C files.
|
|||||||
|
|
||||||
%package runtime
|
%package runtime
|
||||||
Summary: Programmable system-wide instrumentation system - runtime
|
Summary: Programmable system-wide instrumentation system - runtime
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires(pre): shadow-utils
|
Requires(pre): shadow-utils
|
||||||
Conflicts: systemtap-devel < %{version}-%{release}
|
Conflicts: systemtap-devel < %{version}-%{release}
|
||||||
Conflicts: systemtap-server < %{version}-%{release}
|
Conflicts: systemtap-server < %{version}-%{release}
|
||||||
@ -345,8 +343,8 @@ using a local or remote systemtap-devel installation.
|
|||||||
|
|
||||||
%package client
|
%package client
|
||||||
Summary: Programmable system-wide instrumentation system - client
|
Summary: Programmable system-wide instrumentation system - client
|
||||||
License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND GFDL-1.2-or-later AND BSD-2-Clause
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: zip unzip
|
Requires: zip unzip
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
Requires: coreutils grep sed unzip zip
|
Requires: coreutils grep sed unzip zip
|
||||||
@ -359,19 +357,17 @@ Requires: mokutil
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description client
|
%description client
|
||||||
This package contains/requires only the components needed to
|
This package contains/requires the components needed to develop
|
||||||
use systemtap scripts by compiling them using a local or a remote
|
systemtap scripts, and compile them using a local systemtap-devel
|
||||||
systemtap-server service, then run them using a local or
|
or a remote systemtap-server installation, then run them using a
|
||||||
remote systemtap-runtime. It includes script samples and
|
local or remote systemtap-runtime. It includes script samples and
|
||||||
documentation, and a copy of the tapset library for reference.
|
documentation, and a copy of the tapset library for reference.
|
||||||
It does NOT include all the components for running a systemtap
|
|
||||||
script in a self-contained fashion; for that, use the -devel
|
|
||||||
subpackage instead.
|
|
||||||
|
|
||||||
%package initscript
|
%package initscript
|
||||||
Summary: Systemtap Initscripts
|
Summary: Systemtap Initscripts
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap = %{version}-%{release}
|
Requires: systemtap = %{version}-%{release}
|
||||||
%if %{with_systemd}
|
%if %{with_systemd}
|
||||||
Requires: systemd
|
Requires: systemd
|
||||||
@ -389,21 +385,9 @@ boot-time probing if supported.
|
|||||||
|
|
||||||
|
|
||||||
%package sdt-devel
|
%package sdt-devel
|
||||||
Summary: Static probe support header files
|
Summary: Static probe support tools
|
||||||
License: GPL-2.0-or-later AND CC0-1.0
|
License: GPLv2+ and Public Domain
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
# for RHEL buildability compatibility, pull in sdt-dtrace at all times
|
|
||||||
Requires: systemtap-sdt-dtrace = %{version}-%{release}
|
|
||||||
|
|
||||||
%description sdt-devel
|
|
||||||
This package includes the <sys/sdt.h> header file used for static
|
|
||||||
instrumentation compiled into userspace programs.
|
|
||||||
|
|
||||||
%package sdt-dtrace
|
|
||||||
Summary: Static probe support dtrace tool
|
|
||||||
License: GPL-2.0-or-later AND CC0-1.0
|
|
||||||
URL: https://sourceware.org/systemtap/
|
|
||||||
Provides: dtrace = %{version}-%{release}
|
|
||||||
%if %{with_pyparsing}
|
%if %{with_pyparsing}
|
||||||
%if %{with_python3}
|
%if %{with_python3}
|
||||||
Requires: python3-pyparsing
|
Requires: python3-pyparsing
|
||||||
@ -416,19 +400,21 @@ Requires: python2-pyparsing
|
|||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%description sdt-dtrace
|
%description sdt-devel
|
||||||
This package includes the dtrace-compatibility preprocessor
|
This package includes the <sys/sdt.h> header file used for static
|
||||||
to process related .d files into tracing-macro-laden .h headers.
|
instrumentation compiled into userspace programs and libraries, along
|
||||||
|
with the optional dtrace-compatibility preprocessor to process related
|
||||||
|
.d files into tracing-macro-laden .h headers.
|
||||||
|
|
||||||
|
|
||||||
%package testsuite
|
%package testsuite
|
||||||
Summary: Instrumentation System Testsuite
|
Summary: Instrumentation System Testsuite
|
||||||
License: GPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later AND MIT
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap = %{version}-%{release}
|
Requires: systemtap = %{version}-%{release}
|
||||||
Requires: systemtap-sdt-devel = %{version}-%{release}
|
Requires: systemtap-sdt-devel = %{version}-%{release}
|
||||||
Requires: systemtap-server = %{version}-%{release}
|
Requires: systemtap-server = %{version}-%{release}
|
||||||
Requires: dejagnu which elfutils grep nc wget
|
Requires: dejagnu which elfutils grep nc
|
||||||
%if %{with_debuginfod}
|
%if %{with_debuginfod}
|
||||||
Requires: elfutils-debuginfod
|
Requires: elfutils-debuginfod
|
||||||
%endif
|
%endif
|
||||||
@ -495,8 +481,8 @@ systemtap on the current system.
|
|||||||
%if %{with_java}
|
%if %{with_java}
|
||||||
%package runtime-java
|
%package runtime-java
|
||||||
Summary: Systemtap Java Runtime Support
|
Summary: Systemtap Java Runtime Support
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
# work around fedora ci gating kvetching about i686<->x86-64 conflicts
|
# work around fedora ci gating kvetching about i686<->x86-64 conflicts
|
||||||
%ifarch x86_64
|
%ifarch x86_64
|
||||||
@ -517,8 +503,8 @@ that probe Java processes running on the OpenJDK runtimes using Byteman.
|
|||||||
%if %{with_python2_probes}
|
%if %{with_python2_probes}
|
||||||
%package runtime-python2
|
%package runtime-python2
|
||||||
Summary: Systemtap Python 2 Runtime Support
|
Summary: Systemtap Python 2 Runtime Support
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
|
|
||||||
%description runtime-python2
|
%description runtime-python2
|
||||||
@ -529,8 +515,8 @@ that probe python 2 processes.
|
|||||||
%if %{with_python3_probes}
|
%if %{with_python3_probes}
|
||||||
%package runtime-python3
|
%package runtime-python3
|
||||||
Summary: Systemtap Python 3 Runtime Support
|
Summary: Systemtap Python 3 Runtime Support
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
|
|
||||||
%if ! (%{with_python2_probes})
|
%if ! (%{with_python2_probes})
|
||||||
@ -546,8 +532,8 @@ that probe python 3 processes.
|
|||||||
%if %{with_python3_probes}
|
%if %{with_python3_probes}
|
||||||
%package exporter
|
%package exporter
|
||||||
Summary: Systemtap-prometheus interoperation mechanism
|
Summary: Systemtap-prometheus interoperation mechanism
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
|
|
||||||
%description exporter
|
%description exporter
|
||||||
@ -559,8 +545,8 @@ to remote requesters on demand.
|
|||||||
%if %{with_virthost}
|
%if %{with_virthost}
|
||||||
%package runtime-virthost
|
%package runtime-virthost
|
||||||
Summary: Systemtap Cross-VM Instrumentation - host
|
Summary: Systemtap Cross-VM Instrumentation - host
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
# only require libvirt-libs really
|
# only require libvirt-libs really
|
||||||
#Requires: libvirt >= 1.0.2
|
#Requires: libvirt >= 1.0.2
|
||||||
Requires: libxml2
|
Requires: libxml2
|
||||||
@ -574,8 +560,8 @@ connection.
|
|||||||
%if %{with_virtguest}
|
%if %{with_virtguest}
|
||||||
%package runtime-virtguest
|
%package runtime-virtguest
|
||||||
Summary: Systemtap Cross-VM Instrumentation - guest
|
Summary: Systemtap Cross-VM Instrumentation - guest
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap-runtime = %{version}-%{release}
|
Requires: systemtap-runtime = %{version}-%{release}
|
||||||
%if %{with_systemd}
|
%if %{with_systemd}
|
||||||
Requires(post): findutils coreutils
|
Requires(post): findutils coreutils
|
||||||
@ -592,21 +578,26 @@ This package installs the services necessary on a virtual machine for a
|
|||||||
systemtap-runtime-virthost machine to execute systemtap scripts.
|
systemtap-runtime-virthost machine to execute systemtap scripts.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_python3} && %{with_monitor}
|
||||||
%package jupyter
|
%package jupyter
|
||||||
Summary: ISystemtap jupyter kernel and examples
|
Summary: ISystemtap jupyter kernel and examples
|
||||||
License: GPL-2.0-or-later
|
License: GPLv2+
|
||||||
URL: https://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Requires: systemtap = %{version}-%{release}
|
Requires: systemtap = %{version}-%{release}
|
||||||
|
|
||||||
%description jupyter
|
%description jupyter
|
||||||
This package includes files needed to build and run
|
This package includes files needed to build and run
|
||||||
the interactive systemtap Jupyter kernel, either locally
|
the interactive systemtap Jupyter kernel, either locally
|
||||||
or within a container.
|
or within a container.
|
||||||
|
%endif
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1
|
%setup -q
|
||||||
|
%patch -P1 -p1
|
||||||
|
%patch -P2 -p1
|
||||||
|
%patch -P3 -p1
|
||||||
|
%patch -P4 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -617,13 +608,6 @@ or within a container.
|
|||||||
%global dyninst_config --without-dyninst
|
%global dyninst_config --without-dyninst
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# Enable/disable the dyninst pure-userspace backend
|
|
||||||
%if %{with_Werror}
|
|
||||||
%global Werror_config --enable-Werror
|
|
||||||
%else
|
|
||||||
%global Werror_config --disable-Werror
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Enable/disable the sqlite coverage testing support
|
# Enable/disable the sqlite coverage testing support
|
||||||
%if %{with_sqlite}
|
%if %{with_sqlite}
|
||||||
%global sqlite_config --enable-sqlite
|
%global sqlite_config --enable-sqlite
|
||||||
@ -711,7 +695,7 @@ or within a container.
|
|||||||
# We don't ship compileworthy python code, just oddball samples
|
# We don't ship compileworthy python code, just oddball samples
|
||||||
%global py_auto_byte_compile 0
|
%global py_auto_byte_compile 0
|
||||||
|
|
||||||
%configure %{Werror_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} %{debuginfod_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}"
|
%configure %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} %{debuginfod_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}"
|
||||||
make %{?_smp_mflags} V=1
|
make %{?_smp_mflags} V=1
|
||||||
|
|
||||||
|
|
||||||
@ -751,6 +735,9 @@ find testsuite -type f -name '.gitignore' -print0 | xargs -0 rm -f
|
|||||||
# permissions back to 04110 in the %files section below.
|
# permissions back to 04110 in the %files section below.
|
||||||
chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun
|
chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun
|
||||||
|
|
||||||
|
#install the useful stap-prep script
|
||||||
|
install -c -m 755 stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep
|
||||||
|
|
||||||
# Copy over the testsuite
|
# Copy over the testsuite
|
||||||
cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap
|
cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap
|
||||||
|
|
||||||
@ -859,48 +846,30 @@ done
|
|||||||
%py3_shebang_fix %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/*
|
%py3_shebang_fix %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%check
|
|
||||||
%if %{with_check}
|
|
||||||
make check RUNTESTFLAGS=environment_sanity.exp
|
|
||||||
%endif
|
|
||||||
|
|
||||||
|
|
||||||
%pre runtime
|
%pre runtime
|
||||||
%if %{with_sysusers}
|
%if %{with_sysusers}
|
||||||
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
|
|
||||||
echo '%_systemtap_runtime_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-runtime.conf -
|
echo '%_systemtap_runtime_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-runtime.conf -
|
||||||
exit 0
|
|
||||||
%endif
|
|
||||||
%else
|
%else
|
||||||
getent group stapusr >/dev/null || groupadd -f -g 156 -r stapusr
|
getent group stapusr >/dev/null || groupadd -f -g 156 -r stapusr
|
||||||
getent group stapsys >/dev/null || groupadd -f -g 157 -r stapsys
|
getent group stapsys >/dev/null || groupadd -f -g 157 -r stapsys
|
||||||
getent group stapdev >/dev/null || groupadd -f -g 158 -r stapdev
|
getent group stapdev >/dev/null || groupadd -f -g 158 -r stapdev
|
||||||
getent passwd stapunpriv >/dev/null || \
|
|
||||||
useradd -c "Systemtap Unprivileged User" -u 159 -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv 2>/dev/null || \
|
|
||||||
useradd -c "Systemtap Unprivileged User" -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv
|
|
||||||
exit 0
|
|
||||||
%endif
|
%endif
|
||||||
|
exit 0
|
||||||
|
|
||||||
%pre server
|
%pre server
|
||||||
%if %{with_sysusers}
|
%if %{with_sysusers}
|
||||||
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
|
|
||||||
echo '%_systemtap_server_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-server.conf -
|
echo '%_systemtap_server_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-server.conf -
|
||||||
exit 0
|
|
||||||
%endif
|
|
||||||
%else
|
%else
|
||||||
getent group stap-server >/dev/null || groupadd -f -g 155 -r stap-server
|
getent group stap-server >/dev/null || groupadd -f -g 155 -r stap-server
|
||||||
getent passwd stap-server >/dev/null || \
|
getent passwd stap-server >/dev/null || \
|
||||||
useradd -c "Systemtap Compile Server" -u 155 -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server 2>/dev/null || \
|
useradd -c "Systemtap Compile Server" -u 155 -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server 2>/dev/null || \
|
||||||
useradd -c "Systemtap Compile Server" -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server
|
useradd -c "Systemtap Compile Server" -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server
|
||||||
exit 0
|
|
||||||
%endif
|
%endif
|
||||||
|
exit 0
|
||||||
|
|
||||||
%pre testsuite
|
%pre testsuite
|
||||||
%if %{with_sysusers}
|
%if %{with_sysusers}
|
||||||
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
|
|
||||||
echo '%_systemtap_testsuite_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-testsuite.conf -
|
echo '%_systemtap_testsuite_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-testsuite.conf -
|
||||||
exit 0
|
|
||||||
%endif
|
|
||||||
%else
|
%else
|
||||||
getent passwd stapusr >/dev/null || \
|
getent passwd stapusr >/dev/null || \
|
||||||
useradd -c "Systemtap 'stapusr' User" -g stapusr -r -s /sbin/nologin stapusr
|
useradd -c "Systemtap 'stapusr' User" -g stapusr -r -s /sbin/nologin stapusr
|
||||||
@ -908,8 +877,8 @@ getent passwd stapsys >/dev/null || \
|
|||||||
useradd -c "Systemtap 'stapsys' User" -g stapsys -G stapusr -r -s /sbin/nologin stapsys
|
useradd -c "Systemtap 'stapsys' User" -g stapsys -G stapusr -r -s /sbin/nologin stapsys
|
||||||
getent passwd stapdev >/dev/null || \
|
getent passwd stapdev >/dev/null || \
|
||||||
useradd -c "Systemtap 'stapdev' User" -g stapdev -G stapusr -r -s /sbin/nologin stapdev
|
useradd -c "Systemtap 'stapdev' User" -g stapdev -G stapusr -r -s /sbin/nologin stapdev
|
||||||
exit 0
|
|
||||||
%endif
|
%endif
|
||||||
|
exit 0
|
||||||
|
|
||||||
%post server
|
%post server
|
||||||
|
|
||||||
@ -1163,14 +1132,13 @@ exit 0
|
|||||||
%if %{with_emacsvim}
|
%if %{with_emacsvim}
|
||||||
%{_emacs_sitelispdir}/*.el*
|
%{_emacs_sitelispdir}/*.el*
|
||||||
%{_emacs_sitestartdir}/systemtap-init.el
|
%{_emacs_sitestartdir}/systemtap-init.el
|
||||||
%{_datadir}/vim/vimfiles
|
%{_datadir}/vim/vimfiles/*/*.vim
|
||||||
%endif
|
%endif
|
||||||
# Notice that the stap-resolve-module-function.py file is used by
|
# Notice that the stap-resolve-module-function.py file is used by
|
||||||
# *both* the python2 and python3 subrpms. Both subrpms use that same
|
# *both* the python2 and python3 subrpms. Both subrpms use that same
|
||||||
# python script to help list python probes.
|
# python script to help list python probes.
|
||||||
%if %{with_python3_probes} || %{with_python2_probes}
|
%if %{with_python3_probes} || %{with_python2_probes}
|
||||||
%{_libexecdir}/systemtap/python/stap-resolve-module-function.py
|
%{_libexecdir}/systemtap/python/stap-resolve-module-function.py
|
||||||
%dir %{_libexecdir}/systemtap/python
|
|
||||||
%exclude %{_libexecdir}/systemtap/python/stap-resolve-module-function.py?
|
%exclude %{_libexecdir}/systemtap/python/stap-resolve-module-function.py?
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -1265,22 +1233,16 @@ exit 0
|
|||||||
|
|
||||||
|
|
||||||
%files sdt-devel
|
%files sdt-devel
|
||||||
|
%{_bindir}/dtrace
|
||||||
%{_includedir}/sys/sdt.h
|
%{_includedir}/sys/sdt.h
|
||||||
%{_includedir}/sys/sdt-config.h
|
%{_includedir}/sys/sdt-config.h
|
||||||
|
%{_mandir}/man1/dtrace.1*
|
||||||
%{_rpmmacrodir}/macros.systemtap
|
%{_rpmmacrodir}/macros.systemtap
|
||||||
%doc README AUTHORS NEWS
|
%doc README AUTHORS NEWS
|
||||||
%{!?_licensedir:%global license %%doc}
|
%{!?_licensedir:%global license %%doc}
|
||||||
%license COPYING
|
%license COPYING
|
||||||
|
|
||||||
|
|
||||||
%files sdt-dtrace
|
|
||||||
%{_bindir}/dtrace
|
|
||||||
%doc README AUTHORS NEWS
|
|
||||||
%{!?_licensedir:%global license %%doc}
|
|
||||||
%license COPYING
|
|
||||||
%{_mandir}/man1/dtrace.1*
|
|
||||||
|
|
||||||
|
|
||||||
%files testsuite
|
%files testsuite
|
||||||
%dir %{_datadir}/systemtap
|
%dir %{_datadir}/systemtap
|
||||||
%{_datadir}/systemtap/testsuite
|
%{_datadir}/systemtap/testsuite
|
||||||
@ -1337,151 +1299,250 @@ exit 0
|
|||||||
%{_sbindir}/stap-exporter
|
%{_sbindir}/stap-exporter
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_python3} && %{with_monitor}
|
||||||
%files jupyter
|
%files jupyter
|
||||||
%{_bindir}/stap-jupyter-container
|
%{_bindir}/stap-jupyter-container
|
||||||
%{_bindir}/stap-jupyter-install
|
%{_bindir}/stap-jupyter-install
|
||||||
%{_mandir}/man1/stap-jupyter.1*
|
%{_mandir}/man1/stap-jupyter.1*
|
||||||
%dir %{_datadir}/systemtap
|
%dir %{_datadir}/systemtap
|
||||||
%{_datadir}/systemtap/interactive-notebook
|
%{_datadir}/systemtap/interactive-notebook
|
||||||
|
%endif
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
# Future new-release entries should be of the form
|
# Future new-release entries should be of the form
|
||||||
# * DDD MMM DD YYYY YOURNAME <YOUREMAIL> - V-R
|
# * DDD MMM DD YYYY YOURNAME <YOUREMAIL> - V-R
|
||||||
# - Upstream release, see wiki page below for detailed notes.
|
# - Upstream release, see wiki page below for detailed notes.
|
||||||
# https://sourceware.org/systemtap/wiki/SystemTapReleases
|
# http://sourceware.org/systemtap/wiki/SystemTapReleases
|
||||||
|
|
||||||
# PRERELEASE
|
# PRERELEASE
|
||||||
%changelog
|
%changelog
|
||||||
* Thu Jun 5 2025 William Cohen <wcohen@redhat.com> - 5.3-3
|
* Mon Aug 14 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-3
|
||||||
- RHEL-95272
|
- rhbz2231619
|
||||||
|
- rhbz2095359
|
||||||
|
|
||||||
* Mon May 12 2025 Martin Cermak <mcermak@redhat.com> - 5.3-2
|
* Tue Jul 18 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-2
|
||||||
- RHEL-RHEL-89808: stap-server log owned by root
|
- rhbz2223733 = rhbz2211288
|
||||||
|
- rhbz2223735 = rhbz2223739
|
||||||
* Fri May 02 2025 Frank Ch. Eigler <fche@redhat.com> - 5.3-1
|
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
|
|
||||||
* Wed Feb 05 2025 Frank Ch. Eigler <fche@redhat.com> - 5.2-2
|
|
||||||
- RHEL-78062: supply /usr/bin/dtrace in sdt-devel subrpm too
|
|
||||||
|
|
||||||
* Mon Nov 11 2024 Frank Ch. Eigler <fche@redhat.com> - 5.2-1
|
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
- https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
|
|
||||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 5.1-10
|
|
||||||
- Bump release for October 2024 mass rebuild:
|
|
||||||
Resolves: RHEL-64018
|
|
||||||
|
|
||||||
* Fri Aug 9 2024 Martin Cermak <mcermak@redhat.com> - 5.1-9
|
|
||||||
- RHEL-52491
|
|
||||||
|
|
||||||
* Fri Jul 26 2024 Martin Cermak <mcermak@redhat.com> - 5.1-8
|
|
||||||
- RHEL-43481
|
|
||||||
|
|
||||||
* Wed Jul 24 2024 Martin Cermak <mcermak@redhat.com> - 5.1-7
|
|
||||||
- RHEL-50107
|
|
||||||
|
|
||||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 5.1-6
|
|
||||||
- Bump release for June 2024 mass rebuild
|
|
||||||
|
|
||||||
* Tue Jun 18 2024 Martin Cermak <mcermak@redhat.com> - 5.1-5
|
|
||||||
- RHEL-42605 add upstream commits 1fd6fb4d, de8aba9a, da72d043
|
|
||||||
|
|
||||||
* Mon Jun 17 2024 Martin Cermak <mcermak@redhat.com> - 5.1-4
|
|
||||||
- RHEL-42605
|
|
||||||
|
|
||||||
* Thu May 16 2024 Martin Cermak <mcermak@redhat.com> - 5.1-3
|
|
||||||
- RHEL-29529
|
|
||||||
- RHEL-7318
|
|
||||||
- RHELMISC-3948
|
|
||||||
|
|
||||||
* Tue May 14 2024 William Cohen <wcohen@redhat.com> - 5.1-2
|
|
||||||
- RHEL-36201
|
|
||||||
|
|
||||||
* Fri Apr 26 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-1
|
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
|
|
||||||
* Thu Jan 25 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17062192g5fd8daba
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Thu Jan 25 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17062114g2604d135
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Tue Jan 23 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17060399gb6abf4bd
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Mon Jan 22 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17059382g67086c54
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Thu Jan 18 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17056139g6c0b92b3
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Thu Jan 18 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17056120g2ccc0c4c
|
|
||||||
- Automated weekly rawhide release
|
|
||||||
- Applied spec changes from upstream git
|
|
||||||
|
|
||||||
* Thu Jan 18 2024 Jonathan Wakely <jwakely@redhat.com> - 5.0-4
|
|
||||||
- Rebuilt for Boost 1.83
|
|
||||||
|
|
||||||
* Tue Nov 14 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-3
|
|
||||||
- RHEL-16549
|
|
||||||
|
|
||||||
* Mon Nov 06 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-2
|
|
||||||
- License header tweak
|
|
||||||
|
|
||||||
* Sat Nov 04 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-1
|
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
- migrated to SPDX license
|
|
||||||
|
|
||||||
* Fri Apr 28 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-1
|
* Fri Apr 28 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-1
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
- Upstream release, see wiki page below for detailed notes.
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
||||||
|
|
||||||
* Thu Nov 03 2022 Serhei Makarov <serhei@serhei.io> - 4.8-1
|
* Fri Dec 23 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
- rhbz2156092 = rhbz1997192
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
- rhbz2145241 = rhbz2145242
|
||||||
|
- rhbz2156093 = rhbz2149223
|
||||||
|
- rhbz2156095 = rhbz2149666
|
||||||
|
- rhbz2156094 = rhbz2154430
|
||||||
|
|
||||||
* Mon May 02 2022 Frank Ch. Eigler <fche@redhat.com> - 4.7-1
|
* Thu Nov 03 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-1
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
|
|
||||||
* Mon Nov 15 2021 Serhei Makarov <me@serhei.io> - 4.6-1
|
|
||||||
- Upstream release, see wiki page below for detailed notes.
|
|
||||||
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
|
||||||
|
|
||||||
* Fri May 07 2021 Serhei Makarov <me@serhei.io> - 4.5-1
|
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
|
* Mon May 02 2022 Stan Cox <scox@redhat.com> - 4.7-1
|
||||||
|
- Upstream release, see wiki page below for detailed notes.
|
||||||
|
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
||||||
|
|
||||||
|
* Tue Dec 07 2021 Stan Cox <scox@redhat.com> - 4.6.4
|
||||||
|
- sys/sdt.h remove aarch64 and s390 float constraints
|
||||||
|
|
||||||
|
* Mon Dec 06 2021 Stan Cox <scox@redhat.com> - 4.6.3
|
||||||
|
- sys/sdt.h remove float constraints that may cause gcc reload issues.
|
||||||
|
|
||||||
|
* Thu Dec 02 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6.2
|
||||||
|
- sys/sdt.h fixes for glibc ftbfs
|
||||||
|
|
||||||
|
* Mon Nov 15 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6-1
|
||||||
|
- Upstream release.
|
||||||
|
|
||||||
|
* Thu Aug 12 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-3
|
||||||
|
- rhbz1991631 iommu tracepoints break ppc64le
|
||||||
|
|
||||||
|
* Tue Jul 27 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-2
|
||||||
|
- rhbz1986543 rebuild against dyninst 11
|
||||||
|
|
||||||
|
* Fri May 07 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-1
|
||||||
|
- Upstream release.
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-9
|
||||||
|
- rhbz1927497 enable debuginfod client for buildid probing
|
||||||
|
|
||||||
|
* Tue Jan 26 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-8
|
||||||
|
- rhbz1902696 fix invocation as stapusr with procfs/lockdown
|
||||||
|
|
||||||
|
* Wed Jan 20 2021 Martin Cermak <mcermak@redhat.com> - 4.4-7
|
||||||
|
- rhbz1650594 fix boot time probing feature
|
||||||
|
|
||||||
|
* Mon Jan 04 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-6
|
||||||
|
- rhbz1906662 backport transport/utrace/locking patches
|
||||||
|
|
||||||
|
* Thu Dec 17 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-5
|
||||||
|
- rhbz1908904 fix lock-pushdown codegen for conditional probes
|
||||||
|
|
||||||
|
* Tue Dec 15 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-4
|
||||||
|
- rhbz1902696 fix invocation as stapusr vs. root
|
||||||
|
|
||||||
|
* Tue Nov 17 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-3
|
||||||
|
- rhbz1873492 related: rhel8 kernel_is_locked_down detection
|
||||||
|
|
||||||
|
* Mon Nov 16 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-2
|
||||||
|
- rhbz1898288: stability for exhausted UTRACE_TASK_WORK_POOL
|
||||||
|
- rhbz1873492 related: mokutil parser robustness for RH keys
|
||||||
|
|
||||||
* Mon Nov 09 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-1
|
* Mon Nov 09 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-1
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
* Thu Jun 11 2020 Frank Ch. Eigler <fche@redhat.com> - 4.3-1
|
* Wed Aug 12 2020 Martin Cermak <mcermak@redhat.com> - 4.3-4
|
||||||
- Upstream release.
|
- rhbz1868095: Refix including PR26379.
|
||||||
|
|
||||||
* Mon Nov 18 2019 Sagar Patel <sapatel@redhat.com> - 4.2-1
|
* Wed Aug 12 2020 Martin Cermak <mcermak@redhat.com> - 4.3-3
|
||||||
- Upstream release.
|
- rhbz1868095: byteman-java-methods-probing
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Frank Ch. Eigler <fche@redhat.com> - 4.3-2
|
||||||
|
- rhbz1857749: uprobes-inode changes
|
||||||
|
- rhbz1855264: @cast adaptations
|
||||||
|
|
||||||
|
* Thu Jun 11 2020 Stan Cox <scox@redhat.com> - 4.3-1
|
||||||
|
- rhbz1804319: Upstream release.
|
||||||
|
|
||||||
|
* Tue Feb 11 2020 Frank Ch. Eigler <fche@redhat.com> - 4.2-6
|
||||||
|
- rhbz1795196 cont'd: autoconf fix for kernel change to stack_trace_save_regs
|
||||||
|
|
||||||
|
* Tue Jan 28 2020 Frank Ch. Eigler <fche@redhat.com> - 4.2-5
|
||||||
|
- rhbz1795196: kallsyms vs. elfutils/vmlinuz
|
||||||
|
|
||||||
|
* Thu Jan 23 2020 Frank Ch. Eigler <fche@redhat.com> - 4.2-4
|
||||||
|
- rhbz1788662: check for rcu_is_watching() during prologue
|
||||||
|
|
||||||
|
* Fri Jan 10 2020 Frank Ch. Eigler <fche@redhat.com> - 4.2-3
|
||||||
|
- rhbz1788544: stop bytecompiling systemtap-mode.el
|
||||||
|
|
||||||
|
* Fri Jan 10 2020 Frank Ch. Eigler <fche@redhat.com> - 4.2-2
|
||||||
|
- rhbz1788648: aarch64 sdt.h parse [x0, x1]
|
||||||
|
|
||||||
|
* Tue Nov 19 2019 Frank Ch. Eigler <fche@redhat.com> - 4.2-1
|
||||||
|
- rhbz1744989: Upstream release.
|
||||||
|
|
||||||
|
* Tue Aug 06 2019 Frank Ch. Eigler <fche@redhat.com> - 4.1-6
|
||||||
|
- rhbz1732514: add java-devel prereq to systemtap-runtime-java
|
||||||
|
|
||||||
|
* Wed Jul 31 2019 Serguei Makarov <smakarov@redhat.com> - 4.1-5
|
||||||
|
- rhbz1734973: Fix possible stapbpf segfault with foreach string key iteration.
|
||||||
|
|
||||||
|
* Mon Jul 29 2019 Frank Ch. Eigler <fche@redhat.com> - 4.1-4
|
||||||
|
- rhbz1732173 (arm64 syscall parameters)
|
||||||
|
|
||||||
|
* Tue Jun 04 2019 Stan Cox <scox@redhat.com> - 4.1-3
|
||||||
|
- Rebuilt for dyninst 10.1.0
|
||||||
|
|
||||||
|
* Tue May 14 2019 Frank Ch. Eigler <fche@redhat.com> - 4.1-2
|
||||||
|
- Correct GNU_parameter_ref dwarf feature typo.
|
||||||
|
|
||||||
* Tue May 07 2019 Serguei Makarov <smakarov@redhat.com> - 4.1-1
|
* Tue May 07 2019 Serguei Makarov <smakarov@redhat.com> - 4.1-1
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
|
* Mon Dec 17 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-7
|
||||||
|
- rhbz1657909: vfs tapset fixes for $cred
|
||||||
|
|
||||||
|
* Mon Dec 10 2018 William Cohen <wcohen@redhat.com> - 4.0-6
|
||||||
|
- rhbz1657857: Please, backport periodic.stp from current upstream aacee6563.
|
||||||
|
|
||||||
|
* Fri Dec 07 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-5
|
||||||
|
- rhbz1657186: fix/port nfsd.proc4.[read,commit] tapset aliases
|
||||||
|
|
||||||
|
* Thu Dec 06 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-4
|
||||||
|
- rhbz1656795: support bdflush syscall
|
||||||
|
|
||||||
|
* Tue Dec 04 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-3
|
||||||
|
- rhbz1655631: change kernel-devel* deps to Recommends:
|
||||||
|
|
||||||
|
* Wed Nov 14 2018 Serhei Makarov <smakarov@redhat.com> - 4.0-2
|
||||||
|
- rhbz1643997: backported string tapset functionality and bugfixes
|
||||||
|
|
||||||
* Sat Oct 13 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-1
|
* Sat Oct 13 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-1
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
* Thu Jun 07 2018 Frank Ch. Eigler <fche@redhat.com> - 3.3-1
|
* Thu Aug 30 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-0.20180830git
|
||||||
- Upstream release.
|
- Enable brp-mangle for python scripts (rhbz1619413).
|
||||||
|
|
||||||
|
* Fri Aug 10 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-0.20180810git
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Mon May 14 2018 Frank Ch. Eigler <fche@redhat.com> - 3.3-0.20180508git9c6ac6cda49e.2
|
||||||
|
- respin w/ fixed glibc
|
||||||
|
|
||||||
|
* Tue May 08 2018 Frank Ch. Eigler <fche@redhat.com> - 3.3-0.20180508git9c6ac6cda49e
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Thu Apr 19 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.2-11
|
||||||
|
- Add rhbz1549063.patch (/bin/env -> /usr/bin/env)
|
||||||
|
- Add rhbz1566745.patch (4.15 kernel tapset updates)
|
||||||
|
- Enable accidentially disabled Suggests: kernel-devel again.
|
||||||
|
|
||||||
|
* Wed Apr 18 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.2-10
|
||||||
|
- Add unwind-fallback.patch
|
||||||
|
- rhbz1566422.patch
|
||||||
|
|
||||||
|
* Tue Apr 17 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.2-9
|
||||||
|
- Add unwind-fallback.patch.
|
||||||
|
|
||||||
|
* Tue Mar 27 2018 Björn Esser <besser82@fedoraproject.org> - 3.2-8
|
||||||
|
- Rebuilt for libjson-c.so.4 (json-c v0.13.1) on fc28
|
||||||
|
|
||||||
|
* Thu Feb 22 2018 Sergey Avseyev <sergey.avseyev@gmail.com> - 3.2-7
|
||||||
|
- rhbz1546563 (backport fix for removed timers in kernel 4.15)
|
||||||
|
|
||||||
|
* Tue Feb 13 2018 Stan Cox <scox@redhat.com> - 3.2-6
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.2-5
|
||||||
|
- Escape macros in %%changelog
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.2-4
|
||||||
|
- Fix very old Requires
|
||||||
|
|
||||||
|
* Sun Dec 10 2017 Björn Esser <besser82@fedoraproject.org> - 3.2-3
|
||||||
|
- Rebuilt for libjson-c.so.3
|
||||||
|
|
||||||
|
* Fri Oct 20 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-2
|
||||||
|
- rhbz1504009 (dtrace -G -o /dev/null)
|
||||||
|
|
||||||
* Wed Oct 18 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-1
|
* Wed Oct 18 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-1
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
|
* Fri Aug 11 2017 Igor Gnatenko <ignatenko@redhat.com> - 3.2-0.20170516gitc67d8f274b21
|
||||||
|
- Rebuilt after RPM update (№ 3)
|
||||||
|
|
||||||
|
* Thu Aug 10 2017 Igor Gnatenko <ignatenko@redhat.com> - 3.2-0.20170515gitc67d8f274b21
|
||||||
|
- Rebuilt for RPM soname bump
|
||||||
|
|
||||||
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.2-0.20170514gitc67d8f274b21
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.2-0.20170513gitc67d8f274b21
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri May 12 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-0.20170512gitc67d8f274b21
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Mon Apr 10 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-0.20170410gitcbf2583808d6
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Thu Apr 06 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-0.20170406git83d186dc7f5c
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Tue Mar 21 2017 Frank Ch. Eigler <fche@redhat.com> - 3.2-0.20170321git272146660f54
|
||||||
|
- Automated weekly rawhide release
|
||||||
|
- Applied spec changes from upstream git
|
||||||
|
|
||||||
|
* Fri Mar 10 2017 Stan Cox <scox@redhat.com> - 3.1-2
|
||||||
|
- Rebuild for dyninst 9.3
|
||||||
|
|
||||||
* Fri Feb 17 2017 Frank Ch. Eigler <fche@redhat.com> - 3.1-1
|
* Fri Feb 17 2017 Frank Ch. Eigler <fche@redhat.com> - 3.1-1
|
||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
@ -1501,7 +1562,7 @@ exit 0
|
|||||||
- Upstream release.
|
- Upstream release.
|
||||||
|
|
||||||
* Mon Jul 07 2014 Josh Stone <jistone@redhat.com>
|
* Mon Jul 07 2014 Josh Stone <jistone@redhat.com>
|
||||||
- Flip with_dyninst to an %%ifarch passlist.
|
- Flip with_dyninst to an %%ifarch whitelist.
|
||||||
|
|
||||||
* Wed Apr 30 2014 Jonathan Lebon <jlebon@redhat.com> - 2.5-1
|
* Wed Apr 30 2014 Jonathan Lebon <jlebon@redhat.com> - 2.5-1
|
||||||
- Upstream release.
|
- Upstream release.
|
@ -1,7 +0,0 @@
|
|||||||
--- !Policy
|
|
||||||
product_versions:
|
|
||||||
- rhel-10
|
|
||||||
decision_context: osci_compose_gate
|
|
||||||
rules:
|
|
||||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
|
||||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}
|
|
12
plans/ci.fmf
12
plans/ci.fmf
@ -1,12 +0,0 @@
|
|||||||
summary: CI Gating Plan
|
|
||||||
discover:
|
|
||||||
how: fmf
|
|
||||||
url: https://gitlab.cee.redhat.com/toolchain-qe/tests/systemtap-gating.git
|
|
||||||
ref: main
|
|
||||||
directory: tests
|
|
||||||
prepare:
|
|
||||||
- name: prepare
|
|
||||||
how: shell
|
|
||||||
script: ./plans/prepare.sh
|
|
||||||
execute:
|
|
||||||
how: tmt
|
|
@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -xe
|
|
||||||
|
|
||||||
# Install needed packages
|
|
||||||
dnf -y install /usr/bin/stap-prep
|
|
||||||
stap-prep
|
|
||||||
|
|
||||||
# Report installed packages
|
|
||||||
stap-report
|
|
||||||
|
|
||||||
# Set up SELinux so that it allows for userspace probing
|
|
||||||
setsebool allow_execmod on
|
|
||||||
setsebool allow_execstack on
|
|
||||||
setsebool deny_ptrace off
|
|
||||||
|
|
||||||
set +xe
|
|
@ -1,28 +0,0 @@
|
|||||||
# exclude ownership tests; we need setuid/gids as is
|
|
||||||
ownership:
|
|
||||||
ignore:
|
|
||||||
- /usr/bin/staprun
|
|
||||||
|
|
||||||
# this SO is for JNI only, so annobin/etc. don't know what to do with it
|
|
||||||
annocheck:
|
|
||||||
ignore:
|
|
||||||
- /usr/libexec/systemtap/libHelperSDT.so
|
|
||||||
|
|
||||||
# bytecode version 43 vs 55 complaint is a misconfiguration according to msrb
|
|
||||||
javabytecode:
|
|
||||||
ignore:
|
|
||||||
- /usr/libexec/systemtap/HelperSDT.jar
|
|
||||||
|
|
||||||
# setuid binary
|
|
||||||
permissions:
|
|
||||||
ignore:
|
|
||||||
- /usr/bin/staprun
|
|
||||||
|
|
||||||
# some stap scripts are wrapped within /bin/sh that confuses rpminspect
|
|
||||||
shellsyntax:
|
|
||||||
ignore:
|
|
||||||
- /usr/share/systemtap/examples/stapgames/2048.stp
|
|
||||||
- /usr/share/systemtap/testsuite/semko/autocast10.stp
|
|
||||||
- /usr/share/systemtap/testsuite/semok/autocast10.stp
|
|
||||||
- /usr/share/systemtap/testsuite/parseko/autocast02.stp
|
|
||||||
- /usr/share/systemtap/testsuite/systemtap.examples/stapgames/2048.stp
|
|
1
sources
1
sources
@ -1 +0,0 @@
|
|||||||
SHA512 (systemtap-5.3.tar.gz) = b252cd00a7ddab53f19d30129834b205ce8e90ccc5422444c1d188b765c122da712f5ca73092c425aef7430888c75ebfebbe3bfd87d6df8761338a1135abda89
|
|
@ -1,604 +0,0 @@
|
|||||||
commit 4eb1b10d893b8020315df7dd5215a087ebd39372
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Mon May 19 16:51:42 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 1: improve diagnostics of @defined resolution
|
|
||||||
|
|
||||||
The @defined construct is special in that it is attempted to be
|
|
||||||
resolved to literal 1/0 fairly early during semantic analysis pass-2,
|
|
||||||
so that it can guard $context variable references. But this early
|
|
||||||
processing is not that systematic: not all script level constructs
|
|
||||||
properly nest with it. Those cases that don't happen to match end
|
|
||||||
up resolved to 0 as a fallback in late during pass-2, due to PR18079.
|
|
||||||
|
|
||||||
This patch adds verbosity diagnostics for some of these cases, and a
|
|
||||||
warning message for the fallback resolution path. This triggers
|
|
||||||
for the test case associated with this bugzilla report.
|
|
||||||
|
|
||||||
diff --git a/dwflpp.cxx b/dwflpp.cxx
|
|
||||||
index 1105272f2..62ae15837 100644
|
|
||||||
--- a/dwflpp.cxx
|
|
||||||
+++ b/dwflpp.cxx
|
|
||||||
@@ -4427,8 +4427,9 @@ dwflpp::literal_stmt_for_pointer (location_context &ctx,
|
|
||||||
Dwarf_Die *die_mem)
|
|
||||||
{
|
|
||||||
if (sess.verbose>2)
|
|
||||||
- clog << _F("literal_stmt_for_pointer: finding value for %s (%s)\n",
|
|
||||||
- dwarf_type_name(start_typedie).c_str(), (dwarf_diename(cu) ?: "<unknown>"));
|
|
||||||
+ clog << _("literal_stmt_for_pointer: finding value for ") << *e->tok
|
|
||||||
+ << _F(" type %s (%s)\n",
|
|
||||||
+ dwarf_type_name(start_typedie).c_str(), (dwarf_diename(cu) ?: "<unknown>"));
|
|
||||||
|
|
||||||
assert(ctx.pointer != NULL);
|
|
||||||
location *tail = ctx.translate_argument (ctx.pointer);
|
|
||||||
diff --git a/elaborate.cxx b/elaborate.cxx
|
|
||||||
index 865fe6555..023b4c08f 100644
|
|
||||||
--- a/elaborate.cxx
|
|
||||||
+++ b/elaborate.cxx
|
|
||||||
@@ -1894,7 +1894,7 @@ semantic_pass_symbols (systemtap_session& s)
|
|
||||||
assert_no_interrupts();
|
|
||||||
stapfile* dome = s.files[i];
|
|
||||||
|
|
||||||
- // Pass 1: add globals and functions to systemtap-session primart list,
|
|
||||||
+ // Pass 1: add globals and functions to systemtap-session primary list,
|
|
||||||
// so the find_* functions find them
|
|
||||||
//
|
|
||||||
// NB: tapset global/function definitions may duplicate or conflict
|
|
||||||
@@ -2796,6 +2796,8 @@ symresolution_info::visit_symbol (symbol* e)
|
|
||||||
vardecl* d = find_var (e->name, 0, e->tok);
|
|
||||||
if (d)
|
|
||||||
{
|
|
||||||
+ if (session.verbose > 4)
|
|
||||||
+ clog << "resolved variable " << *e->tok << " to " << *d->tok << endl;
|
|
||||||
e->referent = d;
|
|
||||||
e->name = d->name;
|
|
||||||
}
|
|
||||||
@@ -2814,6 +2816,8 @@ symresolution_info::visit_symbol (symbol* e)
|
|
||||||
// must be probe-condition expression
|
|
||||||
throw SEMANTIC_ERROR (_("probe condition must not reference undeclared global"), e->tok);
|
|
||||||
e->referent = v;
|
|
||||||
+ if (session.verbose > 4)
|
|
||||||
+ clog << "resolved variable " << *e->tok << " to new local" << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -5112,6 +5116,7 @@ const_folder::visit_defined_op (defined_op* e)
|
|
||||||
// Don't be greedy... we'll only collapse one at a time so type
|
|
||||||
// resolution can have another go at it.
|
|
||||||
relaxed_p = false;
|
|
||||||
+ session.print_warning (_F("Collapsing unresolved @define to %ld", value), e->tok);
|
|
||||||
literal_number* n = new literal_number (value);
|
|
||||||
n->tok = e->tok;
|
|
||||||
n->visit (this);
|
|
||||||
diff --git a/tapsets.cxx b/tapsets.cxx
|
|
||||||
index d25c85043..01fec29e3 100644
|
|
||||||
--- a/tapsets.cxx
|
|
||||||
+++ b/tapsets.cxx
|
|
||||||
@@ -3118,9 +3118,22 @@ var_expanding_visitor::visit_defined_op (defined_op* e)
|
|
||||||
|
|
||||||
target_symbol* tsym = dynamic_cast<target_symbol*> (e->operand);
|
|
||||||
if (tsym && tsym->saved_conversion_error) // failing
|
|
||||||
- resolved = false;
|
|
||||||
+ {
|
|
||||||
+ if (sess.verbose>3)
|
|
||||||
+ {
|
|
||||||
+ for (const semantic_error *c = tsym->saved_conversion_error;
|
|
||||||
+ c != 0;
|
|
||||||
+ c = c->get_chain()) {
|
|
||||||
+ clog << _("variable location problem [man error::dwarf]: ") << c->what() << endl;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ resolved = false;
|
|
||||||
+ }
|
|
||||||
else if (e->operand == old_operand) // unresolved but not marked failing
|
|
||||||
{
|
|
||||||
+ if (sess.verbose>3)
|
|
||||||
+ clog << _("@defined unresolved due to un-rewritten operand ") << *e << endl;
|
|
||||||
+
|
|
||||||
// There are some visitors that won't touch certain target_symbols,
|
|
||||||
// e.g. dwarf_var_expanding_visitor won't resolve @cast. We should
|
|
||||||
// leave it for now so some other visitor can have a chance.
|
|
||||||
@@ -3132,6 +3145,8 @@ var_expanding_visitor::visit_defined_op (defined_op* e)
|
|
||||||
resolved = true;
|
|
||||||
} catch (const semantic_error& e) {
|
|
||||||
// some uncooperative value like @perf("NO_SUCH_VALUE")
|
|
||||||
+ if (sess.verbose > 3)
|
|
||||||
+ clog << sess.build_error_msg (e);
|
|
||||||
resolved = false;
|
|
||||||
}
|
|
||||||
defined_ops.pop ();
|
|
||||||
|
|
||||||
commit b36c59692966c6207bf6f69b2f6f91079f7b89ab
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Mon May 19 22:30:29 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 2: document new @defined() warning
|
|
||||||
|
|
||||||
... in [man stapprobes], though [man stap] is where autocast variable
|
|
||||||
processing is documented in the "TYPECASTING" section.
|
|
||||||
|
|
||||||
diff --git a/elaborate.cxx b/elaborate.cxx
|
|
||||||
index 023b4c08f..c09e3ddca 100644
|
|
||||||
--- a/elaborate.cxx
|
|
||||||
+++ b/elaborate.cxx
|
|
||||||
@@ -5116,7 +5116,7 @@ const_folder::visit_defined_op (defined_op* e)
|
|
||||||
// Don't be greedy... we'll only collapse one at a time so type
|
|
||||||
// resolution can have another go at it.
|
|
||||||
relaxed_p = false;
|
|
||||||
- session.print_warning (_F("Collapsing unresolved @define to %ld", value), e->tok);
|
|
||||||
+ session.print_warning (_F("Collapsing unresolved @define to %ld [stapprobes]", value), e->tok);
|
|
||||||
literal_number* n = new literal_number (value);
|
|
||||||
n->tok = e->tok;
|
|
||||||
n->visit (this);
|
|
||||||
diff --git a/man/stapprobes.3stap b/man/stapprobes.3stap
|
|
||||||
index 1f980567b..d395e3578 100644
|
|
||||||
--- a/man/stapprobes.3stap
|
|
||||||
+++ b/man/stapprobes.3stap
|
|
||||||
@@ -700,6 +700,11 @@ for use in conditionals such as
|
|
||||||
.SAMPLE
|
|
||||||
@defined($foo\->bar) ? $foo\->bar : 0
|
|
||||||
.ESAMPLE
|
|
||||||
+Use full $context variables or @cast() expressions in @define parameters
|
|
||||||
+for unambiguous processing. The TYPECAST script-level variable
|
|
||||||
+facility is incompletely supported. Simplify the parameters by reducing
|
|
||||||
+nesting or indirection, if encountering "Collapsing unresolved @define to ..."
|
|
||||||
+warnings.
|
|
||||||
.TP
|
|
||||||
@probewrite($VAR)
|
|
||||||
see the PROBES section of \fIstap\fR(1).
|
|
||||||
|
|
||||||
commit e4786671a999d47003ea62525ed829c1784c03ea
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Thu May 22 17:14:53 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 3: include autocast processing in initial_typeres_pass
|
|
||||||
|
|
||||||
This type resolution pass is done early, but previously purposefully
|
|
||||||
ommitted opportunistic autocast expansion. With it done there, once
|
|
||||||
(in the usual relaxation loop), more autocast-based @defined /
|
|
||||||
@choose_defined constructs will be processed in the way a user
|
|
||||||
may expect.
|
|
||||||
|
|
||||||
diff --git a/elaborate.cxx b/elaborate.cxx
|
|
||||||
index c09e3ddca..b03f0aced 100644
|
|
||||||
--- a/elaborate.cxx
|
|
||||||
+++ b/elaborate.cxx
|
|
||||||
@@ -2602,7 +2602,7 @@ semantic_pass (systemtap_session& s)
|
|
||||||
if (rc == 0) rc = semantic_pass_symbols (s);
|
|
||||||
if (rc == 0) monitor_mode_write (s);
|
|
||||||
if (rc == 0) rc = semantic_pass_conditions (s);
|
|
||||||
- if (rc == 0) rc = semantic_pass_optimize1 (s);
|
|
||||||
+ if (rc == 0) rc = semantic_pass_optimize1 (s); // includes const_fold and last ditch @defined() processing
|
|
||||||
if (rc == 0) rc = semantic_pass_types (s);
|
|
||||||
if (rc == 0) rc = gen_dfa_table(s);
|
|
||||||
if (rc == 0) add_global_var_display (s);
|
|
||||||
@@ -6045,7 +6045,7 @@ struct initial_typeresolution_info : public typeresolution_info
|
|
||||||
static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
{
|
|
||||||
// minimal type resolution based off of semantic_pass_types(), without
|
|
||||||
- // checking for complete type resolutions or autocast expanding
|
|
||||||
+ // checking for complete type resolutions, PR32964 but including autocast expanding
|
|
||||||
initial_typeresolution_info ti(s);
|
|
||||||
|
|
||||||
ti.assert_resolvability = false;
|
|
||||||
@@ -6067,6 +6067,30 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
ti.current_function = fd;
|
|
||||||
ti.t = pe_unknown;
|
|
||||||
fd->body->visit (& ti);
|
|
||||||
+
|
|
||||||
+ // Check and run the autocast expanding visitor.
|
|
||||||
+ if (ti.num_available_autocasts > 0)
|
|
||||||
+ {
|
|
||||||
+ autocast_expanding_visitor aev (s, ti);
|
|
||||||
+ aev.replace (fd->body);
|
|
||||||
+
|
|
||||||
+ // PR18079, rerun the const-folder / dead-block-remover
|
|
||||||
+ // if autocast evaluation enabled a @defined()
|
|
||||||
+ if (! aev.relaxed())
|
|
||||||
+ {
|
|
||||||
+ bool relaxed_p = true;
|
|
||||||
+ const_folder cf (s, relaxed_p);
|
|
||||||
+ cf.replace (fd->body);
|
|
||||||
+ if (! s.unoptimized)
|
|
||||||
+ {
|
|
||||||
+ dead_control_remover dc (s, relaxed_p);
|
|
||||||
+ fd->body->visit (&dc);
|
|
||||||
+ }
|
|
||||||
+ (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ti.num_available_autocasts = 0;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
for (unsigned j=0; j<s.probes.size(); j++)
|
|
||||||
@@ -6079,6 +6103,24 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
ti.t = pe_unknown;
|
|
||||||
pn->body->visit (& ti);
|
|
||||||
|
|
||||||
+ // Check and run the autocast expanding visitor.
|
|
||||||
+ if (ti.num_available_autocasts > 0)
|
|
||||||
+ {
|
|
||||||
+ autocast_expanding_visitor aev (s, ti);
|
|
||||||
+ var_expand_const_fold_loop (s, pn->body, aev);
|
|
||||||
+ // PR18079, rerun the const-folder / dead-block-remover
|
|
||||||
+ // if autocast evaluation enabled a @defined()
|
|
||||||
+ if (! s.unoptimized)
|
|
||||||
+ {
|
|
||||||
+ bool relaxed_p;
|
|
||||||
+ dead_control_remover dc (s, relaxed_p);
|
|
||||||
+ pn->body->visit (&dc);
|
|
||||||
+ (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ti.num_available_autocasts = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
probe_point* pp = pn->sole_location();
|
|
||||||
if (pp->condition)
|
|
||||||
{
|
|
||||||
@@ -6147,30 +6189,8 @@ semantic_pass_types (systemtap_session& s)
|
|
||||||
// ti.unresolved (fd->tok);
|
|
||||||
for (unsigned i=0; i < fd->locals.size(); ++i)
|
|
||||||
ti.check_local (fd->locals[i]);
|
|
||||||
-
|
|
||||||
- // Check and run the autocast expanding visitor.
|
|
||||||
- if (ti.num_available_autocasts > 0)
|
|
||||||
- {
|
|
||||||
- autocast_expanding_visitor aev (s, ti);
|
|
||||||
- aev.replace (fd->body);
|
|
||||||
-
|
|
||||||
- // PR18079, rerun the const-folder / dead-block-remover
|
|
||||||
- // if autocast evaluation enabled a @defined()
|
|
||||||
- if (! aev.relaxed())
|
|
||||||
- {
|
|
||||||
- bool relaxed_p = true;
|
|
||||||
- const_folder cf (s, relaxed_p);
|
|
||||||
- cf.replace (fd->body);
|
|
||||||
- if (! s.unoptimized)
|
|
||||||
- {
|
|
||||||
- dead_control_remover dc (s, relaxed_p);
|
|
||||||
- fd->body->visit (&dc);
|
|
||||||
- }
|
|
||||||
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
- }
|
|
||||||
|
|
||||||
- ti.num_available_autocasts = 0;
|
|
||||||
- }
|
|
||||||
+ // PR32964: autocast resolution is now done early in initial_typeres_pass
|
|
||||||
}
|
|
||||||
catch (const semantic_error& e)
|
|
||||||
{
|
|
||||||
@@ -6191,24 +6211,8 @@ semantic_pass_types (systemtap_session& s)
|
|
||||||
pn->body->visit (& ti);
|
|
||||||
for (unsigned i=0; i < pn->locals.size(); ++i)
|
|
||||||
ti.check_local (pn->locals[i]);
|
|
||||||
-
|
|
||||||
- // Check and run the autocast expanding visitor.
|
|
||||||
- if (ti.num_available_autocasts > 0)
|
|
||||||
- {
|
|
||||||
- autocast_expanding_visitor aev (s, ti);
|
|
||||||
- var_expand_const_fold_loop (s, pn->body, aev);
|
|
||||||
- // PR18079, rerun the const-folder / dead-block-remover
|
|
||||||
- // if autocast evaluation enabled a @defined()
|
|
||||||
- if (! s.unoptimized)
|
|
||||||
- {
|
|
||||||
- bool relaxed_p;
|
|
||||||
- dead_control_remover dc (s, relaxed_p);
|
|
||||||
- pn->body->visit (&dc);
|
|
||||||
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
- }
|
|
||||||
|
|
||||||
- ti.num_available_autocasts = 0;
|
|
||||||
- }
|
|
||||||
+ // PR32964: autocast resolution is now done early in initial_typeres_pass
|
|
||||||
|
|
||||||
probe_point* pp = pn->sole_location();
|
|
||||||
if (pp->condition)
|
|
||||||
|
|
||||||
commit 3122ff592bdfcf553afa6683724e90c359f3c5c9
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Fri May 30 17:50:10 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 4: let autocast pass propagate vardecl/symbol type_details
|
|
||||||
|
|
||||||
The initial_typeres_pass now communicates relaxed status,
|
|
||||||
and its autocast_expanding_visitor now passes vardecl type_details
|
|
||||||
to the symbols. This way, the existing const_folder etc. visitors
|
|
||||||
can deduce enough type info for @defined(an_autocast_var->foo->bar)
|
|
||||||
constructs, and early enough, that @defined() works as intended.
|
|
||||||
|
|
||||||
New testsuite/semok/definedautocast.stp tests a simple case.
|
|
||||||
|
|
||||||
diff --git a/elaborate.cxx b/elaborate.cxx
|
|
||||||
index b03f0aced..7a1609f1b 100644
|
|
||||||
--- a/elaborate.cxx
|
|
||||||
+++ b/elaborate.cxx
|
|
||||||
@@ -5163,7 +5163,7 @@ const_folder::visit_target_symbol (target_symbol* e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int initial_typeres_pass(systemtap_session& s);
|
|
||||||
+static int initial_typeres_pass(systemtap_session& s, bool& relaxed_p);
|
|
||||||
static int semantic_pass_const_fold (systemtap_session& s, bool& relaxed_p)
|
|
||||||
{
|
|
||||||
// attempt an initial type resolution pass to see if there are any type
|
|
||||||
@@ -5171,7 +5171,7 @@ static int semantic_pass_const_fold (systemtap_session& s, bool& relaxed_p)
|
|
||||||
// with a const.
|
|
||||||
|
|
||||||
// return if the initial type resolution pass reported errors (type mismatches)
|
|
||||||
- int rc = initial_typeres_pass(s);
|
|
||||||
+ int rc = initial_typeres_pass(s, relaxed_p);
|
|
||||||
if (rc)
|
|
||||||
{
|
|
||||||
relaxed_p = true;
|
|
||||||
@@ -5994,6 +5994,25 @@ struct autocast_expanding_visitor: public var_expanding_visitor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ void visit_symbol (symbol* e) // propagate referent exp_type
|
|
||||||
+ {
|
|
||||||
+ // PR32964: mimic typeresolution_info::resolve_details, for case
|
|
||||||
+ // where the symbol (autocast_op operand) is within a @defined().
|
|
||||||
+
|
|
||||||
+ if (e->referent && e->referent->type_details && !e->type_details)
|
|
||||||
+ {
|
|
||||||
+ const exp_type_ptr &src = e->referent->type_details;
|
|
||||||
+ exp_type_ptr &dest = e->type_details;
|
|
||||||
+ dest = src;
|
|
||||||
+ ti.num_newly_resolved++;
|
|
||||||
+ relaxed_p = false;
|
|
||||||
+ if (sess.verbose > 4)
|
|
||||||
+ clog << "resolved early type details " << *dest << " to " << *e->tok << endl;
|
|
||||||
+ }
|
|
||||||
+ var_expanding_visitor::visit_symbol (e);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
void visit_autocast_op (autocast_op* e)
|
|
||||||
{
|
|
||||||
const bool lvalue = is_active_lvalue (e);
|
|
||||||
@@ -6004,7 +6023,7 @@ struct autocast_expanding_visitor: public var_expanding_visitor
|
|
||||||
if (fc)
|
|
||||||
{
|
|
||||||
ti.num_newly_resolved++;
|
|
||||||
-
|
|
||||||
+ relaxed_p = false;
|
|
||||||
resolve_functioncall (fc);
|
|
||||||
// NB: at this stage, the functioncall object has one
|
|
||||||
// argument too few if we're in lvalue context. It will
|
|
||||||
@@ -6042,7 +6061,7 @@ struct initial_typeresolution_info : public typeresolution_info
|
|
||||||
void visit_cast_op (cast_op*) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
-static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
+static int initial_typeres_pass(systemtap_session& s, bool& relaxed_p)
|
|
||||||
{
|
|
||||||
// minimal type resolution based off of semantic_pass_types(), without
|
|
||||||
// checking for complete type resolutions, PR32964 but including autocast expanding
|
|
||||||
@@ -6069,7 +6088,7 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
fd->body->visit (& ti);
|
|
||||||
|
|
||||||
// Check and run the autocast expanding visitor.
|
|
||||||
- if (ti.num_available_autocasts > 0)
|
|
||||||
+ if (true || ti.num_available_autocasts > 0)
|
|
||||||
{
|
|
||||||
autocast_expanding_visitor aev (s, ti);
|
|
||||||
aev.replace (fd->body);
|
|
||||||
@@ -6078,7 +6097,7 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
// if autocast evaluation enabled a @defined()
|
|
||||||
if (! aev.relaxed())
|
|
||||||
{
|
|
||||||
- bool relaxed_p = true;
|
|
||||||
+ // bool relaxed_p = true;
|
|
||||||
const_folder cf (s, relaxed_p);
|
|
||||||
cf.replace (fd->body);
|
|
||||||
if (! s.unoptimized)
|
|
||||||
@@ -6086,7 +6105,7 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
dead_control_remover dc (s, relaxed_p);
|
|
||||||
fd->body->visit (&dc);
|
|
||||||
}
|
|
||||||
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
+ // (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
}
|
|
||||||
|
|
||||||
ti.num_available_autocasts = 0;
|
|
||||||
@@ -6104,7 +6123,7 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
pn->body->visit (& ti);
|
|
||||||
|
|
||||||
// Check and run the autocast expanding visitor.
|
|
||||||
- if (ti.num_available_autocasts > 0)
|
|
||||||
+ if (true || ti.num_available_autocasts > 0)
|
|
||||||
{
|
|
||||||
autocast_expanding_visitor aev (s, ti);
|
|
||||||
var_expand_const_fold_loop (s, pn->body, aev);
|
|
||||||
@@ -6112,10 +6131,10 @@ static int initial_typeres_pass(systemtap_session& s)
|
|
||||||
// if autocast evaluation enabled a @defined()
|
|
||||||
if (! s.unoptimized)
|
|
||||||
{
|
|
||||||
- bool relaxed_p;
|
|
||||||
+ // bool relaxed_p;
|
|
||||||
dead_control_remover dc (s, relaxed_p);
|
|
||||||
pn->body->visit (&dc);
|
|
||||||
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
+ // (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
|
|
||||||
}
|
|
||||||
|
|
||||||
ti.num_available_autocasts = 0;
|
|
||||||
diff --git a/testsuite/semok/definedautocast.stp b/testsuite/semok/definedautocast.stp
|
|
||||||
new file mode 100755
|
|
||||||
index 000000000..b28be6118
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/testsuite/semok/definedautocast.stp
|
|
||||||
@@ -0,0 +1,6 @@
|
|
||||||
+#! stap -Wp2
|
|
||||||
+
|
|
||||||
+probe kernel.function("do_exit") {
|
|
||||||
+ x = & @cast(0, "struct block_device")
|
|
||||||
+ println(@defined(x->__bd_flags->counter))
|
|
||||||
+}
|
|
||||||
|
|
||||||
commit 778ba67e356dc1820acc8ecdaa2c4b608c2eb184
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Fri May 30 22:10:36 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 5: tweak type inference propagation
|
|
||||||
|
|
||||||
Because some type inference is now performed earlier than before,
|
|
||||||
coupled with early const-folding (so dead code elimination), tests
|
|
||||||
like semko/binexpr_infer_type.stp started passing with immediately
|
|
||||||
prior code. That's because constructs like (foo*0) got quietly
|
|
||||||
replaced by 0, even if foo was typed pe_string. This patch
|
|
||||||
compensates for this change in behaviour by:
|
|
||||||
|
|
||||||
- typeresolution_info::resolve_2types now propagates types
|
|
||||||
more aggressively & recursively in its three-way inference,
|
|
||||||
so that the unknown x string x long case is detected in one
|
|
||||||
incoming invocation of the function, instead of being
|
|
||||||
deferred to some unknown later relaxation-iteration round.
|
|
||||||
|
|
||||||
- typeresolution_info::mismatch reporting errors, independent
|
|
||||||
of "assert_resolvability". That flag was most likely meant
|
|
||||||
for detection & rejection of pe_unknown types at the end of
|
|
||||||
all the optimization stuff, not for ignoring outright known
|
|
||||||
conflicts.
|
|
||||||
|
|
||||||
diff --git a/elaborate.cxx b/elaborate.cxx
|
|
||||||
index 7a1609f1b..d93a83eca 100644
|
|
||||||
--- a/elaborate.cxx
|
|
||||||
+++ b/elaborate.cxx
|
|
||||||
@@ -6683,21 +6683,21 @@ void resolve_2types (Referrer* referrer, Referent* referent,
|
|
||||||
// propagate from upstream
|
|
||||||
re_type = t;
|
|
||||||
r->resolved (re_tok, re_type);
|
|
||||||
- // catch re_type/te_type mismatch later
|
|
||||||
+ resolve_2types (referrer, referent, r, t, accept_unknown);
|
|
||||||
}
|
|
||||||
else if (re_type == pe_unknown && te_type != pe_unknown)
|
|
||||||
{
|
|
||||||
// propagate from referent
|
|
||||||
re_type = te_type;
|
|
||||||
r->resolved (re_tok, re_type);
|
|
||||||
- // catch re_type/t mismatch later
|
|
||||||
+ resolve_2types (referrer, referent, r, t, accept_unknown);
|
|
||||||
}
|
|
||||||
else if (re_type != pe_unknown && te_type == pe_unknown)
|
|
||||||
{
|
|
||||||
// propagate to referent
|
|
||||||
te_type = re_type;
|
|
||||||
r->resolved (re_tok, re_type, referent);
|
|
||||||
- // catch re_type/t mismatch later
|
|
||||||
+ resolve_2types (referrer, referent, r, t, accept_unknown);
|
|
||||||
}
|
|
||||||
else if (! accept_unknown)
|
|
||||||
r->unresolved (re_tok);
|
|
||||||
@@ -7636,14 +7636,14 @@ typeresolution_info::mismatch (const binary_expression* e)
|
|
||||||
{
|
|
||||||
num_still_unresolved ++;
|
|
||||||
|
|
||||||
- if (assert_resolvability && mismatch_complexity <= 1)
|
|
||||||
+ if (mismatch_complexity <= 1)
|
|
||||||
{
|
|
||||||
stringstream msg;
|
|
||||||
msg << _F("type mismatch: left and right sides don't agree (%s vs %s)",
|
|
||||||
lex_cast(e->left->type).c_str(), lex_cast(e->right->type).c_str());
|
|
||||||
session.print_error (SEMANTIC_ERROR (msg.str(), e->tok));
|
|
||||||
}
|
|
||||||
- else if (!assert_resolvability)
|
|
||||||
+ else
|
|
||||||
mismatch_complexity = max(1, mismatch_complexity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -7656,7 +7656,7 @@ typeresolution_info::mismatch (const token* tok, exp_type t1, exp_type t2)
|
|
||||||
{
|
|
||||||
num_still_unresolved ++;
|
|
||||||
|
|
||||||
- if (assert_resolvability && mismatch_complexity <= 2)
|
|
||||||
+ if (mismatch_complexity <= 2)
|
|
||||||
{
|
|
||||||
stringstream msg;
|
|
||||||
msg << _F("type mismatch: expected %s", lex_cast(t1).c_str());
|
|
||||||
@@ -7664,7 +7664,7 @@ typeresolution_info::mismatch (const token* tok, exp_type t1, exp_type t2)
|
|
||||||
msg << _F(" but found %s", lex_cast(t2).c_str());
|
|
||||||
session.print_error (SEMANTIC_ERROR (msg.str(), tok));
|
|
||||||
}
|
|
||||||
- else if (!assert_resolvability)
|
|
||||||
+ else
|
|
||||||
mismatch_complexity = max(2, mismatch_complexity);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -7679,7 +7679,7 @@ typeresolution_info::mismatch (const token *tok, exp_type type,
|
|
||||||
{
|
|
||||||
num_still_unresolved ++;
|
|
||||||
|
|
||||||
- if (assert_resolvability && mismatch_complexity <= 3)
|
|
||||||
+ if (mismatch_complexity <= 3)
|
|
||||||
{
|
|
||||||
assert(decl != NULL);
|
|
||||||
|
|
||||||
@@ -7737,7 +7737,7 @@ typeresolution_info::mismatch (const token *tok, exp_type type,
|
|
||||||
err.set_chain(chain);
|
|
||||||
session.print_error (err);
|
|
||||||
}
|
|
||||||
- else if (!assert_resolvability)
|
|
||||||
+ else
|
|
||||||
mismatch_complexity = max(3, mismatch_complexity);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
commit fd4322e38d1e6504341b67329e112ccc1af387b6
|
|
||||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
|
||||||
Date: Sat May 31 09:15:33 2025 -0400
|
|
||||||
|
|
||||||
PR32964 part 6: NEWS & old testcase
|
|
||||||
|
|
||||||
It turns out there was one old testcase that relied on type
|
|
||||||
non-checking upon elided variables. This test has been removed, and
|
|
||||||
the change mentioned in NEWS. Unfortunately, this is is hard to make
|
|
||||||
conditional on --compatible=XXXX, so hypothetical old (arguably buggy)
|
|
||||||
scripts may get hit.
|
|
||||||
|
|
||||||
diff --git a/NEWS b/NEWS
|
|
||||||
index 01b74a671..f1d78e8fa 100644
|
|
||||||
--- a/NEWS
|
|
||||||
+++ b/NEWS
|
|
||||||
@@ -1,3 +1,11 @@
|
|
||||||
+* What's new in version 5.4
|
|
||||||
+
|
|
||||||
+- Type checking and autocast processing have been made more thorough,
|
|
||||||
+ so elided variables are checked more and @defined() tests may be
|
|
||||||
+ more complicated. Preexisting scripts that rely on elision for
|
|
||||||
+ bypassing type violations may now get caught. No --compatible
|
|
||||||
+ option exists to suppress this new behaviour.
|
|
||||||
+
|
|
||||||
* What's new in version 5.3, 2025-05-02
|
|
||||||
|
|
||||||
- Updated to support drastic linux 6.13 kbuild changes, numerous
|
|
||||||
diff --git a/testsuite/semok/pr30570.stp b/testsuite/semok/pr30570.stp
|
|
||||||
index b711b214c..dda7d027c 100755
|
|
||||||
--- a/testsuite/semok/pr30570.stp
|
|
||||||
+++ b/testsuite/semok/pr30570.stp
|
|
||||||
@@ -24,13 +24,16 @@ probe oneshot {
|
|
||||||
}
|
|
||||||
|
|
||||||
# error var and the try block are elided which means
|
|
||||||
-# it's not an issue to use e4 as a long here
|
|
||||||
-global e4 = 10
|
|
||||||
-probe oneshot {
|
|
||||||
- try { }
|
|
||||||
- catch (e4)
|
|
||||||
- { }
|
|
||||||
-}
|
|
||||||
+# it's not an issue to use e4 as a long here ...
|
|
||||||
+# except after PR32964, type checking is done more
|
|
||||||
+# systematically on even elided variables, so this
|
|
||||||
+# would be an error!
|
|
||||||
+# global e4 = 10
|
|
||||||
+# probe oneshot {
|
|
||||||
+# try { }
|
|
||||||
+# catch (e4)
|
|
||||||
+# { }
|
|
||||||
+# }
|
|
||||||
|
|
||||||
# e5 can be a global string
|
|
||||||
global e5 = "foo"
|
|
@ -1,59 +0,0 @@
|
|||||||
commit ea6ec6da37f1d3ec9ab1c3b5808287676c9d3742
|
|
||||||
Author: William Cohen <wcohen@redhat.com>
|
|
||||||
Date: Mon Jun 2 11:15:44 2025 -0400
|
|
||||||
|
|
||||||
RHEL-90805: Fix dev.stp tapset to work with RHEL 9.7 kernel
|
|
||||||
|
|
||||||
RHEL 9.7 kernels have backported block dev support from Linux 6.14.
|
|
||||||
The test in the dev.stp tapset checked the kernel version to determine
|
|
||||||
where to get information and that test did not work in the case of
|
|
||||||
code backported to the older RHEL 9 Linux 5.14 kernel. The dev.stp
|
|
||||||
code has been reworked to search for the particular member field
|
|
||||||
holding the information instead.
|
|
||||||
|
|
||||||
diff --git a/tapset/linux/dev.stp b/tapset/linux/dev.stp
|
|
||||||
index f6b90c5d3..56b8e63c4 100644
|
|
||||||
--- a/tapset/linux/dev.stp
|
|
||||||
+++ b/tapset/linux/dev.stp
|
|
||||||
@@ -64,17 +64,19 @@ function disk_name:string(hd:long, partno:long)
|
|
||||||
return sprintf("%s%d", disk_name, partno)
|
|
||||||
}
|
|
||||||
|
|
||||||
-%( kernel_v >= "6.10" %?
|
|
||||||
%{
|
|
||||||
+#include <linux/blk_types.h>
|
|
||||||
#include <linux/blkdev.h>
|
|
||||||
%}
|
|
||||||
|
|
||||||
function bdev_partno(bdev:long)
|
|
||||||
%{ /* pure */ /* unprivileged */
|
|
||||||
+#ifdef BD_PARTNO
|
|
||||||
STAP_RETURN(bdev_partno((const struct block_device *) STAP_ARG_bdev));
|
|
||||||
+#else
|
|
||||||
+ STAP_RETURN(0);
|
|
||||||
+#endif
|
|
||||||
%}
|
|
||||||
-%:
|
|
||||||
-%)
|
|
||||||
|
|
||||||
function bdevname:string(bdev:long)
|
|
||||||
{
|
|
||||||
@@ -84,15 +86,13 @@ function bdevname:string(bdev:long)
|
|
||||||
|
|
||||||
hd = bdev->bd_disk
|
|
||||||
|
|
||||||
-%( kernel_v >= "6.10" %?
|
|
||||||
- partno = bdev_partno(bdev)
|
|
||||||
-%:
|
|
||||||
- if (@defined(@cast(bdev, "block_device", "kernel")->bd_partno))
|
|
||||||
+ if (@defined(&bdev->__bd_flags))
|
|
||||||
+ partno = bdev_partno(bdev)
|
|
||||||
+ else if (@defined(bdev->bd_partno))
|
|
||||||
partno = bdev->bd_partno
|
|
||||||
else if (bdev->bd_part)
|
|
||||||
partno = bdev->bd_part->partno
|
|
||||||
else
|
|
||||||
partno = MINOR(bdev->bd_dev) - hd->first_minor;
|
|
||||||
-%)
|
|
||||||
return disk_name(hd, partno)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user