[Buildroot] [PATCH] ARC: Switch toolchain components to arc-2023.09-release

Yann E. MORIN yann.morin.1998 at free.fr
Sun Mar 3 16:16:42 UTC 2024


Alexey, All,

On 2024-01-04 09:12 -0800, Alexey Brodkin via buildroot spake thusly:
> With the most recent ARC GNU toolchain version released [1]
> we may switch to its stable and verified components for Buildroot's
> built-in toolchian.

I tried a basic build here on current master, and it fails to build in
glibc:

    $ cat defconfig
    BR2_arcle=y
    BR2_PER_PACKAGE_DIRECTORIES=y

    $ make
    [...]
    /home/ymorin/dev/buildroot/O/master/per-package/glibc/host/bin/arc-buildroot-linux-gnu-gcc \
    msort.c \
    [...] \
    -o /home/ymorin/dev/buildroot/O/master/build/glibc-2.38-44-gd37c2b20a4787463d192b32041c3406c2bd91de0/build/stdlib/msort.o \
    -MD -MP -MF \
    /home/ymorin/dev/buildroot/O/master/build/glibc-2.38-44-gd37c2b20a4787463d192b32041c3406c2bd91de0/build/stdlib/msort.o.dt \
    -MT /home/ymorin/dev/buildroot/O/master/build/glibc-2.38-44-gd37c2b20a4787463d192b32041c3406c2bd91de0/build/stdlib/msort.o
    msort.c: Assembler messages:
    msort.c:200: Error: opcode 'dmb' not supported for target arc700

Regards,
Yann E. MORIN.

