@@ -200,7 +200,7 @@ RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <r
RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER:pn-gcc-source-15.2.0 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-source-15.3.0 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gcompat = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
RECIPE_MAINTAINER:pn-gcr = "Unassigned <unassigned@yoctoproject.org>"
similarity index 92%
rename from meta/recipes-devtools/gcc/gcc-15.2.inc
rename to meta/recipes-devtools/gcc/gcc-15.3.inc
@@ -2,11 +2,11 @@ require gcc-common.inc
# Third digit in PV should be incremented after a minor release
-PV = "15.2.0"
+PV = "15.3.0"
# BINV should be incremented to a revision after a minor gcc release
-BINV = "15.2.0"
+BINV = "15.3.0"
FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
@@ -44,7 +44,7 @@ LIC_FILES_CHKSUM = "\
RELEASE ?= "${PV}"
BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
SOURCEDIR ?= "gcc-${PV}"
-SRC_URI[sha256sum] = "438fd996826b0c82485a29da03a72d71d6e3541a83ec702df4271f6fe025d24e"
+SRC_URI[sha256sum] = "fa59c1beef8995f27c4d71c1df227587189315d3e6faff1bb4306e61b0c530eb"
SRC_URI = "${BASEURI} \
file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
@@ -71,12 +71,9 @@ SRC_URI = "${BASEURI} \
file://0022-libatomic-Do-not-enforce-march-on-aarch64.patch \
file://0023-Fix-install-path-of-linux64.h.patch \
file://0024-Avoid-hardcoded-build-paths-into-ppc-libgcc.patch \
- file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
- file://0026-fix-pr90579-testcases.patch \
- file://0027-gcc15-pr122394.patch \
file://0028-fix-gcc-libitm-false-postives-01.patch \
file://0028-fix-gcc-libitm-false-postives-02.patch \
- file://0028-libcody-Make-it-buildable-by-C-11-to-C-26.patch \
+ file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
file://0001-mapper-localhost-might-not-be-known.patch \
"
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross-canadian_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross-canadian_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-cross_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-cross_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-crosssdk_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-crosssdk_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-runtime_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-runtime_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-sanitizers_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-sanitizers_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc-source_15.2.bb
rename to meta/recipes-devtools/gcc/gcc-source_15.3.bb
deleted file mode 100644
@@ -1,40 +0,0 @@
-From 679e24f5a751663998ff7202149a749e0f7251f9 Mon Sep 17 00:00:00 2001
-From: Harish Sadineni <Harish.Sadineni@windriver.com>
-Date: Sun, 10 Aug 2025 20:28:00 +0800
-Subject: [PATCH] testsuite: i386: Fix gcc.target/i386/pr90579.c when PIE is
- enabled [PR118885]
-
-When gcc build with --enable-deafult-pie the following tests
-were getting failed:
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+40
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+32
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+24
- FAIL: gcc.target/i386/pr90579.c scan-assembler vaddsd\tr\\+16
-
- PR target/118885
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/i386/pr90579.c: add -fno-pie to dg-options
- to fix tests when PIE is enabled.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=679e24f5a751663998ff7202149a749e0f7251f9]
-
-Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
----
- gcc/testsuite/gcc.target/i386/pr90579.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr90579.c b/gcc/testsuite/gcc.target/i386/pr90579.c
-index ab48a44063c..19081ec9fdf 100644
---- a/gcc/testsuite/gcc.target/i386/pr90579.c
-+++ b/gcc/testsuite/gcc.target/i386/pr90579.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -mavx2 -mfpmath=sse" } */
-+/* { dg-options "-O3 -mavx2 -mfpmath=sse -fno-pie" } */
-
- extern double r[6];
- extern double a[];
-2.49.0
deleted file mode 100644
@@ -1,88 +0,0 @@
-From e55dcff97708a4937dc4d8736b8b3074ebbff6f3 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Mon, 27 Oct 2025 17:43:17 +0100
-Subject: phiopt: Fix up DEBUG_EXPR_DECL creation in spaceship_replacement
- [PR122394]
-
-The following testcase ICEs in gcc 15 (and is at least latent in 12-14 too),
-because the DEBUG_EXPR_DECL has incorrect mode. It has
-TREE_TYPE (orig_use_lhs) type, but TYPE_MODE (type) rather than
-TYPE_MODE (TREE_TYPE (orig_use_lhs)) where the two types are sometimes
-the same, but sometimes different (same if !has_cast_debug_uses, different
-otherwise).
-
-Though, there wouldn't be the this issue if it used the proper API to create
-the DEBUG_EXPR_DECL which takes care of everything. This is the sole
-spot that doesn't use that API.
-
-Doesn't affect the trunk because the code has been removed and replaced with
-different stuff after the libstdc++ ABI change in r16-3474.
-Before r15-5557 the mode has been always wrong because this was done only
-for has_cast_debug_uses. And the bug has been introduced with r12-5490.
-
-Enough archeology, while it could be fixed by changing the second
-SET_DECL_MODE argument, I think it is better to use build_debug_expr_decl.
-
-2025-10-27 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/122394
- * tree-ssa-phiopt.cc (spaceship_replacement): Use
- build_debug_expr_decl instead of manually building DEBUG_EXPR_DECL
- and getting SET_DECL_MODE wrong.
-
- * g++.dg/opt/pr122394.C: New test.
-
-Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=e55dcff97708a4937dc4d8736b8b3074ebbff6f3]
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- gcc/testsuite/g++.dg/opt/pr122394.C | 20 ++++++++++++++++++++
- gcc/tree-ssa-phiopt.cc | 6 ++----
- 2 files changed, 22 insertions(+), 4 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/opt/pr122394.C
-
-diff --git a/gcc/testsuite/g++.dg/opt/pr122394.C b/gcc/testsuite/g++.dg/opt/pr122394.C
-new file mode 100644
-index 000000000000..1f84bebd74c2
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/opt/pr122394.C
-@@ -0,0 +1,20 @@
-+// PR tree-optimization/122394
-+// { dg-do compile { target c++23 } }
-+// { dg-options "-O1 -g" }
-+
-+#include <compare>
-+
-+struct A {
-+ friend auto operator<=> (A, A) = default;
-+ double a;
-+};
-+void foo ();
-+A b, c;
-+
-+void
-+bar ()
-+{
-+ bool d = c >= b;
-+ if (d)
-+ foo ();
-+}
-diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
-index aaebae6b38c0..3e0ad9d3bb09 100644
---- a/gcc/tree-ssa-phiopt.cc
-+++ b/gcc/tree-ssa-phiopt.cc
-@@ -2995,10 +2995,8 @@ spaceship_replacement (basic_block cond_bb, basic_block middle_bb,
- if (has_cast_debug_uses
- || (HONOR_NANS (TREE_TYPE (lhs1)) && !is_cast))
- {
-- tree temp3 = make_node (DEBUG_EXPR_DECL);
-- DECL_ARTIFICIAL (temp3) = 1;
-- TREE_TYPE (temp3) = TREE_TYPE (orig_use_lhs);
-- SET_DECL_MODE (temp3, TYPE_MODE (type));
-+ tree temp3
-+ = build_debug_expr_decl (TREE_TYPE (orig_use_lhs));
- if (has_cast_debug_uses)
- t = fold_convert (TREE_TYPE (temp3), temp2);
- else
-cgit
-
deleted file mode 100644
@@ -1,257 +0,0 @@
-From 0ffe3c9af4e5d5468df742512b6e930fe7039230 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Fri, 21 Nov 2025 16:25:58 +0100
-Subject: [PATCH] libcody: Make it buildable by C++11 to C++26
-
-The following builds with -std=c++11 and c++14 and c++17 and c++20 and c++23
-and c++26.
-
-I see the u8 string literals are mixed e.g. with strerror, so in
--fexec-charset=IBM1047 there will still be garbage, so am not 100% sure if
-the u8 literals everywhere are worth it either.
-
-2025-11-21 Jakub Jelinek <jakub@redhat.com>
-
- * cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
- char in argument type.
- (MessageBuffer::Space): Revert 2025-11-15 change.
- (MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
- with char8_t const * type of first argument.
- (Packet::Packet): Similarly for first argument.
- * client.cc (CommunicationError, Client::ProcessResponse,
- Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
- IncludeTranslateResponse): Cast u8 string literals to (const char *)
- where needed.
- * server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
-
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-Upstream-Status: Backport [07a767c7a50d1daae8ef7d4aba73fe53ad40c0b7]
----
- libcody/client.cc | 36 +++++++++++++++++++-----------------
- libcody/cody.hh | 22 ++++++++++++++++++++++
- libcody/server.cc | 28 ++++++++++++++--------------
- 3 files changed, 55 insertions(+), 31 deletions(-)
-
-diff --git a/libcody/client.cc b/libcody/client.cc
-index ae69d190cb77..147fecdbe500 100644
---- a/libcody/client.cc
-+++ b/libcody/client.cc
-@@ -97,7 +97,7 @@ int Client::CommunicateWithServer ()
-
- static Packet CommunicationError (int err)
- {
-- std::string e {u8"communication error:"};
-+ std::string e {(const char *) u8"communication error:"};
- e.append (strerror (err));
-
- return Packet (Client::PC_ERROR, std::move (e));
-@@ -110,33 +110,34 @@ Packet Client::ProcessResponse (std::vector<std::string> &words,
- {
- if (e == EINVAL)
- {
-- std::string msg (u8"malformed string '");
-+ std::string msg ((const char *) u8"malformed string '");
- msg.append (words[0]);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- return Packet (Client::PC_ERROR, std::move (msg));
- }
- else
-- return Packet (Client::PC_ERROR, u8"missing response");
-+ return Packet (Client::PC_ERROR, (const char *) u8"missing response");
- }
-
- Assert (!words.empty ());
-- if (words[0] == u8"ERROR")
-+ if (words[0] == (const char *) u8"ERROR")
- return Packet (Client::PC_ERROR,
-- words.size () == 2 ? words[1]: u8"malformed error response");
-+ words.size () == 2 ? words[1]
-+ : (const char *) u8"malformed error response");
-
- if (isLast && !read.IsAtEnd ())
- return Packet (Client::PC_ERROR,
-- std::string (u8"unexpected extra response"));
-+ std::string ((const char *) u8"unexpected extra response"));
-
- Assert (code < Detail::RC_HWM);
- Packet result (responseTable[code] (words));
- result.SetRequest (code);
- if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
- {
-- std::string msg {u8"malformed response '"};
-+ std::string msg {(const char *) u8"malformed response '"};
-
- read.LexedLine (msg);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- result.GetString () = std::move (msg);
- }
- else if (result.GetCode () == Client::PC_CONNECT)
-@@ -199,7 +200,7 @@ Packet Client::Connect (char const *agent, char const *ident,
- size_t alen, size_t ilen)
- {
- write.BeginLine ();
-- write.AppendWord (u8"HELLO");
-+ write.AppendWord ((const char *) u8"HELLO");
- write.AppendInteger (Version);
- write.AppendWord (agent, true, alen);
- write.AppendWord (ident, true, ilen);
-@@ -211,7 +212,8 @@ Packet Client::Connect (char const *agent, char const *ident,
- // HELLO $version $agent [$flags]
- Packet ConnectResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () == 4))
-+ if (words[0] == (const char *) u8"HELLO"
-+ && (words.size () == 3 || words.size () == 4))
- {
- char *eptr;
- unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
-@@ -247,7 +249,7 @@ Packet Client::ModuleRepo ()
- // PATHNAME $dir | ERROR
- Packet PathnameResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"PATHNAME" && words.size () == 2)
-+ if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
- return Packet (Client::PC_PATHNAME, std::move (words[1]));
-
- return Packet (Client::PC_ERROR, u8"");
-@@ -256,7 +258,7 @@ Packet PathnameResponse (std::vector<std::string> &words)
- // OK or ERROR
- Packet OKResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"OK")
-+ if (words[0] == (const char *) u8"OK")
- return Packet (Client::PC_OK);
- else
- return Packet (Client::PC_ERROR,
-@@ -319,11 +321,11 @@ Packet Client::IncludeTranslate (char const *include, Flags flags, size_t ilen)
- // PATHNAME $cmifile
- Packet IncludeTranslateResponse (std::vector<std::string> &words)
- {
-- if (words[0] == u8"BOOL" && words.size () == 2)
-+ if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
- {
-- if (words[1] == u8"FALSE")
-- return Packet (Client::PC_BOOL, 0);
-- else if (words[1] == u8"TRUE")
-+ if (words[1] == (const char *) u8"FALSE")
-+ return Packet (Client::PC_BOOL);
-+ else if (words[1] == (const char *) u8"TRUE")
- return Packet (Client::PC_BOOL, 1);
- else
- return Packet (Client::PC_ERROR, u8"");
-diff --git a/libcody/cody.hh b/libcody/cody.hh
-index 789ce9e70b75..93bce93aa94d 100644
---- a/libcody/cody.hh
-+++ b/libcody/cody.hh
-@@ -47,12 +47,21 @@ namespace Detail {
-
- // C++11 doesn't have utf8 character literals :(
-
-+#if __cpp_char8_t >= 201811
-+template<unsigned I>
-+constexpr char S2C (char8_t const (&s)[I])
-+{
-+ static_assert (I == 2, "only single octet strings may be converted");
-+ return s[0];
-+}
-+#else
- template<unsigned I>
- constexpr char S2C (char const (&s)[I])
- {
- static_assert (I == 2, "only single octet strings may be converted");
- return s[0];
- }
-+#endif
-
- /// Internal buffering class. Used to concatenate outgoing messages
- /// and Lex incoming ones.
-@@ -123,6 +132,13 @@ public:
- Space ();
- Append (str, maybe_quote, len);
- }
-+#if __cpp_char8_t >= 201811
-+ void AppendWord (char8_t const *str, bool maybe_quote = false,
-+ size_t len = ~size_t (0))
-+ {
-+ AppendWord ((const char *) str, maybe_quote, len);
-+ }
-+#endif
- /// Add a word as with AppendWord
- /// @param str the string to append
- /// @param maybe_quote string might need quoting, as for Append
-@@ -264,6 +280,12 @@ public:
- : string (s), cat (STRING), code (c)
- {
- }
-+#if __cpp_char8_t >= 201811
-+ Packet (unsigned c, const char8_t *s)
-+ : string ((const char *) s), cat (STRING), code (c)
-+ {
-+ }
-+#endif
- Packet (unsigned c, std::vector<std::string> &&v)
- : vector (std::move (v)), cat (VECTOR), code (c)
- {
-diff --git a/libcody/server.cc b/libcody/server.cc
-index e2fa069bb933..c18469fae843 100644
---- a/libcody/server.cc
-+++ b/libcody/server.cc
-@@ -36,12 +36,12 @@ static RequestPair
- const requestTable[Detail::RC_HWM] =
- {
- // Same order as enum RequestCode
-- RequestPair {u8"HELLO", nullptr},
-- RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
-- RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
-- RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
-- RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
-- RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
-+ RequestPair {(const char *) u8"HELLO", nullptr},
-+ RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
-+ RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
-+ RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
-+ RequestPair {(const char *) u8"MODULE-COMPILED", ModuleCompiledRequest},
-+ RequestPair {(const char *) u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
- };
- }
-
-@@ -135,21 +135,21 @@ void Server::ProcessRequests (void)
- std::string msg;
-
- if (err > 0)
-- msg = u8"error processing '";
-+ msg = (const char *) u8"error processing '";
- else if (ix >= Detail::RC_HWM)
-- msg = u8"unrecognized '";
-+ msg = (const char *) u8"unrecognized '";
- else if (IsConnected () && ix == Detail::RC_CONNECT)
-- msg = u8"already connected '";
-+ msg = (const char *) u8"already connected '";
- else if (!IsConnected () && ix != Detail::RC_CONNECT)
-- msg = u8"not connected '";
-+ msg = (const char *) u8"not connected '";
- else
-- msg = u8"malformed '";
-+ msg = (const char *) u8"malformed '";
-
- read.LexedLine (msg);
-- msg.append (u8"'");
-+ msg.append ((const char *) u8"'");
- if (err > 0)
- {
-- msg.append (u8" ");
-+ msg.append ((const char *) u8" ");
- msg.append (strerror (err));
- }
- resolver->ErrorResponse (this, std::move (msg));
-@@ -176,7 +176,7 @@ Resolver *ConnectRequest (Server *s, Resolver *r,
- return nullptr;
-
- if (words.size () == 3)
-- words.emplace_back (u8"");
-+ words.emplace_back ((const char *) u8"");
- unsigned version = ParseUnsigned (words[1]);
- if (version == ~0u)
- return nullptr;
similarity index 100%
rename from meta/recipes-devtools/gcc/gcc_15.2.bb
rename to meta/recipes-devtools/gcc/gcc_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc-initial_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc-initial_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgcc_15.2.bb
rename to meta/recipes-devtools/gcc/libgcc_15.3.bb
similarity index 100%
rename from meta/recipes-devtools/gcc/libgfortran_15.2.bb
rename to meta/recipes-devtools/gcc/libgfortran_15.3.bb