From 4a3d4471818746606a9f4dcbdb027f2d9309d421 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 10 May 2022 03:07:31 -0400 Subject: [PATCH] import systemtap-4.6-4.el8 --- .gitignore | 2 +- .systemtap.metadata | 2 +- SOURCES/rhbz1991631.patch | 29 ------- SOURCES/sdt-asm-glibc.patch | 154 ++++++++++++++++++++++++++++++++++++ SPECS/systemtap.spec | 82 ++++++++++++++----- 5 files changed, 218 insertions(+), 51 deletions(-) delete mode 100644 SOURCES/rhbz1991631.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/rhbz1991631.patch b/SOURCES/rhbz1991631.patch deleted file mode 100644 index 9598ac8..0000000 --- a/SOURCES/rhbz1991631.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/sdt-asm-glibc.patch b/SOURCES/sdt-asm-glibc.patch new file mode 100644 index 0000000..0aa9261 --- /dev/null +++ b/SOURCES/sdt-asm-glibc.patch @@ -0,0 +1,154 @@ +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 209b5a19c (HEAD -> master, origin/master, origin/HEAD) +Author: Stan Cox +Date: Tue Dec 7 09:55:01 2021 -0500 + + sys/sdt.h fp constraints: aarch64, s390 + + Remove float constraints as per commit 1d3653936 but for aarch64 and s390. + +commit 1d3653936 (HEAD -> master, origin/master, origin/HEAD) +Author: Frank Ch. Eigler +Date: Mon Dec 6 12:06:06 2021 -0500 + + sys/sdt.h fp constraints cont'd, x86-64 edition + + It appears that various versions of gcc continue to show signs of + confusion at our newly offered asm-operand alternatives for floating + point sdt.h marker parameters. + + e.g., https://bugzilla.redhat.com/show_bug.cgi?id=2028798 + + We may need to restore previous constraints broadly, forcing the + compiler to plop floating point parameters into integer storage. + +--- a/includes/sys/sdt.h ++++ b/includes/sys/sdt.h +@@ -102,9 +102,5 @@ + # define STAP_SDT_ARG_CONSTRAINT nZr + # elif defined __x86_64__ +-# define STAP_SDT_ARG_CONSTRAINT norfxy +-# elif defined __aarch64__ +-# define STAP_SDT_ARG_CONSTRAINT norw +-# elif defined __s390__ || defined __s390x__ +-# define STAP_SDT_ARG_CONSTRAINT norf ++# define STAP_SDT_ARG_CONSTRAINT norx + # else + # define STAP_SDT_ARG_CONSTRAINT nor diff --git a/SPECS/systemtap.spec b/SPECS/systemtap.spec index 548c5c2..8c5f4a8 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 @@ -89,8 +89,8 @@ %define __brp_mangle_shebangs_exclude_from .stp$ Name: systemtap -Version: 4.5 -Release: 3%{?release_override}%{?dist} +Version: 4.6 +Release: 4%{?release_override}%{?dist} # for version, see also configure.ac @@ -126,7 +126,7 @@ License: GPLv2+ URL: http://sourceware.org/systemtap/ Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz -Patch1: rhbz1991631.patch +Patch1: sdt-asm-glibc.patch # Build* BuildRequires: make @@ -139,7 +139,7 @@ BuildRequires: pkgconfig(avahi-client) BuildRequires: pkgconfig(libdebuginfod) %endif %if %{with_dyninst} -BuildRequires: dyninst-devel >= 11.0 +BuildRequires: dyninst-devel >= 10.0 BuildRequires: pkgconfig(libselinux) %endif %if %{with_sqlite} @@ -176,6 +176,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} @@ -198,6 +199,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 @@ -210,6 +214,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} @@ -486,7 +494,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+ @@ -504,7 +512,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 @@ -587,14 +596,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 @@ -644,8 +645,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 @@ -657,6 +658,13 @@ for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do echo "%%lang($lang) $dir/man*/*" >> %{name}.lang done +%if %{with_sysusers} +install -p -D -m 0644 systemtap-runtime.sysusers %{buildroot}%{_sysusersdir}/systemtap-runtime.conf +install -p -D -m 0644 systemtap-server.sysusers %{buildroot}%{_sysusersdir}/systemtap-server.conf +install -p -D -m 0644 systemtap-testsuite.sysusers %{buildroot}%{_sysusersdir}/systemtap-testsuite.conf +%endif + + ln -s %{_datadir}/systemtap/examples # Fix paths in the example scripts. @@ -780,24 +788,37 @@ pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{python3_sitearch %endif %pre runtime +%if %{with_sysusers} +%sysusers_create_compat $RPM_BUILD_ROOT/systemtap-runtime.sysusers +%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} +%sysusers_create_compat $RPM_BUILD_ROOT/systemtap-server.sysusers +%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} +%sysusers_create_compat $RPM_BUILD_ROOT/systemtap-testsuite.sysusers +%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 @@ -954,7 +975,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 @@ -1019,6 +1040,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 @@ -1088,6 +1112,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 @@ -1154,6 +1181,9 @@ exit 0 %files testsuite %dir %{_datadir}/systemtap %{_datadir}/systemtap/testsuite +%if %{with_sysusers} +%{_sysusersdir}/systemtap-testsuite.conf +%endif %if %{with_java} @@ -1195,7 +1225,7 @@ exit 0 %endif %endif -%if %{with_python3} +%if %{with_python3_probes} %files exporter %{_sysconfdir}/stap-exporter %{_sysconfdir}/sysconfig/stap-exporter @@ -1213,6 +1243,18 @@ exit 0 # PRERELEASE %changelog +* Tue Dec 07 2021 Stan Cox - 4.6.4 +- sys/sdt.h remove aarch64 and s390 float constraints + +* Mon Dec 06 2021 Stan Cox - 4.6.3 +- sys/sdt.h remove float constraints that may cause gcc reload issues. + +* Thu Dec 02 2021 Frank Ch. Eigler - 4.6.2 +- sys/sdt.h fixes for glibc ftbfs + +* Mon Nov 15 2021 Frank Ch. Eigler - 4.6-1 +- Upstream release. + * Thu Aug 12 2021 Frank Ch. Eigler - 4.5-3 - rhbz1991631 iommu tracepoints break ppc64le