Compare commits

...

No commits in common. "c8" and "c10s" have entirely different histories.
c8 ... c10s

15 changed files with 1026 additions and 2323 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

70
.gitignore vendored
View File

@ -1 +1,69 @@
SOURCES/systemtap-4.9.tar.gz
/systemtap-3.1.tar.gz
/systemtap-3.2-0.20170321git272146660f54.tar.gz
/systemtap-3.2-0.20170406git83d186dc7f5c.tar.gz
/systemtap-3.2-0.20170410gitcbf2583808d6.tar.gz
/systemtap-3.2-0.20170512gitc67d8f274b21.tar.gz
/systemtap-3.2.tar.gz
/systemtap-3.3-0.20180222git5ef0c24456e3.tar.gz
/systemtap-3.3-0.20180315gitc2585f2b58cd.tar.gz
/systemtap-3.3-0.20180420gitd4a446c.tar.gz
/systemtap-3.3-0.20180508git9c6ac6cda49e.tar.gz
/systemtap-3.3.tar.gz
/systemtap-4.0-0.20180810git.tar.gz
/systemtap-4.0-0.20180906git37598c4fee7c.tar.gz
/systemtap-4.0-0.20180914gitc51d4e55d285.tar.gz
/systemtap-4.0-0.20180914gitc1befcceae01.tar.gz
/systemtap-4.0-0.20180914git11a0a7aea387.tar.gz
/systemtap-4.0-0.20180914gitfe4e14f4af16.tar.gz
/systemtap-4.0-0.20180914gitfe4e14f4af16.1.tar.gz
/systemtap-4.0-0.20181003git4ad1e11de831.tar.gz
/systemtap-4.0.tar.gz
/systemtap-4.1-0.20181126gitf082df49dd91.tar.gz
/systemtap-4.1-0.20181126git47ce37a149b6.tar.gz
/systemtap-4.1-0.20181203gitec3b46eb9b19.tar.gz
/systemtap-4.1-0.20181204git891810c246d6.tar.gz
/systemtap-4.1-0.20190123gitc8084763b75f.tar.gz
/systemtap-4.1-0.20190125git905865da1024.tar.gz
/systemtap-4.1-0.20190207git4e76869512d2.tar.gz
/systemtap-4.1-0.20190307gitf7fb9c9182dc.tar.gz
/systemtap-4.1-0.20190308gitb3627d9aa037.tar.gz
/systemtap-4.1-0.20190327git2ede4cecb20c.tar.gz
/systemtap-4.1-0.20190502git446e7c358247.tar.gz
/systemtap-4.1.tar.gz
/systemtap-4.2-0.20190513git8b868f3dd030.tar.gz
/systemtap-4.2-0.20190613git2d77f531a5d1.tar.gz
/systemtap-4.2-0.20190618git47c3f6c60174.tar.gz
/systemtap-4.2-0.20190807gitebfc300ec2ad.tar.gz
/systemtap-4.2-0.20190827git8ffab23ff.tar.gz
/systemtap-4.2.tar.gz
/systemtap-4.3-0.20200112gitb1e6a6645bba.tar.gz
/systemtap-4.3-0.20200203git6c0b74f5910a.tar.gz
/systemtap-4.3-0.20200211git91ffb97ad335.tar.gz
/systemtap-4.3-0.20200529git6d50a5cadb64.tar.gz
/systemtap-4.3.tar.gz
/systemtap-4.4-0.20200714git8212024da2ae.tar.gz
/systemtap-4.4-0.20200714gite5a63d9c000a.tar.gz
/systemtap-4.4-0.20200715gitce0fa621eb35.tar.gz
/systemtap-4.4-0.20200731git87344e948606.tar.gz
/systemtap-4.4-0.20200805git82b8e1a07.tar.gz
/systemtap-4.4-0.20200922git05179173e71c.tar.gz
/systemtap-4.4.tar.gz
/systemtap-4.4-0.20201203gitf02f08bc6eff.tar.gz
/systemtap-4.5-0.20201203git963c215e781e.tar.gz
/systemtap-4.5-0.20201204git0d80048e02ec.tar.gz
/systemtap-4.5-0.20201210gitd86b64029598.tar.gz
/systemtap-4.5-0.20210105git6cb54128e005.tar.gz
/systemtap-4.5-0.20210107gita4d01e48d435.tar.gz
/systemtap-4.5-0.20210128gita790dc64a9d8.tar.gz
/systemtap-4.5-0.20210129gitea81249b90b9.tar.gz
/systemtap-4.5-0.202101291559git9e1a0f5703ad.tar.gz
/systemtap-4.5-0.202102101544git8d5e0abc542c.tar.gz
/systemtap-4.5.tar.gz
/systemtap-4.6.tar.gz
/systemtap-4.7.tar.gz
/systemtap-4.8.tar.gz
/systemtap-4.9.tar.gz
/systemtap-5.0.tar.gz
/systemtap-5.1.tar.gz
/systemtap-5.2.tar.gz
/systemtap-5.3.tar.gz

View File

@ -1 +0,0 @@
7ba2ad579a5ba66ccfd36ad6df0896c9e136f9e9 SOURCES/systemtap-4.9.tar.gz

File diff suppressed because it is too large Load Diff

View File

@ -1,99 +0,0 @@
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,24 +0,0 @@
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"

View File

@ -1,64 +0,0 @@
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.

7
gating.yaml Normal file
View File

@ -0,0 +1,7 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}

12
plans/ci.fmf Normal file
View File

@ -0,0 +1,12 @@
summary: CI Gating Plan
discover:
how: fmf
url: https://gitlab.cee.redhat.com/toolchain-qe/tests/systemtap-gating.git
ref: main
directory: tests
prepare:
- name: prepare
how: shell
script: ./plans/prepare.sh
execute:
how: tmt

17
plans/prepare.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
set -xe
# Install needed packages
dnf -y install /usr/bin/stap-prep
stap-prep
# Report installed packages
stap-report
# Set up SELinux so that it allows for userspace probing
setsebool allow_execmod on
setsebool allow_execstack on
setsebool deny_ptrace off
set +xe

28
rpminspect.yaml Normal file
View File

@ -0,0 +1,28 @@
# exclude ownership tests; we need setuid/gids as is
ownership:
ignore:
- /usr/bin/staprun
# this SO is for JNI only, so annobin/etc. don't know what to do with it
annocheck:
ignore:
- /usr/libexec/systemtap/libHelperSDT.so
# bytecode version 43 vs 55 complaint is a misconfiguration according to msrb
javabytecode:
ignore:
- /usr/libexec/systemtap/HelperSDT.jar
# setuid binary
permissions:
ignore:
- /usr/bin/staprun
# some stap scripts are wrapped within /bin/sh that confuses rpminspect
shellsyntax:
ignore:
- /usr/share/systemtap/examples/stapgames/2048.stp
- /usr/share/systemtap/testsuite/semko/autocast10.stp
- /usr/share/systemtap/testsuite/semok/autocast10.stp
- /usr/share/systemtap/testsuite/parseko/autocast02.stp
- /usr/share/systemtap/testsuite/systemtap.examples/stapgames/2048.stp

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (systemtap-5.3.tar.gz) = b252cd00a7ddab53f19d30129834b205ce8e90ccc5422444c1d188b765c122da712f5ca73092c425aef7430888c75ebfebbe3bfd87d6df8761338a1135abda89

