Compare commits

..

No commits in common. "rawhide" and "f27" have entirely different histories.

14 changed files with 431 additions and 643 deletions

View file

@ -1 +0,0 @@
1

96
.gitignore vendored
View file

@ -1,3 +1,4 @@
*~
/systemtap-3.1.tar.gz
/systemtap-3.2-0.20170321git272146660f54.tar.gz
/systemtap-3.2-0.20170406git83d186dc7f5c.tar.gz
@ -18,98 +19,3 @@
/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-0.202102191905git0f623095ee3e.tar.gz
/systemtap-4.5-0.202102231232git663a93e8b82b.tar.gz
/systemtap-4.5-0.202104140931gitad00fb87e.tar.gz
/systemtap-4.5-0.202104140933gitad00fb87e.tar.gz
/systemtap-4.5-0.202105041345git02b6be05fb76.tar.gz
/systemtap-4.5.tar.gz
/systemtap-4.6-16261989g7c2751e3.tar.gz
/systemtap-4.6~pre16262008gbff2b2ff.tar.gz
/systemtap-4.6~pre16262012gc7f1c12e.tar.gz
/systemtap-4.6~pre16262021g84ef6bd9.tar.gz
/systemtap-4.6~pre16291338gf2c14776.tar.gz
/systemtap-4.6.tar.gz
/systemtap-4.7~pre16378386g61a4c8f8.tar.gz
/systemtap-4.7~pre16383943gecab2afe.tar.gz
/systemtap-4.7~pre16388948g209b5a19.tar.gz
/systemtap-4.7~pre16395042gefae8a3d.tar.gz
/systemtap-4.7~pre16432070g1d2cb8b3.tar.gz
/systemtap-4.7~pre16433134g7d871ab5.tar.gz
/systemtap-4.7~pre16468670g9f253544.tar.gz
/systemtap-4.7.tar.gz
/systemtap-4.8~pre16557277g2882dcc9.tar.gz
/systemtap-4.8~pre16578235g069e109c.tar.gz
/systemtap-4.8~pre16594727g09f1b7bb.tar.gz
/systemtap-4.8~pre16594741g5bdc37b9.tar.gz
/systemtap-4.8~pre16650659g6a096a7d.tar.gz
/systemtap-4.8.tar.gz
/systemtap-4.9.tar.gz
/systemtap-5.0~pre16885197g6b17715f.tar.gz
/systemtap-5.0~pre16885234gd98d6c2d.tar.gz
/systemtap-5.0~pre16890184ge891a37e.tar.gz
/systemtap-5.0~pre16891249ge891a37e.tar.gz
/systemtap-5.0~pre16958465gca71442b.tar.gz
/systemtap-5.0.tar.gz
/systemtap-5.1~pre17056120g2ccc0c4c.tar.gz
/systemtap-5.1~pre17056139g6c0b92b3.tar.gz
/systemtap-5.1~pre17059382g67086c54.tar.gz
/systemtap-5.1~pre17060399gb6abf4bd.tar.gz
/systemtap-5.1~pre17062114g2604d135.tar.gz
/systemtap-5.1~pre17062192g5fd8daba.tar.gz
/systemtap-5.1.tar.gz
/systemtap-5.1~pre17206206ge48abca5.tar.gz
/systemtap-5.2~pre17206355g1a07290a.tar.gz
/systemtap-5.2~pre17224323g98d1ea34.tar.gz
/systemtap-5.2~pre17250223gd07e4284.tar.gz
/systemtap-5.2~pre17277956g0b7f6722.tar.gz
/systemtap-5.2~pre17283218gc5774e18.tar.gz
/systemtap-5.2.tar.gz
/systemtap-5.2~pre17373420g1e894ff0.tar.gz
/systemtap-5.3~pre17373422g9a48fbea.tar.gz
/systemtap-5.3~pre17373794g3efe129d.tar.gz
/systemtap-5.3~pre17373816g7a71d34b.tar.gz
/systemtap-5.3.tar.gz
/systemtap-5.4~pre17585473g1fe4178d.tar.gz
/systemtap-5.4~pre17585496g86ab88eb.tar.gz
/systemtap-5.4.tar.gz

View file

@ -1,30 +0,0 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts: [bodhi_update_push_testing]
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation}
--- !Policy
product_versions:
- fedora-*
decision_contexts: [bodhi_update_push_stable]
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
- !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation}
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
- !PassingTestCaseRule {test_case_name: osci.brew-build.rebuild.validation}

View file

@ -1,12 +0,0 @@
summary: CI Gating Plan
discover:
how: fmf
url: https://src.fedoraproject.org/tests/systemtap-gating.git
ref: main
directory: tests
prepare:
- name: prepare
how: shell
script: ./plans/prepare.sh
execute:
how: tmt

View file

@ -1,36 +0,0 @@
#!/bin/bash
# On Rawhide, the running kernel packages won't probably be avail in
# configured repos. Debuginfo isn't a problem, we access that using
# the debuginfod.
__fedora_install_deps ()
{
TMPD=$(mktemp -d)
pushd $TMPD
koji download-build --rpm kernel-`uname -r` --arch `uname -i`
koji download-build --rpm kernel-devel-`uname -r` --arch `uname -i`
koji download-build --rpm kernel-modules-`uname -r` --arch `uname -i`
dnf -y install kernel{,-devel,-modules}-`uname -r`.rpm
popd
rm -rf $TMPD
}
set -xe
source /etc/os-release
# Install needed packages
if [ "$ID" == "fedora" ]; then
stap-prep || __fedora_install_deps
fi
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

134
rhbz1650371.patch Normal file
View file

@ -0,0 +1,134 @@
commit fba365b4d365f54ab7ef60272996dc2889461640
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Thu Nov 15 16:27:58 2018 -0500
PR23890: tolerate f29+ style ELF files
Reported by kenj@pcp, with mjw et al.'s help, we found out why
systemtap on fedora 29+ routinely fails to verify build-ids for
userspace programs. F29 adds a separate loadable segment with the
relevante .note's, before the main text segment. The runtime code
that listens to mmaps-in-progress now accepts this configuration.
As long as the .note section is loaded (time-wise and space-wise)
before the .text one(s), we're good.
diff --git a/runtime/linux/uprobes-inode.c b/runtime/linux/uprobes-inode.c
index 6d450c90d87c..b9604e6385ce 100644
--- a/runtime/linux/uprobes-inode.c
+++ b/runtime/linux/uprobes-inode.c
@@ -563,9 +563,11 @@ stapiu_change_plus(struct stapiu_target* target, struct task_struct *task,
return rc;
}
- /* Actually do the check. */
+ /* Actually do the check. NB: on F29+, offset may not equal 0
+ for LOADable "R E" segments, because the read-only .note.*
+ stuff may have been loaded earlier, separately. PR23890. */
if ((rc = _stp_usermodule_check(task, target->filename,
- relocation))) {
+ relocation - offset))) {
/* Be sure to release the inode on failure. */
iput(target->inode);
target->inode = NULL;
commit 824e9ab80108c1882842fc2a4b4abd1aee990ecc (upstream/master)
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Thu Nov 15 20:22:34 2018 -0500
PR23890 bonus: show nicer messages upon a buildid mismatch
Instead of producing only a one-byte error, we now compute the entire
builds into hex text strings, and report the whole shebang on an
error. (Also, ditch some 2.6.27 kernel-bug compatibiltiy fossil
in the area.)
diff --git a/runtime/sym.c b/runtime/sym.c
index 60f0fa980964..111147ee555d 100644
--- a/runtime/sym.c
+++ b/runtime/sym.c
@@ -636,30 +636,46 @@ unsigned long _stp_linenumber_lookup(unsigned long addr, struct task_struct *tas
return 0;
}
+
+// Compare two build-id hex strings, each of length m->build_id_len bytes.
+// Since mismatches can mystify, produce a hex-textual version of both
+// expected and actual strings, and compare textually. Failure messages
+// are more intelligible this way.
static int _stp_build_id_check (struct _stp_module *m,
unsigned long notes_addr,
struct task_struct *tsk)
{
- int j;
+ enum { max_buildid_hexstring = 65 };
+ static const char hexnibble[16]="0123456789abcdef";
+ char hexstring_theory[max_buildid_hexstring], hexstring_practice[max_buildid_hexstring];
+ int buildid_len = min((max_buildid_hexstring-1)/2, m->build_id_len);
+
+ int i, j;
+
+ memset(hexstring_theory, '\0', max_buildid_hexstring);
+ for (i=0, j=0; j<buildid_len; j++) {
+ unsigned char theory = m->build_id_bits[j];
+ hexstring_theory[i++] = hexnibble[theory >> 4];
+ hexstring_theory[i++] = hexnibble[theory & 15];
+ }
- for (j = 0; j < m->build_id_len; j++) {
+ memset(hexstring_practice, '\0', max_buildid_hexstring);
+ for (i=0, j=0; j<buildid_len; j++) {
/* Use set_fs / get_user to access conceivably invalid addresses.
* If loc2c-runtime.h were more easily usable, a deref() loop
* could do it too. */
mm_segment_t oldfs = get_fs();
int rc;
- unsigned char theory, practice = 0;
+ unsigned char practice = 0;
#ifdef STAPCONF_PROBE_KERNEL
if (!tsk) {
- theory = m->build_id_bits[j];
set_fs(KERNEL_DS);
rc = probe_kernel_read(&practice, (void*)(notes_addr + j), 1);
}
else
#endif
{
- theory = m->build_id_bits[j];
set_fs (tsk ? USER_DS : KERNEL_DS);
/*
@@ -685,21 +701,19 @@ static int _stp_build_id_check (struct _stp_module *m,
}
set_fs(oldfs);
- if (rc || (theory != practice)) {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
- _stp_error ("Build-id mismatch [man error::buildid]: \"%s\" byte %d (0x%02x vs 0x%02x) address %#lx rc %d\n",
- m->path, j, theory, practice, notes_addr, rc);
+ if (rc == 0) { // got actual data byte
+ hexstring_practice[i++] = hexnibble[practice >> 4];
+ hexstring_practice[i++] = hexnibble[practice & 15];
+ }
+ }
+
+ // have two strings, will travel
+ if (strcmp (hexstring_practice, hexstring_theory)) {
+ _stp_error ("Build-id mismatch [man error::buildid]: \"%s\" address %#lx, expected %s actual %s\n",
+ m->path, notes_addr, hexstring_theory, hexstring_practice);
return 1;
-#else
- /* This branch is a surrogate for kernels affected by Fedora bug
- * #465873. */
- _stp_warn (KERN_WARNING
- "Build-id mismatch [man error::buildid]: \"%s\" byte %d (0x%02x vs 0x%02x) rc %d\n",
- m->path, j, theory, practice, rc);
-#endif
- break;
- } /* end mismatch */
- } /* end per-byte check loop */
+ }
+
return 0;
}

View file

@ -1,26 +0,0 @@
# 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:
- *.stp

View file

@ -1 +1 @@
SHA512 (systemtap-5.4.tar.gz) = 5869fe3735e44be65ba7895a46b4ea66fcdcc21ed2ab0673c62d822730553837f816d82fd78eeca4bfe6f17fdeaa12eb2f94c0b0b7ebb8c495c961f0b6935785
SHA512 (systemtap-4.0.tar.gz) = 66b5ba1902ed974101429dce9fee849273d3dc64e862c057177d158c5f284cc93299819ee8ee49d4bd3b7ff47a3512b1c68b74cad374147ce67fa406c7518c79

View file

@ -1,13 +0,0 @@
--- systemtap-5.4/configure~ 2025-10-30 14:47:35.000000000 +0000
+++ systemtap-5.4/configure 2026-01-13 18:53:20.466037572 +0000
@@ -3121,8 +3121,8 @@
}
{
// Unicode literals
- char const *utf8 = u8"UTF-8 string \u2500";
- char16_t const *utf16 = u"UTF-8 string \u2500";
+ auto const *utf8 = u8"UTF-8 string \u2500";
+ char16_t const *utf16 = u"UTF-16 string \u2500";
char32_t const *utf32 = U"UTF-32 string \u2500";
}
'

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,38 @@
TOPLEVEL_NAMESPACE=fedora
PACKAGE_NAME=systemtap
RELATIVE_PATH=Sanity/dejagnu-smoketest
export TESTVERSION=1.0
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
.PHONY: all install download clean
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
chmod a+x ./runtest.sh
clean:
rm -f *~ *.rpm $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
# Generate the testinfo.desc here:
$(METADATA): Makefile
@touch $(METADATA)
# Change to the test owner's name
@echo "Owner: Frank Ch. Eigler <fche@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "Description: smoke test" >> $(METADATA)
@echo "TestTime: 10m" >> $(METADATA)
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
# You may need other fields here; see the documentation
rhts-lint $(METADATA)

View file

@ -0,0 +1,3 @@
Test Name: dejagnu-smoketest
Author:
Short Description: Run a minimal systemtap testsuite

View file

@ -0,0 +1,17 @@
#!/bin/sh
set -e
set -x
dnf debuginfo-install -y kernel
# on Fedora CI, can only assume about 1GB RAM to run these tests
stap -L 'process("stap").mark("*")' | grep pass
# stap -L 'kernel.trace("sys_enter")'
stap -v --example helloworld.stp
stap -v -T 10 -p4 -e 'probe kernel.function("do_exit") {println($$vars)}'
# stap -v -T 10 -e 'probe syscall.* ? {println(argstr)}'
echo
echo RESULT: PASS

11
tests/tests.yml Normal file
View file

@ -0,0 +1,11 @@
---
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
tests:
- dejagnu-smoketest
required_packages:
- systemtap-testsuite
- kernel-devel