Revert "compat-sap-cplusplus-12 package is retired on branch c10s for CS-2551"

This reverts commit 076fad4ac0.
This commit is contained in:
dfan 2024-10-04 17:00:08 +01:00
parent 076fad4ac0
commit de6b15f424
22 changed files with 1601 additions and 4 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/gcc-12.1.1-20220507.tar.xz

View File

@ -0,0 +1,85 @@
From 8a7f364afd86a4c4c2c747ae9cb4216fe992acc8 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,46 @@
From d7fae9f17479c44dae68483d457fc3fbb58c4b83 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,53 @@
From 3ede89bd19328c26bcd881b873cf4a766ae0da3a Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<char>::sys_open(int, std::_Ios_Openmode)@@GLIBCXX_3.4
2895: 000000000007c730 95 FUNC GLOBAL DEFAULT 12 std::__basic_file<char>::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<char> 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<char> buf1(in1, std::ios::in, BUFSIZ);
int c = buf1.sgetc();
- VERIFY( c == std::char_traits<char>::eof() ); // PR libstdc++/81751
std::fflush(out);
FILE* in2 = std::fopen("81751.txt", "r");
--
2.31.1

View File

@ -0,0 +1,118 @@
From 59388ee3dac5c737086ed1f83f552a44481a2213 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
Date: Tue, 31 Aug 2021 16:08:57 -0400
Subject: [PATCH 06/17] Don't assume has_facet<codecvt_c16> 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<codecvt_c16> 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<char16_t, char8_t, mbstate_t> codecvt_c16;
locale loc_c = locale::classic();
- VERIFY(has_facet<codecvt_c16>(loc_c));
+ if (!has_facet<codecvt_c16>(loc_c))
+ return;
const codecvt_c16* const cvt = &use_facet<codecvt_c16>(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<char16_t, char, mbstate_t> codecvt_c16;
locale loc_c = locale::classic();
- VERIFY(has_facet<codecvt_c16>(loc_c));
+ if (!has_facet<codecvt_c16>(loc_c))
+ return;
const codecvt_c16* const cvt = &use_facet<codecvt_c16>(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<char32_t, char8_t, mbstate_t> codecvt_c32;
locale loc_c = locale::classic();
- VERIFY(has_facet<codecvt_c32>(loc_c));
+ if (!has_facet<codecvt_c32>(loc_c))
+ return;
const codecvt_c32* const cvt = &use_facet<codecvt_c32>(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<char32_t, char, mbstate_t> codecvt_c32;
locale loc_c = locale::classic();
- VERIFY(has_facet<codecvt_c32>(loc_c));
+ if (!has_facet<codecvt_c32>(loc_c))
+ return;
const codecvt_c32* const cvt = &use_facet<codecvt_c32>(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<C, char8_t, std::mbstate_t>;
+ if (!std::has_facet<test_type>(std::locale::classic()))
+ return;
const test_type& cvt = std::use_facet<test_type>(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<C, char, std::mbstate_t>;
+ if (!std::has_facet<test_type>(std::locale::classic()))
+ return;
const test_type& cvt = std::use_facet<test_type>(std::locale::classic());
auto from_end = from + len;
auto from_next = from;
--
2.31.1

View File

@ -0,0 +1,42 @@
From 16694079a3f415f5e5683b0afe6978810ac259b1 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,36 @@
From 87e2a4f28b444f376ebe15f38e2743eb952ff355 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<w_codecvt>(loc13) );
#endif
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
- VERIFY( has_facet<u16_codecvt>(loc13) );
- VERIFY( has_facet<u32_codecvt>(loc13) );
+ (void)( has_facet<u16_codecvt>(loc13) );
+ (void)( has_facet<u32_codecvt>(loc13) );
#ifdef _GLIBCXX_USE_CHAR8_T
VERIFY( has_facet<u16u8_codecvt>(loc13) );
VERIFY( has_facet<u32u8_codecvt>(loc13) );
--
2.31.1

View File

@ -0,0 +1,30 @@
From d1555ffdd9b4fa6f3ceaa166bbfee0b3b9973ecf Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<wchar_t, std::char_traits<wchar_t> >::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

View File

@ -0,0 +1,117 @@
From b6989e3a4acda2d75612f3f3847dbea4245ff536 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,28 @@
From c3910bb945aba02e0c06dec041da9f1f148b0df1 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,86 @@
From c922a56d4461c9e4ca2af07ecccb3626b99a35ae Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,84 @@
From fa770c25013df537c41d0929c4202b0a774a6a75 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<int>::iterator It;
It it = It();
+ // Fixed upstream in GCC 11
+#if __LIBSTDCXX_SO_VERSION >= 11
VERIFY( it == it );
+#endif
typedef typename __gnu_debug::deque<int>::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<int, int>::iterator it{};
+ // Fixed upstream in GCC 11
+#if __LIBSTDCXX_SO_VERSION >= 11
VERIFY( it == it );
+#endif
__gnu_debug::unordered_map<int, int>::const_iterator cit{};
+ // Fixed upstream in GCC 11
+#if __LIBSTDCXX_SO_VERSION >= 11
VERIFY( cit == cit );
+#endif
__gnu_debug::unordered_map<int, int>::local_iterator lit{};
+ // Fixed upstream in GCC 11
+#if __LIBSTDCXX_SO_VERSION >= 11
VERIFY( lit == lit );
+#endif
__gnu_debug::unordered_map<int, int>::const_local_iterator clit{};
+ // Fixed upstream in GCC 11
+#if __LIBSTDCXX_SO_VERSION >= 11
VERIFY( clit == clit );
+#endif
}
int main()
--
2.31.1

View File

@ -0,0 +1,41 @@
From 992665eab6c48d6a4819f42509346d24b277485d Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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

View File

@ -0,0 +1,102 @@
From db8f53df0be1daeda3159c1413549ff40696c710 Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<int> 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<int> v { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
std::unordered_set<int> 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<int> fl { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
std::unordered_set<int> 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

View File

@ -0,0 +1,33 @@
From 102adc148612b50a4e3f12a88871ddc47bfb469e Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
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<typename _USet>
us.insert(nb_insert);
+ // Fixed upstream in GCC 7
+#if __LIBSTDCXX_SO_VERSION >= 7
VERIFY( us.bucket_count() == bkts );
+#endif
}
}
--
2.31.1

View File

@ -1,3 +0,0 @@
# Package Not Available
This package is not available on CentOS Stream 10.
It may be available on another branch.

566
compat-sap-c++-12.spec Normal file
View File

@ -0,0 +1,566 @@
%global __python /usr/bin/python3
%global scl 1
%global scl_prefix compat-sap-
%global _root_prefix /opt/rh/SAP
%global _root_infodir %{_root_prefix}/%{_infodir}
%global _root_mandir %{_root_prefix}/%{_mandir}
%{?scl:%global __strip strip}
%{?scl:%global __objdump objdump}
%global DATE 20220507
%global gitrev fa107326a13af9a7d7aa0df28fe364db0f6fb171
%global gcc_version 12.1.1
%global gcc_major 12
# 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 1
%global _unpackaged_files_terminate_build 0
%undefine _annotated_build
%global multilib_64_archs sparc64 ppc64 x86_64
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%global attr_ifunc 1
%else
%global attr_ifunc 0
%endif
%ifarch x86_64
%global multilib_32_arch i686
%endif
%if 0%{?fedora} >= 36 || 0%{?rhel} >= 10
%global build_annobin_plugin 1
%else
%global build_annobin_plugin 0
%endif
Summary: C++ compatibility runtime library for SAP applications
Name: %{?scl_prefix}c++-12
ExclusiveArch: x86_64 ppc64le s390x
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
# The source for this package was pulled from upstream's vcs.
# %%{gitrev} is some commit from the
# https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch
# branch. Use the following commands to generate the tarball:
# 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 %%{gitrev}
# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz
# rm -rf gcc-dir.tmp
Source0: gcc-%{version}-%{DATE}.tar.xz
URL: http://gcc.gnu.org
# Need binutils with -pie support >= 2.14.90.0.4-4
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
# Need binutils which support .weakref >= 2.16.91.0.3-1
# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
# Need binutils which support --build-id >= 2.17.50.0.17-3
# Need binutils which support %%gnu_unique_object >= 2.19.51.0.14
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
# Need binutils which support -plugin
# Need binutils which support .loc view >= 2.30
# Need binutils which support --generate-missing-build-notes=yes >= 2.31
BuildRequires: binutils >= 2.19.51.0.14-33
# While gcc doesn't include statically linked binaries, during testing
# -static is used several times.
BuildRequires: glibc-static
BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
BuildRequires: gcc, gcc-c++, make
# For VTA guality testing
BuildRequires: gdb
# Make sure pthread.h doesn't contain __thread tokens
# Make sure glibc supports stack protector
# Make sure glibc supports DT_GNU_HASH
BuildRequires: glibc-devel >= 2.4.90-13
BuildRequires: elfutils-devel >= 0.147
BuildRequires: elfutils-libelf-devel >= 0.147
%if 0%{?rhel} >= 8
BuildRequires: libzstd-devel
%endif
%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
BuildRequires: glibc >= 2.3.90-35
%endif
%ifarch %{multilib_64_archs} sparcv9 ppc
# Ensure glibc{,-devel} is installed for both multilib arches
BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
%endif
%ifarch ia64
BuildRequires: libunwind >= 0.98
%endif
# Need .eh_frame ld optimizations
# Need proper visibility support
# Need -pie support
# Need --as-needed/--no-as-needed support
# On ppc64, need omit dot symbols support and --non-overlapping-opd
# Need binutils that owns /usr/bin/c++filt
# Need binutils that support .weakref
# Need binutils that supports --hash-style=gnu
# Need binutils that support mffgpr/mftgpr
# Need binutils that support --build-id
# Need binutils that support %%gnu_unique_object
# Need binutils that support .cfi_sections
# Need binutils that support --no-add-needed
# Need binutils that support -plugin
# Need binutils that support .loc view >= 2.30
# Need binutils which support --generate-missing-build-notes=yes >= 2.31
# Don't require this for compat-sap-c++ (#1491573).
#Requires: binutils >= 2.19.51.0.14-33
# Make sure gdb will understand DW_FORM_strp
Conflicts: gdb < 5.1-2
# Don't require this for compat-sap-c++ (#1491573).
#Requires: glibc-devel >= 2.2.90-12
%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
Requires: glibc >= 2.3.90-35
%endif
Requires: libgcc >= 4.1.2-43
# Keep this for now.
Requires: libgomp >= 4.4.4-13
BuildRequires: gmp-devel >= 4.1.2-8
BuildRequires: mpfr-devel >= 3.1.0
%if 0%{?rhel} >= 7
BuildRequires: libmpc-devel >= 0.8.1
%endif
%if 0%{?rhel} == 8
%ifarch ppc64le
BuildRequires: gcc-toolset-12-runtime gcc-toolset-12-binutils
BuildRequires: gcc-toolset-12-gcc gcc-toolset-12-gcc-c++
%endif
%endif
AutoReq: true
AutoProv: false
# Don't provide this for compat-sap-c++ (#1491573).
#%ifarch sparc64 ppc64 ppc64le s390x x86_64 ia64
#Provides: liblto_plugin.so.0()(64bit)
#%else
#Provides: liblto_plugin.so.0
#%endif
%global oformat %{nil}
%global oformat2 %{nil}
%ifarch %{ix86}
%global oformat OUTPUT_FORMAT(elf32-i386)
%endif
%ifarch x86_64
%global oformat OUTPUT_FORMAT(elf64-x86-64)
%global oformat2 OUTPUT_FORMAT(elf32-i386)
%endif
%ifarch ppc
%global oformat OUTPUT_FORMAT(elf32-powerpc)
%global oformat2 OUTPUT_FORMAT(elf64-powerpc)
%endif
%ifarch ppc64
%global oformat OUTPUT_FORMAT(elf64-powerpc)
%global oformat2 OUTPUT_FORMAT(elf32-powerpc)
%endif
%ifarch s390
%global oformat OUTPUT_FORMAT(elf32-s390)
%endif
%ifarch s390x
%global oformat OUTPUT_FORMAT(elf64-s390)
%global oformat2 OUTPUT_FORMAT(elf32-s390)
%endif
%ifarch ia64
%global oformat OUTPUT_FORMAT(elf64-ia64-little)
%endif
%ifarch ppc64le
%global oformat OUTPUT_FORMAT(elf64-powerpcle)
%endif
%ifarch aarch64
%global oformat OUTPUT_FORMAT(elf64-littleaarch64)
%endif
Patch0: gcc12-hack.patch
Patch2: gcc12-sparc-config-detection.patch
Patch3: gcc12-libgomp-omp_h-multilib.patch
Patch4: gcc12-libtool-no-rpath.patch
Patch5: gcc12-isl-dl.patch
Patch6: gcc12-isl-dl2.patch
Patch7: gcc12-libstdc++-docs.patch
Patch8: gcc12-no-add-needed.patch
Patch9: gcc12-Wno-format-security.patch
Patch10: gcc12-rh1574936.patch
Patch11: gcc12-d-shared-libphobos.patch
Patch3000: 0001-basic_string-reserve-n-semantics-are-not-available-i.patch
Patch3001: 0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch
Patch3002: 0005-Disable-tests-for-PR-libstdc-79820-and-PR-libstdc-81.patch
Patch3003: 0006-Don-t-assume-has_facet-codecvt_c16-when-run-against-.patch
Patch3004: 0008-testsuite-build-plugins-with-std-c-11.patch
Patch3005: 0009-Fix-22_locale-locale-cons-unicode.cc-when-run-under-.patch
Patch3006: 0010-Don-t-verify-exception-handling-in-basic_filebuf-clo.patch
Patch3007: 0011-Add-dts.exp-and-use-it-to-fix-22_locale-messages-136.patch
Patch3008: 0012-dts.exp-use-usr-bin-gcc.patch
Patch3009: 0013-Rename-__CXXSTDLIB_SO_VERSION__-to-__LIBSTDCXX_SO_VE.patch
Patch3010: 0014-Conditionalize-tests-for-PR-libstdc-98466-on-__LIBST.patch
Patch3011: 0015-Conditionalize-test-for-PR-libstdc-87135-on-__LIBSTD.patch
Patch3012: 0016-Conditionalize-test-for-hashtable-bucket-sizes-on-__.patch
Patch3013: 0017-Conditionalize-test-for-PR-libstdc-71181-on-__LIBSTD.patch
Patch3014: gcc12-dg-ice-fixes.patch
%if 0%{?rhel} == 9
%global nonsharedver 11
%endif
%if 0%{?rhel} == 8
%global nonsharedver 80
%endif
%if 0%{?rhel} == 7
%global nonsharedver 48
%endif
%if 0%{?rhel} == 6
%global nonsharedver 44
%endif
%if 0%{?scl:1}
%global _gnu %{nil}
%else
%global _gnu -gnueabi
%endif
%ifarch sparcv9
%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}
%endif
%ifarch ppc ppc64p7
%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}
%endif
%ifnarch sparcv9 ppc ppc64p7
%global gcc_target_platform %{_target_platform}
%endif
%description
This package provides runtime compatibility libraries for use by SAP
application binaries only.
%prep
%setup -q -n gcc-%{version}-%{DATE}
%patch0 -p0 -b .hack~
%patch2 -p0 -b .sparc-config-detection~
%patch3 -p0 -b .libgomp-omp_h-multilib~
%patch4 -p0 -b .libtool-no-rpath~
%patch8 -p0 -b .no-add-needed~
%patch9 -p0 -b .Wno-format-security~
%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
# Apply DTS-specific testsuite patches.
%patch3000 -p1 -b .dts-test-0~
%patch3001 -p1 -b .dts-test-1~
%patch3002 -p1 -b .dts-test-2~
%patch3003 -p1 -b .dts-test-3~
%patch3004 -p1 -b .dts-test-4~
%patch3005 -p1 -b .dts-test-5~
%patch3006 -p1 -b .dts-test-6~
%patch3007 -p1 -b .dts-test-7~
%patch3008 -p1 -b .dts-test-8~
%patch3009 -p1 -b .dts-test-9~
%patch3010 -p1 -b .dts-test-10~
%patch3011 -p1 -b .dts-test-11~
%patch3012 -p1 -b .dts-test-12~
%patch3013 -p1 -b .dts-test-13~
%patch3014 -p1 -b .dts-test-14~
find gcc/testsuite -name \*.pr96939~ | xargs rm -f
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
%if 0%{?rhel} == 6
# Default to -gdwarf-3 rather than -gdwarf-5
sed -i '/UInteger Var(dwarf_version)/s/Init(5)/Init(3)/' gcc/common.opt
sed -i 's/\(version for most targets is \)5 /\13 /' gcc/doc/invoke.texi
%endif
%if 0%{?rhel} <= 8
# Default to -gdwarf-4 rather than -gdwarf-5
sed -i '/UInteger Var(dwarf_version)/s/Init(5)/Init(4)/' gcc/common.opt
sed -i 's/\(version for most targets is \)5 /\14 /' gcc/doc/invoke.texi
%endif
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
cp -a libstdc++-v3/config/cpu/i{4,3}86/opt
echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >> gcc/config/rs6000/t-rs6000
./contrib/gcc_update --touch
LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc
%ifarch ppc
if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
fi
%endif
%ifarch sparc
if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
fi
%endif
# This test causes fork failures, because it spawns way too many threads
rm -f gcc/testsuite/go.test/test/chan/goroutines.go
# These tests get stuck and don't timeout.
%ifarch ppc ppc64 ppc64le
rm -f libgomp/testsuite/libgomp.c/target-*.c
rm -rf libgomp/testsuite/libgomp.oacc*
rm -rf libgomp/testsuite/libgomp.graphite*
%endif
# This test gets stuck.
%ifarch %{ix86} ppc64 s390x
rm -f libstdc++-v3/testsuite/30_threads/future/members/poll.cc
%endif
%build
# Undo the broken autoconf change in recent Fedora versions
export CONFIG_SITE=NONE
rm -rf obj-%{gcc_target_platform}
mkdir obj-%{gcc_target_platform}
cd obj-%{gcc_target_platform}
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
%if 0%{?rhel} == 8
%ifarch ppc64le
export PATH=/opt/rh/gcc-toolset-12/root/usr/bin:${PATH:+:${PATH}}
%endif
%endif
CC=gcc
CXX=g++
OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'`
%ifarch sparc
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
%endif
%ifarch %{ix86}
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'`
%endif
OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
# We're going to use the old long double format (double double) until RHEL10.
# Only -static-lib{stdc++,gfortran}/libgcc would work with IEEE double.
# Upstream also uses the old long double format, but Fedora uses the new
# format. To make things clearer, --with-long-double-format=ibm is used
# explicitly.
CONFIGURE_OPTS="\
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
--with-bugurl=http://bugzilla.redhat.com/bugzilla \
--enable-shared --enable-threads=posix --enable-checking=release \
%ifarch ppc64le
--enable-targets=powerpcle-linux \
%endif
%ifarch ppc64le %{mips} s390x
--disable-multilib \
%else
--enable-multilib \
%endif
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
--enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
--enable-libstdcxx-backtrace \
--with-linker-hash-style=gnu \
--enable-plugin --enable-initfini-array \
--disable-libquadmath \
--disable-libsanitizer \
--disable-libvtv \
--disable-libgomp \
--disable-libitm \
--disable-libssp \
--disable-libatomic \
--disable-libcilkrts \
--without-isl \
--disable-libmpx \
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
%if %{attr_ifunc}
--enable-gnu-indirect-function \
%endif
%endif
%ifarch ppc ppc64 ppc64le ppc64p7
--enable-secureplt \
%endif
%ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha
--with-long-double-128 \
%endif
%ifarch ppc64le
--with-long-double-format=ibm \
%endif
%ifarch ppc ppc64 ppc64p7
%if 0%{?rhel} >= 7
--with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
%endif
%if 0%{?rhel} == 6
--with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
%endif
%endif
%ifarch ppc64le
%if 0%{?rhel} == 9
--with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \
%else
--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
%endif
%endif
%ifarch ppc
--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
%endif
%ifarch %{ix86} x86_64
%if 0%{?rhel} >= 8
--enable-cet \
%endif
--with-tune=generic \
%endif
%if 0%{?rhel} >= 7
%ifarch %{ix86}
--with-arch=x86-64 \
%endif
%ifarch x86_64
%if 0%{?rhel} > 8
--with-arch_64=x86-64-v2 \
%endif
--with-arch_32=x86-64 \
%endif
%else
%ifarch %{ix86}
--with-arch=i686 \
%endif
%ifarch x86_64
--with-arch_32=i686 \
%endif
%endif
%ifarch s390 s390x
%if 0%{?rhel} >= 7
%if 0%{?rhel} > 7
%if 0%{?rhel} > 8
%if 0%{?rhel} == 9
--with-arch=z14 --with-tune=z15 \
%else
--with-arch=z13 --with-tune=arch13 \
%endif
%else
--with-arch=z13 --with-tune=z14 \
%endif
%else
--with-arch=z196 --with-tune=zEC12 \
%endif
%else
%if 0%{?fedora} >= 26
--with-arch=zEC12 --with-tune=z13 \
%else
--with-arch=z9-109 --with-tune=z10 \
%endif
%endif
--enable-decimal-float \
%endif
--build=%{gcc_target_platform} \
"
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
| sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
../configure --enable-bootstrap \
--enable-languages=c,c++,lto \
$CONFIGURE_OPTS
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS"
%install
rm -fr %{buildroot}
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}
cd obj-%{gcc_target_platform}
./gcc/xgcc -v 2> %{buildroot}%{_root_prefix}/%{_lib}/README%{gcc_major}
cp %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6.0.* %{buildroot}%{_root_prefix}/%{_lib}/compat-sap-c++-%{gcc_version}.so
cd %{buildroot}%{_root_prefix}/%{_lib}/
ln -sf compat-sap-c++-%{gcc_version}.so %{buildroot}%{_root_prefix}/%{_lib}/compat-sap-c++-%{gcc_major}.so
%check
cd obj-%{gcc_target_platform}
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
# run the tests.
LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \
%if 0%{?fedora} >= 20 || 0%{?rhel} > 7
RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector-strong}'" || :
%else
%ifnarch ppc ppc64 ppc64le s390x
RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
%else
|| :
%endif
%endif
( LC_ALL=C ../contrib/test_summary -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults
rm -rf gcc/testsuite.prev
mv gcc/testsuite{,.prev}
rm -f gcc/site.exp
LC_ALL=C make %{?_smp_mflags} -C gcc -k check-gcc check-g++ ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}' compat.exp struct-layout-1.exp" || :
mv gcc/testsuite/gcc/gcc.sum{,.sent}
mv gcc/testsuite/g++/g++.sum{,.sent}
( LC_ALL=C ../contrib/test_summary -o -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults2
rm -rf gcc/testsuite.compat
mv gcc/testsuite{,.compat}
mv gcc/testsuite{.prev,}
echo ====================TESTING=========================
cat testresults
echo ===`gcc --version | head -1` compatibility tests====
cat testresults2
echo ====================TESTING END=====================
mkdir testlogs-%{_target_platform}-%{version}-%{release}
for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats.*/tests/'`; do
ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
done
for i in `find gcc/testsuite.compat -name \*.log | grep -v 'config.log\|acats.*/tests/'`; do
ln $i testlogs-%{_target_platform}-%{version}-%{release}/`basename $i`.compat || :
done
tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
| uuencode testlogs-%{_target_platform}.tar.bz2 || :
rm -rf testlogs-%{_target_platform}-%{version}-%{release}
%files
%defattr(-,root,root,-)
%dir %{_root_prefix}
%dir %{_root_prefix}/%{_lib}
%{_root_prefix}/%{_lib}/compat-sap-c++-%{gcc_version}.so
%{_root_prefix}/%{_lib}/compat-sap-c++-%{gcc_major}.so
%{_root_prefix}/%{_lib}/README%{gcc_major}
%changelog
* Mon May 16 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1
- update to GCC 12 (#2070133)
* Wed Jul 14 2021 Marek Polacek <polacek@redhat.com> 11.1.1-6
- update to GCC 11 (#1957766)
* Wed May 19 2021 Marek Polacek <polacek@redhat.com> 10.2.1-11
- update from Fedora gcc 10.2.1-11 (#1933097)
- apply gcc10-SIZE_MAX.patch
* Wed Jul 29 2020 Marek Polacek <polacek@redhat.com> 10.2.1-1
- GCC 10.2 release
- disable -flto in %%{optflags}, lto bootstrap will be enabled the GCC way
later
- require MPFR Library version 3.1.0 (or later)
* Thu Jun 4 2020 Marek Polacek <polacek@redhat.com> 10.1.1-1
- new package

View File

@ -1 +0,0 @@
compat-sap-cplusplus-12 package is retired on branch c10s for CS-2551

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}

View File

@ -0,0 +1,58 @@
2022-01-07 Jakub Jelinek <jakub@redhat.com>
* Makefile.tpl (GOCFLAGS, GDCFLAGS): Filter out -Wformat-security.
* Makefile.in: Regenerated.
2017-02-25 Jakub Jelinek <jakub@redhat.com>
* configure.ac: When adding -Wno-format, also add -Wno-format-security.
* configure: Regenerated.
--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
@@ -570,7 +570,7 @@ AC_ARG_ENABLE(build-format-warnings,
AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]),
[],[enable_build_format_warnings=yes])
AS_IF([test $enable_build_format_warnings = no],
- [wf_opt=-Wno-format],[wf_opt=])
+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
ACX_PROG_CXX_WARNING_OPTS(
m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
[-Wcast-qual $wf_opt])),
--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
@@ -7077,7 +7077,7 @@ else
fi
if test $enable_build_format_warnings = no; then :
- wf_opt=-Wno-format
+ wf_opt="-Wno-format -Wno-format-security"
else
wf_opt=
fi
--- Makefile.tpl.jj 2021-12-30 15:12:42.188164847 +0100
+++ Makefile.tpl 2022-01-07 12:06:12.115550714 +0100
@@ -447,8 +447,8 @@ LDFLAGS = @LDFLAGS@
LIBCFLAGS = $(CFLAGS)
CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
-GOCFLAGS = $(CFLAGS)
-GDCFLAGS = $(CFLAGS)
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
# Pass additional PGO and LTO compiler options to the PGO build.
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
--- Makefile.in.jj 2021-12-30 15:12:42.188164847 +0100
+++ Makefile.in 2022-01-07 12:06:27.335334561 +0100
@@ -444,8 +444,8 @@ LDFLAGS = @LDFLAGS@
LIBCFLAGS = $(CFLAGS)
CXXFLAGS = @CXXFLAGS@
LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
-GOCFLAGS = $(CFLAGS)
-GDCFLAGS = $(CFLAGS)
+GOCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
+GDCFLAGS = $(filter-out -Wformat-security,$(CFLAGS))
# Pass additional PGO and LTO compiler options to the PGO build.
BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)

