Compare commits

...

2 Commits

Author SHA1 Message Date
Toshaan Bharvani f74fadcdb2 update to 11.3.1 release 4
Signed-off-by: Toshaan Bharvani <toshaan@powerel.org>
2023-06-06 23:56:19 +02:00
Toshaan Bharvani 4621cebfe8 patch updateds to 11.3.1-2.1
Signed-off-by: Toshaan Bharvani <toshaan@powerel.org>
2022-11-24 15:31:47 +01:00
35 changed files with 898 additions and 121 deletions

0
SOURCES/gcc11-Wbidi-chars.patch Executable file → Normal file
View File

0
SOURCES/gcc11-Wno-format-security.patch Executable file → Normal file
View File

36
SOURCES/gcc11-bind-now.patch Executable file → Normal file
View File

@ -131,24 +131,6 @@ index 2ded5d4c50b..5671dc7dcf4 100755
--disable-libquadmath-support --disable-libquadmath-support
disable libquadmath support for Fortran disable libquadmath support for Fortran
--enable-default-pie enable Position Independent Executable as default --enable-default-pie enable Position Independent Executable as default
@@ -19394,7 +19397,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19409 "configure"
+#line 19412 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19500,7 +19503,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19515 "configure"
+#line 19518 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -32109,6 +32112,14 @@ fi @@ -32109,6 +32112,14 @@ fi
@ -286,24 +268,6 @@ index baa84adbb6c..669ccaede52 100755
# Check whether --enable-cet was given. # Check whether --enable-cet was given.
if test "${enable_cet+set}" = set; then : if test "${enable_cet+set}" = set; then :
@@ -11950,7 +11968,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11963 "configure"
+#line 11983 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12056,7 +12074,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12069 "configure"
+#line 12089 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/lto-plugin/configure.ac b/lto-plugin/configure.ac diff --git a/lto-plugin/configure.ac b/lto-plugin/configure.ac
index 7e6f729e9dc..5d5fea8fe70 100644 index 7e6f729e9dc..5d5fea8fe70 100644
--- a/lto-plugin/configure.ac --- a/lto-plugin/configure.ac

0
SOURCES/gcc11-d-shared-libphobos.patch Executable file → Normal file
View File

0
SOURCES/gcc11-dejagnu-multiline.patch Executable file → Normal file
View File

0
SOURCES/gcc11-dg-ice-fixes.patch Executable file → Normal file
View File

0
SOURCES/gcc11-foffload-default.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-add-missing-indexes.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-duplicates.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-ichar.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-non-integer-index.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-non-logical-if.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-old-init.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-override-kind.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-promotion.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-fdec-sequence.patch Executable file → Normal file
View File

0
SOURCES/gcc11-fortran-flogical-as-integer.patch Executable file → Normal file
View File

0
SOURCES/gcc11-hack.patch Executable file → Normal file
View File

0
SOURCES/gcc11-isl-dl.patch Executable file → Normal file
View File

0
SOURCES/gcc11-isl-dl2.patch Executable file → Normal file
View File

12
SOURCES/gcc11-libgcc-link.patch Executable file → Normal file
View File

@ -19,7 +19,6 @@ that also repeats later in the @multilib_flags@, which should be harmless.
2021-08-04 Jakub Jelinek <jakub@redhat.com> 2021-08-04 Jakub Jelinek <jakub@redhat.com>


* config/t-slibgcc (SHLIB_LINK): Add $(LDFLAGS). * config/t-slibgcc (SHLIB_LINK): Add $(LDFLAGS).
* config/t-slibgcc-darwin (SHLIB_LINK): Likewise.
* config/t-slibgcc-vms (SHLIB_LINK): Likewise. * config/t-slibgcc-vms (SHLIB_LINK): Likewise.