604
systemtap-defined.patch Normal file
View File

@ -0,0 +1,604 @@
commit 4eb1b10d893b8020315df7dd5215a087ebd39372
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Mon May 19 16:51:42 2025 -0400
PR32964 part 1: improve diagnostics of @defined resolution
The @defined construct is special in that it is attempted to be
resolved to literal 1/0 fairly early during semantic analysis pass-2,
so that it can guard $context variable references. But this early
processing is not that systematic: not all script level constructs
properly nest with it. Those cases that don't happen to match end
up resolved to 0 as a fallback in late during pass-2, due to PR18079.
This patch adds verbosity diagnostics for some of these cases, and a
warning message for the fallback resolution path. This triggers
for the test case associated with this bugzilla report.
diff --git a/dwflpp.cxx b/dwflpp.cxx
index 1105272f2..62ae15837 100644
--- a/dwflpp.cxx
+++ b/dwflpp.cxx
@@ -4427,8 +4427,9 @@ dwflpp::literal_stmt_for_pointer (location_context &ctx,
Dwarf_Die *die_mem)
{
if (sess.verbose>2)
- clog << _F("literal_stmt_for_pointer: finding value for %s (%s)\n",
- dwarf_type_name(start_typedie).c_str(), (dwarf_diename(cu) ?: "<unknown>"));
+ clog << _("literal_stmt_for_pointer: finding value for ") << *e->tok
+ << _F(" type %s (%s)\n",
+ dwarf_type_name(start_typedie).c_str(), (dwarf_diename(cu) ?: "<unknown>"));
assert(ctx.pointer != NULL);
location *tail = ctx.translate_argument (ctx.pointer);
diff --git a/elaborate.cxx b/elaborate.cxx
index 865fe6555..023b4c08f 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -1894,7 +1894,7 @@ semantic_pass_symbols (systemtap_session& s)
assert_no_interrupts();
stapfile* dome = s.files[i];
- // Pass 1: add globals and functions to systemtap-session primart list,
+ // Pass 1: add globals and functions to systemtap-session primary list,
// so the find_* functions find them
//
// NB: tapset global/function definitions may duplicate or conflict
@@ -2796,6 +2796,8 @@ symresolution_info::visit_symbol (symbol* e)
vardecl* d = find_var (e->name, 0, e->tok);
if (d)
{
+ if (session.verbose > 4)
+ clog << "resolved variable " << *e->tok << " to " << *d->tok << endl;
e->referent = d;
e->name = d->name;
}
@@ -2814,6 +2816,8 @@ symresolution_info::visit_symbol (symbol* e)
// must be probe-condition expression
throw SEMANTIC_ERROR (_("probe condition must not reference undeclared global"), e->tok);
e->referent = v;
+ if (session.verbose > 4)
+ clog << "resolved variable " << *e->tok << " to new local" << endl;
}
}
@@ -5112,6 +5116,7 @@ const_folder::visit_defined_op (defined_op* e)
// Don't be greedy... we'll only collapse one at a time so type
// resolution can have another go at it.
relaxed_p = false;
+ session.print_warning (_F("Collapsing unresolved @define to %ld", value), e->tok);
literal_number* n = new literal_number (value);
n->tok = e->tok;
n->visit (this);
diff --git a/tapsets.cxx b/tapsets.cxx
index d25c85043..01fec29e3 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -3118,9 +3118,22 @@ var_expanding_visitor::visit_defined_op (defined_op* e)
target_symbol* tsym = dynamic_cast<target_symbol*> (e->operand);
if (tsym && tsym->saved_conversion_error) // failing
- resolved = false;
+ {
+ if (sess.verbose>3)
+ {
+ for (const semantic_error *c = tsym->saved_conversion_error;
+ c != 0;
+ c = c->get_chain()) {
+ clog << _("variable location problem [man error::dwarf]: ") << c->what() << endl;
+ }
+ }
+ resolved = false;
+ }
else if (e->operand == old_operand) // unresolved but not marked failing
{
+ if (sess.verbose>3)
+ clog << _("@defined unresolved due to un-rewritten operand ") << *e << endl;
+
// There are some visitors that won't touch certain target_symbols,
// e.g. dwarf_var_expanding_visitor won't resolve @cast. We should
// leave it for now so some other visitor can have a chance.
@@ -3132,6 +3145,8 @@ var_expanding_visitor::visit_defined_op (defined_op* e)
resolved = true;
} catch (const semantic_error& e) {
// some uncooperative value like @perf("NO_SUCH_VALUE")
+ if (sess.verbose > 3)
+ clog << sess.build_error_msg (e);
resolved = false;
}
defined_ops.pop ();
commit b36c59692966c6207bf6f69b2f6f91079f7b89ab
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Mon May 19 22:30:29 2025 -0400
PR32964 part 2: document new @defined() warning
... in [man stapprobes], though [man stap] is where autocast variable
processing is documented in the "TYPECASTING" section.
diff --git a/elaborate.cxx b/elaborate.cxx
index 023b4c08f..c09e3ddca 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -5116,7 +5116,7 @@ const_folder::visit_defined_op (defined_op* e)
// Don't be greedy... we'll only collapse one at a time so type
// resolution can have another go at it.
relaxed_p = false;
- session.print_warning (_F("Collapsing unresolved @define to %ld", value), e->tok);
+ session.print_warning (_F("Collapsing unresolved @define to %ld [stapprobes]", value), e->tok);
literal_number* n = new literal_number (value);
n->tok = e->tok;
n->visit (this);
diff --git a/man/stapprobes.3stap b/man/stapprobes.3stap
index 1f980567b..d395e3578 100644
--- a/man/stapprobes.3stap
+++ b/man/stapprobes.3stap
@@ -700,6 +700,11 @@ for use in conditionals such as
.SAMPLE
@defined($foo\->bar) ? $foo\->bar : 0
.ESAMPLE
+Use full $context variables or @cast() expressions in @define parameters
+for unambiguous processing. The TYPECAST script-level variable
+facility is incompletely supported. Simplify the parameters by reducing
+nesting or indirection, if encountering "Collapsing unresolved @define to ..."
+warnings.
.TP
@probewrite($VAR)
see the PROBES section of \fIstap\fR(1).
commit e4786671a999d47003ea62525ed829c1784c03ea
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Thu May 22 17:14:53 2025 -0400
PR32964 part 3: include autocast processing in initial_typeres_pass
This type resolution pass is done early, but previously purposefully
ommitted opportunistic autocast expansion. With it done there, once
(in the usual relaxation loop), more autocast-based @defined /
@choose_defined constructs will be processed in the way a user
may expect.
diff --git a/elaborate.cxx b/elaborate.cxx
index c09e3ddca..b03f0aced 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -2602,7 +2602,7 @@ semantic_pass (systemtap_session& s)
if (rc == 0) rc = semantic_pass_symbols (s);
if (rc == 0) monitor_mode_write (s);
if (rc == 0) rc = semantic_pass_conditions (s);
- if (rc == 0) rc = semantic_pass_optimize1 (s);
+ if (rc == 0) rc = semantic_pass_optimize1 (s); // includes const_fold and last ditch @defined() processing
if (rc == 0) rc = semantic_pass_types (s);
if (rc == 0) rc = gen_dfa_table(s);
if (rc == 0) add_global_var_display (s);
@@ -6045,7 +6045,7 @@ struct initial_typeresolution_info : public typeresolution_info
static int initial_typeres_pass(systemtap_session& s)
{
// minimal type resolution based off of semantic_pass_types(), without
- // checking for complete type resolutions or autocast expanding
+ // checking for complete type resolutions, PR32964 but including autocast expanding
initial_typeresolution_info ti(s);
ti.assert_resolvability = false;
@@ -6067,6 +6067,30 @@ static int initial_typeres_pass(systemtap_session& s)
ti.current_function = fd;
ti.t = pe_unknown;
fd->body->visit (& ti);
+
+ // Check and run the autocast expanding visitor.
+ if (ti.num_available_autocasts > 0)
+ {
+ autocast_expanding_visitor aev (s, ti);
+ aev.replace (fd->body);
+
+ // PR18079, rerun the const-folder / dead-block-remover
+ // if autocast evaluation enabled a @defined()
+ if (! aev.relaxed())
+ {
+ bool relaxed_p = true;
+ const_folder cf (s, relaxed_p);
+ cf.replace (fd->body);
+ if (! s.unoptimized)
+ {
+ dead_control_remover dc (s, relaxed_p);
+ fd->body->visit (&dc);
+ }
+ (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
+ }
+
+ ti.num_available_autocasts = 0;
+ }
}
for (unsigned j=0; j<s.probes.size(); j++)
@@ -6079,6 +6103,24 @@ static int initial_typeres_pass(systemtap_session& s)
ti.t = pe_unknown;
pn->body->visit (& ti);
+ // Check and run the autocast expanding visitor.
+ if (ti.num_available_autocasts > 0)
+ {
+ autocast_expanding_visitor aev (s, ti);
+ var_expand_const_fold_loop (s, pn->body, aev);
+ // PR18079, rerun the const-folder / dead-block-remover
+ // if autocast evaluation enabled a @defined()
+ if (! s.unoptimized)
+ {
+ bool relaxed_p;
+ dead_control_remover dc (s, relaxed_p);
+ pn->body->visit (&dc);
+ (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
+ }
+
+ ti.num_available_autocasts = 0;
+ }
+
probe_point* pp = pn->sole_location();
if (pp->condition)
{
@@ -6147,30 +6189,8 @@ semantic_pass_types (systemtap_session& s)
// ti.unresolved (fd->tok);
for (unsigned i=0; i < fd->locals.size(); ++i)
ti.check_local (fd->locals[i]);
-
- // Check and run the autocast expanding visitor.
- if (ti.num_available_autocasts > 0)
- {
- autocast_expanding_visitor aev (s, ti);
- aev.replace (fd->body);
-
- // PR18079, rerun the const-folder / dead-block-remover
- // if autocast evaluation enabled a @defined()
- if (! aev.relaxed())
- {
- bool relaxed_p = true;
- const_folder cf (s, relaxed_p);
- cf.replace (fd->body);
- if (! s.unoptimized)
- {
- dead_control_remover dc (s, relaxed_p);
- fd->body->visit (&dc);
- }
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
- }
- ti.num_available_autocasts = 0;
- }
+ // PR32964: autocast resolution is now done early in initial_typeres_pass
}
catch (const semantic_error& e)
{
@@ -6191,24 +6211,8 @@ semantic_pass_types (systemtap_session& s)
pn->body->visit (& ti);
for (unsigned i=0; i < pn->locals.size(); ++i)
ti.check_local (pn->locals[i]);
-
- // Check and run the autocast expanding visitor.
- if (ti.num_available_autocasts > 0)
- {
- autocast_expanding_visitor aev (s, ti);
- var_expand_const_fold_loop (s, pn->body, aev);
- // PR18079, rerun the const-folder / dead-block-remover
- // if autocast evaluation enabled a @defined()
- if (! s.unoptimized)
- {
- bool relaxed_p;
- dead_control_remover dc (s, relaxed_p);
- pn->body->visit (&dc);
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
- }
- ti.num_available_autocasts = 0;
- }
+ // PR32964: autocast resolution is now done early in initial_typeres_pass
probe_point* pp = pn->sole_location();
if (pp->condition)
commit 3122ff592bdfcf553afa6683724e90c359f3c5c9
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Fri May 30 17:50:10 2025 -0400
PR32964 part 4: let autocast pass propagate vardecl/symbol type_details
The initial_typeres_pass now communicates relaxed status,
and its autocast_expanding_visitor now passes vardecl type_details
to the symbols. This way, the existing const_folder etc. visitors
can deduce enough type info for @defined(an_autocast_var->foo->bar)
constructs, and early enough, that @defined() works as intended.
New testsuite/semok/definedautocast.stp tests a simple case.
diff --git a/elaborate.cxx b/elaborate.cxx
index b03f0aced..7a1609f1b 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -5163,7 +5163,7 @@ const_folder::visit_target_symbol (target_symbol* e)
}
}
-static int initial_typeres_pass(systemtap_session& s);
+static int initial_typeres_pass(systemtap_session& s, bool& relaxed_p);
static int semantic_pass_const_fold (systemtap_session& s, bool& relaxed_p)
{
// attempt an initial type resolution pass to see if there are any type
@@ -5171,7 +5171,7 @@ static int semantic_pass_const_fold (systemtap_session& s, bool& relaxed_p)
// with a const.
// return if the initial type resolution pass reported errors (type mismatches)
- int rc = initial_typeres_pass(s);
+ int rc = initial_typeres_pass(s, relaxed_p);
if (rc)
{
relaxed_p = true;
@@ -5994,6 +5994,25 @@ struct autocast_expanding_visitor: public var_expanding_visitor
}
}
+ void visit_symbol (symbol* e) // propagate referent exp_type
+ {
+ // PR32964: mimic typeresolution_info::resolve_details, for case
+ // where the symbol (autocast_op operand) is within a @defined().
+
+ if (e->referent && e->referent->type_details && !e->type_details)
+ {
+ const exp_type_ptr &src = e->referent->type_details;
+ exp_type_ptr &dest = e->type_details;
+ dest = src;
+ ti.num_newly_resolved++;
+ relaxed_p = false;
+ if (sess.verbose > 4)
+ clog << "resolved early type details " << *dest << " to " << *e->tok << endl;
+ }
+ var_expanding_visitor::visit_symbol (e);
+ }
+
+
void visit_autocast_op (autocast_op* e)
{
const bool lvalue = is_active_lvalue (e);
@@ -6004,7 +6023,7 @@ struct autocast_expanding_visitor: public var_expanding_visitor
if (fc)
{
ti.num_newly_resolved++;
-
+ relaxed_p = false;
resolve_functioncall (fc);
// NB: at this stage, the functioncall object has one
// argument too few if we're in lvalue context. It will
@@ -6042,7 +6061,7 @@ struct initial_typeresolution_info : public typeresolution_info
void visit_cast_op (cast_op*) {}
};
-static int initial_typeres_pass(systemtap_session& s)
+static int initial_typeres_pass(systemtap_session& s, bool& relaxed_p)
{
// minimal type resolution based off of semantic_pass_types(), without
// checking for complete type resolutions, PR32964 but including autocast expanding
@@ -6069,7 +6088,7 @@ static int initial_typeres_pass(systemtap_session& s)
fd->body->visit (& ti);
// Check and run the autocast expanding visitor.
- if (ti.num_available_autocasts > 0)
+ if (true || ti.num_available_autocasts > 0)
{
autocast_expanding_visitor aev (s, ti);
aev.replace (fd->body);
@@ -6078,7 +6097,7 @@ static int initial_typeres_pass(systemtap_session& s)
// if autocast evaluation enabled a @defined()
if (! aev.relaxed())
{
- bool relaxed_p = true;
+ // bool relaxed_p = true;
const_folder cf (s, relaxed_p);
cf.replace (fd->body);
if (! s.unoptimized)
@@ -6086,7 +6105,7 @@ static int initial_typeres_pass(systemtap_session& s)
dead_control_remover dc (s, relaxed_p);
fd->body->visit (&dc);
}
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
+ // (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
}
ti.num_available_autocasts = 0;
@@ -6104,7 +6123,7 @@ static int initial_typeres_pass(systemtap_session& s)
pn->body->visit (& ti);
// Check and run the autocast expanding visitor.
- if (ti.num_available_autocasts > 0)
+ if (true || ti.num_available_autocasts > 0)
{
autocast_expanding_visitor aev (s, ti);
var_expand_const_fold_loop (s, pn->body, aev);
@@ -6112,10 +6131,10 @@ static int initial_typeres_pass(systemtap_session& s)
// if autocast evaluation enabled a @defined()
if (! s.unoptimized)
{
- bool relaxed_p;
+ // bool relaxed_p;
dead_control_remover dc (s, relaxed_p);
pn->body->visit (&dc);
- (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
+ // (void) relaxed_p; // we judge success later by num_still_unresolved, not this flag
}
ti.num_available_autocasts = 0;
diff --git a/testsuite/semok/definedautocast.stp b/testsuite/semok/definedautocast.stp
new file mode 100755
index 000000000..b28be6118
--- /dev/null
+++ b/testsuite/semok/definedautocast.stp
@@ -0,0 +1,6 @@
+#! stap -Wp2
+
+probe kernel.function("do_exit") {
+ x = & @cast(0, "struct block_device")
+ println(@defined(x->__bd_flags->counter))
+}
commit 778ba67e356dc1820acc8ecdaa2c4b608c2eb184
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Fri May 30 22:10:36 2025 -0400
PR32964 part 5: tweak type inference propagation
Because some type inference is now performed earlier than before,
coupled with early const-folding (so dead code elimination), tests
like semko/binexpr_infer_type.stp started passing with immediately
prior code. That's because constructs like (foo*0) got quietly
replaced by 0, even if foo was typed pe_string. This patch
compensates for this change in behaviour by:
- typeresolution_info::resolve_2types now propagates types
more aggressively & recursively in its three-way inference,
so that the unknown x string x long case is detected in one
incoming invocation of the function, instead of being
deferred to some unknown later relaxation-iteration round.
- typeresolution_info::mismatch reporting errors, independent
of "assert_resolvability". That flag was most likely meant
for detection & rejection of pe_unknown types at the end of
all the optimization stuff, not for ignoring outright known
conflicts.
diff --git a/elaborate.cxx b/elaborate.cxx
index 7a1609f1b..d93a83eca 100644
--- a/elaborate.cxx
+++ b/elaborate.cxx
@@ -6683,21 +6683,21 @@ void resolve_2types (Referrer* referrer, Referent* referent,
// propagate from upstream
re_type = t;
r->resolved (re_tok, re_type);
- // catch re_type/te_type mismatch later
+ resolve_2types (referrer, referent, r, t, accept_unknown);
}
else if (re_type == pe_unknown && te_type != pe_unknown)
{
// propagate from referent
re_type = te_type;
r->resolved (re_tok, re_type);
- // catch re_type/t mismatch later
+ resolve_2types (referrer, referent, r, t, accept_unknown);
}
else if (re_type != pe_unknown && te_type == pe_unknown)
{
// propagate to referent
te_type = re_type;
r->resolved (re_tok, re_type, referent);
- // catch re_type/t mismatch later
+ resolve_2types (referrer, referent, r, t, accept_unknown);
}
else if (! accept_unknown)
r->unresolved (re_tok);
@@ -7636,14 +7636,14 @@ typeresolution_info::mismatch (const binary_expression* e)
{
num_still_unresolved ++;
- if (assert_resolvability && mismatch_complexity <= 1)
+ if (mismatch_complexity <= 1)
{
stringstream msg;
msg << _F("type mismatch: left and right sides don't agree (%s vs %s)",
lex_cast(e->left->type).c_str(), lex_cast(e->right->type).c_str());
session.print_error (SEMANTIC_ERROR (msg.str(), e->tok));
}
- else if (!assert_resolvability)
+ else
mismatch_complexity = max(1, mismatch_complexity);
}
@@ -7656,7 +7656,7 @@ typeresolution_info::mismatch (const token* tok, exp_type t1, exp_type t2)
{
num_still_unresolved ++;
- if (assert_resolvability && mismatch_complexity <= 2)
+ if (mismatch_complexity <= 2)
{
stringstream msg;
msg << _F("type mismatch: expected %s", lex_cast(t1).c_str());
@@ -7664,7 +7664,7 @@ typeresolution_info::mismatch (const token* tok, exp_type t1, exp_type t2)
msg << _F(" but found %s", lex_cast(t2).c_str());
session.print_error (SEMANTIC_ERROR (msg.str(), tok));
}
- else if (!assert_resolvability)
+ else
mismatch_complexity = max(2, mismatch_complexity);
}
@@ -7679,7 +7679,7 @@ typeresolution_info::mismatch (const token *tok, exp_type type,
{
num_still_unresolved ++;
- if (assert_resolvability && mismatch_complexity <= 3)
+ if (mismatch_complexity <= 3)
{
assert(decl != NULL);
@@ -7737,7 +7737,7 @@ typeresolution_info::mismatch (const token *tok, exp_type type,
err.set_chain(chain);
session.print_error (err);
}
- else if (!assert_resolvability)
+ else
mismatch_complexity = max(3, mismatch_complexity);
}
commit fd4322e38d1e6504341b67329e112ccc1af387b6
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Sat May 31 09:15:33 2025 -0400
PR32964 part 6: NEWS & old testcase
It turns out there was one old testcase that relied on type
non-checking upon elided variables. This test has been removed, and
the change mentioned in NEWS. Unfortunately, this is is hard to make
conditional on --compatible=XXXX, so hypothetical old (arguably buggy)
scripts may get hit.
diff --git a/NEWS b/NEWS
index 01b74a671..f1d78e8fa 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+* What's new in version 5.4
+
+- Type checking and autocast processing have been made more thorough,
+ so elided variables are checked more and @defined() tests may be
+ more complicated. Preexisting scripts that rely on elision for
+ bypassing type violations may now get caught. No --compatible
+ option exists to suppress this new behaviour.
+
* What's new in version 5.3, 2025-05-02
- Updated to support drastic linux 6.13 kbuild changes, numerous
diff --git a/testsuite/semok/pr30570.stp b/testsuite/semok/pr30570.stp
index b711b214c..dda7d027c 100755
--- a/testsuite/semok/pr30570.stp
+++ b/testsuite/semok/pr30570.stp
@@ -24,13 +24,16 @@ probe oneshot {
}
# error var and the try block are elided which means
-# it's not an issue to use e4 as a long here
-global e4 = 10
-probe oneshot {
- try { }
- catch (e4)
- { }
-}
+# it's not an issue to use e4 as a long here ...
+# except after PR32964, type checking is done more
+# systematically on even elided variables, so this
+# would be an error!
+# global e4 = 10
+# probe oneshot {
+# try { }
+# catch (e4)
+# { }
+# }
# e5 can be a global string
global e5 = "foo"

View File

@ -0,0 +1,59 @@
commit ea6ec6da37f1d3ec9ab1c3b5808287676c9d3742
Author: William Cohen <wcohen@redhat.com>
Date: Mon Jun 2 11:15:44 2025 -0400
RHEL-90805: Fix dev.stp tapset to work with RHEL 9.7 kernel
RHEL 9.7 kernels have backported block dev support from Linux 6.14.
The test in the dev.stp tapset checked the kernel version to determine
where to get information and that test did not work in the case of
code backported to the older RHEL 9 Linux 5.14 kernel. The dev.stp
code has been reworked to search for the particular member field
holding the information instead.
diff --git a/tapset/linux/dev.stp b/tapset/linux/dev.stp
index f6b90c5d3..56b8e63c4 100644
--- a/tapset/linux/dev.stp
+++ b/tapset/linux/dev.stp
@@ -64,17 +64,19 @@ function disk_name:string(hd:long, partno:long)
return sprintf("%s%d", disk_name, partno)
}
-%( kernel_v >= "6.10" %?
%{
+#include <linux/blk_types.h>
#include <linux/blkdev.h>
%}
function bdev_partno(bdev:long)
%{ /* pure */ /* unprivileged */
+#ifdef BD_PARTNO
STAP_RETURN(bdev_partno((const struct block_device *) STAP_ARG_bdev));
+#else
+ STAP_RETURN(0);
+#endif
%}
-%:
-%)
function bdevname:string(bdev:long)
{
@@ -84,15 +86,13 @@ function bdevname:string(bdev:long)
hd = bdev->bd_disk
-%( kernel_v >= "6.10" %?
- partno = bdev_partno(bdev)
-%:
- if (@defined(@cast(bdev, "block_device", "kernel")->bd_partno))
+ if (@defined(&bdev->__bd_flags))
+ partno = bdev_partno(bdev)
+ else if (@defined(bdev->bd_partno))
partno = bdev->bd_partno
else if (bdev->bd_part)
partno = bdev->bd_part->partno
else
partno = MINOR(bdev->bd_dev) - hd->first_minor;
-%)
return disk_name(hd, partno)
}

View File

@ -1,3 +1,5 @@
# work around flakey gcc warnings
%{!?with_Werror: %global with_Werror 0}
%{!?with_sqlite: %global with_sqlite 0%{?fedora} >= 17 || 0%{?rhel} >= 7}
# prefer prebuilt docs
%{!?with_docs: %global with_docs 0}
@ -11,8 +13,8 @@
%endif
%{!?with_rpm: %global with_rpm 1}
%{!?elfutils_version: %global elfutils_version 0.179}
%{!?with_boost: %global with_boost 0}
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64
%{!?with_boost: %global with_boost 1}
%ifarch x86_64 ppc ppc64 ppc64le aarch64
%{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7}
%else
%{!?with_dyninst: %global with_dyninst 0}
@ -43,9 +45,13 @@
%{!?with_httpd: %global with_httpd 0}
%{!?with_specific_python: %global with_specific_python 0%{?fedora} >= 31}
%{!?with_sysusers: %global with_sysusers 0%{?fedora} >= 32 || 0%{?rhel} >= 9}
# NB: can't turn this on by default on any distro version whose builder system
# may run kernels different than the distro version itself.
%{!?with_check: %global with_check 0}
# Virt is supported on these arches, even on el7, but it's not in core EL7
%if 0%{?rhel} <= 7
%if 0%{?rhel} && 0%{?rhel} <= 7
%ifarch ppc64le aarch64
%global with_virthost 0
%endif
@ -64,9 +70,6 @@
%else
%if 0%{?rhel} >= 6
%define udevrulesdir /lib/udev/rules.d
%else
# RHEL5
%define udevrulesdir /etc/udev/rules.d
%endif
%endif
%endif
@ -83,11 +86,7 @@
%define dracutbindir %{_bindir}
%endif
%if 0%{?rhel} == 6
%{!?_rpmmacrodir: %define _rpmmacrodir /etc/rpm/}
%else
%{!?_rpmmacrodir: %define _rpmmacrodir %{_rpmconfigdir}/macros.d}
%endif
# To avoid testsuite/*/*.stp has shebang which doesn't start with '/'
%define __brp_mangle_shebangs_exclude_from .stp$
@ -97,7 +96,10 @@
\
g stapusr 156\
g stapsys 157\
g stapdev 158
g stapdev 158\
g stapunpriv 159\
u stapunpriv 159 "systemtap unprivileged user" /var/lib/stapunpriv /sbin/nologin\
m stapunpriv stapunpriv
%define _systemtap_server_preinstall \
# See systemd-sysusers(8) sysusers.d(5)\
@ -122,8 +124,8 @@ m stapdev stapdev
Name: systemtap
# PRERELEASE
Version: 4.9
Release: 3%{?release_override}%{?dist}
Version: 5.3
Release: 3b%{?release_override}%{?dist}
# for version, see also configure.ac
@ -135,7 +137,8 @@ Release: 3%{?release_override}%{?dist}
# systemtap-runtime /usr/bin/staprun, /usr/bin/stapsh, /usr/bin/stapdyn
# systemtap-client /usr/bin/stap, samples, docs, tapset(bonus), req:-runtime
# systemtap-initscript /etc/init.d/systemtap, dracut module, req:systemtap
# systemtap-sdt-devel /usr/include/sys/sdt.h /usr/bin/dtrace
# systemtap-sdt-devel /usr/include/sys/sdt.h
# systemtap-sdt-dtrace /usr/bin/dtrace
# systemtap-testsuite /usr/share/systemtap/testsuite*, req:systemtap, req:sdt-devel
# systemtap-runtime-java libHelperSDT.so, HelperSDT.jar, stapbm, req:-runtime
# systemtap-runtime-virthost /usr/bin/stapvirt, req:libvirt req:libxml2
@ -156,15 +159,12 @@ Release: 3%{?release_override}%{?dist}
# intermediary stap-server for --use-server: systemtap-server (-devel unused)
Summary: Programmable system-wide instrumentation system
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
Patch1: rhbz2223733.patch
Patch2: rhbz2223735.patch
Patch3: pr29108.patch
Patch4: pr30749.patch
Patch1: systemtap-defined.patch
Patch2: systemtap-dev_tapset.patch
# Build*
BuildRequires: make
@ -175,6 +175,7 @@ BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(avahi-client)
%if %{with_debuginfod}
BuildRequires: pkgconfig(libdebuginfod)
BuildRequires: pkgconfig(json-c)
%endif
%if %{with_dyninst}
BuildRequires: dyninst-devel >= 10.0
@ -191,9 +192,7 @@ BuildRequires: pkgconfig(ncurses)
BuildRequires: systemd
%endif
# Needed for libstd++ < 4.0, without <tr1/memory>
%if %{with_boost}
BuildRequires: boost-devel
%endif
%if %{with_crash}
BuildRequires: crash-devel zlib-devel
%endif
@ -215,7 +214,7 @@ BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf
%endif
%if %{with_emacsvim}
# for _emacs_sitelispdir macros etc.
BuildRequires: emacs
BuildRequires: emacs-common
%endif
%if %{with_java}
BuildRequires: java-devel
@ -226,9 +225,6 @@ BuildRequires: pkgconfig(libvirt)
BuildRequires: pkgconfig(libxml-2.0)
%endif
BuildRequires: readline-devel
%if 0%{?rhel} <= 5
BuildRequires: pkgconfig(ncurses)
%endif
%if %{with_python2_probes}
BuildRequires: python2-devel
%if 0%{?fedora} >= 1
@ -252,6 +248,12 @@ BuildRequires: libuuid-devel
%if %{with_sysusers}
BuildRequires: systemd-rpm-macros
%endif
%if %{with_check}
BuildRequires: kernel-devel
# and some of the same Requires: as below
BuildRequires: dejagnu gcc make
%endif
# Install requirements
@ -268,8 +270,8 @@ the components needed to locally develop and execute systemtap scripts.
%package server
Summary: Instrumentation System Server
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-devel = %{version}-%{release}
Conflicts: systemtap-devel < %{version}-%{release}
Conflicts: systemtap-runtime < %{version}-%{release}
@ -298,8 +300,8 @@ compiles systemtap scripts to kernel objects on their demand.
%package devel
Summary: Programmable system-wide instrumentation system - development headers, tools
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND BSD-2-Clause
URL: https://sourceware.org/systemtap/
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
Recommends: (kernel-debug-devel if kernel-debug)
@ -328,8 +330,8 @@ a copy of the standard tapset library and the runtime library C files.
%package runtime
Summary: Programmable system-wide instrumentation system - runtime
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires(pre): shadow-utils
Conflicts: systemtap-devel < %{version}-%{release}
Conflicts: systemtap-server < %{version}-%{release}
@ -343,8 +345,8 @@ using a local or remote systemtap-devel installation.
%package client
Summary: Programmable system-wide instrumentation system - client
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later AND GPL-2.0-only AND BSD-3-Clause AND LGPL-2.1-only AND GFDL-1.2-or-later AND BSD-2-Clause
URL: https://sourceware.org/systemtap/
Requires: zip unzip
Requires: systemtap-runtime = %{version}-%{release}
Requires: coreutils grep sed unzip zip
@ -357,17 +359,19 @@ Requires: mokutil
%endif
%description client
This package contains/requires the components needed to develop
systemtap scripts, and compile them using a local systemtap-devel
or a remote systemtap-server installation, then run them using a
local or remote systemtap-runtime. It includes script samples and
This package contains/requires only the components needed to
use systemtap scripts by compiling them using a local or a remote
systemtap-server service, then run them using a local or
remote systemtap-runtime. It includes script samples and
documentation, and a copy of the tapset library for reference.
It does NOT include all the components for running a systemtap
script in a self-contained fashion; for that, use the -devel
subpackage instead.
%package initscript
Summary: Systemtap Initscripts
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap = %{version}-%{release}
%if %{with_systemd}
Requires: systemd
@ -385,9 +389,21 @@ boot-time probing if supported.
%package sdt-devel
Summary: Static probe support tools
License: GPLv2+ and Public Domain
URL: http://sourceware.org/systemtap/
Summary: Static probe support header files
License: GPL-2.0-or-later AND CC0-1.0
URL: https://sourceware.org/systemtap/
# for RHEL buildability compatibility, pull in sdt-dtrace at all times
Requires: systemtap-sdt-dtrace = %{version}-%{release}
%description sdt-devel
This package includes the <sys/sdt.h> header file used for static
instrumentation compiled into userspace programs.
%package sdt-dtrace
Summary: Static probe support dtrace tool
License: GPL-2.0-or-later AND CC0-1.0
URL: https://sourceware.org/systemtap/
Provides: dtrace = %{version}-%{release}
%if %{with_pyparsing}
%if %{with_python3}
Requires: python3-pyparsing
@ -400,21 +416,19 @@ Requires: python2-pyparsing
%endif
%endif
%description sdt-devel
This package includes the <sys/sdt.h> header file used for static
instrumentation compiled into userspace programs and libraries, along
with the optional dtrace-compatibility preprocessor to process related
.d files into tracing-macro-laden .h headers.
%description sdt-dtrace
This package includes the dtrace-compatibility preprocessor
to process related .d files into tracing-macro-laden .h headers.
%package testsuite
Summary: Instrumentation System Testsuite
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later AND MIT
URL: https://sourceware.org/systemtap/
Requires: systemtap = %{version}-%{release}
Requires: systemtap-sdt-devel = %{version}-%{release}
Requires: systemtap-server = %{version}-%{release}
Requires: dejagnu which elfutils grep nc
Requires: dejagnu which elfutils grep nc wget
%if %{with_debuginfod}
Requires: elfutils-debuginfod
%endif
@ -481,8 +495,8 @@ systemtap on the current system.
%if %{with_java}
%package runtime-java
Summary: Systemtap Java Runtime Support
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-runtime = %{version}-%{release}
# work around fedora ci gating kvetching about i686<->x86-64 conflicts
%ifarch x86_64
@ -503,8 +517,8 @@ that probe Java processes running on the OpenJDK runtimes using Byteman.
%if %{with_python2_probes}
%package runtime-python2
Summary: Systemtap Python 2 Runtime Support
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-runtime = %{version}-%{release}
%description runtime-python2
@ -515,8 +529,8 @@ that probe python 2 processes.
%if %{with_python3_probes}
%package runtime-python3
Summary: Systemtap Python 3 Runtime Support
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-runtime = %{version}-%{release}
%if ! (%{with_python2_probes})
@ -532,8 +546,8 @@ that probe python 3 processes.
%if %{with_python3_probes}
%package exporter
Summary: Systemtap-prometheus interoperation mechanism
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-runtime = %{version}-%{release}
%description exporter
@ -545,8 +559,8 @@ to remote requesters on demand.
%if %{with_virthost}
%package runtime-virthost
Summary: Systemtap Cross-VM Instrumentation - host
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
# only require libvirt-libs really
#Requires: libvirt >= 1.0.2
Requires: libxml2
@ -560,8 +574,8 @@ connection.
%if %{with_virtguest}
%package runtime-virtguest
Summary: Systemtap Cross-VM Instrumentation - guest
License: GPLv2+
URL: http://sourceware.org/systemtap/
License: GPL-2.0-or-later
URL: https://sourceware.org/systemtap/
Requires: systemtap-runtime = %{version}-%{release}
%if %{with_systemd}
Requires(post): findutils coreutils
@ -578,26 +592,21 @@ 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/
License: GPL-2.0-or-later
URL: https://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
%patch -P1 -p1
%patch -P2 -p1
%patch -P3 -p1
%patch -P4 -p1
%autosetup -p1
%build
@ -608,6 +617,13 @@ or within a container.
%global dyninst_config --without-dyninst
%endif
# Enable/disable the dyninst pure-userspace backend
%if %{with_Werror}
%global Werror_config --enable-Werror
%else
%global Werror_config --disable-Werror
%endif
# Enable/disable the sqlite coverage testing support
%if %{with_sqlite}
%global sqlite_config --enable-sqlite
@ -695,7 +711,7 @@ or within a container.
# We don't ship compileworthy python code, just oddball samples
%global py_auto_byte_compile 0
%configure %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} %{debuginfod_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}"
%configure %{Werror_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} %{python3_config} %{python2_probes_config} %{python3_probes_config} %{httpd_config} %{bpf_config} %{debuginfod_config} --disable-silent-rules --with-extra-version="rpm %{version}-%{release}"
make %{?_smp_mflags} V=1
@ -735,9 +751,6 @@ find testsuite -type f -name '.gitignore' -print0 | xargs -0 rm -f
# permissions back to 04110 in the %files section below.
chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun
#install the useful stap-prep script
install -c -m 755 stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep
# Copy over the testsuite
cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap
@ -846,30 +859,48 @@ done
%py3_shebang_fix %{buildroot}%{python3_sitearch} %{buildroot}%{_bindir}/*
%endif
%check
%if %{with_check}
make check RUNTESTFLAGS=environment_sanity.exp
%endif
%pre runtime
%if %{with_sysusers}
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
echo '%_systemtap_runtime_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-runtime.conf -
exit 0
%endif
%else
getent group stapusr >/dev/null || groupadd -f -g 156 -r stapusr
getent group stapsys >/dev/null || groupadd -f -g 157 -r stapsys
getent group stapdev >/dev/null || groupadd -f -g 158 -r stapdev
%endif
getent passwd stapunpriv >/dev/null || \
useradd -c "Systemtap Unprivileged User" -u 159 -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv 2>/dev/null || \
useradd -c "Systemtap Unprivileged User" -g stapunpriv -d %{_localstatedir}/lib/stapunpriv -r -s /sbin/nologin stapunpriv
exit 0
%endif
%pre server
%if %{with_sysusers}
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
echo '%_systemtap_server_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-server.conf -
exit 0
%endif
%else
getent group stap-server >/dev/null || groupadd -f -g 155 -r stap-server
getent passwd stap-server >/dev/null || \
useradd -c "Systemtap Compile Server" -u 155 -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server 2>/dev/null || \
useradd -c "Systemtap Compile Server" -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server
%endif
exit 0
%endif
%pre testsuite
%if %{with_sysusers}
%if (0%{?fedora} && 0%{?fedora} < 42) || (0%{?rhel} && 0%{?rhel} < 11)
echo '%_systemtap_testsuite_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-testsuite.conf -
exit 0
%endif
%else
getent passwd stapusr >/dev/null || \
useradd -c "Systemtap 'stapusr' User" -g stapusr -r -s /sbin/nologin stapusr
@ -877,8 +908,8 @@ getent passwd stapsys >/dev/null || \
useradd -c "Systemtap 'stapsys' User" -g stapsys -G stapusr -r -s /sbin/nologin stapsys
getent passwd stapdev >/dev/null || \
useradd -c "Systemtap 'stapdev' User" -g stapdev -G stapusr -r -s /sbin/nologin stapdev
%endif
exit 0
%endif
%post server
@ -1132,13 +1163,14 @@ exit 0
%if %{with_emacsvim}
%{_emacs_sitelispdir}/*.el*
%{_emacs_sitestartdir}/systemtap-init.el
%{_datadir}/vim/vimfiles/*/*.vim
%{_datadir}/vim/vimfiles
%endif
# Notice that the stap-resolve-module-function.py file is used by
# *both* the python2 and python3 subrpms. Both subrpms use that same
# python script to help list python probes.
%if %{with_python3_probes} || %{with_python2_probes}
%{_libexecdir}/systemtap/python/stap-resolve-module-function.py
%dir %{_libexecdir}/systemtap/python
%exclude %{_libexecdir}/systemtap/python/stap-resolve-module-function.py?
%endif
@ -1233,16 +1265,22 @@ exit 0
%files sdt-devel
%{_bindir}/dtrace
%{_includedir}/sys/sdt.h
%{_includedir}/sys/sdt-config.h
%{_mandir}/man1/dtrace.1*
%{_rpmmacrodir}/macros.systemtap
%doc README AUTHORS NEWS
%{!?_licensedir:%global license %%doc}
%license COPYING
%files sdt-dtrace
%{_bindir}/dtrace
%doc README AUTHORS NEWS
%{!?_licensedir:%global license %%doc}
%license COPYING
%{_mandir}/man1/dtrace.1*
%files testsuite
%dir %{_datadir}/systemtap
%{_datadir}/systemtap/testsuite
@ -1299,250 +1337,151 @@ 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
# * DDD MMM DD YYYY YOURNAME <YOUREMAIL> - V-R
# - Upstream release, see wiki page below for detailed notes.
# http://sourceware.org/systemtap/wiki/SystemTapReleases
# https://sourceware.org/systemtap/wiki/SystemTapReleases
# PRERELEASE
%changelog
* Mon Aug 14 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-3
- rhbz2231619
- rhbz2095359
* Thu Jun 5 2025 William Cohen <wcohen@redhat.com> - 5.3-3
- RHEL-95272
* Tue Jul 18 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-2
- rhbz2223733 = rhbz2211288
- rhbz2223735 = rhbz2223739
* Mon May 12 2025 Martin Cermak <mcermak@redhat.com> - 5.3-2
- RHEL-RHEL-89808: stap-server log owned by root
* Fri May 02 2025 Frank Ch. Eigler <fche@redhat.com> - 5.3-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Wed Feb 05 2025 Frank Ch. Eigler <fche@redhat.com> - 5.2-2
- RHEL-78062: supply /usr/bin/dtrace in sdt-devel subrpm too
* Mon Nov 11 2024 Frank Ch. Eigler <fche@redhat.com> - 5.2-1
- Upstream release, see wiki page below for detailed notes.
- https://sourceware.org/systemtap/wiki/SystemTapReleases
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 5.1-10
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Fri Aug 9 2024 Martin Cermak <mcermak@redhat.com> - 5.1-9
- RHEL-52491
* Fri Jul 26 2024 Martin Cermak <mcermak@redhat.com> - 5.1-8
- RHEL-43481
* Wed Jul 24 2024 Martin Cermak <mcermak@redhat.com> - 5.1-7
- RHEL-50107
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 5.1-6
- Bump release for June 2024 mass rebuild
* Tue Jun 18 2024 Martin Cermak <mcermak@redhat.com> - 5.1-5
- RHEL-42605 add upstream commits 1fd6fb4d, de8aba9a, da72d043
* Mon Jun 17 2024 Martin Cermak <mcermak@redhat.com> - 5.1-4
- RHEL-42605
* Thu May 16 2024 Martin Cermak <mcermak@redhat.com> - 5.1-3
- RHEL-29529
- RHEL-7318
- RHELMISC-3948
* Tue May 14 2024 William Cohen <wcohen@redhat.com> - 5.1-2
- RHEL-36201
* Fri Apr 26 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Thu Jan 25 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17062192g5fd8daba
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Thu Jan 25 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17062114g2604d135
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Tue Jan 23 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17060399gb6abf4bd
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Mon Jan 22 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17059382g67086c54
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Thu Jan 18 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17056139g6c0b92b3
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Thu Jan 18 2024 Frank Ch. Eigler <fche@redhat.com> - 5.1-17056120g2ccc0c4c
- Automated weekly rawhide release
- Applied spec changes from upstream git
* Thu Jan 18 2024 Jonathan Wakely <jwakely@redhat.com> - 5.0-4
- Rebuilt for Boost 1.83
* Tue Nov 14 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-3
- RHEL-16549
* Mon Nov 06 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-2
- License header tweak
* Sat Nov 04 2023 Frank Ch. Eigler <fche@redhat.com> - 5.0-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
- migrated to SPDX license
* Fri Apr 28 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Fri Dec 23 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
- rhbz2156092 = rhbz1997192
- rhbz2145241 = rhbz2145242
- rhbz2156093 = rhbz2149223
- rhbz2156095 = rhbz2149666
- rhbz2156094 = rhbz2154430
* Thu Nov 03 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-1
- Upstream release.
* Mon May 02 2022 Stan Cox <scox@redhat.com> - 4.7-1
* Thu Nov 03 2022 Serhei Makarov <serhei@serhei.io> - 4.8-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Tue Dec 07 2021 Stan Cox <scox@redhat.com> - 4.6.4
- sys/sdt.h remove aarch64 and s390 float constraints
* Mon May 02 2022 Frank Ch. Eigler <fche@redhat.com> - 4.7-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* 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 Nov 15 2021 Serhei Makarov <me@serhei.io> - 4.6-1
- Upstream release, see wiki page below for detailed notes.
https://sourceware.org/systemtap/wiki/SystemTapReleases
* Thu Dec 02 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6.2
- sys/sdt.h fixes for glibc ftbfs
* Mon Nov 15 2021 Frank Ch. Eigler <fche@redhat.com> - 4.6-1
* Fri May 07 2021 Serhei Makarov <me@serhei.io> - 4.5-1
- Upstream release.
* Thu Aug 12 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-3
- rhbz1991631 iommu tracepoints break ppc64le
* Tue Jul 27 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-2
- rhbz1986543 rebuild against dyninst 11
* Fri May 07 2021 Frank Ch. Eigler <fche@redhat.com> - 4.5-1
- Upstream release.
* Tue Jan 26 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-9
- rhbz1927497 enable debuginfod client for buildid probing
* Tue Jan 26 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-8
- rhbz1902696 fix invocation as stapusr with procfs/lockdown
* Wed Jan 20 2021 Martin Cermak <mcermak@redhat.com> - 4.4-7
- rhbz1650594 fix boot time probing feature
* Mon Jan 04 2021 Frank Ch. Eigler <fche@redhat.com> - 4.4-6
- rhbz1906662 backport transport/utrace/locking patches
* Thu Dec 17 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-5
- rhbz1908904 fix lock-pushdown codegen for conditional probes
* Tue Dec 15 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-4
- rhbz1902696 fix invocation as stapusr vs. root
* Tue Nov 17 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-3
- rhbz1873492 related: rhel8 kernel_is_locked_down detection
* Mon Nov 16 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-2
- rhbz1898288: stability for exhausted UTRACE_TASK_WORK_POOL
- rhbz1873492 related: mokutil parser robustness for RH keys
* Mon Nov 09 2020 Frank Ch. Eigler <fche@redhat.com> - 4.4-1
- Upstream release.
* Wed Aug 12 2020 Martin Cermak <mcermak@redhat.com> - 4.3-4
- rhbz1868095: Refix including PR26379.
* 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-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.
* Mon Nov 18 2019 Sagar Patel <sapatel@redhat.com> - 4.2-1
- Upstream release.
* 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 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)
* Thu Jun 07 2018 Frank Ch. Eigler <fche@redhat.com> - 3.3-1
- Upstream release.
* 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.
@ -1562,7 +1501,7 @@ exit 0
- Upstream release.
* Mon Jul 07 2014 Josh Stone <jistone@redhat.com>
- Flip with_dyninst to an %%ifarch whitelist.
- Flip with_dyninst to an %%ifarch passlist.
* Wed Apr 30 2014 Jonathan Lebon <jlebon@redhat.com> - 2.5-1
- Upstream release.