import UBI gcc-toolset-14-gcc-14.2.1-10.el8_10
This commit is contained in:
parent
62cb63d4a3
commit
d862f552e8
81
SOURCES/gcc14-RHEL-49861.patch
Normal file
81
SOURCES/gcc14-RHEL-49861.patch
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
From 9d5baaa92c6609191fd2488389562ac1ad1f0fb2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
Date: Fri, 28 Mar 2025 15:41:41 +0000
|
||||||
|
Subject: [PATCH] libstdc++: Fix -Warray-bounds warning in std::vector<bool>
|
||||||
|
[PR110498]
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
In this case, we need to tell the compiler that the current size is not
|
||||||
|
larger than the new size so that all the existing elements can be copied
|
||||||
|
to the new storage. This avoids bogus warnings about overflowing the new
|
||||||
|
storage when the compiler can't tell that that cannot happen.
|
||||||
|
|
||||||
|
We might as well also hoist the loads of begin() and end() before the
|
||||||
|
allocation too. All callers will have loaded at least begin() before
|
||||||
|
calling _M_reallocate.
|
||||||
|
|
||||||
|
libstdc++-v3/ChangeLog:
|
||||||
|
|
||||||
|
PR libstdc++/110498
|
||||||
|
* include/bits/vector.tcc (vector<bool, A>::_M_reallocate):
|
||||||
|
Hoist loads of begin() and end() before allocation and use them
|
||||||
|
to state an unreachable condition.
|
||||||
|
* testsuite/23_containers/vector/bool/capacity/110498.cc: New
|
||||||
|
test.
|
||||||
|
|
||||||
|
Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
|
||||||
|
|
||||||
|
(cherry picked from commit aa3aaf2bfb8fcc17076993df4297597b68bc5f60)
|
||||||
|
---
|
||||||
|
libstdc++-v3/include/bits/vector.tcc | 5 ++++-
|
||||||
|
.../vector/bool/capacity/110498.cc | 18 ++++++++++++++++++
|
||||||
|
2 files changed, 22 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 libstdc++-v3/testsuite/23_containers/vector/bool/capacity/110498.cc
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
|
||||||
|
index dafc2a31a8b..c59c15beacd 100644
|
||||||
|
--- a/libstdc++-v3/include/bits/vector.tcc
|
||||||
|
+++ b/libstdc++-v3/include/bits/vector.tcc
|
||||||
|
@@ -1059,9 +1059,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
|
||||||
|
vector<bool, _Alloc>::
|
||||||
|
_M_reallocate(size_type __n)
|
||||||
|
{
|
||||||
|
+ const iterator __begin = begin(), __end = end();
|
||||||
|
+ if (size_type(__end - __begin) > __n)
|
||||||
|
+ __builtin_unreachable();
|
||||||
|
_Bit_pointer __q = this->_M_allocate(__n);
|
||||||
|
iterator __start(std::__addressof(*__q), 0);
|
||||||
|
- iterator __finish(_M_copy_aligned(begin(), end(), __start));
|
||||||
|
+ iterator __finish(_M_copy_aligned(__begin, __end, __start));
|
||||||
|
this->_M_deallocate();
|
||||||
|
this->_M_impl._M_start = __start;
|
||||||
|
this->_M_impl._M_finish = __finish;
|
||||||
|
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/110498.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/110498.cc
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..d2d09e10d19
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/capacity/110498.cc
|
||||||
|
@@ -0,0 +1,18 @@
|
||||||
|
+// { dg-options "-O3 -Werror=array-bounds" }
|
||||||
|
+// { dg-do compile }
|
||||||
|
+
|
||||||
|
+// Bug libstdc++/110498
|
||||||
|
+// Spurious warnings stringop-overflow and array-bounds copying data as bytes
|
||||||
|
+// into vector::reserve
|
||||||
|
+
|
||||||
|
+#include <vector>
|
||||||
|
+
|
||||||
|
+void f(std::vector<bool>& v)
|
||||||
|
+{
|
||||||
|
+ // Warning emitted when set to any number in the range [1,64].
|
||||||
|
+ const std::size_t reserve_size = 30;
|
||||||
|
+
|
||||||
|
+ v.reserve(reserve_size);
|
||||||
|
+ v.push_back(0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.49.0
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ BuildRequires: scl-utils-build
|
|||||||
%global gcc_major 14
|
%global gcc_major 14
|
||||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||||
%global gcc_release 7
|
%global gcc_release 10
|
||||||
%global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804
|
%global nvptx_tools_gitrev 87ce9dc5999e5fca2e1d3478a30888d9864c9804
|
||||||
%global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed
|
%global newlib_cygwin_gitrev d45261f62a15f8abd94a1031020b9a9f455e4eed
|
||||||
%global isl_version 0.24
|
%global isl_version 0.24
|
||||||
@ -152,7 +152,7 @@ BuildRequires: scl-utils-build
|
|||||||
Summary: GCC version %{gcc_major}
|
Summary: GCC version %{gcc_major}
|
||||||
Name: %{?scl_prefix}gcc
|
Name: %{?scl_prefix}gcc
|
||||||
Version: %{gcc_version}
|
Version: %{gcc_version}
|
||||||
Release: %{gcc_release}.1%{?dist}
|
Release: %{gcc_release}%{?dist}
|
||||||
# License notes for some of the less obvious ones:
|
# License notes for some of the less obvious ones:
|
||||||
# gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para
|
# gcc/doc/cppinternals.texi: Linux-man-pages-copyleft-2-para
|
||||||
# isl: MIT, BSD-2-Clause
|
# isl: MIT, BSD-2-Clause
|
||||||
@ -361,6 +361,8 @@ Patch3015: 0018-Use-CXX11-ABI.patch
|
|||||||
Patch3017: 0020-more-fixes.patch
|
Patch3017: 0020-more-fixes.patch
|
||||||
Patch3018: 0021-libstdc++-disable-tests.patch
|
Patch3018: 0021-libstdc++-disable-tests.patch
|
||||||
|
|
||||||
|
Patch4000: gcc14-RHEL-49861.patch
|
||||||
|
|
||||||
%if 0%{?rhel} == 9
|
%if 0%{?rhel} == 9
|
||||||
%global nonsharedver 110
|
%global nonsharedver 110
|
||||||
%endif
|
%endif
|
||||||
@ -724,6 +726,9 @@ touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m
|
|||||||
%patch -P3017 -p1 -b .dts-test-17~
|
%patch -P3017 -p1 -b .dts-test-17~
|
||||||
%patch -P3018 -p1 -b .dts-test-18~
|
%patch -P3018 -p1 -b .dts-test-18~
|
||||||
|
|
||||||
|
# Bugfix backports.
|
||||||
|
%patch -P4000 -p1 -b .RHEL-49861~
|
||||||
|
|
||||||
find gcc/testsuite -name \*.pr96939~ | xargs rm -f
|
find gcc/testsuite -name \*.pr96939~ | xargs rm -f
|
||||||
|
|
||||||
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
||||||
@ -1036,20 +1041,6 @@ make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z
|
|||||||
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now profiledbootstrap
|
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now profiledbootstrap
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
echo '/* GNU ld script
|
|
||||||
Use the shared library, but some functions are only in
|
|
||||||
the static library, so try that secondarily. */
|
|
||||||
%{oformat}
|
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared%{nonsharedver} )' \
|
|
||||||
> %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_system.so
|
|
||||||
|
|
||||||
%if 0
|
|
||||||
# Relink libcc1 against -lstdc++_nonshared:
|
|
||||||
sed -i -e '/^postdeps/s/-lstdc++/-lstdc++_system/' libcc1/libtool
|
|
||||||
rm -f libcc1/libcc1.la
|
|
||||||
make -C libcc1 libcc1.la
|
|
||||||
%endif
|
|
||||||
|
|
||||||
CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
|
CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
|
||||||
CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
|
CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
|
||||||
|
|
||||||
@ -1431,11 +1422,18 @@ echo '/* GNU ld script */
|
|||||||
%{oformat}
|
%{oformat}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 )' > libgomp.so
|
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 )' > libgomp.so
|
||||||
|
|
||||||
|
%define libstdcxx_so %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6
|
||||||
|
%define libstdcxx_so_link INPUT ( %{libstdcxx_so} -lstdc++_nonshared AS_NEEDED (%{libstdcxx_so}) )
|
||||||
|
%define libstdcxx64_so %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libstdc++.so.6
|
||||||
|
%define libstdcxx64_so_link INPUT ( %{libstdcxx64_so} -lstdc++_nonshared AS_NEEDED (%{libstdcxx64_so}) )
|
||||||
|
%define libstdcxx32_so %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libstdc++.so.6
|
||||||
|
%define libstdcxx32_so_link INPUT ( %{libstdcxx32_so} -lstdc++_nonshared AS_NEEDED (%{libstdcxx32_so}) )
|
||||||
|
|
||||||
echo '/* GNU ld script
|
echo '/* GNU ld script
|
||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
the static library, so try that secondarily. */
|
the static library, so try that secondarily. */
|
||||||
%{oformat}
|
%{oformat}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' > libstdc++.so
|
%{libstdcxx_so_link}' > libstdc++.so
|
||||||
rm -f libgfortran.so
|
rm -f libgfortran.so
|
||||||
echo '/* GNU ld script
|
echo '/* GNU ld script
|
||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
@ -1531,7 +1529,7 @@ echo '/* GNU ld script
|
|||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
the static library, so try that secondarily. */
|
the static library, so try that secondarily. */
|
||||||
%{oformat2}
|
%{oformat2}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libstdc++.so.6 -lstdc++_nonshared )' > 64/libstdc++.so
|
%{libstdcxx64_so_link}' > 64/libstdc++.so
|
||||||
rm -f 64/libgfortran.so
|
rm -f 64/libgfortran.so
|
||||||
echo '/* GNU ld script
|
echo '/* GNU ld script
|
||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
@ -1619,7 +1617,7 @@ echo '/* GNU ld script
|
|||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
the static library, so try that secondarily. */
|
the static library, so try that secondarily. */
|
||||||
%{oformat2}
|
%{oformat2}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libstdc++.so.6 -lstdc++_nonshared )' > 32/libstdc++.so
|
%{libstdcxx32_so_link}' > 32/libstdc++.so
|
||||||
rm -f 32/libgfortran.so
|
rm -f 32/libgfortran.so
|
||||||
echo '/* GNU ld script
|
echo '/* GNU ld script
|
||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
@ -1919,7 +1917,7 @@ echo '/* GNU ld script
|
|||||||
Use the shared library, but some functions are only in
|
Use the shared library, but some functions are only in
|
||||||
the static library, so try that secondarily. */
|
the static library, so try that secondarily. */
|
||||||
%{oformat}
|
%{oformat}
|
||||||
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' \
|
%{libstdcxx_so_link}' \
|
||||||
> %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so
|
> %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so
|
||||||
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
|
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
|
||||||
%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared.a
|
%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared.a
|
||||||
@ -2796,6 +2794,16 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 28 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 14.2.1-10
|
||||||
|
- Put the libstdc++ AS_NEEDED in the right places (RHEL-84606)
|
||||||
|
|
||||||
|
* Thu May 22 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 14.2.1-9
|
||||||
|
- Add AS_NEEDED libstdc++.so.6 when only needed through libstdc++_nonshared
|
||||||
|
(RHEL-84606)
|
||||||
|
|
||||||
|
* Thu May 22 2025 Siddhesh Poyarekar <siddhesh@redhat.com> 14.2.1-8
|
||||||
|
- libstdc++: Fix -Warray-bounds warning in std::vector<bool> (RHEL-49861)
|
||||||
|
|
||||||
* Fri Feb 7 2025 Marek Polacek <polacek@redhat.com> 14.2.1-7.1
|
* Fri Feb 7 2025 Marek Polacek <polacek@redhat.com> 14.2.1-7.1
|
||||||
- disable jQuery use, don't ship jquery.js (CVE-2020-11023, RHEL-78284)
|
- disable jQuery use, don't ship jquery.js (CVE-2020-11023, RHEL-78284)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user