--- libgcc/config/t-slibgcc --- libgcc/config/t-slibgcc
@ -33,17 +32,6 @@ that also repeats later in the @multilib_flags@, which should be harmless.
-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
$(SHLIB_OBJS) $(SHLIB_LC) && \ $(SHLIB_OBJS) $(SHLIB_LC) && \
rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
--- libgcc/config/t-slibgcc-darwin
+++ libgcc/config/t-slibgcc-darwin
@@ -15,7 +15,7 @@ SHLIB_LC = -lc
# Note that this version is used for the loader, not the linker; the linker
# uses the stub versions named by the versioned members of $(INSTALL_FILES).
-SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
+SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -dynamiclib -nodefaultlibs \
-install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \
-single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \
-Wl,-exported_symbols_list,$(SHLIB_MAP) \
--- libgcc/config/t-slibgcc-vms --- libgcc/config/t-slibgcc-vms
+++ libgcc/config/t-slibgcc-vms +++ libgcc/config/t-slibgcc-vms
@@ -22,7 +22,7 @@ SHLIB_LINK = \ @@ -22,7 +22,7 @@ SHLIB_LINK = \

0
SOURCES/gcc11-libgomp-omp_h-multilib.patch Executable file → Normal file
View File

4
SOURCES/gcc11-libstdc++-docs.patch Executable file → Normal file
View File

@ -4,7 +4,7 @@
<a class="link" href="https://www.fsf.org" target="_top">FSF <a class="link" href="https://www.fsf.org" target="_top">FSF
</a> </a>
</p><p> </p><p>
+ Release 11.2.1 + Release 11.3.1
+ </p><p> + </p><p>
Permission is granted to copy, distribute and/or modify this Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation document under the terms of the GNU Free Documentation
@ -17,7 +17,7 @@
</p><p> </p><p>
- The API documentation, rendered into HTML, can be viewed online - The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally + The API documentation, rendered into HTML, can be viewed locally
+ <a class="link" href="api/index.html" target="_top">for the 11.2.1 release</a>, + <a class="link" href="api/index.html" target="_top">for the 11.3.1 release</a>,
+ online + online
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a> <a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
and and

0
SOURCES/gcc11-libtool-no-rpath.patch Executable file → Normal file
View File

0
SOURCES/gcc11-no-add-needed.patch Executable file → Normal file
View File

36
SOURCES/gcc11-pie.patch Executable file → Normal file
View File

@ -291,24 +291,6 @@ index 258b17a226e..bd4fe1fd6ca 100755
--disable-libquadmath-support --disable-libquadmath-support
disable libquadmath support for Fortran disable libquadmath support for Fortran
--enable-default-pie enable Position Independent Executable as default --enable-default-pie enable Position Independent Executable as default
@@ -19659,7 +19661,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19395 "configure"
+#line 19409 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19765,7 +19767,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 19501 "configure"
+#line 19515 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -32221,13 +32223,17 @@ fi @@ -32221,13 +32223,17 @@ fi
# Enable --enable-host-shared # Enable --enable-host-shared
# Check whether --enable-host-shared was given. # Check whether --enable-host-shared was given.
@ -793,24 +775,6 @@ index f489f31bc70..0dfc1982844 100755
cet_save_CFLAGS="$CFLAGS" cet_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fcf-protection" CFLAGS="$CFLAGS -fcf-protection"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10735,7 +10739,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10748 "configure"
+#line 10754 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10841,7 +10845,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10854 "configure"
+#line 10860 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11524,15 +11528,31 @@ else @@ -11524,15 +11528,31 @@ else
multilib_arg= multilib_arg=
fi fi

0
SOURCES/gcc11-pr101786.patch Executable file → Normal file
View File

View File

@ -0,0 +1,33 @@
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" } */
+}

0
SOURCES/gcc11-relocatable-pch.patch Executable file → Normal file
View File

0
SOURCES/gcc11-rh1574936.patch Executable file → Normal file
View File

View File

@ -0,0 +1,388 @@
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;
}

0
SOURCES/gcc11-sparc-config-detection.patch Executable file → Normal file
View File

0
SOURCES/gcc11-stringify-__VA_OPT__-2.patch Executable file → Normal file
View File

0
SOURCES/gcc11-stringify-__VA_OPT__.patch Executable file → Normal file
View File

510
SPECS/gcc.spec Executable file → Normal file
View File

