[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