import gcc-toolset-11-systemtap-4.5-6.el8

This commit is contained in:
CentOS Sources 2022-03-29 06:17:04 -04:00 committed by Stepan Oksanichenko
parent 8df1b9efa0
commit da8df9e9ee
3 changed files with 469 additions and 1 deletions

312
SOURCES/rhbz1973751.patch Normal file
View File

@ -0,0 +1,312 @@
commit b367613c3bb88549dbb9944d306fe561dea03f04
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Fri Sep 24 15:54:34 2021 -0400
PR28384: convert more nfs_proc.stp server_ip to string
This tapset variable has been changed in stap version 4.3
to a string. Finish covering all instances in various
probe aliases.
diff --git a/tapset/linux/nfs_proc.stp b/tapset/linux/nfs_proc.stp
index 257907457..9b1f65f5f 100644
--- a/tapset/linux/nfs_proc.stp
+++ b/tapset/linux/nfs_proc.stp
@@ -235,7 +235,11 @@ probe _nfs.proc2.lookup = kernel.function("nfs_proc_lookup") !,
probe _nfs.proc2.missing_lookup = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
name_len = 0
@@ -361,7 +365,11 @@ probe _nfs.proc2.read = kernel.function("nfs_proc_read") !,
}
probe _nfs.proc2.missing_read = never
{
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
flags = 0
@@ -496,7 +504,11 @@ probe _nfs.proc2.write = kernel.function("nfs_proc_write") !,
}
probe _nfs.proc2.missing_write = never
{
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
flags = 0
@@ -759,7 +771,7 @@ probe _nfs.proc2.missing_read_setup = never
inode = 0
client = 0
%( systemtap_v >= "4.3" %?
- server_ip = "0"
+ server_ip = ""
%:
server_ip = 0
%)
@@ -895,7 +907,11 @@ probe _nfs.proc2.read_done = kernel.function("nfs_read_done") !,
}
probe _nfs.proc2.missing_read_done = never
{
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
count = 0
status = 0
@@ -1054,7 +1070,11 @@ probe _nfs.proc2.missing_write_setup = never
{
inode = 0
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
count = 0
@@ -1201,7 +1221,11 @@ probe _nfs.proc2.write_done = kernel.function("nfs_write_done") !,
}
probe _nfs.proc2.missing_write_done = never
{
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
count = 0
valid = 0
@@ -1826,7 +1850,11 @@ probe _nfs.proc2.create = kernel.function("nfs_proc_create") !,
probe _nfs.proc2.missing_create = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
fh = 0
@@ -1946,7 +1974,11 @@ probe _nfs.proc2.remove = kernel.function("nfs_proc_remove") !,
probe _nfs.proc2.missing_remove = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
fh = 0
@@ -2067,7 +2099,11 @@ probe _nfs.proc2.rename = kernel.function("nfs_proc_rename") !,
probe _nfs.proc2.missing_rename = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
old_fh = 0
@@ -2114,7 +2150,11 @@ probe _nfs.proc3.rename = kernel.function("nfs3_proc_rename") !,
probe _nfs.proc3.missing_rename = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
old_fh = 0
@@ -2161,7 +2201,11 @@ probe _nfs.proc4.rename = kernel.function("nfs4_proc_rename") !,
probe _nfs.proc4.missing_rename = never
{
client = 0
+%( systemtap_v >= "4.3" %?
+ server_ip = ""
+%:
server_ip = 0
+%)
prot = 0
old_fh = 0
diff --git a/testsuite/buildok/nfs_proc-detailed.stp b/testsuite/buildok/nfs_proc-detailed.stp
index 2a04ee2a7..e7c7f2d18 100755
--- a/testsuite/buildok/nfs_proc-detailed.stp
+++ b/testsuite/buildok/nfs_proc-detailed.stp
@@ -3,7 +3,7 @@
probe nfs.proc.lookup {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d\n", server_ip, prot, version, name_len)
+ printf("%s %d %d %d\n", server_ip, prot, version, name_len)
printf("%d %d\n", bitmask0, bitmask1)
}
probe nfs.proc.lookup.return {
@@ -12,7 +12,7 @@ probe nfs.proc.lookup.return {
probe nfs.proc.read ? {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %s\n", server_ip, prot, version, flags,
+ printf("%s %d %d %d %d %s\n", server_ip, prot, version, flags,
size, units)
}
probe nfs.proc.read.return ? {
@@ -21,7 +21,7 @@ probe nfs.proc.read.return ? {
probe nfs.proc.write ? {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %s\n", server_ip, prot, version, flags,
+ printf("%s %d %d %d %d %s\n", server_ip, prot, version, flags,
size, units)
printf("%d %d\n", bitmask0, bitmask1)
}
@@ -32,7 +32,7 @@ probe nfs.proc.write.return ? {
probe nfs.proc.commit ? {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %s\n", server_ip, prot, version, size, units)
+ printf("%s %d %d %d %s\n", server_ip, prot, version, size, units)
printf("%d %d\n", bitmask0, bitmask1)
}
probe nfs.proc.commit.return ? {
@@ -43,7 +43,7 @@ probe nfs.proc.commit.return ? {
probe nfs.proc.read_setup {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %s\n", client, server_ip, prot,
+ printf("%d %s %d %d %d %s\n", client, server_ip, prot,
version, size, units)
}
probe nfs.proc.read_setup.return {
@@ -52,7 +52,7 @@ probe nfs.proc.read_setup.return {
probe nfs.proc.read_done {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d\n", server_ip, prot, count, version)
+ printf("%s %d %d %d\n", server_ip, prot, count, version)
printf("%d\n", timestamp)
}
probe nfs.proc.read_done.return {
@@ -61,7 +61,7 @@ probe nfs.proc.read_done.return {
probe nfs.proc.write_setup {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %s\n", client, server_ip, prot,
+ printf("%d %s %d %d %d %s\n", client, server_ip, prot,
version, size, units)
printf("%d %d %d\n", how, bitmask0, bitmask1)
}
@@ -71,7 +71,7 @@ probe nfs.proc.write_setup.return {
probe nfs.proc.write_done {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d\n", server_ip, prot, count, valid, version)
+ printf("%s %d %d %d %d\n", server_ip, prot, count, valid, version)
printf("%d\n", timestamp)
}
probe nfs.proc.write_done.return {
@@ -80,7 +80,7 @@ probe nfs.proc.write_done.return {
probe nfs.proc.commit_setup {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %s\n", client, server_ip, prot,
+ printf("%d %s %d %d %d %s\n", client, server_ip, prot,
version, size, units)
printf("%d %d\n", bitmask0, bitmask1)
}
@@ -90,7 +90,7 @@ probe nfs.proc.commit_setup.return {
probe nfs.proc.commit_done {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d\n", server_ip, prot, count, valid, version)
+ printf("%s %d %d %d %d\n", server_ip, prot, count, valid, version)
printf("%d\n", timestamp)
}
probe nfs.proc.commit_done.return {
@@ -99,7 +99,7 @@ probe nfs.proc.commit_done.return {
probe nfs.proc.rename_setup {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d\n", client, server_ip, prot,
+ printf("%d %s %d %d\n", client, server_ip, prot,
version)
printf("%d\n", fh)
}
@@ -109,7 +109,7 @@ probe nfs.proc.rename_setup.return {
probe nfs.proc.rename_done {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d\n", server_ip, prot, version)
+ printf("%s %d %d\n", server_ip, prot, version)
printf("%d %d\n", timestamp, status)
printf("%d %d\n", old_fh, new_fh)
}
@@ -119,7 +119,7 @@ probe nfs.proc.rename_done.return {
probe nfs.proc.open {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d\n", server_ip, prot, version)
+ printf("%s %d %d\n", server_ip, prot, version)
}
probe nfs.proc.open.return {
printf("%s(%s)\n", name, retstr)
@@ -127,7 +127,7 @@ probe nfs.proc.open.return {
probe nfs.proc.release ? {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d\n", server_ip, prot, version)
+ printf("%s %d %d\n", server_ip, prot, version)
}
probe nfs.proc.release.return ? {
printf("%s(%s)\n", name, retstr)
@@ -143,7 +143,7 @@ probe nfs.proc.handle_exception.return {
probe nfs.proc.create {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d %d\n", server_ip, prot, version, fh,
+ printf("%s %d %d %d %d %d\n", server_ip, prot, version, fh,
filelen, mode)
}
probe nfs.proc.create.return {
@@ -152,7 +152,7 @@ probe nfs.proc.create.return {
probe nfs.proc.remove {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d %d %d\n", server_ip, prot, version, fh,
+ printf("%s %d %d %d %d\n", server_ip, prot, version, fh,
filelen)
}
probe nfs.proc.remove.return {
@@ -161,7 +161,7 @@ probe nfs.proc.remove.return {
probe nfs.proc.rename {
printf("%s(%s)\n", name, argstr)
- printf("%d %d %d\n", server_ip, prot, version)
+ printf("%s %d %d\n", server_ip, prot, version)
printf("%d %d %s\n", old_fh, old_filelen, old_name)
printf("%d %d %s\n", new_fh, new_filelen, new_name)
}

144
SOURCES/rhbz2022849.patch Normal file
View File

@ -0,0 +1,144 @@
commit 0bd97a8061c2ebbe792da8b662c5d19b2f1af02c
Author: William Cohen <wcohen@redhat.com>
Date: Mon Sep 13 21:32:38 2021 -0400
Use task_state tapset function to avoid task_struct changes
The Linux 5.14 kernel's task_struct changed the state field to
__state. The task_state tapset function selects the appropriate
version. Make the scheduler.stp tapset and schedtimes.stp example use
the task_state function rather than directly trying to access the
task_struct state field (and get it wrong for newer kernels).
diff --git a/tapset/linux/scheduler.stp b/tapset/linux/scheduler.stp
index 7338e9008..4667ab53a 100644
--- a/tapset/linux/scheduler.stp
+++ b/tapset/linux/scheduler.stp
@@ -138,7 +138,7 @@ probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
prev_tid = $prev_p->pid
prev_task = $prev_p
prev_task_name = task_execname($prev_p)
- prevtsk_state = $prev_p->state
+ prevtsk_state = task_state($prev_p)
}
else {
prev_priority = $prev->prio
@@ -146,7 +146,7 @@ probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
prev_tid = $prev->pid
prev_task = $prev
prev_task_name = task_execname($prev)
- prevtsk_state = $prev->state
+ prevtsk_state = task_state($prev)
}
if (@defined($next)) {
@@ -155,7 +155,7 @@ probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
next_tid = $next->pid
next_task = $next
next_task_name = task_execname($next)
- nexttsk_state = $next->state
+ nexttsk_state = task_state($next)
}
else if (@defined($next_p)) {
next_priority = $next_p->prio
@@ -163,7 +163,7 @@ probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
next_tid = $next_p->pid
next_task = $next_p
next_task_name = task_execname($next_p)
- nexttsk_state = $next_p->state
+ nexttsk_state = task_state($next_p)
}
else {
next_priority = $new->prio
@@ -171,7 +171,7 @@ probe scheduler.ctxswitch = kernel.trace("sched_switch") !,
next_tid = $new->pid
next_task = $new
next_task_name = task_execname($new)
- nexttsk_state = $new->state
+ nexttsk_state = task_state($new)
}
}
diff --git a/testsuite/systemtap.examples/process/schedtimes.stp b/testsuite/systemtap.examples/process/schedtimes.stp
index 4e422c893..ee1053045 100755
--- a/testsuite/systemtap.examples/process/schedtimes.stp
+++ b/testsuite/systemtap.examples/process/schedtimes.stp
@@ -99,7 +99,7 @@ probe kernel.trace("sched_switch")
// Task $prev is scheduled off this cpu
if (task_targeted($prev)) {
pid = $prev->pid
- state = $prev->state
+ state = task_state($prev)
update_times(pid, timestamp())
if (state > 0) {
commit a29f65d5750f6379afeca99c5d641598ff638517
Author: Stan Cox <scox@redhat.com>
Date: Sun Jul 18 21:32:51 2021 -0400
PR28079: Adapt to kernel 5.14 task_struct.__state change
Use signal_wake_up_state for the 5.14 kernel which changed volatile long state to unsigned int __state.
diff --git a/buildrun.cxx b/buildrun.cxx
index a1332a687..ae27ddea4 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -523,3 +523,4 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, cs, "autoconf-lockdown-kernel.c", "STAPCONF_LOCKDOWN_KERNEL", NULL);
+ output_autoconf(s, o, cs, "autoconf-task-state.c", "STAPCONF_TASK_STATE", NULL);
// used by runtime/linux/netfilter.c
output_exportconf(s, o2, "nf_register_hook", "STAPCONF_NF_REGISTER_HOOK");
diff --git a/runtime/linux/autoconf-task-state.c b/runtime/linux/autoconf-task-state.c
new file mode 100644
index 000000000..27a1d7c13
--- /dev/null
+++ b/runtime/linux/autoconf-task-state.c
@@ -0,0 +1,18 @@
+/*
+ * Is this a kernel prior to the following kernel commit:
+ *
+ * commit 2f064a59a11ff9bc22e52e9678bc601404c7cb34
+ * Author: Peter Zijlstra <peterz@infradead.org>
+ * Date: 2021-06-11 10:28:17 +0200
+ *
+ * sched: Change task_struct::state
+ * Change the type and name of task_struct::state. Drop the volatile and
+ * shrink it to an 'unsigned int'. Rename it in order to find all uses
+ * such that we can use READ_ONCE/WRITE_ONCE as appropriate.
+ */
+
+#include <linux/sched.h>
+
+unsigned int bar (struct task_struct *foo) {
+ return (foo->state = 0);
+}
diff --git a/runtime/stp_utrace.c b/runtime/stp_utrace.c
index ff8c5549d..d63e6366c 100644
--- a/runtime/stp_utrace.c
+++ b/runtime/stp_utrace.c
@@ -33,9 +33,12 @@
#if defined(__set_task_state)
#define __stp_set_task_state(tsk, state_value) \
__set_task_state((tsk), (state_value))
-#else
+#elif defined(STAPCONF_TASK_STATE)
#define __stp_set_task_state(tsk, state_value) \
do { (tsk)->state = (state_value); } while (0)
+#else
+#define __stp_set_task_state(tsk, state_value) \
+ signal_wake_up_state((tsk), (state_value))
#endif
// For now, disable the task_work_queue on non-RT kernels.
@@ -1263,7 +1266,7 @@ static void utrace_wakeup(struct task_struct *target, struct utrace *utrace)
spin_lock_irq(&target->sighand->siglock);
if (target->signal->flags & SIGNAL_STOP_STOPPED ||
target->signal->group_stop_count)
- target->state = TASK_STOPPED;
+ __stp_set_task_state(target, TASK_STOPPED);
else
stp_wake_up_state(target, __TASK_TRACED);
spin_unlock_irq(&target->sighand->siglock);

View File

@ -99,7 +99,7 @@
Name: %{?scl_prefix}systemtap
Version: 4.5
Release: 4%{?release_override}%{?dist}
Release: 6%{?release_override}%{?dist}
# for version, see also configure.ac
@ -135,6 +135,9 @@ License: GPLv2+
URL: http://sourceware.org/systemtap/
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
Patch1: rhbz1973751.patch
Patch2: rhbz2022849.patch
# Build*
BuildRequires: make
BuildRequires: gcc-c++
@ -540,6 +543,9 @@ systemtap-runtime-virthost machine to execute systemtap scripts.
%prep
%setup -q -n systemtap-%{version}
%patch1 -p1
%patch2 -p1
%build
# Enable/disable the dyninst pure-userspace backend
@ -1230,6 +1236,12 @@ exit 0
# PRERELEASE
%changelog
* Fri Nov 05 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-6
- rhbz2022849: kernel 4.18.0-348.6 compatibility backports
* Fri Nov 05 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-5
- rhbz1973751: inconsistent datatype of server_ip in nfs_proc tapset
* Fri Jun 18 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-4
- rhbz1970373: force initscript for stap-server etc
- rhbz1970356: require dyninst 11