@ -1,10 +1,10 @@
%global DATE 20220127 %global DATE 20221121
%global gitrev 2fa6e5c54e782377faa4c9c1f0e0b16db27f266c %global gitrev 643e61c61b308f9c572da4ccd5f730fb
%global gcc_version 11.2.1 %global gcc_version 11.3.1
%global gcc_major 11 %global gcc_major 11
# Note, gcc_release must be integer, if you want to add suffixes to # Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line. # %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 9 %global gcc_release 4
%global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e
%global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0
%global _unpackaged_files_terminate_build 0 %global _unpackaged_files_terminate_build 0
@ -23,7 +23,7 @@
%if 0%{?fedora} < 32 && 0%{?rhel} < 8 %if 0%{?fedora} < 32 && 0%{?rhel} < 8
%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
%else %else
%global multilib_64_archs sparc64 ppc64p7 %global multilib_64_archs sparc64 ppc64p7
%endif %endif
%if 0%{?rhel} > 7 %if 0%{?rhel} > 7
%global build_ada 0 %global build_ada 0
@ -42,7 +42,7 @@
%else %else
%global build_go 0 %global build_go 0
%endif %endif
%ifarch %{ix86} x86_64 %{arm} %{mips} s390 s390x riscv64 %ifarch %{ix86} x86_64 %{arm} aarch64 ppc64 ppc64le %{mips} s390 s390x riscv64
%global build_d 1 %global build_d 1
%else %else
%global build_d 0 %global build_d 0
@ -83,7 +83,7 @@
%else %else
%global build_libitm 0 %global build_libitm 0
%endif %endif
%if 0%{?rhel} > 10 %if 0%{?rhel} > 8
%global build_isl 0 %global build_isl 0
%else %else
%global build_isl 1 %global build_isl 1
@ -94,7 +94,7 @@
%else %else
%global attr_ifunc 0 %global attr_ifunc 0
%endif %endif
%ifarch x86_64 ppc64le ppc64 %ifarch x86_64 ppc64le
%global build_offload_nvptx 1 %global build_offload_nvptx 1
%else %else
%global build_offload_nvptx 0 %global build_offload_nvptx 0
@ -107,16 +107,28 @@
%ifarch sparc64 %ifarch sparc64
%global multilib_32_arch sparcv9 %global multilib_32_arch sparcv9
%endif %endif
%ifarch ppc64p7 %ifarch ppc64 ppc64p7
%global multilib_32_arch ppc %global multilib_32_arch ppc
%endif %endif
%ifarch i686 %ifarch x86_64
%global multilib_32_arch i686 %global multilib_32_arch i686
%endif %endif
%if 0%{?rhel} == 9
%ifarch x86_64 ppc64le ppc64
%global build_cross 0
%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-powerel-linux
Summary: Various compilers (C, C++, Objective-C, ...) Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc Name: gcc
Version: %{gcc_version} Version: %{gcc_version}
Release: %{gcc_release}.4%{?dist} Release: %{gcc_release}.3%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception. # GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@ -271,9 +283,10 @@ Patch18: gcc11-Wbidi-chars.patch
Patch19: gcc11-dg-ice-fixes.patch Patch19: gcc11-dg-ice-fixes.patch
Patch20: gcc11-relocatable-pch.patch Patch20: gcc11-relocatable-pch.patch
Patch21: gcc11-dejagnu-multiline.patch Patch21: gcc11-dejagnu-multiline.patch
Patch22: gcc11-libsanitizer-pthread.patch
Patch23: gcc11-pie.patch Patch23: gcc11-pie.patch
Patch24: gcc11-bind-now.patch Patch24: gcc11-bind-now.patch
Patch25: gcc11-detect-sapphirerapids.patch
Patch26: gcc11-Wmismatched-dealloc-doc.patch


Patch100: gcc11-fortran-fdec-duplicates.patch Patch100: gcc11-fortran-fdec-duplicates.patch
Patch101: gcc11-fortran-flogical-as-integer.patch Patch101: gcc11-fortran-flogical-as-integer.patch
@ -795,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 of the plugin is explicitly built by the same version of gcc that is installed
so that there cannot be any synchronization problems. 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 %prep
%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 %setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3
%patch0 -p0 -b .hack~ %patch0 -p0 -b .hack~
@ -823,9 +875,10 @@ so that there cannot be any synchronization problems.
%patch19 -p1 -b .ice~ %patch19 -p1 -b .ice~
%patch20 -p1 -b .pch~ %patch20 -p1 -b .pch~
%patch21 -p1 -b .dejagnu-multiline~ %patch21 -p1 -b .dejagnu-multiline~
%patch22 -p1 -b .libsanitizer-pthread~
%patch23 -p1 -b .pie~ %patch23 -p1 -b .pie~
%patch24 -p1 -b .now~ %patch24 -p1 -b .now~
%patch25 -p1 -b .detect-spr~
%patch26 -p1 -b .Wmismatched-dealloc-doc~