> And while for ARCompact (i.e. ARC700) & ARCv2 (ARC HS38 & HS48)
> processors upstream components work just fine, in this new release
> of ARC GNU toolchain we have also support for newer ARCv3 procesors.
> 
> And so that update is more of an enabler for introduction of ARCv3
> in the next series of patches.
> 
> [1] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2023.09-release
> 
> Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> Cc: Giulio Benetti <giulio.benetti at benettiengineering.com>
> Cc: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> Cc: Waldemar Brodkorb <mail at waldemar-brodkorb.de>
> Cc: Yann E. MORIN <yann.morin.1998 at free.fr>
> Cc: Romain Naour <romain.naour at gmail.com>
> ---
>  .checkpackageignore                           |   4 -
>  package/binutils/Config.in.host               |   5 +-
>  .../0001-poison-system-directories.patch      | 310 ------------------
>  package/binutils/binutils.hash                |   2 +-
>  package/binutils/binutils.mk                  |   4 +-
>  package/gcc/Config.in.host                    |   4 +-
>  .../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/gdb/Config.in                         |   4 +-
>  package/gdb/Config.in.host                    |   2 +-
>  ...t-define-basic_string_view-to_string.patch | 114 -------
>  package/gdb/gdb.hash                          |   2 +-
>  package/gdb/gdb.mk                            |  20 +-
>  16 files changed, 22 insertions(+), 968 deletions(-)
>  delete mode 100644 package/binutils/arc-2020.09-release/0001-poison-system-directories.patch
>  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
>  delete mode 100644 package/gdb/arc-2020.09-release-gdb/0001-Do-not-define-basic_string_view-to_string.patch
> 
> diff --git a/.checkpackageignore b/.checkpackageignore
> index aa8a6abc4f..96220ee3fb 100644
> --- a/.checkpackageignore
> +++ b/.checkpackageignore
> @@ -202,7 +202,6 @@ package/bind/S81named Indent Shellcheck Variables
>  package/binutils/2.39/0001-sh-conf.patch Upstream
>  package/binutils/2.39/0002-poison-system-directories.patch Upstream
>  package/binutils/2.39/0003-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch Upstream
> -package/binutils/arc-2020.09-release/0001-poison-system-directories.patch Upstream
>  package/bird/0001-configure.ac-fix-build-with-autoconf-2.70.patch Upstream
>  package/bitcoin/0001-src-randomenv.cpp-fix-build-on-uclibc.patch Upstream
>  package/bmx7/0001-Fix-schedule.c-378-36-error-SIOCGSTAMP-undeclared.patch Upstream
> @@ -451,9 +450,6 @@ package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch Upstream
>  package/gcc/8.4.0/0002-Revert-re-PR-target-92095-internal-error-with-O1-mcp.patch Upstream
>  package/gcc/8.4.0/0003-libsanitizer-Remove-cyclades-from-libsanitizer.patch Upstream
>  package/gcc/8.4.0/0004-disable-split-stack-for-non-thread-builds.patch Upstream
> -package/gcc/arc-2020.09-release/0001-arc-Refurbish-adc-sbc-patterns.patch Upstream
> -package/gcc/arc-2020.09-release/0002-libsanitizer-Remove-cyclades-from-libsanitizer.patch Sob Upstream
> -package/gcc/arc-2020.09-release/0100-uclibc-conf.patch Upstream
>  package/gcr/0001-meson-Fix-unknown-kw-argument-in-gnome.generate_gir.patch Upstream
>  package/gdal/0001-fix-uclibc-build-without-NPTL.patch Upstream
>  package/gdb/12.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch Upstream
> diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
> index bc7dc4443c..2f1ddf4bdc 100644
> --- a/package/binutils/Config.in.host
> +++ b/package/binutils/Config.in.host
> @@ -26,15 +26,14 @@ config BR2_BINUTILS_VERSION_2_41_X
>  	bool "binutils 2.41"
>  
>  config BR2_BINUTILS_VERSION_ARC
> -	bool "binutils arc (2.34.50)"
> +	bool "binutils arc (2.41)"
>  	depends on BR2_arc
> -	select BR2_PACKAGE_BINUTILS_HAS_NO_LIBSFRAME
>  
>  endchoice
>  
>  config BR2_BINUTILS_VERSION
>  	string
> -	default "arc-2020.09-release"	if BR2_BINUTILS_VERSION_ARC
> +	default "arc-2023.09-release"	if BR2_BINUTILS_VERSION_ARC
>  	default "2.39"		if BR2_BINUTILS_VERSION_2_39_X
>  	default "2.40"		if BR2_BINUTILS_VERSION_2_40_X
>  	default "2.41"		if BR2_BINUTILS_VERSION_2_41_X
> diff --git a/package/binutils/arc-2020.09-release/0001-poison-system-directories.patch b/package/binutils/arc-2020.09-release/0001-poison-system-directories.patch
> deleted file mode 100644
> index 7a76ef2963..0000000000
> --- a/package/binutils/arc-2020.09-release/0001-poison-system-directories.patch
> +++ /dev/null
> @@ -1,310 +0,0 @@
> -From 5f62ad7ce534e3384d6ed8892614979da297bd70 Mon Sep 17 00:00:00 2001
> -From: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
> -Date: Mon, 14 Oct 2019 16:45:15 +0300
> -Subject: [PATCH] [PATCH] poison-system-directories
> -
> -Patch adapted to arc-binutils-gdb-2019.09
> -Signed-off-by: Evgeniy Didin <Evgeniy.Didin at synopsys.com>
> -
> -Patch adapted to binutils 2.23.2 and extended to use
> -BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni.
> -
> -[Romain: rebase on top of 2.26]
> -Signed-off-by: Romain Naour <romain.naour at gmail.com>
> -[Gustavo: adapt to binutils 2.25]
> -Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> -Signed-off-by: Gustavo Zacarias <gustavo at zacarias.com.ar>
> -
> -Upstream-Status: Inappropriate [distribution: codesourcery]
> -
> -Patch originally created by Mark Hatle, forward-ported to
> -binutils 2.21 by Scott Garman.
> -
> -purpose:  warn for uses of system directories when cross linking
> -
> -Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
> -
> -2008-07-02  Joseph Myers  <joseph at codesourcery.com>
> -
> -    ld/
> -    * ld.h (args_type): Add error_poison_system_directories.
> -    * ld.texinfo (--error-poison-system-directories): Document.
> -    * ldfile.c (ldfile_add_library_path): Check
> -    command_line.error_poison_system_directories.
> -    * ldmain.c (main): Initialize
> -    command_line.error_poison_system_directories.
> -    * lexsup.c (enum option_values): Add
> -    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES.
> -    (ld_options): Add --error-poison-system-directories.
> -    (parse_args): Handle new option.
> -
> -2007-06-13  Joseph Myers  <joseph at codesourcery.com>
> -
> -    ld/
> -    * config.in: Regenerate.
> -    * ld.h (args_type): Add poison_system_directories.
> -    * ld.texinfo (--no-poison-system-directories): Document.
> -    * ldfile.c (ldfile_add_library_path): Check
> -    command_line.poison_system_directories.
> -    * ldmain.c (main): Initialize
> -    command_line.poison_system_directories.
> -    * lexsup.c (enum option_values): Add
> -    OPTION_NO_POISON_SYSTEM_DIRECTORIES.
> -    (ld_options): Add --no-poison-system-directories.
> -    (parse_args): Handle new option.
> -
> -2007-04-20  Joseph Myers  <joseph at codesourcery.com>
> -
> -    Merge from Sourcery G++ binutils 2.17:
> -
> -    2007-03-20  Joseph Myers  <joseph at codesourcery.com>
> -    Based on patch by Mark Hatle <mark.hatle at windriver.com>.
> -    ld/
> -    * configure.ac (--enable-poison-system-directories): New option.
> -    * configure, config.in: Regenerate.
> -    * ldfile.c (ldfile_add_library_path): If
> -    ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib,
> -    /usr/lib, /usr/local/lib or /usr/X11R6/lib.
> -
> -Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> -Signed-off-by: Scott Garman <scott.a.garman at intel.com>
> ----
> - ld/config.in    |  3 +++
> - ld/configure    | 14 ++++++++++++++
> - ld/configure.ac | 10 ++++++++++
> - ld/ld.h         |  8 ++++++++
> - ld/ld.texi      | 12 ++++++++++++
> - ld/ldfile.c     | 17 +++++++++++++++++
> - ld/ldlex.h      |  2 ++
> - ld/ldmain.c     |  2 ++
> - ld/lexsup.c     | 21 +++++++++++++++++++++
> - 9 files changed, 89 insertions(+)
> -
> -diff --git a/ld/config.in b/ld/config.in
> -index d93c9b08300..5da2742beac 100644
> ---- a/ld/config.in
> -+++ b/ld/config.in
> -@@ -31,6 +31,9 @@
> -    language is requested. */
> - #undef ENABLE_NLS
> - 
> -+/* Define to warn for use of native system library directories */
> -+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
> -+
> - /* Additional extension a shared object might have. */
> - #undef EXTRA_SHLIB_EXTENSION
> - 
> -diff --git a/ld/configure b/ld/configure
> -index 2d6ca5c0445..563f9921f7f 100755
> ---- a/ld/configure
> -+++ b/ld/configure
> -@@ -823,6 +823,7 @@ with_lib_path
> - enable_targets
> - enable_64_bit_bfd
> - with_sysroot
> -+enable_poison_system_directories
> - enable_gold
> - enable_got
> - enable_compressed_debug_sections
> -@@ -1487,6 +1488,8 @@ Optional Features:
> -   --disable-largefile     omit support for large files
> -   --enable-targets        alternative target configurations
> -   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
> -+  --enable-poison-system-directories
> -+                          warn for use of native system library directories
> -   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
> -   --enable-got=<type>     GOT handling scheme (target, single, negative,
> -                           multigot)
> -@@ -15804,7 +15807,18 @@ else
> - fi
> - 
> - 
> -+# Check whether --enable-poison-system-directories was given.
> -+if test "${enable_poison_system_directories+set}" = set; then :
> -+  enableval=$enable_poison_system_directories;
> -+else
> -+  enable_poison_system_directories=no
> -+fi
> -+
> -+if test "x${enable_poison_system_directories}" = "xyes"; then
> - 
> -+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
> -+
> -+fi
> - 
> - # Check whether --enable-got was given.
> - if test "${enable_got+set}" = set; then :
> -diff --git a/ld/configure.ac b/ld/configure.ac
> -index 41a51bbb7e9..dbaa98a9e17 100644
> ---- a/ld/configure.ac
> -+++ b/ld/configure.ac
> -@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
> - AC_SUBST(TARGET_SYSTEM_ROOT)
> - AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
> - 
> -+AC_ARG_ENABLE([poison-system-directories],
> -+         AS_HELP_STRING([--enable-poison-system-directories],
> -+                [warn for use of native system library directories]),,
> -+         [enable_poison_system_directories=no])
> -+if test "x${enable_poison_system_directories}" = "xyes"; then
> -+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
> -+       [1],
> -+       [Define to warn for use of native system library directories])
> -+fi
> -+
> - dnl Use --enable-gold to decide if this linker should be the default.
> - dnl "install_as_default" is set to false if gold is the default linker.
> - dnl "installed_linker" is the installed BFD linker name.
> -diff --git a/ld/ld.h b/ld/ld.h
> -index 55078a9637b..511e9bc34b7 100644
> ---- a/ld/ld.h
> -+++ b/ld/ld.h
> -@@ -180,6 +180,14 @@ typedef struct
> -      in the linker script.  */
> -   bfd_boolean force_group_allocation;
> - 
> -+  /* If TRUE (the default) warn for uses of system directories when
> -+     cross linking.  */
> -+  bfd_boolean poison_system_directories;
> -+
> -+  /* If TRUE (default FALSE) give an error for uses of system
> -+     directories when cross linking instead of a warning.  */
> -+  bfd_boolean error_poison_system_directories;
> -+
> -   /* Big or little endian as set on command line.  */
> -   enum endian_enum endian;
> - 
> -diff --git a/ld/ld.texi b/ld/ld.texi
> -index fcbc335c95e..6ba7ebdb32a 100644
> ---- a/ld/ld.texi
> -+++ b/ld/ld.texi
> -@@ -2557,6 +2557,18 @@ string identifying the original linked file does not change.
> - 
> - Passing @code{none} for @var{style} disables the setting from any
> - @code{--build-id} options earlier on the command line.
> -+
> -+ at kindex --no-poison-system-directories
> -+ at item --no-poison-system-directories
> -+Do not warn for @option{-L} options using system directories such as
> -+ at file{/usr/lib} when cross linking.  This option is intended for use
> -+in chroot environments when such directories contain the correct
> -+libraries for the target system rather than the host.
> -+
> -+ at kindex --error-poison-system-directories
> -+ at item --error-poison-system-directories
> -+Give an error instead of a warning for @option{-L} options using
> -+system directories when cross linking.
> - @end table
> - 
> - @c man end
> -diff --git a/ld/ldfile.c b/ld/ldfile.c
> -index 7f60319390e..0bcc06db964 100644
> ---- a/ld/ldfile.c
> -+++ b/ld/ldfile.c
> -@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
> -     new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
> -   else
> -     new_dirs->name = xstrdup (name);
> -+
> -+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
> -+  if (command_line.poison_system_directories
> -+  && ((!strncmp (name, "/lib", 4))
> -+      || (!strncmp (name, "/usr/lib", 8))
> -+      || (!strncmp (name, "/usr/local/lib", 14))
> -+      || (!strncmp (name, "/usr/X11R6/lib", 14))))
> -+   {
> -+     if (command_line.error_poison_system_directories)
> -+       einfo (_("%X%P: error: library search path \"%s\" is unsafe for "
> -+            "cross-compilation\n"), name);
> -+     else
> -+       einfo (_("%P: warning: library search path \"%s\" is unsafe for "
> -+            "cross-compilation\n"), name);
> -+   }
> -+#endif
> -+
> - }
> - 
> - /* Try to open a BFD for a lang_input_statement.  */
> -diff --git a/ld/ldlex.h b/ld/ldlex.h
> -index 32a7a6409e8..c02b64bf92f 100644
> ---- a/ld/ldlex.h
> -+++ b/ld/ldlex.h
> -@@ -152,6 +152,8 @@ enum option_values
> -   OPTION_NO_PRINT_MAP_DISCARDED,
> -   OPTION_NON_CONTIGUOUS_REGIONS,
> -   OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS,
> -+  OPTION_NO_POISON_SYSTEM_DIRECTORIES,
> -+  OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
> - };
> -
> - 
> - /* The initial parser states.  */
> -diff --git a/ld/ldmain.c b/ld/ldmain.c
> -index 34c19223137..66d2c3f4bcf 100644
> ---- a/ld/ldmain.c
> -+++ b/ld/ldmain.c
> -@@ -270,6 +270,8 @@ main (int argc, char **argv)
> -   command_line.warn_mismatch = TRUE;
> -   command_line.warn_search_mismatch = TRUE;
> -   command_line.check_section_addresses = -1;
> -+  command_line.poison_system_directories = TRUE;
> -+  command_line.error_poison_system_directories = FALSE;
> - 
> -   /* We initialize DEMANGLING based on the environment variable
> -      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
> -diff --git a/ld/lexsup.c b/ld/lexsup.c
> -index 1c15ac29c0c..8b714e10a40 100644
> ---- a/ld/lexsup.c
> -+++ b/ld/lexsup.c
> -@@ -549,6 +549,14 @@ static const struct ld_option ld_options[] =
> -   { {"no-print-map-discarded", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},
> -     '\0', NULL, N_("Do not show discarded sections in map file output"),
> -     TWO_DASHES },
> -+  { {"no-poison-system-directories", no_argument, NULL,
> -+    OPTION_NO_POISON_SYSTEM_DIRECTORIES},
> -+    '\0', NULL, N_("Do not warn for -L options using system directories"),
> -+    TWO_DASHES },
> -+  { {"error-poison-system-directories", no_argument, NULL,
> -+    OPTION_ERROR_POISON_SYSTEM_DIRECTORIES},
> -+    '\0', NULL, N_("Give an error for -L options using system directories"),
> -+    TWO_DASHES },
> - };
> - 
> - #define OPTION_COUNT ARRAY_SIZE (ld_options)
> -@@ -561,6 +569,7 @@ parse_args (unsigned argc, char **argv)
> -   int ingroup = 0;
> -   char *default_dirlist = NULL;
> -   char *shortopts;
> -+  char *BR_paranoid_env;
> -   struct option *longopts;
> -   struct option *really_longopts;
> -   int last_optind;
> -@@ -1549,6 +1558,14 @@ parse_args (unsigned argc, char **argv)
> - 	  }
> - 	  break;
> - 
> -+	case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
> -+	  command_line.poison_system_directories = FALSE;
> -+	  break;
> -+
> -+	case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
> -+	  command_line.error_poison_system_directories = TRUE;
> -+	  break;
> -+
> - 	case OPTION_PUSH_STATE:
> - 	  input_flags.pushed = xmemdup (&input_flags,
> - 					sizeof (input_flags),
> -@@ -1600,6 +1617,10 @@ parse_args (unsigned argc, char **argv)
> -       command_line.soname = NULL;
> -     }
> - 
> -+  BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH");
> -+  if (BR_paranoid_env && strlen(BR_paranoid_env) > 0)
> -+    command_line.error_poison_system_directories = TRUE;
> -+
> -   while (ingroup)
> -     {
> -       einfo (_("%P: missing --end-group; added as last command line option\n"));
> --- 
> -2.16.2
> -
> diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash
> index 564a4c3bd7..519a0ca887 100644
> --- a/package/binutils/binutils.hash
> +++ b/package/binutils/binutils.hash
> @@ -4,7 +4,7 @@ sha512  a37e042523bc46494d99d5637c3f3d8f9956d9477b748b3b1f6d7dfbb8d968ed52c932e8
>  sha512  5df45d0bd6ddabdce4f35878c041e46a92deef01e7dea5facc97fd65cc06b59abc6fba0eb454b68e571c7e14038dc823fe7f2263843e6e627b7444eaf0fe9374  binutils-2.41.tar.xz
>  
>  # Locally calculated (fetched from Github)
> -sha512  76a8227a19218435319c660e4983ea17985194b7f496f163e97543e7f6fd3e9249241fdc05a16ba512fba96a1d846c1f7b080983404d821d6215f10e7f11e238  binutils-gdb-arc-2020.09-release.tar.gz
> +sha512  3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d  binutils-gdb-arc-2023.09-release.tar.gz
>  
>  # locally computed
>  sha256  8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903  COPYING3
> diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> index 4bc1b69fa0..6846933646 100644
> --- a/package/binutils/binutils.mk
> +++ b/package/binutils/binutils.mk
> @@ -9,13 +9,13 @@
>  BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION))
>  ifeq ($(BINUTILS_VERSION),)
>  ifeq ($(BR2_arc),y)
> -BINUTILS_VERSION = arc-2020.09-release
> +BINUTILS_VERSION = arc-2023.09-release
>  else
>  BINUTILS_VERSION = 2.40
>  endif
>  endif # BINUTILS_VERSION
>  
> -ifeq ($(BINUTILS_VERSION),arc-2020.09-release)
> +ifeq ($(BINUTILS_VERSION),arc-2023.09-release)
>  BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION))
>  BINUTILS_SOURCE = binutils-gdb-$(BINUTILS_VERSION).tar.gz
>  BINUTILS_FROM_GIT = y
> diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
> index ebdcdba62e..fabc6173f5 100644
> --- a/package/gcc/Config.in.host
> +++ b/package/gcc/Config.in.host
> @@ -10,7 +10,7 @@ choice
>  	  Select the version of gcc you wish to use.
>  
>  config BR2_GCC_VERSION_ARC
> -	bool "gcc arc (10.x)"
> +	bool "gcc arc (13.1)"
>  	# Only supported architecture
>  	depends on BR2_arc
>  	select BR2_TOOLCHAIN_GCC_AT_LEAST_10
> @@ -79,7 +79,7 @@ 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
> +	default "arc-2023.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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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..5061a603bc 100644
> --- a/package/gcc/gcc.hash
> +++ b/package/gcc/gcc.hash
> @@ -10,7 +10,7 @@ sha512  8fb799dfa2e5de5284edf8f821e3d40c2781e4c570f5adfdb1ca0671fcae3fb7f794ea78
>  sha512  d99e4826a70db04504467e349e9fbaedaa5870766cda7c5cab50cdebedc4be755ebca5b789e1232a34a20be1a0b60097de9280efe47bdb71c73251e30b0862a2  gcc-13.2.0.tar.xz
>  
>  # Locally calculated (fetched from Github)
> -sha512  b0853e2b1c5998044392023fa653e399e74118c46e616504ac59e1a2cf27620f94434767ce06b6cf4ca3dfb57f81d6eda92752befaf095ea5e564a9181b4659c  gcc-arc-2020.09-release.tar.gz
> +sha512  4dca20f517a42bb027fec605965b09fb917a535eebf3fe3e811d93476b02b1962df5ad4665f117bd44c2ec8e8015d51a44c00591761fe5f259c201ac5c7d920f  gcc-arc-2023.09-release.tar.gz
>  # Locally calculated (fetched from Github)
>  sha512  2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1  gcc-or1k-musl-5.4.0-20170218.tar.gz
>  
> diff --git a/package/gdb/Config.in b/package/gdb/Config.in
> index 7251dce668..574ad5462f 100644
> --- a/package/gdb/Config.in
> +++ b/package/gdb/Config.in
> @@ -58,8 +58,8 @@ config BR2_PACKAGE_GDB_DEBUGGER
>  	bool "full debugger"
>  	depends on BR2_USE_WCHAR
>  	depends on !BR2_sh
> -	select BR2_PACKAGE_GMP if !BR2_arc
> -	select BR2_PACKAGE_MPFR if BR2_GDB_VERSION_14
> +	select BR2_PACKAGE_GMP
> +	select BR2_PACKAGE_MPFR if (BR2_GDB_VERSION_14 || BR2_arc)
>  	select BR2_PACKAGE_NCURSES
>  	select BR2_PACKAGE_ZLIB
>  
> diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
> index da35fd94f7..891e45948e 100644
> --- a/package/gdb/Config.in.host
> +++ b/package/gdb/Config.in.host
> @@ -62,7 +62,7 @@ endif
>  # If cross-gdb is not enabled, the latest stable version is chosen.
>  config BR2_GDB_VERSION
>  	string
> -	default "arc-2020.09-release-gdb" if BR2_arc
> +	default "arc-2023.09-release" if BR2_arc
>  	default "12.1"     if BR2_GDB_VERSION_12
>  	default "13.2"     if BR2_GDB_VERSION_13 || !BR2_PACKAGE_HOST_GDB
>  	# When making 14.x the default, or 14.x becomes the oldest version,
> diff --git a/package/gdb/arc-2020.09-release-gdb/0001-Do-not-define-basic_string_view-to_string.patch b/package/gdb/arc-2020.09-release-gdb/0001-Do-not-define-basic_string_view-to_string.patch
> deleted file mode 100644
> index 210ba6d609..0000000000
> --- a/package/gdb/arc-2020.09-release-gdb/0001-Do-not-define-basic_string_view-to_string.patch
> +++ /dev/null
> @@ -1,114 +0,0 @@
> -From 5ac588997c3c2d032d5d5145d9245eb37354c23b Mon Sep 17 00:00:00 2001
> -From: Tom Tromey <tromey at adacore.com>
> -Date: Tue, 30 Jun 2020 07:53:03 -0600
> -Subject: [PATCH] Do not define basic_string_view::to_string
> -
> -gdb's copy of basic_string_view includes a to_string method.  However,
> -according to cppreference, this is not a method on the real
> -std::basic_string_view:
> -
> -https://en.cppreference.com/w/cpp/string/basic_string_view
> -
> -This difference matters because gdb_string_view.h will use the
> -standard implementation when built with a C++17 or later.  This caused
> -PR build/26183.
> -
> -This patch fixes the problem by changing the method to be a standalone
> -helper function, and then rewriting the uses.  Tested by rebuilding
> -with a version of GCC that defaults to C++17.
> -
> -(Note that the build still is not clean; and also I noticed that the
> -libstdc++ string_view forbids the use of nullptr ... I wonder if gdb
> -violates that.)
> -
> -gdb/ChangeLog
> -2020-06-30  Tom Tromey  <tromey at adacore.com>
> -
> -	PR build/26183:
> -	* ada-lang.c (ada_lookup_name_info::ada_lookup_name_info): Use
> -	gdb::to_string.
> -
> -gdbsupport/ChangeLog
> -2020-06-30  Tom Tromey  <tromey at adacore.com>
> -
> -	PR build/26183:
> -	* gdb_string_view.h (basic_string_view::to_string): Remove.
> -	(gdb::to_string): New function.
> -
> -Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5ac588997c3c2d032d5d5145d9245eb37354c23b
> -Bug report: https://sourceware.org/bugzilla/show_bug.cgi?id=26183
> -
> -Signed-off-by: Bernd Kuhls <bernd at kuhls.net>
> ----
> - gdb/ChangeLog                |  6 ++++++
> - gdb/ada-lang.c               |  8 ++++----
> - gdbsupport/ChangeLog         |  6 ++++++
> - gdbsupport/gdb_string_view.h | 17 ++++++++++-------
> - 4 files changed, 26 insertions(+), 11 deletions(-)
> -
> -diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
> -index 9b0c2efbfe2..98508c168bc 100644
> ---- a/gdb/ada-lang.c
> -+++ b/gdb/ada-lang.c
> -@@ -13553,10 +13553,10 @@ ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
> -     {
> -       if (user_name.back () == '>')
> - 	m_encoded_name
> --	  = user_name.substr (1, user_name.size () - 2).to_string ();
> -+	  = gdb::to_string (user_name.substr (1, user_name.size () - 2));
> -       else
> - 	m_encoded_name
> --	  = user_name.substr (1, user_name.size () - 1).to_string ();
> -+	  = gdb::to_string (user_name.substr (1, user_name.size () - 1));
> -       m_encoded_p = true;
> -       m_verbatim_p = true;
> -       m_wild_match_p = false;
> -@@ -13575,10 +13575,10 @@ ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
> - 	  if (encoded != NULL)
> - 	    m_encoded_name = encoded;
> - 	  else
> --	    m_encoded_name = user_name.to_string ();
> -+	    m_encoded_name = gdb::to_string (user_name);
> - 	}
> -       else
> --	m_encoded_name = user_name.to_string ();
> -+	m_encoded_name = gdb::to_string (user_name);
> - 
> -       /* Handle the 'package Standard' special case.  See description
> - 	 of m_standard_p.  */
> -diff --git a/gdbsupport/gdb_string_view.h b/gdbsupport/gdb_string_view.h
> -index c0ae7a8a2d9..65124e67e54 100644
> ---- a/gdbsupport/gdb_string_view.h
> -+++ b/gdbsupport/gdb_string_view.h
> -@@ -245,13 +245,6 @@ namespace gdb {
> - 	  return { this->_M_str, this->_M_len };
> - 	}
> - 
> --      template<typename _Allocator = std::allocator<_CharT>>
> --	std::basic_string<_CharT, _Traits, _Allocator>
> --	to_string(const _Allocator& __alloc = _Allocator()) const
> --	{
> --	  return { this->_M_str, this->_M_len, __alloc };
> --	}
> --
> -       size_type
> -       copy(_CharT* __str, size_type __n, size_type __pos = 0) const
> -       {
> -@@ -560,4 +553,14 @@ namespace gdb {
> - 
> - #endif // __cplusplus < 201703L
> - 
> -+namespace gdb {
> -+
> -+static inline std::string
> -+to_string(const gdb::string_view &view)
> -+{
> -+  return { view.data (), view.size () };
> -+}
> -+
> -+}
> -+
> - #endif /* COMMON_GDB_STRING_VIEW_H */
> --- 
> -2.39.3
> -
> diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash
> index ba90bff5d6..c62da28cbf 100644
> --- a/package/gdb/gdb.hash
> +++ b/package/gdb/gdb.hash
> @@ -6,4 +6,4 @@ sha512  8185d3e11ab60dafff5860a5016577bfe7dd7547ef01ebc867bc247603d82b74ff74c4f2
>  sha512  575e198105076fc4a88f68591aa114ab9c1196e84386a3f7b9b58fe5f30cdeed33f6a5f957b68f08c47284ec922bb60c964627e238471419673fd913575ce427  gdb-14.1.tar.xz
>  
>  # Locally calculated (fetched from Github)
> -sha512  5a2acf2fd33ab2ff589e1037ca40abda54328997dcff26b2b49b874bd3be980be5a63342962254f3c3bda98e32ce7a33af704d37353352833dee193135600458  gdb-arc-2020.09-release-gdb.tar.gz
> +sha512  3518b47d5c11d1fb478ee152bde1719363f9391db73f3b9f5491217c17742bef8ebca6a51a40302dfaa9476c5a32a8b8f70a4bf64289422dea5f750ae53ab88d  gdb-arc-2023.09-release.tar.gz
> diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
> index c67a292619..f96086eed2 100644
> --- a/package/gdb/gdb.mk
> +++ b/package/gdb/gdb.mk
> @@ -8,7 +8,7 @@ GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION))
>  GDB_SITE = $(BR2_GNU_MIRROR)/gdb
>  GDB_SOURCE = gdb-$(GDB_VERSION).tar.xz
>  
> -ifeq ($(BR2_arc),y)
> +ifeq ($(GDB_VERSION),arc-2023.09-release)
>  GDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(GDB_VERSION))
>  GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
>  GDB_FROM_GIT = y
> @@ -56,11 +56,8 @@ GDB_DEPENDENCIES += host-flex host-bison
>  HOST_GDB_DEPENDENCIES += host-flex host-bison
>  endif
>  
> -# All newer versions of GDB need host-gmp, so it's only for older
> -# versions that the dependency can be avoided.
> -ifeq ($(BR2_arc),)
> +# All newer versions of GDB need host-gmp
>  HOST_GDB_DEPENDENCIES += host-gmp
> -endif
>  
>  # When gdb sources are fetched from the binutils-gdb repository, they
>  # also contain the binutils sources, but binutils shouldn't be built,
> @@ -158,9 +155,8 @@ GDB_CONF_OPTS += \
>  endif
>  
>  # Starting from GDB 11.x, gmp is needed as a dependency to build full
> -# gdb. So we avoid the dependency only for the special version used on
> -# ARC.
> -ifeq ($(BR2_arc):$(BR2_PACKAGE_GDB_DEBUGGER),:y)
> +# gdb.
> +ifeq ($(BR2_PACKAGE_GDB_DEBUGGER),y)
>  GDB_CONF_OPTS += \
>  	--with-libgmp-prefix=$(STAGING_DIR)/usr
>  GDB_DEPENDENCIES += gmp
> @@ -168,7 +164,9 @@ endif
>  
>  # Starting from GDB 14.x, mpfr is needed as a dependency to build full
>  # gdb.
> -ifeq ($(BR2_GDB_VERSION_14)$(BR2_PACKAGE_GDB_DEBUGGER),yy)
> +# GDB fork from ARC GNU tools 2023.09 is based on GDB14 branch and so
> +# requires MPFR as well.
> +ifeq ($(BR2_GDB_VERSION_14)$(BR2_arc)$(BR2_PACKAGE_GDB_DEBUGGER),yy)
>  GDB_DEPENDENCIES += mpfr
>  GDB_CONF_OPTS += --with-mpfr=$(STAGING_DIR)
>  else
> @@ -272,7 +270,9 @@ HOST_GDB_CONF_OPTS = \
>  	$(GDB_DISABLE_BINUTILS_CONF_OPTS)
>  
>  # GDB newer than 14.x need host-mpfr
> -ifeq ($(BR2_GDB_VERSION_14),y)
> +# GDB fork from ARC GNU tools 2023.09 is based on GDB14 branch and so
> +# requires MPFR as well.
> +ifeq ($(BR2_GDB_VERSION_14)$(BR2_arc),y)
>  HOST_GDB_DEPENDENCIES += host-mpfr
>  HOST_GDB_CONF_OPTS += --with-mpfr=$(HOST_DIR)
>  else
> -- 
> 2.31.1
> 
> 
> _______________________________________________
> buildroot mailing list
> buildroot at buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'



More information about the buildroot mailing list