Compare commits

...

No commits in common. "imports/c9-beta/systemtap-4.6-11.el9" and "c8" have entirely different histories.

14 changed files with 2286 additions and 791 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/systemtap-4.6.tar.gz
SOURCES/systemtap-4.9.tar.gz

View File

@ -1 +1 @@
ecc45371b378fc3824a5547b02c030b4123d6769 SOURCES/systemtap-4.6.tar.gz
7ba2ad579a5ba66ccfd36ad6df0896c9e136f9e9 SOURCES/systemtap-4.9.tar.gz

1845
SOURCES/pr29108.patch Normal file

File diff suppressed because it is too large Load Diff

99
SOURCES/pr30749.patch Normal file
View 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)
{

View File

@ -1,19 +0,0 @@
commit 2c11a115bdbe41a7f064ccd32b41c76c5b7c516d
Author: Martin Cermak <mcermak@redhat.com>
Date: Wed Dec 1 14:04:57 2021 +0100
tapset/linux/nfs.stp: Fix rhbz1972798
diff --git a/tapset/linux/nfs.stp b/tapset/linux/nfs.stp
index 28f0b90ed..232289e3b 100644
--- a/tapset/linux/nfs.stp
+++ b/tapset/linux/nfs.stp
@@ -979,7 +979,7 @@ probe nfs.aop.readpages = kernel.function ("nfs_readpages") !,
ino = $mapping->host->i_ino
nr_pages = $nr_pages
- file = $filp
+ file = @choose_defined($filp, $file)
rpages = __nfs_rpages($mapping->host)
rsize = __nfs_server_rsize($mapping->host)

View File

@ -1,95 +0,0 @@
commit 241f53050f441808e673d19b42008779f555f484 (HEAD)
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Fri Nov 19 22:22:45 2021 -0500
configury: let python3 be python3
Our baroque heuristics for identifying python2/3 under their various
historical aliases is showing its age. On some modern distros,
/usr/bin/python is to be positively NOT used. Fixing configure.ac
$PYTHON3 search to only look for python3, and not even consider
$PYTHON_UNKNOWN. At some point we'll want to simplify further, and
get rid of python2 remnants.
diff --git a/configure b/configure
index 6d0d53992636..962323156181 100755
--- a/configure
+++ b/configure
@@ -9350,49 +9350,7 @@ fi
as_fn_append ac_configure_args " python='$PYTHON' pyexecdir='$pyexecdir'"
# Now let's try to find python version 3.
-if test "x$PYTHON_UNKNOWN" != "xno" -a "x$ac_cv_python_unknown_version" = "x3"; then
- # Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PYTHON3 in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PYTHON3="$PYTHON3" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON3="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PYTHON3=$ac_cv_path_PYTHON3
-if test -n "$PYTHON3"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON3" >&5
-$as_echo "$PYTHON3" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-else
- for ac_prog in python3 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0
+for ac_prog in python3 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -9438,7 +9396,6 @@ fi
done
test -n "$PYTHON3" || PYTHON3=":"
-fi
python3_basename=$(basename "$PYTHON3")
cat >>confdefs.h <<_ACEOF
diff --git a/configure.ac b/configure.ac
index b0a823604ca3..d1b1247637bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -88,12 +88,8 @@ fi
AS_VAR_APPEND([ac_configure_args], [" python='$PYTHON' pyexecdir='$pyexecdir'"])
# Now let's try to find python version 3.
-if test "x$PYTHON_UNKNOWN" != "xno" -a "x$ac_cv_python_unknown_version" = "x3"; then
- AC_PATH_PROG([PYTHON3], [python])
-else
- AC_PATH_PROGS([PYTHON3],
- [python3 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0], [:])
-fi
+AC_PATH_PROGS([PYTHON3],
+ [python3 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0], [:])
python3_basename=$(basename "$PYTHON3")
AC_DEFINE_UNQUOTED([PYTHON3_BASENAME], "${python3_basename}",
[Base name of the python3 interpreter binary.])

View File

@ -1,29 +0,0 @@
commit 39b5233271b997811632871e1b6620a89b384fe8
Author: Martin Cermak <mcermak@redhat.com>
Date: Thu Jan 20 18:18:00 2022 +0100
Fix python probing rhbz2027683
diff --git a/tapset/python.stp b/tapset/python.stp
new file mode 100644
index 000000000..b5d06fcd9
--- /dev/null
+++ b/tapset/python.stp
@@ -0,0 +1,17 @@
+/* Systemtap tapset to make it easier to trace Python */
+
+/*
+ Define python.function.entry/return:
+*/
+probe python.function.entry = process("/usr/lib*/libpython*.so*").mark("function__entry")
+{
+ filename = user_string($arg1);
+ funcname = user_string($arg2);
+ lineno = $arg3;
+}
+probe python.function.return = process("/usr/lib*/libpython*.so*").mark("function__return")
+{
+ filename = user_string($arg1);
+ funcname = user_string($arg2);
+ lineno = $arg3;
+}

View File

@ -1,80 +0,0 @@
commit 5abded54b
Author: Stan Cox <scox@redhat.com>
Date: Fri Jan 28 15:28:27 2022 -0500
Attempt to access string in userspace if kernel access fails
Add kernel_or_user_string_quoted(_utf16 _utf32) tapsets to handle
situations where a kernelspace access was assumed but string is in
userspace.
diff --git a/tapset/linux/conversions.stp b/tapset/linux/conversions.stp
index 82f535f6c..d3d3a0b5a 100644
--- a/tapset/linux/conversions.stp
+++ b/tapset/linux/conversions.stp
@@ -72,6 +72,17 @@ function kernel_string_quoted:string (addr:long)
(unsigned long)(uintptr_t)STAP_ARG_addr);
%}
+/**
+ * sfunction kernel_or_user_string_quoted - Retrieves and quotes string from kernel or user memory
+ *
+ * @addr: the kernel or user memory address to retrieve the string from
+ *
+ * Similar to kernel_string_quoted except user memory is a fallback method
+ */
+function kernel_or_user_string_quoted:string (addr:long) {
+ try { return string_quoted(kernel_string(addr)) } catch { return string_quoted(user_string(addr)) }
+}
+
/**
* sfunction kernel_string_n - Retrieves string of given length from kernel memory
* @addr: The kernel address to retrieve the string from
@@ -160,6 +171,16 @@ function kernel_string_quoted_utf32:string (addr:long) {
try { return string_quoted(kernel_string_utf32(addr)) } catch { return sprintf("0x%x", addr) }
}
+/**
+ * sfunction kernel_or_user_string_quoted_utf32 - Retrieves and quotes UTF-32 string from kernel or user memory
+ *
+ * @addr: the kernel or user memory address to retrieve the string from
+ *
+ * Similar to kernel_string_quoted_utf32 except user memory is a fallback method
+ */
+function kernel_or_user_string_quoted_utf32:string (addr:long) {
+ try { return string_quoted(kernel_string_utf32(addr)) } catch { return string_quoted(user_string_utf32(addr)) }
+}
/**
* sfunction kernel_string_utf16 - Retrieves UTF-16 string from kernel memory
@@ -242,6 +263,17 @@ function kernel_string_quoted_utf16:string (addr:long) {
try { return string_quoted(kernel_string_utf16(addr)) } catch { return sprintf("0x%x", addr) }
}
+/**
+ * sfunction kernel_or_user_string_quoted_utf16 - Retrieves and quotes UTF-16 string from kernel or user memory
+ *
+ * @addr: the kernel or user memory address to retrieve the string from
+ *
+ * Similar to kernel_string_quoted_utf16 except uses user memory as a fallback method
+ */
+function kernel_or_user_string_quoted_utf16:string (addr:long) {
+ try { return string_quoted(kernel_string_utf16(addr)) } catch { return string_quoted(user_string_utf16(addr)) }
+}
+
/**
* sfunction kernel_long - Retrieves a long value stored in kernel memory
diff --git a/tapsets.cxx b/tapsets.cxx
index 8fc5146e2..8b8f1cad5 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -3757,7 +3757,7 @@ dwarf_pretty_print::print_chars (Dwarf_Die* start_type, target_symbol* e,
return false;
}
- string function = userspace_p ? "user_string_quoted" : "kernel_string_quoted";
+ string function = userspace_p ? "user_string_quoted" : "kernel_or_user_string_quoted";
Dwarf_Word size = (Dwarf_Word) -1;
dwarf_formudata (dwarf_attr_integrate (&type, DW_AT_byte_size, &attr), &size);
switch (size)

View File

@ -1,167 +0,0 @@
diff --git a/tapset/linux/ioscheduler.stp b/tapset/linux/ioscheduler.stp
index abb24dac9..3096a73ea 100644
--- a/tapset/linux/ioscheduler.stp
+++ b/tapset/linux/ioscheduler.stp
@@ -11,7 +11,9 @@
// </tapsetdescription>
%{
#include <linux/blkdev.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,14,0)
#include <linux/elevator.h>
+#endif
%}
/**
@@ -76,7 +78,8 @@ probe ioscheduler.elv_completed_request
elevator_name = kernel_string(
@choose_defined($q->elevator->type->elevator_name,
@choose_defined($q->elevator->elevator_type->elevator_name,
- $q->elevator->elevator_name)), "")
+ @choose_defined($q->elevator->elevator_name,
+ 0))), "")
if($rq == 0) {
disk_major = -1
disk_minor = -1
@@ -114,7 +117,8 @@ probe ioscheduler.elv_add_request.kp =
elevator_name = kernel_string(
@choose_defined($q->elevator->type->elevator_name,
@choose_defined($q->elevator->elevator_type->elevator_name,
- $q->elevator->elevator_name)), "")
+ @choose_defined($q->elevator->elevator_name,
+ 0))), "")
q = $q
if($rq == 0) {
disk_major = -1
@@ -152,7 +156,8 @@ probe ioscheduler.elv_add_request.tp = kernel.trace("block_rq_insert") ?
elevator_name = kernel_string(
@choose_defined($rq->q->elevator->type->elevator_name,
@choose_defined($rq->q->elevator->elevator_type->elevator_name,
- $rq->q->elevator->elevator_name)), "")
+ @choose_defined($rq->q->elevator->elevator_name,
+ 0))), "")
rq = $rq
if ($rq == 0 || $rq->rq_disk ==0) {
@@ -201,7 +206,8 @@ probe ioscheduler_trace.elv_completed_request
elevator_name = kernel_string(
@choose_defined($rq->q->elevator->type->elevator_name,
@choose_defined($rq->q->elevator->elevator_type->elevator_name,
- $rq->q->elevator->elevator_name)), "")
+ @choose_defined($rq->q->elevator->elevator_name,
+ 0))), "")
rq = $rq
@@ -237,7 +243,8 @@ probe ioscheduler_trace.elv_issue_request
elevator_name = kernel_string(
@choose_defined($rq->q->elevator->type->elevator_name,
@choose_defined($rq->q->elevator->elevator_type->elevator_name,
- $rq->q->elevator->elevator_name)), "")
+ @choose_defined($rq->q->elevator->elevator_name,
+ 0))), "")
rq = $rq
if ($rq == 0 || $rq->rq_disk ==0) {
@@ -272,7 +279,8 @@ probe ioscheduler_trace.elv_requeue_request
elevator_name = kernel_string(
@choose_defined($rq->q->elevator->type->elevator_name,
@choose_defined($rq->q->elevator->elevator_type->elevator_name,
- $rq->q->elevator->elevator_name)), "")
+ @choose_defined($rq->q->elevator->elevator_name,
+ 0))), "")
rq = $rq
if ($rq == 0 || $rq->rq_disk ==0) {
@@ -306,7 +314,8 @@ probe ioscheduler_trace.elv_abort_request
elevator_name = kernel_string(
@choose_defined($rq->q->elevator->type->elevator_name,
@choose_defined($rq->q->elevator->elevator_type->elevator_name,
- $rq->q->elevator->elevator_name)), "")
+ @choose_defined($rq->q->elevator->elevator_name,
+ 0))), "")
rq = $rq
if ($rq == 0 || $rq->rq_disk ==0) {
@@ -364,6 +373,9 @@ probe ioscheduler_trace.unplug_timer = kernel.trace("block_unplug_timer") ?
function disk_major_from_request:long(var_q:long)
%{ /* pure */
+#ifndef _ELEVATOR_H
+ STAP_ERROR ("unsupported (PR28634)");
+#else
struct request_queue *q = (struct request_queue *)((uintptr_t)STAP_ARG_var_q);
/* We need to make sure there isn't a deref hazard here when
@@ -382,10 +394,14 @@ function disk_major_from_request:long(var_q:long)
STAP_RETVALUE = kread(&(rq_disk->major));
}
CATCH_DEREF_FAULT();
+#endif
%}
function disk_minor_from_request:long(var_q:long)
%{ /* pure */
+#ifndef _ELEVATOR_H
+ STAP_ERROR ("unsupported (PR28634)");
+#else
struct request_queue *q = (struct request_queue *)((uintptr_t)STAP_ARG_var_q);
/* We need to make sure there isn't a deref hazard here when
@@ -404,4 +420,6 @@ function disk_minor_from_request:long(var_q:long)
STAP_RETVALUE = kread(&(rq_disk->first_minor));
}
CATCH_DEREF_FAULT();
+#endif
%}
+
diff --git a/testsuite/systemtap.examples/io/iostat-scsi.stp b/testsuite/systemtap.examples/io/iostat-scsi.stp
index 6b1bf19ea..3faf32fe9 100755
--- a/testsuite/systemtap.examples/io/iostat-scsi.stp
+++ b/testsuite/systemtap.examples/io/iostat-scsi.stp
@@ -26,6 +26,7 @@ probe module("sd_mod").function("sd_init_command") !,
%(kernel_v >= "2.6.31" %?
%{
#include <linux/blkdev.h>
+#include <linux/blk-mq.h>
%}
function get_nr_sectors:long(rq:long)
@@ -47,13 +48,24 @@ probe sd_prep_fn = module("sd_mod").function("sd_prep_fn") !,
_cmd_flags = $rq->cmd_flags
}
+function scsi_cmd_to_rq(scmd) {
+ return scmd - @cast_module_sizeof("kernel", "request")
+}
+
probe sd_init_command = module("sd_mod").function("sd_init_command") !,
kernel.function("sd_init_command")
{
- device = kernel_string(@choose_defined($cmd, $SCpnt)->request->rq_disk->disk_name)
- sector_size = @choose_defined($cmd, $SCpnt)->device->sector_size
- nr_sectors = get_nr_sectors(@choose_defined($cmd, $SCpnt)->request)
- _cmd_flags = @choose_defined($cmd, $SCpnt)->request->cmd_flags
+ 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)
+ 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)
+ 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
+ }
}
probe sd_prep_fn !, sd_init_command
@@ -71,7 +83,8 @@ probe sd_prep_fn !, sd_init_command
probe module("st").function("st_do_scsi").call !,
kernel.function("st_do_scsi").call
{
- device = kernel_string($STp->disk->disk_name)
+ # Kernel commit 45938335d0a9773d65a82a7ca722bb76e4b997a8
+ device = kernel_string(@choose_defined($STp->disk->disk_name, $STp->name))
devices[device] = 1
if ($direction)
writes[device] <<< $bytes

View File

@ -1,179 +0,0 @@
diff --git a/analysis.cxx b/analysis.cxx
index a7a579e..d0d6a4f 100644
--- a/analysis.cxx
+++ b/analysis.cxx
@@ -7,6 +7,7 @@
// later version.
#include "config.h"
+#include "session.h"
#ifdef HAVE_DYNINST
@@ -46,6 +47,8 @@ analysis::analysis(string name)
char *name_str = strdup(name.c_str());
sts = NULL;
co = NULL;
+ SymtabAPI::Symtab *symTab;
+ bool isParsable;
// Use cached information if available
if (cached_info.find(name) != cached_info.end()) {
@@ -56,6 +59,9 @@ analysis::analysis(string name)
// Not not seen before
// Create a new binary code object from the filename argument
+ isParsable = SymtabAPI::Symtab::openFile(symTab, name_str);
+ if(!isParsable) goto cleanup;
+
sts = new SymtabCodeSource(name_str);
if(!sts) goto cleanup;
@@ -143,39 +149,40 @@ static const MachRegister dyninst_register_64[] = {
static const MachRegister dyninst_register_32[1]; // No 32-bit support
#elif defined(__powerpc__)
+/* For ppc64 still use the ppc32 register names */
static const MachRegister dyninst_register_64[] = {
- ppc64::r0,
- ppc64::r1,
- ppc64::r2,
- ppc64::r3,
- ppc64::r4,
- ppc64::r5,
- ppc64::r6,
- ppc64::r7,
- ppc64::r8,
- ppc64::r9,
- ppc64::r10,
- ppc64::r11,
- ppc64::r12,
- ppc64::r13,
- ppc64::r14,
- ppc64::r15,
- ppc64::r16,
- ppc64::r17,
- ppc64::r18,
- ppc64::r19,
- ppc64::r20,
- ppc64::r21,
- ppc64::r22,
- ppc64::r23,
- ppc64::r24,
- ppc64::r25,
- ppc64::r26,
- ppc64::r27,
- ppc64::r28,
- ppc64::r29,
- ppc64::r30,
- ppc64::r31
+ ppc32::r0,
+ ppc32::r1,
+ ppc32::r2,
+ ppc32::r3,
+ ppc32::r4,
+ ppc32::r5,
+ ppc32::r6,
+ ppc32::r7,
+ ppc32::r8,
+ ppc32::r9,
+ ppc32::r10,
+ ppc32::r11,
+ ppc32::r12,
+ ppc32::r13,
+ ppc32::r14,
+ ppc32::r15,
+ ppc32::r16,
+ ppc32::r17,
+ ppc32::r18,
+ ppc32::r19,
+ ppc32::r20,
+ ppc32::r21,
+ ppc32::r22,
+ ppc32::r23,
+ ppc32::r24,
+ ppc32::r25,
+ ppc32::r26,
+ ppc32::r27,
+ ppc32::r28,
+ ppc32::r29,
+ ppc32::r30,
+ ppc32::r31
};
static const MachRegister dyninst_register_32[] = {
@@ -218,14 +225,26 @@ static const MachRegister dyninst_register_32[] = {
typedef map<string, LivenessAnalyzer*> precomputed_liveness;
static precomputed_liveness cached_liveness;
-int liveness(string executable,
+int liveness(systemtap_session& s,
+ target_symbol *e,
+ string executable,
Dwarf_Addr addr,
location_context ctx)
{
+ try{
+ // Doing this inside a try/catch because dyninst may require
+ // too much memory to parse the binary.
// should cache the executable names like the other things
analysis func_to_analyze(executable);
MachRegister r;
+ // Punt if unsuccessful in parsing binary
+ if (!func_to_analyze.co){
+ s.print_warning(_F("liveness analysis unable to parse binary %s",
+ executable.c_str()), e->tok);
+ return 0;
+ }
+
// Determine whether 32-bit or 64-bit code as the register names are different in dyninst
int reg_width = func_to_analyze.co->cs()->getAddressWidth();
@@ -282,6 +301,11 @@ int liveness(string executable,
bool used;
la->query(iloc, LivenessAnalyzer::Before, r, used);
return (used ? 1 : -1);
+ } catch (std::bad_alloc & ex){
+ s.print_warning(_F("unable to allocate memory for liveness analysis of %s",
+ executable.c_str()), e->tok);
+ return 0;
+ }
}
#endif // HAVE_DYNINST
diff --git a/analysis.h b/analysis.h
index 9b6d115..6bea675 100644
--- a/analysis.h
+++ b/analysis.h
@@ -17,13 +17,15 @@
#ifdef HAVE_DYNINST
-extern int liveness(std::string executable,
+extern int liveness(systemtap_session& s,
+ target_symbol *e,
+ std::string executable,
Dwarf_Addr location,
location_context ctx);
#else
-#define liveness(executable, location, var) (0)
+#define liveness(session, target, executable, location, var) (0)
#endif // HAVE_DYNINST
#endif // ANALYSIS_H
diff --git a/tapsets.cxx b/tapsets.cxx
index 60794bb..8fc5146 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -4732,7 +4732,7 @@ dwarf_var_expanding_visitor::visit_target_symbol (target_symbol *e)
// Now that have location information check if change to variable has any effect
if (lvalue) {
- if (liveness(q.dw.mod_info->elf_path, addr, ctx) < 0) {
+ if (liveness(q.sess, e, q.dw.mod_info->elf_path, addr, ctx) < 0) {
q.sess.print_warning(_F("write at %p will have no effect",
(void *)addr), e->tok);
}

24
SOURCES/rhbz2223733.patch Normal file
View 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
View 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.

View File

@ -1,154 +0,0 @@
commit ecab2afea46099b4e7dfd551462689224afdbe3a
Author: Stan Cox <scox@redhat.com>
Date: Wed Dec 1 16:19:22 2021 -0500
Handle user supplied sdt probe argument template
User supplied templates were erroneously removed by commit eaa15b047,
which complicated the template expansion. To do the above the
expansion of STAP_PROBE_ASM(provider, fooprobe,
STAP_PROBE_ASM_TEMPLATE(3)) adds an unused argument:
STAP_PROBE_ASM(provider, fooprobe, /*template expansion*/ "%[SDT..]..",
"use _SDT_ASM_TEMPLATE") A supplied template
STAP_PROBE_ASM(provider, fooprobe, "4@%rdx 8@%rax") is left alone. If
the varargs has 2 args (the fake "use ..") then macro expansion
inserts the expanded string, otherwise "4@.." becomes an ascii op.
diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h
index 28d236d91..24d5e01c3 100644
--- a/includes/sys/sdt.h
+++ b/includes/sys/sdt.h
@@ -290,7 +290,7 @@ __extension__ extern unsigned long long __sdt_unsp;
_SDT_ASM_1(.purgem _SDT_TYPE_) \
_SDT_ASM_1(.purgem _SDT_TYPE)
-#define _SDT_ASM_BODY(provider, name, pack_args, args) \
+#define _SDT_ASM_BODY(provider, name, pack_args, args, ...) \
_SDT_DEF_MACROS \
_SDT_ASM_1(990: _SDT_NOP) \
_SDT_ASM_3( .pushsection .note.stapsdt,_SDT_ASM_AUTOGROUP,"note") \
@@ -417,9 +417,9 @@ __extension__ extern unsigned long long __sdt_unsp;
counted, so we don't have to worry about the behavior of macros
called without any arguments. */
-#ifdef SDT_USE_VARIADIC
#define _SDT_NARG(...) __SDT_NARG(__VA_ARGS__, 12,11,10,9,8,7,6,5,4,3,2,1,0)
#define __SDT_NARG(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12, N, ...) N
+#ifdef SDT_USE_VARIADIC
#define _SDT_PROBE_N(provider, name, N, ...) \
_SDT_PROBE(provider, name, N, (__VA_ARGS__))
#define STAP_PROBEV(provider, name, ...) \
@@ -468,9 +468,15 @@ __extension__ extern unsigned long long __sdt_unsp;
Note that these can use operand templates like %0 or %[name],
and likewise they must write %%reg for a literal operand of %reg. */
+#define _SDT_ASM_BODY_1(p,n,...) _SDT_ASM_BODY(p,n,_SDT_ASM_SUBSTR,(__VA_ARGS__))
+#define _SDT_ASM_BODY_2(p,n,...) _SDT_ASM_BODY(p,n,/*_SDT_ASM_STRING */,__VA_ARGS__)
+#define _SDT_ASM_BODY_N2(p,n,no,...) _SDT_ASM_BODY_ ## no(p,n,__VA_ARGS__)
+#define _SDT_ASM_BODY_N1(p,n,no,...) _SDT_ASM_BODY_N2(p,n,no,__VA_ARGS__)
+#define _SDT_ASM_BODY_N(p,n,...) _SDT_ASM_BODY_N1(p,n,_SDT_NARG(0, __VA_ARGS__),__VA_ARGS__)
+
#if __STDC_VERSION__ >= 199901L
# define STAP_PROBE_ASM(provider, name, ...) \
- _SDT_ASM_BODY(provider, name, /*_SDT_ASM_STRING */, __VA_ARGS__) \
+ _SDT_ASM_BODY_N(provider, name, __VA_ARGS__) \
_SDT_ASM_BASE
# define STAP_PROBE_ASM_OPERANDS(n, ...) _SDT_ASM_OPERANDS_##n(__VA_ARGS__)
#else
@@ -478,7 +484,7 @@ __extension__ extern unsigned long long __sdt_unsp;
_SDT_ASM_BODY(provider, name, /* _SDT_ASM_STRING */, (args)) \
_SDT_ASM_BASE
#endif
-#define STAP_PROBE_ASM_TEMPLATE(n) _SDT_ASM_TEMPLATE_##n
+#define STAP_PROBE_ASM_TEMPLATE(n) _SDT_ASM_TEMPLATE_##n,"use _SDT_ASM_TEMPLATE_"
/* DTrace compatible macro names. */
diff --git a/testsuite/systemtap.base/sdt_casm.c b/testsuite/systemtap.base/sdt_casm.c
index 1cff23c5f..9b357086c 100644
--- a/testsuite/systemtap.base/sdt_casm.c
+++ b/testsuite/systemtap.base/sdt_casm.c
@@ -3,6 +3,7 @@
int main()
{
int x = 42;
+ int y = 43;
__asm__ __volatile__ (
STAP_PROBE_ASM(testsuite, probe0, STAP_PROBE_ASM_TEMPLATE(0))
);
@@ -10,5 +11,9 @@ int main()
STAP_PROBE_ASM(testsuite, probe1, STAP_PROBE_ASM_TEMPLATE(1))
:: STAP_PROBE_ASM_OPERANDS(1, x)
);
+ // Create a template to test explicit template support
+ __asm__ __volatile__ (
+ STAP_PROBE_ASM(testsuite, probe2, -4@%[ARG1] -4@%[ARG2])
+ :: [ARG1] "rm" (x), [ARG2] "rm" (y));
return 0;
}
diff --git a/testsuite/systemtap.base/sdt_casm.exp b/testsuite/systemtap.base/sdt_casm.exp
index 5791cb2b9..0cd1cb517 100644
--- a/testsuite/systemtap.base/sdt_casm.exp
+++ b/testsuite/systemtap.base/sdt_casm.exp
@@ -18,7 +18,8 @@ proc cleanup_handler { verbose } {
set script $srcdir/$subdir/$test.stp
set ::result_string {PASS: probe0
-PASS: probe1}
+PASS: probe1
+PASS: probe2}
set asm_flags [sdt_includes]
set asm_flags "$asm_flags additional_flags=-std=c99"
diff --git a/testsuite/systemtap.base/sdt_casm.stp b/testsuite/systemtap.base/sdt_casm.stp
index 4f2539c93..530a79175 100644
--- a/testsuite/systemtap.base/sdt_casm.stp
+++ b/testsuite/systemtap.base/sdt_casm.stp
@@ -10,3 +10,11 @@ probe process.mark("probe1")
else
printf("FAIL: %s (%d != 42)\n", $$name, $arg1)
}
+
+probe process.mark("probe2")
+{
+ if ($arg1 == 42 && $arg2 == 43)
+ printf("PASS: %s\n", $$name)
+ else
+ printf("FAIL: %s (%d/%d != 42/43)\n", $$name, $arg1, $arg2)
+}
commit 209b5a19c (HEAD -> master, origin/master, origin/HEAD)
Author: Stan Cox <scox@redhat.com>
Date: Tue Dec 7 09:55:01 2021 -0500
sys/sdt.h fp constraints: aarch64, s390
Remove float constraints as per commit 1d3653936 but for aarch64 and s390.
commit 1d3653936 (HEAD -> master, origin/master, origin/HEAD)
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Mon Dec 6 12:06:06 2021 -0500
sys/sdt.h fp constraints cont'd, x86-64 edition
It appears that various versions of gcc continue to show signs of
confusion at our newly offered asm-operand alternatives for floating
point sdt.h marker parameters.
e.g., https://bugzilla.redhat.com/show_bug.cgi?id=2028798
We may need to restore previous constraints broadly, forcing the
compiler to plop floating point parameters into integer storage.
--- a/includes/sys/sdt.h
+++ b/includes/sys/sdt.h
@@ -102,9 +102,5 @@
# define STAP_SDT_ARG_CONSTRAINT nZr
# elif defined __x86_64__
-# define STAP_SDT_ARG_CONSTRAINT norfxy
-# elif defined __aarch64__
-# define STAP_SDT_ARG_CONSTRAINT norw
-# elif defined __s390__ || defined __s390x__
-# define STAP_SDT_ARG_CONSTRAINT norf
+# define STAP_SDT_ARG_CONSTRAINT norx
# else
# define STAP_SDT_ARG_CONSTRAINT nor

View File

@ -20,7 +20,11 @@
%{!?with_bpf: %global with_bpf 0%{?fedora} >= 22 || 0%{?rhel} >= 8}
%{!?with_systemd: %global with_systemd 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}
%endif
%{!?with_debuginfod: %global with_debuginfod 0%{?fedora} >= 25 || 0%{?rhel} >= 7}
%{!?with_virthost: %global with_virthost 0%{?fedora} >= 19 || 0%{?rhel} >= 7}
%{!?with_virtguest: %global with_virtguest 1}
@ -117,8 +121,9 @@ m stapdev stapdev
Name: systemtap
Version: 4.6
Release: 11%{?release_override}%{?dist}
# PRERELEASE
Version: 4.9
Release: 3%{?release_override}%{?dist}
# for version, see also configure.ac
@ -137,6 +142,7 @@ Release: 11%{?release_override}%{?dist}
# systemtap-runtime-virtguest udev rules, init scripts/systemd service, req:-runtime
# systemtap-runtime-python2 HelperSDT python2 module, req:-runtime
# systemtap-runtime-python3 HelperSDT python3 module, req:-runtime
# systemtap-jupyter /usr/bin/stap-jupyter-* interactive-notebook req:systemtap
#
# Typical scenarios:
#
@ -154,13 +160,11 @@ License: GPLv2+
URL: http://sourceware.org/systemtap/
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
Patch1: rhbz2025054python3.patch
Patch2: rhbz1972798.patch
Patch3: sdt-asm-glibc.patch
Patch4: rhbz2041526.patch
Patch5: rhbz2027683.patch
Patch6: rhbz2047256.patch
Patch7: rhbz2039207.patch
Patch1: rhbz2223733.patch
Patch2: rhbz2223735.patch
Patch3: pr29108.patch
Patch4: pr30749.patch
# Build*
BuildRequires: make
@ -240,9 +244,6 @@ BuildRequires: python3
BuildRequires: python3-devel
BuildRequires: python3-setuptools
%endif
%if %{with_specific_python}
BuildRequires: /usr/bin/pathfix.py
%endif
%if %{with_httpd}
BuildRequires: libmicrohttpd-devel
@ -577,18 +578,26 @@ This package installs the services necessary on a virtual machine for a
systemtap-runtime-virthost machine to execute systemtap scripts.
%endif
%if %{with_python3} && %{with_monitor}
%package jupyter
Summary: ISystemtap jupyter kernel and examples
License: GPLv2+
URL: http://sourceware.org/systemtap/
Requires: systemtap = %{version}-%{release}
%description jupyter
This package includes files needed to build and run
the interactive systemtap Jupyter kernel, either locally
or within a container.
%endif
# ------------------------------------------------------------------------
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch -P1 -p1
%patch -P2 -p1
%patch -P3 -p1
%patch -P4 -p1
%build
@ -692,6 +701,11 @@ make %{?_smp_mflags} V=1
%install
make DESTDIR=$RPM_BUILD_ROOT install
%if ! (%{with_python3})
rm -v $RPM_BUILD_ROOT%{_bindir}/stap-profile-annotate
%endif
%find_lang %{name}
for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do
dir=$(echo $dir | sed -e "s|^$RPM_BUILD_ROOT||")
@ -756,6 +770,9 @@ install -m 644 initscript/logrotate.stap-server $RPM_BUILD_ROOT%{_sysconfdir}/lo
%if %{with_systemd}
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
touch $RPM_BUILD_ROOT%{_unitdir}/systemtap.service
# RHBZ2070857
mkdir -p $RPM_BUILD_ROOT%{_presetdir}
echo 'enable systemtap.service' > $RPM_BUILD_ROOT%{_presetdir}/42-systemtap.preset
install -m 644 initscript/systemtap.service $RPM_BUILD_ROOT%{_unitdir}/systemtap.service
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{_sbindir}/systemtap-service
@ -826,7 +843,7 @@ done
%if %{with_specific_python}
# 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
%pre runtime
@ -881,7 +898,8 @@ if [ ! -f ~stap-server/.systemtap/rc ]; then
numcpu=`/usr/bin/getconf _NPROCESSORS_ONLN`
if [ -z "$numcpu" -o "$numcpu" -lt 1 ]; then numcpu=1; fi
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
fi
@ -937,7 +955,8 @@ exit 0
%post initscript
%if %{with_systemd}
/bin/systemctl enable systemtap.service >/dev/null 2>&1 || :
# RHBZ2070857 - use systemd presets instead
# /bin/systemctl enable systemtap.service >/dev/null 2>&1 || :
%else
/sbin/chkconfig --add systemtap
%endif
@ -1090,6 +1109,9 @@ exit 0
%files devel -f systemtap.lang
%{_bindir}/stap
%{_bindir}/stap-prep
%if %{with_python3}
%{_bindir}/stap-profile-annotate
%endif
%{_bindir}/stap-report
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/runtime
@ -1190,6 +1212,7 @@ exit 0
%files initscript
%if %{with_systemd}
%{_presetdir}/42-systemtap.preset
%{_unitdir}/systemtap.service
%{_sbindir}/systemtap-service
%else
@ -1276,6 +1299,15 @@ exit 0
%{_sbindir}/stap-exporter
%endif
%if %{with_python3} && %{with_monitor}
%files jupyter
%{_bindir}/stap-jupyter-container
%{_bindir}/stap-jupyter-install
%{_mandir}/man1/stap-jupyter.1*
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/interactive-notebook
%endif
# ------------------------------------------------------------------------
# Future new-release entries should be of the form
@ -1285,78 +1317,232 @@ exit 0
# PRERELEASE
%changelog
* Wed Feb 2 2022 Stan Cox <scox@redhat.com> - 4.6-11
- rhbz2039207: Attempt userspace string access if kernel access fails
* Mon Aug 14 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-3
- rhbz2231619
- rhbz2095359
* Tue Feb 1 2022 Martin Cermak <mcermak@redhat.com> - 4.6-10
- rhbz2047256: [ppc64le] Assertion `index >= 0' failed
* Tue Jul 18 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-2
- rhbz2223733 = rhbz2211288
- rhbz2223735 = rhbz2223739
* Fri Jan 21 2022 Martin Cermak <mcermak@redhat.com> - 4.6-9
- rhbz2027683: python tapset regression
- rhbz2027683: systemtap.examples/io/iostat-scsi.stp PR28633
* Fri Apr 28 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Mon Jan 17 2022 Martin Cermak <mcermak@redhat.com> - 4.6-6
- rhbz2041526/pr28634: move elevator.h to block/
* Fri Dec 23 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
- rhbz2156092 = rhbz1997192
- rhbz2145241 = rhbz2145242
- rhbz2156093 = rhbz2149223
- rhbz2156095 = rhbz2149666
- rhbz2156094 = rhbz2154430
* Tue Dec 07 2021 Stan Cox <scox@redhat.com> - 4.6.5
- sys/sdt.h remove aarch64 and s390 float constraints
* Mon Dec 06 2021 Stan Cox <scox@redhat.com> - 4.6.4
- sys/sdt.h remove float constraints that may cause gcc reload issues.
* Thu Dec 02 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6.3
- rhbz2972798 - nfs tapset tweaks
- sys/sdt.h fixes for glibc ftbfs
* Thu Nov 25 2021 Martin Cermak <mcermak@redhat.com> - 4.6.2
- rhbz2012907: Fix use of sysuser.d/* for user/group management
* Fri Nov 19 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6-1
* Thu Nov 03 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-1
- Upstream release.
* Thu Sep 09 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-8
- rhbz1985124: Kernel 5.14 compatibility omnibus cont'd.
* 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
* Thu Aug 12 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-7
- rhbz1985124: Kernel 5.14 compatibility omnibus.
* Tue Dec 07 2021 Stan Cox <scox@redhat.com> - 4.6.4
- sys/sdt.h remove aarch64 and s390 float constraints
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 4.5-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Dec 06 2021 Stan Cox <scox@redhat.com> - 4.6.3
- sys/sdt.h remove float constraints that may cause gcc reload issues.
* Mon Jul 26 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-3
- rhbz1982908: Import hardening c*flags from specs/rhel standards
* Thu Dec 02 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6.2
- sys/sdt.h fixes for glibc ftbfs
* Tue May 18 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-2
- Respin against newer dyninst.
* 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.
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 4.5-0.202102101545git8d5e0abc542c
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* 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
- Upstream release.
* Thu Jun 11 2020 Frank Ch. Eigler <fche@redhat.com> - 4.3-1
- Upstream release.
* Wed Aug 12 2020 Martin Cermak <mcermak@redhat.com> - 4.3-4
- rhbz1868095: Refix including PR26379.
* Mon Nov 18 2019 Sagar Patel <sapatel@redhat.com> - 4.2-1
- Upstream release.
* Wed Aug 12 2020 Martin Cermak <mcermak@redhat.com> - 4.3-3
- 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
- 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
- Upstream release.
* Thu Jun 07 2018 Frank Ch. Eigler <fche@redhat.com> - 3.3-1
- Upstream release.
* Thu Aug 30 2018 Frank Ch. Eigler <fche@redhat.com> - 4.0-0.20180830git
- 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
- 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
- Upstream release.
@ -1376,7 +1562,7 @@ exit 0
- Upstream release.
* 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
- Upstream release.