Compare commits
No commits in common. "rawhide" and "f36" have entirely different histories.
8 changed files with 106 additions and 165 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -11,4 +11,3 @@
|
|||
/libpfm-4.10.0.tar.gz
|
||||
/libpfm-4.10.1.tar.gz
|
||||
/libpfm-4.11.0.tar.gz
|
||||
/libpfm-4.13.0.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,59 +0,0 @@
|
|||
From ded148888c501c2e9d21c23263d7c09aed4b97d6 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Merey <amerey@redhat.com>
|
||||
Date: Fri, 19 Dec 2025 12:33:33 -0500
|
||||
Subject: [PATCH] fix discarded const warning on newer gcc
|
||||
|
||||
---
|
||||
lib/pfmlib_common.c | 15 +++++++++------
|
||||
tests/validate_x86.c | 2 +-
|
||||
2 files changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/lib/pfmlib_common.c b/lib/pfmlib_common.c
|
||||
index 44b5de4..59a7cff 100644
|
||||
--- a/lib/pfmlib_common.c
|
||||
+++ b/lib/pfmlib_common.c
|
||||
@@ -1625,12 +1625,6 @@ pfmlib_parse_event(const char *event, pfmlib_event_desc_t *d)
|
||||
const char *pname = NULL;
|
||||
int i, j, ret;
|
||||
|
||||
- /*
|
||||
- * support only one event at a time.
|
||||
- */
|
||||
- p = strpbrk(event, PFMLIB_EVENT_DELIM);
|
||||
- if (p)
|
||||
- return PFM_ERR_INVAL;
|
||||
/*
|
||||
* create copy because string is const
|
||||
*/
|
||||
@@ -1638,6 +1632,15 @@ pfmlib_parse_event(const char *event, pfmlib_event_desc_t *d)
|
||||
if (!str)
|
||||
return PFM_ERR_NOMEM;
|
||||
|
||||
+ /*
|
||||
+ * support only one event at a time.
|
||||
+ */
|
||||
+ p = strpbrk(s, PFMLIB_EVENT_DELIM);
|
||||
+ if (p) {
|
||||
+ free(s);
|
||||
+ return PFM_ERR_INVAL;
|
||||
+ }
|
||||
+
|
||||
|
||||
/* check for optional PMU name */
|
||||
p = strstr(s, PFMLIB_PMU_DELIM);
|
||||
diff --git a/tests/validate_x86.c b/tests/validate_x86.c
|
||||
index 500a697..68a776d 100644
|
||||
--- a/tests/validate_x86.c
|
||||
+++ b/tests/validate_x86.c
|
||||
@@ -8018,7 +8018,7 @@ static int
|
||||
check_pmu_supported(const char *evt)
|
||||
{
|
||||
pfm_pmu_info_t info;
|
||||
- char *p;
|
||||
+ const char *p;
|
||||
int ret;
|
||||
pfm_pmu_t i;
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
89
libpfm-gcc12.patch
Normal file
89
libpfm-gcc12.patch
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
commit a7b26272d8327ad1c001456a18518a0ac65dc2bb
|
||||
Author: Stephane Eranian <eranian@gmail.com>
|
||||
Date: Wed Jun 8 06:55:36 2022 -0700
|
||||
|
||||
avoid GCC-12 use-after-free warnings
|
||||
|
||||
gcc-12 seems to complain about bogus use-after-free situations in the
|
||||
libpfm4 code:
|
||||
|
||||
p = realloc(q, ...)
|
||||
if (!p)
|
||||
return NULL
|
||||
|
||||
s = p + (q - z)
|
||||
|
||||
It complains because of the use of q after realloc in this case.
|
||||
Yet q - z is just pointer artihmetic and is not dereferencing any
|
||||
memory through the pointer q which may have been freed by realloc.
|
||||
|
||||
Fix is to pre-computer the delta before realloc to avoid using the
|
||||
pointer after the call.
|
||||
|
||||
Reported-by: Vitaly Chikunov <vt@altlinux.org>
|
||||
Signed-off-by: Stephane Eranian <eranian@gmail.com>
|
||||
|
||||
diff --git a/lib/pfmlib_perf_event_pmu.c b/lib/pfmlib_perf_event_pmu.c
|
||||
index c3386aa..637c5b1 100644
|
||||
--- a/lib/pfmlib_perf_event_pmu.c
|
||||
+++ b/lib/pfmlib_perf_event_pmu.c
|
||||
@@ -268,6 +268,7 @@ perf_table_alloc_event(void)
|
||||
perf_table_alloc_event(void)
|
||||
{
|
||||
perf_event_t *new_pe;
|
||||
+ size_t num_free;
|
||||
|
||||
retry:
|
||||
if (perf_pe_free < perf_pe_end)
|
||||
@@ -286,11 +287,20 @@ retry:
|
||||
|
||||
perf_pe_count += PERF_ALLOC_EVENT_COUNT;
|
||||
|
||||
+ /*
|
||||
+ * compute number of free events left
|
||||
+ * before realloc() to avoid compiler warning (use-after-free)
|
||||
+ * even though we are simply doing pointer arithmetic and not
|
||||
+ * dereferencing the perf_pe after realloc when it may be stale
|
||||
+ * in case the memory was moved.
|
||||
+ */
|
||||
+ num_free = perf_pe_free - perf_pe;
|
||||
+
|
||||
new_pe = realloc(perf_pe, perf_pe_count * sizeof(perf_event_t));
|
||||
if (!new_pe)
|
||||
return NULL;
|
||||
|
||||
- perf_pe_free = new_pe + (perf_pe_free - perf_pe);
|
||||
+ perf_pe_free = new_pe + num_free;
|
||||
perf_pe_end = perf_pe_free + PERF_ALLOC_EVENT_COUNT;
|
||||
perf_pe = new_pe;
|
||||
|
||||
@@ -315,18 +325,27 @@ static perf_umask_t *
|
||||
perf_table_alloc_umask(void)
|
||||
{
|
||||
perf_umask_t *new_um;
|
||||
+ size_t num_free;
|
||||
|
||||
retry:
|
||||
if (perf_um_free < perf_um_end)
|
||||
return perf_um_free++;
|
||||
|
||||
perf_um_count += PERF_ALLOC_UMASK_COUNT;
|
||||
-
|
||||
+
|
||||
+ /*
|
||||
+ * compute number of free unmasks left
|
||||
+ * before realloc() to avoid compiler warning (use-after-free)
|
||||
+ * even though we are simply doing pointer arithmetic and not
|
||||
+ * dereferencing the perf_um after realloc when it may be stale
|
||||
+ * in case the memory was moved.
|
||||
+ */
|
||||
+ num_free = perf_um_free - perf_um;
|
||||
new_um = realloc(perf_um, perf_um_count * sizeof(*new_um));
|
||||
if (!new_um)
|
||||
return NULL;
|
||||
|
||||
- perf_um_free = new_um + (perf_um_free - perf_um);
|
||||
+ perf_um_free = new_um + num_free;
|
||||
perf_um_end = perf_um_free + PERF_ALLOC_UMASK_COUNT;
|
||||
perf_um = new_um;
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
commit cb944829e0940d74009e09b8985b4f2139f5cb3b
|
||||
Author: William Cohen <wcohen@redhat.com>
|
||||
Date: Mon Jan 29 16:23:43 2024 -0500
|
||||
|
||||
Correct s390x code to avoid GCC-14 -Werror=calloc-transposed-args errors
|
||||
|
||||
diff --git a/lib/pfmlib_s390x_cpumf.c b/lib/pfmlib_s390x_cpumf.c
|
||||
index d8ce22d..718f5f8 100644
|
||||
--- a/lib/pfmlib_s390x_cpumf.c
|
||||
+++ b/lib/pfmlib_s390x_cpumf.c
|
||||
@@ -216,8 +216,8 @@ static int pfm_cpumcf_init(void *this)
|
||||
break;
|
||||
}
|
||||
|
||||
- cpumcf_pe = calloc(sizeof(*cpumcf_pe),
|
||||
- cfvn_set_count + csvn_set_count + ext_set_count);
|
||||
+ cpumcf_pe = calloc(cfvn_set_count + csvn_set_count + ext_set_count,
|
||||
+ sizeof(*cpumcf_pe));
|
||||
if (cpumcf_pe == NULL)
|
||||
return PFM_ERR_NOMEM;
|
||||
|
||||
94
libpfm.spec
94
libpfm.spec
|
|
@ -4,21 +4,23 @@
|
|||
%if %{with python}
|
||||
%define python_sitearch %(python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))")
|
||||
%define python_prefix %(python3 -c "import sys; print (sys.prefix)")
|
||||
%global __provides_exclude_from ^%{python3_sitearch}/perfmon/.*\.so$
|
||||
%{?filter_setup:
|
||||
%filter_provides_in %{python3_sitearch}/perfmon/.*\.so$
|
||||
%filter_setup
|
||||
}
|
||||
%endif
|
||||
|
||||
Name: libpfm
|
||||
Version: 4.13.0
|
||||
Release: 17%{?dist}
|
||||
Version: 4.11.0
|
||||
Release: 9%{?dist}
|
||||
|
||||
Summary: Library to encode performance events for use by perf tool
|
||||
|
||||
License: MIT
|
||||
URL: http://perfmon2.sourceforge.net/
|
||||
Source0: http://sourceforge.net/projects/perfmon2/files/libpfm4/%{name}-%{version}.tar.gz
|
||||
Patch1: libpfm-fix-const.patch
|
||||
Patch2: libpfm-python3-setup.patch
|
||||
Patch3: libpfm-gcc14.patch
|
||||
Patch3: libpfm-gcc12.patch
|
||||
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc
|
||||
|
|
@ -36,7 +38,6 @@ kernels performance monitoring interfaces. The current version provides support
|
|||
for the perf_events interface available in upstream Linux kernels since v2.6.31.
|
||||
|
||||
%package devel
|
||||
License: MIT
|
||||
Summary: Development library to encode performance events for perf_events based tools
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
|
|
@ -46,7 +47,6 @@ applications for the perf_events interface.
|
|||
|
||||
%if %{with_static}
|
||||
%package static
|
||||
License: MIT
|
||||
Summary: Static library to encode performance events for perf_events based tools
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
|
|
@ -57,7 +57,6 @@ applications for the perf_events interface.
|
|||
|
||||
%if %{with python}
|
||||
%package -n python3-libpfm
|
||||
License: MIT AND LicenseRef-Fedora-UltraPermissive
|
||||
%{?python_provide:%python_provide python3-libpfm}
|
||||
# Remove before F30
|
||||
Provides: %{name}-python = %{version}-%{release}
|
||||
|
|
@ -72,13 +71,8 @@ Python bindings for libpfm4 and perf_event_open system call.
|
|||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch -P1 -p1 -b .fix-const
|
||||
%patch -P2 -p1 -b .python3
|
||||
%patch -P3 -p1 -b .gcc14
|
||||
# to prevent setuptools from installing an .egg, we need to pass --root to setup.py install
|
||||
# see https://github.com/pypa/setuptools/issues/3143
|
||||
# and https://github.com/pypa/pip/issues/11501
|
||||
sed -i 's/--prefix=$(DESTDIR)$(PYTHON_PREFIX)/--root=$(DESTDIR) --prefix=$(PYTHON_PREFIX)/' python/Makefile
|
||||
%patch2 -p1 -b .python3
|
||||
%patch3 -p1 -b .gcc12
|
||||
|
||||
%build
|
||||
%if %{with python}
|
||||
|
|
@ -94,15 +88,14 @@ sed -i 's/--prefix=$(DESTDIR)$(PYTHON_PREFIX)/--root=$(DESTDIR) --prefix=$(PYTHO
|
|||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%if %{with python}
|
||||
%global python_config CONFIG_PFMLIB_NOPYTHON=n PYTHON_PREFIX=%{python_prefix}
|
||||
%global python_config CONFIG_PFMLIB_NOPYTHON=n PYTHON_PREFIX=$RPM_BUILD_ROOT/%{python_prefix}
|
||||
%else
|
||||
%global python_config CONFIG_PFMLIB_NOPYTHON=y
|
||||
%endif
|
||||
|
||||
make \
|
||||
DESTDIR=$RPM_BUILD_ROOT \
|
||||
PREFIX=%{_prefix} \
|
||||
LIBDIR=%{_libdir} \
|
||||
PREFIX=$RPM_BUILD_ROOT%{_prefix} \
|
||||
LIBDIR=$RPM_BUILD_ROOT%{_libdir} \
|
||||
%{python_config} \
|
||||
LDCONFIG=/bin/true \
|
||||
install
|
||||
|
|
@ -129,71 +122,10 @@ rm $RPM_BUILD_ROOT%{_libdir}/lib*.a
|
|||
|
||||
%if %{with python}
|
||||
%files -n python3-libpfm
|
||||
%{python3_sitearch}/perfmon-*.egg-info/
|
||||
%{python3_sitearch}/perfmon/
|
||||
%{python3_sitearch}/*
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Dec 16 2025 Aaron Merey <amerey@redhat.com> - 4.13.0-17
|
||||
- Add libpfm-fix-const.patch
|
||||
|
||||
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 4.13.0-16
|
||||
- Rebuilt for Python 3.14.0rc3 bytecode
|
||||
|
||||
* Mon Aug 25 2025 Aaron Merey <amerey@redhat.com> - 4.13.0-15
|
||||
- Fix path in tests/runtest.sh
|
||||
|
||||
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 4.13.0-14
|
||||
- Rebuilt for Python 3.14.0rc2 bytecode
|
||||
|
||||
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-13
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Mon Jun 02 2025 Python Maint <python-maint@redhat.com> - 4.13.0-12
|
||||
- Rebuilt for Python 3.14
|
||||
|
||||
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 4.13.0-9
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Mon Jan 29 2024 William Cohen <wcohen@redhat.com> - 4.13.0-8
|
||||
- Fix gcc-14 -Werror=calloc-transposed-args compatibility
|
||||
|
||||
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Tue Aug 1 2023 William Cohen <wcohen@redhat.com> - 4.13.0-5
|
||||
- migrated to SPDX license
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.13.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 4.13.0-3
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Tue Apr 25 2023 Miro Hrončok <mhroncok@redhat.com> - 4.13.0-2
|
||||
- Don't install a Python .egg
|
||||
|
||||
* Tue Mar 28 2023 William Cohen <wcohen@redhat.com> - 4.13.0-1
|
||||
- Rebase on libpfm-4.13.0.
|
||||
|
||||
* Tue Mar 14 2023 William Cohen <wcohen@redhat.com> - 4.11.0-12
|
||||
- Add libpfm upstream patch to allow papi-7.0.1 to build.
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.11.0-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.11.0-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Jun 21 2022 Python Maint <python-maint@redhat.com> - 4.11.0-9
|
||||
- Fix FTBFS due to gcc12. (rhbz2045823)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
summary: CI Gating Plan
|
||||
discover:
|
||||
how: fmf
|
||||
directory: tests
|
||||
execute:
|
||||
how: tmt
|
||||
how: beakerlib
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (libpfm-4.13.0.tar.gz) = e61b210aa2ce80f0e47603c88eee2e4f2fe30ca2c0e194a5472b6a8de3bf9dc1085e5261bbb9ddbe5b6531c4b391fb34f20d038e5ebd8e6f4c14c2112aee508f
|
||||
SHA512 (libpfm-4.11.0.tar.gz) = 633035b8a7b35973437572095cdc80d422b2a1a61e74e14f106db95fa8e44e4518e591699cc457f828b8f2fb63f60eef6d0c7535c6b4c9a6c3a70d4550b3c3c7
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ rlJournalStart
|
|||
rlRun "yum-builddep -y $TmpDir/SPECS/*.spec"
|
||||
rlRun "su -c 'rpmbuild -D \"_topdir $TmpDir\" -bp $TmpDir/SPECS/*.spec &>$TmpDir/rpmbuild.log' $BUILD_USER"
|
||||
rlRun "rlFileSubmit $TmpDir/rpmbuild.log"
|
||||
rlRun "cd \"$TmpDir\"/BUILD/libpfm-*-build/libpfm-*/tests 2>/dev/null || cd \"$TmpDir\"/BUILD/libpfm-*/tests"
|
||||
rlRun "cd $TmpDir/BUILD/libpfm-*/tests"
|
||||
rlRun "su -c 'make PFMLIB=`rpm -ql libpfm | grep .so | head -n 1`' $BUILD_USER"
|
||||
rlRun "ldd validate | tee $TmpDir/ldd.log"
|
||||
rlRun "grep -q 'libpfm.so' $TmpDir/ldd.log"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue