Compare commits
No commits in common. "imports/c9-beta/systemtap-4.6-11.el9" and "c8" have entirely different histories.
imports/c9
...
c8
|
@ -1 +1 @@
|
|||
SOURCES/systemtap-4.6.tar.gz
|
||||
SOURCES/systemtap-4.9.tar.gz
|
||||
|
|
|
@ -1 +1 @@
|
|||
ecc45371b378fc3824a5547b02c030b4123d6769 SOURCES/systemtap-4.6.tar.gz
|
||||
7ba2ad579a5ba66ccfd36ad6df0896c9e136f9e9 SOURCES/systemtap-4.9.tar.gz
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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)
|
||||
{
|
|
@ -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)
|
|
@ -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.])
|
|
@ -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;
|
||||
+}
|
|
@ -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)
|
|
@ -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
|
|
@ -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);
|
||||
}
|
|
@ -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"
|
|
@ -0,0 +1,64 @@
|
|||
commit ab0c5c25509600b7c9cecc9e10baebc984082b50
|
||||
gpg: Signature made Fri 12 May 2023 11:18:18 AM EDT
|
||||
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||
Date: Fri May 12 11:13:45 2023 -0400
|
||||
|
||||
PR30442: failing optional statement probes should not trigger pass2 exceptions
|
||||
|
||||
In tapsets.cxx, query_cu() and query_module() aggressively caught &
|
||||
sess-print_error'd semantic_errors from subsidiary call sites. They
|
||||
are unaware of whether the probe in question is being resolved within
|
||||
an optional (? or !) context. Instead of this, they now simply let
|
||||
the exceptions propagate out to derive_probes() or similar, which does
|
||||
know whether exceptions are errors in that context. That means
|
||||
exceptions can propagate through elfutils iteration machinery too,
|
||||
perhaps risking C level memory leaks, but so be it.
|
||||
|
||||
This fix goes well beyond statement probes per se, but hand-testing
|
||||
and the testsuite appear not to show regressions related to this.
|
||||
|
||||
Added semok/badstmt.exp to test.
|
||||
|
||||
diff --git a/tapsets.cxx b/tapsets.cxx
|
||||
index 859160bc5..7b7107371 100644
|
||||
--- a/tapsets.cxx
|
||||
+++ b/tapsets.cxx
|
||||
@@ -2453,8 +2453,9 @@ query_cu (Dwarf_Die * cudie, dwarf_query * q)
|
||||
}
|
||||
catch (const semantic_error& e)
|
||||
{
|
||||
- q->sess.print_error (e);
|
||||
- return DWARF_CB_ABORT;
|
||||
+ // q->sess.print_error (e);
|
||||
+ throw;
|
||||
+ // return DWARF_CB_ABORT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2696,8 +2697,9 @@ query_module (Dwfl_Module *mod,
|
||||
}
|
||||
catch (const semantic_error& e)
|
||||
{
|
||||
- q->sess.print_error (e);
|
||||
- return DWARF_CB_ABORT;
|
||||
+ // q->sess.print_error (e);
|
||||
+ // return DWARF_CB_ABORT;
|
||||
+ throw;
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/testsuite/semok/stmtbad.stp b/testsuite/semok/stmtbad.stp
|
||||
new file mode 100755
|
||||
index 000000000..06780790a
|
||||
--- /dev/null
|
||||
+++ b/testsuite/semok/stmtbad.stp
|
||||
@@ -0,0 +1,7 @@
|
||||
+#! /bin/sh
|
||||
+
|
||||
+exec stap -v -p2 -e 'probe oneshot {log("nothing") }
|
||||
+ probe process.statement("main@*:1")? { log("yo") }' -c stap
|
||||
+
|
||||
+# The optional misaddressed statement probe should let stap still
|
||||
+# succeed with the oneshot probe.
|
|
@ -1,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
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue