From a1c4f9531e7920639b8c158bcba1012c556da790 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 11 Jan 2022 13:01:32 -0500 Subject: [PATCH] import systemtap-4.6-4.el9 --- .gitignore | 2 +- .systemtap.metadata | 2 +- SOURCES/rhbz1972798.patch | 19 + SOURCES/rhbz1972803.patch | 24 - SOURCES/rhbz1972805.patch | 52 -- SOURCES/rhbz1972828.patch | 29 - SOURCES/rhbz1982908.patch | 222 ------ SOURCES/rhbz1985124.patch | 1091 ------------------------------ SOURCES/rhbz2025054python3.patch | 95 +++ SOURCES/sdt-asm-glibc.patch | 146 ++++ SPECS/systemtap.spec | 119 +++- 11 files changed, 356 insertions(+), 1445 deletions(-) create mode 100644 SOURCES/rhbz1972798.patch delete mode 100644 SOURCES/rhbz1972803.patch delete mode 100644 SOURCES/rhbz1972805.patch delete mode 100644 SOURCES/rhbz1972828.patch delete mode 100644 SOURCES/rhbz1982908.patch delete mode 100644 SOURCES/rhbz1985124.patch create mode 100644 SOURCES/rhbz2025054python3.patch create mode 100644 SOURCES/sdt-asm-glibc.patch diff --git a/.gitignore b/.gitignore index 7e2d8f3..5e535be 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/systemtap-4.5.tar.gz +SOURCES/systemtap-4.6.tar.gz diff --git a/.systemtap.metadata b/.systemtap.metadata index cd69235..dad6e4d 100644 --- a/.systemtap.metadata +++ b/.systemtap.metadata @@ -1 +1 @@ -c549d5fa7aaf6a8cef3371f5757d912d41eae934 SOURCES/systemtap-4.5.tar.gz +ecc45371b378fc3824a5547b02c030b4123d6769 SOURCES/systemtap-4.6.tar.gz diff --git a/SOURCES/rhbz1972798.patch b/SOURCES/rhbz1972798.patch new file mode 100644 index 0000000..e93607c --- /dev/null +++ b/SOURCES/rhbz1972798.patch @@ -0,0 +1,19 @@ +commit 2c11a115bdbe41a7f064ccd32b41c76c5b7c516d +Author: Martin Cermak +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) diff --git a/SOURCES/rhbz1972803.patch b/SOURCES/rhbz1972803.patch deleted file mode 100644 index 48dd753..0000000 --- a/SOURCES/rhbz1972803.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit eaf63df6a429956bdc03f2ecd8fc2b6fa50321a8 -Author: Frank Ch. Eigler -Date: Wed Jun 23 20:16:52 2021 -0400 - - ppc64 runtime: FULL_REGS() gone - - Adapt to kernel commit 8dc7f0229b78, which dropped the titular macro - from ppc64 ptrace.h header. - -diff --git a/runtime/linux/regs.c b/runtime/linux/regs.c -index 26423164b..5c3a86c62 100644 ---- a/runtime/linux/regs.c -+++ b/runtime/linux/regs.c -@@ -182,6 +182,10 @@ static void _stp_print_regs(struct pt_regs * regs) - } - - _stp_printf("%016lX ", regs->gpr[i]); -+/* since kernel commit 8dc7f0229 */ -+#ifndef FULL_REGS -+#define FULL_REGS(r) true -+#endif - if (i == 13 && !FULL_REGS(regs)) - break; - } diff --git a/SOURCES/rhbz1972805.patch b/SOURCES/rhbz1972805.patch deleted file mode 100644 index 4c95f78..0000000 --- a/SOURCES/rhbz1972805.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit 5409ddea1a007384b9c71a78e8dd2cbca1fc5424 -Author: Frank Ch. Eigler -Date: Thu Jul 1 14:41:06 2021 -0400 - - rhbz1972805: add basic syscall-in-ptregs support for s390x - - Akin to commit 7be7af0fda36 for ARM, add basic syscalls via - tracepoints / CONTEXT->sregs support for s390x. The argno=6 case is - funny because for syscalls they travel in registers, whereas normally - they hop onto the stack. - -diff --git a/tapset/s390/registers.stp b/tapset/s390/registers.stp -index b3986cdd9..cbe7e8483 100644 ---- a/tapset/s390/registers.stp -+++ b/tapset/s390/registers.stp -@@ -136,7 +136,10 @@ function uarch_bytes:long() { - function _stp_get_register_by_offset:long (offset:long) %{ /* pure */ - long value; - struct pt_regs *regs; -- regs = (CONTEXT->user_mode_p ? CONTEXT->uregs : CONTEXT->kregs); -+ if (CONTEXT->sregs) -+ regs = CONTEXT->sregs; -+ else -+ regs = (CONTEXT->user_mode_p ? CONTEXT->uregs : CONTEXT->kregs); - if (!regs) { - CONTEXT->last_error = "No registers available in this context"; - return; -@@ -169,9 +172,10 @@ function _stp_sign_extend32:long (value:long) { - } - - function _stp_register:long (name:string, sign_extend:long) { -- assert(registers_valid(), "cannot access CPU registers in this context") -+ # don't assert this: will get *regs state checked in _stp_get_register_by_offset, and better -+ # assert(registers_valid(), "cannot access CPU registers in this context") - offset = _reg_offsets[name] -- assert(offset != 0 || (name in _reg_offsets), "Unknown register: " . name) -+ assert(offset != 0 || (name in _reg_offsets), "Unknown register: " . name) - value = _stp_get_register_by_offset(offset) - if (probing_32bit_app()) { - if (sign_extend) -@@ -235,8 +239,10 @@ function _stp_arg2:long (argnum:long, sign_extend:long, truncate:long, - val = u_register("r5") - else if (argnum == 5) - val = u_register("r6") -+ else if (argnum == 6 && %{ CONTEXT->sregs != NULL %} ) // linux syscall arg6 goes into r7 -+ val = u_register("r7") - else if (argnum >= 6) -- val = _stp_get_kernel_stack_param(argnum - 6) -+ val = _stp_get_kernel_stack_param(argnum - 6); - - if ((truncate || @__compat_task) && !force64) { - /* High bits may be garbage. */ diff --git a/SOURCES/rhbz1972828.patch b/SOURCES/rhbz1972828.patch deleted file mode 100644 index 9598ac8..0000000 --- a/SOURCES/rhbz1972828.patch +++ /dev/null @@ -1,29 +0,0 @@ -commit 515a6a2d63cdf16c5bc599f0d29283289219d9a4 -Author: Frank Ch. Eigler -Date: Thu Jun 24 13:30:38 2021 -0400 - - rhbz1972828: tapsets: iommu tracepoints - - Disable detection of intel-iommu tracepoint family on non-x86 - platforms, because the 5.13ish kernel headers for this tracepoint - include references to functions like clcache_flush_range which don't - exist on all non-x86. - -diff --git a/tapsets.cxx b/tapsets.cxx -index a5e41129f..20e0cb68f 100644 ---- a/tapsets.cxx -+++ b/tapsets.cxx -@@ -11930,6 +11930,13 @@ static vector tracepoint_extra_decls (systemtap_session& s, - they_live.push_back ("#include "); - } - -+ if (header.find("intel_iommu") != string::npos && s.architecture != "x86_64" && s.architecture != "i386") -+ { -+ // need asm/cacheflush.h for clflush_cache_range() used in that header, -+ // but this function does not exist on e.g. ppc -+ they_live.push_back ("#error nope"); -+ } -+ - if (header.find("wbt") != string::npos) - { - // blk-wbt.h gets included as "../../../block/blk-wbt.h", so we diff --git a/SOURCES/rhbz1982908.patch b/SOURCES/rhbz1982908.patch deleted file mode 100644 index f7bc9f1..0000000 --- a/SOURCES/rhbz1982908.patch +++ /dev/null @@ -1,222 +0,0 @@ -commit 04b43f48f1091bdc4bfdbabae86745547e539f8c -Author: Frank Ch. Eigler -Date: Mon Jul 26 15:49:15 2021 -0400 - - releng: ditch custom pie/ssp CFLAGS engine in configure.ac - - Just inherit the desired c*flags from autoconf via environment - variables from the distro spec files. This lets us automatically - benefit from centralized hardening flags on some distros. OTOH - distros without that now will need to add such settings to the build - scripts that invoke this configure script. - -diff --git a/configure b/configure -index 3830ca898..55ff87330 100755 ---- a/configure -+++ b/configure -@@ -904,8 +904,6 @@ with_libiconv_prefix - with_libintl_prefix - enable_prologues - enable_sdt_probes --enable_ssp --enable_pie - with_debuginfod - enable_sqlite - enable_translator -@@ -1609,8 +1607,6 @@ Optional Features: - --disable-rpath do not hardcode runtime library paths - --enable-prologues make -P prologue-searching default - --disable-sdt-probes disable process.mark probes in stap, staprun, stapio -- --disable-ssp disable gcc stack-protector -- --enable-pie enable position-independent-executable - --enable-sqlite build with sqlite support - --disable-translator build only runtime utilities - --enable-crash[=DIRECTORY] -@@ -10269,82 +10265,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - fi - --# Check whether --enable-ssp was given. --if test "${enable_ssp+set}" = set; then : -- enableval=$enable_ssp; --fi -- --if test "x$enable_ssp" != xno; then : -- -- save_CFLAGS="$CFLAGS" -- save_CXXFLAGS="$CXXFLAGS" -- CXXFLAGS="-Werror -fstack-protector-all -D_FORTIFY_SOURCE=2 $CXXFLAGS" -- CFLAGS="-Werror -fstack-protector-all -D_FORTIFY_SOURCE=2 $CFLAGS" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --int something (); --_ACEOF --if ac_fn_c_try_compile "$LINENO"; then : -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling with gcc -fstack-protector-all et al." >&5 --$as_echo "$as_me: Compiling with gcc -fstack-protector-all et al." >&6;} -- CFLAGS="-fstack-protector-all -D_FORTIFY_SOURCE=2 $save_CFLAGS" -- CXXFLAGS="-fstack-protector-all -D_FORTIFY_SOURCE=2 $save_CXXFLAGS" --else -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not support -fstack-protector-all et al." >&5 --$as_echo "$as_me: Compiler does not support -fstack-protector-all et al." >&6;} -- CFLAGS="$save_CFLAGS" -- CXXFLAGS="$save_CXXFLAGS" --fi --rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext --fi -- -- -- -- --# Compiling with fPIE by default (but see PR 9922) --# Check whether --enable-pie was given. --if test "${enable_pie+set}" = set; then : -- enableval=$enable_pie; --fi -- --if test "x$enable_pie" != xno; then : -- -- PIECFLAGS='-fPIE' -- PIECXXFLAGS='-fPIE' -- PIELDFLAGS='-pie -Wl,-z,relro -Wl,-z,now' -- save_CFLAGS="$CFLAGS" -- save_CXXFLAGS="$CXXFLAGS" -- save_LDFLAGS="$LDFLAGS" -- CFLAGS="$CFLAGS $PIECFLAGS" -- CXXFLAGS="$CXXFLAGS $PIECXXFLAGS" -- LDFLAGS="$LDFLAGS $PIELDFLAGS" -- cat confdefs.h - <<_ACEOF >conftest.$ac_ext --/* end confdefs.h. */ --void main () {} --_ACEOF --if ac_fn_c_try_link "$LINENO"; then : -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling with gcc pie et al." >&5 --$as_echo "$as_me: Compiling with gcc pie et al." >&6;} -- --else -- -- { $as_echo "$as_me:${as_lineno-$LINENO}: Compiler does not support -pie et al." >&5 --$as_echo "$as_me: Compiler does not support -pie et al." >&6;} -- PIECFLAGS="" -- PIECXXFLAGS="" -- PIELDFLAGS="" -- --fi --rm -f core conftest.err conftest.$ac_objext \ -- conftest$ac_exeext conftest.$ac_ext -- CFLAGS="$save_CFLAGS" -- CXXFLAGS="$save_CXXFLAGS" -- LDFLAGS="$save_LDFLAGS" -- --fi - - - -diff --git a/configure.ac b/configure.ac -index d4fd9e1b0..a88c20bff 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -190,60 +190,8 @@ AS_IF([test "x$HAVE_CXX11" != x1],[ - AC_LANG_POP(C++) - ]) - --AC_ARG_ENABLE([ssp], -- [AS_HELP_STRING([--disable-ssp], [disable gcc stack-protector])]) --AS_IF([test "x$enable_ssp" != xno],[ -- save_CFLAGS="$CFLAGS" -- save_CXXFLAGS="$CXXFLAGS" -- CXXFLAGS="-Werror -fstack-protector-all -D_FORTIFY_SOURCE=2 $CXXFLAGS" -- CFLAGS="-Werror -fstack-protector-all -D_FORTIFY_SOURCE=2 $CFLAGS" -- AC_COMPILE_IFELSE([AC_LANG_SOURCE([int something ();])], [ -- AC_MSG_NOTICE([Compiling with gcc -fstack-protector-all et al.]) -- CFLAGS="-fstack-protector-all -D_FORTIFY_SOURCE=2 $save_CFLAGS" -- CXXFLAGS="-fstack-protector-all -D_FORTIFY_SOURCE=2 $save_CXXFLAGS"],[ -- AC_MSG_NOTICE([Compiler does not support -fstack-protector-all et al.]) -- CFLAGS="$save_CFLAGS" -- CXXFLAGS="$save_CXXFLAGS"])]) -- -- --dnl Link with gold if possible --dnl but: https://bugzilla.redhat.com/show_bug.cgi?id=636603 --dnl --dnl AC_PATH_PROG(GOLD, [ld.gold], [no]) --dnl if test "x$GOLD" != "xno" --dnl then --dnl mkdir -p Bdir --dnl ln -sf $GOLD Bdir/ld --dnl LDFLAGS="$LDFLAGS -B`pwd`/Bdir/" --dnl AC_MSG_NOTICE([using ld.gold to link]) --dnl fi -- -- --# Compiling with fPIE by default (but see PR 9922) --AC_ARG_ENABLE([pie], -- [AS_HELP_STRING([--enable-pie], [enable position-independent-executable])]) --AS_IF([test "x$enable_pie" != xno],[ -- PIECFLAGS='-fPIE' -- PIECXXFLAGS='-fPIE' -- PIELDFLAGS='-pie -Wl,-z,relro -Wl,-z,now' -- save_CFLAGS="$CFLAGS" -- save_CXXFLAGS="$CXXFLAGS" -- save_LDFLAGS="$LDFLAGS" -- CFLAGS="$CFLAGS $PIECFLAGS" -- CXXFLAGS="$CXXFLAGS $PIECXXFLAGS" -- LDFLAGS="$LDFLAGS $PIELDFLAGS" -- AC_LINK_IFELSE([AC_LANG_SOURCE([void main () {}])], [ -- AC_MSG_NOTICE([Compiling with gcc pie et al.]) -- ], [ -- AC_MSG_NOTICE([Compiler does not support -pie et al.]) -- PIECFLAGS="" -- PIECXXFLAGS="" -- PIELDFLAGS="" -- ]) -- CFLAGS="$save_CFLAGS" -- CXXFLAGS="$save_CXXFLAGS" -- LDFLAGS="$save_LDFLAGS" --]) -+dnl Carry forward some empty PIE*FLAGS so we don't have to modify -+dnl all the Makefile.am's just now. - AC_SUBST(PIELDFLAGS) - AC_SUBST(PIECFLAGS) - AC_SUBST(PIECXXFLAGS) -diff --git a/systemtap.spec b/systemtap.spec -index e5224e902..a2458b4b5 100644 ---- a/systemtap.spec -+++ b/systemtap.spec -@@ -11,7 +11,6 @@ - %endif - %{!?with_rpm: %global with_rpm 1} - %{!?elfutils_version: %global elfutils_version 0.179} --%{!?pie_supported: %global pie_supported 1} - %{!?with_boost: %global with_boost 0} - %ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64 - %{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7} -@@ -589,14 +588,6 @@ systemtap-runtime-virthost machine to execute systemtap scripts. - %global docs_config --enable-docs=prebuilt - %endif - --# Enable pie as configure defaults to disabling it --%if %{pie_supported} --%global pie_config --enable-pie --%else --%global pie_config --disable-pie --%endif -- -- - %if %{with_java} - %global java_config --with-java=%{_jvmdir}/java - %else -@@ -646,8 +637,8 @@ systemtap-runtime-virthost machine to execute systemtap scripts. - # 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} %{pie_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} -+%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}" -+make %{?_smp_mflags} V=1 - - - %install diff --git a/SOURCES/rhbz1985124.patch b/SOURCES/rhbz1985124.patch deleted file mode 100644 index 22ef5a0..0000000 --- a/SOURCES/rhbz1985124.patch +++ /dev/null @@ -1,1091 +0,0 @@ -commit 7c2751e37f97e95d77898d68b7c08cbf1be7f7d9 -Author: Sultan Alsawaf -Date: Mon Jul 12 15:31:36 2021 -0500 - - task_finder_vma: add autoconf check for hlist_add_tail_rcu() - - The 3.10 version check for hlist_add_tail_rcu() only works for RHEL - kernels. Kernels older than 4.7 that lack the hlist_add_tail_rcu() backport - won't compile (such as Debian kernels). Add an autoconf stub to know for - certain if hlist_add_tail_rcu() is present. - -diff --git a/buildrun.cxx b/buildrun.cxx -index ba3daa0a0..0c244db72 100644 ---- a/buildrun.cxx -+++ b/buildrun.cxx -@@ -520,6 +520,8 @@ compile_pass (systemtap_session& s) - "STAPCONF_ATOMIC_FETCH_ADD_UNLESS", NULL); - output_autoconf(s, o, cs, "autoconf-lockdown-debugfs.c", "STAPCONF_LOCKDOWN_DEBUGFS", NULL); - output_autoconf(s, o, cs, "autoconf-lockdown-kernel.c", "STAPCONF_LOCKDOWN_KERNEL", NULL); -+ output_autoconf(s, o, cs, "autoconf-hlist_add_tail_rcu.c", -+ "STAPCONF_HLIST_ADD_TAIL_RCU", NULL); - - // used by runtime/linux/netfilter.c - output_exportconf(s, o2, "nf_register_hook", "STAPCONF_NF_REGISTER_HOOK"); -diff --git a/runtime/linux/autoconf-hlist_add_tail_rcu.c b/runtime/linux/autoconf-hlist_add_tail_rcu.c -new file mode 100644 -index 000000000..2c4660837 ---- /dev/null -+++ b/runtime/linux/autoconf-hlist_add_tail_rcu.c -@@ -0,0 +1,6 @@ -+#include -+ -+void foo(struct hlist_node *n, struct hlist_head *h) -+{ -+ hlist_add_tail_rcu(n, h); -+} - -commit ef5a8b9eda402e4e96c4e3ce01e7ff95d3e10470 -Author: Du Zhe -Date: Tue Jul 13 19:11:55 2021 -0400 - - runtime: fix unintended compile error with autoconf-x86-uniregs.c - - Adding a #include restores this test on the gentoo - linux-5.10.47-gentoo kernel. - -diff --git a/runtime/linux/autoconf-x86-uniregs.c b/runtime/linux/autoconf-x86-uniregs.c -index 25729c220..232c18670 100644 ---- a/runtime/linux/autoconf-x86-uniregs.c -+++ b/runtime/linux/autoconf-x86-uniregs.c -@@ -1,3 +1,4 @@ -+#include - #include - - #if defined (__i386__) || defined (__x86_64__) - -commit 968173f7fb97675de94c8ca47e6b6898b1117a1d -Author: Frank Ch. Eigler -Date: Tue Jul 13 19:34:50 2021 -0400 - - runtime: linux 5.14 compat: - - Linux commit f39650de687e3 moved some kernel decls around. - -diff --git a/buildrun.cxx b/buildrun.cxx -index 0c244db72..a1332a687 100644 ---- a/buildrun.cxx -+++ b/buildrun.cxx -@@ -383,7 +383,8 @@ compile_pass (systemtap_session& s) - output_exportconf(s, o2, "cpu_khz", "STAPCONF_CPU_KHZ"); - output_exportconf(s, o2, "__module_text_address", "STAPCONF_MODULE_TEXT_ADDRESS"); - output_exportconf(s, o2, "add_timer_on", "STAPCONF_ADD_TIMER_ON"); -- -+ output_autoconf(s, o, cs, "autoconf-514-panic.c", "STAPCONF_514_PANIC", NULL); -+ - output_dual_exportconf(s, o2, "probe_kernel_read", "probe_kernel_write", "STAPCONF_PROBE_KERNEL"); - output_autoconf(s, o, cs, "autoconf-hw_breakpoint_context.c", - "STAPCONF_HW_BREAKPOINT_CONTEXT", NULL); -diff --git a/runtime/linux/autoconf-514-panic.c b/runtime/linux/autoconf-514-panic.c -new file mode 100644 -index 000000000..57b1a0026 ---- /dev/null -+++ b/runtime/linux/autoconf-514-panic.c -@@ -0,0 +1,3 @@ -+#include -+ -+void* c = & panic_notifier_list; -diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c -index 32ef99da6..9b9d6cbe2 100644 ---- a/runtime/transport/transport.c -+++ b/runtime/transport/transport.c -@@ -24,6 +24,9 @@ - #ifdef STAPCONF_LOCKDOWN_DEBUGFS - #include - #endif -+#ifdef STAPCONF_514_PANIC -+#include -+#endif - #include "../uidgid_compatibility.h" - - static int _stp_exit_flag = 0; - -commit a29f65d5750f6379afeca99c5d641598ff638517 -Author: Stan Cox -Date: Sun Jul 18 21:32:51 2021 -0400 - - PR28079: Adapt to kernel 5.14 task_struct.__state change - - Use signal_wake_up_state for the 5.14 kernel which changed volatile long state to unsigned int __state. - -diff --git a/buildrun.cxx b/buildrun.cxx -index a1332a687..ae27ddea4 100644 ---- a/buildrun.cxx -+++ b/buildrun.cxx -@@ -523,6 +523,7 @@ compile_pass (systemtap_session& s) - output_autoconf(s, o, cs, "autoconf-lockdown-kernel.c", "STAPCONF_LOCKDOWN_KERNEL", NULL); - output_autoconf(s, o, cs, "autoconf-hlist_add_tail_rcu.c", - "STAPCONF_HLIST_ADD_TAIL_RCU", NULL); -+ output_autoconf(s, o, cs, "autoconf-task-state.c", "STAPCONF_TASK_STATE", NULL); - - // used by runtime/linux/netfilter.c - output_exportconf(s, o2, "nf_register_hook", "STAPCONF_NF_REGISTER_HOOK"); -diff --git a/runtime/linux/autoconf-task-state.c b/runtime/linux/autoconf-task-state.c -new file mode 100644 -index 000000000..27a1d7c13 ---- /dev/null -+++ b/runtime/linux/autoconf-task-state.c -@@ -0,0 +1,18 @@ -+/* -+ * Is this a kernel prior to the following kernel commit: -+ * -+ * commit 2f064a59a11ff9bc22e52e9678bc601404c7cb34 -+ * Author: Peter Zijlstra -+ * Date: 2021-06-11 10:28:17 +0200 -+ * -+ * sched: Change task_struct::state -+ * Change the type and name of task_struct::state. Drop the volatile and -+ * shrink it to an 'unsigned int'. Rename it in order to find all uses -+ * such that we can use READ_ONCE/WRITE_ONCE as appropriate. -+ */ -+ -+#include -+ -+unsigned int bar (struct task_struct *foo) { -+ return (foo->state = 0); -+} -diff --git a/runtime/stp_utrace.c b/runtime/stp_utrace.c -index ff8c5549d..d63e6366c 100644 ---- a/runtime/stp_utrace.c -+++ b/runtime/stp_utrace.c -@@ -33,9 +33,12 @@ - #if defined(__set_task_state) - #define __stp_set_task_state(tsk, state_value) \ - __set_task_state((tsk), (state_value)) --#else -+#elif defined(STAPCONF_TASK_STATE) - #define __stp_set_task_state(tsk, state_value) \ - do { (tsk)->state = (state_value); } while (0) -+#else -+#define __stp_set_task_state(tsk, state_value) \ -+ signal_wake_up_state((tsk), (state_value)) - #endif - - // For now, disable the task_work_queue on non-RT kernels. -@@ -1263,7 +1266,7 @@ static void utrace_wakeup(struct task_struct *target, struct utrace *utrace) - spin_lock_irq(&target->sighand->siglock); - if (target->signal->flags & SIGNAL_STOP_STOPPED || - target->signal->group_stop_count) -- target->state = TASK_STOPPED; -+ __stp_set_task_state(target, TASK_STOPPED); - else - stp_wake_up_state(target, __TASK_TRACED); - spin_unlock_irq(&target->sighand->siglock); - -commit ffb0a38ea0ded9561233ffcb2d9b52a46ddf70ed -Author: Frank Ch. Eigler -Date: Thu Jul 22 19:16:12 2021 -0400 - - runtime: adapt to -Werror=implicit-fallthrough=5 - - Linux kbuild commit d936eb23874 sets $subject CFLAGS, so to play - catch-up, we also need to use gcc attribute(fallthrough) to label such - spots in switch() statements in our runtime / tapset. Tested on - linux5.14 gcc11 rawhide and linux3.10 gcc4 rhel7. - -diff --git a/runtime/linux/runtime.h b/runtime/linux/runtime.h -index 035f0bd97..e57d10a8a 100644 ---- a/runtime/linux/runtime.h -+++ b/runtime/linux/runtime.h -@@ -65,6 +65,22 @@ - static void *kallsyms_copy_to_kernel_nofault; - #endif - -+ -+/* A fallthrough; macro to let the runtime survive -Wimplicit-fallthrough=5 */ -+/* from */ -+#ifndef fallthrough -+#if __GNUC__ < 5 -+# define fallthrough do {} while (0) /* fallthrough */ -+#else -+#if __has_attribute(__fallthrough__) -+# define fallthrough __attribute__((__fallthrough__)) -+#else -+# define fallthrough do {} while (0) /* fallthrough */ -+#endif -+#endif -+#endif -+ -+ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23) - #include - #endif -diff --git a/runtime/map-gen.c b/runtime/map-gen.c -index aeeab38bf..47317d61f 100644 ---- a/runtime/map-gen.c -+++ b/runtime/map-gen.c -@@ -112,9 +112,9 @@ - k1 = 0; \ - switch(mylen & 3) { \ - case 3: k1 ^= tail[2] << 16; \ -- /* fallthrough */ \ -+ fallthrough; \ - case 2: k1 ^= tail[1] << 8; \ -- /* fallthrough */ \ -+ fallthrough; \ - case 1: k1 ^= tail[0]; \ - k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; \ - } \ -diff --git a/runtime/syscall.h b/runtime/syscall.h -index 6b4b3071a..f5b473b04 100644 ---- a/runtime/syscall.h -+++ b/runtime/syscall.h -@@ -351,23 +351,23 @@ _stp_syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, - case 0: - if (!n--) break; - *args++ = regs->bx; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->cx; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->dx; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->si; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->di; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->bp; -@@ -375,23 +375,23 @@ _stp_syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, - case 0: - if (!n--) break; - *args++ = regs->rbx; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->rcx; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->rdx; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->rsi; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->rdi; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->rbp; -@@ -405,23 +405,23 @@ _stp_syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, - case 0: - if (!n--) break; - *args++ = regs->di; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->si; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->dx; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->r10; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->r8; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->r9; -@@ -429,23 +429,23 @@ _stp_syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, - case 0: - if (!n--) break; - *args++ = regs->rdi; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->rsi; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->rdx; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->r10; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->r8; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->r9; -@@ -575,30 +575,30 @@ static inline void _stp_syscall_get_arguments(struct task_struct *task, - case 6: - if (!n--) break; - *args++ = regs->r13; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->r15; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->r14; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->r10; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->r9; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->r11; -- /* fallthrough */ -+ fallthrough; - case 0: - if (!n--) break; -- /* fallthrough */ -+ fallthrough; - default: - BUG(); - break; -@@ -630,23 +630,23 @@ _stp_syscall_get_arguments(struct task_struct *task, struct pt_regs *regs, - case 0: - if (!n--) break; - *args++ = regs->orig_gpr2 & mask; -- /* fallthrough */ -+ fallthrough; - case 1: - if (!n--) break; - *args++ = regs->gprs[3] & mask; -- /* fallthrough */ -+ fallthrough; - case 2: - if (!n--) break; - *args++ = regs->gprs[4] & mask; -- /* fallthrough */ -+ fallthrough; - case 3: - if (!n--) break; - *args++ = regs->gprs[5] & mask; -- /* fallthrough */ -+ fallthrough; - case 4: - if (!n--) break; - *args++ = regs->gprs[6] & mask; -- /* fallthrough */ -+ fallthrough; - case 5: - if (!n--) break; - *args++ = regs->args[0] & mask; -diff --git a/runtime/unwind.c b/runtime/unwind.c -index dba16a724..6916d2e96 100644 ---- a/runtime/unwind.c -+++ b/runtime/unwind.c -@@ -527,7 +527,7 @@ static int processCFI(const u8 *start, const u8 *end, unsigned long targetLoc, - REG_STATE.cfa.reg = value; - dbug_unwind(1, "DW_CFA_def_cfa reg=%ld\n", REG_STATE.cfa.reg); - } -- /* fallthrough */ -+ fallthrough; - case DW_CFA_def_cfa_offset: - if (REG_STATE.cfa_is_expr != 0) { - _stp_warn("Unexpected DW_CFA_def_cfa_offset\n"); -@@ -549,7 +549,7 @@ static int processCFI(const u8 *start, const u8 *end, unsigned long targetLoc, - value, DWARF_REG_MAP(value)); - REG_STATE.cfa.reg = value; - } -- /* fallthrough */ -+ fallthrough; - case DW_CFA_def_cfa_offset_sf: - if (REG_STATE.cfa_is_expr != 0) { - _stp_warn("Unexpected DW_CFA_def_cfa_offset_sf\n"); -@@ -922,7 +922,7 @@ static int compute_expr(const u8 *expr, struct unwind_frame_info *frame, - case DW_OP_bra: - if (POP == 0) - break; -- /* Fall through. */ -+ fallthrough; - case DW_OP_skip: - NEED(sizeof(u.s16)); - memcpy(&u.s16, expr, sizeof(u.s16)); -diff --git a/runtime/unwind/unwind.h b/runtime/unwind/unwind.h -index a9586a338..5c68a5f03 100644 ---- a/runtime/unwind/unwind.h -+++ b/runtime/unwind/unwind.h -@@ -154,13 +154,13 @@ static unsigned long read_ptr_sect(const u8 **pLoc, const void *end, - value = _stp_get_unaligned(ptr.p32u++); - break; - } -- /* fallthrough */ -+ fallthrough; - case DW_EH_PE_data8: - BUILD_BUG_ON(sizeof(u64) != sizeof(value)); - #else - BUILD_BUG_ON(sizeof(u32) != sizeof(value)); - #endif -- /* fallthrough */ -+ fallthrough; - case DW_EH_PE_absptr: - if (compat_task) - { -diff --git a/runtime/vsprintf.c b/runtime/vsprintf.c -index 417d9f7f3..cd31a938b 100644 ---- a/runtime/vsprintf.c -+++ b/runtime/vsprintf.c -@@ -641,7 +641,7 @@ _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) - - case 'X': - flags |= STP_LARGE; -- /* fallthru */ -+ fallthrough; - case 'x': - base = 16; - break; -@@ -649,7 +649,7 @@ _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) - case 'd': - case 'i': - flags |= STP_SIGN; -- /* fallthru */ -+ fallthrough; - case 'u': - break; - -@@ -835,7 +835,7 @@ _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) - - case 'X': - flags |= STP_LARGE; -- /* fallthru */ -+ fallthrough; - case 'x': - base = 16; - break; -@@ -843,7 +843,7 @@ _stp_vsnprintf(char *buf, size_t size, const char *fmt, va_list args) - case 'd': - case 'i': - flags |= STP_SIGN; -- /* fallthru */ -+ fallthrough; - case 'u': - break; - -diff --git a/tapset/linux/aux_syscalls.stp b/tapset/linux/aux_syscalls.stp -index ad8a89898..09fb9ff41 100644 ---- a/tapset/linux/aux_syscalls.stp -+++ b/tapset/linux/aux_syscalls.stp -@@ -156,11 +156,11 @@ sigset_from_compat(sigset_t *set, compat_sigset_t *compat) - { - switch (_NSIG_WORDS) { - case 4: set->sig[3] = compat->sig[6] | (((long)compat->sig[7]) << 32 ); -- /*fallthrough*/ -+ fallthrough; - case 3: set->sig[2] = compat->sig[4] | (((long)compat->sig[5]) << 32 ); -- /*fallthrough*/ -+ fallthrough; - case 2: set->sig[1] = compat->sig[2] | (((long)compat->sig[3]) << 32 ); -- /*fallthrough*/ -+ fallthrough; - case 1: set->sig[0] = compat->sig[0] | (((long)compat->sig[1]) << 32 ); - } - } -@@ -3627,13 +3627,13 @@ function _struct_sigaction32_u:string(uaddr:long) - { - case 4: act.sa_mask.sig[3] = act32.sa_mask.sig[6] - | (((long)act32.sa_mask.sig[7]) << 32); -- /* fallthrough */ -+ fallthrough; - case 3: act.sa_mask.sig[2] = act32.sa_mask.sig[4] - | (((long)act32.sa_mask.sig[5]) << 32); -- /* fallthrough */ -+ fallthrough; - case 2: act.sa_mask.sig[1] = act32.sa_mask.sig[2] - | (((long)act32.sa_mask.sig[3]) << 32); -- /* fallthrough */ -+ fallthrough; - case 1: act.sa_mask.sig[0] = act32.sa_mask.sig[0] - | (((long)act32.sa_mask.sig[1]) << 32); - } - -commit ea00c10704bfc64b908ef96e4b9574dadeae2b03 -Author: Frank Ch. Eigler -Date: Sun Jul 25 22:09:18 2021 -0400 - - PR28140: kernel 5.14-rc adaptation, jump_label_patch - - Linux commit ab3257042c2 makes it necessary for us to stop overriding - CONFIG_STACK_VALIDATION= (originally a workaround for a 2016 rawhide - bug). This fixes the tracepoints.stp test case. - -diff --git a/buildrun.cxx b/buildrun.cxx -index ae27ddea4..6a6725db6 100644 ---- a/buildrun.cxx -+++ b/buildrun.cxx -@@ -120,7 +120,13 @@ make_any_make_cmd(systemtap_session& s, const string& dir, const string& target) - "CONFIG_DEBUG_INFO_BTF_MODULES=", - - // RHBZ1321628: suppress stack validation; expected to be temporary -- "CONFIG_STACK_VALIDATION=", -+ // "CONFIG_STACK_VALIDATION=", -+ -+ // PR28140 ... as of kernel 5.14-rc*, this is actively -+ // dangerous, because it skips the full objtool processing -+ // chain, and the resulting tracepoint call sites in the ko are -+ // not properly instrumented. See also Linux commit -+ // ab3257042c2. - }; - - // PR10280: suppress symbol versioning to restrict to exact kernel version - -commit e66f3a83b49b5c0a35074cf0f4b378e51c241a81 -Author: Frank Ch. Eigler -Date: Sun Jul 25 22:35:59 2021 -0400 - - runtime: adapt to -Werror=implicit-fallthrough=5, dyninst runtime - - The runtime/dyninst/runtime.h also needs a fallthrough macro def'n. - -diff --git a/runtime/dyninst/runtime.h b/runtime/dyninst/runtime.h -index 9e61ef50b..6f028e27d 100644 ---- a/runtime/dyninst/runtime.h -+++ b/runtime/dyninst/runtime.h -@@ -389,4 +389,20 @@ static void stp_dyninst_dtor(void) - _stp_copy_destroy(); - } - -+ -+/* A fallthrough; macro to let the runtime survive -Wimplicit-fallthrough=5 */ -+/* from */ -+#ifndef fallthrough -+#if __GNUC__ < 5 -+# define fallthrough do {} while (0) /* fallthrough */ -+#else -+#if __has_attribute(__fallthrough__) -+# define fallthrough __attribute__((__fallthrough__)) -+#else -+# define fallthrough do {} while (0) /* fallthrough */ -+#endif -+#endif -+#endif -+ -+ - #endif /* _STAPDYN_RUNTIME_H_ */ - -commit b47d03c20aeab5276b67adbe367889c7762c4a92 -Author: Frank Ch. Eigler -Date: Sun Jul 18 21:32:51 2021 -0400 - - PR28079: Adapt to kernel 5.14 task_struct.__state change - - In tapset, use @choose_defined() for old & new field names. - -diff --git a/tapset/linux/task.stp b/tapset/linux/task.stp -index b542b610e..40dc3e2e0 100644 ---- a/tapset/linux/task.stp -+++ b/tapset/linux/task.stp -@@ -186,7 +186,7 @@ function task_parent:long(task:long) - */ - function task_state:long (task:long) - { -- return @task(task)->state -+ return @choose_defined(@task(task)->state,@task(task)->__state) - } - - /** - -commit 559fd51fe90ef096c4389f90604ec808869b58a6 -Author: Frank Ch. Eigler -Date: Fri Aug 6 12:16:21 2021 -0400 - - testsuite: time-limit auxiliary child processes - - The testsuite has been observed to intermittently hang on 5.13+ - generation kernels. This is caused by some test binaries (especially - recv*.c) suffering a segv and terminating, but their forked child - process pals still hanging around (indefinitely). This patch adds an - alarm(30) to each such test, so the children will burn twice as - bright, but half as long, or something. - -diff --git a/testsuite/systemtap.syscall/connect.c b/testsuite/systemtap.syscall/connect.c -index a9350025d..f2239dd80 100644 ---- a/testsuite/systemtap.syscall/connect.c -+++ b/testsuite/systemtap.syscall/connect.c -@@ -73,7 +73,8 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -- do_child(); -+ alarm(30); -+ do_child(); - break; - case -1: /* fall through */ - default: /* parent */ -diff --git a/testsuite/systemtap.syscall/futex.c b/testsuite/systemtap.syscall/futex.c -index 4740e1c82..fe740a146 100644 ---- a/testsuite/systemtap.syscall/futex.c -+++ b/testsuite/systemtap.syscall/futex.c -@@ -38,7 +38,8 @@ int main() - - pid = fork(); - if (pid == 0) { /* child */ -- do_child(); -+ alarm(30); -+ do_child(); - exit(0); - } - -diff --git a/testsuite/systemtap.syscall/process_vm.c b/testsuite/systemtap.syscall/process_vm.c -index 4c4ffe4a9..b776354ac 100644 ---- a/testsuite/systemtap.syscall/process_vm.c -+++ b/testsuite/systemtap.syscall/process_vm.c -@@ -31,7 +31,8 @@ int main() - - pid = fork(); - if (pid == 0) { /* child */ -- do_child(); -+ alarm(30); -+ do_child(); - return 0; - } - -diff --git a/testsuite/systemtap.syscall/ptrace.c b/testsuite/systemtap.syscall/ptrace.c -index 533414799..8d8418d34 100644 ---- a/testsuite/systemtap.syscall/ptrace.c -+++ b/testsuite/systemtap.syscall/ptrace.c -@@ -93,6 +93,7 @@ int main() - child_pid = fork(); - if (child_pid == 0) { - /* Child */ -+ alarm(30); - do_child(); - exit(0); - } -diff --git a/testsuite/systemtap.syscall/recv.c b/testsuite/systemtap.syscall/recv.c -index 9635b269e..b5ccf08d6 100644 ---- a/testsuite/systemtap.syscall/recv.c -+++ b/testsuite/systemtap.syscall/recv.c -@@ -76,6 +76,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/recvfrom.c b/testsuite/systemtap.syscall/recvfrom.c -index eeb567c78..0b5d20c20 100644 ---- a/testsuite/systemtap.syscall/recvfrom.c -+++ b/testsuite/systemtap.syscall/recvfrom.c -@@ -77,6 +77,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/recvmmsg.c b/testsuite/systemtap.syscall/recvmmsg.c -index 0b925d0d7..edf12e388 100644 ---- a/testsuite/systemtap.syscall/recvmmsg.c -+++ b/testsuite/systemtap.syscall/recvmmsg.c -@@ -123,6 +123,7 @@ start_server(struct sockaddr_in *ssin, struct sockaddr_un *ssun) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/recvmsg.c b/testsuite/systemtap.syscall/recvmsg.c -index 1d32e7482..7f72ae573 100644 ---- a/testsuite/systemtap.syscall/recvmsg.c -+++ b/testsuite/systemtap.syscall/recvmsg.c -@@ -122,6 +122,7 @@ start_server(struct sockaddr_in *ssin, struct sockaddr_un *ssun) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/send.c b/testsuite/systemtap.syscall/send.c -index 12bcf12a2..970f9347c 100644 ---- a/testsuite/systemtap.syscall/send.c -+++ b/testsuite/systemtap.syscall/send.c -@@ -75,6 +75,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/sendmmsg.c b/testsuite/systemtap.syscall/sendmmsg.c -index 3b0a74959..95ce65470 100644 ---- a/testsuite/systemtap.syscall/sendmmsg.c -+++ b/testsuite/systemtap.syscall/sendmmsg.c -@@ -87,6 +87,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/sendmsg.c b/testsuite/systemtap.syscall/sendmsg.c -index 6bcb4e358..db07eb7b4 100644 ---- a/testsuite/systemtap.syscall/sendmsg.c -+++ b/testsuite/systemtap.syscall/sendmsg.c -@@ -75,6 +75,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ -diff --git a/testsuite/systemtap.syscall/sendto.c b/testsuite/systemtap.syscall/sendto.c -index 44a8a5c0a..c3441bc22 100644 ---- a/testsuite/systemtap.syscall/sendto.c -+++ b/testsuite/systemtap.syscall/sendto.c -@@ -75,6 +75,7 @@ start_server(struct sockaddr_in *sin0) - - switch (pid = fork()) { - case 0: /* child */ -+ alarm(30); - do_child(); - break; - case -1: /* fall through */ - -commit 0581a6560a4922a92cef70348303012682a8a436 -Author: Junlong Li -Date: Fri Aug 6 14:24:12 2021 -0400 - - PR28184: Adapt to kernel rename __fcheck_files to files_lookup_fd_raw - - The 5.11 kernel renamed __fcheck_files to files_lookup_fd_raw - -diff --git a/runtime/linux/autoconf-files_lookup_fd_raw.c b/runtime/linux/autoconf-files_lookup_fd_raw.c -new file mode 100644 -index 000000000..9e98aa064 ---- /dev/null -+++ b/runtime/linux/autoconf-files_lookup_fd_raw.c -@@ -0,0 +1,9 @@ -+#include -+#include -+ -+void -+foo(void) -+{ -+ struct file *filp = files_lookup_fd_raw(NULL, 0); -+ (void) filp; -+} - -commit f2c1477678ecc2b03b55e21c31747004e2c78717 -Author: Junlong Li -Date: Fri Aug 6 17:41:53 2021 -0400 - - PR28184: Adapt to kernel rename __fcheck_files to files_lookup_fd_raw - - The 5.11 kernel renamed __fcheck_files to files_lookup_fd_raw - -diff --git a/buildrun.cxx b/buildrun.cxx -index 6a6725db6..a7090c448 100644 ---- a/buildrun.cxx -+++ b/buildrun.cxx -@@ -529,6 +529,8 @@ compile_pass (systemtap_session& s) - output_autoconf(s, o, cs, "autoconf-lockdown-kernel.c", "STAPCONF_LOCKDOWN_KERNEL", NULL); - output_autoconf(s, o, cs, "autoconf-hlist_add_tail_rcu.c", - "STAPCONF_HLIST_ADD_TAIL_RCU", NULL); -+ output_autoconf(s, o, cs, "autoconf-files_lookup_fd_raw.c", -+ "STAPCONF_FILES_LOOKUP_FD_RAW", NULL); - output_autoconf(s, o, cs, "autoconf-task-state.c", "STAPCONF_TASK_STATE", NULL); - - // used by runtime/linux/netfilter.c -diff --git a/tapset/linux/task.stp b/tapset/linux/task.stp -index 40dc3e2e0..d47462513 100644 ---- a/tapset/linux/task.stp -+++ b/tapset/linux/task.stp -@@ -706,7 +706,11 @@ function task_fd_lookup:long(task:long, fd:long) - (void)kderef_buffer(NULL, files, sizeof(struct files_struct)); - - spin_lock(&files->file_lock); -+#ifdef STAPCONF_FILES_LOOKUP_FD_RAW -+ file = files_lookup_fd_raw(files, fd); -+#else - file = fcheck_files(files, fd); -+#endif - spin_unlock(&files->file_lock); - } - -commit e6a1b008b822ed211b8f9c15fda565f8d51e512d -Author: Stan Cox -Date: Thu Aug 26 09:46:20 2021 -0400 - - Shorten function names that will exceed the kernel's objtool limit of 128 - - translate.cxx (c_unparser::emit_global_init_type,emit_function) Shorten - (c_unparser::c_funcname) Add funcname_shortened parm, shorten - name if length limit exceeded - - testsuite/systemtap.base/func_definition.{exp,stp} Add shorten funcname test. - -diff --git a/testsuite/systemtap.base/func_definition.exp b/testsuite/systemtap.base/func_definition.exp -index 6598aeea5..0aeab4c70 100644 ---- a/testsuite/systemtap.base/func_definition.exp -+++ b/testsuite/systemtap.base/func_definition.exp -@@ -5,9 +5,25 @@ if {![installtest_p]} { untested "$test"; return } - - foreach runtime [get_runtime_list] { - if {$runtime != ""} { -- stap_run $test no_load (${all_pass_string}){5} \ -+ stap_run $test no_load (${all_pass_string}){6} \ - --runtime=$runtime $srcdir/$subdir/$test.stp - } else { -- stap_run $test no_load (${all_pass_string}){5} $srcdir/$subdir/$test.stp -+ stap_run $test no_load (${all_pass_string}){6} $srcdir/$subdir/$test.stp - } - } -+ -+set ok 0 -+set cmd "bash -c {$env(SYSTEMTAP_PATH)/stap --runtime=$runtime -v -v -p3 $srcdir/$subdir/$test.stp |& grep -A 1 'function_names_over_128'}" -+eval spawn $cmd -+expect { -+ -timeout 180 -+ # Match shortened function declaration, definition, and reference -+ -re { function_[0-9] } { incr ok; exp_continue } -+ eof { } -+} -+ -+if {$ok == 3} { -+ pass "$test function name shorten" -+} else { -+ fail "$test function name shorten ($ok!=3)" -+} -diff --git a/testsuite/systemtap.base/func_definition.stp b/testsuite/systemtap.base/func_definition.stp -index eaa8d94c5..7ed938eb9 100644 ---- a/testsuite/systemtap.base/func_definition.stp -+++ b/testsuite/systemtap.base/func_definition.stp -@@ -39,6 +39,11 @@ function f5() - println("systemtap test success") - } - -+function function_names_over_128_characters_exceed_MAX_NAME_LEN_in_linux_objtool_which_is_invoked_by_kbuild_and_are_therefore_shortened() -+{ -+ return 2021 -+} -+ - probe end { - println("systemtap ending probe") - -@@ -57,4 +62,7 @@ probe end { - printf("systemtap test failure - return_value of f4:%d != 2015\n", f4()) - - f5() -+ -+ if (function_names_over_128_characters_exceed_MAX_NAME_LEN_in_linux_objtool_which_is_invoked_by_kbuild_and_are_therefore_shortened() == 2021) -+ println("systemtap test success") - } -diff --git a/translate.cxx b/translate.cxx -index 59fa2e4a0..beb7d7acd 100644 ---- a/translate.cxx -+++ b/translate.cxx -@@ -58,6 +58,9 @@ extern "C" { - #define STAP_T_06 _("\"empty aggregate\";") - #define STAP_T_07 _("\"histogram index out of range\";") - -+// This matches MAX_NAME_LEN in linux objtool/elf.c used by kbuild -+#define MAX_NAME_LEN 128 -+ - using namespace std; - - class var; -@@ -183,6 +186,7 @@ struct c_unparser: public unparser, public visitor - virtual string c_localname (const string& e, bool mangle_oldstyle = false); - virtual string c_globalname (const string &e); - virtual string c_funcname (const string &e); -+ virtual string c_funcname (const string &e, bool &funcname_shortened); - - string c_arg_define (const string& e); - string c_arg_undef (const string& e); -@@ -1755,7 +1759,11 @@ c_unparser::emit_global_init_type (vardecl *v) - void - c_unparser::emit_functionsig (functiondecl* v) - { -- o->newline() << "static void " << c_funcname(v->name) -+ bool funcname_shortened; -+ string funcname = c_funcname (v->name, funcname_shortened); -+ if (funcname_shortened) -+ o->newline() << "/* " << v->name << " */"; -+ o->newline() << "static void " << funcname - << " (struct context * __restrict__ c);"; - } - -@@ -2520,7 +2528,11 @@ c_tmpcounter::emit_function (functiondecl* fd) - // indent the dummy output as if we were already in a block - this->o->indent (1); - -- o->newline() << "struct " << c_funcname (fd->name) << "_locals {"; -+ bool funcname_shortened; -+ string funcname = c_funcname (fd->name, funcname_shortened); -+ if (funcname_shortened) -+ o->newline() << "/* " << fd->name << " */"; -+ o->newline() << "struct " << funcname << "_locals {"; - o->indent(1); - - for (unsigned j=0; jlocals.size(); j++) -@@ -2615,7 +2627,11 @@ c_unparser::emit_function (functiondecl* v) - this->action_counter = 0; - this->already_checked_action_count = false; - -- o->newline() << "static void " << c_funcname (v->name) -+ bool funcname_shortened; -+ string funcname = c_funcname (v->name, funcname_shortened); -+ if (funcname_shortened) -+ o->newline() << "/* " << v->name << " */"; -+ o->newline() << "static void " << funcname - << " (struct context* __restrict__ c) {"; - o->indent(1); - -@@ -3385,11 +3401,41 @@ c_unparser::c_globalname (const string& e) - - - string --c_unparser::c_funcname (const string& e) -+c_unparser::c_funcname (const string& e, bool& funcname_shortened) - { -+ const string function_prefix = "function_"; - // XXX uncomment to test custom mangling: -- // return "function_" + e + "_" + lex_cast(do_hash(e.c_str())); -- return "function_" + e; -+ // return function_prefix + e + "_" + lex_cast(do_hash(e.c_str())); -+ -+ // The kernel objtool used by kbuild has a hardcoded function length limit -+ if (e.length() > MAX_NAME_LEN - function_prefix.length()) -+ { -+ int function_index = 0; -+ for (map::iterator it = session->functions.begin(); -+ it != session->functions.end(); it++) -+ { -+ if (it->first == e) -+ { -+ funcname_shortened = true; -+ return function_prefix + to_string(function_index); -+ } -+ function_index += 1; -+ } -+ throw SEMANTIC_ERROR (_("unresolved symbol: ") + e); // should not happen -+ } -+ else -+ { -+ funcname_shortened = false; -+ return function_prefix + e; -+ } -+} -+ -+ -+string -+c_unparser::c_funcname (const string& e) -+{ -+ bool funcname_shortened; -+ return c_funcname (e, funcname_shortened); - } - - - -commit 3bca174698360389fbf2c28e8eaaacc0b7cbbdb0 -Author: Stan Cox -Date: Mon Aug 30 16:53:51 2021 -0400 - - Use lex_cast instead of to_string when shortening function names. - -diff --git a/testsuite/systemtap.base/func_definition.exp b/testsuite/systemtap.base/func_definition.exp -index 0aeab4c70..721900f98 100644 ---- a/testsuite/systemtap.base/func_definition.exp -+++ b/testsuite/systemtap.base/func_definition.exp -@@ -13,7 +13,7 @@ foreach runtime [get_runtime_list] { - } - - set ok 0 --set cmd "bash -c {$env(SYSTEMTAP_PATH)/stap --runtime=$runtime -v -v -p3 $srcdir/$subdir/$test.stp |& grep -A 1 'function_names_over_128'}" -+set cmd "bash -c {$env(SYSTEMTAP_PATH)/stap -v -v -p3 $srcdir/$subdir/$test.stp |& grep -A 1 'function_names_over_128'}" - eval spawn $cmd - expect { - -timeout 180 -diff --git a/translate.cxx b/translate.cxx -index beb7d7acd..312fd0801 100644 ---- a/translate.cxx -+++ b/translate.cxx -@@ -3410,14 +3410,14 @@ c_unparser::c_funcname (const string& e, bool& funcname_shortened) - // The kernel objtool used by kbuild has a hardcoded function length limit - if (e.length() > MAX_NAME_LEN - function_prefix.length()) - { -- int function_index = 0; -+ long function_index = 0; - for (map::iterator it = session->functions.begin(); - it != session->functions.end(); it++) - { - if (it->first == e) - { - funcname_shortened = true; -- return function_prefix + to_string(function_index); -+ return function_prefix + lex_cast (function_index); - } - function_index += 1; - } -commit 4996a29c6b5dd891aeaf31df1a50058bd785621b -Author: Frank Ch. Eigler -Date: Thu Sep 9 21:22:31 2021 -0400 - - tapset: start adopting kernel netif_* tracepoints in netdev.* tapset - - Start with netdev.receive. - -diff --git a/tapset/linux/networking.stp b/tapset/linux/networking.stp -index 0b52cbc50..bf9cabfd5 100644 ---- a/tapset/linux/networking.stp -+++ b/tapset/linux/networking.stp -@@ -117,7 +117,8 @@ function get_netdev_name:string (addr:long) { - /// - // Main device receive routine, be called when packet arrives on network device - probe netdev.receive -- = kernel.function("netif_receive_skb_internal") !, -+ = kernel.trace("netif_receive_skb") !, -+ kernel.function("netif_receive_skb_internal") !, - kernel.function("netif_receive_skb") - { - try { dev_name = get_netdev_name($skb->dev) } catch { } diff --git a/SOURCES/rhbz2025054python3.patch b/SOURCES/rhbz2025054python3.patch new file mode 100644 index 0000000..7f5f40c --- /dev/null +++ b/SOURCES/rhbz2025054python3.patch @@ -0,0 +1,95 @@ +commit 241f53050f441808e673d19b42008779f555f484 (HEAD) +Author: Frank Ch. Eigler +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.]) diff --git a/SOURCES/sdt-asm-glibc.patch b/SOURCES/sdt-asm-glibc.patch new file mode 100644 index 0000000..878a01d --- /dev/null +++ b/SOURCES/sdt-asm-glibc.patch @@ -0,0 +1,146 @@ +commit ecab2afea46099b4e7dfd551462689224afdbe3a +Author: Stan Cox +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 1d3653936 (HEAD -> master, origin/master, origin/HEAD) +Author: Frank Ch. Eigler +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. + +diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h +index 24d5e01c3..3e1f00b6c 100644 +--- a/includes/sys/sdt.h ++++ b/includes/sys/sdt.h +@@ -101,7 +101,7 @@ + # if defined __powerpc__ + # define STAP_SDT_ARG_CONSTRAINT nZr + # elif defined __x86_64__ +-# define STAP_SDT_ARG_CONSTRAINT norfxy ++# define STAP_SDT_ARG_CONSTRAINT norx + # elif defined __aarch64__ + # define STAP_SDT_ARG_CONSTRAINT norw + # elif defined __s390__ || defined __s390x__ diff --git a/SPECS/systemtap.spec b/SPECS/systemtap.spec index 0c6d205..57ca607 100644 --- a/SPECS/systemtap.spec +++ b/SPECS/systemtap.spec @@ -4,14 +4,13 @@ %{!?with_htmldocs: %global with_htmldocs 0} %{!?with_monitor: %global with_monitor 1} # crash is not available -%ifarch ppc ppc64 %{sparc} %{mips} +%ifarch ppc ppc64 %{sparc} %{mips} %{riscv} %{!?with_crash: %global with_crash 0} %else %{!?with_crash: %global with_crash 1} %endif %{!?with_rpm: %global with_rpm 1} %{!?elfutils_version: %global elfutils_version 0.179} -%{!?pie_supported: %global pie_supported 1} %{!?with_boost: %global with_boost 0} %ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64 %{!?with_dyninst: %global with_dyninst 0%{?fedora} >= 18 || 0%{?rhel} >= 7} @@ -39,6 +38,7 @@ %{!?with_python3_probes: %global with_python3_probes (0%{?fedora} >= 23 || 0%{?rhel} > 7)} %{!?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} # Virt is supported on these arches, even on el7, but it's not in core EL7 %if 0%{?rhel} <= 7 @@ -88,9 +88,37 @@ # To avoid testsuite/*/*.stp has shebang which doesn't start with '/' %define __brp_mangle_shebangs_exclude_from .stp$ +%define _systemtap_runtime_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +g stapusr 156\ +g stapsys 157\ +g stapdev 158 + +%define _systemtap_server_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +g stap-server -\ +u stap-server - "systemtap compiler server" /var/lib/stap-server /sbin/nologin\ +m stap-server stap-server + + +%define _systemtap_testsuite_preinstall \ +# See systemd-sysusers(8) sysusers.d(5)\ +\ +u stapusr - "systemtap testsuite user" / /sbin/nologin\ +u stapsys - "systemtap testsuite user" / /sbin/nologin\ +u stapdev - "systemtap testsuite user" / /sbin/nologin\ +m stapusr stapusr\ +m stapsys stapusr\ +m stapsys stapsys\ +m stapdev stapusr\ +m stapdev stapdev + + Name: systemtap -Version: 4.5 -Release: 8%{?release_override}%{?dist} +Version: 4.6 +Release: 4%{?release_override}%{?dist} # for version, see also configure.ac @@ -126,11 +154,9 @@ License: GPLv2+ URL: http://sourceware.org/systemtap/ Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz -Patch1: rhbz1972803.patch -Patch2: rhbz1972828.patch -Patch3: rhbz1972805.patch -Patch4: rhbz1982908.patch -Patch5: rhbz1985124.patch +Patch1: rhbz2025054python3.patch +Patch2: rhbz1972798.patch +Patch3: sdt-asm-glibc.patch # Build* BuildRequires: make @@ -180,6 +206,7 @@ BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf %endif %endif %if %{with_emacsvim} +# for _emacs_sitelispdir macros etc. BuildRequires: emacs %endif %if %{with_java} @@ -202,6 +229,9 @@ BuildRequires: python2-setuptools BuildRequires: python-setuptools %endif %endif +%if %{with_python3} +BuildRequires: python3 +%endif %if %{with_python3_probes} BuildRequires: python3-devel BuildRequires: python3-setuptools @@ -214,6 +244,10 @@ BuildRequires: /usr/bin/pathfix.py BuildRequires: libmicrohttpd-devel BuildRequires: libuuid-devel %endif +%if %{with_sysusers} +BuildRequires: systemd-rpm-macros +%endif + # Install requirements Requires: systemtap-client = %{version}-%{release} @@ -490,7 +524,7 @@ This package includes support files needed to run systemtap scripts that probe python 3 processes. %endif -%if %{with_python3} +%if %{with_python3_probes} %package exporter Summary: Systemtap-prometheus interoperation mechanism License: GPLv2+ @@ -508,7 +542,8 @@ to remote requesters on demand. Summary: Systemtap Cross-VM Instrumentation - host License: GPLv2+ URL: http://sourceware.org/systemtap/ -Requires: libvirt >= 1.0.2 +# only require libvirt-libs really +#Requires: libvirt >= 1.0.2 Requires: libxml2 %description runtime-virthost @@ -542,11 +577,10 @@ systemtap-runtime-virthost machine to execute systemtap scripts. %prep %setup -q + %patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch4 -p1 -%patch5 -p1 %build @@ -595,14 +629,6 @@ systemtap-runtime-virthost machine to execute systemtap scripts. %global docs_config --enable-docs=prebuilt %endif -# Enable pie as configure defaults to disabling it -%if %{pie_supported} -%global pie_config --enable-pie -%else -%global pie_config --disable-pie -%endif - - %if %{with_java} %global java_config --with-java=%{_jvmdir}/java %else @@ -652,8 +678,8 @@ systemtap-runtime-virthost machine to execute systemtap scripts. # 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} %{pie_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} +%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}" +make %{?_smp_mflags} V=1 %install @@ -665,6 +691,14 @@ for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do echo "%%lang($lang) $dir/man*/*" >> %{name}.lang done +%if %{with_sysusers} +mkdir -p %{buildroot}%{_sysusersdir} +echo '%_systemtap_runtime_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-runtime.conf +echo '%_systemtap_server_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-server.conf +echo '%_systemtap_testsuite_preinstall' > %{buildroot}%{_sysusersdir}/systemtap-testsuite.conf +%endif + + ln -s %{_datadir}/systemtap/examples # Fix paths in the example scripts. @@ -788,24 +822,37 @@ pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{python3_sitearch %endif %pre runtime +%if %{with_sysusers} +echo '%_systemtap_runtime_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-runtime.conf - +%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 exit 0 %pre server +%if %{with_sysusers} +echo '%_systemtap_server_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-server.conf - +%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 %pre testsuite +%if %{with_sysusers} +echo '%_systemtap_testsuite_preinstall' | systemd-sysusers --replace=%{_sysusersdir}/systemtap-testsuite.conf - +%else getent passwd stapusr >/dev/null || \ useradd -c "Systemtap 'stapusr' User" -g stapusr -r -s /sbin/nologin stapusr 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 %post server @@ -962,7 +1009,7 @@ if [ "$1" -ge "1" ]; then fi exit 0 -%if %{with_python3} +%if %{with_python3_probes} %if %{with_systemd} %preun exporter if [ $1 = 0 ] ; then @@ -1027,6 +1074,9 @@ exit 0 %doc README README.unprivileged AUTHORS NEWS %{!?_licensedir:%global license %%doc} %license COPYING +%if %{with_sysusers} +%{_sysusersdir}/systemtap-server.conf +%endif %files devel -f systemtap.lang @@ -1096,6 +1146,9 @@ exit 0 %doc README README.security AUTHORS NEWS %{!?_licensedir:%global license %%doc} %license COPYING +%if %{with_sysusers} +%{_sysusersdir}/systemtap-runtime.conf +%endif %files client -f systemtap.lang @@ -1162,6 +1215,9 @@ exit 0 %files testsuite %dir %{_datadir}/systemtap %{_datadir}/systemtap/testsuite +%if %{with_sysusers} +%{_sysusersdir}/systemtap-testsuite.conf +%endif %if %{with_java} @@ -1203,7 +1259,7 @@ exit 0 %endif %endif -%if %{with_python3} +%if %{with_python3_probes} %files exporter %{_sysconfdir}/stap-exporter %{_sysconfdir}/sysconfig/stap-exporter @@ -1221,6 +1277,19 @@ exit 0 # PRERELEASE %changelog +* Mon Dec 06 2021 Stan Cox - 4.6.4 +- sys/sdt.h remove float constraints that may cause gcc reload issues. + +* Thu Dec 02 2021 Frank Ch. Eigler - 4.6.3 +- rhbz2972798 - nfs tapset tweaks +- sys/sdt.h fixes for glibc ftbfs + +* Thu Nov 25 2021 Martin Cermak - 4.6.2 +- rhbz2012907: Fix use of sysuser.d/* for user/group management + +* Fri Nov 19 2021 Frank Ch. Eigler - 4.6-1 +- Upstream release. + * Thu Sep 09 2021 Frank Ch. Eigler - 4.5-8 - rhbz1985124: Kernel 5.14 compatibility omnibus cont'd.