import gcc-11.3.1-4.3.el9
This commit is contained in:
parent
99fe5b5ced
commit
7590388b4e
@ -1,4 +1,4 @@
|
||||
7aa1aed2d17e955c7af83575c01a2decee22d46f SOURCES/gcc-11.3.1-20220421.tar.xz
|
||||
d190549fcae9ea175ede566a512187c8ff36671b SOURCES/gcc-11.3.1-20221121.tar.xz
|
||||
bbffc5a2b05e4f0c97e882f96c448504491dc4ed SOURCES/isl-0.18.tar.bz2
|
||||
6ec33952e824e837fef0e829c93d39d6a507082f SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
|
||||
0e0c6f8d68ab0878f02287ac082c1077c831cd81 SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
SOURCES/gcc-11.3.1-20220421.tar.xz
|
||||
SOURCES/gcc-11.3.1-20221121.tar.xz
|
||||
SOURCES/isl-0.18.tar.bz2
|
||||
SOURCES/newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz
|
||||
SOURCES/nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz
|
||||
|
79
SOURCES/gcc11-Wmismatched-dealloc-doc.patch
Normal file
79
SOURCES/gcc11-Wmismatched-dealloc-doc.patch
Normal file
@ -0,0 +1,79 @@
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 3419483c532..a2a6b1c98be 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -255,7 +255,7 @@ in the following sections.
|
||||
-Wno-inherited-variadic-ctor -Wno-init-list-lifetime @gol
|
||||
-Winvalid-imported-macros @gol
|
||||
-Wno-invalid-offsetof -Wno-literal-suffix @gol
|
||||
--Wno-mismatched-new-delete -Wmismatched-tags @gol
|
||||
+-Wmismatched-new-delete -Wmismatched-tags @gol
|
||||
-Wmultiple-inheritance -Wnamespaces -Wnarrowing @gol
|
||||
-Wnoexcept -Wnoexcept-type -Wnon-virtual-dtor @gol
|
||||
-Wpessimizing-move -Wno-placement-new -Wplacement-new=@var{n} @gol
|
||||
@@ -3966,7 +3966,7 @@ The warning is inactive inside a system header file, such as the STL, so
|
||||
one can still use the STL. One may also instantiate or specialize
|
||||
templates.
|
||||
|
||||
-@item -Wno-mismatched-new-delete @r{(C++ and Objective-C++ only)}
|
||||
+@item -Wmismatched-new-delete @r{(C++ and Objective-C++ only)}
|
||||
@opindex Wmismatched-new-delete
|
||||
@opindex Wno-mismatched-new-delete
|
||||
Warn for mismatches between calls to @code{operator new} or @code{operator
|
||||
@@ -3998,7 +3998,7 @@ The related option @option{-Wmismatched-dealloc} diagnoses mismatches
|
||||
involving allocation and deallocation functions other than @code{operator
|
||||
new} and @code{operator delete}.
|
||||
|
||||
-@option{-Wmismatched-new-delete} is enabled by default.
|
||||
+@option{-Wmismatched-new-delete} is included in @option{-Wall}.
|
||||
|
||||
@item -Wmismatched-tags @r{(C++ and Objective-C++ only)}
|
||||
@opindex Wmismatched-tags
|
||||
@@ -5543,6 +5543,8 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
|
||||
-Wmemset-elt-size @gol
|
||||
-Wmemset-transposed-args @gol
|
||||
-Wmisleading-indentation @r{(only for C/C++)} @gol
|
||||
+-Wmismatched-dealloc @gol
|
||||
+-Wmismatched-new-delete @r{(only for C/C++)} @gol
|
||||
-Wmissing-attributes @gol
|
||||
-Wmissing-braces @r{(only for C/ObjC)} @gol
|
||||
-Wmultistatement-macros @gol
|
||||
@@ -6428,7 +6430,7 @@ Ignoring the warning can result in poorly optimized code.
|
||||
disable the warning, but this is not recommended and should be done only
|
||||
when non-existent profile data is justified.
|
||||
|
||||
-@item -Wno-mismatched-dealloc
|
||||
+@item -Wmismatched-dealloc
|
||||
@opindex Wmismatched-dealloc
|
||||
@opindex Wno-mismatched-dealloc
|
||||
|
||||
@@ -6461,7 +6463,7 @@ void f (void)
|
||||
In C++, the related option @option{-Wmismatched-new-delete} diagnoses
|
||||
mismatches involving either @code{operator new} or @code{operator delete}.
|
||||
|
||||
-Option @option{-Wmismatched-dealloc} is enabled by default.
|
||||
+Option @option{-Wmismatched-dealloc} is included in @option{-Wall}.
|
||||
|
||||
@item -Wmultistatement-macros
|
||||
@opindex Wmultistatement-macros
|
||||
@@ -7951,9 +7953,9 @@ Warnings controlled by the option can be disabled either by specifying
|
||||
Disable @option{-Wframe-larger-than=} warnings. The option is equivalent
|
||||
to @option{-Wframe-larger-than=}@samp{SIZE_MAX} or larger.
|
||||
|
||||
-@item -Wno-free-nonheap-object
|
||||
-@opindex Wno-free-nonheap-object
|
||||
+@item -Wfree-nonheap-object
|
||||
@opindex Wfree-nonheap-object
|
||||
+@opindex Wno-free-nonheap-object
|
||||
Warn when attempting to deallocate an object that was either not allocated
|
||||
on the heap, or by using a pointer that was not returned from a prior call
|
||||
to the corresponding allocation function. For example, because the call
|
||||
@@ -7970,7 +7972,7 @@ void f (char *p)
|
||||
@}
|
||||
@end smallexample
|
||||
|
||||
-@option{-Wfree-nonheap-object} is enabled by default.
|
||||
+@option{-Wfree-nonheap-object} is included in @option{-Wall}.
|
||||
|
||||
@item -Wstack-usage=@var{byte-size}
|
||||
@opindex Wstack-usage
|
69
SOURCES/gcc11-detect-sapphirerapids.patch
Normal file
69
SOURCES/gcc11-detect-sapphirerapids.patch
Normal file
@ -0,0 +1,69 @@
|
||||
commit 63dd214dce603f4f99e2cb272255b6c2b4308c3d
|
||||
Author: Cui,Lili <lili.cui@intel.com>
|
||||
Date: Mon Nov 7 11:25:41 2022 +0800
|
||||
|
||||
Remove AVX512_VP2INTERSECT from PTA_SAPPHIRERAPIDS
|
||||
|
||||
gcc/ChangeLog:
|
||||
|
||||
* config/i386/driver-i386.cc (host_detect_local_cpu):
|
||||
Move sapphirerapids out of AVX512_VP2INTERSECT.
|
||||
* config/i386/i386.h: Remove AVX512_VP2INTERSECT from PTA_SAPPHIRERAPIDS
|
||||
* doc/invoke.texi: Remove AVX512_VP2INTERSECT from SAPPHIRERAPIDS
|
||||
|
||||
(cherry picked from commit d644dfe36d9733c767af62d37250253ced6efd8c)
|
||||
|
||||
diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c
|
||||
index f844a168ddb..90f84aba4ee 100644
|
||||
--- a/gcc/config/i386/driver-i386.c
|
||||
+++ b/gcc/config/i386/driver-i386.c
|
||||
@@ -574,15 +574,12 @@ const char *host_detect_local_cpu (int argc, const char **argv)
|
||||
/* This is unknown family 0x6 CPU. */
|
||||
if (has_feature (FEATURE_AVX))
|
||||
{
|
||||
+ /* Assume Tiger Lake */
|
||||
if (has_feature (FEATURE_AVX512VP2INTERSECT))
|
||||
- {
|
||||
- if (has_feature (FEATURE_TSXLDTRK))
|
||||
- /* Assume Sapphire Rapids. */
|
||||
- cpu = "sapphirerapids";
|
||||
- else
|
||||
- /* Assume Tiger Lake */
|
||||
- cpu = "tigerlake";
|
||||
- }
|
||||
+ cpu = "tigerlake";
|
||||
+ /* Assume Sapphire Rapids. */
|
||||
+ else if (has_feature (FEATURE_TSXLDTRK))
|
||||
+ cpu = "sapphirerapids";
|
||||
/* Assume Cooper Lake */
|
||||
else if (has_feature (FEATURE_AVX512BF16))
|
||||
cpu = "cooperlake";
|
||||
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
|
||||
index ac0e5da623c..e03279bcf39 100644
|
||||
--- a/gcc/config/i386/i386.h
|
||||
+++ b/gcc/config/i386/i386.h
|
||||
@@ -2562,7 +2562,7 @@ constexpr wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT
|
||||
constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI
|
||||
| PTA_MOVDIR64B | PTA_CLWB | PTA_AVX512VP2INTERSECT | PTA_KL | PTA_WIDEKL;
|
||||
constexpr wide_int_bitmask PTA_SAPPHIRERAPIDS = PTA_ICELAKE_SERVER | PTA_MOVDIRI
|
||||
- | PTA_MOVDIR64B | PTA_AVX512VP2INTERSECT | PTA_ENQCMD | PTA_CLDEMOTE
|
||||
+ | PTA_MOVDIR64B | PTA_ENQCMD | PTA_CLDEMOTE
|
||||
| PTA_PTWRITE | PTA_WAITPKG | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE
|
||||
| PTA_AMX_INT8 | PTA_AMX_BF16 | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512BF16;
|
||||
constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index 3419483c532..6b3afb827a5 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -30236,9 +30236,9 @@ Intel sapphirerapids CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
|
||||
SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE,
|
||||
RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW,
|
||||
AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
|
||||
-AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2
|
||||
+AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2,
|
||||
VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB,
|
||||
-MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
|
||||
+MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG,
|
||||
SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI and
|
||||
AVX512BF16 instruction set support.
|
||||
|
@ -1,33 +0,0 @@
|
||||
2022-04-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/105331
|
||||
* config/i386/i386.c (ix86_gimplify_va_arg): Mark va_arg_tmp
|
||||
temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR
|
||||
of it.
|
||||
|
||||
* gcc.dg/pr105331.c: New test.
|
||||
|
||||
--- gcc/config/i386/i386.c.jj 2022-04-12 09:20:07.566662842 +0200
|
||||
+++ gcc/config/i386/i386.c 2022-04-21 12:03:32.201951522 +0200
|
||||
@@ -4891,6 +4891,7 @@ ix86_gimplify_va_arg (tree valist, tree
|
||||
{
|
||||
int i, prev_size = 0;
|
||||
tree temp = create_tmp_var (type, "va_arg_tmp");
|
||||
+ TREE_ADDRESSABLE (temp) = 1;
|
||||
|
||||
/* addr = &temp; */
|
||||
t = build1 (ADDR_EXPR, build_pointer_type (type), temp);
|
||||
--- gcc/testsuite/gcc.dg/pr105331.c.jj 2022-04-21 12:09:34.398906718 +0200
|
||||
+++ gcc/testsuite/gcc.dg/pr105331.c 2022-04-21 12:09:07.304283903 +0200
|
||||
@@ -0,0 +1,11 @@
|
||||
+/* PR target/105331 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-O -Wuninitialized" } */
|
||||
+
|
||||
+#include <stdarg.h>
|
||||
+
|
||||
+int
|
||||
+foo (va_list *va)
|
||||
+{
|
||||
+ return va_arg (*va, double _Complex); /* { dg-bogus "may be used uninitialized" } */
|
||||
+}
|
@ -1,388 +0,0 @@
|
||||
commit c725028a8bb9478ec84332641147ad12b9236922
|
||||
Author: Jonathan Wakely <jwakely@redhat.com>
|
||||
Date: Tue Dec 14 14:32:35 2021 +0000
|
||||
|
||||
libstdc++: Fix handling of invalid ranges in std::regex [PR102447]
|
||||
|
||||
std::regex currently allows invalid bracket ranges such as [\w-a] which
|
||||
are only allowed by ECMAScript when in web browser compatibility mode.
|
||||
It should be an error, because the start of the range is a character
|
||||
class, not a single character. The current implementation of
|
||||
_Compiler::_M_expression_term does not provide a way to reject this,
|
||||
because we only remember a previous character, not whether we just
|
||||
processed a character class (or collating symbol etc.)
|
||||
|
||||
This patch replaces the pair<bool, CharT> used to emulate
|
||||
optional<CharT> with a custom class closer to pair<tribool,CharT>. That
|
||||
allows us to track three states, so that we can tell when we've just
|
||||
seen a character class.
|
||||
|
||||
With this additional state the code in _M_expression_term for processing
|
||||
the _S_token_bracket_dash can be improved to correctly reject the [\w-a]
|
||||
case, without regressing for valid cases such as [\w-] and [----].
|
||||
|
||||
libstdc++-v3/ChangeLog:
|
||||
|
||||
PR libstdc++/102447
|
||||
* include/bits/regex_compiler.h (_Compiler::_BracketState): New
|
||||
class.
|
||||
(_Compiler::_BrackeyMatcher): New alias template.
|
||||
(_Compiler::_M_expression_term): Change pair<bool, CharT>
|
||||
parameter to _BracketState. Process first character for
|
||||
ECMAScript syntax as well as POSIX.
|
||||
* include/bits/regex_compiler.tcc
|
||||
(_Compiler::_M_insert_bracket_matcher): Pass _BracketState.
|
||||
(_Compiler::_M_expression_term): Use _BracketState to store
|
||||
state between calls. Improve handling of dashes in ranges.
|
||||
* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
|
||||
Add more tests for ranges containing dashes. Check invalid
|
||||
ranges with character class at the beginning.
|
||||
|
||||
(cherry picked from commit 7ce3c230edf6e498e125c805a6dd313bf87dc439)
|
||||
|
||||
diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h
|
||||
index f224fcb06e0..aa19df2bf9a 100644
|
||||
--- a/libstdc++-v3/include/bits/regex_compiler.h
|
||||
+++ b/libstdc++-v3/include/bits/regex_compiler.h
|
||||
@@ -122,13 +122,45 @@ namespace __detail
|
||||
void
|
||||
_M_insert_bracket_matcher(bool __neg);
|
||||
|
||||
- // Returns true if successfully matched one term and should continue.
|
||||
+ // Cache of the last atom seen in a bracketed range expression.
|
||||
+ struct _BracketState
|
||||
+ {
|
||||
+ enum class _Type : char { _None, _Char, _Class } _M_type = _Type::_None;
|
||||
+ _CharT _M_char;
|
||||
+
|
||||
+ void
|
||||
+ set(_CharT __c) noexcept { _M_type = _Type::_Char; _M_char = __c; }
|
||||
+
|
||||
+ _GLIBCXX_NODISCARD _CharT
|
||||
+ get() const noexcept { return _M_char; }
|
||||
+
|
||||
+ void
|
||||
+ reset(_Type __t = _Type::_None) noexcept { _M_type = __t; }
|
||||
+
|
||||
+ explicit operator bool() const noexcept
|
||||
+ { return _M_type != _Type::_None; }
|
||||
+
|
||||
+ // Previous token was a single character.
|
||||
+ _GLIBCXX_NODISCARD bool
|
||||
+ _M_is_char() const noexcept { return _M_type == _Type::_Char; }
|
||||
+
|
||||
+ // Previous token was a character class, equivalent class,
|
||||
+ // collating symbol etc.
|
||||
+ _GLIBCXX_NODISCARD bool
|
||||
+ _M_is_class() const noexcept { return _M_type == _Type::_Class; }
|
||||
+ };
|
||||
+
|
||||
+ template<bool __icase, bool __collate>
|
||||
+ using _BracketMatcher
|
||||
+ = std::__detail::_BracketMatcher<_TraitsT, __icase, __collate>;
|
||||
+
|
||||
+ // Returns true if successfully parsed one term and should continue
|
||||
+ // compiling a bracket expression.
|
||||
// Returns false if the compiler should move on.
|
||||
template<bool __icase, bool __collate>
|
||||
bool
|
||||
- _M_expression_term(pair<bool, _CharT>& __last_char,
|
||||
- _BracketMatcher<_TraitsT, __icase, __collate>&
|
||||
- __matcher);
|
||||
+ _M_expression_term(_BracketState& __last_char,
|
||||
+ _BracketMatcher<__icase, __collate>& __matcher);
|
||||
|
||||
int
|
||||
_M_cur_int_value(int __radix);
|
||||
diff --git a/libstdc++-v3/include/bits/regex_compiler.tcc b/libstdc++-v3/include/bits/regex_compiler.tcc
|
||||
index ea07bc2428e..7769a9e63a3 100644
|
||||
--- a/libstdc++-v3/include/bits/regex_compiler.tcc
|
||||
+++ b/libstdc++-v3/include/bits/regex_compiler.tcc
|
||||
@@ -403,7 +403,7 @@ namespace __detail
|
||||
_M_insert_character_class_matcher()
|
||||
{
|
||||
__glibcxx_assert(_M_value.size() == 1);
|
||||
- _BracketMatcher<_TraitsT, __icase, __collate> __matcher
|
||||
+ _BracketMatcher<__icase, __collate> __matcher
|
||||
(_M_ctype.is(_CtypeT::upper, _M_value[0]), _M_traits);
|
||||
__matcher._M_add_character_class(_M_value, false);
|
||||
__matcher._M_ready();
|
||||
@@ -424,25 +424,17 @@ namespace __detail
|
||||
_Compiler<_TraitsT>::
|
||||
_M_insert_bracket_matcher(bool __neg)
|
||||
{
|
||||
- _BracketMatcher<_TraitsT, __icase, __collate> __matcher(__neg, _M_traits);
|
||||
- pair<bool, _CharT> __last_char; // Optional<_CharT>
|
||||
- __last_char.first = false;
|
||||
- if (!(_M_flags & regex_constants::ECMAScript))
|
||||
- {
|
||||
- if (_M_try_char())
|
||||
- {
|
||||
- __last_char.first = true;
|
||||
- __last_char.second = _M_value[0];
|
||||
- }
|
||||
- else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
|
||||
- {
|
||||
- __last_char.first = true;
|
||||
- __last_char.second = '-';
|
||||
- }
|
||||
- }
|
||||
- while (_M_expression_term(__last_char, __matcher));
|
||||
- if (__last_char.first)
|
||||
- __matcher._M_add_char(__last_char.second);
|
||||
+ _BracketMatcher<__icase, __collate> __matcher(__neg, _M_traits);
|
||||
+ _BracketState __last_char;
|
||||
+ if (_M_try_char())
|
||||
+ __last_char.set(_M_value[0]);
|
||||
+ else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
|
||||
+ // Dash as first character is a normal character.
|
||||
+ __last_char.set('-');
|
||||
+ while (_M_expression_term(__last_char, __matcher))
|
||||
+ ;
|
||||
+ if (__last_char._M_is_char())
|
||||
+ __matcher._M_add_char(__last_char.get());
|
||||
__matcher._M_ready();
|
||||
_M_stack.push(_StateSeqT(
|
||||
*_M_nfa,
|
||||
@@ -447,27 +438,27 @@ namespace __detail
|
||||
template<bool __icase, bool __collate>
|
||||
bool
|
||||
_Compiler<_TraitsT>::
|
||||
- _M_expression_term(pair<bool, _CharT>& __last_char,
|
||||
- _BracketMatcher<_TraitsT, __icase, __collate>& __matcher)
|
||||
+ _M_expression_term(_BracketState& __last_char,
|
||||
+ _BracketMatcher<__icase, __collate>& __matcher)
|
||||
{
|
||||
if (_M_match_token(_ScannerT::_S_token_bracket_end))
|
||||
return false;
|
||||
|
||||
+ // Add any previously cached char into the matcher and update cache.
|
||||
const auto __push_char = [&](_CharT __ch)
|
||||
{
|
||||
- if (__last_char.first)
|
||||
- __matcher._M_add_char(__last_char.second);
|
||||
- else
|
||||
- __last_char.first = true;
|
||||
- __last_char.second = __ch;
|
||||
+ if (__last_char._M_is_char())
|
||||
+ __matcher._M_add_char(__last_char.get());
|
||||
+ __last_char.set(__ch);
|
||||
};
|
||||
- const auto __flush = [&]
|
||||
+ // Add any previously cached char into the matcher and update cache.
|
||||
+ const auto __push_class = [&]
|
||||
{
|
||||
- if (__last_char.first)
|
||||
- {
|
||||
- __matcher._M_add_char(__last_char.second);
|
||||
- __last_char.first = false;
|
||||
- }
|
||||
+ if (__last_char._M_is_char())
|
||||
+ __matcher._M_add_char(__last_char.get());
|
||||
+ // We don't cache anything here, just record that the last thing
|
||||
+ // processed was a character class (or similar).
|
||||
+ __last_char.reset(_BracketState::_Type::_Class);
|
||||
};
|
||||
|
||||
if (_M_match_token(_ScannerT::_S_token_collsymbol))
|
||||
@@ -476,16 +467,16 @@ namespace __detail
|
||||
if (__symbol.size() == 1)
|
||||
__push_char(__symbol[0]);
|
||||
else
|
||||
- __flush();
|
||||
+ __push_class();
|
||||
}
|
||||
else if (_M_match_token(_ScannerT::_S_token_equiv_class_name))
|
||||
{
|
||||
- __flush();
|
||||
+ __push_class();
|
||||
__matcher._M_add_equivalence_class(_M_value);
|
||||
}
|
||||
else if (_M_match_token(_ScannerT::_S_token_char_class_name))
|
||||
{
|
||||
- __flush();
|
||||
+ __push_class();
|
||||
__matcher._M_add_character_class(_M_value, false);
|
||||
}
|
||||
else if (_M_try_char())
|
||||
@@ -502,49 +493,50 @@ namespace __detail
|
||||
// It turns out that no one reads BNFs ;)
|
||||
else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
|
||||
{
|
||||
- if (!__last_char.first)
|
||||
+ if (_M_match_token(_ScannerT::_S_token_bracket_end))
|
||||
{
|
||||
- if (!(_M_flags & regex_constants::ECMAScript))
|
||||
- {
|
||||
- if (_M_match_token(_ScannerT::_S_token_bracket_end))
|
||||
- {
|
||||
- __push_char('-');
|
||||
- return false;
|
||||
- }
|
||||
- __throw_regex_error(
|
||||
- regex_constants::error_range,
|
||||
- "Unexpected dash in bracket expression. For POSIX syntax, "
|
||||
- "a dash is not treated literally only when it is at "
|
||||
- "beginning or end.");
|
||||
- }
|
||||
+ // For "-]" the dash is a literal character.
|
||||
__push_char('-');
|
||||
+ return false;
|
||||
}
|
||||
- else
|
||||
+ else if (__last_char._M_is_class())
|
||||
+ {
|
||||
+ // "\\w-" is invalid, start of range must be a single char.
|
||||
+ __throw_regex_error(regex_constants::error_range,
|
||||
+ "Invalid start of range in bracket expression.");
|
||||
+ }
|
||||
+ else if (__last_char._M_is_char())
|
||||
{
|
||||
if (_M_try_char())
|
||||
{
|
||||
- __matcher._M_make_range(__last_char.second, _M_value[0]);
|
||||
- __last_char.first = false;
|
||||
+ // "x-y"
|
||||
+ __matcher._M_make_range(__last_char.get(), _M_value[0]);
|
||||
+ __last_char.reset();
|
||||
}
|
||||
else if (_M_match_token(_ScannerT::_S_token_bracket_dash))
|
||||
{
|
||||
- __matcher._M_make_range(__last_char.second, '-');
|
||||
- __last_char.first = false;
|
||||
+ // "x--"
|
||||
+ __matcher._M_make_range(__last_char.get(), '-');
|
||||
+ __last_char.reset();
|
||||
}
|
||||
else
|
||||
- {
|
||||
- if (_M_scanner._M_get_token()
|
||||
- != _ScannerT::_S_token_bracket_end)
|
||||
- __throw_regex_error(
|
||||
- regex_constants::error_range,
|
||||
- "Character is expected after a dash.");
|
||||
- __push_char('-');
|
||||
- }
|
||||
+ __throw_regex_error(regex_constants::error_range,
|
||||
+ "Invalid end of range in bracket expression.");
|
||||
}
|
||||
+ else if (_M_flags & regex_constants::ECMAScript)
|
||||
+ {
|
||||
+ // A dash that is not part of an existing range. Might be the
|
||||
+ // start of a new range, or might just be a literal '-' char.
|
||||
+ // Only ECMAScript allows that in the middle of a bracket expr.
|
||||
+ __push_char('-');
|
||||
+ }
|
||||
+ else
|
||||
+ __throw_regex_error(regex_constants::error_range,
|
||||
+ "Invalid dash in bracket expression.");
|
||||
}
|
||||
else if (_M_match_token(_ScannerT::_S_token_quoted_class))
|
||||
{
|
||||
- __flush();
|
||||
+ __push_class();
|
||||
__matcher._M_add_character_class(_M_value,
|
||||
_M_ctype.is(_CtypeT::upper,
|
||||
_M_value[0]));
|
||||
diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
|
||||
index 7df70604ea6..0d76e63da7b 100644
|
||||
--- a/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
|
||||
+++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
|
||||
@@ -69,6 +69,16 @@ test01()
|
||||
void
|
||||
test02()
|
||||
{
|
||||
+ VERIFY(regex_match("-", regex("[-]", regex_constants::ECMAScript)));
|
||||
+ VERIFY(regex_match("-", regex("[--]", regex_constants::ECMAScript)));
|
||||
+ VERIFY(regex_match("-", regex("[---]", regex_constants::ECMAScript)));
|
||||
+ VERIFY(regex_match("-", regex("[----]", regex_constants::ECMAScript)));
|
||||
+ VERIFY(regex_match("-", regex("[-----]", regex_constants::ECMAScript)));
|
||||
+
|
||||
+ VERIFY(regex_match("-", regex("[-]", regex_constants::extended)));
|
||||
+ VERIFY(regex_match("-", regex("[--]", regex_constants::extended)));
|
||||
+ VERIFY(regex_match("-", regex("[---]", regex_constants::extended)));
|
||||
+ VERIFY(regex_match("-", regex("[----]", regex_constants::extended)));
|
||||
try
|
||||
{
|
||||
std::regex re("[-----]", std::regex::extended);
|
||||
@@ -78,7 +88,6 @@ test02()
|
||||
{
|
||||
VERIFY(e.code() == std::regex_constants::error_range);
|
||||
}
|
||||
- std::regex re("[-----]", std::regex::ECMAScript);
|
||||
|
||||
VERIFY(!regex_match("b", regex("[-ac]", regex_constants::extended)));
|
||||
VERIFY(!regex_match("b", regex("[ac-]", regex_constants::extended)));
|
||||
@@ -93,7 +102,27 @@ test02()
|
||||
}
|
||||
catch (const std::regex_error& e)
|
||||
{
|
||||
+ VERIFY(e.code() == std::regex_constants::error_range);
|
||||
+ }
|
||||
+ try
|
||||
+ {
|
||||
+ regex("[@--]", regex_constants::extended);
|
||||
+ VERIFY(false);
|
||||
}
|
||||
+ catch (const std::regex_error& e)
|
||||
+ {
|
||||
+ VERIFY(e.code() == std::regex_constants::error_range);
|
||||
+ }
|
||||
+ try
|
||||
+ {
|
||||
+ regex("[--%]", regex_constants::extended);
|
||||
+ VERIFY(false);
|
||||
+ }
|
||||
+ catch (const std::regex_error& e)
|
||||
+ {
|
||||
+ VERIFY(e.code() == std::regex_constants::error_range);
|
||||
+ }
|
||||
+
|
||||
VERIFY(regex_match("].", regex("[][.hyphen.]-0]*", regex_constants::extended)));
|
||||
}
|
||||
|
||||
@@ -158,6 +187,36 @@ test06()
|
||||
VERIFY(regex_match("a-", debian_cron_namespace_ok));
|
||||
}
|
||||
|
||||
+// libstdc++/102447
|
||||
+void
|
||||
+test07()
|
||||
+{
|
||||
+ VERIFY(regex_match("-", std::regex("[\\w-]", std::regex::ECMAScript)));
|
||||
+ VERIFY(regex_match("a", std::regex("[\\w-]", std::regex::ECMAScript)));
|
||||
+ VERIFY(regex_match("-", std::regex("[a-]", std::regex::ECMAScript)));
|
||||
+ VERIFY(regex_match("a", std::regex("[a-]", std::regex::ECMAScript)));
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ std::regex re("[\\w-a]", std::regex::ECMAScript);
|
||||
+ VERIFY(false);
|
||||
+ }
|
||||
+ catch (const std::regex_error& e)
|
||||
+ {
|
||||
+ VERIFY(e.code() == std::regex_constants::error_range);
|
||||
+ }
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ std::regex re("[\\w--]", std::regex::ECMAScript);
|
||||
+ VERIFY(false);
|
||||
+ }
|
||||
+ catch (const std::regex_error& e)
|
||||
+ {
|
||||
+ VERIFY(e.code() == std::regex_constants::error_range);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
int
|
||||
main()
|
||||
{
|
||||
@@ -167,6 +226,7 @@ main()
|
||||
test04();
|
||||
test05();
|
||||
test06();
|
||||
+ test07();
|
||||
|
||||
return 0;
|
||||
}
|
404
SPECS/gcc.spec
404
SPECS/gcc.spec
@ -1,10 +1,10 @@
|
||||
%global DATE 20220421
|
||||
%global gitrev 1d3172725999deb0dca93ac70393ed9a0ad0da3f
|
||||
%global DATE 20221121
|
||||
%global gitrev 643e61c61b308f9c572da4ccd5f730fb
|
||||
%global gcc_version 11.3.1
|
||||
%global gcc_major 11
|
||||
# Note, gcc_release must be integer, if you want to add suffixes to
|
||||
# %%{release}, append them after %%{gcc_release} on Release: line.
|
||||
%global gcc_release 2
|
||||
%global gcc_release 4
|
||||
%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e
|
||||
%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
@ -42,7 +42,7 @@
|
||||
%else
|
||||
%global build_go 0
|
||||
%endif
|
||||
%ifarch %{ix86} x86_64 %{arm} %{mips} s390 s390x riscv64
|
||||
%ifarch %{ix86} x86_64 %{arm} aarch64 %{mips} s390 s390x riscv64
|
||||
%global build_d 1
|
||||
%else
|
||||
%global build_d 0
|
||||
@ -113,10 +113,22 @@
|
||||
%ifarch x86_64
|
||||
%global multilib_32_arch i686
|
||||
%endif
|
||||
%if 0%{?rhel} == 9
|
||||
%ifarch x86_64
|
||||
%global build_cross 1
|
||||
%else
|
||||
%global build_cross 0
|
||||
%endif
|
||||
%else
|
||||
%dnl rhel != 9
|
||||
%global build_cross 0
|
||||
%endif
|
||||
# TODO: Add ppc64le-redhat-linux s390x-redhat-linux later.
|
||||
%global cross_targets aarch64-redhat-linux
|
||||
Summary: Various compilers (C, C++, Objective-C, ...)
|
||||
Name: gcc
|
||||
Version: %{gcc_version}
|
||||
Release: %{gcc_release}.1%{?dist}
|
||||
Release: %{gcc_release}.3%{?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
|
||||
@ -273,9 +285,8 @@ Patch20: gcc11-relocatable-pch.patch
|
||||
Patch21: gcc11-dejagnu-multiline.patch
|
||||
Patch23: gcc11-pie.patch
|
||||
Patch24: gcc11-bind-now.patch
|
||||
Patch25: gcc11-pr105331.patch
|
||||
# This can go once we rebase from GCC 11.
|
||||
Patch26: gcc11-rh2106262.patch
|
||||
Patch25: gcc11-detect-sapphirerapids.patch
|
||||
Patch26: gcc11-Wmismatched-dealloc-doc.patch
|
||||
|
||||
Patch100: gcc11-fortran-fdec-duplicates.patch
|
||||
Patch101: gcc11-fortran-flogical-as-integer.patch
|
||||
@ -797,6 +808,45 @@ This package adds a version of the annobin plugin for gcc. This version
|
||||
of the plugin is explicitly built by the same version of gcc that is installed
|
||||
so that there cannot be any synchronization problems.
|
||||
|
||||
%package -n cross-gcc-aarch64
|
||||
Summary: Cross targeted AArch64 gcc for developer use. Not intended for production.
|
||||
Provides: cross-gcc-aarch64 = %{version}-%{release}
|
||||
%if %{build_cross}
|
||||
Requires: cross-binutils-aarch64 >= 2.35
|
||||
BuildRequires: sysroot-aarch64-el9-glibc >= 2.34
|
||||
BuildRequires: cross-binutils-aarch64 >= 2.35
|
||||
%endif
|
||||
# Don't provide e.g. liblto_plugin.so()(64bit).
|
||||
AutoReqProv: no
|
||||
|
||||
%description -n cross-gcc-aarch64
|
||||
This package contains a version of gcc that can compile code for AArch64
|
||||
(cross compiler). This cross compiler is intended for developers to use
|
||||
during application development. This cross compiler is not intended for
|
||||
production use, and output binary artifacts should not be used in
|
||||
production. Generated binary artifacts contain binary annotations that
|
||||
mark them as cross compiled.
|
||||
|
||||
%package -n cross-gcc-c++-aarch64
|
||||
Summary: Cross targeted AArch64 gcc-c++ for developer use. Not intended for production.
|
||||
Provides: cross-gcc-c++-aarch64 = %{version}-%{release}
|
||||
%if %{build_cross}
|
||||
Requires: cross-gcc-aarch64 = %{version}-%{release}
|
||||
BuildRequires: sysroot-aarch64-el9-glibc >= 2.34
|
||||
BuildRequires: cross-binutils-aarch64 >= 2.35
|
||||
%endif
|
||||
# ??? Otherwise this subpackage couldn't be installed, depends on libm.so
|
||||
# and libgcc_s.so
|
||||
AutoReqProv: no
|
||||
|
||||
%description -n cross-gcc-c++-aarch64
|
||||
This package contains a version of g++ that can compile code for AArch64
|
||||
(cross compiler). This cross compiler is intended for developers to use
|
||||
during application development. This cross compiler is not intended for
|
||||
production use, and output binary artifacts should not be used in
|
||||
production. Generated binary artifacts contain binary annotations that
|
||||
mark them as cross compiled.
|
||||
|
||||
%prep
|
||||
%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3
|
||||
%patch0 -p0 -b .hack~
|
||||
@ -827,8 +877,8 @@ so that there cannot be any synchronization problems.
|
||||
%patch21 -p1 -b .dejagnu-multiline~
|
||||
%patch23 -p1 -b .pie~
|
||||
%patch24 -p1 -b .now~
|
||||
%patch25 -p0 -b .pr105331~
|
||||
%patch26 -p1 -b .rh2106262~
|
||||
%patch25 -p1 -b .detect-spr~
|
||||
%patch26 -p1 -b .Wmismatched-dealloc-doc~
|
||||
|
||||
%if 0%{?rhel} >= 9
|
||||
%patch100 -p1 -b .fortran-fdec-duplicates~
|
||||
@ -847,7 +897,9 @@ so that there cannot be any synchronization problems.
|
||||
rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go
|
||||
%endif
|
||||
|
||||
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
|
||||
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE.native
|
||||
echo 'Red Hat %{version}-%{gcc_release} cross from %{_arch}' > gcc/DEV-PHASE.cross
|
||||
cp -p gcc/DEV-PHASE{.native,}
|
||||
|
||||
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
|
||||
|
||||
@ -986,10 +1038,36 @@ enablelgo=,go
|
||||
%if %{build_d}
|
||||
enableld=,d
|
||||
%endif
|
||||
CONFIGURE_OPTS="\
|
||||
# CONFIGURE_OPTS_BASE are the configure options common to the native and cross
|
||||
# builds. E.g., --prefix. This cannot include arch-specific configure options.
|
||||
# CONFIGURE_OPTS_NATIVE are the configure options used for the native build
|
||||
# (that is, the regular non-cross build) and libgccjit. This includes arch-specific
|
||||
# configure options (default -march and such).
|
||||
# CONFIGURE_OPTS = CONFIGURE_OPTS_BASE + CONFIGURE_OPTS_NATIVE
|
||||
# CONFIGURE_OPTS_CROSS are the configure options common to all the cross
|
||||
# builds. E.g., only build C/C++. This shall not be used for the native build.
|
||||
# Each cross compiler's configure options will be:
|
||||
# CONFIGURE_OPTS_BASE + CONFIGURE_OPTS_CROSS + --target= + --with-sysroot= + <arch-specific-opts>
|
||||
# It it very important that the arch-specific configure options used in
|
||||
# CONFIGURE_OPTS_NATIVE are in lockstep with the <arch-specific-opts>
|
||||
# used in the cross builds.
|
||||
CONFIGURE_OPTS_BASE="\
|
||||
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
|
||||
--with-bugurl=http://bugzilla.redhat.com/bugzilla \
|
||||
--enable-shared --enable-threads=posix --enable-checking=release \
|
||||
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
|
||||
--enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
|
||||
--enable-plugin --enable-initfini-array \
|
||||
%if %{build_isl}
|
||||
--with-isl=`pwd`/isl-install \
|
||||
%else
|
||||
--without-isl \
|
||||
%endif
|
||||
"
|
||||
|
||||
# NB: When updating CONFIGURE_OPTS_NATIVE, make sure to update the cross
|
||||
# compiler options as well (look for CONFIGURE_OPTS_FOR_ARCH).
|
||||
CONFIGURE_OPTS_NATIVE="\
|
||||
%ifarch ppc64le
|
||||
--enable-targets=powerpcle-linux \
|
||||
%endif
|
||||
@ -1006,16 +1084,8 @@ CONFIGURE_OPTS="\
|
||||
%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 \
|
||||
%ifnarch %{mips}
|
||||
--with-linker-hash-style=gnu \
|
||||
%endif
|
||||
--enable-plugin --enable-initfini-array \
|
||||
%if %{build_isl}
|
||||
--with-isl=`pwd`/isl-install \
|
||||
%else
|
||||
--without-isl \
|
||||
%endif
|
||||
%if %{build_offload_nvptx}
|
||||
--enable-offload-targets=nvptx-none \
|
||||
@ -1130,6 +1200,14 @@ CONFIGURE_OPTS="\
|
||||
%endif
|
||||
%endif
|
||||
"
|
||||
CONFIGURE_OPTS="$CONFIGURE_OPTS_BASE $CONFIGURE_OPTS_NATIVE"
|
||||
|
||||
CONFIGURE_OPTS_CROSS="\
|
||||
--enable-languages=c,c++ --disable-bootstrap --disable-libsanitizer \
|
||||
--host=%{gcc_target_platform} --build=%{gcc_target_platform} \
|
||||
--disable-multilib --disable-libstdcxx-pch --disable-libcc1 \
|
||||
--enable-host-pie --enable-host-bind-now \
|
||||
"
|
||||
|
||||
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
|
||||
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
|
||||
@ -1170,6 +1248,55 @@ make jit.sphinx.html
|
||||
make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
|
||||
cd ..
|
||||
|
||||
# Build cross compilers here.
|
||||
%if %{build_cross}
|
||||
echo ==================== BUILD CROSS =========================
|
||||
# Get out of obj-%{gcc_target_platform}.
|
||||
pushd ..
|
||||
for crossarch in %{cross_targets}; do
|
||||
mkdir obj-$crossarch
|
||||
cd obj-$crossarch
|
||||
|
||||
case $crossarch in
|
||||
aarch64*)
|
||||
CONFIGURE_OPTS_FOR_ARCH=""
|
||||
;;
|
||||
s390x*)
|
||||
CONFIGURE_OPTS_FOR_ARCH=""
|
||||
;;
|
||||
ppc64le*)
|
||||
CONFIGURE_OPTS_FOR_ARCH=""
|
||||
;;
|
||||
*)
|
||||
echo >&2 "ERROR: unknown cross arch $crossarch"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Temporarily replace DEV-PHASE.
|
||||
cp -p ../gcc/DEV-PHASE{.cross,}
|
||||
|
||||
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 $CONFIGURE_OPTS_BASE $CONFIGURE_OPTS_CROSS \
|
||||
--with-sysroot=/usr/$crossarch/sys-root/el9/ \
|
||||
--with-gxx-include-dir="/usr/$crossarch/sys-root/el9/%{_prefix}/include/c++/%{gcc_major}" \
|
||||
--target=$crossarch \
|
||||
$CONFIGURE_OPTS_FOR_ARCH
|
||||
make %{?_smp_mflags} LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now
|
||||
|
||||
# Restore DEV-PHASE.
|
||||
cp -p ../gcc/DEV-PHASE{.native,}
|
||||
# Out of obj-$crossarch.
|
||||
cd ..
|
||||
done
|
||||
# Go back to obj-%{gcc_target_platform}.
|
||||
popd
|
||||
echo ==================== BUILD CROSS END =========================
|
||||
%endif
|
||||
|
||||
%if %{build_isl}
|
||||
cp -a isl-install/lib/libisl.so.15 gcc/
|
||||
%endif
|
||||
@ -1370,6 +1497,126 @@ make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
|
||||
chmod 644 %{buildroot}%{_infodir}/gnat*
|
||||
%endif
|
||||
|
||||
%if %{build_cross}
|
||||
echo ==================== INSTALL CROSS =========================
|
||||
# Our of obj-%{gcc_target_platform}.
|
||||
pushd ..
|
||||
for crossarch in %{cross_targets}; do
|
||||
cd obj-$crossarch
|
||||
|
||||
CROSS_LIBPATH=%{buildroot}%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/
|
||||
|
||||
# Temporarily replace DEV-PHASE.
|
||||
cp -p ../gcc/DEV-PHASE{.cross,}
|
||||
|
||||
# --with-gxx-include-dir= doesn't prefix its argument with $(DESTDIR)
|
||||
# and you can't install things into /usr unless you're root.
|
||||
mkdir scratch
|
||||
scratchdir=`pwd`/scratch
|
||||
pushd $crossarch/libstdc++-v3
|
||||
for i in `find . -name Makefile`; do
|
||||
cp -a $i $i.save
|
||||
sed -i -e 's?^gxx_include_dir = .*$?gxx_include_dir = '$scratchdir'?' $i
|
||||
touch -r $i.save $i
|
||||
done
|
||||
popd
|
||||
|
||||
# Use -j1, because build-many-glibcs says:
|
||||
# Parallel "make install" for GCC has race conditions that can
|
||||
# cause it to fail; see
|
||||
# <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42980>. Such
|
||||
# problems are not known for binutils, but doing the
|
||||
# installation in parallel within a particular toolchain build
|
||||
# (as opposed to installation of one toolchain from
|
||||
# build-many-glibcs.py running in parallel to the installation
|
||||
# of other toolchains being built) is not known to be
|
||||
# significantly beneficial, so it is simplest just to disable
|
||||
# parallel install for cross tools here.
|
||||
make -j1 prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
|
||||
infodir=%{buildroot}%{_infodir} install
|
||||
|
||||
# Restore DEV-PHASE.
|
||||
cp -p ../gcc/DEV-PHASE{.native,}
|
||||
|
||||
# Restore Makefiles with the old gxx_include_dir.
|
||||
pushd $crossarch/libstdc++-v3
|
||||
for i in `find . -name Makefile`; do
|
||||
mv -f $i.save $i
|
||||
done
|
||||
popd
|
||||
# We're not shipping C++ headers; nuke 'em.
|
||||
rm -rf $scratchdir
|
||||
|
||||
# Move libgomp.spec to where it belongs for %files.
|
||||
mv $crossarch/libgomp/libgomp.spec $CROSS_LIBPATH
|
||||
# Likewise for libitm.spec
|
||||
%if %{build_libitm}
|
||||
mv $crossarch/libitm/libitm.spec $CROSS_LIBPATH
|
||||
%endif
|
||||
|
||||
cd ..
|
||||
|
||||
pushd $CROSS_LIBPATH
|
||||
mv include-fixed/syslimits.h include/syslimits.h
|
||||
mv include-fixed/limits.h include/limits.h
|
||||
popd
|
||||
|
||||
echo '/* GNU ld script
|
||||
Use the shared library, but some functions are only in
|
||||
the static library. */
|
||||
OUTPUT_FORMAT(elf64-littleaarch64)
|
||||
GROUP ( =/lib64/libgcc_s.so.1 libgcc.a )' > $CROSS_LIBPATH/libgcc_s.so
|
||||
|
||||
echo '/* GNU ld script
|
||||
Use the shared library from sysroot. */
|
||||
OUTPUT_FORMAT(elf64-littleaarch64)
|
||||
INPUT ( =%{_prefix}/lib64/libgomp.so.1 )' > $CROSS_LIBPATH/libgomp.so
|
||||
|
||||
echo '/* GNU ld script
|
||||
Use the shared library from sysroot. */
|
||||
OUTPUT_FORMAT(elf64-littleaarch64)
|
||||
INPUT ( =/%{_prefix}/lib64/libstdc++.so.6 )' > $CROSS_LIBPATH/libstdc++.so
|
||||
|
||||
echo "/* GNU ld script
|
||||
Use the static library from sysroot. */
|
||||
INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libstdc++.a )" > $CROSS_LIBPATH/libstdc++.a
|
||||
|
||||
echo "/* GNU ld script
|
||||
Use the static library from sysroot. */
|
||||
INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libsupc++.a )" > $CROSS_LIBPATH/libsupc++.a
|
||||
|
||||
echo '/* GNU ld script
|
||||
Use the shared library from sysroot. */
|
||||
OUTPUT_FORMAT(elf64-littleaarch64)
|
||||
INPUT ( =%{_prefix}/lib64/libatomic.so.1 )' > $CROSS_LIBPATH/libatomic.so
|
||||
|
||||
echo "/* GNU ld script
|
||||
Use the static library from sysroot. */
|
||||
INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libatomic.a )" > $CROSS_LIBPATH/libatomic.a
|
||||
|
||||
echo '/* GNU ld script
|
||||
Use the shared library from sysroot. */
|
||||
OUTPUT_FORMAT(elf64-littleaarch64)
|
||||
INPUT ( =%{_prefix}/lib64/libitm.so.1 )' > $CROSS_LIBPATH/libitm.so
|
||||
|
||||
echo "/* GNU ld script
|
||||
Use the static library from sysroot. */
|
||||
INPUT( =%{_prefix}/lib/gcc/$crossarch/%{gcc_major}/libitm.a )" > $CROSS_LIBPATH/libitm.a
|
||||
|
||||
# Help plugins find out nvra.
|
||||
echo gcc-%{version}-%{release}.%{_arch} > $CROSS_LIBPATH/rpmver
|
||||
|
||||
# TODO
|
||||
# Add symlink to lto plugin in the binutils plugin directory.
|
||||
#%{__mkdir_p} %{buildroot}%{_libdir}/bfd-plugins/
|
||||
#ln -s ../../libexec/gcc/$crossarch/%{gcc_major}/liblto_plugin.so \
|
||||
# %{buildroot}%{_libdir}/$crossarch/bfd-plugins/
|
||||
done
|
||||
# Back to obj-%{gcc_target_platform}.
|
||||
popd
|
||||
echo ==================== INSTALL CROSS END =========================
|
||||
%endif
|
||||
|
||||
FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||
FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
|
||||
|
||||
@ -3273,7 +3520,124 @@ end
|
||||
%{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0
|
||||
%{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0.0.0
|
||||
|
||||
%if %{build_cross}
|
||||
%files -n cross-gcc-aarch64
|
||||
%{_prefix}/bin/aarch64-redhat-linux-cpp
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcc
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcc-%{gcc_major}
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcc-ar
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcc-nm
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcc-ranlib
|
||||
%{_prefix}/bin/aarch64-redhat-linux-gcov*
|
||||
%{_prefix}/bin/aarch64-redhat-linux-lto-dump
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/cc1
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/collect2
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/lto1
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/lto-wrapper
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/liblto_plugin.so
|
||||
%dir %{_prefix}/lib/gcc
|
||||
%dir %{_prefix}/lib/gcc/aarch64-redhat-linux
|
||||
%dir %{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}
|
||||
%dir %{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/include
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/crt*.o
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc.a
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc_eh.a
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcov.a
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/include/*.h
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/rpmver
|
||||
# These are here for ld(1) purposes only.
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgcc_s.so
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgomp.so
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libgomp.spec
|
||||
%if %{build_libatomic}
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libatomic.so
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libatomic.a
|
||||
%endif
|
||||
%if %{build_libitm}
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.so
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.a
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libitm.spec
|
||||
%endif
|
||||
|
||||
%files -n cross-gcc-c++-aarch64
|
||||
%{_prefix}/bin/aarch64-redhat-linux-c++
|
||||
%{_prefix}/bin/aarch64-redhat-linux-g++
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/cc1plus
|
||||
%{_prefix}/libexec/gcc/aarch64-redhat-linux/%{gcc_major}/g++-mapper-server
|
||||
# For ld(1) purposes only.
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libstdc++.so
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libstdc++.a
|
||||
%{_prefix}/lib/gcc/aarch64-redhat-linux/%{gcc_major}/libsupc++.a
|
||||
%dnl build_cross
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Dec 21 2022 Marek Polacek <polacek@redhat.com> 11.3.1-4.3
|
||||
- compile the cross binaries as PIE/-z now (#2155452)
|
||||
|
||||
* Mon Dec 19 2022 Marek Polacek <polacek@redhat.com> 11.3.1-4.2
|
||||
- ship libitm.spec in cross-gcc (#2154462)
|
||||
|
||||
* Tue Dec 13 2022 Marek Polacek <polacek@redhat.com> 11.3.1-4.1
|
||||
- add cross compiler functionality for non-production uses (#2149650)
|
||||
|
||||
* Tue Nov 22 2022 Marek Polacek <polacek@redhat.com> 11.3.1-4
|
||||
- update from releases/gcc-11-branch (#2117632)
|
||||
- PRs analyzer/105252, analyzer/105365, analyzer/105366, c++/65211,
|
||||
c++/82980, c++/86193, c++/90107, c++/97296, c++/101442, c++/101698,
|
||||
c++/102071, c++/102177, c++/102300, c++/102307, c++/102479,
|
||||
c++/102629, c++/104066, c++/104142, c++/104646, c++/104669,
|
||||
c++/105245, c++/105265, c++/105289, c++/105304, c++/105321,
|
||||
c++/105386, c++/105398, c++/105725, c++/105761, c++/105774,
|
||||
c++/105795, c++/105852, c++/105925, c++/106024, c++/106361,
|
||||
c++/107358, c/41041, c/106016, c/106981, c/107001, d/106139,
|
||||
d/106638, debug/106261, fortran/82868, fortran/100029, fortran/100040,
|
||||
fortran/100097, fortran/100098, fortran/100132, fortran/100136,
|
||||
fortran/100245, fortran/103413, fortran/103504, fortran/103693,
|
||||
fortran/103694, fortran/104313, fortran/104849, fortran/105012,
|
||||
fortran/105230, fortran/105243, fortran/105310, fortran/105633,
|
||||
fortran/105691, fortran/105813, fortran/105954, fortran/106121,
|
||||
fortran/106817, fortran/106857, fortran/106985, fortran/106986,
|
||||
fortran/107054, ipa/100413, ipa/105600, ipa/105739, libgomp/106045,
|
||||
libstdc++/65018, libstdc++/84110, libstdc++/93602, libstdc++/96592,
|
||||
libstdc++/99290, libstdc++/100823, libstdc++/101709, libstdc++/102447,
|
||||
libstdc++/103664, libstdc++/103848, libstdc++/103853,
|
||||
libstdc++/103911, libstdc++/103992, libstdc++/104217,
|
||||
libstdc++/104443, libstdc++/104602, libstdc++/104731,
|
||||
libstdc++/105128, libstdc++/105284, libstdc++/105375,
|
||||
libstdc++/105502, libstdc++/105671, libstdc++/105915,
|
||||
libstdc++/106162, libstdc++/106248, libstdc++/106320,
|
||||
libstdc++/106607, libstdc++/106695, lto/106334, lto/106540,
|
||||
middle-end/103193, middle-end/104869, middle-end/104966,
|
||||
middle-end/105140, middle-end/105998, middle-end/106027,
|
||||
middle-end/106030, middle-end/106144, middle-end/106331,
|
||||
middle-end/106492, preprocessor/97498, preprocessor/105732,
|
||||
rtl-optimization/104637, rtl-optimization/105041,
|
||||
rtl-optimization/105333, rtl-optimization/105559,
|
||||
rtl-optimization/106032, rtl-optimization/106187, sanitizer/105396,
|
||||
sanitizer/105729, target/96072, target/99184, target/99685,
|
||||
target/101322, target/101891, target/102059, target/102146,
|
||||
target/103197, target/103353, target/104257, target/104829,
|
||||
target/105147, target/105162, target/105209, target/105292,
|
||||
target/105339, target/105349, target/105463, target/105472,
|
||||
target/105854, target/105879, target/105970, target/105981,
|
||||
target/106017, target/106091, target/106355, target/106491,
|
||||
target/106721, target/107061, target/107064, target/107183,
|
||||
target/107248, target/107304, target/107364, target/107748,
|
||||
testsuite/105095, testsuite/105266, testsuite/105433,
|
||||
testsuite/106345, tree-optimization/103116, tree-optimization/105148,
|
||||
tree-optimization/105163, tree-optimization/105173,
|
||||
tree-optimization/105250, tree-optimization/105263,
|
||||
tree-optimization/105312, tree-optimization/105368,
|
||||
tree-optimization/105431, tree-optimization/105437,
|
||||
tree-optimization/105528, tree-optimization/105618,
|
||||
tree-optimization/105726, tree-optimization/105860,
|
||||
tree-optimization/106112, tree-optimization/106131,
|
||||
tree-optimization/106189, tree-optimization/106513,
|
||||
tree-optimization/106892, tree-optimization/106934
|
||||
- fix the detection of Sapphire Rapids in host_detect_local_cpu
|
||||
- fix -Wmismatched-dealloc documentation (#2116635)
|
||||
|
||||
* Tue Jul 12 2022 Marek Polacek <polacek@redhat.com> 11.3.1-2.1
|
||||
- fix handling of invalid ranges in std::regex (#2106262)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user