From 13c63157a32c04a7a7768d5668304767317ae7d2 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 26 Nov 2024 17:05:20 +0300 Subject: [PATCH] import libipt-2.1-4.el10 --- .gitignore | 2 + .libipt.metadata | 2 + ...pttc-lto-fix-lto-strlen-size-warning.patch | 41 ++++ ...void-lto-maybe-uninitialized-warning.patch | 122 ++++++++++ SPECS/libipt.spec | 214 ++++++++++++++++++ 5 files changed, 381 insertions(+) create mode 100644 .gitignore create mode 100644 .libipt.metadata create mode 100644 SOURCES/libipt-pttc-lto-fix-lto-strlen-size-warning.patch create mode 100644 SOURCES/libipt-ptunit-avoid-lto-maybe-uninitialized-warning.patch create mode 100644 SPECS/libipt.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..da3acbc --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/doc-v2.1.tar.xz +SOURCES/v2.1.tar.gz diff --git a/.libipt.metadata b/.libipt.metadata new file mode 100644 index 0000000..e9cf6d2 --- /dev/null +++ b/.libipt.metadata @@ -0,0 +1,2 @@ +bd8a58203ca345d433598a8c0cd339e1a5011357 SOURCES/doc-v2.1.tar.xz +f8b79bb1b5bcf1d319541b22f6270b4ae38599ea SOURCES/v2.1.tar.gz diff --git a/SOURCES/libipt-pttc-lto-fix-lto-strlen-size-warning.patch b/SOURCES/libipt-pttc-lto-fix-lto-strlen-size-warning.patch new file mode 100644 index 0000000..2b9ceb2 --- /dev/null +++ b/SOURCES/libipt-pttc-lto-fix-lto-strlen-size-warning.patch @@ -0,0 +1,41 @@ +From 0144bc2fa99421725585dbc7ecbe2e412f7f8d27 Mon Sep 17 00:00:00 2001 +From: Markus Metzger +Date: Thu, 12 Oct 2023 12:57:41 +0000 +Subject: [PATCH 1/2] pttc, lto: fix lto strnlen size warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building with -flto results in + + .../pttc/src/util.c:48:15: error: ‘strnlen’ specified bound 4096 exceeds source size 1024 [-Werror=stringop-overread] + 48 | len = strnlen(s, n); + | ^ + .../pttc/src/util.c: In function ‘yasm_advance_next_line.part.0’: + .../pttc/src/yasm.c:790:14: note: source object declared here + 790 | char s[1024]; + | ^ + +Increase the size to fix this. + +Signed-off-by: Markus Metzger +--- + pttc/src/yasm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pttc/src/yasm.c b/pttc/src/yasm.c +index 33b8eb9..1004cfa 100644 +--- a/pttc/src/yasm.c ++++ b/pttc/src/yasm.c +@@ -787,7 +787,7 @@ int yasm_lookup_label(const struct yasm *y, uint64_t *addr, + + static int yasm_advance_next_line(struct yasm *y) + { +- char s[1024]; ++ char s[FILENAME_MAX+1]; + char filename[FILENAME_MAX+1]; + int errcode; + int asm_line, asm_inc; +-- +2.41.0 + diff --git a/SOURCES/libipt-ptunit-avoid-lto-maybe-uninitialized-warning.patch b/SOURCES/libipt-ptunit-avoid-lto-maybe-uninitialized-warning.patch new file mode 100644 index 0000000..ab59f89 --- /dev/null +++ b/SOURCES/libipt-ptunit-avoid-lto-maybe-uninitialized-warning.patch @@ -0,0 +1,122 @@ +From b79e10fce4dfceddbc9adb706d7a3300df5fabe6 Mon Sep 17 00:00:00 2001 +From: Markus Metzger +Date: Mon, 16 Oct 2023 07:25:19 +0000 +Subject: [PATCH 2/2] libipt, ptunit: avoid lto maybe-uninitialized warning + +Building with GCC 13 and -flto produces + + In function 'pt_qry_get_offset', + inlined from 'get_offset_null' at .../libipt/test/src/ptunit-block_decoder.c:164:12, + inlined from 'main' at .../libipt/test/src/ptunit-block_decoder.c:336:2: + .../libipt/src/pt_query_decoder.c:380:16: error: 'decoder' may be used uninitialized [-Werror=maybe-uninitialized] + 380 | return pt_evt_get_offset(&decoder->evdec, offset); + | ^ + .../libipt/src/pt_event_decoder.c: In function 'main': + .../libipt/src/pt_event_decoder.c:1541:5: note: by argument 1 of type 'const struct pt_event_decoder *' to 'pt_evt_get_offset' declared here + 1541 | int pt_evt_get_offset(const struct pt_event_decoder *decoder, uint64_t *offset) + | ^ + .../libipt/test/src/ptunit-block_decoder.c:157:33: note: 'decoder' declared here + 157 | struct pt_block_decoder decoder; + | ^ + +Those are false positive since the decoder object isn't actually used. In + + &decoder->evdec + +we compute the address of the event decoder object within the block +decoder object. This adds an offset defined by the type. It does not +actually dereference the pointer to access an uninitialized decoder +object. + +Initialize the test decoder to avoid those warnings. Fixes #101. + +Signed-off-by: Markus Metzger +--- + libipt/test/src/ptunit-block_decoder.c | 4 ++++ + libipt/test/src/ptunit-encoder.c | 2 ++ + libipt/test/src/ptunit-insn_decoder.c | 4 ++++ + libipt/test/src/ptunit-packet_decoder.c | 4 ++++ + 4 files changed, 14 insertions(+) + +diff --git a/libipt/test/src/ptunit-block_decoder.c b/libipt/test/src/ptunit-block_decoder.c +index 44249d3..d1ff288 100644 +--- a/libipt/test/src/ptunit-block_decoder.c ++++ b/libipt/test/src/ptunit-block_decoder.c +@@ -158,6 +158,8 @@ static struct ptunit_result get_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_blk_get_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +@@ -184,6 +186,8 @@ static struct ptunit_result get_sync_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_blk_get_sync_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +diff --git a/libipt/test/src/ptunit-encoder.c b/libipt/test/src/ptunit-encoder.c +index 15d5eb4..edabe9e 100644 +--- a/libipt/test/src/ptunit-encoder.c ++++ b/libipt/test/src/ptunit-encoder.c +@@ -138,6 +138,8 @@ static struct ptunit_result get_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&encoder, 0, sizeof(encoder)); ++ + errcode = pt_enc_get_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +diff --git a/libipt/test/src/ptunit-insn_decoder.c b/libipt/test/src/ptunit-insn_decoder.c +index c8447e7..c5a057c 100644 +--- a/libipt/test/src/ptunit-insn_decoder.c ++++ b/libipt/test/src/ptunit-insn_decoder.c +@@ -158,6 +158,8 @@ static struct ptunit_result get_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_insn_get_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +@@ -184,6 +186,8 @@ static struct ptunit_result get_sync_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_insn_get_sync_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +diff --git a/libipt/test/src/ptunit-packet_decoder.c b/libipt/test/src/ptunit-packet_decoder.c +index 39f1ede..4cb60ad 100644 +--- a/libipt/test/src/ptunit-packet_decoder.c ++++ b/libipt/test/src/ptunit-packet_decoder.c +@@ -158,6 +158,8 @@ static struct ptunit_result get_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_pkt_get_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +@@ -199,6 +201,8 @@ static struct ptunit_result get_sync_offset_null(void) + uint64_t offset; + int errcode; + ++ memset(&decoder, 0, sizeof(decoder)); ++ + errcode = pt_pkt_get_sync_offset(NULL, &offset); + ptu_int_eq(errcode, -pte_invalid); + +-- +2.41.0 + diff --git a/SPECS/libipt.spec b/SPECS/libipt.spec new file mode 100644 index 0000000..e6c873c --- /dev/null +++ b/SPECS/libipt.spec @@ -0,0 +1,214 @@ +# rmpbuild parameters: +# --with docs: Build pre-generated documentation. + +%global __cmake_in_source_build 1 + +Name: libipt +Version: 2.1 +Release: 4%{?dist} +Summary: Intel Processor Trace Decoder Library +License: BSD-3-Clause +URL: https://github.com/intel/libipt +Source0: https://github.com/intel/libipt/archive/v%{version}.tar.gz +Patch0: libipt-pttc-lto-fix-lto-strlen-size-warning.patch +Patch1: libipt-ptunit-avoid-lto-maybe-uninitialized-warning.patch +Source1: doc-v%{version}.tar.xz +# c++ is required only for -DPTUNIT test "ptunit-cpp". +BuildRequires: gcc-c++ cmake +%if 0%{?_with_docs:1} +# pandoc is for -DMAN. +BuildRequires: pandoc +%endif +BuildRequires: make +ExclusiveArch: %{ix86} x86_64 + +%description +The Intel Processor Trace (Intel PT) Decoder Library is Intel's reference +implementation for decoding Intel PT. It can be used as a standalone library +or it can be partially or fully integrated into your tool. + +%ldconfig_scriptlets + +%package devel +Summary: Header files and libraries for Intel Processor Trace Decoder Library +Requires: %{name}%{?_isa} = %{version}-%{release} +ExclusiveArch: %{ix86} x86_64 + +%description devel +The %{name}-devel package contains the header files and libraries needed to +develop programs that use the Intel Processor Trace (Intel PT) Decoder Library. + +%prep +%setup -q -n libipt-%{version} +%patch -p1 -P 0 +%patch -p1 -P 1 + +%build +%cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DPTUNIT:BOOL=ON \ +%if 0%{?_with_docs:1} + -DMAN:BOOL=ON \ +%endif + -DDEVBUILD:BOOL=ON \ + . +%make_build + +%install +%make_install +%global develdocs howto_libipt.md +(cd doc;cp -p %{develdocs} ..) + +# If not building documentation, copy the pre-generated man pages +# to the appropriate place. Otherwise, tar up the generated +# documentation for use in subsequent builds. +%if 0%{?_with_docs:1} +(cd $RPM_BUILD_ROOT%{_mandir}/..; %__tar cJf %{SOURCE1} .) +%else +mkdir -p $RPM_BUILD_ROOT%{_mandir} +(cd $RPM_BUILD_ROOT%{_mandir}/..; %__tar xJf %{SOURCE1}) +%endif + +%check +ctest -V %{?_smp_mflags} + +%files +%doc README +%license LICENSE +%{_libdir}/%{name}.so.* + +%files devel +%doc %{develdocs} +%{_includedir}/* +%{_libdir}/%{name}.so +%{_mandir}/*/*.gz + +%changelog +* Mon Jun 24 2024 Troy Dawson - 2.1-4 +- Bump release for June 2024 mass rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Oct 18 2023 Keith Seitz - 2.1-1 +- Update to v2.1. + +* Thu Jul 20 2023 Fedora Release Engineering - 2.0.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jul 06 2023 Keith Seitz - 2.0.6-1 +- Import v2.0.6 and regenerate documentation. + +* Tue Mar 07 2023 Keith Seitz +- migrated to SPDX license + +* Thu Jan 19 2023 Fedora Release Engineering - 2.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 2.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 27 2022 Keith Seitz - 2.0.5-1 +- Import v2.0.5 and regenerate documentation. + +* Thu Jan 20 2022 Fedora Release Engineering - 2.0.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 2.0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Mar 30 2021 Keith Seitz - 2.0.4-2 +- Add support for pre-generated documenation, allowing removal + of pandoc dependency. (RHBZ 1943531, Keith Seitz) + +* Wed Mar 10 2021 Kevin Buettner - 2.0.4-1 +- Release v2.0.4. + +* Tue Jan 26 2021 Fedora Release Engineering - 2.0.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Aug 19 2020 Jeff Law - 2.0.2-2 +- Fix uninitialized variable in testsuite + +* Tue Aug 04 2020 Keith Seitz - 2.0.2-1 +- Upgrade to 2.0.2. + +* Sat Aug 01 2020 Fedora Release Engineering - 2.0.1-6 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 2.0.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 24 2020 Jeff Law - 2.0.1-4 +- Use __cmake_in_source_build + +* Wed Jul 22 2020 Tom Stellard - 2.0.1-3 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Wed Jan 29 2020 Fedora Release Engineering - 2.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Aug 16 2019 Sergio Durigan Junior - 2.0.1-1 +- Release v2.0.1. + +* Thu Jul 25 2019 Fedora Release Engineering - 2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Aug 8 2018 Sergio Durigan Junior - 2.0-1 +- Release v2.0. + +* Fri Jul 13 2018 Fedora Release Engineering - 1.6.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Mar 5 2018 Jan Kratochvil - 1.6.1-8 +- Enable tests (PTUNIT) and man pages (MAN). +- Change BuildRequires: gcc -> gcc-c++ as PTUNIT tests require C++. + +* Sat Mar 3 2018 Jan Kratochvil - 1.6.1-7 +- Add: BuildRequires: gcc + https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires + +* Fri Mar 2 2018 Jan Kratochvil - 1.6.1-6 +- Fix v1.6.1-implicit-fallthrough.patch compatibility with gcc < 7. +- Use %%ldconfig_scriptlets. + https://fedoraproject.org/wiki/Packaging:Scriptlets#Shared_Libraries + +* Wed Feb 07 2018 Fedora Release Engineering - 1.6.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.6.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.6.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jun 9 2017 Jan Kratochvil - 1.6.1-2 +- Fix [-Werror=implicit-fallthrough=] with gcc-7.1.1. + +* Fri Jun 9 2017 Jan Kratochvil - 1.6.1-1 +- Rebase to upstream 1.6.1. + +* Fri Feb 10 2017 Fedora Release Engineering - 1.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Apr 11 2016 Jan Kratochvil - 1.5-1 +- Rebase to upstream 1.5. + +* Thu Feb 04 2016 Fedora Release Engineering - 1.4.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 20 2016 Jan Kratochvil - 1.4.4-1 +- Rebase to upstream 1.4.4. + +* Wed Oct 14 2015 Jan Kratochvil - 1.4.3-1 +- Rebase to upstream 1.4.3. + +* Mon Aug 31 2015 Jan Kratochvil - 1.4.2-1 +- Initial Fedora packaging.