import systemtap-4.8-2.el9
This commit is contained in:
parent
fdfba1dd6c
commit
796beb935f
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/systemtap-4.7.tar.gz
|
SOURCES/systemtap-4.8.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
fc943fc3233b111fd80c9cbd063859dc1b699dcb SOURCES/systemtap-4.7.tar.gz
|
35e1168d72c9d553a6094825f067e2e62d662a59 SOURCES/systemtap-4.8.tar.gz
|
||||||
|
50
SOURCES/rhbz1997192.patch
Normal file
50
SOURCES/rhbz1997192.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
commit 47cab810bb7ea315a2dec23c2f61e7ba74515b82
|
||||||
|
Author: Martin Cermak <mcermak@redhat.com>
|
||||||
|
Date: Fri Dec 16 16:08:20 2022 -0500
|
||||||
|
|
||||||
|
tapset: nfs.proc.commit_done compilation on some kernels
|
||||||
|
|
||||||
|
Correct:
|
||||||
|
9.0 Server x86_64 # stap -vp3 nfs.proc.commit_done.stp
|
||||||
|
|
||||||
|
Pass 1: parsed user script and 482 library scripts using 108088virt/88468res/12460shr/75476data kb, in 190usr/60sys/501real ms.
|
||||||
|
semantic error: invalid access '->task' vs 'void*': operator '->' at /usr/share/systemtap/tapset/linux/nfs_proc.stpm:16:21
|
||||||
|
source: ( get_ip(&@nfs_data->task) )
|
||||||
|
^
|
||||||
|
in expansion of macro: operator '@_nfs_data_server_ip' at /usr/share/systemtap/tapset/linux/nfs_proc.stp:1421:15
|
||||||
|
source: server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
||||||
|
^
|
||||||
|
|
||||||
|
diff --git a/tapset/linux/nfs_proc.stp b/tapset/linux/nfs_proc.stp
|
||||||
|
index 9b1f65f5f..4413384f9 100644
|
||||||
|
--- a/tapset/linux/nfs_proc.stp
|
||||||
|
+++ b/tapset/linux/nfs_proc.stp
|
||||||
|
@@ -1442,10 +1442,11 @@ probe nfs.proc3.commit_done = kernel.function("nfs3_commit_done") !,
|
||||||
|
valid = @_nfs_data_valid($data)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
||||||
|
- prot = @_nfs_data_prot($task->tk_calldata)
|
||||||
|
- count = @_nfs_data_res_count($task->tk_calldata)
|
||||||
|
- valid = @_nfs_data_valid($task->tk_calldata)
|
||||||
|
+ _tk_calldata=@choose_defined($task->tk_calldata, @cast($task, "rpc_task", "kernel:nfs")->tk_calldata)
|
||||||
|
+ server_ip = @_nfs_data_server_ip(_tk_calldata)
|
||||||
|
+ prot = @_nfs_data_prot(_tk_calldata)
|
||||||
|
+ count = @_nfs_data_res_count(_tk_calldata)
|
||||||
|
+ valid = @_nfs_data_valid(_tk_calldata)
|
||||||
|
}
|
||||||
|
timestamp = 0
|
||||||
|
version = 3
|
||||||
|
diff --git a/tapset/linux/nfs_proc.stpm b/tapset/linux/nfs_proc.stpm
|
||||||
|
index 8576c0f33..4fe40b2a5 100644
|
||||||
|
--- a/tapset/linux/nfs_proc.stpm
|
||||||
|
+++ b/tapset/linux/nfs_proc.stpm
|
||||||
|
@@ -13,7 +13,7 @@
|
||||||
|
|
||||||
|
@define _nfs_data_server_ip(nfs_data)
|
||||||
|
%(
|
||||||
|
- ( get_ip(&@nfs_data->task) )
|
||||||
|
+ ( get_ip(@choose_defined(&@nfs_data->task, &@cast(@nfs_data, "nfs_commit_data", "kernel:nfs")->task)) )
|
||||||
|
%)
|
||||||
|
|
||||||
|
@define _nfs_data_prot(nfs_data)
|
@ -1,258 +0,0 @@
|
|||||||
commit 093b972294256b3ad68712daecdfdc5da1418a13
|
|
||||||
Author: Martin Cermak <mcermak@redhat.com>
|
|
||||||
Date: Mon May 9 20:00:15 2022 +0200
|
|
||||||
|
|
||||||
refix PR28634 for rhel8+ kernels
|
|
||||||
|
|
||||||
The rhel kernel backports do not always align to upstream, so that
|
|
||||||
the KERNEL_VERSION() based gate needs to be updated using a version
|
|
||||||
that does the expected thing for the rhel{7,8,9} kernels.
|
|
||||||
|
|
||||||
diff --git a/tapset/linux/ioscheduler.stp b/tapset/linux/ioscheduler.stp
|
|
||||||
index 3096a73ea..c7231878d 100644
|
|
||||||
--- a/tapset/linux/ioscheduler.stp
|
|
||||||
+++ b/tapset/linux/ioscheduler.stp
|
|
||||||
@@ -11,7 +11,7 @@
|
|
||||||
// </tapsetdescription>
|
|
||||||
%{
|
|
||||||
#include <linux/blkdev.h>
|
|
||||||
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5,16,0)
|
|
||||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,18,0)
|
|
||||||
#include <linux/elevator.h>
|
|
||||||
#endif
|
|
||||||
%}
|
|
||||||
@@ -41,7 +41,7 @@ probe ioscheduler.elv_next_request = kernel.function("blk_peek_request") !,
|
|
||||||
*/
|
|
||||||
probe ioscheduler.elv_next_request.return =
|
|
||||||
kernel.function("blk_peek_request").return !,
|
|
||||||
- kernel.function("elv_next_request").return
|
|
||||||
+ kernel.function("elv_next_request").return ?
|
|
||||||
{
|
|
||||||
name = "elv_next_request"
|
|
||||||
if ($return == 0) {
|
|
||||||
@@ -80,18 +80,14 @@ probe ioscheduler.elv_completed_request
|
|
||||||
@choose_defined($q->elevator->elevator_type->elevator_name,
|
|
||||||
@choose_defined($q->elevator->elevator_name,
|
|
||||||
0))), "")
|
|
||||||
- if($rq == 0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- } else {
|
|
||||||
- if($rq->rq_disk == 0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- } else {
|
|
||||||
- disk_major = $rq->rq_disk->major
|
|
||||||
- disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
+ disk_major = $rq->rq_disk->major
|
|
||||||
+ disk_minor = $rq->rq_disk->first_minor
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq = $rq
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
@@ -111,7 +107,7 @@ probe ioscheduler.elv_completed_request
|
|
||||||
// when a request is added to the request queue
|
|
||||||
probe ioscheduler.elv_add_request.kp =
|
|
||||||
kernel.function("elv_insert") !,
|
|
||||||
- kernel.function("__elv_add_request")
|
|
||||||
+ kernel.function("__elv_add_request") ?
|
|
||||||
{
|
|
||||||
name = "elv_add_request"
|
|
||||||
elevator_name = kernel_string(
|
|
||||||
@@ -120,18 +116,15 @@ probe ioscheduler.elv_add_request.kp =
|
|
||||||
@choose_defined($q->elevator->elevator_name,
|
|
||||||
0))), "")
|
|
||||||
q = $q
|
|
||||||
- if($rq == 0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- } else {
|
|
||||||
- if($rq->rq_disk == 0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- } else {
|
|
||||||
- disk_major = $rq->rq_disk->major
|
|
||||||
- disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
+ disk_major = $rq->rq_disk->major
|
|
||||||
+ disk_minor = $rq->rq_disk->first_minor
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq = $rq
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
@@ -160,11 +153,11 @@ probe ioscheduler.elv_add_request.tp = kernel.trace("block_rq_insert") ?
|
|
||||||
0))), "")
|
|
||||||
rq = $rq
|
|
||||||
|
|
||||||
- if ($rq == 0 || $rq->rq_disk ==0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- }
|
|
||||||
- else {
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
disk_major = $rq->rq_disk->major
|
|
||||||
disk_minor = $rq->rq_disk->first_minor
|
|
||||||
}
|
|
||||||
@@ -184,7 +177,7 @@ probe ioscheduler.elv_add_request.tp = kernel.trace("block_rq_insert") ?
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
probe ioscheduler.elv_add_request =
|
|
||||||
- ioscheduler.elv_add_request.tp !, ioscheduler.elv_add_request.kp
|
|
||||||
+ ioscheduler.elv_add_request.tp !, ioscheduler.elv_add_request.kp ?
|
|
||||||
{}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -211,14 +204,14 @@ probe ioscheduler_trace.elv_completed_request
|
|
||||||
|
|
||||||
rq = $rq
|
|
||||||
|
|
||||||
- if ($rq == 0 || $rq->rq_disk ==0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- }
|
|
||||||
- else {
|
|
||||||
- disk_major = $rq->rq_disk->major
|
|
||||||
- disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
+ disk_major = $rq->rq_disk->major
|
|
||||||
+ disk_minor = $rq->rq_disk->first_minor
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
: @choose_defined($rq->cmd_flags, $rq->flags)
|
|
||||||
@@ -247,14 +240,14 @@ probe ioscheduler_trace.elv_issue_request
|
|
||||||
0))), "")
|
|
||||||
rq = $rq
|
|
||||||
|
|
||||||
- if ($rq == 0 || $rq->rq_disk ==0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- }
|
|
||||||
- else {
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
disk_major = $rq->rq_disk->major
|
|
||||||
disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
: @choose_defined($rq->cmd_flags, $rq->flags)
|
|
||||||
@@ -283,14 +276,14 @@ probe ioscheduler_trace.elv_requeue_request
|
|
||||||
0))), "")
|
|
||||||
rq = $rq
|
|
||||||
|
|
||||||
- if ($rq == 0 || $rq->rq_disk ==0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- }
|
|
||||||
- else {
|
|
||||||
- disk_major = $rq->rq_disk->major
|
|
||||||
- disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
+ disk_major = $rq->rq_disk->major
|
|
||||||
+ disk_minor = $rq->rq_disk->first_minor
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
: @choose_defined($rq->cmd_flags, $rq->flags)
|
|
||||||
@@ -318,14 +311,14 @@ probe ioscheduler_trace.elv_abort_request
|
|
||||||
0))), "")
|
|
||||||
rq = $rq
|
|
||||||
|
|
||||||
- if ($rq == 0 || $rq->rq_disk ==0) {
|
|
||||||
- disk_major = -1
|
|
||||||
- disk_minor = -1
|
|
||||||
- }
|
|
||||||
- else {
|
|
||||||
- disk_major = $rq->rq_disk->major
|
|
||||||
- disk_minor = $rq->rq_disk->first_minor
|
|
||||||
- }
|
|
||||||
+ disk_major = -1
|
|
||||||
+ disk_minor = -1
|
|
||||||
+ // kernel f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
+ // block: remove the ->rq_disk field in struct request
|
|
||||||
+ if(@defined($rq->rq_disk) && ($rq->rq_disk != 0)) {
|
|
||||||
+ disk_major = $rq->rq_disk->major
|
|
||||||
+ disk_minor = $rq->rq_disk->first_minor
|
|
||||||
+ }
|
|
||||||
|
|
||||||
rq_flags = ($rq == 0) ? 0
|
|
||||||
: @choose_defined($rq->cmd_flags, $rq->flags)
|
|
||||||
diff --git a/testsuite/buildok/ioscheduler-all-probes.stp b/testsuite/buildok/ioscheduler-all-probes.stp
|
|
||||||
index da182c774..a8d8e08c5 100755
|
|
||||||
--- a/testsuite/buildok/ioscheduler-all-probes.stp
|
|
||||||
+++ b/testsuite/buildok/ioscheduler-all-probes.stp
|
|
||||||
@@ -2,6 +2,6 @@
|
|
||||||
|
|
||||||
// Tests if all probes in the ioscheduler tapset are resolvable.
|
|
||||||
|
|
||||||
-probe ioscheduler.*, ioscheduler.*.return {}
|
|
||||||
+probe ioscheduler.* ?, ioscheduler.*.return ? {}
|
|
||||||
|
|
||||||
probe ioscheduler_trace.* ? {}
|
|
||||||
diff --git a/testsuite/buildok/ioscheduler-detailed.stp b/testsuite/buildok/ioscheduler-detailed.stp
|
|
||||||
index 143f20cd6..033e955dc 100755
|
|
||||||
--- a/testsuite/buildok/ioscheduler-detailed.stp
|
|
||||||
+++ b/testsuite/buildok/ioscheduler-detailed.stp
|
|
||||||
@@ -6,24 +6,24 @@
|
|
||||||
# test the kprobes aliases (*.kp). This could cause them to get out
|
|
||||||
# of sync with the kprobed functions. So, we test them explicitly.
|
|
||||||
|
|
||||||
-probe ioscheduler.elv_next_request
|
|
||||||
+probe ioscheduler.elv_next_request ?
|
|
||||||
{
|
|
||||||
printf("%s: %s\n", name, elevator_name)
|
|
||||||
}
|
|
||||||
-probe ioscheduler.elv_next_request.return
|
|
||||||
+probe ioscheduler.elv_next_request.return ?
|
|
||||||
{
|
|
||||||
printf("name: %s, %d, %d, %p, %d", name, disk_major,
|
|
||||||
disk_minor, rq, rq_flags)
|
|
||||||
}
|
|
||||||
|
|
||||||
-probe ioscheduler.elv_completed_request
|
|
||||||
+probe ioscheduler.elv_completed_request ?
|
|
||||||
{
|
|
||||||
printf("name: %s, elv_name: %s, %d, %d, %p, %d", name, elevator_name,
|
|
||||||
disk_major, disk_minor, rq, rq_flags)
|
|
||||||
}
|
|
||||||
|
|
||||||
-probe ioscheduler.elv_add_request,
|
|
||||||
- ioscheduler.elv_add_request.kp,
|
|
||||||
+probe ioscheduler.elv_add_request ?,
|
|
||||||
+ ioscheduler.elv_add_request.kp ?,
|
|
||||||
ioscheduler.elv_add_request.tp ?
|
|
||||||
{
|
|
||||||
printf("name: %s, elv_name: %s, %d, %d, %p, %d", name, elevator_name,
|
|
@ -1,66 +0,0 @@
|
|||||||
commit a0fa7bf0b68058d8f41a5fde608362172a2c3d77
|
|
||||||
Author: Martin Cermak <mcermak@redhat.com>
|
|
||||||
Date: Wed May 11 22:22:00 2022 +0200
|
|
||||||
|
|
||||||
Update examples/io/iostat-scsi.stp for modern rhel9 kernels.
|
|
||||||
|
|
||||||
Update examples/io/iostat-scsi.stp for kernels having following
|
|
||||||
upstream kernel commit backported:
|
|
||||||
|
|
||||||
commit f3fa33acca9f0058157214800f68b10d8e71ab7a
|
|
||||||
Author: Christoph Hellwig <hch@lst.de>
|
|
||||||
Date: Fri Nov 26 13:18:00 2021 +0100
|
|
||||||
|
|
||||||
block: remove the ->rq_disk field in struct request
|
|
||||||
|
|
||||||
Just use the disk attached to the request_queue instead.
|
|
||||||
|
|
||||||
[ ... stuff deleted ... ]
|
|
||||||
|
|
||||||
diff --git a/testsuite/systemtap.examples/io/iostat-scsi.stp b/testsuite/systemtap.examples/io/iostat-scsi.stp
|
|
||||||
index 3faf32fe9..aa0238a7b 100755
|
|
||||||
--- a/testsuite/systemtap.examples/io/iostat-scsi.stp
|
|
||||||
+++ b/testsuite/systemtap.examples/io/iostat-scsi.stp
|
|
||||||
@@ -2,12 +2,18 @@
|
|
||||||
|
|
||||||
global devices, reads, writes
|
|
||||||
|
|
||||||
+/* kernel commit f3fa33acca9f0058157214800f68b10d8e71ab7a */
|
|
||||||
+@define __disk_name(__request)
|
|
||||||
+%(
|
|
||||||
+ ( @choose_defined(@__request->rq_disk->disk_name, @__request->q->disk->disk_name ) )
|
|
||||||
+%)
|
|
||||||
+
|
|
||||||
/* data collection: SCSI disk */
|
|
||||||
%(kernel_v < "2.6.24" %?
|
|
||||||
probe module("sd_mod").function("sd_init_command") !,
|
|
||||||
kernel.function("sd_init_command")
|
|
||||||
{
|
|
||||||
- device = kernel_string($SCpnt->request->rq_disk->disk_name)
|
|
||||||
+ device = kernel_string(@__disk_name($SCpnt->request))
|
|
||||||
sector_size = $SCpnt->device->sector_size
|
|
||||||
nr_sectors = $SCpnt->request->nr_sectors
|
|
||||||
devices[device] = 1
|
|
||||||
@@ -38,7 +44,7 @@ function get_nr_sectors:long(rq:long)
|
|
||||||
probe sd_prep_fn = module("sd_mod").function("sd_prep_fn") !,
|
|
||||||
kernel.function("sd_prep_fn")
|
|
||||||
{
|
|
||||||
- device = kernel_string($rq->rq_disk->disk_name)
|
|
||||||
+ device = kernel_string(@__disk_name($rq))
|
|
||||||
sector_size = @cast($q->queuedata, "scsi_device", "kernel<scsi/scsi_device.h>")->sector_size
|
|
||||||
%(kernel_v>="2.6.31" %?
|
|
||||||
nr_sectors = get_nr_sectors($rq)
|
|
||||||
@@ -58,11 +64,11 @@ probe sd_init_command = module("sd_mod").function("sd_init_command") !,
|
|
||||||
sector_size = @choose_defined($cmd, $SCpnt)->device->sector_size
|
|
||||||
# Kernel commits aa8e25e5006aac52c943c84e9056ab488630ee19 2266a2def97ce11ec979b6c58a1b637a16eca7dd
|
|
||||||
if (@defined(@choose_defined($cmd, $SCpnt)->request)) {
|
|
||||||
- device = kernel_string(@choose_defined($cmd, $SCpnt)->request->rq_disk->disk_name)
|
|
||||||
+ device = kernel_string(@__disk_name(@choose_defined($cmd, $SCpnt)->request))
|
|
||||||
nr_sectors = get_nr_sectors(@choose_defined($cmd, $SCpnt)->request)
|
|
||||||
_cmd_flags = @choose_defined($cmd, $SCpnt)->request->cmd_flags
|
|
||||||
} else {
|
|
||||||
- device = kernel_string(@cast(scsi_cmd_to_rq(@choose_defined($cmd, $SCpnt)), "request", "kernel")->rq_disk->disk_name)
|
|
||||||
+ device = kernel_string(@__disk_name(@cast(scsi_cmd_to_rq(@choose_defined($cmd, $SCpnt)), "request", "kernel")))
|
|
||||||
nr_sectors = get_nr_sectors(scsi_cmd_to_rq(@choose_defined($cmd, $SCpnt)))
|
|
||||||
_cmd_flags = @cast(scsi_cmd_to_rq(@choose_defined($cmd, $SCpnt)), "request", "kernel")->cmd_flags
|
|
||||||
}
|
|
30
SOURCES/rhbz2145242.patch
Normal file
30
SOURCES/rhbz2145242.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
commit 578e60102871d11ed8c18d36f6286f3a96258d8f
|
||||||
|
Author: Ryan Goldberg <rgoldber@redhat.com>
|
||||||
|
Date: Thu Dec 1 16:15:44 2022 -0500
|
||||||
|
|
||||||
|
PR29676: Wildcard expansion fix for labels
|
||||||
|
|
||||||
|
PR29676, introduced an bug where function symbols from the symbol
|
||||||
|
table were expanded in the function component resulting in wildcards
|
||||||
|
not being expanded in labels. This fix, removes the issue by restricting
|
||||||
|
the symbol table query to probes which don't need further debuginfo to
|
||||||
|
expand.
|
||||||
|
|
||||||
|
diff --git a/tapsets.cxx b/tapsets.cxx
|
||||||
|
index 0ec71ebda..46b10f26e 100644
|
||||||
|
--- a/tapsets.cxx
|
||||||
|
+++ b/tapsets.cxx
|
||||||
|
@@ -1256,7 +1256,11 @@ dwarf_query::handle_query_module()
|
||||||
|
// in the symbol table but not in dwarf and minidebuginfo is
|
||||||
|
// located in the gnu_debugdata section, alias_dupes checking
|
||||||
|
// is done before adding any probe points
|
||||||
|
- if(!pending_interrupts)
|
||||||
|
+ // PR29676. Some probes require additional debuginfo
|
||||||
|
+ // to expand wildcards (ex. .label, .callee). Since the debuginfo is
|
||||||
|
+ // not available, don't bother looking in the symbol table for these results.
|
||||||
|
+ // This can result in 0 results, if there is no dwarf info present
|
||||||
|
+ if(!pending_interrupts && !(has_label || has_callee || has_callees_num))
|
||||||
|
query_module_symtab();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
78
SOURCES/rhbz2149223.patch
Normal file
78
SOURCES/rhbz2149223.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
commit 05eb6742c169226ae09f1737aa8b9dc1dc12adb5
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Tue Nov 29 18:50:58 2022 +0100
|
||||||
|
|
||||||
|
Handle DWARF5 DW_OP_implicit_pointer and DW_OP_entry_value
|
||||||
|
|
||||||
|
These are the same as the GNU extensions for older DWARF,
|
||||||
|
DW_OP_GNU_implicit_pointer and DW_GNU_entry_value.
|
||||||
|
|
||||||
|
diff --git a/loc2stap.cxx b/loc2stap.cxx
|
||||||
|
index efc78cc57..53316a480 100644
|
||||||
|
--- a/loc2stap.cxx
|
||||||
|
+++ b/loc2stap.cxx
|
||||||
|
@@ -23,6 +23,11 @@
|
||||||
|
#define DW_OP_GNU_entry_value 0xf3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if ! _ELFUTILS_PREREQ(0, 171)
|
||||||
|
+#define DW_OP_entry_value 0xa3
|
||||||
|
+#define DW_OP_implicit_pointer 0xa0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define N_(x) x
|
||||||
|
|
||||||
|
|
||||||
|
@@ -372,7 +377,7 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
||||||
|
DIE ("operations follow DW_OP_implicit_value");
|
||||||
|
|
||||||
|
if (implicit_pointer != NULL)
|
||||||
|
- DIE ("operations follow DW_OP_GNU_implicit_pointer");
|
||||||
|
+ DIE ("operations follow DW_OP implicit_pointer");
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (expr[i].atom)
|
||||||
|
@@ -662,6 +667,7 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
||||||
|
|
||||||
|
#if _ELFUTILS_PREREQ (0, 149)
|
||||||
|
case DW_OP_GNU_implicit_pointer:
|
||||||
|
+ case DW_OP_implicit_pointer:
|
||||||
|
implicit_pointer = &expr[i];
|
||||||
|
/* Fake top of stack: implicit_pointer being set marks it. */
|
||||||
|
PUSH(NULL);
|
||||||
|
@@ -684,10 +690,11 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DW_OP_GNU_entry_value:
|
||||||
|
+ case DW_OP_entry_value:
|
||||||
|
{
|
||||||
|
expression *result = handle_GNU_entry_value (expr[i]);
|
||||||
|
if (result == NULL)
|
||||||
|
- DIE("DW_OP_GNU_entry_value unable to resolve value");
|
||||||
|
+ DIE("DW_OP entry_value unable to resolve value");
|
||||||
|
PUSH(result);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
@@ -1248,7 +1255,8 @@ location_context::location_relative (const Dwarf_Op *expr, size_t len,
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DW_OP_GNU_entry_value:
|
||||||
|
- DIE ("unhandled DW_OP_GNU_entry_value");
|
||||||
|
+ case DW_OP_entry_value:
|
||||||
|
+ DIE ("unhandled DW_OP entry_value");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
diff --git a/testsuite/systemtap.base/dw_entry_value.exp b/testsuite/systemtap.base/dw_entry_value.exp
|
||||||
|
index 7339fc5fa..b728fa7ff 100644
|
||||||
|
--- a/testsuite/systemtap.base/dw_entry_value.exp
|
||||||
|
+++ b/testsuite/systemtap.base/dw_entry_value.exp
|
||||||
|
@@ -10,7 +10,7 @@ if { $res != "" } {
|
||||||
|
pass "$test: compiled $test.c"
|
||||||
|
}
|
||||||
|
|
||||||
|
-if { ![catch { exec eu-readelf -w $test | grep GNU_entry_value }] } {
|
||||||
|
+if { ![catch { exec eu-readelf -w $test | grep entry_value: }] } {
|
||||||
|
stap_run $test no_load $all_pass_string $srcdir/$subdir/$test.stp -c ./${test} -w
|
||||||
|
} else {
|
||||||
|
untested "$test: no DW_OP_GNU_entry_value found"
|
73
SOURCES/rhbz2149666.patch
Normal file
73
SOURCES/rhbz2149666.patch
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
commit 7eed8d1fef36997b9e4c1d9cdb67643483a51e56
|
||||||
|
Author: William Cohen <wcohen@redhat.com>
|
||||||
|
Date: Fri Nov 4 11:12:05 2022 -0400
|
||||||
|
|
||||||
|
Ensure that SystemTap runtime uses smp_processor_id() in proper context
|
||||||
|
|
||||||
|
There were cases on Fedora 36 and Rawhide running kernels with
|
||||||
|
CONFIG_DEBUG_PREEMPT=y where systemtap scripts would trigger kernel
|
||||||
|
log messages like the following:
|
||||||
|
|
||||||
|
[ 257.544406] check_preemption_disabled: 4 callbacks suppressed
|
||||||
|
[ 257.544409] BUG: using smp_processor_id() in preemptible [00000000] code: staprun/2106
|
||||||
|
[ 257.544465] caller is _stp_runtime_context_trylock+0x12/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544507] CPU: 0 PID: 2106 Comm: staprun Tainted: G OE ------- --- 6.1.0-0.rc2.20221028git23758867219c.24.fc38.x86_64 #1
|
||||||
|
[ 257.544544] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.0-1.fc36 04/01/2014
|
||||||
|
[ 257.544571] Call Trace:
|
||||||
|
[ 257.544583] <TASK>
|
||||||
|
[ 257.544593] dump_stack_lvl+0x5b/0x77
|
||||||
|
[ 257.544620] check_preemption_disabled+0xe1/0xf0
|
||||||
|
[ 257.544641] _stp_runtime_context_trylock+0x12/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544673] _stp_runtime_entryfn_get_context+0xb/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544705] _stp_ctl_send+0x76/0x1e0 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544735] _stp_transport_init+0x71a/0x860 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544771] ? kallsyms_on_each_symbol+0x30/0x30 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
||||||
|
[ 257.544803] do_one_initcall+0x6b/0x320
|
||||||
|
[ 257.544827] do_init_module+0x4a/0x200
|
||||||
|
[ 257.544844] __do_sys_init_module+0x16a/0x1a0
|
||||||
|
[ 257.544870] do_syscall_64+0x58/0x80
|
||||||
|
[ 257.544885] ? up_read+0x17/0x20
|
||||||
|
[ 257.544902] ? lock_is_held_type+0xe8/0x140
|
||||||
|
[ 257.544921] ? asm_exc_page_fault+0x22/0x30
|
||||||
|
[ 257.544939] ? lockdep_hardirqs_on+0x7d/0x100
|
||||||
|
[ 257.544956] entry_SYSCALL_64_after_hwframe+0x63/0xcd
|
||||||
|
[ 257.544975] RIP: 0033:0x7f3cde12f5de
|
||||||
|
[ 257.544992] Code: 48 8b 0d 35 68 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 02 68 0c 00 f7 d8 64 89 01 48
|
||||||
|
[ 257.545010] RSP: 002b:00007ffc5170c418 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
|
||||||
|
[ 257.545010] RAX: ffffffffffffffda RBX: 0000563620bd4020 RCX: 00007f3cde12f5de
|
||||||
|
[ 257.545010] RDX: 0000563620bd4020 RSI: 0000000000040ea0 RDI: 00007f3cde44a010
|
||||||
|
[ 257.545010] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
|
||||||
|
[ 257.545010] R10: 0000000000000053 R11: 0000000000000246 R12: 00007ffc5170c510
|
||||||
|
[ 257.545010] R13: 00007f3cde44a010 R14: 00007ffc5170c440 R15: 00007f3cde4631e8
|
||||||
|
[ 257.545010] </TASK>
|
||||||
|
|
||||||
|
This issue was introduced by git commit 1641b6e7ea which added a fast
|
||||||
|
path check that used smp_processor_id() without first having a
|
||||||
|
preempt_disable(). The code now ensures that preemption is disabled
|
||||||
|
before using the smp_processor_id().
|
||||||
|
|
||||||
|
diff --git a/runtime/linux/runtime_context.h b/runtime/linux/runtime_context.h
|
||||||
|
index 3ed3cbd22..ee3870f32 100644
|
||||||
|
--- a/runtime/linux/runtime_context.h
|
||||||
|
+++ b/runtime/linux/runtime_context.h
|
||||||
|
@@ -49,13 +49,18 @@ static bool _stp_runtime_context_trylock(void)
|
||||||
|
{
|
||||||
|
bool locked;
|
||||||
|
|
||||||
|
+ /* Need to disable preemption because of the smp_processor_id() call
|
||||||
|
+ in _stp_runtime_get_context(). */
|
||||||
|
+ preempt_disable();
|
||||||
|
+
|
||||||
|
/* fast path to ignore new online CPUs without percpu context memory
|
||||||
|
* allocations. this also serves as an extra safe guard for NULL context
|
||||||
|
* pointers. */
|
||||||
|
- if (unlikely(_stp_runtime_get_context() == NULL))
|
||||||
|
+ if (unlikely(_stp_runtime_get_context() == NULL)) {
|
||||||
|
+ preempt_enable_no_resched();
|
||||||
|
return false;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- preempt_disable();
|
||||||
|
locked = atomic_add_unless(&_stp_contexts_busy_ctr, 1, INT_MAX);
|
||||||
|
if (!locked)
|
||||||
|
preempt_enable_no_resched();
|
72
SOURCES/rhbz2154430.patch
Normal file
72
SOURCES/rhbz2154430.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
commit 8f3498781413a710dc9e128f5a96891a6a18fc52
|
||||||
|
Author: Martin Cermak <mcermak@redhat.com>
|
||||||
|
Date: Wed Dec 14 17:37:58 2022 +0100
|
||||||
|
|
||||||
|
PR29766: kernel.function("__set_page_dirty_buffers") not found in vfs.stp
|
||||||
|
|
||||||
|
Updates needed for 6.1.0-65.fc38 compatibility.
|
||||||
|
|
||||||
|
diff --git a/tapset/linux/vfs.stp b/tapset/linux/vfs.stp
|
||||||
|
index e3c1a3032..aebeb3fc0 100644
|
||||||
|
--- a/tapset/linux/vfs.stp
|
||||||
|
+++ b/tapset/linux/vfs.stp
|
||||||
|
@@ -822,13 +822,15 @@ probe vfs.buffer_migrate_page.return =
|
||||||
|
}
|
||||||
|
|
||||||
|
/* default if aop not set, __set_page_dirty_nobuffers usually used if set */
|
||||||
|
-probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")
|
||||||
|
+/* block_dirty_folio related to kernel commit e621900ad28b748e058b81d6078 */
|
||||||
|
+probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")!,
|
||||||
|
+ kernel.function("block_dirty_folio")
|
||||||
|
{
|
||||||
|
- dev = __page_dev($page)
|
||||||
|
- devname = __find_bdevname(dev, __page_bdev($page))
|
||||||
|
- ino = __page_ino($page)
|
||||||
|
+ dev = __page_dev(@choose_defined($page, $folio))
|
||||||
|
+ devname = __find_bdevname(dev, __page_bdev(@choose_defined($page, $folio)))
|
||||||
|
+ ino = __page_ino(@choose_defined($page, $folio))
|
||||||
|
|
||||||
|
- index = __page_index($page)
|
||||||
|
+ index = __page_index(@choose_defined($page, $folio))
|
||||||
|
|
||||||
|
name = "__set_page_dirty_buffers"
|
||||||
|
argstr = sprintf("%d", index)
|
||||||
|
@@ -837,7 +839,8 @@ probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")
|
||||||
|
units = "pages"
|
||||||
|
}
|
||||||
|
probe vfs.__set_page_dirty_buffers.return =
|
||||||
|
- kernel.function("__set_page_dirty_buffers").return
|
||||||
|
+ kernel.function("__set_page_dirty_buffers").return!,
|
||||||
|
+ kernel.function("block_dirty_folio")
|
||||||
|
{
|
||||||
|
name = "__set_page_dirty_buffers"
|
||||||
|
retstr = sprintf("%d", $return)
|
||||||
|
@@ -914,8 +917,9 @@ probe __vfs.ext4_mpage_readpages.return =
|
||||||
|
|
||||||
|
|
||||||
|
/* newer style */
|
||||||
|
+/* add_to_page_cache_locked removed per kernel commit f00654007fe1c15 */
|
||||||
|
probe vfs.__add_to_page_cache =
|
||||||
|
- kernel.function("add_to_page_cache_locked"),
|
||||||
|
+ kernel.function("add_to_page_cache_locked") !,
|
||||||
|
kernel.function("add_to_page_cache_lru")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
@@ -939,7 +943,7 @@ probe vfs.add_to_page_cache =
|
||||||
|
|
||||||
|
/* newer style */
|
||||||
|
probe vfs.__add_to_page_cache.return =
|
||||||
|
- kernel.function("add_to_page_cache_locked").return,
|
||||||
|
+ kernel.function("add_to_page_cache_locked").return !,
|
||||||
|
kernel.function("add_to_page_cache_lru").return
|
||||||
|
{ }
|
||||||
|
|
||||||
|
@@ -958,7 +962,7 @@ probe vfs.add_to_page_cache.return =
|
||||||
|
|
||||||
|
probe vfs.remove_from_page_cache =
|
||||||
|
kernel.function("__delete_from_page_cache") !,
|
||||||
|
- kernel.function("__remove_from_page_cache")
|
||||||
|
+ kernel.function("__remove_from_page_cache") ?
|
||||||
|
{
|
||||||
|
dev = __page_dev($page)
|
||||||
|
devname = __find_bdevname(dev, __page_bdev($page))
|
@ -20,7 +20,11 @@
|
|||||||
%{!?with_bpf: %global with_bpf 0%{?fedora} >= 22 || 0%{?rhel} >= 8}
|
%{!?with_bpf: %global with_bpf 0%{?fedora} >= 22 || 0%{?rhel} >= 8}
|
||||||
%{!?with_systemd: %global with_systemd 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
%{!?with_systemd: %global with_systemd 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
||||||
%{!?with_emacsvim: %global with_emacsvim 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
%{!?with_emacsvim: %global with_emacsvim 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
||||||
|
%ifarch %{ix86}
|
||||||
|
%{!?with_java: %global with_java 0}
|
||||||
|
%else
|
||||||
%{!?with_java: %global with_java 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
%{!?with_java: %global with_java 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
||||||
|
%endif
|
||||||
%{!?with_debuginfod: %global with_debuginfod 0%{?fedora} >= 25 || 0%{?rhel} >= 7}
|
%{!?with_debuginfod: %global with_debuginfod 0%{?fedora} >= 25 || 0%{?rhel} >= 7}
|
||||||
%{!?with_virthost: %global with_virthost 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
%{!?with_virthost: %global with_virthost 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
|
||||||
%{!?with_virtguest: %global with_virtguest 1}
|
%{!?with_virtguest: %global with_virtguest 1}
|
||||||
@ -117,7 +121,7 @@ m stapdev stapdev
|
|||||||
|
|
||||||
|
|
||||||
Name: systemtap
|
Name: systemtap
|
||||||
Version: 4.7
|
Version: 4.8
|
||||||
Release: 2%{?release_override}%{?dist}
|
Release: 2%{?release_override}%{?dist}
|
||||||
# for version, see also configure.ac
|
# for version, see also configure.ac
|
||||||
|
|
||||||
@ -154,8 +158,13 @@ License: GPLv2+
|
|||||||
URL: http://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: rhbz2081102.patch
|
Patch1: rhbz1997192.patch
|
||||||
Patch2: rhbz2085647.patch
|
Patch2: rhbz2145242.patch
|
||||||
|
Patch3: rhbz2149223.patch
|
||||||
|
Patch4: rhbz2149666.patch
|
||||||
|
Patch5: rhbz2154430.patch
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build*
|
# Build*
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
@ -235,9 +244,6 @@ BuildRequires: python3
|
|||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-setuptools
|
BuildRequires: python3-setuptools
|
||||||
%endif
|
%endif
|
||||||
%if %{with_specific_python}
|
|
||||||
BuildRequires: /usr/bin/pathfix.py
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%if %{with_httpd}
|
%if %{with_httpd}
|
||||||
BuildRequires: libmicrohttpd-devel
|
BuildRequires: libmicrohttpd-devel
|
||||||
@ -576,8 +582,12 @@ systemtap-runtime-virthost machine to execute systemtap scripts.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
%patch5 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -681,6 +691,11 @@ make %{?_smp_mflags} V=1
|
|||||||
|
|
||||||
%install
|
%install
|
||||||
make DESTDIR=$RPM_BUILD_ROOT install
|
make DESTDIR=$RPM_BUILD_ROOT install
|
||||||
|
|
||||||
|
%if ! (%{with_python3})
|
||||||
|
rm -v $RPM_BUILD_ROOT%{_bindir}/stap-profile-annotate
|
||||||
|
%endif
|
||||||
|
|
||||||
%find_lang %{name}
|
%find_lang %{name}
|
||||||
for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do
|
for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do
|
||||||
dir=$(echo $dir | sed -e "s|^$RPM_BUILD_ROOT||")
|
dir=$(echo $dir | sed -e "s|^$RPM_BUILD_ROOT||")
|
||||||
@ -818,7 +833,7 @@ done
|
|||||||
|
|
||||||
%if %{with_specific_python}
|
%if %{with_specific_python}
|
||||||
# Some files got ambiguous python shebangs, we fix them after everything else is done
|
# Some files got ambiguous python shebangs, we fix them after everything else is done
|
||||||
pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/*
|
%py3_shebang_fix %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%pre runtime
|
%pre runtime
|
||||||
@ -873,7 +888,8 @@ if [ ! -f ~stap-server/.systemtap/rc ]; then
|
|||||||
numcpu=`/usr/bin/getconf _NPROCESSORS_ONLN`
|
numcpu=`/usr/bin/getconf _NPROCESSORS_ONLN`
|
||||||
if [ -z "$numcpu" -o "$numcpu" -lt 1 ]; then numcpu=1; fi
|
if [ -z "$numcpu" -o "$numcpu" -lt 1 ]; then numcpu=1; fi
|
||||||
nproc=`expr $numcpu \* 30`
|
nproc=`expr $numcpu \* 30`
|
||||||
echo "--rlimit-as=614400000 --rlimit-cpu=60 --rlimit-nproc=$nproc --rlimit-stack=1024000 --rlimit-fsize=51200000" > ~stap-server/.systemtap/rc
|
# PR29661 -> 4G
|
||||||
|
echo "--rlimit-as=4294967296 --rlimit-cpu=60 --rlimit-nproc=$nproc --rlimit-stack=1024000 --rlimit-fsize=51200000" > ~stap-server/.systemtap/rc
|
||||||
chown stap-server:stap-server ~stap-server/.systemtap/rc
|
chown stap-server:stap-server ~stap-server/.systemtap/rc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1083,7 +1099,9 @@ exit 0
|
|||||||
%files devel -f systemtap.lang
|
%files devel -f systemtap.lang
|
||||||
%{_bindir}/stap
|
%{_bindir}/stap
|
||||||
%{_bindir}/stap-prep
|
%{_bindir}/stap-prep
|
||||||
|
%if %{with_python3}
|
||||||
%{_bindir}/stap-profile-annotate
|
%{_bindir}/stap-profile-annotate
|
||||||
|
%endif
|
||||||
%{_bindir}/stap-report
|
%{_bindir}/stap-report
|
||||||
%dir %{_datadir}/systemtap
|
%dir %{_datadir}/systemtap
|
||||||
%{_datadir}/systemtap/runtime
|
%{_datadir}/systemtap/runtime
|
||||||
@ -1280,7 +1298,17 @@ exit 0
|
|||||||
|
|
||||||
# PRERELEASE
|
# PRERELEASE
|
||||||
%changelog
|
%changelog
|
||||||
* Tue May 17 2022 Martin Cermak <mcermak@redhat.com> - 4.1-2
|
* Fri Dec 16 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
|
||||||
|
- rhbz1997192
|
||||||
|
- rhbz2145242
|
||||||
|
- rhbz2149223
|
||||||
|
- rhbz2149666
|
||||||
|
- rhbz2154430
|
||||||
|
|
||||||
|
* Thu Nov 03 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-1
|
||||||
|
- Upstream release.
|
||||||
|
|
||||||
|
* Tue May 17 2022 Martin Cermak <mcermak@redhat.com> - 4.7-2
|
||||||
- Fix rhbz2081102 and rhbz2085647
|
- Fix rhbz2081102 and rhbz2085647
|
||||||
|
|
||||||
* Mon May 02 2022 Frank Ch. Eigler <fche@redhat.com> - 4.7-1
|
* Mon May 02 2022 Frank Ch. Eigler <fche@redhat.com> - 4.7-1
|
||||||
|
Loading…
Reference in New Issue
Block a user