commit 070a7fed67f89463dfc6a56990648d3570cf08f8 Author: CentOS Sources Date: Tue May 10 02:59:12 2022 -0400 import gcc-toolset-11-gcc-11.2.1-9.1.el8 diff --git a/.gcc-toolset-11-gcc.metadata b/.gcc-toolset-11-gcc.metadata new file mode 100644 index 0000000..ea49c74 --- /dev/null +++ b/.gcc-toolset-11-gcc.metadata @@ -0,0 +1,8 @@ +7f4348418dc3efefd357b32a2b5c8010211ab284 SOURCES/doxygen-1.8.0.src.tar.gz +54f8e112180f2cad6cf9459aab4681c7f157aca9 SOURCES/gcc-11.2.1-20220127.tar.xz +db38c7b67f8eea9f2e5b8a48d219165b2fdab11f SOURCES/gmp-6.1.0.tar.bz2 +bbffc5a2b05e4f0c97e882f96c448504491dc4ed SOURCES/isl-0.18.tar.bz2 +b8be66396c726fdc36ebb0f692ed8a8cca3bcc66 SOURCES/mpc-1.0.3.tar.gz +e3b0af77f18505184410d621fe0aae179e229dba SOURCES/mpfr-3.1.4.tar.bz2 +6ec33952e824e837fef0e829c93d39d6a507082f SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz +0e0c6f8d68ab0878f02287ac082c1077c831cd81 SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2e41e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +SOURCES/doxygen-1.8.0.src.tar.gz +SOURCES/gcc-11.2.1-20220127.tar.xz +SOURCES/gmp-6.1.0.tar.bz2 +SOURCES/isl-0.18.tar.bz2 +SOURCES/mpc-1.0.3.tar.gz +SOURCES/mpfr-3.1.4.tar.bz2 +SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz +SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz diff --git a/SOURCES/0001-basic_string-reserve-n-semantics-are-not-available-i.patch b/SOURCES/0001-basic_string-reserve-n-semantics-are-not-available-i.patch new file mode 100644 index 0000000..7031726 --- /dev/null +++ b/SOURCES/0001-basic_string-reserve-n-semantics-are-not-available-i.patch @@ -0,0 +1,85 @@ +From 8a7f364afd86a4c4c2c747ae9cb4216fe992acc8 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 25 Aug 2021 12:36:42 -0400 +Subject: [PATCH 01/17] basic_string::reserve(n) semantics are not available in + DTS + +Various tests were added upstream 2020-08-06 as part of: + "libstdc++: Implement P0966 std::string::reserve should not shrink" + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=140cf935cd118f7208b7c3826a8b9d50936242f0 + +std::string and std::wstring are instantiated in the system libstdc++.so +via explicit instantiation definitions, so the new basic_string::reserve(n) +semantics are not available in DTS. + +Update/disable the pertinent parts of the tests to reflect the behavior +when run against the system libstdc++.so. +--- + .../testsuite/21_strings/basic_string/capacity/char/1.cc | 6 ------ + .../21_strings/basic_string/capacity/char/18654.cc | 2 +- + .../testsuite/21_strings/basic_string/capacity/wchar_t/1.cc | 6 ------ + .../21_strings/basic_string/capacity/wchar_t/18654.cc | 2 +- + 4 files changed, 2 insertions(+), 14 deletions(-) + +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc +index eea69771f..64187718d 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc +@@ -41,12 +41,6 @@ void test01() + sz01 = str01.capacity(); + VERIFY( sz01 < sz02 ); + +- // P0966: reserve should not shrink +- str01.reserve(100); +- sz01 = str01.capacity(); +- str01.reserve(sz01 - 1); +- VERIFY( str01.capacity() == sz01 ); +- + sz01 = str01.size() + 5; + str01.resize(sz01); + sz02 = str01.size(); +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc +index 02ce78ea6..3a7352123 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc +@@ -51,7 +51,7 @@ void test01() + VERIFY( cap >= 3 * i ); + + str.reserve(2 * i); +- VERIFY( str.capacity() == cap ); ++ VERIFY( str.capacity() == 2 * i ); + + #if __cplusplus <= 201703L + str.reserve(); +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc +index f01a27e8c..70915a94d 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc +@@ -41,12 +41,6 @@ void test01() + sz01 = str01.capacity(); + VERIFY( sz01 < sz02 ); + +- // P0966: reserve should not shrink +- str01.reserve(100); +- sz01 = str01.capacity(); +- str01.reserve(sz01 - 1); +- VERIFY( str01.capacity() == sz01 ); +- + sz01 = str01.size() + 5; + str01.resize(sz01); + sz02 = str01.size(); +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc +index 267fd198b..c9711a294 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc +@@ -51,7 +51,7 @@ void test01() + VERIFY( cap >= 3 * i ); + + str.reserve(2 * i); +- VERIFY( str.capacity() == cap ); ++ VERIFY( str.capacity() == 2 * i ); + + #if __cplusplus <= 201703L + str.reserve(); +-- +2.31.1 diff --git a/SOURCES/0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch b/SOURCES/0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch new file mode 100644 index 0000000..264745b --- /dev/null +++ b/SOURCES/0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch @@ -0,0 +1,46 @@ +From d7fae9f17479c44dae68483d457fc3fbb58c4b83 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 25 Aug 2021 15:57:36 -0400 +Subject: [PATCH 04/17] operator>>(istream&, char(&)[N]) eofbit fixes are not + available in DTS + +The upstream commit on 2020-08--6: + Do not set eofbit eagerly in operator>>(istream&, char(&)[N]) + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=4e39f563c0cd25401f689c2093cb8c13692156ef +altered the behaviour of std::istream symbols defined in libstdc++.so, +but with DTS you get the old definitions from the system libstdc++.so + +Hence this patch tweaks the new tests to avoid failing when run against +the system libstdc++.so +--- + .../21_strings/basic_string/inserters_extractors/char/13.cc | 1 - + .../21_strings/basic_string/inserters_extractors/wchar_t/13.cc | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc +index a25d8a93d..7d85e6ead 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc +@@ -29,7 +29,6 @@ test01() + std::string buf; + in.width(4); + in >> buf; +- VERIFY( !in.eof() ); // should stop after reading 4 chars + VERIFY( buf == str ); + } + +diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc +index f15294a44..fa5fe3d4a 100644 +--- a/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc ++++ b/libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc +@@ -29,7 +29,6 @@ test01() + std::wstring buf; + in.width(4); + in >> buf; +- VERIFY( !in.eof() ); // should stop after reading 4 chars + VERIFY( buf == str ); + } + +-- +2.31.1 + diff --git a/SOURCES/0005-Disable-tests-for-PR-libstdc-79820-and-PR-libstdc-81.patch b/SOURCES/0005-Disable-tests-for-PR-libstdc-79820-and-PR-libstdc-81.patch new file mode 100644 index 0000000..0641e85 --- /dev/null +++ b/SOURCES/0005-Disable-tests-for-PR-libstdc-79820-and-PR-libstdc-81.patch @@ -0,0 +1,53 @@ +From 3ede89bd19328c26bcd881b873cf4a766ae0da3a Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 25 Aug 2021 17:04:02 -0400 +Subject: [PATCH 05/17] Disable tests for PR libstdc++/79820 and PR + libstdc++/81751 under DTS + +Upstream commit 2017-08-09 + PR libstdc++/81751 don't call fflush(NULL) + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=04d07b61cb80fd97e98eb39451ff6a8675a63d90 +added these test cases as part of verifying the behavior of sys_open (that +it resets errno and doesn't call fflush on NULL). + +These symbols are in the system stdlib when run from DTS and thus aren't +fixed by the above change: + + 1521: 000000000007c430 104 FUNC GLOBAL DEFAULT 12 std::__basic_file::sys_open(int, std::_Ios_Openmode)@@GLIBCXX_3.4 + 2895: 000000000007c730 95 FUNC GLOBAL DEFAULT 12 std::__basic_file::sys_open(_IO_FILE*, std::_Ios_Openmode)@@GLIBCXX_3.4 + +This patch disables the non-fixed assertions. +--- + libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc | 2 -- + libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc | 1 - + 2 files changed, 3 deletions(-) + +diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc +index 278b99169..e2a8e3b3d 100644 +--- a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc ++++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc +@@ -26,9 +26,7 @@ void + test01() + { + FILE* f = std::fopen("79820.txt", "w"); +- errno = 127; + __gnu_cxx::stdio_filebuf b(f, std::ios::out, BUFSIZ); +- VERIFY(errno == 127); // PR libstdc++/79820 + b.close(); + std::fclose(f); + } +diff --git a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc +index 21aa06f78..6a231d7cf 100644 +--- a/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc ++++ b/libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc +@@ -31,7 +31,6 @@ test01() + FILE* in1 = std::fopen("81751.txt", "r"); + __gnu_cxx::stdio_filebuf buf1(in1, std::ios::in, BUFSIZ); + int c = buf1.sgetc(); +- VERIFY( c == std::char_traits::eof() ); // PR libstdc++/81751 + + std::fflush(out); + FILE* in2 = std::fopen("81751.txt", "r"); +-- +2.31.1 + diff --git a/SOURCES/0006-Don-t-assume-has_facet-codecvt_c16-when-run-against-.patch b/SOURCES/0006-Don-t-assume-has_facet-codecvt_c16-when-run-against-.patch new file mode 100644 index 0000000..dcabb08 --- /dev/null +++ b/SOURCES/0006-Don-t-assume-has_facet-codecvt_c16-when-run-against-.patch @@ -0,0 +1,118 @@ +From 59388ee3dac5c737086ed1f83f552a44481a2213 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Tue, 31 Aug 2021 16:08:57 -0400 +Subject: [PATCH 06/17] Don't assume has_facet when run against + system libstdc++ + +Upstream commit 2019-02-19: + P0482R5 char8_t: Standard library support + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=c124af936b6b225eb548ccdd7f01400511d784dc +added new locale facets for char8_t. + +has_facet returns false, as it is using the std::locale the system libstdc++: + +$ eu-readelf -s char16_t-char8_t.exe |c++filt |grep UNDEF|grep locale + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::classic()@GLIBCXX_3.4 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::locale(std::locale const&)@GLIBCXX_3.4 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::id::_M_id() const@GLIBCXX_3.4 (2) + 22: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::~locale()@GLIBCXX_3.4 (2) + 64: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::classic()@@GLIBCXX_3.4 + 76: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::locale(std::locale const&)@@GLIBCXX_3.4 + 89: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::id::_M_id() const@@GLIBCXX_3.4 + 108: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::locale::~locale()@@GLIBCXX_3.4 + +Hence this patch tweaks tests so that they bail out if run against an older std::locale. +--- + libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc | 3 ++- + libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc | 3 ++- + libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc | 3 ++- + libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc | 3 ++- + libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc | 2 ++ + libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc | 2 ++ + 6 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc +index 71a23bef4..d4aa519a2 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc +@@ -31,7 +31,8 @@ test01() + using namespace std; + typedef codecvt codecvt_c16; + locale loc_c = locale::classic(); +- VERIFY(has_facet(loc_c)); ++ if (!has_facet(loc_c)) ++ return; + const codecvt_c16* const cvt = &use_facet(loc_c); + + VERIFY(!cvt->always_noconv()); +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc +index 7b5ce126d..05c77b2b1 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc +@@ -29,7 +29,8 @@ test01() + using namespace std; + typedef codecvt codecvt_c16; + locale loc_c = locale::classic(); +- VERIFY(has_facet(loc_c)); ++ if (!has_facet(loc_c)) ++ return; + const codecvt_c16* const cvt = &use_facet(loc_c); + + VERIFY(!cvt->always_noconv()); +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc +index f30ae22e9..281969e9b 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc +@@ -33,7 +33,8 @@ test01() + using namespace std; + typedef codecvt codecvt_c32; + locale loc_c = locale::classic(); +- VERIFY(has_facet(loc_c)); ++ if (!has_facet(loc_c)) ++ return; + const codecvt_c32* const cvt = &use_facet(loc_c); + + VERIFY(!cvt->always_noconv()); +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc +index 558ba9145..82980b702 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc +@@ -31,7 +31,8 @@ test01() + using namespace std; + typedef codecvt codecvt_c32; + locale loc_c = locale::classic(); +- VERIFY(has_facet(loc_c)); ++ if (!has_facet(loc_c)) ++ return; + const codecvt_c32* const cvt = &use_facet(loc_c); + + VERIFY(!cvt->always_noconv()); +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc b/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc +index 5eab05ba2..d6f663ce6 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc +@@ -34,6 +34,8 @@ void test(const C* from) + std::mbstate_t state{}; + char8_t buf[16] = { }; + using test_type = std::codecvt; ++ if (!std::has_facet(std::locale::classic())) ++ return; + const test_type& cvt = std::use_facet(std::locale::classic()); + auto from_end = from + len; + auto from_next = from; +diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc b/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc +index b1b3cff31..167bc0ca3 100644 +--- a/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc ++++ b/libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc +@@ -32,6 +32,8 @@ void test(const C* from) + std::mbstate_t state{}; + char buf[16] = { }; + using test_type = std::codecvt; ++ if (!std::has_facet(std::locale::classic())) ++ return; + const test_type& cvt = std::use_facet(std::locale::classic()); + auto from_end = from + len; + auto from_next = from; +-- +2.31.1 + diff --git a/SOURCES/0008-testsuite-build-plugins-with-std-c-11.patch b/SOURCES/0008-testsuite-build-plugins-with-std-c-11.patch new file mode 100644 index 0000000..f97bad3 --- /dev/null +++ b/SOURCES/0008-testsuite-build-plugins-with-std-c-11.patch @@ -0,0 +1,42 @@ +From 16694079a3f415f5e5683b0afe6978810ac259b1 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Tue, 31 Aug 2021 17:01:05 -0400 +Subject: [PATCH 08/17] testsuite: build plugins with -std=c++11 + +Various testsuite plugins fail when built within DTS with e.g.: + cc1: error: cannot load plugin ./diagnostic_plugin_test_paths.so: /builddir/build/BUILD/gcc-11.1.1-20210623/obj-x86_64-redhat-linux/x86_64-redhat-linux/libstdc++-v3/src/.libs/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./diagnostic_plugin_test_paths.so) + +These turn out to C++14's sized deletion +(see https://en.cppreference.com/w/cpp/memory/new/operator_delete): + + 14: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF _ZdlPvm@CXXABI_1.3.9 (4) + 48: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF _ZdlPvm@CXXABI_1.3.9 + 14: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF operator delete(void*, unsigned long)@CXXABI_1.3.9 (4) + 48: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF operator delete(void*, unsigned long)@CXXABI_1.3.9 + +Looks like plugin.exp is building the test plugins against the +freshly-built libstdc++, and then trying to dynamically load them +against the system libstdc++. + +This patch forces the use of -std=c++11 when building these test plugins, +to sidestep the problem. +--- + gcc/testsuite/lib/plugin-support.exp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gcc/testsuite/lib/plugin-support.exp b/gcc/testsuite/lib/plugin-support.exp +index 6d651901e..9943dbb37 100644 +--- a/gcc/testsuite/lib/plugin-support.exp ++++ b/gcc/testsuite/lib/plugin-support.exp +@@ -103,7 +103,7 @@ proc plugin-test-execute { plugin_src plugin_tests } { + } + set optstr [concat $optstr "-DIN_GCC -fPIC -shared -fno-rtti -undefined dynamic_lookup"] + } else { +- set plug_cflags $PLUGINCFLAGS ++ set plug_cflags "$PLUGINCFLAGS -std=c++11" + set optstr "$includes $extra_flags -DIN_GCC -fPIC -shared -fno-rtti" + } + +-- +2.31.1 + diff --git a/SOURCES/0009-Fix-22_locale-locale-cons-unicode.cc-when-run-under-.patch b/SOURCES/0009-Fix-22_locale-locale-cons-unicode.cc-when-run-under-.patch new file mode 100644 index 0000000..a540702 --- /dev/null +++ b/SOURCES/0009-Fix-22_locale-locale-cons-unicode.cc-when-run-under-.patch @@ -0,0 +1,36 @@ +From 87e2a4f28b444f376ebe15f38e2743eb952ff355 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 1 Sep 2021 11:02:53 -0400 +Subject: [PATCH 09/17] Fix 22_locale/locale/cons/unicode.cc when run under DTS + +Various has_facet calls return false in DTS, as DTS is using the +std::locale from the system libstdc++. + +Hence this patch tweaks tests to remove the VERIFY from the result of +the call, so that they do not fail if run against an older +std::locale. + +These VERIFY tests were added upstream 2015-01-16 in + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=bb93f35da1612940266f5d159b6cc5a3e54fca14 +--- + libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc +index 15c621099..328145094 100644 +--- a/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc ++++ b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc +@@ -70,8 +70,8 @@ void test01() + VERIFY( has_facet(loc13) ); + #endif + #ifdef _GLIBCXX_USE_C99_STDINT_TR1 +- VERIFY( has_facet(loc13) ); +- VERIFY( has_facet(loc13) ); ++ (void)( has_facet(loc13) ); ++ (void)( has_facet(loc13) ); + #ifdef _GLIBCXX_USE_CHAR8_T + VERIFY( has_facet(loc13) ); + VERIFY( has_facet(loc13) ); +-- +2.31.1 + diff --git a/SOURCES/0010-Don-t-verify-exception-handling-in-basic_filebuf-clo.patch b/SOURCES/0010-Don-t-verify-exception-handling-in-basic_filebuf-clo.patch new file mode 100644 index 0000000..9e16d2e --- /dev/null +++ b/SOURCES/0010-Don-t-verify-exception-handling-in-basic_filebuf-clo.patch @@ -0,0 +1,30 @@ +From d1555ffdd9b4fa6f3ceaa166bbfee0b3b9973ecf Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 1 Sep 2021 11:24:34 -0400 +Subject: [PATCH 10/17] Don't verify exception handling in basic_filebuf::close + in DTS [PR81256] + +27_io/basic_filebuf/close/81256.cc was added upstream 2018-05-14 in + PR libstdc++/81256 fix exception handling in basic_filebuf::close + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e77497ab777d3dfa19224648d658220807ab7419 + +When run under DTS, + std::basic_filebuf >::close +comes from the system libstdc++, and hence the test fails. +--- + libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc | 1 - + 1 file changed, 1 deletion(-) + +--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc ++++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc +@@ -80,7 +80,6 @@ test01() + caught = true; + } + VERIFY( conv.exceptions_thrown == 1 ); +- VERIFY( caught ); + } + VERIFY( conv.exceptions_thrown == 1 ); + } +-- +2.31.1 + diff --git a/SOURCES/0011-Add-dts.exp-and-use-it-to-fix-22_locale-messages-136.patch b/SOURCES/0011-Add-dts.exp-and-use-it-to-fix-22_locale-messages-136.patch new file mode 100644 index 0000000..7d28f1e --- /dev/null +++ b/SOURCES/0011-Add-dts.exp-and-use-it-to-fix-22_locale-messages-136.patch @@ -0,0 +1,117 @@ +From b6989e3a4acda2d75612f3f3847dbea4245ff536 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Wed, 1 Sep 2021 15:39:45 -0400 +Subject: [PATCH 11/17] Add dts.exp and use it to fix + 22_locale/messages/13631.cc + +This test was added upstream 2014-12-03: + "re PR libstdc++/13631 (Problems in messages)" + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=d31008d7a0d53b431f176aad8dda5498de823122 + +as part of a fix that is present in the system libstdc++.so in +GCC 5 onwards. + +When run in DTS against such a system library, this test will fail. +This patch introduces a dts.exp which detects the version of the +underlying system libstdc++.so and exposes it to tests via +-D__CXXSTDLIB_SO_VERSION__=, so that we can ifdef specific tests +away, conditionally on the base GCC. +--- + .../testsuite/22_locale/messages/13631.cc | 7 +++++ + libstdc++-v3/testsuite/lib/dts.exp | 31 +++++++++++++++++++ + libstdc++-v3/testsuite/lib/libstdc++.exp | 6 ++++ + 3 files changed, 44 insertions(+) + create mode 100644 libstdc++-v3/testsuite/lib/dts.exp + +diff --git a/libstdc++-v3/testsuite/22_locale/messages/13631.cc b/libstdc++-v3/testsuite/22_locale/messages/13631.cc +index b8ae3d4f1..5b20df382 100644 +--- a/libstdc++-v3/testsuite/22_locale/messages/13631.cc ++++ b/libstdc++-v3/testsuite/22_locale/messages/13631.cc +@@ -50,7 +50,10 @@ void test01() + msgs_facet.close(fake_msgs); + msgs_facet.close(msgs); + ++ // Fixed upstream in GCC 5 ++#if __CXXSTDLIB_SO_VERSION__ >= 501000 + VERIFY( translation1 == translation2 ); ++#endif + } + + void test02() +@@ -72,8 +75,12 @@ void test02() + std::wstring translation1 = msgs_facet.get(msgs, 0, 0, msgid); + + // Without a real translation this test doesn't mean anything: ++ ++ // Fixed upstream in GCC 5 ++#if __CXXSTDLIB_SO_VERSION__ >= 501000 + VERIFY( !translation1.empty() ); + VERIFY( translation1 != msgid ); ++#endif + + // Opening another catalog was enough to show the problem, even a fake + // catalog. +diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp +new file mode 100644 +index 000000000..76ece66d3 +--- /dev/null ++++ b/libstdc++-v3/testsuite/lib/dts.exp +@@ -0,0 +1,31 @@ ++# For DTS testing, generate a number expressing the ++# system version of libstdc++.so ++# ++# Generate a version number equivalent to ++# #define GCC_VERSION (__GNUC__ * 10000 \ ++# + __GNUC_MINOR__ * 100 \ ++# + __GNUC_PATCHLEVEL__) ++# ++# For example, given an underlying version of gcc 4.8.5 ++# this function will return 408050. ++ ++proc get_dts_base_version { } { ++ ++ # Invoke gcc in the PATH to get at the underlying GCC version ++ # in dotted form (e.g. "4.8.5"). ++ set dotted_version [exec gcc -dumpversion] ++ verbose "dotted_version: '$dotted_version'" 2 ++ ++ # Extract major, minor, patchlevel ++ regexp {([0-9]+)\.([0-9]+)\.([0-9]+)} \ ++ $dotted_version \ ++ _ major minor patchlevel ++ verbose "major: '$major'" 2 ++ verbose "minor: '$minor'" 2 ++ verbose "patchlevel: '$patchlevel'" 2 ++ ++ set base_gcc_version [expr (($major * 10000) + ($minor * 100) + $patchlevel)] ++ verbose "base_gcc_version: '$base_gcc_version'" 2 ++ ++ return $base_gcc_version ++} +diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp +index 7f9580db8..5e4b32f76 100644 +--- a/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -58,6 +58,7 @@ load_gcc_lib timeout.exp + load_gcc_lib timeout-dg.exp + load_gcc_lib wrapper.exp + load_gcc_lib target-utils.exp ++load_lib dts.exp + + # Useful for debugging. Pass the name of a variable and the verbosity + # threshold (number of -v's on the command line). +@@ -323,6 +324,11 @@ proc libstdc++_init { testfile } { + set ccflags "$cxxflags -DLOCALEDIR=\".\"" + set cxxflags "$cxxflags -DLOCALEDIR=\".\"" + ++ # For DTS testing, expose the system version of libstdc++.so as ++ # a preprocessor define. ++ set base_gcc_version [get_dts_base_version] ++ set cxxflags "$cxxflags -D__CXXSTDLIB_SO_VERSION__=$base_gcc_version" ++ + # If a PCH file is available, use it. We must delay performing + # this check until $cxx and such have been initialized because we + # perform a test compilation. (Ideally, gcc --print-file-name would +-- +2.31.1 + diff --git a/SOURCES/0012-dts.exp-use-usr-bin-gcc.patch b/SOURCES/0012-dts.exp-use-usr-bin-gcc.patch new file mode 100644 index 0000000..129ef2d --- /dev/null +++ b/SOURCES/0012-dts.exp-use-usr-bin-gcc.patch @@ -0,0 +1,28 @@ +From c3910bb945aba02e0c06dec041da9f1f148b0df1 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 11:40:42 -0400 +Subject: [PATCH 12/17] dts.exp: use /usr/bin/gcc + +--- + libstdc++-v3/testsuite/lib/dts.exp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp +index 76ece66d3..dc5cf3e95 100644 +--- a/libstdc++-v3/testsuite/lib/dts.exp ++++ b/libstdc++-v3/testsuite/lib/dts.exp +@@ -11,9 +11,9 @@ + + proc get_dts_base_version { } { + +- # Invoke gcc in the PATH to get at the underlying GCC version ++ # Invoke /usr/bin/gcc to get at the underlying GCC version + # in dotted form (e.g. "4.8.5"). +- set dotted_version [exec gcc -dumpversion] ++ set dotted_version [exec /usr/bin/gcc -dumpversion] + verbose "dotted_version: '$dotted_version'" 2 + + # Extract major, minor, patchlevel +-- +2.31.1 + diff --git a/SOURCES/0013-Rename-__CXXSTDLIB_SO_VERSION__-to-__LIBSTDCXX_SO_VE.patch b/SOURCES/0013-Rename-__CXXSTDLIB_SO_VERSION__-to-__LIBSTDCXX_SO_VE.patch new file mode 100644 index 0000000..52f160d --- /dev/null +++ b/SOURCES/0013-Rename-__CXXSTDLIB_SO_VERSION__-to-__LIBSTDCXX_SO_VE.patch @@ -0,0 +1,86 @@ +From c922a56d4461c9e4ca2af07ecccb3626b99a35ae Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 11:44:37 -0400 +Subject: [PATCH 13/17] Rename __CXXSTDLIB_SO_VERSION__ to + __LIBSTDCXX_SO_VERSION and only use major version + +--- + .../testsuite/22_locale/messages/13631.cc | 4 ++-- + libstdc++-v3/testsuite/lib/dts.exp | 18 +++++------------- + libstdc++-v3/testsuite/lib/libstdc++.exp | 4 ++-- + 3 files changed, 9 insertions(+), 17 deletions(-) + +diff --git a/libstdc++-v3/testsuite/22_locale/messages/13631.cc b/libstdc++-v3/testsuite/22_locale/messages/13631.cc +index 5b20df382..f4c5eb7a2 100644 +--- a/libstdc++-v3/testsuite/22_locale/messages/13631.cc ++++ b/libstdc++-v3/testsuite/22_locale/messages/13631.cc +@@ -51,7 +51,7 @@ void test01() + msgs_facet.close(msgs); + + // Fixed upstream in GCC 5 +-#if __CXXSTDLIB_SO_VERSION__ >= 501000 ++#if __LIBSTDCXX_SO_VERSION >= 5 + VERIFY( translation1 == translation2 ); + #endif + } +@@ -77,7 +77,7 @@ void test02() + // Without a real translation this test doesn't mean anything: + + // Fixed upstream in GCC 5 +-#if __CXXSTDLIB_SO_VERSION__ >= 501000 ++#if __LIBSTDCXX_SO_VERSION >= 5 + VERIFY( !translation1.empty() ); + VERIFY( translation1 != msgid ); + #endif +diff --git a/libstdc++-v3/testsuite/lib/dts.exp b/libstdc++-v3/testsuite/lib/dts.exp +index dc5cf3e95..60f94bd6d 100644 +--- a/libstdc++-v3/testsuite/lib/dts.exp ++++ b/libstdc++-v3/testsuite/lib/dts.exp +@@ -1,15 +1,10 @@ +-# For DTS testing, generate a number expressing the +-# system version of libstdc++.so +-# +-# Generate a version number equivalent to +-# #define GCC_VERSION (__GNUC__ * 10000 \ +-# + __GNUC_MINOR__ * 100 \ +-# + __GNUC_PATCHLEVEL__) ++# For DTS testing, get the major version of the ++# system libstdc++.so + # + # For example, given an underlying version of gcc 4.8.5 +-# this function will return 408050. ++# this function will return 4 + +-proc get_dts_base_version { } { ++proc get_dts_base_major_version { } { + + # Invoke /usr/bin/gcc to get at the underlying GCC version + # in dotted form (e.g. "4.8.5"). +@@ -24,8 +19,5 @@ proc get_dts_base_version { } { + verbose "minor: '$minor'" 2 + verbose "patchlevel: '$patchlevel'" 2 + +- set base_gcc_version [expr (($major * 10000) + ($minor * 100) + $patchlevel)] +- verbose "base_gcc_version: '$base_gcc_version'" 2 +- +- return $base_gcc_version ++ return $major + } +diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp +index 5e4b32f76..297485b19 100644 +--- a/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -326,8 +326,8 @@ proc libstdc++_init { testfile } { + + # For DTS testing, expose the system version of libstdc++.so as + # a preprocessor define. +- set base_gcc_version [get_dts_base_version] +- set cxxflags "$cxxflags -D__CXXSTDLIB_SO_VERSION__=$base_gcc_version" ++ set base_gcc_version [get_dts_base_major_version] ++ set cxxflags "$cxxflags -D__LIBSTDCXX_SO_VERSION=$base_gcc_version" + + # If a PCH file is available, use it. We must delay performing + # this check until $cxx and such have been initialized because we +-- +2.31.1 + diff --git a/SOURCES/0014-Conditionalize-tests-for-PR-libstdc-98466-on-__LIBST.patch b/SOURCES/0014-Conditionalize-tests-for-PR-libstdc-98466-on-__LIBST.patch new file mode 100644 index 0000000..0da5b14 --- /dev/null +++ b/SOURCES/0014-Conditionalize-tests-for-PR-libstdc-98466-on-__LIBST.patch @@ -0,0 +1,84 @@ +From fa770c25013df537c41d0929c4202b0a774a6a75 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 15:27:59 -0400 +Subject: [PATCH 14/17] Conditionalize tests for PR libstdc++/98466 on + __LIBSTDCXX_SO_VERSION >= 11 + +The tests: + 23_containers/deque/debug/98466.cc + 23_containers/unordered_map/debug/98466.cc +were added upstream 2021-01-01 as part of: + libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=05a30af3f237984b4dcf1dbbc17fdac583c46506 +but fail when run in DTS against a system libstdc++.so +from an older GCC. + +In particular, they use the older implementation of _M_can_compare from +the dynamic library: + +$ eu-readelf -s 98466.exe | grep can_compare | c++filt + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __gnu_debug::_Safe_iterator_base::_M_can_compare(__gnu_debug::_Safe_iterator_base const&) const@GLIBCXX_3.4 (4) + 157: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF __gnu_debug::_Safe_iterator_base::_M_can_compare(__gnu_debug::_Safe_iterator_base const&) const@@GLIBCXX_3.4 +--- + .../testsuite/23_containers/deque/debug/98466.cc | 6 ++++++ + .../23_containers/unordered_map/debug/98466.cc | 12 ++++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc b/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc +index c2d793374..e92d719bf 100644 +--- a/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc ++++ b/libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc +@@ -26,11 +26,17 @@ void test01() + { + typedef typename __gnu_debug::deque::iterator It; + It it = It(); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( it == it ); ++#endif + + typedef typename __gnu_debug::deque::const_iterator Cit; + Cit cit = Cit(); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( cit == cit ); ++#endif + } + + int main() +diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc +index cc22b9ff8..3a1b6cd32 100644 +--- a/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc ++++ b/libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc +@@ -25,16 +25,28 @@ + void test01() + { + __gnu_debug::unordered_map::iterator it{}; ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( it == it ); ++#endif + + __gnu_debug::unordered_map::const_iterator cit{}; ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( cit == cit ); ++#endif + + __gnu_debug::unordered_map::local_iterator lit{}; ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( lit == lit ); ++#endif + + __gnu_debug::unordered_map::const_local_iterator clit{}; ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( clit == clit ); ++#endif + } + + int main() +-- +2.31.1 + diff --git a/SOURCES/0015-Conditionalize-test-for-PR-libstdc-87135-on-__LIBSTD.patch b/SOURCES/0015-Conditionalize-test-for-PR-libstdc-87135-on-__LIBSTD.patch new file mode 100644 index 0000000..087b20e --- /dev/null +++ b/SOURCES/0015-Conditionalize-test-for-PR-libstdc-87135-on-__LIBSTD.patch @@ -0,0 +1,41 @@ +From 992665eab6c48d6a4819f42509346d24b277485d Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 16:17:29 -0400 +Subject: [PATCH 15/17] Conditionalize test for PR libstdc++/87135 on + __LIBSTDCXX_SO_VERSION >= 9 + +This VERIFY was added upstream 2018-09-18 as part of: + re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements) + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=a521e62615e439aea7502a52fd0f8a21eaa6304f + +but fails when run in DTS against a system libstdc++.so from an older GCC. + +In particular, rehash from the header is using + std::__detail::_Prime_rehash_policy::_M_next_bkt +from the system .so: + + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const@GLIBCXX_3.4.18 (5) + 225: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const@@GLIBCXX_3.4.18 +--- + .../23_containers/unordered_map/modifiers/reserve.cc | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc +index 58c8924b9..4c79ec2e6 100644 +--- a/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc ++++ b/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc +@@ -46,7 +46,11 @@ void test01() + + // As long as we insert less than the reserved number of elements we + // shouldn't experiment any rehash. ++ ++ // Fixed upstream in GCC 9 ++#if __LIBSTDCXX_SO_VERSION >= 9 + VERIFY( m.bucket_count() == bkts ); ++#endif + + VERIFY( m.load_factor() <= m.max_load_factor() ); + } +-- +2.31.1 + diff --git a/SOURCES/0016-Conditionalize-test-for-hashtable-bucket-sizes-on-__.patch b/SOURCES/0016-Conditionalize-test-for-hashtable-bucket-sizes-on-__.patch new file mode 100644 index 0000000..213a6f5 --- /dev/null +++ b/SOURCES/0016-Conditionalize-test-for-hashtable-bucket-sizes-on-__.patch @@ -0,0 +1,102 @@ +From db8f53df0be1daeda3159c1413549ff40696c710 Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 17:02:33 -0400 +Subject: [PATCH 16/17] Conditionalize test for hashtable bucket sizes on + __LIBSTDCXX_SO_VERSION >= 11 + +These tests were added upstream 2020-01-20 as part of: + libstdc++: Do not over-size hashtable buckets on range insertion + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=6dcf042368012e2d7ce1626ee5d378bf3ad0ccfc + +but fail when run in DTS against a system libstdc++.so from an older GCC. + +In particular, _M_insert_unique_node from the header is using the older +implementation of + std::__detail::_Prime_rehash_policy::_M_need_rehash +from the dynamic library. + + 23: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@GLIBCXX_3.4.18 (5) + 412: 0000000000000000 0 FUNC GLOBAL DEFAULT UNDEF std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const@@GLIBCXX_3.4.18 +--- + .../23_containers/unordered_set/cons/bucket_hint.cc | 10 ++++++++++ + .../23_containers/unordered_set/modifiers/insert.cc | 9 +++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc +index a3b014a3a..af231e54e 100644 +--- a/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc ++++ b/libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc +@@ -29,7 +29,11 @@ void test01() + a.reserve(2); + + std::unordered_set b({ 0, 1, 0, 1, 0, 1, 0, 1 }, a.bucket_count()); ++ ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( b.bucket_count() == a.bucket_count() ); ++#endif + } + + void test02() +@@ -40,7 +44,10 @@ void test02() + std::vector v { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 }; + + std::unordered_set b(v.begin(), v.end(), a.bucket_count()); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( b.bucket_count() == a.bucket_count() ); ++#endif + } + + void test03() +@@ -51,7 +58,10 @@ void test03() + std::forward_list fl { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 }; + + std::unordered_set b(fl.begin(), fl.end(), a.bucket_count()); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( b.bucket_count() == a.bucket_count() ); ++#endif + } + + int main() +diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc +index 015c2f872..aae8298ae 100644 +--- a/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc ++++ b/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc +@@ -30,7 +30,10 @@ void test01() + + auto bkt_count = a.bucket_count(); + a.insert({ 0, 1, 0, 1, 0, 1, 0, 1 }); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( a.bucket_count() == bkt_count ); ++#endif + } + + void test02() +@@ -42,7 +45,10 @@ void test02() + + auto bkt_count = a.bucket_count(); + a.insert(v.begin(), v.end()); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( a.bucket_count() == bkt_count ); ++#endif + } + + void test03() +@@ -54,7 +60,10 @@ void test03() + + auto bkt_count = a.bucket_count(); + a.insert(fl.begin(), fl.end()); ++ // Fixed upstream in GCC 11 ++#if __LIBSTDCXX_SO_VERSION >= 11 + VERIFY( a.bucket_count() == bkt_count ); ++#endif + } + + int main() +-- +2.31.1 + diff --git a/SOURCES/0017-Conditionalize-test-for-PR-libstdc-71181-on-__LIBSTD.patch b/SOURCES/0017-Conditionalize-test-for-PR-libstdc-71181-on-__LIBSTD.patch new file mode 100644 index 0000000..d18de1d --- /dev/null +++ b/SOURCES/0017-Conditionalize-test-for-PR-libstdc-71181-on-__LIBSTD.patch @@ -0,0 +1,33 @@ +From 102adc148612b50a4e3f12a88871ddc47bfb469e Mon Sep 17 00:00:00 2001 +From: David Malcolm +Date: Thu, 2 Sep 2021 17:17:50 -0400 +Subject: [PATCH 17/17] Conditionalize test for PR libstdc++/71181 on + __LIBSTDCXX_SO_VERSION >= 7 + +This test was added upstream 2016-06-20 as part of: + re PR libstdc++/71181 (Reserving in unordered_map doesn't reserve enough) + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=29dbb034cb3199167a9d0aaed040733c72326eed + +but fails when run in DTS against a system libstdc++.so from an older GCC. +--- + .../testsuite/23_containers/unordered_set/hash_policy/71181.cc | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc +index 324d735b8..b2dcd0137 100644 +--- a/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc ++++ b/libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc +@@ -39,7 +39,10 @@ template + + us.insert(nb_insert); + ++ // Fixed upstream in GCC 7 ++#if __LIBSTDCXX_SO_VERSION >= 7 + VERIFY( us.bucket_count() == bkts ); ++#endif + } + } + +-- +2.31.1 + diff --git a/SOURCES/doxygen-1.7.1-config.patch b/SOURCES/doxygen-1.7.1-config.patch new file mode 100644 index 0000000..f6be5b9 --- /dev/null +++ b/SOURCES/doxygen-1.7.1-config.patch @@ -0,0 +1,95 @@ +diff -up doxygen-1.7.1/addon/doxywizard/Makefile.in.config doxygen-1.7.1/addon/doxywizard/Makefile.in +--- doxygen-1.7.1/addon/doxywizard/Makefile.in.config 2010-05-23 16:51:31.000000000 +0200 ++++ doxygen-1.7.1/addon/doxywizard/Makefile.in 2010-07-19 13:38:33.000000000 +0200 +@@ -10,8 +10,6 @@ + # See the GNU General Public License for more details. + # + +-QMAKE=qmake $(MKSPECS) +- + all: Makefile.doxywizard + $(MAKE) -f Makefile.doxywizard + +@@ -29,11 +27,11 @@ distclean: Makefile.doxywizard + $(RM) Makefile.doxywizard + + install: +- $(INSTTOOL) -d $(INSTALL)/bin +- $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin +- $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR) ++ $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin ++ $(INSTTOOL) -m 755 ../../bin/doxywizard $(DESTDIR)$(INSTALL)/bin ++ $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR) + cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1 +- $(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1 ++ $(INSTTOOL) -m 644 doxywizard.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxywizard.1 + rm doxywizard.1 + + FORCE: +diff -up doxygen-1.7.1/configure.config doxygen-1.7.1/configure +--- doxygen-1.7.1/configure.config 2010-06-25 11:46:38.000000000 +0200 ++++ doxygen-1.7.1/configure 2010-07-19 12:03:53.000000000 +0200 +@@ -268,9 +268,10 @@ if test "$f_wizard" = YES; then + if test -z "$QTDIR"; then + echo " QTDIR environment variable not set!" + echo -n " Checking for Qt..." +- for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do ++ for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do + if test -x "$d/bin/qmake"; then + QTDIR=$d ++ QMAKE=$d/bin/qmake + fi + done + else +@@ -485,6 +486,8 @@ INSTTOOL = $f_insttool + DOXYDOCS = .. + DOCDIR = $f_docdir + QTDIR = $QTDIR ++QMAKE = $QMAKE ++MAN1DIR = share/man/man1 + EOF + + if test "$f_dot" != NO; then +diff -up doxygen-1.7.1/Makefile.in.config doxygen-1.7.1/Makefile.in +--- doxygen-1.7.1/Makefile.in.config 2009-08-20 21:41:13.000000000 +0200 ++++ doxygen-1.7.1/Makefile.in 2010-07-19 12:03:53.000000000 +0200 +@@ -44,8 +44,6 @@ distclean: clean + + DATE=$(shell date "+%B %Y") + +-MAN1DIR = man/man1 +- + install: doxywizard_install + $(INSTTOOL) -d $(DESTDIR)/$(INSTALL)/bin + $(INSTTOOL) -m 755 bin/doxygen $(DESTDIR)/$(INSTALL)/bin +diff -up doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf +--- doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config 2008-12-06 14:16:20.000000000 +0100 ++++ doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf 2010-07-19 12:03:53.000000000 +0200 +@@ -11,7 +11,7 @@ TMAKE_CC = gcc + TMAKE_CFLAGS = -pipe + TMAKE_CFLAGS_WARN_ON = -Wall -W -fno-exceptions + TMAKE_CFLAGS_WARN_OFF = +-TMAKE_CFLAGS_RELEASE = -O2 ++TMAKE_CFLAGS_RELEASE = $(RPM_OPT_FLAGS) + TMAKE_CFLAGS_DEBUG = -g + TMAKE_CFLAGS_SHLIB = -fPIC + TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses +@@ -27,12 +27,12 @@ TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YAC + + TMAKE_INCDIR = + TMAKE_LIBDIR = +-TMAKE_INCDIR_X11 = /usr/X11R6/include +-TMAKE_LIBDIR_X11 = /usr/X11R6/lib +-TMAKE_INCDIR_QT = $(QTDIR)/include +-TMAKE_LIBDIR_QT = $(QTDIR)/lib +-TMAKE_INCDIR_OPENGL = /usr/X11R6/include +-TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib ++TMAKE_INCDIR_X11 = ++TMAKE_LIBDIR_X11 = ++TMAKE_INCDIR_QT = ++TMAKE_LIBDIR_QT = ++TMAKE_INCDIR_OPENGL = ++TMAKE_LIBDIR_OPENGL = + + TMAKE_LINK = g++ + TMAKE_LINK_SHLIB = g++ diff --git a/SOURCES/doxygen-1.7.5-timestamp.patch b/SOURCES/doxygen-1.7.5-timestamp.patch new file mode 100644 index 0000000..efbd992 --- /dev/null +++ b/SOURCES/doxygen-1.7.5-timestamp.patch @@ -0,0 +1,63 @@ +diff -up doxygen-1.7.5/src/configoptions.cpp.timestamp doxygen-1.7.5/src/configoptions.cpp +--- doxygen-1.7.5/src/configoptions.cpp.timestamp 2011-08-03 15:54:50.000000000 +0200 ++++ doxygen-1.7.5/src/configoptions.cpp 2011-08-23 12:55:56.000000000 +0200 +@@ -1173,6 +1173,14 @@ void addConfigOptions(Config *cfg) + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + //---- ++ cb = cfg->addBool( ++ "HTML_TIMESTAMP", ++ "If the HTML_TIMESTAMP tag is set to YES then the generated HTML\n" ++ "documentation will contain the timesstamp.", ++ FALSE ++ ); ++ cb->addDependency("GENERATE_HTML"); ++ //---- + cs = cfg->addString( + "HTML_STYLESHEET", + "The HTML_STYLESHEET tag can be used to specify a user-defined cascading\n" +diff -up doxygen-1.7.5/src/config.xml.timestamp doxygen-1.7.5/src/config.xml +--- doxygen-1.7.5/src/config.xml.timestamp 2011-08-03 15:54:48.000000000 +0200 ++++ doxygen-1.7.5/src/config.xml 2011-08-23 12:55:56.000000000 +0200 +@@ -819,6 +819,11 @@ The HTML_FOOTER tag can be used to speci + each generated HTML page. If it is left blank doxygen will generate a + standard footer. + ' defval='' depends='GENERATE_HTML'/> ++