diff mbox series

[1/6] package/gcc: remove special arc version

Message ID 20231231172538.1279608-2-wbx@openadk.org
State Superseded
Headers show
Series rework arc architecture support | expand

Commit Message

Waldemar Brodkorb Dec. 31, 2023, 5:25 p.m. UTC
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 package/gcc/Config.in.host                    |   9 -
 .../0001-arc-Refurbish-adc-sbc-patterns.patch | 243 ------------------
 ...er-Remove-cyclades-from-libsanitizer.patch | 121 ---------
 ...-machine-names-in-__has_include-.-PR.patch | 124 ---------
 .../0100-uclibc-conf.patch                    |  29 ---
 package/gcc/gcc.hash                          |   2 -
 package/gcc/gcc.mk                            |   5 -
 7 files changed, 533 deletions(-)
 delete mode 100644 package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
 delete mode 100644 package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
 delete mode 100644 package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
 delete mode 100644 package/gcc/arc-2020.09-release/0100-uclibc-conf.patch

Comments

Yann E. MORIN Dec. 31, 2023, 8:02 p.m. UTC | #1
Waldemar, All,

On 2023-12-31 18:25 +0100, Waldemar Brodkorb spake thusly:
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>

Thanks for working on this; we discussed that with Thomas the other day,
and we concluded that indeed that would be a good idea to get rid of
that special version now.

However, your commit log is empty. It should instead explain the reasons
why dropping that special version is now a good thing.

It is very importaant that this information be recorded in the commit
log, because we may (will!) need to refer to it in the future, when we
then wonder why that was good idea.

That applies to the other components as well, of course: binutils and
gdb.

Regards,
Yann E. MORIN.

