aboutsummaryrefslogtreecommitdiff
path: root/packages/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gcc')
-rw-r--r--packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch139
-rw-r--r--packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch114
-rw-r--r--packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch167
-rw-r--r--packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch121
-rw-r--r--packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch194
-rw-r--r--packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch46
-rw-r--r--packages/gcc/14.2.0/chksum8
-rw-r--r--packages/gcc/14.3.0/0000-libtool-leave-framework-alone.patch (renamed from packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch)7
-rw-r--r--packages/gcc/14.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch (renamed from packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch)7
-rw-r--r--packages/gcc/14.3.0/0002-0002-arm-softfloat-libgcc.patch.patch (renamed from packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch)16
-rw-r--r--packages/gcc/14.3.0/0003-0003-libgcc-disable-split-stack-nothreads.patch.patch (renamed from packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch)14
-rw-r--r--packages/gcc/14.3.0/0004-Remove-use-of-include_next-from-c-headers.patch (renamed from packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch)91
-rw-r--r--packages/gcc/14.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch (renamed from packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch)27
-rw-r--r--packages/gcc/14.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch (renamed from packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch)17
-rw-r--r--packages/gcc/14.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch (renamed from packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch)13
-rw-r--r--packages/gcc/14.3.0/0008-Support-picolibc-targets.patch (renamed from packages/gcc/14.2.0/0008-Support-picolibc-targets.patch)11
-rw-r--r--packages/gcc/14.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch (renamed from packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch)16
-rw-r--r--packages/gcc/14.3.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch (renamed from packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch)11
-rw-r--r--packages/gcc/14.3.0/chksum8
-rw-r--r--packages/gcc/14.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch (renamed from packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch)0
-rw-r--r--packages/gcc/14.3.0/version.desc (renamed from packages/gcc/14.2.0/version.desc)0
21 files changed, 176 insertions, 851 deletions
diff --git a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch b/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch
deleted file mode 100644
index 2625c308..00000000
--- a/packages/gcc/14.2.0/0011-aarch64-Fix-invalid-nested-subregs-PR115464.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From cb547fed9177c2a28f376c881facfcf4b64e70a9 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Thu, 13 Jun 2024 12:48:21 +0100
-Subject: [PATCH 11/16] aarch64: Fix invalid nested subregs [PR115464]
-
-The testcase extracts one arm_neon.h vector from a pair (one subreg)
-and then reinterprets the result as an SVE vector (another subreg).
-Each subreg makes sense individually, but we can't fold them together
-into a single subreg: it's 32 bytes -> 16 bytes -> 16*N bytes,
-but the interpretation of 32 bytes -> 16*N bytes depends on
-whether N==1 or N>1.
-
-Since the second subreg makes sense individually, simplify_subreg
-should bail out rather than ICE on it. simplify_gen_subreg will
-then do the same (because it already checks validate_subreg).
-This leaves simplify_gen_subreg returning null, requiring the
-caller to take appropriate action.
-
-I think this is relatively likely to occur elsewhere, so the patch
-adds a helper for forcing a subreg, allowing a temporary pseudo to
-be created where necessary.
-
-I'll follow up by using force_subreg in more places. This patch
-is intended to be a minimal backportable fix for the PR.
-
-gcc/
- PR target/115464
- * simplify-rtx.cc (simplify_context::simplify_subreg): Don't try
- to fold two subregs together if their relationship isn't known
- at compile time.
- * explow.h (force_subreg): Declare.
- * explow.cc (force_subreg): New function.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svset_neonq_impl::expand): Use it instead of simplify_gen_subreg.
-
-gcc/testsuite/
- PR target/115464
- * gcc.target/aarch64/sve/acle/general/pr115464.c: New test.
-
-(cherry picked from commit 0970ff46ba6330fc80e8736fc05b2eaeeae0b6a0)
----
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +-
- gcc/explow.cc | 15 +++++++++++++++
- gcc/explow.h | 2 ++
- gcc/simplify-rtx.cc | 5 +++++
- .../aarch64/sve/acle/general/pr115464.c | 13 +++++++++++++
- 5 files changed, 36 insertions(+), 1 deletion(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index 0d2edf3f19e..c9182594bc1 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1174,7 +1174,7 @@ public:
- Advanced SIMD argument as an SVE vector. */
- if (!BYTES_BIG_ENDIAN
- && is_undef (CALL_EXPR_ARG (e.call_expr, 0)))
-- return simplify_gen_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0);
-+ return force_subreg (mode, e.args[1], GET_MODE (e.args[1]), 0);
-
- rtx_vector_builder builder (VNx16BImode, 16, 2);
- for (unsigned int i = 0; i < 16; i++)
-diff --git a/gcc/explow.cc b/gcc/explow.cc
-index 8e5f6b8e680..f6843398c4b 100644
---- a/gcc/explow.cc
-+++ b/gcc/explow.cc
-@@ -745,6 +745,21 @@ force_reg (machine_mode mode, rtx x)
- return temp;
- }
-
-+/* Like simplify_gen_subreg, but force OP into a new register if the
-+ subreg cannot be formed directly. */
-+
-+rtx
-+force_subreg (machine_mode outermode, rtx op,
-+ machine_mode innermode, poly_uint64 byte)
-+{
-+ rtx x = simplify_gen_subreg (outermode, op, innermode, byte);
-+ if (x)
-+ return x;
-+
-+ op = copy_to_mode_reg (innermode, op);
-+ return simplify_gen_subreg (outermode, op, innermode, byte);
-+}
-+
- /* If X is a memory ref, copy its contents to a new temp reg and return
- that reg. Otherwise, return X. */
-
-diff --git a/gcc/explow.h b/gcc/explow.h
-index 16aa02cfb68..cbd1fcb7eb3 100644
---- a/gcc/explow.h
-+++ b/gcc/explow.h
-@@ -42,6 +42,8 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode);
- Args are mode (in case value is a constant) and the value. */
- extern rtx force_reg (machine_mode, rtx);
-
-+extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64);
-+
- /* Return given rtx, copied into a new temp reg if it was in memory. */
- extern rtx force_not_mem (rtx);
-
-diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc
-index dceaa13333c..729d408aa55 100644
---- a/gcc/simplify-rtx.cc
-+++ b/gcc/simplify-rtx.cc
-@@ -7612,6 +7612,11 @@ simplify_context::simplify_subreg (machine_mode outermode, rtx op,
- poly_uint64 innermostsize = GET_MODE_SIZE (innermostmode);
- rtx newx;
-
-+ /* Make sure that the relationship between the two subregs is
-+ known at compile time. */
-+ if (!ordered_p (outersize, innermostsize))
-+ return NULL_RTX;
-+
- if (outermode == innermostmode
- && known_eq (byte, 0U)
- && known_eq (SUBREG_BYTE (op), 0))
-diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-new file mode 100644
-index 00000000000..d728d1325ed
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464.c
-@@ -0,0 +1,13 @@
-+/* { dg-options "-O2" } */
-+
-+#include <arm_neon.h>
-+#include <arm_sve.h>
-+#include <arm_neon_sve_bridge.h>
-+
-+svuint16_t
-+convolve4_4_x (uint16x8x2_t permute_tbl)
-+{
-+ return svset_neonq_u16 (svundef_u16 (), permute_tbl.val[1]);
-+}
-+
-+/* { dg-final { scan-assembler {\tmov\tz0\.d, z1\.d\n} } } */
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch b/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch
deleted file mode 100644
index bddf3977..00000000
--- a/packages/gcc/14.2.0/0012-aarch64-Use-force_subreg-in-more-places.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 12d860b5b700b5218461a0b9e4a1a3ddb55eb211 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:30 +0100
-Subject: [PATCH 12/16] aarch64: Use force_subreg in more places
-
-This patch makes the aarch64 code use force_subreg instead of
-simplify_gen_subreg in more places. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created).
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-(3) The offset wasn't a simple lowpart or highpart calculation;
- a later patch will deal with those.
-
-gcc/
- * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin):
- Use force_subreg instead of simplify_gen_subreg.
- * config/aarch64/aarch64-simd.md (ctz<mode>2): Likewise.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svget_impl::expand): Likewise.
- (svget_neonq_impl::expand): Likewise.
- * config/aarch64/aarch64-sve-builtins-functions.h
- (multireg_permute::expand): Likewise.
-
-(cherry picked from commit 1474a8eead4ab390e59ee014befa8c40346679f4)
----
- gcc/config/aarch64/aarch64-builtins.cc | 4 ++--
- gcc/config/aarch64/aarch64-simd.md | 4 ++--
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 8 +++-----
- gcc/config/aarch64/aarch64-sve-builtins-functions.h | 6 +++---
- 4 files changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc
-index 75d21de1401..b2e46a073a8 100644
---- a/gcc/config/aarch64/aarch64-builtins.cc
-+++ b/gcc/config/aarch64/aarch64-builtins.cc
-@@ -2510,12 +2510,12 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- rtx temp2 = gen_reg_rtx (DImode);
- temp1 = simplify_gen_subreg (d->mode, op2, quadmode,
- subreg_lowpart_offset (d->mode, quadmode));
-- temp1 = simplify_gen_subreg (V2DImode, temp1, d->mode, 0);
-+ temp1 = force_subreg (V2DImode, temp1, d->mode, 0);
- if (BYTES_BIG_ENDIAN)
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx));
- else
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const1_rtx));
-- op2 = simplify_gen_subreg (d->mode, temp2, GET_MODE (temp2), 0);
-+ op2 = force_subreg (d->mode, temp2, GET_MODE (temp2), 0);
-
- /* And recalculate the index. */
- lane -= nunits / 4;
-diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md
-index 33ab0741e87..5b9efe0b165 100644
---- a/gcc/config/aarch64/aarch64-simd.md
-+++ b/gcc/config/aarch64/aarch64-simd.md
-@@ -412,8 +412,8 @@
- "TARGET_SIMD"
- {
- emit_insn (gen_bswap<mode>2 (operands[0], operands[1]));
-- rtx op0_castsi2qi = simplify_gen_subreg(<VS:VSI2QI>mode, operands[0],
-- <MODE>mode, 0);
-+ rtx op0_castsi2qi = force_subreg (<VS:VSI2QI>mode, operands[0],
-+ <MODE>mode, 0);
- emit_insn (gen_aarch64_rbit<VS:vsi2qi> (op0_castsi2qi, op0_castsi2qi));
- emit_insn (gen_clz<mode>2 (operands[0], operands[0]));
- DONE;
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index c9182594bc1..2c95da79572 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1121,9 +1121,8 @@ public:
- expand (function_expander &e) const override
- {
- /* Fold the access into a subreg rvalue. */
-- return simplify_gen_subreg (e.vector_mode (0), e.args[0],
-- GET_MODE (e.args[0]),
-- INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR);
-+ return force_subreg (e.vector_mode (0), e.args[0], GET_MODE (e.args[0]),
-+ INTVAL (e.args[1]) * BYTES_PER_SVE_VECTOR);
- }
- };
-
-@@ -1157,8 +1156,7 @@ public:
- e.add_fixed_operand (indices);
- return e.generate_insn (icode);
- }
-- return simplify_gen_subreg (e.result_mode (), e.args[0],
-- GET_MODE (e.args[0]), 0);
-+ return force_subreg (e.result_mode (), e.args[0], GET_MODE (e.args[0]), 0);
- }
- };
-
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-functions.h b/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-index 3b8e575e98e..7d06a57ff83 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-functions.h
-@@ -639,9 +639,9 @@ public:
- {
- machine_mode elt_mode = e.vector_mode (0);
- rtx arg = e.args[0];
-- e.args[0] = simplify_gen_subreg (elt_mode, arg, GET_MODE (arg), 0);
-- e.args.safe_push (simplify_gen_subreg (elt_mode, arg, GET_MODE (arg),
-- GET_MODE_SIZE (elt_mode)));
-+ e.args[0] = force_subreg (elt_mode, arg, GET_MODE (arg), 0);
-+ e.args.safe_push (force_subreg (elt_mode, arg, GET_MODE (arg),
-+ GET_MODE_SIZE (elt_mode)));
- }
- return e.use_exact_insn (icode);
- }
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch
deleted file mode 100644
index fd4d9847..00000000
--- a/packages/gcc/14.2.0/0013-aarch64-Add-some-uses-of-force_lowpart_subreg.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From eb49bbb886ef374eddb93e866c9c9f5f314c8014 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:31 +0100
-Subject: [PATCH 13/16] aarch64: Add some uses of force_lowpart_subreg
-
-This patch makes more use of force_lowpart_subreg, similarly
-to the recent patch for force_subreg. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created).
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-gcc/
- PR target/115464
- * config/aarch64/aarch64-builtins.cc (aarch64_expand_fcmla_builtin)
- (aarch64_expand_rwsr_builtin): Use force_lowpart_subreg instead of
- simplify_gen_subreg and lowpart_subreg.
- * config/aarch64/aarch64-sve-builtins-base.cc
- (svset_neonq_impl::expand): Likewise.
- * config/aarch64/aarch64-sve-builtins-sme.cc
- (add_load_store_slice_operand): Likewise.
- * config/aarch64/aarch64.cc (aarch64_sve_reinterpret): Likewise.
- (aarch64_addti_scratch_regs, aarch64_subvti_scratch_regs): Likewise.
-
-gcc/testsuite/
- PR target/115464
- * gcc.target/aarch64/sve/acle/general/pr115464_2.c: New test.
-
-(cherry picked from commit 6bd4fbae45d11795a9a6f54b866308d4d7134def)
----
- gcc/config/aarch64/aarch64-builtins.cc | 11 +++++------
- gcc/config/aarch64/aarch64-sve-builtins-base.cc | 2 +-
- gcc/config/aarch64/aarch64-sve-builtins-sme.cc | 2 +-
- gcc/config/aarch64/aarch64.cc | 14 +++++---------
- .../aarch64/sve/acle/general/pr115464_2.c | 11 +++++++++++
- 5 files changed, 23 insertions(+), 17 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-
-diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc
-index b2e46a073a8..264b9560709 100644
---- a/gcc/config/aarch64/aarch64-builtins.cc
-+++ b/gcc/config/aarch64/aarch64-builtins.cc
-@@ -2497,8 +2497,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- int lane = INTVAL (lane_idx);
-
- if (lane < nunits / 4)
-- op2 = simplify_gen_subreg (d->mode, op2, quadmode,
-- subreg_lowpart_offset (d->mode, quadmode));
-+ op2 = force_lowpart_subreg (d->mode, op2, quadmode);
- else
- {
- /* Select the upper 64 bits, either a V2SF or V4HF, this however
-@@ -2508,8 +2507,7 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode)
- gen_highpart_mode generates code that isn't optimal. */
- rtx temp1 = gen_reg_rtx (d->mode);
- rtx temp2 = gen_reg_rtx (DImode);
-- temp1 = simplify_gen_subreg (d->mode, op2, quadmode,
-- subreg_lowpart_offset (d->mode, quadmode));
-+ temp1 = force_lowpart_subreg (d->mode, op2, quadmode);
- temp1 = force_subreg (V2DImode, temp1, d->mode, 0);
- if (BYTES_BIG_ENDIAN)
- emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx));
-@@ -2754,7 +2752,7 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode)
- case AARCH64_WSR64:
- case AARCH64_WSRF64:
- case AARCH64_WSR128:
-- subreg = lowpart_subreg (sysreg_mode, input_val, mode);
-+ subreg = force_lowpart_subreg (sysreg_mode, input_val, mode);
- break;
- case AARCH64_WSRF:
- subreg = gen_lowpart_SUBREG (SImode, input_val);
-@@ -2789,7 +2787,8 @@ aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode)
- case AARCH64_RSR64:
- case AARCH64_RSRF64:
- case AARCH64_RSR128:
-- return lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)), target, sysreg_mode);
-+ return force_lowpart_subreg (TYPE_MODE (TREE_TYPE (exp)),
-+ target, sysreg_mode);
- case AARCH64_RSRF:
- subreg = gen_lowpart_SUBREG (SImode, target);
- return gen_lowpart_SUBREG (SFmode, subreg);
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-index 2c95da79572..3c970e9c5f8 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
-@@ -1183,7 +1183,7 @@ public:
- if (BYTES_BIG_ENDIAN)
- return e.use_exact_insn (code_for_aarch64_sve_set_neonq (mode));
- insn_code icode = code_for_vcond_mask (mode, mode);
-- e.args[1] = lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1]));
-+ e.args[1] = force_lowpart_subreg (mode, e.args[1], GET_MODE (e.args[1]));
- e.add_output_operand (icode);
- e.add_input_operand (icode, e.args[1]);
- e.add_input_operand (icode, e.args[0]);
-diff --git a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-index f4c91bcbb95..b66b35ae60b 100644
---- a/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-+++ b/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
-@@ -112,7 +112,7 @@ add_load_store_slice_operand (function_expander &e, insn_code icode,
- rtx base = e.args[argno];
- if (e.mode_suffix_id == MODE_vnum)
- {
-- rtx vnum = lowpart_subreg (SImode, e.args[vnum_argno], DImode);
-+ rtx vnum = force_lowpart_subreg (SImode, e.args[vnum_argno], DImode);
- base = simplify_gen_binary (PLUS, SImode, base, vnum);
- }
- e.add_input_operand (icode, base);
-diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
-index 1beec94629d..a064aeecbc0 100644
---- a/gcc/config/aarch64/aarch64.cc
-+++ b/gcc/config/aarch64/aarch64.cc
-@@ -3284,7 +3284,7 @@ aarch64_sve_reinterpret (machine_mode mode, rtx x)
- /* can_change_mode_class must only return true if subregs and svreinterprets
- have the same semantics. */
- if (targetm.can_change_mode_class (GET_MODE (x), mode, FP_REGS))
-- return lowpart_subreg (mode, x, GET_MODE (x));
-+ return force_lowpart_subreg (mode, x, GET_MODE (x));
-
- rtx res = gen_reg_rtx (mode);
- x = force_reg (GET_MODE (x), x);
-@@ -26979,9 +26979,8 @@ aarch64_addti_scratch_regs (rtx op1, rtx op2, rtx *low_dest,
- rtx *high_in2)
- {
- *low_dest = gen_reg_rtx (DImode);
-- *low_in1 = gen_lowpart (DImode, op1);
-- *low_in2 = simplify_gen_subreg (DImode, op2, TImode,
-- subreg_lowpart_offset (DImode, TImode));
-+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode);
-+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode);
- *high_dest = gen_reg_rtx (DImode);
- *high_in1 = gen_highpart (DImode, op1);
- *high_in2 = simplify_gen_subreg (DImode, op2, TImode,
-@@ -27013,11 +27012,8 @@ aarch64_subvti_scratch_regs (rtx op1, rtx op2, rtx *low_dest,
- rtx *high_in2)
- {
- *low_dest = gen_reg_rtx (DImode);
-- *low_in1 = simplify_gen_subreg (DImode, op1, TImode,
-- subreg_lowpart_offset (DImode, TImode));
--
-- *low_in2 = simplify_gen_subreg (DImode, op2, TImode,
-- subreg_lowpart_offset (DImode, TImode));
-+ *low_in1 = force_lowpart_subreg (DImode, op1, TImode);
-+ *low_in2 = force_lowpart_subreg (DImode, op2, TImode);
- *high_dest = gen_reg_rtx (DImode);
-
- *high_in1 = simplify_gen_subreg (DImode, op1, TImode,
-diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-new file mode 100644
-index 00000000000..f561c34f732
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr115464_2.c
-@@ -0,0 +1,11 @@
-+/* { dg-options "-O2" } */
-+
-+#include <arm_neon.h>
-+#include <arm_sve.h>
-+#include <arm_neon_sve_bridge.h>
-+
-+svuint16_t
-+convolve4_4_x (uint16x8x2_t permute_tbl, svuint16_t a)
-+{
-+ return svset_neonq_u16 (a, permute_tbl.val[1]);
-+}
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch b/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch
deleted file mode 100644
index 17fc7b64..00000000
--- a/packages/gcc/14.2.0/0014-Add-force_lowpart_subreg.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 2dcdf9d026ed2e881b0bd8b378ed072e410490fe Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:31 +0100
-Subject: [PATCH 14/16] Add force_lowpart_subreg
-
-optabs had a local function called lowpart_subreg_maybe_copy
-that is very similar to the lowpart version of force_subreg.
-This patch adds a force_lowpart_subreg wrapper around
-force_subreg and uses it in optabs.cc.
-
-The only difference between the old and new functions is that
-the old one asserted success while the new one doesn't.
-It's common not to assert elsewhere when taking subregs;
-normally a null result is enough.
-
-Later patches will make more use of the new function.
-
-gcc/
- * explow.h (force_lowpart_subreg): Declare.
- * explow.cc (force_lowpart_subreg): New function.
- * optabs.cc (lowpart_subreg_maybe_copy): Delete.
- (expand_absneg_bit): Use force_lowpart_subreg instead of
- lowpart_subreg_maybe_copy.
- (expand_copysign_bit): Likewise.
-
-(cherry picked from commit 5f40d1c0cc6ce91ef28d326b8707b3f05e6f239c)
----
- gcc/explow.cc | 14 ++++++++++++++
- gcc/explow.h | 1 +
- gcc/optabs.cc | 24 ++----------------------
- 3 files changed, 17 insertions(+), 22 deletions(-)
-
-diff --git a/gcc/explow.cc b/gcc/explow.cc
-index f6843398c4b..5fdfa81f69b 100644
---- a/gcc/explow.cc
-+++ b/gcc/explow.cc
-@@ -760,6 +760,20 @@ force_subreg (machine_mode outermode, rtx op,
- return simplify_gen_subreg (outermode, op, innermode, byte);
- }
-
-+/* Try to return an rvalue expression for the OUTERMODE lowpart of OP,
-+ which has mode INNERMODE. Allow OP to be forced into a new register
-+ if necessary.
-+
-+ Return null on failure. */
-+
-+rtx
-+force_lowpart_subreg (machine_mode outermode, rtx op,
-+ machine_mode innermode)
-+{
-+ auto byte = subreg_lowpart_offset (outermode, innermode);
-+ return force_subreg (outermode, op, innermode, byte);
-+}
-+
- /* If X is a memory ref, copy its contents to a new temp reg and return
- that reg. Otherwise, return X. */
-
-diff --git a/gcc/explow.h b/gcc/explow.h
-index cbd1fcb7eb3..dd654649b06 100644
---- a/gcc/explow.h
-+++ b/gcc/explow.h
-@@ -43,6 +43,7 @@ extern rtx copy_to_suggested_reg (rtx, rtx, machine_mode);
- extern rtx force_reg (machine_mode, rtx);
-
- extern rtx force_subreg (machine_mode, rtx, machine_mode, poly_uint64);
-+extern rtx force_lowpart_subreg (machine_mode, rtx, machine_mode);
-
- /* Return given rtx, copied into a new temp reg if it was in memory. */
- extern rtx force_not_mem (rtx);
-diff --git a/gcc/optabs.cc b/gcc/optabs.cc
-index ce91f94ed43..804c0dc73ba 100644
---- a/gcc/optabs.cc
-+++ b/gcc/optabs.cc
-@@ -3096,26 +3096,6 @@ expand_ffs (scalar_int_mode mode, rtx op0, rtx target)
- return 0;
- }
-
--/* Extract the OMODE lowpart from VAL, which has IMODE. Under certain
-- conditions, VAL may already be a SUBREG against which we cannot generate
-- a further SUBREG. In this case, we expect forcing the value into a
-- register will work around the situation. */
--
--static rtx
--lowpart_subreg_maybe_copy (machine_mode omode, rtx val,
-- machine_mode imode)
--{
-- rtx ret;
-- ret = lowpart_subreg (omode, val, imode);
-- if (ret == NULL)
-- {
-- val = force_reg (imode, val);
-- ret = lowpart_subreg (omode, val, imode);
-- gcc_assert (ret != NULL);
-- }
-- return ret;
--}
--
- /* Expand a floating point absolute value or negation operation via a
- logical operation on the sign bit. */
-
-@@ -3204,7 +3184,7 @@ expand_absneg_bit (enum rtx_code code, scalar_float_mode mode,
- gen_lowpart (imode, op0),
- immed_wide_int_const (mask, imode),
- gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN);
-- target = lowpart_subreg_maybe_copy (mode, temp, imode);
-+ target = force_lowpart_subreg (mode, temp, imode);
-
- set_dst_reg_note (get_last_insn (), REG_EQUAL,
- gen_rtx_fmt_e (code, mode, copy_rtx (op0)),
-@@ -4043,7 +4023,7 @@ expand_copysign_bit (scalar_float_mode mode, rtx op0, rtx op1, rtx target,
-
- temp = expand_binop (imode, ior_optab, op0, op1,
- gen_lowpart (imode, target), 1, OPTAB_LIB_WIDEN);
-- target = lowpart_subreg_maybe_copy (mode, temp, imode);
-+ target = force_lowpart_subreg (mode, temp, imode);
- }
-
- return target;
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch b/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch
deleted file mode 100644
index 697c8760..00000000
--- a/packages/gcc/14.2.0/0015-Make-more-use-of-force_subreg.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From d02fe5a6bfdfcae086e5374db3f8fd076df9b1a5 Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 18 Jun 2024 12:22:30 +0100
-Subject: [PATCH 15/16] Make more use of force_subreg
-
-This patch makes target-independent code use force_subreg instead
-of simplify_gen_subreg in some places. The criteria were:
-
-(1) The code is obviously specific to expand (where new pseudos
- can be created), or at least would be invalid to call when
- !can_create_pseudo_p () and temporaries are needed.
-
-(2) The value is obviously an rvalue rather than an lvalue.
-
-(3) The offset wasn't a simple lowpart or highpart calculation;
- a later patch will deal with those.
-
-Doing this should reduce the likelihood of bugs like PR115464
-occuring in other situations.
-
-gcc/
- * expmed.cc (store_bit_field_using_insv): Use force_subreg
- instead of simplify_gen_subreg.
- (store_bit_field_1): Likewise.
- (extract_bit_field_as_subreg): Likewise.
- (extract_integral_bit_field): Likewise.
- (emit_store_flag_1): Likewise.
- * expr.cc (convert_move): Likewise.
- (convert_modes): Likewise.
- (emit_group_load_1): Likewise.
- (emit_group_store): Likewise.
- (expand_assignment): Likewise.
-
-(cherry picked from commit d4047da6a070175aae7121c739d1cad6b08ff4b2)
----
- gcc/expmed.cc | 22 ++++++++--------------
- gcc/expr.cc | 27 ++++++++++++---------------
- 2 files changed, 20 insertions(+), 29 deletions(-)
-
-diff --git a/gcc/expmed.cc b/gcc/expmed.cc
-index 19765311b95..bd190722de6 100644
---- a/gcc/expmed.cc
-+++ b/gcc/expmed.cc
-@@ -695,13 +695,7 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0,
- if we must narrow it, be sure we do it correctly. */
-
- if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode))
-- {
-- tmp = simplify_subreg (op_mode, value1, value_mode, 0);
-- if (! tmp)
-- tmp = simplify_gen_subreg (op_mode,
-- force_reg (value_mode, value1),
-- value_mode, 0);
-- }
-+ tmp = force_subreg (op_mode, value1, value_mode, 0);
- else
- {
- tmp = gen_lowpart_if_possible (op_mode, value1);
-@@ -800,7 +794,7 @@ store_bit_field_1 (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum,
- if (known_eq (bitnum, 0U)
- && known_eq (bitsize, GET_MODE_BITSIZE (GET_MODE (op0))))
- {
-- sub = simplify_gen_subreg (GET_MODE (op0), value, fieldmode, 0);
-+ sub = force_subreg (GET_MODE (op0), value, fieldmode, 0);
- if (sub)
- {
- if (reverse)
-@@ -1627,7 +1621,7 @@ extract_bit_field_as_subreg (machine_mode mode, rtx op0,
- && known_eq (bitsize, GET_MODE_BITSIZE (mode))
- && lowpart_bit_field_p (bitnum, bitsize, op0_mode)
- && TRULY_NOOP_TRUNCATION_MODES_P (mode, op0_mode))
-- return simplify_gen_subreg (mode, op0, op0_mode, bytenum);
-+ return force_subreg (mode, op0, op0_mode, bytenum);
- return NULL_RTX;
- }
-
-@@ -1994,11 +1988,11 @@ extract_integral_bit_field (rtx op0, opt_scalar_int_mode op0_mode,
- return convert_extracted_bit_field (target, mode, tmode, unsignedp);
- }
- /* If OP0 is a hard register, copy it to a pseudo before calling
-- simplify_gen_subreg. */
-+ force_subreg. */
- if (REG_P (op0) && HARD_REGISTER_P (op0))
- op0 = copy_to_reg (op0);
-- op0 = simplify_gen_subreg (word_mode, op0, op0_mode.require (),
-- bitnum / BITS_PER_WORD * UNITS_PER_WORD);
-+ op0 = force_subreg (word_mode, op0, op0_mode.require (),
-+ bitnum / BITS_PER_WORD * UNITS_PER_WORD);
- op0_mode = word_mode;
- bitnum %= BITS_PER_WORD;
- }
-@@ -5759,8 +5753,8 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
-
- /* Do a logical OR or AND of the two words and compare the
- result. */
-- op00 = simplify_gen_subreg (word_mode, op0, int_mode, 0);
-- op01 = simplify_gen_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
-+ op00 = force_subreg (word_mode, op0, int_mode, 0);
-+ op01 = force_subreg (word_mode, op0, int_mode, UNITS_PER_WORD);
- tem = expand_binop (word_mode,
- op1 == const0_rtx ? ior_optab : and_optab,
- op00, op01, NULL_RTX, unsignedp,
-diff --git a/gcc/expr.cc b/gcc/expr.cc
-index 9f66d479445..8ffa76b1bb8 100644
---- a/gcc/expr.cc
-+++ b/gcc/expr.cc
-@@ -302,7 +302,7 @@ convert_move (rtx to, rtx from, int unsignedp)
- GET_MODE_BITSIZE (to_mode)));
-
- if (VECTOR_MODE_P (to_mode))
-- from = simplify_gen_subreg (to_mode, from, GET_MODE (from), 0);
-+ from = force_subreg (to_mode, from, GET_MODE (from), 0);
- else
- to = simplify_gen_subreg (from_mode, to, GET_MODE (to), 0);
-
-@@ -936,7 +936,7 @@ convert_modes (machine_mode mode, machine_mode oldmode, rtx x, int unsignedp)
- {
- gcc_assert (known_eq (GET_MODE_BITSIZE (mode),
- GET_MODE_BITSIZE (oldmode)));
-- return simplify_gen_subreg (mode, x, oldmode, 0);
-+ return force_subreg (mode, x, oldmode, 0);
- }
-
- temp = gen_reg_rtx (mode);
-@@ -3076,8 +3076,8 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
- }
- }
- else if (CONSTANT_P (src) && GET_MODE (dst) != BLKmode
-- && XVECLEN (dst, 0) > 1)
-- tmps[i] = simplify_gen_subreg (mode, src, GET_MODE (dst), bytepos);
-+ && XVECLEN (dst, 0) > 1)
-+ tmps[i] = force_subreg (mode, src, GET_MODE (dst), bytepos);
- else if (CONSTANT_P (src))
- {
- if (known_eq (bytelen, ssize))
-@@ -3301,7 +3301,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED,
- if (known_eq (rtx_to_poly_int64 (XEXP (XVECEXP (src, 0, start), 1)),
- bytepos))
- {
-- temp = simplify_gen_subreg (outer, tmps[start], inner, 0);
-+ temp = force_subreg (outer, tmps[start], inner, 0);
- if (temp)
- {
- emit_move_insn (dst, temp);
-@@ -3321,7 +3321,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED,
- finish - 1), 1)),
- bytepos))
- {
-- temp = simplify_gen_subreg (outer, tmps[finish - 1], inner, 0);
-+ temp = force_subreg (outer, tmps[finish - 1], inner, 0);
- if (temp)
- {
- emit_move_insn (dst, temp);
-@@ -6195,11 +6195,9 @@ expand_assignment (tree to, tree from, bool nontemporal)
- to_mode = GET_MODE_INNER (to_mode);
- machine_mode from_mode = GET_MODE_INNER (GET_MODE (result));
- rtx from_real
-- = simplify_gen_subreg (to_mode, XEXP (result, 0),
-- from_mode, 0);
-+ = force_subreg (to_mode, XEXP (result, 0), from_mode, 0);
- rtx from_imag
-- = simplify_gen_subreg (to_mode, XEXP (result, 1),
-- from_mode, 0);
-+ = force_subreg (to_mode, XEXP (result, 1), from_mode, 0);
- if (!from_real || !from_imag)
- goto concat_store_slow;
- emit_move_insn (XEXP (to_rtx, 0), from_real);
-@@ -6215,8 +6213,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
- if (MEM_P (result))
- from_rtx = change_address (result, to_mode, NULL_RTX);
- else
-- from_rtx
-- = simplify_gen_subreg (to_mode, result, from_mode, 0);
-+ from_rtx = force_subreg (to_mode, result, from_mode, 0);
- if (from_rtx)
- {
- emit_move_insn (XEXP (to_rtx, 0),
-@@ -6228,10 +6225,10 @@ expand_assignment (tree to, tree from, bool nontemporal)
- {
- to_mode = GET_MODE_INNER (to_mode);
- rtx from_real
-- = simplify_gen_subreg (to_mode, result, from_mode, 0);
-+ = force_subreg (to_mode, result, from_mode, 0);
- rtx from_imag
-- = simplify_gen_subreg (to_mode, result, from_mode,
-- GET_MODE_SIZE (to_mode));
-+ = force_subreg (to_mode, result, from_mode,
-+ GET_MODE_SIZE (to_mode));
- if (!from_real || !from_imag)
- goto concat_store_slow;
- emit_move_insn (XEXP (to_rtx, 0), from_real);
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch b/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch
deleted file mode 100644
index 629cfbda..00000000
--- a/packages/gcc/14.2.0/0016-Revert-one-of-the-force_subreg-changes.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 5468439a1f987b7d801c6c76d6c989e57af8916a Mon Sep 17 00:00:00 2001
-From: Richard Sandiford <richard.sandiford@arm.com>
-Date: Tue, 25 Jun 2024 09:41:21 +0100
-Subject: [PATCH 16/16] Revert one of the force_subreg changes
-
-One of the changes in g:d4047da6a070175aae7121c739d1cad6b08ff4b2
-caused a regression in ft32-elf; see:
-
- https://gcc.gnu.org/pipermail/gcc-patches/2024-June/655418.html
-
-for details. This change was different from the others in that the
-original call was to simplify_subreg rather than simplify_lowpart_subreg.
-The old code would therefore go on to do the force_reg for more cases
-than the new code would.
-
-gcc/
- * expmed.cc (store_bit_field_using_insv): Revert earlier change
- to use force_subreg instead of simplify_gen_subreg.
-
-(cherry picked from commit b694bf417cdd7d0a4d78e9927bab6bc202b7df6c)
----
- gcc/expmed.cc | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/gcc/expmed.cc b/gcc/expmed.cc
-index bd190722de6..85ec2614a3f 100644
---- a/gcc/expmed.cc
-+++ b/gcc/expmed.cc
-@@ -695,7 +695,13 @@ store_bit_field_using_insv (const extraction_insn *insv, rtx op0,
- if we must narrow it, be sure we do it correctly. */
-
- if (GET_MODE_SIZE (value_mode) < GET_MODE_SIZE (op_mode))
-- tmp = force_subreg (op_mode, value1, value_mode, 0);
-+ {
-+ tmp = simplify_subreg (op_mode, value1, value_mode, 0);
-+ if (! tmp)
-+ tmp = simplify_gen_subreg (op_mode,
-+ force_reg (value_mode, value1),
-+ value_mode, 0);
-+ }
- else
- {
- tmp = gen_lowpart_if_possible (op_mode, value1);
---
-2.44.2
-
diff --git a/packages/gcc/14.2.0/chksum b/packages/gcc/14.2.0/chksum
deleted file mode 100644
index 40000f5c..00000000
--- a/packages/gcc/14.2.0/chksum
+++ /dev/null
@@ -1,8 +0,0 @@
-md5 gcc-14.2.0.tar.xz 2268420ba02dc01821960e274711bde0
-sha1 gcc-14.2.0.tar.xz d91ecc3d20ce6298bd95f9b09cc51dc6d3c73ae3
-sha256 gcc-14.2.0.tar.xz a7b39bc69cbf9e25826c5a60ab26477001f7c08d85cec04bc0e29cabed6f3cc9
-sha512 gcc-14.2.0.tar.xz 932bdef0cda94bacedf452ab17f103c0cb511ff2cec55e9112fc0328cbf1d803b42595728ea7b200e0a057c03e85626f937012e49a7515bc5dd256b2bf4bc396
-md5 gcc-14.2.0.tar.gz b89ddcdaf5c1b6214abad40d9761a6ba
-sha1 gcc-14.2.0.tar.gz d4d09500ace1dc9ab69f6c4c791de012da8607ed
-sha256 gcc-14.2.0.tar.gz 7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293
-sha512 gcc-14.2.0.tar.gz d6828a5702ff4b667cc3e1e7e9f180191041b7efb68ffdc54248a42aa1799f41db6743acfe9ab74ea59977ba06f425fcf943a9fe3a77f9db706fc6bdbd657c1a
diff --git a/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch b/packages/gcc/14.3.0/0000-libtool-leave-framework-alone.patch
index 1a86e415..a5f6f66b 100644
--- a/packages/gcc/14.2.0/0000-libtool-leave-framework-alone.patch
+++ b/packages/gcc/14.3.0/0000-libtool-leave-framework-alone.patch
@@ -1,10 +1,12 @@
---
- libtool-ldflags | 5 +++++
+ libtool-ldflags | 5 +++++
1 file changed, 5 insertions(+)
+diff --git a/libtool-ldflags b/libtool-ldflags
+index 5de9e2978d40..0dde24bedfc5 100755
--- a/libtool-ldflags
+++ b/libtool-ldflags
-@@ -36,6 +36,11 @@
+@@ -36,6 +36,11 @@ prev_arg=
for arg
do
case $arg in
@@ -16,3 +18,4 @@
-f*|--*|-static-lib*|-shared-lib*|-B*)
# Libtool does not ascribe any special meaning options
# that begin with -f or with a double-dash. So, it will
+
diff --git a/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch b/packages/gcc/14.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
index 5f9a07a2..181d6332 100644
--- a/packages/gcc/14.2.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
+++ b/packages/gcc/14.3.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
@@ -1,10 +1,12 @@
---
- libcc1/connection.cc | 1 +
+ libcc1/connection.cc | 1 +
1 file changed, 1 insertion(+)
+diff --git a/libcc1/connection.cc b/libcc1/connection.cc
+index 175e7a176b9e..60e37c2ce0c5 100644
--- a/libcc1/connection.cc
+++ b/libcc1/connection.cc
-@@ -21,6 +21,7 @@
+@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. If not see
#include <string>
#include <unistd.h>
#include <sys/types.h>
@@ -12,3 +14,4 @@
#include <string.h>
#include <errno.h>
#include "marshall.hh"
+
diff --git a/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch b/packages/gcc/14.3.0/0002-0002-arm-softfloat-libgcc.patch.patch
index d9800365..d2a7dfce 100644
--- a/packages/gcc/14.2.0/0002-arm-softfloat-libgcc.patch
+++ b/packages/gcc/14.3.0/0002-0002-arm-softfloat-libgcc.patch.patch
@@ -1,8 +1,15 @@
+From c18ad43db5808bf40b9ceb877df7bcd438b59cdd Mon Sep 17 00:00:00 2001
+From: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Date: Sun, 25 May 2025 10:34:00 +1200
+Subject: [PATCH] 0002-arm-softfloat-libgcc.patch
+
---
- gcc/config/arm/linux-elf.h | 2 +-
- libgcc/config/arm/t-linux | 7 ++++++-
+ gcc/config/arm/linux-elf.h | 2 +-
+ libgcc/config/arm/t-linux | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
+diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
+index ccae8abf6f6c..fcd180dff243 100644
--- a/gcc/config/arm/linux-elf.h
+++ b/gcc/config/arm/linux-elf.h
@@ -58,7 +58,7 @@
@@ -14,6 +21,8 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+diff --git a/libgcc/config/arm/t-linux b/libgcc/config/arm/t-linux
+index 3d520decafbc..e7bc042d4e40 100644
--- a/libgcc/config/arm/t-linux
+++ b/libgcc/config/arm/t-linux
@@ -1,6 +1,11 @@
@@ -29,3 +38,6 @@
# Just for these, we omit the frame pointer since it makes such a big
# difference.
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch b/packages/gcc/14.3.0/0003-0003-libgcc-disable-split-stack-nothreads.patch.patch
index df91a9ff..2fea1b63 100644
--- a/packages/gcc/14.2.0/0003-libgcc-disable-split-stack-nothreads.patch
+++ b/packages/gcc/14.3.0/0003-0003-libgcc-disable-split-stack-nothreads.patch.patch
@@ -1,11 +1,14 @@
-disable split-stack for non-thread builds
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+From 9b74f600cb69cf86c9a8e29e8cea775effd780c2 Mon Sep 17 00:00:00 2001
+From: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Date: Sun, 25 May 2025 10:34:01 +1200
+Subject: [PATCH] 0003-libgcc-disable-split-stack-nothreads.patch
---
- libgcc/config/t-stack | 2 ++
+ libgcc/config/t-stack | 2 ++
1 file changed, 2 insertions(+)
+diff --git a/libgcc/config/t-stack b/libgcc/config/t-stack
+index cc0366b4cd81..f3f97e86d60e 100644
--- a/libgcc/config/t-stack
+++ b/libgcc/config/t-stack
@@ -1,4 +1,6 @@
@@ -15,3 +18,6 @@ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+ifeq ($(enable_threads),yes)
LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
+endif
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch b/packages/gcc/14.3.0/0004-Remove-use-of-include_next-from-c-headers.patch
index 429d3bd3..2dbe28a5 100644
--- a/packages/gcc/14.2.0/0004-Remove-use-of-include_next-from-c-headers.patch
+++ b/packages/gcc/14.3.0/0004-Remove-use-of-include_next-from-c-headers.patch
@@ -1,4 +1,4 @@
-From fc4aaba8a3b8fe7815e103cc20f2a36d5de7e8ab Mon Sep 17 00:00:00 2001
+From a9766b7fd69768ec614f838edcb6a38fd7b3cb0d Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Sun, 24 Jan 2021 14:20:33 -0800
Subject: [PATCH] Remove use of include_next from c++ headers
@@ -16,29 +16,31 @@ libraries, and is not necessary in a well constructed toolchain.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- libstdc++-v3/include/bits/std_abs.h | 4 ++--
- libstdc++-v3/include/c/cassert | 2 +-
- libstdc++-v3/include/c/cctype | 2 +-
- libstdc++-v3/include/c/cerrno | 2 +-
- libstdc++-v3/include/c/cfloat | 2 +-
- libstdc++-v3/include/c/climits | 2 +-
- libstdc++-v3/include/c/clocale | 2 +-
- libstdc++-v3/include/c/cmath | 2 +-
- libstdc++-v3/include/c/csetjmp | 2 +-
- libstdc++-v3/include/c/csignal | 2 +-
- libstdc++-v3/include/c/cstdarg | 2 +-
- libstdc++-v3/include/c/cstddef | 2 +-
- libstdc++-v3/include/c/cstdio | 2 +-
- libstdc++-v3/include/c/cstdlib | 2 +-
- libstdc++-v3/include/c/cstring | 2 +-
- libstdc++-v3/include/c/ctime | 2 +-
- libstdc++-v3/include/c/cuchar | 2 +-
- libstdc++-v3/include/c/cwchar | 2 +-
- libstdc++-v3/include/c/cwctype | 2 +-
- libstdc++-v3/include/c_global/cmath | 2 +-
- libstdc++-v3/include/c_global/cstdlib | 2 +-
+ libstdc++-v3/include/bits/std_abs.h | 4 ++--
+ libstdc++-v3/include/c/cassert | 2 +-
+ libstdc++-v3/include/c/cctype | 2 +-
+ libstdc++-v3/include/c/cerrno | 2 +-
+ libstdc++-v3/include/c/cfloat | 2 +-
+ libstdc++-v3/include/c/climits | 2 +-
+ libstdc++-v3/include/c/clocale | 2 +-
+ libstdc++-v3/include/c/cmath | 2 +-
+ libstdc++-v3/include/c/csetjmp | 2 +-
+ libstdc++-v3/include/c/csignal | 2 +-
+ libstdc++-v3/include/c/cstdarg | 2 +-
+ libstdc++-v3/include/c/cstddef | 2 +-
+ libstdc++-v3/include/c/cstdio | 2 +-
+ libstdc++-v3/include/c/cstdlib | 2 +-
+ libstdc++-v3/include/c/cstring | 2 +-
+ libstdc++-v3/include/c/ctime | 2 +-
+ libstdc++-v3/include/c/cuchar | 2 +-
+ libstdc++-v3/include/c/cwchar | 2 +-
+ libstdc++-v3/include/c/cwctype | 2 +-
+ libstdc++-v3/include/c_global/cmath | 2 +-
+ libstdc++-v3/include/c_global/cstdlib | 2 +-
21 files changed, 22 insertions(+), 22 deletions(-)
+diff --git a/libstdc++-v3/include/bits/std_abs.h b/libstdc++-v3/include/bits/std_abs.h
+index 48d44160baba..d30c44e51896 100644
--- a/libstdc++-v3/include/bits/std_abs.h
+++ b/libstdc++-v3/include/bits/std_abs.h
@@ -35,9 +35,9 @@
@@ -53,6 +55,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#endif
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+diff --git a/libstdc++-v3/include/c/cassert b/libstdc++-v3/include/c/cassert
+index 5cd11fff9ece..01d8c7fa5fcd 100644
--- a/libstdc++-v3/include/c/cassert
+++ b/libstdc++-v3/include/c/cassert
@@ -31,4 +31,4 @@
@@ -61,6 +65,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#include <bits/c++config.h>
-#include_next <assert.h>
+#include <assert.h>
+diff --git a/libstdc++-v3/include/c/cctype b/libstdc++-v3/include/c/cctype
+index c6f650394357..1540a3259454 100644
--- a/libstdc++-v3/include/c/cctype
+++ b/libstdc++-v3/include/c/cctype
@@ -31,6 +31,6 @@
@@ -71,6 +77,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <ctype.h>
#endif
+diff --git a/libstdc++-v3/include/c/cerrno b/libstdc++-v3/include/c/cerrno
+index 9e47b182d25c..250ea5d7744a 100644
--- a/libstdc++-v3/include/c/cerrno
+++ b/libstdc++-v3/include/c/cerrno
@@ -41,7 +41,7 @@
@@ -82,6 +90,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
#ifndef errno
+diff --git a/libstdc++-v3/include/c/cfloat b/libstdc++-v3/include/c/cfloat
+index 81d9772ed9f6..660440fc810b 100644
--- a/libstdc++-v3/include/c/cfloat
+++ b/libstdc++-v3/include/c/cfloat
@@ -32,6 +32,6 @@
@@ -92,6 +102,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <float.h>
#endif
+diff --git a/libstdc++-v3/include/c/climits b/libstdc++-v3/include/c/climits
+index 255bed411259..919e1ec4855d 100644
--- a/libstdc++-v3/include/c/climits
+++ b/libstdc++-v3/include/c/climits
@@ -32,6 +32,6 @@
@@ -102,6 +114,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <limits.h>
#endif
+diff --git a/libstdc++-v3/include/c/clocale b/libstdc++-v3/include/c/clocale
+index 4258df1958b6..95357d40ca1b 100644
--- a/libstdc++-v3/include/c/clocale
+++ b/libstdc++-v3/include/c/clocale
@@ -31,6 +31,6 @@
@@ -112,6 +126,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <locale.h>
#endif
+diff --git a/libstdc++-v3/include/c/cmath b/libstdc++-v3/include/c/cmath
+index 43020eee9d29..619031ba8e4a 100644
--- a/libstdc++-v3/include/c/cmath
+++ b/libstdc++-v3/include/c/cmath
@@ -33,7 +33,7 @@
@@ -123,6 +139,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
// Get rid of those macros defined in <math.h> in lieu of real functions.
#undef abs
+diff --git a/libstdc++-v3/include/c/csetjmp b/libstdc++-v3/include/c/csetjmp
+index 4a5b0334590f..4a7744ba1c7e 100644
--- a/libstdc++-v3/include/c/csetjmp
+++ b/libstdc++-v3/include/c/csetjmp
@@ -31,7 +31,7 @@
@@ -134,6 +152,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
// Get rid of those macros defined in <setjmp.h> in lieu of real functions.
#undef longjmp
+diff --git a/libstdc++-v3/include/c/csignal b/libstdc++-v3/include/c/csignal
+index 040b48368f94..afe91f7c7866 100644
--- a/libstdc++-v3/include/c/csignal
+++ b/libstdc++-v3/include/c/csignal
@@ -31,6 +31,6 @@
@@ -144,6 +164,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <signal.h>
#endif
+diff --git a/libstdc++-v3/include/c/cstdarg b/libstdc++-v3/include/c/cstdarg
+index 5d97e043da84..568dc07994f6 100644
--- a/libstdc++-v3/include/c/cstdarg
+++ b/libstdc++-v3/include/c/cstdarg
@@ -32,6 +32,6 @@
@@ -154,6 +176,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <stdarg.h>
#endif
+diff --git a/libstdc++-v3/include/c/cstddef b/libstdc++-v3/include/c/cstddef
+index 4fd889a1dffc..28997b73a647 100644
--- a/libstdc++-v3/include/c/cstddef
+++ b/libstdc++-v3/include/c/cstddef
@@ -35,6 +35,6 @@
@@ -164,6 +188,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <stddef.h>
#endif
+diff --git a/libstdc++-v3/include/c/cstdio b/libstdc++-v3/include/c/cstdio
+index 01293054d501..6632e5b09586 100644
--- a/libstdc++-v3/include/c/cstdio
+++ b/libstdc++-v3/include/c/cstdio
@@ -31,7 +31,7 @@
@@ -175,6 +201,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
// Get rid of those macros defined in <stdio.h> in lieu of real functions.
#undef clearerr
+diff --git a/libstdc++-v3/include/c/cstdlib b/libstdc++-v3/include/c/cstdlib
+index f5707f8a8ce4..4156882e09aa 100644
--- a/libstdc++-v3/include/c/cstdlib
+++ b/libstdc++-v3/include/c/cstdlib
@@ -31,6 +31,6 @@
@@ -185,6 +213,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <stdlib.h>
#endif
+diff --git a/libstdc++-v3/include/c/cstring b/libstdc++-v3/include/c/cstring
+index 0082080fcab0..209ccd112faa 100644
--- a/libstdc++-v3/include/c/cstring
+++ b/libstdc++-v3/include/c/cstring
@@ -31,6 +31,6 @@
@@ -195,6 +225,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <string.h>
#endif
+diff --git a/libstdc++-v3/include/c/ctime b/libstdc++-v3/include/c/ctime
+index 5476ff7da399..33c61aa08d73 100644
--- a/libstdc++-v3/include/c/ctime
+++ b/libstdc++-v3/include/c/ctime
@@ -31,6 +31,6 @@
@@ -205,6 +237,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+#include <time.h>
#endif
+diff --git a/libstdc++-v3/include/c/cuchar b/libstdc++-v3/include/c/cuchar
+index 430d1ff50ba1..7b2c9d738269 100644
--- a/libstdc++-v3/include/c/cuchar
+++ b/libstdc++-v3/include/c/cuchar
@@ -39,7 +39,7 @@
@@ -216,6 +250,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#endif
#endif // C++11
+diff --git a/libstdc++-v3/include/c/cwchar b/libstdc++-v3/include/c/cwchar
+index 7a62eb74abbf..c1857099ef12 100644
--- a/libstdc++-v3/include/c/cwchar
+++ b/libstdc++-v3/include/c/cwchar
@@ -36,7 +36,7 @@
@@ -227,6 +263,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#endif
// Need to do a bit of trickery here with mbstate_t as char_traits
+diff --git a/libstdc++-v3/include/c/cwctype b/libstdc++-v3/include/c/cwctype
+index 011ceadbb1b4..6a67549ea4bd 100644
--- a/libstdc++-v3/include/c/cwctype
+++ b/libstdc++-v3/include/c/cwctype
@@ -34,7 +34,7 @@
@@ -238,6 +276,8 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#endif
#endif
+diff --git a/libstdc++-v3/include/c_global/cmath b/libstdc++-v3/include/c_global/cmath
+index 114b0693151e..bea5665a293d 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -44,7 +44,7 @@
@@ -249,9 +289,11 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
#include <bits/std_abs.h>
+diff --git a/libstdc++-v3/include/c_global/cstdlib b/libstdc++-v3/include/c_global/cstdlib
+index 7bb11f5b788a..5a6a28898221 100644
--- a/libstdc++-v3/include/c_global/cstdlib
+++ b/libstdc++-v3/include/c_global/cstdlib
-@@ -76,7 +76,7 @@
+@@ -76,7 +76,7 @@ namespace std
// Need to ensure this finds the C library's <stdlib.h> not a libstdc++
// wrapper that might already be installed later in the include search path.
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
@@ -260,3 +302,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
#include <bits/std_abs.h>
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch b/packages/gcc/14.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
index 9a7a2a85..b55b8a1b 100644
--- a/packages/gcc/14.2.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
+++ b/packages/gcc/14.3.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
@@ -1,4 +1,4 @@
-From ffb10db6fa080e4c225e16928aec052d4c0baa95 Mon Sep 17 00:00:00 2001
+From d87c4fb35576c61b75c0a003f9bbccea8321b3a3 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Fri, 2 Sep 2022 23:07:05 -0700
Subject: [PATCH] Allow default libc to be specified to configure
@@ -15,13 +15,15 @@ and stop.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++--------
- gcc/configure.ac | 4 ++++
+ gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++--------
+ gcc/configure.ac | 4 ++++
2 files changed, 44 insertions(+), 8 deletions(-)
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index a3566f5c77da..f993b4b26c4c 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
-@@ -695,6 +695,8 @@
+@@ -695,6 +695,8 @@ esac
# Common C libraries.
tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
@@ -30,7 +32,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
# 32-bit x86 processors supported by --with-arch=. Each processor
# MUST be separated by exactly one space.
x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
-@@ -911,16 +913,16 @@
+@@ -911,16 +913,16 @@ case ${target} in
esac
case $target in
*-*-*android*)
@@ -51,7 +53,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
;;
esac
# Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
-@@ -1035,7 +1037,8 @@
+@@ -1035,7 +1037,8 @@ case ${target} in
case ${enable_threads} in
"" | yes | posix) thread_file='posix' ;;
esac
@@ -61,7 +63,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
;;
*-*-rdos*)
use_gcc_stdint=wrap
-@@ -1721,13 +1724,13 @@
+@@ -1721,13 +1724,13 @@ csky-*-*)
case ${target} in
csky-*-linux-gnu*)
@@ -77,7 +79,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
default_use_cxa_atexit=no
;;
*)
-@@ -3125,7 +3128,7 @@
+@@ -3125,7 +3128,7 @@ powerpc*-wrs-vxworks7r*)
tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
tmake_file="${tmake_file} rs6000/t-vxworks"
@@ -86,7 +88,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
extra_objs="$extra_objs linux.o rs6000-linux.o"
;;
powerpc-wrs-vxworks*)
-@@ -6079,3 +6082,32 @@
+@@ -6079,3 +6082,32 @@ i[34567]86-*-* | x86_64-*-*)
fi
;;
esac
@@ -119,9 +121,11 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+ tm_defines="$tm_defines DEFAULT_LIBC=$default_libc"
+ ;;
+esac
+diff --git a/gcc/configure.ac b/gcc/configure.ac
+index cb743b5a875a..5213bf64a6d4 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -2546,6 +2546,10 @@
+@@ -2561,6 +2561,10 @@ if { { test x$host != x$target && test "x$with_sysroot" = x ; } ||
fi
AC_SUBST(inhibit_libc)
@@ -132,3 +136,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
# When building gcc with a cross-compiler, we need to adjust things so
# that the generator programs are still built with the native compiler.
# Also, we cannot run fixincludes.
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch b/packages/gcc/14.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
index 955ff3ca..e262eb58 100644
--- a/packages/gcc/14.2.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
+++ b/packages/gcc/14.3.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
@@ -1,4 +1,4 @@
-From fd6aa8e67aec185b0d84ba9551fd38c90c9d6d8a Mon Sep 17 00:00:00 2001
+From 2663eed443ff0cb465f28c0598713dc6ca83feeb Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Fri, 26 Aug 2022 14:30:03 -0700
Subject: [PATCH] driver: Extend 'getenv' function to allow default value
@@ -34,13 +34,15 @@ existing usage.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- gcc/doc/invoke.texi | 18 +++++++++++-------
- gcc/gcc.cc | 10 +++++++++-
+ gcc/doc/invoke.texi | 18 +++++++++++-------
+ gcc/gcc.cc | 10 +++++++++-
2 files changed, 20 insertions(+), 8 deletions(-)
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 64728fead512..3f487db6cad7 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
-@@ -36963,17 +36963,21 @@
+@@ -37065,17 +37065,21 @@ The following built-in spec functions are provided:
@table @code
@item @code{getenv}
@@ -69,9 +71,11 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
@item @code{if-exists}
The @code{if-exists} spec function takes one argument, an absolute
+diff --git a/gcc/gcc.cc b/gcc/gcc.cc
+index fc9f1f545dc8..8e6e25d935be 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
-@@ -10300,12 +10300,20 @@
+@@ -10318,12 +10318,20 @@ getenv_spec_function (int argc, const char **argv)
char *ptr;
size_t len;
@@ -93,3 +97,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
/* If the variable isn't defined and this is allowed, craft our expected
return value. Assume variable names used in specs strings don't contain
any active spec character so don't need escaping. */
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch b/packages/gcc/14.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
index 5443630b..cfc81557 100644
--- a/packages/gcc/14.2.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
+++ b/packages/gcc/14.3.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
@@ -1,16 +1,18 @@
-From be5d482de0099012288e617af0583772fac21714 Mon Sep 17 00:00:00 2001
+From d4b4b5159d270bb4bfec71847d041b4b2d71759d Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Tue, 23 Aug 2022 22:12:06 -0700
Subject: [PATCH] Add newlib and picolibc as default C library choices
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- gcc/config.gcc | 11 ++++++++++-
+ gcc/config.gcc | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index f993b4b26c4c..bcf23f9d0a42 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
-@@ -693,7 +693,7 @@
+@@ -693,7 +693,7 @@ case ${target} in
esac
# Common C libraries.
@@ -19,7 +21,7 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
default_libc=""
-@@ -6096,6 +6096,15 @@
+@@ -6096,6 +6096,15 @@ bionic)
musl)
default_libc=LIBC_MUSL
;;
@@ -35,3 +37,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
"")
;;
*)
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch b/packages/gcc/14.3.0/0008-Support-picolibc-targets.patch
index 987baf39..20914c37 100644
--- a/packages/gcc/14.2.0/0008-Support-picolibc-targets.patch
+++ b/packages/gcc/14.3.0/0008-Support-picolibc-targets.patch
@@ -1,4 +1,4 @@
-From c9c22fe9ce182e48282e2bf0a8830381d3c55dd4 Mon Sep 17 00:00:00 2001
+From a3fb1dcf2b7146c1ae6014c655957a775e1ea6b0 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Sun, 12 Feb 2023 14:23:32 -0800
Subject: [PATCH] Support picolibc targets
@@ -8,12 +8,14 @@ the newlib-based logic for other configuration items.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- gcc/config.gcc | 11 +++++++++++
+ gcc/config.gcc | 11 +++++++++++
1 file changed, 11 insertions(+)
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index bcf23f9d0a42..f770d21e5d4c 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
-@@ -1168,6 +1168,17 @@
+@@ -1168,6 +1168,17 @@ case ${target} in
;;
esac
;;
@@ -31,3 +33,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
*-*-elf|arc*-*-elf*)
# Assume that newlib is being used and so __cxa_atexit is provided.
default_use_cxa_atexit=yes
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch b/packages/gcc/14.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
index 57a22f98..9e94f94e 100644
--- a/packages/gcc/14.2.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
+++ b/packages/gcc/14.3.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
@@ -1,4 +1,4 @@
-From ef327a7c2a36b63e8a372bef88e3700460b51c34 Mon Sep 17 00:00:00 2001
+From 905b18c94f5792a2e08caa41576f9cb5d1dad526 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Sat, 11 Feb 2023 23:07:08 -0800
Subject: [PATCH] gcc: Allow g++ to work differently from gcc
@@ -13,14 +13,16 @@ check for IN_GPP to have alternate behavior.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
- gcc/cp/Make-lang.in | 7 ++++++-
- gcc/gpp.cc | 21 +++++++++++++++++++++
+ gcc/cp/Make-lang.in | 7 ++++++-
+ gcc/gpp.cc | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 gcc/gpp.cc
+diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
+index f153891a1ef6..ec980d95e3b4 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
-@@ -77,7 +77,12 @@
+@@ -77,7 +77,12 @@ CFLAGS-cp/module.o += -DMODULE_VERSION='$(shell cat s-cp-module-version)'
endif
# Create the compiler driver for g++.
@@ -34,6 +36,9 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS)
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
$(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
+diff --git a/gcc/gpp.cc b/gcc/gpp.cc
+new file mode 100644
+index 000000000000..3cd7b45e8086
--- /dev/null
+++ b/gcc/gpp.cc
@@ -0,0 +1,21 @@
@@ -58,3 +63,6 @@ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+#define IN_GPP
+#include "gcc.cc"
+--
+2.49.0
+
diff --git a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch b/packages/gcc/14.3.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch
index c0a32648..46c6788e 100644
--- a/packages/gcc/14.2.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch
+++ b/packages/gcc/14.3.0/0010-libgcc-Exclude-UCLIBC-from-GLIBC-thread-check.patch
@@ -1,4 +1,4 @@
-From d901175d36221fbf79a0eb8305823b88243b829c Mon Sep 17 00:00:00 2001
+From e1c06be963b4048902ee5c19d589b7619d3c5fa2 Mon Sep 17 00:00:00 2001
From: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date: Thu, 7 Sep 2023 19:26:49 +1200
Subject: [PATCH] libgcc: Exclude UCLIBC from GLIBC thread check
@@ -14,12 +14,14 @@ usage so it picks the intended pthread_cancel().
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---
- libgcc/gthr-posix.h | 2 +-
+ libgcc/gthr-posix.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+diff --git a/libgcc/gthr-posix.h b/libgcc/gthr-posix.h
+index 82e8f9ffcf66..e63d02fb8dcc 100644
--- a/libgcc/gthr-posix.h
+++ b/libgcc/gthr-posix.h
-@@ -246,7 +246,7 @@
+@@ -246,7 +246,7 @@ __gthread_active_p (void)
library does not provide pthread_cancel, so we do use pthread_create
there (and interceptor libraries lose). */
@@ -28,3 +30,6 @@ Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
__gthrw2(__gthrw_(__pthread_key_create),
__pthread_key_create,
pthread_key_create)
+--
+2.49.0
+
diff --git a/packages/gcc/14.3.0/chksum b/packages/gcc/14.3.0/chksum
new file mode 100644
index 00000000..2db0b8d1
--- /dev/null
+++ b/packages/gcc/14.3.0/chksum
@@ -0,0 +1,8 @@
+md5 gcc-14.3.0.tar.xz 2e2f25966bbb5321bf6a3beafcd241b5
+sha1 gcc-14.3.0.tar.xz e33b9ffb8baf1528d72a8a26a1ee678928ca9121
+sha256 gcc-14.3.0.tar.xz e0dc77297625631ac8e50fa92fffefe899a4eb702592da5c32ef04e2293aca3a
+sha512 gcc-14.3.0.tar.xz cb4e3259640721bbd275c723fe4df53d12f9b1673afb3db274c22c6aa457865dccf2d6ea20b4fd4c591f6152e6d4b87516c402015900f06ce9d43af66d3b7a93
+md5 gcc-14.3.0.tar.gz 1ba56546c0274ea75457bf5c00c61506
+sha1 gcc-14.3.0.tar.gz 1866e57122db9f31ba3117175bf50d46d1146eb8
+sha256 gcc-14.3.0.tar.gz ace8b8b0dbfe6abfc22f821cb093e195aa5498b7ccf7cd23e4424b9f14afed22
+sha512 gcc-14.3.0.tar.gz b2c3ab244f809217eb9d71c2b4e7f7e1d9d8b0c8ab3d4c737939075c1fef528cb4629d1cbec717a4839612f3123ca0ebf81af8398fa42a5bf88f99e12bf223b4
diff --git a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch b/packages/gcc/14.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
index 487a28c3..487a28c3 100644
--- a/packages/gcc/14.2.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
+++ b/packages/gcc/14.3.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
diff --git a/packages/gcc/14.2.0/version.desc b/packages/gcc/14.3.0/version.desc
index e69de29b..e69de29b 100644
--- a/packages/gcc/14.2.0/version.desc
+++ b/packages/gcc/14.3.0/version.desc