11.5.0-1
Update from releases/gcc-11 branch Resolves: RHEL-35635
This commit is contained in:
parent
83bfe0688a
commit
070eb579ee
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,3 +48,4 @@
|
||||
/gcc-11.3.1-20221121.tar.xz
|
||||
/gcc-11.4.1-20230605.tar.xz
|
||||
/gcc-11.4.1-20231218.tar.xz
|
||||
/gcc-11.5.0-20240719.tar.xz
|
||||
|
60
gcc.spec
60
gcc.spec
@ -1,10 +1,10 @@
|
||||
%global DATE 20231218
|
||||
%global gitrev 9e6808abff4d96f3f09474a2a744ef5f56df3e28
|
||||
%global gcc_version 11.4.1
|
||||
%global DATE 20240719
|
||||
%global gitrev a985e3068a6f8045f8a6f2d2d5ae75f5eb0a8767
|
||||
%global gcc_version 11.5.0
|
||||
%global gcc_major 11
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||
%global gcc_release 3
|
||||
%global gcc_release 1
|
||||
%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e
|
||||
%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
@ -295,6 +295,8 @@ Patch32: gcc11-testsuite-fixes-2.patch
|
||||
Patch33: gcc11-pr111039.patch
|
||||
Patch34: gcc11-pr111070.patch
|
||||
Patch35: gcc11-testsuite-aarch64-add-fno-stack-protector.patch
|
||||
Patch36: gcc11-libgfortran-flush.patch
|
||||
Patch37: gcc11-pr113960.patch
|
||||
|
||||
Patch100: gcc11-fortran-fdec-duplicates.patch
|
||||
Patch101: gcc11-fortran-flogical-as-integer.patch
|
||||
@ -895,6 +897,8 @@ mark them as cross compiled.
|
||||
%patch33 -p1 -b .pr111039~
|
||||
%patch34 -p1 -b .pr111070~
|
||||
%patch35 -p1 -b .testsuite3~
|
||||
%patch36 -p1 -b .libgfortran-flush~
|
||||
%patch37 -p1 -b .pr113960~
|
||||
|
||||
%if 0%{?rhel} >= 9
|
||||
%patch100 -p1 -b .fortran-fdec-duplicates~
|
||||
@ -3588,6 +3592,54 @@ end
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Jul 19 2024 Marek Polacek <polacek@redhat.com> 11.5.0-1
|
||||
- update from releases/gcc-11 branch (RHEL-35635)
|
||||
- GCC 11.5 release
|
||||
- PRs ada/113893, ada/113979, analyzer/104042, c/113262, c/114007, c/114493,
|
||||
c++/89224, c++/92145, c++/92407, c++/97990, c++/99710, c++/100667,
|
||||
c++/100772, c++/101765, c++/103185, c++/104051, c++/111485,
|
||||
c++/111529, c++/113598, c++/113674, c++/114537, c++/114561,
|
||||
c++/114562, c++/114572, c++/114634, c++/114691, d/113125, d/113758,
|
||||
d/114171, debug/111080, debug/112718, driver/115440, fortran/50410,
|
||||
fortran/103715, fortran/104908, fortran/107426, fortran/114474,
|
||||
fortran/114825, gcov-profile/114115, libfortran/110651,
|
||||
libgomp/113192, libquadmath/114533, libstdc++/104259,
|
||||
libstdc++/104606, libstdc++/105417, libstdc++/110054,
|
||||
libstdc++/113250, libstdc++/114147, libstdc++/114401,
|
||||
libstdc++/114750, libstdc++/114803, libstdc++/115269,
|
||||
libstdc++/115454, libstdc++/115575, middle-end/90348,
|
||||
middle-end/95351, middle-end/107385, middle-end/108789,
|
||||
middle-end/110027, middle-end/110115, middle-end/110176,
|
||||
middle-end/111422, middle-end/111632, middle-end/112732,
|
||||
middle-end/113907, middle-end/113921, middle-end/114599,
|
||||
middle-end/114734, middle-end/114753, middle-end/115527,
|
||||
middle-end/115836, objc/101666, objc/101718, preprocessor/105608,
|
||||
rtl-optimization/100303, rtl-optimization/108086,
|
||||
rtl-optimization/110079, rtl-optimization/114768,
|
||||
rtl-optimization/114902, rtl-optimization/115092, sanitizer/97696,
|
||||
sanitizer/111736, sanitizer/114956, sanitizer/115172, target/88309,
|
||||
target/101737, target/101865, target/105522, target/108120,
|
||||
target/108743, target/110411, target/111610, target/111677,
|
||||
target/112397, target/113122, target/113281, target/114049,
|
||||
target/114098, target/114130, target/114184, target/114310,
|
||||
target/114837, target/114846, target/115253, target/115297,
|
||||
target/115360, target/115457, target/115475, target/115611,
|
||||
target/115691, testsuite/113175, testsuite/114034, testsuite/114036,
|
||||
tree-optimization/110386, tree-optimization/110422,
|
||||
tree-optimization/111039, tree-optimization/111070,
|
||||
tree-optimization/111331, tree-optimization/111407,
|
||||
tree-optimization/111445, tree-optimization/111736,
|
||||
tree-optimization/112495, tree-optimization/112505,
|
||||
tree-optimization/112793, tree-optimization/113372,
|
||||
tree-optimization/113552, tree-optimization/113603,
|
||||
tree-optimization/114027, tree-optimization/114115,
|
||||
tree-optimization/114566, tree-optimization/114876,
|
||||
tree-optimization/115192, tree-optimization/115337,
|
||||
tree-optimization/115843
|
||||
- fix FLUSH IOSTAT value (PR libfortran/101255, RHEL-32536)
|
||||
- fix conditions for using memcmp in
|
||||
std::lexicographical_compare_three_way (PR libstdc++/113960)
|
||||
|
||||
* Mon Dec 18 2023 Marek Polacek <polacek@redhat.com> 11.4.1-3
|
||||
- update from releases/gcc-11-branch (RHEL-17638)
|
||||
- PRs c++/106310, c++/106890, c++/109666, c++/109761, c++/111357,
|
||||
|
51
gcc11-libgfortran-flush.patch
Normal file
51
gcc11-libgfortran-flush.patch
Normal file
@ -0,0 +1,51 @@
|
||||
commit c14f38d4292ec22462a4080841d526f87428130a
|
||||
Author: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
Date: Thu Dec 16 15:33:17 2021 +0100
|
||||
|
||||
Fix FLUSH IOSTAT value
|
||||
|
||||
PR libfortran/101255
|
||||
|
||||
libgfortran/ChangeLog:
|
||||
|
||||
* io/file_pos.c: Fix error code.
|
||||
|
||||
gcc/testsuite/ChangeLog:
|
||||
|
||||
* gfortran.dg/iostat_5.f90: New file.
|
||||
|
||||
diff --git a/gcc/testsuite/gfortran.dg/iostat_5.f90 b/gcc/testsuite/gfortran.dg/iostat_5.f90
|
||||
new file mode 100644
|
||||
index 00000000000..1e72dfdf7e1
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/gfortran.dg/iostat_5.f90
|
||||
@@ -0,0 +1,16 @@
|
||||
+! PR libfortran/101255
|
||||
+! { dg-do run }
|
||||
+
|
||||
+program test
|
||||
+ use ISO_FORTRAN_ENV, only: IOSTAT_EOR, IOSTAT_END
|
||||
+ implicit none
|
||||
+ character(len=50) :: err
|
||||
+ integer :: i
|
||||
+
|
||||
+ err = ""
|
||||
+ flush(99, iostat=i, iomsg=err)
|
||||
+
|
||||
+ if (err == "") stop 1
|
||||
+ if (i >= 0) stop 2
|
||||
+ if (i == IOSTAT_EOR .or. i == IOSTAT_END) stop 3
|
||||
+end
|
||||
diff --git a/libgfortran/io/file_pos.c b/libgfortran/io/file_pos.c
|
||||
index 7e71ca577e0..4ed1698f17a 100644
|
||||
--- a/libgfortran/io/file_pos.c
|
||||
+++ b/libgfortran/io/file_pos.c
|
||||
@@ -527,7 +527,7 @@ st_flush (st_parameter_filepos *fpp)
|
||||
}
|
||||
else
|
||||
/* FLUSH on unconnected unit is illegal: F95 std., 9.3.5. */
|
||||
- generate_error (&fpp->common, LIBERROR_BAD_OPTION,
|
||||
+ generate_error (&fpp->common, -LIBERROR_BAD_UNIT,
|
||||
"Specified UNIT in FLUSH is not connected");
|
||||
|
||||
if (needs_unlock)
|
@ -4,7 +4,7 @@
|
||||
<a class="link" href="https://www.fsf.org" target="_top">FSF
|
||||
</a>
|
||||
</p><p>
|
||||
+ Release 11.4.1
|
||||
+ Release 11.5.0
|
||||
+ </p><p>
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
@ -17,7 +17,7 @@
|
||||
</p><p>
|
||||
- The API documentation, rendered into HTML, can be viewed online
|
||||
+ The API documentation, rendered into HTML, can be viewed locally
|
||||
+ <a class="link" href="api/index.html" target="_top">for the 11.4.1 release</a>,
|
||||
+ <a class="link" href="api/index.html" target="_top">for the 11.5.0 release</a>,
|
||||
+ online
|
||||
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
|
||||
and
|
||||
|
107
gcc11-pr113960.patch
Normal file
107
gcc11-pr113960.patch
Normal file
@ -0,0 +1,107 @@
|
||||
commit 6f5dcea85a31845ec6f4b6886734b0f02e013718
|
||||
Author: Jonathan Wakely <jwakely@redhat.com>
|
||||
Date: Tue Feb 27 17:50:34 2024 +0000
|
||||
|
||||
libstdc++: Fix conditions for using memcmp in std::lexicographical_compare_three_way [PR113960]
|
||||
|
||||
The change in r11-2981-g2f983fa69005b6 meant that
|
||||
std::lexicographical_compare_three_way started to use memcmp for
|
||||
unsigned integers on big endian targets, but for that to be valid we
|
||||
need the two value types to have the same size and we need to use that
|
||||
size to compute the length passed to memcmp.
|
||||
|
||||
I already defined a __is_memcmp_ordered_with trait that does the right
|
||||
checks, std::lexicographical_compare_three_way just needs to use it.
|
||||
|
||||
libstdc++-v3/ChangeLog:
|
||||
|
||||
PR libstdc++/113960
|
||||
* include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
|
||||
(__memcmp_ordered_with): New concept.
|
||||
(lexicographical_compare_three_way): Use __memcmp_ordered_with
|
||||
instead of __is_byte_iter. Use correct length for memcmp.
|
||||
* testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
|
||||
New test.
|
||||
|
||||
(cherry picked from commit f5cdda8acb06c20335855ed353ab9a441c12128a)
|
||||
|
||||
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
|
||||
index 7664301a208..6e648e48ad0 100644
|
||||
--- a/libstdc++-v3/include/bits/stl_algobase.h
|
||||
+++ b/libstdc++-v3/include/bits/stl_algobase.h
|
||||
@@ -1780,11 +1780,14 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
|
||||
}
|
||||
|
||||
#if __cpp_lib_three_way_comparison
|
||||
- // Iter points to a contiguous range of unsigned narrow character type
|
||||
- // or std::byte, suitable for comparison by memcmp.
|
||||
- template<typename _Iter>
|
||||
- concept __is_byte_iter = contiguous_iterator<_Iter>
|
||||
- && __is_memcmp_ordered<iter_value_t<_Iter>>::__value;
|
||||
+ // Both iterators refer to contiguous ranges of unsigned narrow characters,
|
||||
+ // or std::byte, or big-endian unsigned integers, suitable for comparison
|
||||
+ // using memcmp.
|
||||
+ template<typename _Iter1, typename _Iter2>
|
||||
+ concept __memcmp_ordered_with
|
||||
+ = (__is_memcmp_ordered_with<iter_value_t<_Iter1>,
|
||||
+ iter_value_t<_Iter2>>::__value)
|
||||
+ && contiguous_iterator<_Iter1> && contiguous_iterator<_Iter2>;
|
||||
|
||||
// Return a struct with two members, initialized to the smaller of x and y
|
||||
// (or x if they compare equal) and the result of the comparison x <=> y.
|
||||
@@ -1834,20 +1837,20 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
|
||||
if (!std::is_constant_evaluated())
|
||||
if constexpr (same_as<_Comp, __detail::_Synth3way>
|
||||
|| same_as<_Comp, compare_three_way>)
|
||||
- if constexpr (__is_byte_iter<_InputIter1>)
|
||||
- if constexpr (__is_byte_iter<_InputIter2>)
|
||||
- {
|
||||
- const auto [__len, __lencmp] = _GLIBCXX_STD_A::
|
||||
- __min_cmp(__last1 - __first1, __last2 - __first2);
|
||||
- if (__len)
|
||||
- {
|
||||
- const auto __c
|
||||
- = __builtin_memcmp(&*__first1, &*__first2, __len) <=> 0;
|
||||
- if (__c != 0)
|
||||
- return __c;
|
||||
- }
|
||||
- return __lencmp;
|
||||
- }
|
||||
+ if constexpr (__memcmp_ordered_with<_InputIter1, _InputIter2>)
|
||||
+ {
|
||||
+ const auto [__len, __lencmp] = _GLIBCXX_STD_A::
|
||||
+ __min_cmp(__last1 - __first1, __last2 - __first2);
|
||||
+ if (__len)
|
||||
+ {
|
||||
+ const auto __blen = __len * sizeof(*__first1);
|
||||
+ const auto __c
|
||||
+ = __builtin_memcmp(&*__first1, &*__first2, __blen) <=> 0;
|
||||
+ if (__c != 0)
|
||||
+ return __c;
|
||||
+ }
|
||||
+ return __lencmp;
|
||||
+ }
|
||||
#endif // is_constant_evaluated
|
||||
while (__first1 != __last1)
|
||||
{
|
||||
diff --git a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc
|
||||
new file mode 100644
|
||||
index 00000000000..d51ae1a3d50
|
||||
--- /dev/null
|
||||
+++ b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc
|
||||
@@ -0,0 +1,15 @@
|
||||
+// { dg-do run { target c++20 } }
|
||||
+
|
||||
+// PR libstdc++/113960
|
||||
+// std::map with std::vector as input overwrites itself with c++20, on s390x
|
||||
+
|
||||
+#include <algorithm>
|
||||
+#include <testsuite_hooks.h>
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ unsigned short a1[] { 1, 2, 3 };
|
||||
+ unsigned short a2[] { 1, 2, 4 };
|
||||
+ // Incorrect memcmp comparison for big endian targets.
|
||||
+ VERIFY( std::lexicographical_compare_three_way(a1, a1+3, a2, a2+3) < 0 );
|
||||
+}
|
1
sources
1
sources
@ -2,3 +2,4 @@ SHA512 (gcc-11.4.1-20231218.tar.xz) = cf8b715da6379300e91f5460162a5b6dc60aa29e20
|
||||
SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
|
||||
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
|
||||
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7
|
||||
SHA512 (gcc-11.5.0-20240719.tar.xz) = 8996ff2aaad765521303f0bde46e4c53992de266062ceabaef0b311ef68be6068e9b0002a57c036d898a6d58735f4d1884e6a7a152c567f941adb200d076fcd4
|
||||
|
@ -1,7 +1,36 @@
|
||||
#!/bin/sh
|
||||
[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1
|
||||
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
||||
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo "Usage: ./update-gcc.sh gcc/redhat/heads/gcc-NN-branch_commit_hash [git_reference_dir_to_speed_up]"
|
||||
exit 1
|
||||
fi
|
||||
export LC_ALL=C
|
||||
if ! [ -f gcc.spec ]; then echo Must be run in the directory with gcc.spec file.; exit 1; fi
|
||||
if [ -d gcc-dir.tmp ]; then echo gcc-dir.tmp already exists.; exit 1; fi
|
||||
v=`sed -n 's/^%global gcc_version //p' gcc.spec`
|
||||
p=`sed -n 's/^%global gitrev //p' gcc.spec`
|
||||
h=$1
|
||||
if [ "$#" -ge 2 ]; then
|
||||
git clone --dissociate --reference $2 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
||||
else
|
||||
git clone git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
|
||||
fi
|
||||
git --git-dir=gcc-dir.tmp/.git fetch origin $h
|
||||
d=`date --iso | sed 's/-//g'`
|
||||
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-11.3.1-$d/ $1 | xz -9e > gcc-11.3.1-$d.tar.xz
|
||||
cd gcc-dir.tmp
|
||||
git diff $p..$h > P1
|
||||
git log --format=%B `git log --format='%ae %H' $p..$h | awk '/^gccadmin@gcc.gnu.org/{print $2;exit 0}'`..$h > P2
|
||||
diff -up /dev/null P2 >> P1
|
||||
sed -n 's,^+[[:blank:]]\+PR \([a-z0-9+-]\+/[0-9]\+\)$,\1,p' P1 | sed 's/ - .*$//;s/[: ;.]//g' | LC_ALL=C sort -u -t / -k 1,1 -k 2,2n > P3
|
||||
> P4
|
||||
for i in `cat P3`; do if grep -F $i ../gcc.spec >/dev/null; then echo $i already recorded.; else echo $i >> P4; fi; done
|
||||
case "$v" in
|
||||
*.0.*) echo "- update from trunk" > P5;;
|
||||
*) echo "- update from releases/gcc-`echo $v | sed 's/\..*$//'` branch" > P5;;
|
||||
esac
|
||||
echo `cat P4` | sed 's/ /, /g' | fold -w 71 -s | sed '1s/^/ - PRs /;2,$s/^/ /;s/, $/,/' >> P5
|
||||
echo >> P5
|
||||
cd ..
|
||||
sed -i -e '/^%global gitrev /s/ [0-9a-f]\+$/ '$h'/;/^%global DATE /s/ [0-9]\+$/ '$d'/;/^%changelog$/r gcc-dir.tmp/P5' gcc.spec
|
||||
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-$v-$d/ $h | xz -9e > gcc-$v-$d.tar.xz
|
||||
rm -rf gcc-dir.tmp
|
||||
fedpkg new-sources gcc-$v-$d.tar.xz `sed 's/SHA512 (\(.*\)) = [0-9a-f]\+$/\1/' sources | grep -v '^gcc-'`
|
||||
|
Loading…
Reference in New Issue
Block a user