%if 0%{?rhel} >= 9 %if 0%{?rhel} >= 9
%patch100 -p1 -b .fortran-fdec-duplicates~ %patch100 -p1 -b .fortran-fdec-duplicates~
@ -844,7 +897,9 @@ so that there cannot be any synchronization problems.
rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go
%endif %endif


echo 'PowerEL %{version}-%{gcc_release}' > gcc/DEV-PHASE echo 'PowerEL %{version}-%{gcc_release}' > gcc/DEV-PHASE.native
echo 'PowerEL %{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 cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h


@ -933,7 +988,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
--target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \ --target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \
--enable-languages=c,c++,fortran,lto \ --enable-languages=c,c++,fortran,lto \
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
--with-bugurl=http://bugzilla.powerel.org/bugzilla \ --with-bugurl=http://bugs.powerel.com/bugzilla \
--enable-checking=release --with-system-zlib \ --enable-checking=release --with-system-zlib \
--with-gcc-major-version-only --without-isl --enable-host-pie --enable-host-bind-now --with-gcc-major-version-only --without-isl --enable-host-pie --enable-host-bind-now
make %{?_smp_mflags} make %{?_smp_mflags}
@ -983,14 +1038,43 @@ enablelgo=,go
%if %{build_d} %if %{build_d}
enableld=,d enableld=,d
%endif %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} \ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
--with-bugurl=http://bugzilla.powerel.org/bugzilla \ --with-bugurl=http://bugs.powerel.com/bugzilla \
--enable-shared --enable-threads=posix --enable-checking=release \ --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 %ifarch ppc64le
--enable-targets=powerpcle-linux \ --enable-targets=powerpcle-linux \
%endif %endif
%ifarch x86_64 ppc64 ppc64le %{mips} s390x %ifarch ppc64
--enable-targets=powerpc-linux \
%endif
%ifarch %{mips} s390x
%ifarch s390x %ifarch s390x
%if 0%{?fedora} < 32 && 0%{?rhel} < 8 %if 0%{?fedora} < 32 && 0%{?rhel} < 8
--enable-multilib \ --enable-multilib \
@ -1003,16 +1087,8 @@ CONFIGURE_OPTS="\
%else %else
--enable-multilib \ --enable-multilib \
%endif %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} %ifnarch %{mips}
--with-linker-hash-style=gnu \ --with-linker-hash-style=gnu \
%endif
--enable-plugin --enable-initfini-array \
%if %{build_isl}
--with-isl=`pwd`/isl-install \
%else
--without-isl \
%endif %endif
%if %{build_offload_nvptx} %if %{build_offload_nvptx}
--enable-offload-targets=nvptx-none \ --enable-offload-targets=nvptx-none \
@ -1050,17 +1126,10 @@ CONFIGURE_OPTS="\
%endif %endif
%endif %endif
%ifarch ppc64 %ifarch ppc64
%if 0%{?rhel} == 9
--with-cpu-32=%{cpuarch} --with-tune-32=%{cpuarch} --with-cpu-64=%{cpuarch} --with-tune-64=%{cpuarch} \ --with-cpu-32=%{cpuarch} --with-tune-32=%{cpuarch} --with-cpu-64=%{cpuarch} --with-tune-64=%{cpuarch} \
%else
--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
%endif
%endif %endif
%ifarch ppc64le %ifarch ppc64le
%if 0%{?rhel} == 9
--with-cpu-32=%{cpuarch} --with-tune-32=%{cpuarch} --with-cpu-64=%{cpuarch} --with-tune-64=%{cpuarch} \ --with-cpu-32=%{cpuarch} --with-tune-32=%{cpuarch} --with-cpu-64=%{cpuarch} --with-tune-64=%{cpuarch} \
%else
--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
%endif %endif
%endif %endif
%ifarch ppc %ifarch ppc
@ -1082,10 +1151,10 @@ CONFIGURE_OPTS="\
%endif %endif
%else %else
%ifarch %{ix86} %ifarch %{ix86}
--with-arch=%{cpuarch} \ --with-arch=i686 \
%endif %endif
%ifarch x86_64 %ifarch x86_64
--with-arch_32=%{cpuarch} \ --with-arch_32=i686 \
%endif %endif
%endif %endif
%ifarch s390 s390x %ifarch s390 s390x
@ -1134,6 +1203,14 @@ CONFIGURE_OPTS="\
%endif %endif
%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" \ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
@ -1174,6 +1251,55 @@ make jit.sphinx.html
make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
cd .. 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} %if %{build_isl}
cp -a isl-install/lib/libisl.so.15 gcc/ cp -a isl-install/lib/libisl.so.15 gcc/
%endif %endif
@ -1374,6 +1500,126 @@ make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
chmod 644 %{buildroot}%{_infodir}/gnat* chmod 644 %{buildroot}%{_infodir}/gnat*
%endif %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} FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major} FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}