> ---
>  package/gcc/Config.in.host                    |   9 -
>  .../0001-arc-Refurbish-adc-sbc-patterns.patch | 243 ------------------
>  ...er-Remove-cyclades-from-libsanitizer.patch | 121 ---------
>  ...-machine-names-in-__has_include-.-PR.patch | 124 ---------
>  .../0100-uclibc-conf.patch                    |  29 ---
>  package/gcc/gcc.hash                          |   2 -
>  package/gcc/gcc.mk                            |   5 -
>  7 files changed, 533 deletions(-)
>  delete mode 100644 package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> 
> diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
> index fd721088ec..db6f378d6a 100644
> --- a/package/gcc/Config.in.host
> +++ b/package/gcc/Config.in.host
> @@ -2,19 +2,11 @@ comment "GCC Options"
>  
>  choice
>  	prompt "GCC compiler Version"
> -	default BR2_GCC_VERSION_ARC if BR2_GCC_VERSION_4_8_ARC # legacy
> -	default BR2_GCC_VERSION_ARC if BR2_arc
>  	default BR2_GCC_VERSION_POWERPC_SPE if BR2_POWERPC_CPU_HAS_SPE
>  	default BR2_GCC_VERSION_12_X
>  	help
>  	  Select the version of gcc you wish to use.
>  
> -config BR2_GCC_VERSION_ARC
> -	bool "gcc arc (10.x)"
> -	# Only supported architecture
> -	depends on BR2_arc
> -	select BR2_TOOLCHAIN_GCC_AT_LEAST_10
> -
>  config BR2_GCC_VERSION_POWERPC_SPE
>  	bool "gcc powerpc spe"
>  	# powerpc spe support has been deprecated since gcc 8.x.
> @@ -81,7 +73,6 @@ config BR2_GCC_VERSION
>  	default "11.4.0"    if BR2_GCC_VERSION_11_X
>  	default "12.3.0"    if BR2_GCC_VERSION_12_X
>  	default "13.2.0"    if BR2_GCC_VERSION_13_X
> -	default "arc-2020.09-release" if BR2_GCC_VERSION_ARC
>  
>  config BR2_EXTRA_GCC_CONFIG_OPTIONS
>  	string "Additional gcc options"
> diff --git a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch b/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
> deleted file mode 100644
> index 3292b26a4e..0000000000
> --- a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
> +++ /dev/null
> @@ -1,243 +0,0 @@
> -From b92c22b144d063c4436a6693045ceb57d344c495 Mon Sep 17 00:00:00 2001
> -From: Claudiu Zissulescu <claziss@synopsys.com>
> -Date: Wed, 11 Nov 2020 12:31:10 +0200
> -Subject: [PATCH] arc: Refurbish adc/sbc patterns
> -
> -The adc/sbc patterns were unecessary spliting, remove that and
> -associated functions.
> -
> -gcc/ChangeLog:
> -
> -2020-10-11  Claudiu Zissulescu  <claziss@synopsys.com>
> -
> -	* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
> -	it.
> -	(arc_sets_cc_p): Likewise.
> -	(arc_need_delay): Likewise.
> -	* config/arc/arc.c (arc_sets_cc_p): Likewise.
> -	(arc_need_delay): Likewise.
> -	(arc_scheduling_not_expected): Likewise.
> -	* config/arc/arc.md: Convert adc/sbc patterns to simple
> -	instruction definitions.
> -
> -Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
> -
> -Downloaded from upstream commit
> -https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/b92c22b144d063c4436a6693045ceb57d344c495
> -
> -Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> ----
> - gcc/config/arc/arc-protos.h |  3 --
> - gcc/config/arc/arc.c        | 53 ---------------------
> - gcc/config/arc/arc.md       | 95 +++++++++++--------------------------
> - 3 files changed, 29 insertions(+), 122 deletions(-)
> -
> -diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
> -index c72d78e3b9e..de4cf47c818 100644
> ---- a/gcc/config/arc/arc-protos.h
> -+++ b/gcc/config/arc/arc-protos.h
> -@@ -90,10 +90,7 @@ extern void split_subsi (rtx *);
> - extern void arc_split_move (rtx *);
> - extern const char *arc_short_long (rtx_insn *insn, const char *, const char *);
> - extern rtx arc_regno_use_in (unsigned int, rtx);
> --extern bool arc_scheduling_not_expected (void);
> --extern bool arc_sets_cc_p (rtx_insn *insn);
> - extern int arc_label_align (rtx_insn *label);
> --extern bool arc_need_delay (rtx_insn *insn);
> - extern bool arc_text_label (rtx_insn *insn);
> - 
> - extern bool arc_short_comparison_p (rtx, int);
> -diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> -index 5a7b0cb6696..c3ee9181f93 100644
> ---- a/gcc/config/arc/arc.c
> -+++ b/gcc/config/arc/arc.c
> -@@ -10341,59 +10341,6 @@ arc_attr_type (rtx_insn *insn)
> -   return get_attr_type (insn);
> - }
> - 
> --/* Return true if insn sets the condition codes.  */
> --
> --bool
> --arc_sets_cc_p (rtx_insn *insn)
> --{
> --  if (NONJUMP_INSN_P (insn))
> --    if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (PATTERN (insn)))
> --      insn = seq->insn (seq->len () - 1);
> --  return arc_attr_type (insn) == TYPE_COMPARE;
> --}
> --
> --/* Return true if INSN is an instruction with a delay slot we may want
> --   to fill.  */
> --
> --bool
> --arc_need_delay (rtx_insn *insn)
> --{
> --  rtx_insn *next;
> --
> --  if (!flag_delayed_branch)
> --    return false;
> --  /* The return at the end of a function needs a delay slot.  */
> --  if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
> --      && (!(next = next_active_insn (insn))
> --	  || ((!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) != SEQUENCE)
> --	      && arc_attr_type (next) == TYPE_RETURN))
> --      && (!TARGET_PAD_RETURN
> --	  || (prev_active_insn (insn)
> --	      && prev_active_insn (prev_active_insn (insn))
> --	      && prev_active_insn (prev_active_insn (prev_active_insn (insn))))))
> --    return true;
> --  if (NONJUMP_INSN_P (insn)
> --      ? (GET_CODE (PATTERN (insn)) == USE
> --	 || GET_CODE (PATTERN (insn)) == CLOBBER
> --	 || GET_CODE (PATTERN (insn)) == SEQUENCE)
> --      : JUMP_P (insn)
> --      ? (GET_CODE (PATTERN (insn)) == ADDR_VEC
> --	 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
> --      : !CALL_P (insn))
> --    return false;
> --  return num_delay_slots (insn) != 0;
> --}
> --
> --/* Return true if the scheduling pass(es) has/have already run,
> --   i.e. where possible, we should try to mitigate high latencies
> --   by different instruction selection.  */
> --
> --bool
> --arc_scheduling_not_expected (void)
> --{
> --  return cfun->machine->arc_reorg_started;
> --}
> --
> - /* Code has a minimum p2 alignment of 1, which we must restore after
> -    an ADDR_DIFF_VEC.  */
> - 
> -diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> -index f91adbc0d94..c635b69ddd5 100644
> ---- a/gcc/config/arc/arc.md
> -+++ b/gcc/config/arc/arc.md
> -@@ -2847,43 +2847,25 @@ archs4x, archs4xd"
> -    (set_attr "type" "compare")
> -    (set_attr "length" "4,4,8")])
> - 
> --; w/c/c comes first (rather than w/0/C_0) to prevent the middle-end
> --; needlessly prioritizing the matching constraint.
> --; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional
> --; execution is used where possible.
> --(define_insn_and_split "adc"
> --  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
> --	(plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REG) (const_int 0))
> --			  (match_operand:SI 1 "nonmemory_operand"
> --							 "%c,0,c,0,cCal"))
> --		 (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
> -+(define_insn "adc"
> -+  [(set (match_operand:SI 0 "register_operand"    "=r,  r,r,r,  r,r")
> -+	(plus:SI
> -+	 (plus:SI
> -+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0))
> -+	  (match_operand:SI 1 "nonmemory_operand" "%r,  0,r,0,Cal,r"))
> -+	 (match_operand:SI 2 "nonmemory_operand"   "r,C_0,L,I,  r,Cal")))]
> -   "register_operand (operands[1], SImode)
> -    || register_operand (operands[2], SImode)"
> -   "@
> --	adc %0,%1,%2
> --	add.cs %0,%1,1
> --	adc %0,%1,%2
> --	adc %0,%1,%2
> --	adc %0,%1,%2"
> --  ; if we have a bad schedule after sched2, split.
> --  "reload_completed
> --   && !optimize_size && (!TARGET_ARC600_FAMILY)
> --   && arc_scheduling_not_expected ()
> --   && arc_sets_cc_p (prev_nonnote_insn (insn))
> --   /* If next comes a return or other insn that needs a delay slot,
> --      expect the adc to get into the delay slot.  */
> --   && next_nonnote_insn (insn)
> --   && !arc_need_delay (next_nonnote_insn (insn))
> --   /* Restore operands before emitting.  */
> --   && (extract_insn_cached (insn), 1)"
> --  [(set (match_dup 0) (match_dup 3))
> --   (cond_exec
> --     (ltu (reg:CC_C CC_REG) (const_int 0))
> --     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1))))]
> --  "operands[3] = simplify_gen_binary (PLUS, SImode, operands[1], operands[2]);"
> -+    adc\\t%0,%1,%2
> -+    add.cs\\t%0,%1,1
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2"
> -   [(set_attr "cond" "use")
> -    (set_attr "type" "cc_arith")
> --   (set_attr "length" "4,4,4,4,8")])
> -+   (set_attr "length" "4,4,4,4,8,8")])
> - 
> - ; combiner-splitter cmp / scc -> cmp / adc
> - (define_split
> -@@ -3015,7 +2997,7 @@ archs4x, archs4xd"
> -       DONE;
> -     }
> -   emit_insn (gen_sub_f (l0, l1, l2));
> --  emit_insn (gen_sbc (h0, h1, h2, gen_rtx_REG (CCmode, CC_REG)));
> -+  emit_insn (gen_sbc (h0, h1, h2));
> -   DONE;
> -   ")
> - 
> -@@ -3030,44 +3012,25 @@ archs4x, archs4xd"
> -    (set_attr "type" "cc_arith")
> -    (set_attr "length" "4")])
> - 
> --; w/c/c comes first (rather than Rcw/0/C_0) to prevent the middle-end
> --; needlessly prioritizing the matching constraint.
> --; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional execution
> --; is used where possible.
> --(define_insn_and_split "sbc"
> --  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
> --	(minus:SI (minus:SI (match_operand:SI 1 "nonmemory_operand"
> --						"c,0,c,0,cCal")
> --			    (ltu:SI (match_operand:CC_C 3 "cc_use_register")
> --				    (const_int 0)))
> --		  (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
> -+(define_insn "sbc"
> -+  [(set (match_operand:SI 0 "dest_reg_operand"   "=r,r,r,r,r,r")
> -+	(minus:SI
> -+	 (minus:SI
> -+	  (match_operand:SI 1 "nonmemory_operand" "r,  0,r,0,  r,Cal")
> -+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0)))
> -+	 (match_operand:SI 2 "nonmemory_operand"  "r,C_0,L,I,Cal,r")))]
> -   "register_operand (operands[1], SImode)
> -    || register_operand (operands[2], SImode)"
> -   "@
> --	sbc %0,%1,%2
> --	sub.cs %0,%1,1
> --	sbc %0,%1,%2
> --	sbc %0,%1,%2
> --	sbc %0,%1,%2"
> --  ; if we have a bad schedule after sched2, split.
> --  "reload_completed
> --   && !optimize_size && (!TARGET_ARC600_FAMILY)
> --   && arc_scheduling_not_expected ()
> --   && arc_sets_cc_p (prev_nonnote_insn (insn))
> --   /* If next comes a return or other insn that needs a delay slot,
> --      expect the adc to get into the delay slot.  */
> --   && next_nonnote_insn (insn)
> --   && !arc_need_delay (next_nonnote_insn (insn))
> --   /* Restore operands before emitting.  */
> --   && (extract_insn_cached (insn), 1)"
> --  [(set (match_dup 0) (match_dup 4))
> --   (cond_exec
> --     (ltu (reg:CC_C CC_REG) (const_int 0))
> --     (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1))))]
> --  "operands[4] = simplify_gen_binary (MINUS, SImode, operands[1], operands[2]);"
> -+    sbc\\t%0,%1,%2
> -+    sub.cs\\t%0,%1,1
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2"
> -   [(set_attr "cond" "use")
> -    (set_attr "type" "cc_arith")
> --   (set_attr "length" "4,4,4,4,8")])
> -+   (set_attr "length" "4,4,4,4,8,8")])
> - 
> - (define_insn "sub_f"
> -   [(set (reg:CC CC_REG)
> diff --git a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch b/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
> deleted file mode 100644
> index 051d4db341..0000000000
> --- a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
> +++ /dev/null
> @@ -1,121 +0,0 @@
> -From 1557c3d919623a95c2aa090d3018c31401f63f88 Mon Sep 17 00:00:00 2001
> -From: Tamar Christina <tamar.christina@arm.com>
> -Date: Fri, 21 May 2021 12:16:56 +0100
> -Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
> -
> -The Linux kernel has removed the interface to cyclades from
> -the latest kernel headers[1] due to them being orphaned for the
> -past 13 years.
> -
> -libsanitizer uses this header when compiling against glibc, but
> -glibcs itself doesn't seem to have any references to cyclades.
> -
> -Further more it seems that the driver is broken in the kernel and
> -the firmware doesn't seem to be available anymore.
> -
> -As such since this is breaking the build of libsanitizer (and so the
> -GCC bootstrap[2]) I propose to remove this.
> -
> -[1] https://lkml.org/lkml/2021/3/2/153
> -[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
> -
> -libsanitizer/ChangeLog:
> -
> -	PR sanitizer/100379
> -	* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
> -	llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
> -	* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
> -	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
> ----
> - .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------
> - .../sanitizer_platform_limits_posix.cpp               | 11 -----------
> - .../sanitizer_platform_limits_posix.h                 | 10 ----------
> - 3 files changed, 30 deletions(-)
> -
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -index 490a04b2181..42e43a04441 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -@@ -366,15 +366,6 @@ static void ioctl_table_fill() {
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> -   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
> --  _(CYGETDEFTHRESH, WRITE, sizeof(int));
> --  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
> --  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
> --  _(CYGETTHRESH, WRITE, sizeof(int));
> --  _(CYGETTIMEOUT, WRITE, sizeof(int));
> --  _(CYSETDEFTHRESH, NONE, 0);
> --  _(CYSETDEFTIMEOUT, NONE, 0);
> --  _(CYSETTHRESH, NONE, 0);
> --  _(CYSETTIMEOUT, NONE, 0);
> -   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
> -   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
> -   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -index aa845df4dde..badf6a401cc 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -@@ -130,7 +130,6 @@ typedef struct user_fpregs elf_fpregset_t;
> - # include <sys/procfs.h>
> - #endif
> - #include <sys/user.h>
> --#include <linux/cyclades.h>
> - #include <linux/if_eql.h>
> - #include <linux/if_plip.h>
> - #include <linux/lp.h>
> -@@ -443,7 +442,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> -   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
> --  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
> - #if EV_VERSION > (0x010000)
> -   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
> - #else
> -@@ -809,15 +807,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
> - #endif // SANITIZER_LINUX
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> --  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
> --  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
> --  unsigned IOCTL_CYGETMON = CYGETMON;
> --  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
> --  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
> --  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
> --  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
> --  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
> --  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
> -   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
> -   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
> -   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -index d82fd5e4005..dc6423bc297 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -@@ -974,7 +974,6 @@ extern unsigned struct_vt_mode_sz;
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> - extern unsigned struct_ax25_parms_struct_sz;
> --extern unsigned struct_cyclades_monitor_sz;
> - extern unsigned struct_input_keymap_entry_sz;
> - extern unsigned struct_ipx_config_data_sz;
> - extern unsigned struct_kbdiacrs_sz;
> -@@ -1319,15 +1318,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;
> - #endif  // SANITIZER_LINUX
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> --extern unsigned IOCTL_CYGETDEFTHRESH;
> --extern unsigned IOCTL_CYGETDEFTIMEOUT;
> --extern unsigned IOCTL_CYGETMON;
> --extern unsigned IOCTL_CYGETTHRESH;
> --extern unsigned IOCTL_CYGETTIMEOUT;
> --extern unsigned IOCTL_CYSETDEFTHRESH;
> --extern unsigned IOCTL_CYSETDEFTIMEOUT;
> --extern unsigned IOCTL_CYSETTHRESH;
> --extern unsigned IOCTL_CYSETTIMEOUT;
> - extern unsigned IOCTL_EQL_EMANCIPATE;
> - extern unsigned IOCTL_EQL_ENSLAVE;
> - extern unsigned IOCTL_EQL_GETMASTRCFG;
> --- 
> -2.31.1
> -
> diff --git a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch b/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
> deleted file mode 100644
> index 8b6be49e68..0000000000
> --- a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
> +++ /dev/null
> @@ -1,124 +0,0 @@
> -From 65754c50a57e5a891cee75bb744eb93fdb3c443e Mon Sep 17 00:00:00 2001
> -From: Xi Ruoyao <xry111@mengyan1223.wang>
> -Date: Mon, 28 Jun 2021 13:54:58 +0800
> -Subject: [PATCH] fixinc: don't "fix" machine names in __has_include(...)
> - [PR91085]
> -
> -fixincludes/
> -
> -	PR other/91085
> -	* fixfixes.c (check_has_inc): New static function.
> -	  (machine_name_fix): Don't replace header names in
> -	  __has_include(...).
> -	* inclhack.def (machine_name): Adjust test.
> -	* tests/base/testing.h: Update.
> -
> -Upstream: 6bf383c37e6131a8e247e8a0997d55d65c830b6d
> -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ----
> - fixincludes/fixfixes.c           | 45 ++++++++++++++++++++++++++++++--
> - fixincludes/inclhack.def         |  3 ++-
> - fixincludes/tests/base/testing.h |  2 +-
> - 3 files changed, 46 insertions(+), 4 deletions(-)
> -
> -diff --git a/fixincludes/fixfixes.c b/fixincludes/fixfixes.c
> -index 034e15d9985..3ff87812036 100644
> ---- a/fixincludes/fixfixes.c
> -+++ b/fixincludes/fixfixes.c
> -@@ -477,6 +477,39 @@ FIX_PROC_HEAD( char_macro_def_fix )
> -   fputs (text, stdout);
> - }
> - 
> -+/* Check if the pattern at pos is actually in a "__has_include(...)"
> -+   directive.  Return the pointer to the ')' of this
> -+   "__has_include(...)" if it is, NULL otherwise.  */
> -+static const char *
> -+check_has_inc (const char *begin, const char *pos, const char *end)
> -+{
> -+  static const char has_inc[] = "__has_include";
> -+  const size_t has_inc_len = sizeof (has_inc) - 1;
> -+  const char *p;
> -+
> -+  for (p = memmem (begin, pos - begin, has_inc, has_inc_len);
> -+       p != NULL;
> -+       p = memmem (p, pos - p, has_inc, has_inc_len))
> -+    {
> -+      p += has_inc_len;
> -+      while (p < end && ISSPACE (*p))
> -+        p++;
> -+
> -+      /* "__has_include" may appear as "defined(__has_include)",
> -+         search for the next appearance then.  */
> -+      if (*p != '(')
> -+        continue;
> -+
> -+      /* To avoid too much complexity, just hope there is never a
> -+         ')' in a header name.  */
> -+      p = memchr (p, ')', end - p);
> -+      if (p == NULL || p > pos)
> -+        return p;
> -+    }
> -+
> -+  return NULL;
> -+}
> -+
> - /* Fix for machine name #ifdefs that are not in the namespace reserved
> -    by the C standard.  They won't be defined if compiling with -ansi,
> -    and the headers will break.  We go to some trouble to only change
> -@@ -524,7 +557,7 @@ FIX_PROC_HEAD( machine_name_fix )
> -       /* If the 'name_pat' matches in between base and limit, we have
> -          a bogon.  It is not worth the hassle of excluding comments
> -          because comments on #if/#ifdef lines are rare, and strings on
> --         such lines are illegal.
> -+         such lines are only legal in a "__has_include" directive.
> - 
> -          REG_NOTBOL means 'base' is not at the beginning of a line, which
> -          shouldn't matter since the name_re has no ^ anchor, but let's
> -@@ -544,8 +577,16 @@ FIX_PROC_HEAD( machine_name_fix )
> -             break;
> - 
> -           p = base + match[0].rm_so;
> --          base += match[0].rm_eo;
> - 
> -+          /* Check if the match is in __has_include(...) (PR 91085). */
> -+          q = check_has_inc (base, p, limit);
> -+          if (q) 
> -+            {
> -+              base = q + 1;
> -+              goto again;
> -+            }
> -+
> -+          base += match[0].rm_eo;
> -           /* One more test: if on the same line we have the same string
> -              with the appropriate underscores, then leave it alone.
> -              We want exactly two leading and trailing underscores.  */
> -diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
> -index f58e7771e1c..71bd717c233 100644
> ---- a/fixincludes/inclhack.def
> -+++ b/fixincludes/inclhack.def
> -@@ -3114,7 +3114,8 @@ fix = {
> -     c_fix     = machine_name;
> - 
> -     test_text = "/* MACH_DIFF: */\n"
> --    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
> -+    "#if defined( i386 ) || defined( sparc ) || defined( vax ) || "
> -+    "defined( linux ) || __has_include ( <linux.h> )"
> -     "\n/* no uniform test, so be careful  :-) */";
> - };
> - 
> -diff --git a/fixincludes/tests/base/testing.h b/fixincludes/tests/base/testing.h
> -index cf95321fb86..8b3accaf04e 100644
> ---- a/fixincludes/tests/base/testing.h
> -+++ b/fixincludes/tests/base/testing.h
> -@@ -64,7 +64,7 @@ BSD43__IOWR('T', 1) /* Some are multi-line */
> - 
> - #if defined( MACHINE_NAME_CHECK )
> - /* MACH_DIFF: */
> --#if defined( i386 ) || defined( sparc ) || defined( vax )
> -+#if defined( i386 ) || defined( sparc ) || defined( vax ) || defined( linux ) || __has_include ( <linux.h> )
> - /* no uniform test, so be careful  :-) */
> - #endif  /* MACHINE_NAME_CHECK */
> - 
> --- 
> -2.37.3
> -
> diff --git a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch b/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> deleted file mode 100644
> index d354baf81f..0000000000
> --- a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001
> -From: Romain Naour <romain.naour@gmail.com>
> -Date: Tue, 2 May 2017 22:36:15 +0200
> -Subject: [PATCH] uclibc-conf
> -
> -[Romain: convert to git patch]
> -Signed-off-by: Romain Naour <romain.naour@gmail.com>
> ----
> - contrib/regression/objs-gcc.sh | 4 ++++
> - 1 file changed, 4 insertions(+)
> -
> -diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
> -index 60b0497..6dc7ead 100755
> ---- a/contrib/regression/objs-gcc.sh
> -+++ b/contrib/regression/objs-gcc.sh
> -@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
> -  then
> -   make all-gdb all-dejagnu all-ld || exit 1
> -   make install-gdb install-dejagnu install-ld || exit 1
> -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
> -+ then
> -+  make all-gdb all-dejagnu all-ld || exit 1
> -+  make install-gdb install-dejagnu install-ld || exit 1
> - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
> -   make bootstrap || exit 1
> -   make install || exit 1
> --- 
> -2.9.3
> -
> diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
> index 478b0b1620..a2a38a005e 100644
> --- a/package/gcc/gcc.hash
> +++ b/package/gcc/gcc.hash
> @@ -9,8 +9,6 @@ sha512  8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea78
>  # From https://gcc.gnu.org/pub/gcc/releases/gcc-13.2.0/sha512.sum
>  sha512  d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2  gcc-13.2.0.tar.xz
>  
> -# Locally calculated (fetched from Github)
> -sha512  b0853e2b1c5998044392023fa653e399e74118c46e616504ac59e1a2cf27620f94434767ce06b6cf4ca3dfb57f81d6eda92752befaf095ea5e564a9181b4659c  gcc-arc-2020.09-release.tar.gz
>  # Locally calculated (fetched from Github)
>  sha512  2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1  gcc-or1k-musl-5.4.0-20170218.tar.gz
>  
> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> index 93bc46643c..f858b9841f 100644
> --- a/package/gcc/gcc.mk
> +++ b/package/gcc/gcc.mk
> @@ -10,13 +10,8 @@
>  
>  GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
>  
> -ifeq ($(BR2_GCC_VERSION_ARC),y)
> -GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
> -GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
> -else
>  GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
>  GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz
> -endif
>  
>  HOST_GCC_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0
>  HOST_GCC_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB
> -- 
> 2.30.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Yann E. MORIN Dec. 31, 2023, 8:13 p.m. UTC | #2
Waldemar, All,

On 2023-12-31 18:25 +0100, Waldemar Brodkorb spake thusly:
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> ---
>  package/gcc/Config.in.host                    |   9 -
>  .../0001-arc-Refurbish-adc-sbc-patterns.patch | 243 ------------------
>  ...er-Remove-cyclades-from-libsanitizer.patch | 121 ---------
>  ...-machine-names-in-__has_include-.-PR.patch | 124 ---------
>  .../0100-uclibc-conf.patch                    |  29 ---

Patches 0001, 0002, and 0100 have check-package exclusions, that also
need to be removed (see my reply to the binutils patch).

Regards,
Yann E. MORIN.

>  package/gcc/gcc.hash                          |   2 -
>  package/gcc/gcc.mk                            |   5 -
>  7 files changed, 533 deletions(-)
>  delete mode 100644 package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
>  delete mode 100644 package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> 
> diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
> index fd721088ec..db6f378d6a 100644
> --- a/package/gcc/Config.in.host
> +++ b/package/gcc/Config.in.host
> @@ -2,19 +2,11 @@ comment "GCC Options"
>  
>  choice
>  	prompt "GCC compiler Version"
> -	default BR2_GCC_VERSION_ARC if BR2_GCC_VERSION_4_8_ARC # legacy
> -	default BR2_GCC_VERSION_ARC if BR2_arc
>  	default BR2_GCC_VERSION_POWERPC_SPE if BR2_POWERPC_CPU_HAS_SPE
>  	default BR2_GCC_VERSION_12_X
>  	help
>  	  Select the version of gcc you wish to use.
>  
> -config BR2_GCC_VERSION_ARC
> -	bool "gcc arc (10.x)"
> -	# Only supported architecture
> -	depends on BR2_arc
> -	select BR2_TOOLCHAIN_GCC_AT_LEAST_10
> -
>  config BR2_GCC_VERSION_POWERPC_SPE
>  	bool "gcc powerpc spe"
>  	# powerpc spe support has been deprecated since gcc 8.x.
> @@ -81,7 +73,6 @@ config BR2_GCC_VERSION
>  	default "11.4.0"    if BR2_GCC_VERSION_11_X
>  	default "12.3.0"    if BR2_GCC_VERSION_12_X
>  	default "13.2.0"    if BR2_GCC_VERSION_13_X
> -	default "arc-2020.09-release" if BR2_GCC_VERSION_ARC
>  
>  config BR2_EXTRA_GCC_CONFIG_OPTIONS
>  	string "Additional gcc options"
> diff --git a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch b/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
> deleted file mode 100644
> index 3292b26a4e..0000000000
> --- a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
> +++ /dev/null
> @@ -1,243 +0,0 @@
> -From b92c22b144d063c4436a6693045ceb57d344c495 Mon Sep 17 00:00:00 2001
> -From: Claudiu Zissulescu <claziss@synopsys.com>
> -Date: Wed, 11 Nov 2020 12:31:10 +0200
> -Subject: [PATCH] arc: Refurbish adc/sbc patterns
> -
> -The adc/sbc patterns were unecessary spliting, remove that and
> -associated functions.
> -
> -gcc/ChangeLog:
> -
> -2020-10-11  Claudiu Zissulescu  <claziss@synopsys.com>
> -
> -	* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
> -	it.
> -	(arc_sets_cc_p): Likewise.
> -	(arc_need_delay): Likewise.
> -	* config/arc/arc.c (arc_sets_cc_p): Likewise.
> -	(arc_need_delay): Likewise.
> -	(arc_scheduling_not_expected): Likewise.
> -	* config/arc/arc.md: Convert adc/sbc patterns to simple
> -	instruction definitions.
> -
> -Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
> -
> -Downloaded from upstream commit
> -https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/b92c22b144d063c4436a6693045ceb57d344c495
> -
> -Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
> ----
> - gcc/config/arc/arc-protos.h |  3 --
> - gcc/config/arc/arc.c        | 53 ---------------------
> - gcc/config/arc/arc.md       | 95 +++++++++++--------------------------
> - 3 files changed, 29 insertions(+), 122 deletions(-)
> -
> -diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
> -index c72d78e3b9e..de4cf47c818 100644
> ---- a/gcc/config/arc/arc-protos.h
> -+++ b/gcc/config/arc/arc-protos.h
> -@@ -90,10 +90,7 @@ extern void split_subsi (rtx *);
> - extern void arc_split_move (rtx *);
> - extern const char *arc_short_long (rtx_insn *insn, const char *, const char *);
> - extern rtx arc_regno_use_in (unsigned int, rtx);
> --extern bool arc_scheduling_not_expected (void);
> --extern bool arc_sets_cc_p (rtx_insn *insn);
> - extern int arc_label_align (rtx_insn *label);
> --extern bool arc_need_delay (rtx_insn *insn);
> - extern bool arc_text_label (rtx_insn *insn);
> - 
> - extern bool arc_short_comparison_p (rtx, int);
> -diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> -index 5a7b0cb6696..c3ee9181f93 100644
> ---- a/gcc/config/arc/arc.c
> -+++ b/gcc/config/arc/arc.c
> -@@ -10341,59 +10341,6 @@ arc_attr_type (rtx_insn *insn)
> -   return get_attr_type (insn);
> - }
> - 
> --/* Return true if insn sets the condition codes.  */
> --
> --bool
> --arc_sets_cc_p (rtx_insn *insn)
> --{
> --  if (NONJUMP_INSN_P (insn))
> --    if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (PATTERN (insn)))
> --      insn = seq->insn (seq->len () - 1);
> --  return arc_attr_type (insn) == TYPE_COMPARE;
> --}
> --
> --/* Return true if INSN is an instruction with a delay slot we may want
> --   to fill.  */
> --
> --bool
> --arc_need_delay (rtx_insn *insn)
> --{
> --  rtx_insn *next;
> --
> --  if (!flag_delayed_branch)
> --    return false;
> --  /* The return at the end of a function needs a delay slot.  */
> --  if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
> --      && (!(next = next_active_insn (insn))
> --	  || ((!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) != SEQUENCE)
> --	      && arc_attr_type (next) == TYPE_RETURN))
> --      && (!TARGET_PAD_RETURN
> --	  || (prev_active_insn (insn)
> --	      && prev_active_insn (prev_active_insn (insn))
> --	      && prev_active_insn (prev_active_insn (prev_active_insn (insn))))))
> --    return true;
> --  if (NONJUMP_INSN_P (insn)
> --      ? (GET_CODE (PATTERN (insn)) == USE
> --	 || GET_CODE (PATTERN (insn)) == CLOBBER
> --	 || GET_CODE (PATTERN (insn)) == SEQUENCE)
> --      : JUMP_P (insn)
> --      ? (GET_CODE (PATTERN (insn)) == ADDR_VEC
> --	 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
> --      : !CALL_P (insn))
> --    return false;
> --  return num_delay_slots (insn) != 0;
> --}
> --
> --/* Return true if the scheduling pass(es) has/have already run,
> --   i.e. where possible, we should try to mitigate high latencies
> --   by different instruction selection.  */
> --
> --bool
> --arc_scheduling_not_expected (void)
> --{
> --  return cfun->machine->arc_reorg_started;
> --}
> --
> - /* Code has a minimum p2 alignment of 1, which we must restore after
> -    an ADDR_DIFF_VEC.  */
> - 
> -diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
> -index f91adbc0d94..c635b69ddd5 100644
> ---- a/gcc/config/arc/arc.md
> -+++ b/gcc/config/arc/arc.md
> -@@ -2847,43 +2847,25 @@ archs4x, archs4xd"
> -    (set_attr "type" "compare")
> -    (set_attr "length" "4,4,8")])
> - 
> --; w/c/c comes first (rather than w/0/C_0) to prevent the middle-end
> --; needlessly prioritizing the matching constraint.
> --; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional
> --; execution is used where possible.
> --(define_insn_and_split "adc"
> --  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
> --	(plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REG) (const_int 0))
> --			  (match_operand:SI 1 "nonmemory_operand"
> --							 "%c,0,c,0,cCal"))
> --		 (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
> -+(define_insn "adc"
> -+  [(set (match_operand:SI 0 "register_operand"    "=r,  r,r,r,  r,r")
> -+	(plus:SI
> -+	 (plus:SI
> -+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0))
> -+	  (match_operand:SI 1 "nonmemory_operand" "%r,  0,r,0,Cal,r"))
> -+	 (match_operand:SI 2 "nonmemory_operand"   "r,C_0,L,I,  r,Cal")))]
> -   "register_operand (operands[1], SImode)
> -    || register_operand (operands[2], SImode)"
> -   "@
> --	adc %0,%1,%2
> --	add.cs %0,%1,1
> --	adc %0,%1,%2
> --	adc %0,%1,%2
> --	adc %0,%1,%2"
> --  ; if we have a bad schedule after sched2, split.
> --  "reload_completed
> --   && !optimize_size && (!TARGET_ARC600_FAMILY)
> --   && arc_scheduling_not_expected ()
> --   && arc_sets_cc_p (prev_nonnote_insn (insn))
> --   /* If next comes a return or other insn that needs a delay slot,
> --      expect the adc to get into the delay slot.  */
> --   && next_nonnote_insn (insn)
> --   && !arc_need_delay (next_nonnote_insn (insn))
> --   /* Restore operands before emitting.  */
> --   && (extract_insn_cached (insn), 1)"
> --  [(set (match_dup 0) (match_dup 3))
> --   (cond_exec
> --     (ltu (reg:CC_C CC_REG) (const_int 0))
> --     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1))))]
> --  "operands[3] = simplify_gen_binary (PLUS, SImode, operands[1], operands[2]);"
> -+    adc\\t%0,%1,%2
> -+    add.cs\\t%0,%1,1
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2
> -+    adc\\t%0,%1,%2"
> -   [(set_attr "cond" "use")
> -    (set_attr "type" "cc_arith")
> --   (set_attr "length" "4,4,4,4,8")])
> -+   (set_attr "length" "4,4,4,4,8,8")])
> - 
> - ; combiner-splitter cmp / scc -> cmp / adc
> - (define_split
> -@@ -3015,7 +2997,7 @@ archs4x, archs4xd"
> -       DONE;
> -     }
> -   emit_insn (gen_sub_f (l0, l1, l2));
> --  emit_insn (gen_sbc (h0, h1, h2, gen_rtx_REG (CCmode, CC_REG)));
> -+  emit_insn (gen_sbc (h0, h1, h2));
> -   DONE;
> -   ")
> - 
> -@@ -3030,44 +3012,25 @@ archs4x, archs4xd"
> -    (set_attr "type" "cc_arith")
> -    (set_attr "length" "4")])
> - 
> --; w/c/c comes first (rather than Rcw/0/C_0) to prevent the middle-end
> --; needlessly prioritizing the matching constraint.
> --; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional execution
> --; is used where possible.
> --(define_insn_and_split "sbc"
> --  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
> --	(minus:SI (minus:SI (match_operand:SI 1 "nonmemory_operand"
> --						"c,0,c,0,cCal")
> --			    (ltu:SI (match_operand:CC_C 3 "cc_use_register")
> --				    (const_int 0)))
> --		  (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
> -+(define_insn "sbc"
> -+  [(set (match_operand:SI 0 "dest_reg_operand"   "=r,r,r,r,r,r")
> -+	(minus:SI
> -+	 (minus:SI
> -+	  (match_operand:SI 1 "nonmemory_operand" "r,  0,r,0,  r,Cal")
> -+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0)))
> -+	 (match_operand:SI 2 "nonmemory_operand"  "r,C_0,L,I,Cal,r")))]
> -   "register_operand (operands[1], SImode)
> -    || register_operand (operands[2], SImode)"
> -   "@
> --	sbc %0,%1,%2
> --	sub.cs %0,%1,1
> --	sbc %0,%1,%2
> --	sbc %0,%1,%2
> --	sbc %0,%1,%2"
> --  ; if we have a bad schedule after sched2, split.
> --  "reload_completed
> --   && !optimize_size && (!TARGET_ARC600_FAMILY)
> --   && arc_scheduling_not_expected ()
> --   && arc_sets_cc_p (prev_nonnote_insn (insn))
> --   /* If next comes a return or other insn that needs a delay slot,
> --      expect the adc to get into the delay slot.  */
> --   && next_nonnote_insn (insn)
> --   && !arc_need_delay (next_nonnote_insn (insn))
> --   /* Restore operands before emitting.  */
> --   && (extract_insn_cached (insn), 1)"
> --  [(set (match_dup 0) (match_dup 4))
> --   (cond_exec
> --     (ltu (reg:CC_C CC_REG) (const_int 0))
> --     (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1))))]
> --  "operands[4] = simplify_gen_binary (MINUS, SImode, operands[1], operands[2]);"
> -+    sbc\\t%0,%1,%2
> -+    sub.cs\\t%0,%1,1
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2
> -+    sbc\\t%0,%1,%2"
> -   [(set_attr "cond" "use")
> -    (set_attr "type" "cc_arith")
> --   (set_attr "length" "4,4,4,4,8")])
> -+   (set_attr "length" "4,4,4,4,8,8")])
> - 
> - (define_insn "sub_f"
> -   [(set (reg:CC CC_REG)
> diff --git a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch b/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
> deleted file mode 100644
> index 051d4db341..0000000000
> --- a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
> +++ /dev/null
> @@ -1,121 +0,0 @@
> -From 1557c3d919623a95c2aa090d3018c31401f63f88 Mon Sep 17 00:00:00 2001
> -From: Tamar Christina <tamar.christina@arm.com>
> -Date: Fri, 21 May 2021 12:16:56 +0100
> -Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
> -
> -The Linux kernel has removed the interface to cyclades from
> -the latest kernel headers[1] due to them being orphaned for the
> -past 13 years.
> -
> -libsanitizer uses this header when compiling against glibc, but
> -glibcs itself doesn't seem to have any references to cyclades.
> -
> -Further more it seems that the driver is broken in the kernel and
> -the firmware doesn't seem to be available anymore.
> -
> -As such since this is breaking the build of libsanitizer (and so the
> -GCC bootstrap[2]) I propose to remove this.
> -
> -[1] https://lkml.org/lkml/2021/3/2/153
> -[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
> -
> -libsanitizer/ChangeLog:
> -
> -	PR sanitizer/100379
> -	* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
> -	llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
> -	* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
> -	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
> ----
> - .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------
> - .../sanitizer_platform_limits_posix.cpp               | 11 -----------
> - .../sanitizer_platform_limits_posix.h                 | 10 ----------
> - 3 files changed, 30 deletions(-)
> -
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -index 490a04b2181..42e43a04441 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
> -@@ -366,15 +366,6 @@ static void ioctl_table_fill() {
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> -   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
> --  _(CYGETDEFTHRESH, WRITE, sizeof(int));
> --  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
> --  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
> --  _(CYGETTHRESH, WRITE, sizeof(int));
> --  _(CYGETTIMEOUT, WRITE, sizeof(int));
> --  _(CYSETDEFTHRESH, NONE, 0);
> --  _(CYSETDEFTIMEOUT, NONE, 0);
> --  _(CYSETTHRESH, NONE, 0);
> --  _(CYSETTIMEOUT, NONE, 0);
> -   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
> -   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
> -   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -index aa845df4dde..badf6a401cc 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
> -@@ -130,7 +130,6 @@ typedef struct user_fpregs elf_fpregset_t;
> - # include <sys/procfs.h>
> - #endif
> - #include <sys/user.h>
> --#include <linux/cyclades.h>
> - #include <linux/if_eql.h>
> - #include <linux/if_plip.h>
> - #include <linux/lp.h>
> -@@ -443,7 +442,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> -   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
> --  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
> - #if EV_VERSION > (0x010000)
> -   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
> - #else
> -@@ -809,15 +807,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
> - #endif // SANITIZER_LINUX
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> --  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
> --  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
> --  unsigned IOCTL_CYGETMON = CYGETMON;
> --  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
> --  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
> --  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
> --  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
> --  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
> --  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
> -   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
> -   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
> -   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
> -diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -index d82fd5e4005..dc6423bc297 100644
> ---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
> -@@ -974,7 +974,6 @@ extern unsigned struct_vt_mode_sz;
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> - extern unsigned struct_ax25_parms_struct_sz;
> --extern unsigned struct_cyclades_monitor_sz;
> - extern unsigned struct_input_keymap_entry_sz;
> - extern unsigned struct_ipx_config_data_sz;
> - extern unsigned struct_kbdiacrs_sz;
> -@@ -1319,15 +1318,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;
> - #endif  // SANITIZER_LINUX
> - 
> - #if SANITIZER_LINUX && !SANITIZER_ANDROID
> --extern unsigned IOCTL_CYGETDEFTHRESH;
> --extern unsigned IOCTL_CYGETDEFTIMEOUT;
> --extern unsigned IOCTL_CYGETMON;
> --extern unsigned IOCTL_CYGETTHRESH;
> --extern unsigned IOCTL_CYGETTIMEOUT;
> --extern unsigned IOCTL_CYSETDEFTHRESH;
> --extern unsigned IOCTL_CYSETDEFTIMEOUT;
> --extern unsigned IOCTL_CYSETTHRESH;
> --extern unsigned IOCTL_CYSETTIMEOUT;
> - extern unsigned IOCTL_EQL_EMANCIPATE;
> - extern unsigned IOCTL_EQL_ENSLAVE;
> - extern unsigned IOCTL_EQL_GETMASTRCFG;
> --- 
> -2.31.1
> -
> diff --git a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch b/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
> deleted file mode 100644
> index 8b6be49e68..0000000000
> --- a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
> +++ /dev/null
> @@ -1,124 +0,0 @@
> -From 65754c50a57e5a891cee75bb744eb93fdb3c443e Mon Sep 17 00:00:00 2001
> -From: Xi Ruoyao <xry111@mengyan1223.wang>
> -Date: Mon, 28 Jun 2021 13:54:58 +0800
> -Subject: [PATCH] fixinc: don't "fix" machine names in __has_include(...)
> - [PR91085]
> -
> -fixincludes/
> -
> -	PR other/91085
> -	* fixfixes.c (check_has_inc): New static function.
> -	  (machine_name_fix): Don't replace header names in
> -	  __has_include(...).
> -	* inclhack.def (machine_name): Adjust test.
> -	* tests/base/testing.h: Update.
> -
> -Upstream: 6bf383c37e6131a8e247e8a0997d55d65c830b6d
> -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ----
> - fixincludes/fixfixes.c           | 45 ++++++++++++++++++++++++++++++--
> - fixincludes/inclhack.def         |  3 ++-
> - fixincludes/tests/base/testing.h |  2 +-
> - 3 files changed, 46 insertions(+), 4 deletions(-)
> -
> -diff --git a/fixincludes/fixfixes.c b/fixincludes/fixfixes.c
> -index 034e15d9985..3ff87812036 100644
> ---- a/fixincludes/fixfixes.c
> -+++ b/fixincludes/fixfixes.c
> -@@ -477,6 +477,39 @@ FIX_PROC_HEAD( char_macro_def_fix )
> -   fputs (text, stdout);
> - }
> - 
> -+/* Check if the pattern at pos is actually in a "__has_include(...)"
> -+   directive.  Return the pointer to the ')' of this
> -+   "__has_include(...)" if it is, NULL otherwise.  */
> -+static const char *
> -+check_has_inc (const char *begin, const char *pos, const char *end)
> -+{
> -+  static const char has_inc[] = "__has_include";
> -+  const size_t has_inc_len = sizeof (has_inc) - 1;
> -+  const char *p;
> -+
> -+  for (p = memmem (begin, pos - begin, has_inc, has_inc_len);
> -+       p != NULL;
> -+       p = memmem (p, pos - p, has_inc, has_inc_len))
> -+    {
> -+      p += has_inc_len;
> -+      while (p < end && ISSPACE (*p))
> -+        p++;
> -+
> -+      /* "__has_include" may appear as "defined(__has_include)",
> -+         search for the next appearance then.  */
> -+      if (*p != '(')
> -+        continue;
> -+
> -+      /* To avoid too much complexity, just hope there is never a
> -+         ')' in a header name.  */
> -+      p = memchr (p, ')', end - p);
> -+      if (p == NULL || p > pos)
> -+        return p;
> -+    }
> -+
> -+  return NULL;
> -+}
> -+
> - /* Fix for machine name #ifdefs that are not in the namespace reserved
> -    by the C standard.  They won't be defined if compiling with -ansi,
> -    and the headers will break.  We go to some trouble to only change
> -@@ -524,7 +557,7 @@ FIX_PROC_HEAD( machine_name_fix )
> -       /* If the 'name_pat' matches in between base and limit, we have
> -          a bogon.  It is not worth the hassle of excluding comments
> -          because comments on #if/#ifdef lines are rare, and strings on
> --         such lines are illegal.
> -+         such lines are only legal in a "__has_include" directive.
> - 
> -          REG_NOTBOL means 'base' is not at the beginning of a line, which
> -          shouldn't matter since the name_re has no ^ anchor, but let's
> -@@ -544,8 +577,16 @@ FIX_PROC_HEAD( machine_name_fix )
> -             break;
> - 
> -           p = base + match[0].rm_so;
> --          base += match[0].rm_eo;
> - 
> -+          /* Check if the match is in __has_include(...) (PR 91085). */
> -+          q = check_has_inc (base, p, limit);
> -+          if (q) 
> -+            {
> -+              base = q + 1;
> -+              goto again;
> -+            }
> -+
> -+          base += match[0].rm_eo;
> -           /* One more test: if on the same line we have the same string
> -              with the appropriate underscores, then leave it alone.
> -              We want exactly two leading and trailing underscores.  */
> -diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
> -index f58e7771e1c..71bd717c233 100644
> ---- a/fixincludes/inclhack.def
> -+++ b/fixincludes/inclhack.def
> -@@ -3114,7 +3114,8 @@ fix = {
> -     c_fix     = machine_name;
> - 
> -     test_text = "/* MACH_DIFF: */\n"
> --    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
> -+    "#if defined( i386 ) || defined( sparc ) || defined( vax ) || "
> -+    "defined( linux ) || __has_include ( <linux.h> )"
> -     "\n/* no uniform test, so be careful  :-) */";
> - };
> - 
> -diff --git a/fixincludes/tests/base/testing.h b/fixincludes/tests/base/testing.h
> -index cf95321fb86..8b3accaf04e 100644
> ---- a/fixincludes/tests/base/testing.h
> -+++ b/fixincludes/tests/base/testing.h
> -@@ -64,7 +64,7 @@ BSD43__IOWR('T', 1) /* Some are multi-line */
> - 
> - #if defined( MACHINE_NAME_CHECK )
> - /* MACH_DIFF: */
> --#if defined( i386 ) || defined( sparc ) || defined( vax )
> -+#if defined( i386 ) || defined( sparc ) || defined( vax ) || defined( linux ) || __has_include ( <linux.h> )
> - /* no uniform test, so be careful  :-) */
> - #endif  /* MACHINE_NAME_CHECK */
> - 
> --- 
> -2.37.3
> -
> diff --git a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch b/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> deleted file mode 100644
> index d354baf81f..0000000000
> --- a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001
> -From: Romain Naour <romain.naour@gmail.com>
> -Date: Tue, 2 May 2017 22:36:15 +0200
> -Subject: [PATCH] uclibc-conf
> -
> -[Romain: convert to git patch]
> -Signed-off-by: Romain Naour <romain.naour@gmail.com>
> ----
> - contrib/regression/objs-gcc.sh | 4 ++++
> - 1 file changed, 4 insertions(+)
> -
> -diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
> -index 60b0497..6dc7ead 100755
> ---- a/contrib/regression/objs-gcc.sh
> -+++ b/contrib/regression/objs-gcc.sh
> -@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
> -  then
> -   make all-gdb all-dejagnu all-ld || exit 1
> -   make install-gdb install-dejagnu install-ld || exit 1
> -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
> -+ then
> -+  make all-gdb all-dejagnu all-ld || exit 1
> -+  make install-gdb install-dejagnu install-ld || exit 1
> - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
> -   make bootstrap || exit 1
> -   make install || exit 1
> --- 
> -2.9.3
> -
> diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
> index 478b0b1620..a2a38a005e 100644
> --- a/package/gcc/gcc.hash
> +++ b/package/gcc/gcc.hash
> @@ -9,8 +9,6 @@ sha512  8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea78
>  # From https://gcc.gnu.org/pub/gcc/releases/gcc-13.2.0/sha512.sum
>  sha512  d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2  gcc-13.2.0.tar.xz
>  
> -# Locally calculated (fetched from Github)
> -sha512  b0853e2b1c5998044392023fa653e399e74118c46e616504ac59e1a2cf27620f94434767ce06b6cf4ca3dfb57f81d6eda92752befaf095ea5e564a9181b4659c  gcc-arc-2020.09-release.tar.gz
>  # Locally calculated (fetched from Github)
>  sha512  2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1  gcc-or1k-musl-5.4.0-20170218.tar.gz
>  
> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> index 93bc46643c..f858b9841f 100644
> --- a/package/gcc/gcc.mk
> +++ b/package/gcc/gcc.mk
> @@ -10,13 +10,8 @@
>  
>  GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
>  
> -ifeq ($(BR2_GCC_VERSION_ARC),y)
> -GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
> -GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
> -else
>  GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
>  GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz
> -endif
>  
>  HOST_GCC_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0
>  HOST_GCC_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB
> -- 
> 2.30.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Alexey Brodkin Jan. 1, 2024, 2:43 p.m. UTC | #3
Dear Waldemar, Yann, all,

Sorry for a bit late reply.

> On 2023-12-31 18:25 +0100, Waldemar Brodkorb spake thusly:
> > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
>
> Thanks for working on this; we discussed that with Thomas the other day,
> and we concluded that indeed that would be a good idea to get rid of
> that special version now.
>
> However, your commit log is empty. It should instead explain the reasons
> why dropping that special version is now a good thing.
>
> It is very importaant that this information be recorded in the commit
> log, because we may (will!) need to refer to it in the future, when we
> then wonder why that was good idea.

Thanks for that clean-up series and indeed it makes a lot of sense for
ARCompact (AKA ARCv2) & ARCv2 processors - which are perfectly supported in
all the upstream projects.

Especially it's nice that you went that far and added confing and instuctions
on how to run the Linux kernel for ARC on QEMU - that's much appeciated.

But as we discussed some time age there's ARCv3 ISA which support is being
added in upsream components still and as of now not all the bits and pieces
got merged upstream, thus we and our user have to rely [sadly again] on our
GitHub forks, see [1], [2] and [3]

Funny enough uClibc as you know already has full support of ARCv3 starting from 
v1.0.43, see [4].

What's also nice, both 32-bit and 64-bit versions of ARCv3 are well supported in our QEMU
fork [5], so relevant configutations will be included as well.

So given that's a short new year break between work fires I may quickly send-out
patches which will either:
1. Bump ARC tools to the latest version 2023.09 (see [6]) which will also
   add support for ARCv3 (in fact we already have it in our fork, see [7])
2. Update ARC tools (GCC, Binutils/GDB & glibc) for ARCv3 only, while switching
   ARCompact & ARCv2 to upstream components.
3. Given ARC seems to be the only use of non-upstream components, remove
   ARC-specific tools/forks from buildroot and  only enable ARCv3 use via
   external toolchains.

And while (3) is the slimmest option (no need to add or rather maintain ARC-specific)
code in package/xxx Config.in.host, xxx.mk especially with uClibc it's a bit too
restrictive as users may want more flexibility of configuring uClibc to their needs.

-Alexey

[1] https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/tree/arc-2023.09
[2] https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/tree/arc-2023.09
[3] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc/tree/arc-2023.09
[4] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=de6be7bc60f190a0d746945a3a5a143bc93a1a65
[5] https://github.com/foss-for-synopsys-dwc-arc-processors/qemu
[6] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2023.09-release
[7] https://github.com/foss-for-synopsys-dwc-arc-processors/buildroot/tree/arc-2023.09
Yann E. MORIN Jan. 1, 2024, 8:05 p.m. UTC | #4
Alexey, All,

Thank you for quickly jumping ship in the discussion, Alexey!

On 2024-01-01 14:43 +0000, Alexey Brodkin via buildroot spake thusly:
> > On 2023-12-31 18:25 +0100, Waldemar Brodkorb spake thusly:
> > > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> > Thanks for working on this; we discussed that with Thomas the other day,
> > and we concluded that indeed that would be a good idea to get rid of
> > that special version now.
[--SNIP--]
> So given that's a short new year break between work fires I may quickly send-out
> patches which will either:
> 1. Bump ARC tools to the latest version 2023.09 (see [6]) which will also
>    add support for ARCv3 (in fact we already have it in our fork, see [7])
> 2. Update ARC tools (GCC, Binutils/GDB & glibc) for ARCv3 only, while switching
>    ARCompact & ARCv2 to upstream components.
> 3. Given ARC seems to be the only use of non-upstream components, remove
>    ARC-specific tools/forks from buildroot and  only enable ARCv3 use via
>    external toolchains.

As you said, the ARCv2 is perfectly supported in the upstream
components. Then it makes sense to no longer have the ARC specific
versions for the ARCv2 CPUs, especially since that version (10.x) is
older than the oldest generic version we have (11.x).

Furthermore, we currently have no ARCv3 CPU support in Buildroot.

So, I think that, looking at the situation *as it is today*, Waldemar's
series (improved with the various comments I made earlier) is the best
course of action for Buildroot.

Then, when we get support for ARCv3 CPUs, we can either:

  - use your option 2 above if that comes before we remove the current
    ARC-specific version, or

  - reintroduce an ARC-specific version otherwise.

> And while (3) is the slimmest option (no need to add or rather maintain ARC-specific)
> code in package/xxx Config.in.host, xxx.mk especially with uClibc it's a bit too
> restrictive as users may want more flexibility of configuring uClibc to their needs.

I agree that option 3 is not very interesting.

Regards,
Yann E. MORIN.

> -Alexey
> 
> [1] https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/tree/arc-2023.09
> [2] https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/tree/arc-2023.09
> [3] https://github.com/foss-for-synopsys-dwc-arc-processors/glibc/tree/arc-2023.09
> [4] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=de6be7bc60f190a0d746945a3a5a143bc93a1a65
> [5] https://github.com/foss-for-synopsys-dwc-arc-processors/qemu
> [6] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2023.09-release
> [7] https://github.com/foss-for-synopsys-dwc-arc-processors/buildroot/tree/arc-2023.09
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index fd721088ec..db6f378d6a 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -2,19 +2,11 @@  comment "GCC Options"
 
 choice
 	prompt "GCC compiler Version"
-	default BR2_GCC_VERSION_ARC if BR2_GCC_VERSION_4_8_ARC # legacy
-	default BR2_GCC_VERSION_ARC if BR2_arc
 	default BR2_GCC_VERSION_POWERPC_SPE if BR2_POWERPC_CPU_HAS_SPE
 	default BR2_GCC_VERSION_12_X
 	help
 	  Select the version of gcc you wish to use.
 
-config BR2_GCC_VERSION_ARC
-	bool "gcc arc (10.x)"
-	# Only supported architecture
-	depends on BR2_arc
-	select BR2_TOOLCHAIN_GCC_AT_LEAST_10
-
 config BR2_GCC_VERSION_POWERPC_SPE
 	bool "gcc powerpc spe"
 	# powerpc spe support has been deprecated since gcc 8.x.
@@ -81,7 +73,6 @@  config BR2_GCC_VERSION
 	default "11.4.0"    if BR2_GCC_VERSION_11_X
 	default "12.3.0"    if BR2_GCC_VERSION_12_X
 	default "13.2.0"    if BR2_GCC_VERSION_13_X
-	default "arc-2020.09-release" if BR2_GCC_VERSION_ARC
 
 config BR2_EXTRA_GCC_CONFIG_OPTIONS
 	string "Additional gcc options"
diff --git a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch b/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
deleted file mode 100644
index 3292b26a4e..0000000000
--- a/package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch
+++ /dev/null
@@ -1,243 +0,0 @@ 
-From b92c22b144d063c4436a6693045ceb57d344c495 Mon Sep 17 00:00:00 2001
-From: Claudiu Zissulescu <claziss@synopsys.com>
-Date: Wed, 11 Nov 2020 12:31:10 +0200
-Subject: [PATCH] arc: Refurbish adc/sbc patterns
-
-The adc/sbc patterns were unecessary spliting, remove that and
-associated functions.
-
-gcc/ChangeLog:
-
-2020-10-11  Claudiu Zissulescu  <claziss@synopsys.com>
-
-	* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
-	it.
-	(arc_sets_cc_p): Likewise.
-	(arc_need_delay): Likewise.
-	* config/arc/arc.c (arc_sets_cc_p): Likewise.
-	(arc_need_delay): Likewise.
-	(arc_scheduling_not_expected): Likewise.
-	* config/arc/arc.md: Convert adc/sbc patterns to simple
-	instruction definitions.
-
-Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
-
-Downloaded from upstream commit
-https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/b92c22b144d063c4436a6693045ceb57d344c495
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
----
- gcc/config/arc/arc-protos.h |  3 --
- gcc/config/arc/arc.c        | 53 ---------------------
- gcc/config/arc/arc.md       | 95 +++++++++++--------------------------
- 3 files changed, 29 insertions(+), 122 deletions(-)
-
-diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
-index c72d78e3b9e..de4cf47c818 100644
---- a/gcc/config/arc/arc-protos.h
-+++ b/gcc/config/arc/arc-protos.h
-@@ -90,10 +90,7 @@ extern void split_subsi (rtx *);
- extern void arc_split_move (rtx *);
- extern const char *arc_short_long (rtx_insn *insn, const char *, const char *);
- extern rtx arc_regno_use_in (unsigned int, rtx);
--extern bool arc_scheduling_not_expected (void);
--extern bool arc_sets_cc_p (rtx_insn *insn);
- extern int arc_label_align (rtx_insn *label);
--extern bool arc_need_delay (rtx_insn *insn);
- extern bool arc_text_label (rtx_insn *insn);
- 
- extern bool arc_short_comparison_p (rtx, int);
-diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
-index 5a7b0cb6696..c3ee9181f93 100644
---- a/gcc/config/arc/arc.c
-+++ b/gcc/config/arc/arc.c
-@@ -10341,59 +10341,6 @@ arc_attr_type (rtx_insn *insn)
-   return get_attr_type (insn);
- }
- 
--/* Return true if insn sets the condition codes.  */
--
--bool
--arc_sets_cc_p (rtx_insn *insn)
--{
--  if (NONJUMP_INSN_P (insn))
--    if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (PATTERN (insn)))
--      insn = seq->insn (seq->len () - 1);
--  return arc_attr_type (insn) == TYPE_COMPARE;
--}
--
--/* Return true if INSN is an instruction with a delay slot we may want
--   to fill.  */
--
--bool
--arc_need_delay (rtx_insn *insn)
--{
--  rtx_insn *next;
--
--  if (!flag_delayed_branch)
--    return false;
--  /* The return at the end of a function needs a delay slot.  */
--  if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
--      && (!(next = next_active_insn (insn))
--	  || ((!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) != SEQUENCE)
--	      && arc_attr_type (next) == TYPE_RETURN))
--      && (!TARGET_PAD_RETURN
--	  || (prev_active_insn (insn)
--	      && prev_active_insn (prev_active_insn (insn))
--	      && prev_active_insn (prev_active_insn (prev_active_insn (insn))))))
--    return true;
--  if (NONJUMP_INSN_P (insn)
--      ? (GET_CODE (PATTERN (insn)) == USE
--	 || GET_CODE (PATTERN (insn)) == CLOBBER
--	 || GET_CODE (PATTERN (insn)) == SEQUENCE)
--      : JUMP_P (insn)
--      ? (GET_CODE (PATTERN (insn)) == ADDR_VEC
--	 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
--      : !CALL_P (insn))
--    return false;
--  return num_delay_slots (insn) != 0;
--}
--
--/* Return true if the scheduling pass(es) has/have already run,
--   i.e. where possible, we should try to mitigate high latencies
--   by different instruction selection.  */
--
--bool
--arc_scheduling_not_expected (void)
--{
--  return cfun->machine->arc_reorg_started;
--}
--
- /* Code has a minimum p2 alignment of 1, which we must restore after
-    an ADDR_DIFF_VEC.  */
- 
-diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
-index f91adbc0d94..c635b69ddd5 100644
---- a/gcc/config/arc/arc.md
-+++ b/gcc/config/arc/arc.md
-@@ -2847,43 +2847,25 @@ archs4x, archs4xd"
-    (set_attr "type" "compare")
-    (set_attr "length" "4,4,8")])
- 
--; w/c/c comes first (rather than w/0/C_0) to prevent the middle-end
--; needlessly prioritizing the matching constraint.
--; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional
--; execution is used where possible.
--(define_insn_and_split "adc"
--  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
--	(plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REG) (const_int 0))
--			  (match_operand:SI 1 "nonmemory_operand"
--							 "%c,0,c,0,cCal"))
--		 (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
-+(define_insn "adc"
-+  [(set (match_operand:SI 0 "register_operand"    "=r,  r,r,r,  r,r")
-+	(plus:SI
-+	 (plus:SI
-+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0))
-+	  (match_operand:SI 1 "nonmemory_operand" "%r,  0,r,0,Cal,r"))
-+	 (match_operand:SI 2 "nonmemory_operand"   "r,C_0,L,I,  r,Cal")))]
-   "register_operand (operands[1], SImode)
-    || register_operand (operands[2], SImode)"
-   "@
--	adc %0,%1,%2
--	add.cs %0,%1,1
--	adc %0,%1,%2
--	adc %0,%1,%2
--	adc %0,%1,%2"
--  ; if we have a bad schedule after sched2, split.
--  "reload_completed
--   && !optimize_size && (!TARGET_ARC600_FAMILY)
--   && arc_scheduling_not_expected ()
--   && arc_sets_cc_p (prev_nonnote_insn (insn))
--   /* If next comes a return or other insn that needs a delay slot,
--      expect the adc to get into the delay slot.  */
--   && next_nonnote_insn (insn)
--   && !arc_need_delay (next_nonnote_insn (insn))
--   /* Restore operands before emitting.  */
--   && (extract_insn_cached (insn), 1)"
--  [(set (match_dup 0) (match_dup 3))
--   (cond_exec
--     (ltu (reg:CC_C CC_REG) (const_int 0))
--     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1))))]
--  "operands[3] = simplify_gen_binary (PLUS, SImode, operands[1], operands[2]);"
-+    adc\\t%0,%1,%2
-+    add.cs\\t%0,%1,1
-+    adc\\t%0,%1,%2
-+    adc\\t%0,%1,%2
-+    adc\\t%0,%1,%2
-+    adc\\t%0,%1,%2"
-   [(set_attr "cond" "use")
-    (set_attr "type" "cc_arith")
--   (set_attr "length" "4,4,4,4,8")])
-+   (set_attr "length" "4,4,4,4,8,8")])
- 
- ; combiner-splitter cmp / scc -> cmp / adc
- (define_split
-@@ -3015,7 +2997,7 @@ archs4x, archs4xd"
-       DONE;
-     }
-   emit_insn (gen_sub_f (l0, l1, l2));
--  emit_insn (gen_sbc (h0, h1, h2, gen_rtx_REG (CCmode, CC_REG)));
-+  emit_insn (gen_sbc (h0, h1, h2));
-   DONE;
-   ")
- 
-@@ -3030,44 +3012,25 @@ archs4x, archs4xd"
-    (set_attr "type" "cc_arith")
-    (set_attr "length" "4")])
- 
--; w/c/c comes first (rather than Rcw/0/C_0) to prevent the middle-end
--; needlessly prioritizing the matching constraint.
--; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional execution
--; is used where possible.
--(define_insn_and_split "sbc"
--  [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
--	(minus:SI (minus:SI (match_operand:SI 1 "nonmemory_operand"
--						"c,0,c,0,cCal")
--			    (ltu:SI (match_operand:CC_C 3 "cc_use_register")
--				    (const_int 0)))
--		  (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
-+(define_insn "sbc"
-+  [(set (match_operand:SI 0 "dest_reg_operand"   "=r,r,r,r,r,r")
-+	(minus:SI
-+	 (minus:SI
-+	  (match_operand:SI 1 "nonmemory_operand" "r,  0,r,0,  r,Cal")
-+	  (ltu:SI (reg:CC_C CC_REG) (const_int 0)))
-+	 (match_operand:SI 2 "nonmemory_operand"  "r,C_0,L,I,Cal,r")))]
-   "register_operand (operands[1], SImode)
-    || register_operand (operands[2], SImode)"
-   "@
--	sbc %0,%1,%2
--	sub.cs %0,%1,1
--	sbc %0,%1,%2
--	sbc %0,%1,%2
--	sbc %0,%1,%2"
--  ; if we have a bad schedule after sched2, split.
--  "reload_completed
--   && !optimize_size && (!TARGET_ARC600_FAMILY)
--   && arc_scheduling_not_expected ()
--   && arc_sets_cc_p (prev_nonnote_insn (insn))
--   /* If next comes a return or other insn that needs a delay slot,
--      expect the adc to get into the delay slot.  */
--   && next_nonnote_insn (insn)
--   && !arc_need_delay (next_nonnote_insn (insn))
--   /* Restore operands before emitting.  */
--   && (extract_insn_cached (insn), 1)"
--  [(set (match_dup 0) (match_dup 4))
--   (cond_exec
--     (ltu (reg:CC_C CC_REG) (const_int 0))
--     (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1))))]
--  "operands[4] = simplify_gen_binary (MINUS, SImode, operands[1], operands[2]);"
-+    sbc\\t%0,%1,%2
-+    sub.cs\\t%0,%1,1
-+    sbc\\t%0,%1,%2
-+    sbc\\t%0,%1,%2
-+    sbc\\t%0,%1,%2
-+    sbc\\t%0,%1,%2"
-   [(set_attr "cond" "use")
-    (set_attr "type" "cc_arith")
--   (set_attr "length" "4,4,4,4,8")])
-+   (set_attr "length" "4,4,4,4,8,8")])
- 
- (define_insn "sub_f"
-   [(set (reg:CC CC_REG)
diff --git a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch b/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
deleted file mode 100644
index 051d4db341..0000000000
--- a/package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch
+++ /dev/null
@@ -1,121 +0,0 @@ 
-From 1557c3d919623a95c2aa090d3018c31401f63f88 Mon Sep 17 00:00:00 2001
-From: Tamar Christina <tamar.christina@arm.com>
-Date: Fri, 21 May 2021 12:16:56 +0100
-Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
-
-The Linux kernel has removed the interface to cyclades from
-the latest kernel headers[1] due to them being orphaned for the
-past 13 years.
-
-libsanitizer uses this header when compiling against glibc, but
-glibcs itself doesn't seem to have any references to cyclades.
-
-Further more it seems that the driver is broken in the kernel and
-the firmware doesn't seem to be available anymore.
-
-As such since this is breaking the build of libsanitizer (and so the
-GCC bootstrap[2]) I propose to remove this.
-
-[1] https://lkml.org/lkml/2021/3/2/153
-[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
-
-libsanitizer/ChangeLog:
-
-	PR sanitizer/100379
-	* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
-	llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
-	* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
-	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
----
- .../sanitizer_common_interceptors_ioctl.inc           |  9 ---------
- .../sanitizer_platform_limits_posix.cpp               | 11 -----------
- .../sanitizer_platform_limits_posix.h                 | 10 ----------
- 3 files changed, 30 deletions(-)
-
-diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
-index 490a04b2181..42e43a04441 100644
---- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
-+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
-@@ -366,15 +366,6 @@ static void ioctl_table_fill() {
- 
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
-   // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
--  _(CYGETDEFTHRESH, WRITE, sizeof(int));
--  _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
--  _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
--  _(CYGETTHRESH, WRITE, sizeof(int));
--  _(CYGETTIMEOUT, WRITE, sizeof(int));
--  _(CYSETDEFTHRESH, NONE, 0);
--  _(CYSETDEFTIMEOUT, NONE, 0);
--  _(CYSETTHRESH, NONE, 0);
--  _(CYSETTIMEOUT, NONE, 0);
-   _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
-   _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
-   _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
-diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-index aa845df4dde..badf6a401cc 100644
---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
-@@ -130,7 +130,6 @@ typedef struct user_fpregs elf_fpregset_t;
- # include <sys/procfs.h>
- #endif
- #include <sys/user.h>
--#include <linux/cyclades.h>
- #include <linux/if_eql.h>
- #include <linux/if_plip.h>
- #include <linux/lp.h>
-@@ -443,7 +442,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- 
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
-   unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
--  unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
- #if EV_VERSION > (0x010000)
-   unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
- #else
-@@ -809,15 +807,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
- #endif // SANITIZER_LINUX
- 
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
--  unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
--  unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
--  unsigned IOCTL_CYGETMON = CYGETMON;
--  unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
--  unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
--  unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
--  unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
--  unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
--  unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
-   unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
-   unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
-   unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
-diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
-index d82fd5e4005..dc6423bc297 100644
---- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
-+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
-@@ -974,7 +974,6 @@ extern unsigned struct_vt_mode_sz;
- 
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
- extern unsigned struct_ax25_parms_struct_sz;
--extern unsigned struct_cyclades_monitor_sz;
- extern unsigned struct_input_keymap_entry_sz;
- extern unsigned struct_ipx_config_data_sz;
- extern unsigned struct_kbdiacrs_sz;
-@@ -1319,15 +1318,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;
- #endif  // SANITIZER_LINUX
- 
- #if SANITIZER_LINUX && !SANITIZER_ANDROID
--extern unsigned IOCTL_CYGETDEFTHRESH;
--extern unsigned IOCTL_CYGETDEFTIMEOUT;
--extern unsigned IOCTL_CYGETMON;
--extern unsigned IOCTL_CYGETTHRESH;
--extern unsigned IOCTL_CYGETTIMEOUT;
--extern unsigned IOCTL_CYSETDEFTHRESH;
--extern unsigned IOCTL_CYSETDEFTIMEOUT;
--extern unsigned IOCTL_CYSETTHRESH;
--extern unsigned IOCTL_CYSETTIMEOUT;
- extern unsigned IOCTL_EQL_EMANCIPATE;
- extern unsigned IOCTL_EQL_ENSLAVE;
- extern unsigned IOCTL_EQL_GETMASTRCFG;
--- 
-2.31.1
-
diff --git a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch b/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
deleted file mode 100644
index 8b6be49e68..0000000000
--- a/package/gcc/arc-2020.09-release/0003-fixinc-don-t-fix-machine-names-in-__has_include-.-PR.patch
+++ /dev/null
@@ -1,124 +0,0 @@ 
-From 65754c50a57e5a891cee75bb744eb93fdb3c443e Mon Sep 17 00:00:00 2001
-From: Xi Ruoyao <xry111@mengyan1223.wang>
-Date: Mon, 28 Jun 2021 13:54:58 +0800
-Subject: [PATCH] fixinc: don't "fix" machine names in __has_include(...)
- [PR91085]
-
-fixincludes/
-
-	PR other/91085
-	* fixfixes.c (check_has_inc): New static function.
-	  (machine_name_fix): Don't replace header names in
-	  __has_include(...).
-	* inclhack.def (machine_name): Adjust test.
-	* tests/base/testing.h: Update.
-
-Upstream: 6bf383c37e6131a8e247e8a0997d55d65c830b6d
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
----
- fixincludes/fixfixes.c           | 45 ++++++++++++++++++++++++++++++--
- fixincludes/inclhack.def         |  3 ++-
- fixincludes/tests/base/testing.h |  2 +-
- 3 files changed, 46 insertions(+), 4 deletions(-)
-
-diff --git a/fixincludes/fixfixes.c b/fixincludes/fixfixes.c
-index 034e15d9985..3ff87812036 100644
---- a/fixincludes/fixfixes.c
-+++ b/fixincludes/fixfixes.c
-@@ -477,6 +477,39 @@ FIX_PROC_HEAD( char_macro_def_fix )
-   fputs (text, stdout);
- }
- 
-+/* Check if the pattern at pos is actually in a "__has_include(...)"
-+   directive.  Return the pointer to the ')' of this
-+   "__has_include(...)" if it is, NULL otherwise.  */
-+static const char *
-+check_has_inc (const char *begin, const char *pos, const char *end)
-+{
-+  static const char has_inc[] = "__has_include";
-+  const size_t has_inc_len = sizeof (has_inc) - 1;
-+  const char *p;
-+
-+  for (p = memmem (begin, pos - begin, has_inc, has_inc_len);
-+       p != NULL;
-+       p = memmem (p, pos - p, has_inc, has_inc_len))
-+    {
-+      p += has_inc_len;
-+      while (p < end && ISSPACE (*p))
-+        p++;
-+
-+      /* "__has_include" may appear as "defined(__has_include)",
-+         search for the next appearance then.  */
-+      if (*p != '(')
-+        continue;
-+
-+      /* To avoid too much complexity, just hope there is never a
-+         ')' in a header name.  */
-+      p = memchr (p, ')', end - p);
-+      if (p == NULL || p > pos)
-+        return p;
-+    }
-+
-+  return NULL;
-+}
-+
- /* Fix for machine name #ifdefs that are not in the namespace reserved
-    by the C standard.  They won't be defined if compiling with -ansi,
-    and the headers will break.  We go to some trouble to only change
-@@ -524,7 +557,7 @@ FIX_PROC_HEAD( machine_name_fix )
-       /* If the 'name_pat' matches in between base and limit, we have
-          a bogon.  It is not worth the hassle of excluding comments
-          because comments on #if/#ifdef lines are rare, and strings on
--         such lines are illegal.
-+         such lines are only legal in a "__has_include" directive.
- 
-          REG_NOTBOL means 'base' is not at the beginning of a line, which
-          shouldn't matter since the name_re has no ^ anchor, but let's
-@@ -544,8 +577,16 @@ FIX_PROC_HEAD( machine_name_fix )
-             break;
- 
-           p = base + match[0].rm_so;
--          base += match[0].rm_eo;
- 
-+          /* Check if the match is in __has_include(...) (PR 91085). */
-+          q = check_has_inc (base, p, limit);
-+          if (q) 
-+            {
-+              base = q + 1;
-+              goto again;
-+            }
-+
-+          base += match[0].rm_eo;
-           /* One more test: if on the same line we have the same string
-              with the appropriate underscores, then leave it alone.
-              We want exactly two leading and trailing underscores.  */
-diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def
-index f58e7771e1c..71bd717c233 100644
---- a/fixincludes/inclhack.def
-+++ b/fixincludes/inclhack.def
-@@ -3114,7 +3114,8 @@ fix = {
-     c_fix     = machine_name;
- 
-     test_text = "/* MACH_DIFF: */\n"
--    "#if defined( i386 ) || defined( sparc ) || defined( vax )"
-+    "#if defined( i386 ) || defined( sparc ) || defined( vax ) || "
-+    "defined( linux ) || __has_include ( <linux.h> )"
-     "\n/* no uniform test, so be careful  :-) */";
- };
- 
-diff --git a/fixincludes/tests/base/testing.h b/fixincludes/tests/base/testing.h
-index cf95321fb86..8b3accaf04e 100644
---- a/fixincludes/tests/base/testing.h
-+++ b/fixincludes/tests/base/testing.h
-@@ -64,7 +64,7 @@ BSD43__IOWR('T', 1) /* Some are multi-line */
- 
- #if defined( MACHINE_NAME_CHECK )
- /* MACH_DIFF: */
--#if defined( i386 ) || defined( sparc ) || defined( vax )
-+#if defined( i386 ) || defined( sparc ) || defined( vax ) || defined( linux ) || __has_include ( <linux.h> )
- /* no uniform test, so be careful  :-) */
- #endif  /* MACHINE_NAME_CHECK */
- 
--- 
-2.37.3
-
diff --git a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch b/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
deleted file mode 100644
index d354baf81f..0000000000
--- a/package/gcc/arc-2020.09-release/0100-uclibc-conf.patch
+++ /dev/null
@@ -1,29 +0,0 @@ 
-From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@gmail.com>
-Date: Tue, 2 May 2017 22:36:15 +0200
-Subject: [PATCH] uclibc-conf
-
-[Romain: convert to git patch]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- contrib/regression/objs-gcc.sh | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
-index 60b0497..6dc7ead 100755
---- a/contrib/regression/objs-gcc.sh
-+++ b/contrib/regression/objs-gcc.sh
-@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
--- 
-2.9.3
-
diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
index 478b0b1620..a2a38a005e 100644
--- a/package/gcc/gcc.hash
+++ b/package/gcc/gcc.hash
@@ -9,8 +9,6 @@  sha512  8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea78
 # From https://gcc.gnu.org/pub/gcc/releases/gcc-13.2.0/sha512.sum
 sha512  d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2  gcc-13.2.0.tar.xz
 
-# Locally calculated (fetched from Github)
-sha512  b0853e2b1c5998044392023fa653e399e74118c46e616504ac59e1a2cf27620f94434767ce06b6cf4ca3dfb57f81d6eda92752befaf095ea5e564a9181b4659c  gcc-arc-2020.09-release.tar.gz
 # Locally calculated (fetched from Github)
 sha512  2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1  gcc-or1k-musl-5.4.0-20170218.tar.gz
 
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index 93bc46643c..f858b9841f 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -10,13 +10,8 @@ 
 
 GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION))
 
-ifeq ($(BR2_GCC_VERSION_ARC),y)
-GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION))
-GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz
-else
 GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION)
 GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz
-endif
 
 HOST_GCC_LICENSE = GPL-2.0, GPL-3.0, LGPL-2.1, LGPL-3.0
 HOST_GCC_LICENSE_FILES = COPYING COPYING3 COPYING.LIB COPYING3.LIB