View File

@ -0,0 +1,49 @@
--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj 2011-01-03 06:50:42.000000000 -0500
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c 2011-02-18 06:28:53.858200077 -0500
@@ -1501,6 +1501,8 @@ generate_random_tests (enum FEATURE feat
int i, r;
if (len > 'z' - 'a' + 1)
abort ();
+ if (getenv ("ALT_CXX_UNDER_TEST") != NULL)
+ features &= ~FEATURE_VECTOR;
memset (e, 0, sizeof (e));
r = generate_random ();
if ((r & 7) == 0 && !cxx14_vs_cxx17)
--- gcc/testsuite/g++.dg/compat/compat.exp.jj 2011-01-03 06:50:42.000000000 -0500
+++ gcc/testsuite/g++.dg/compat/compat.exp 2011-02-18 06:30:54.248200398 -0500
@@ -116,7 +116,12 @@ if [info exists ALT_CXX_UNDER_TEST] then
}
# Main loop.
-foreach src [lsort [find $srcdir/$subdir *_main.C]] {
+set tests [lsort [find $srcdir/$subdir *_main.C]]
+if { $use_alt != 0 } then {
+ set tests [prune $tests $srcdir/$subdir/decimal/*]
+}
+
+foreach src $tests {
# If we're only testing specific files and this isn't one of them, skip it.
if ![runtest_file_p $runtests $src] then {
continue
--- gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c.jj 2011-01-03 06:49:58.000000000 -0500
+++ gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c 2011-02-18 06:27:54.922262671 -0500
@@ -1912,6 +1912,8 @@ generate_random_tests (enum FEATURE feat
int i, r;
if (len > 'z' - 'a' + 1)
abort ();
+ if (getenv ("ALT_CC_UNDER_TEST") != NULL)
+ features &= ~FEATURE_VECTOR;
memset (e, 0, sizeof (e));
r = generate_random ();
if ((r & 7) == 0)
--- gcc/testsuite/lib/c-compat.exp.jj 2011-01-03 06:48:38.000000000 -0500
+++ gcc/testsuite/lib/c-compat.exp 2011-02-18 06:38:19.124265008 -0500
@@ -75,7 +75,7 @@ proc compat_setup_dfp { } {
# If there is an alternate compiler, does it support decimal float types?
if { $compat_have_dfp == 1 && $compat_use_alt == 1 && $compat_same_alt == 0 } {
compat-use-alt-compiler
- set compat_have_dfp [check_effective_target_dfprt_nocache]
+ set compat_have_dfp 0
compat-use-tst-compiler
verbose "compat_have_dfp for alt compiler: $compat_have_dfp" 2
}

View File

@ -0,0 +1,20 @@
2019-01-17 Jakub Jelinek <jakub@redhat.com>
* d-spec.cc (lang_specific_driver): Make -shared-libphobos
the default rather than -static-libphobos.
--- gcc/d/d-spec.cc.jj 2019-01-01 12:37:49.502444257 +0100
+++ gcc/d/d-spec.cc 2019-01-17 17:09:45.364949246 +0100
@@ -408,9 +408,9 @@ lang_specific_driver (cl_decoded_option
/* Add `-lgphobos' if we haven't already done so. */
if (phobos_library != PHOBOS_NOLINK)
{
- /* Default to static linking. */
- if (phobos_library != PHOBOS_DYNAMIC)
- phobos_library = PHOBOS_STATIC;
+ /* Default to shared linking. */
+ if (phobos_library != PHOBOS_STATIC)
+ phobos_library = PHOBOS_DYNAMIC;
#ifdef HAVE_LD_STATIC_DYNAMIC
if (phobos_library == PHOBOS_STATIC && !static_link)