@ -3277,7 +3523,201 @@ end
%{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0 %{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0
%{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0.0.0 %{ANNOBIN_GCC_PLUGIN_DIR}/gcc-annobin.so.0.0.0


%if %{build_cross}
%files -n cross-gcc-aarch64
%{_prefix}/bin/aarch64-powerel-linux-cpp
%{_prefix}/bin/aarch64-powerel-linux-gcc
%{_prefix}/bin/aarch64-powerel-linux-gcc-%{gcc_major}
%{_prefix}/bin/aarch64-powerel-linux-gcc-ar
%{_prefix}/bin/aarch64-powerel-linux-gcc-nm
%{_prefix}/bin/aarch64-powerel-linux-gcc-ranlib
%{_prefix}/bin/aarch64-powerel-linux-gcov*
%{_prefix}/bin/aarch64-powerel-linux-lto-dump
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/cc1
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/collect2
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/lto1
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/lto-wrapper
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/liblto_plugin.so
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/aarch64-powerel-linux
%dir %{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}
%dir %{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/include
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/crt*.o
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgcc.a
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgcc_eh.a
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgcov.a
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/include/*.h
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/rpmver
# These are here for ld(1) purposes only.
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgcc_s.so
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgomp.so
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libgomp.spec
%if %{build_libatomic}
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libatomic.so
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libatomic.a
%endif
%if %{build_libitm}
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libitm.so
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libitm.a
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libitm.spec
%endif

%files -n cross-gcc-c++-aarch64
%{_prefix}/bin/aarch64-powerel-linux-c++
%{_prefix}/bin/aarch64-powerel-linux-g++
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/cc1plus
%{_prefix}/libexec/gcc/aarch64-powerel-linux/%{gcc_major}/g++-mapper-server
# For ld(1) purposes only.
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libstdc++.so
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libstdc++.a
%{_prefix}/lib/gcc/aarch64-powerel-linux/%{gcc_major}/libsupc++.a
%dnl build_cross
%endif

%changelog %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)

* Thu Apr 21 2022 Jakub Jelinek <jakub@redhat.com> 11.3.1-2
- update from releases/gcc-11-branch (#2077536)
- GCC 11.3 release
- PRs c++/98249, c++/99893, c++/100608, c++/101051, c++/101532, c++/101677,
c++/101717, c++/101894, c++/102869, c++/103105, c++/103328,
c++/103341, c++/103455, c++/103706, c++/103885, c++/103943,
c++/104008, c++/104079, c++/104225, c++/104507, c++/104565,
c++/105003, c++/105064, c++/105143, c++/105186, c++/105256, c/101585,
debug/105203, fortran/102992, fortran/104210, fortran/104228,
fortran/104570, fortran/105138, gcov-profile/105282, ipa/103083,
ipa/103432, jit/100613, libstdc++/90943, libstdc++/100516,
libstdc++/103630, libstdc++/103638, libstdc++/103650,
libstdc++/103955, libstdc++/104098, libstdc++/104301,
libstdc++/104542, libstdc++/104859, libstdc++/105021,
libstdc++/105027, middle-end/104497, middle-end/105165,
rtl-optimization/104985, rtl-optimization/105028,
rtl-optimization/105211, target/80556, target/100106, target/104117,
target/104474, target/104853, target/104894, target/105214,
target/105257, tree-optimization/99121, tree-optimization/104880,
tree-optimization/105053, tree-optimization/105070,
tree-optimization/105189, tree-optimization/105198,
tree-optimization/105226, tree-optimization/105232,
tree-optimization/105235
- fix bogus -Wuninitialized warning on va_arg with complex types on x86_64
(PR target/105331)
- remove bogus assertion in std::from_chars (PR libstdc++/105324)

* Mon Apr 4 2022 David Malcolm <dmalcolm@redhat.com> - 11.2.1-10
- update from releases/gcc-11-branch (#2063255)
- PRs ada/98724, ada/104258, ada/104767, ada/104861, c++/58646, c++/59950,
c++/61611, c++/95036, c++/100468, c++/101030, c++/101095, c++/101371,
c++/101515, c++/101767, c++/102045, c++/102123, c++/102538,
c++/102740, c++/102990, c++/103057, c++/103186, c++/103291,
c++/103299, c++/103337, c++/103711, c++/103769, c++/103968,
c++/104107, c++/104108, c++/104284, c++/104410, c++/104472,
c++/104513, c++/104568, c++/104667, c++/104806, c++/104847,
c++/104944, c++/104994, c++/105035, c++/105061, c/82283, c/84685,
c/104510, c/104711, d/104659, d/105004, debug/104337, debug/104517,
debug/104557, fortran/66193, fortran/99585, fortran/100337,
fortran/103790, fortran/104211, fortran/104311, fortran/104331,
fortran/104430, fortran/104619, fortran/104811, go/100537,
libgomp/104385, libstdc++/101231, libstdc++/102358, libstdc++/103904,
libstdc++/104442, lto/104237, lto/104333, lto/104617,
middle-end/95115, middle-end/99578, middle-end/100464,
middle-end/100680, middle-end/100775, middle-end/100786,
middle-end/104307, middle-end/104402, middle-end/104446,
middle-end/104786, middle-end/104971, middle-end/105032,
preprocessor/104147, rtl-optimization/104544, rtl-optimization/104589,
rtl-optimization/104777, rtl-optimization/104814, sanitizer/102656,
sanitizer/104449, sanitizer/105093, target/79754, target/87496,
target/99708, target/99754, target/100784, target/101324,
target/102140, target/102952, target/102957, target/103307,
target/103627, target/103925, target/104090, target/104208,
target/104219, target/104253, target/104362, target/104448,
target/104451, target/104453, target/104458, target/104462,
target/104469, target/104502, target/104674, target/104681,
target/104688, target/104775, target/104890, target/104910,
target/104923, target/104963, target/104998, target/105000,
target/105052, target/105058, target/105068, testsuite/103556,
testsuite/103586, testsuite/104730, testsuite/104759,
testsuite/105055, tree-optimization/45178, tree-optimization/100834,
tree-optimization/101636, tree-optimization/102819,
tree-optimization/102893, tree-optimization/103169,
tree-optimization/103361, tree-optimization/103489,
tree-optimization/103544, tree-optimization/103596,
tree-optimization/103641, tree-optimization/103864,
tree-optimization/104263, tree-optimization/104288,
tree-optimization/104511, tree-optimization/104601,
tree-optimization/104675, tree-optimization/104782,
tree-optimization/104931, tree-optimization/105094
- fix x86 vector initialization expansion fallback (PR target/105123)
- drop patch 22 (gcc11-libsanitizer-pthread.patch;
upstreamed as r11-9607-ga8dd74bfb921ed)

* Thu Feb 10 2022 Marek Polacek <polacek@redhat.com> 11.2.1-9.4 * Thu Feb 10 2022 Marek Polacek <polacek@redhat.com> 11.2.1-9.4
- add --enable-host-bind-now, use it (#2044917) - add --enable-host-bind-now, use it (#2044917)