diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host index c5daee7f95..9def812dc1 100644 --- a/package/binutils/Config.in.host +++ b/package/binutils/Config.in.host @@ -37,7 +37,7 @@ endchoice config BR2_BINUTILS_VERSION string - default "arc-2019.03-release" if BR2_BINUTILS_VERSION_ARC + default "arc-2019.09-eng002" if BR2_BINUTILS_VERSION_ARC default "c66d8bbcebfddf713b2b436e1b135e6b125a55a5" if BR2_BINUTILS_VERSION_CSKY default "2.30" if BR2_BINUTILS_VERSION_2_30_X default "2.31.1" if BR2_BINUTILS_VERSION_2_31_X diff --git a/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch b/package/binutils/arc-2019.09-eng002/0001-poison-system-directories.patch similarity index 86% rename from package/binutils/arc-2019.03-release/0001-poison-system-directories.patch rename to package/binutils/arc-2019.09-eng002/0001-poison-system-directories.patch index 90c7ac760a..f6a78c7cdd 100644 --- a/package/binutils/arc-2019.03-release/0001-poison-system-directories.patch +++ b/package/binutils/arc-2019.09-eng002/0001-poison-system-directories.patch @@ -1,7 +1,10 @@ -From 7d1e6ed1d57e839207e0ece7561bd4709032de9f Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Fri, 25 Dec 2015 11:45:38 +0100 -Subject: [PATCH] poison-system-directories +From 5f62ad7ce534e3384d6ed8892614979da297bd70 Mon Sep 17 00:00:00 2001 +From: Evgeniy Didin +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 Patch adapted to binutils 2.23.2 and extended to use BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. @@ -78,7 +81,7 @@ Signed-off-by: Scott Garman 9 files changed, 89 insertions(+) diff --git a/ld/config.in b/ld/config.in -index d93c9b0..5da2742 100644 +index d93c9b08300..5da2742beac 100644 --- a/ld/config.in +++ b/ld/config.in @@ -31,6 +31,9 @@ @@ -92,10 +95,10 @@ index d93c9b0..5da2742 100644 #undef EXTRA_SHLIB_EXTENSION diff --git a/ld/configure b/ld/configure -index 300a272..d68890f 100755 +index 2d6ca5c0445..563f9921f7f 100755 --- a/ld/configure +++ b/ld/configure -@@ -822,6 +822,7 @@ with_lib_path +@@ -823,6 +823,7 @@ with_lib_path enable_targets enable_64_bit_bfd with_sysroot @@ -103,7 +106,7 @@ index 300a272..d68890f 100755 enable_gold enable_got enable_compressed_debug_sections -@@ -1486,6 +1487,8 @@ Optional Features: +@@ -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) @@ -112,7 +115,7 @@ index 300a272..d68890f 100755 --enable-gold[=ARG] build gold [ARG={default,yes,no}] --enable-got= GOT handling scheme (target, single, negative, multigot) -@@ -15803,7 +15806,18 @@ else +@@ -15804,7 +15807,18 @@ else fi @@ -132,7 +135,7 @@ index 300a272..d68890f 100755 # Check whether --enable-got was given. if test "${enable_got+set}" = set; then : diff --git a/ld/configure.ac b/ld/configure.ac -index d10c553..9f1b57b 100644 +index 41a51bbb7e9..dbaa98a9e17 100644 --- a/ld/configure.ac +++ b/ld/configure.ac @@ -94,6 +94,16 @@ AC_SUBST(use_sysroot) @@ -153,7 +156,7 @@ index d10c553..9f1b57b 100644 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 ba914b9..9df17da 100644 +index 55078a9637b..511e9bc34b7 100644 --- a/ld/ld.h +++ b/ld/ld.h @@ -180,6 +180,14 @@ typedef struct @@ -172,10 +175,10 @@ index ba914b9..9df17da 100644 enum endian_enum endian; diff --git a/ld/ld.texi b/ld/ld.texi -index 40d79dd..137d46c 100644 +index fcbc335c95e..6ba7ebdb32a 100644 --- a/ld/ld.texi +++ b/ld/ld.texi -@@ -2479,6 +2479,18 @@ string identifying the original linked file does not change. +@@ -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. @@ -195,7 +198,7 @@ index 40d79dd..137d46c 100644 @c man end diff --git a/ld/ldfile.c b/ld/ldfile.c -index b3d166c..3dcbf66 100644 +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) @@ -223,23 +226,23 @@ index b3d166c..3dcbf66 100644 /* Try to open a BFD for a lang_input_statement. */ diff --git a/ld/ldlex.h b/ld/ldlex.h -index 04d6fd5..d7df005 100644 +index 32a7a6409e8..c02b64bf92f 100644 --- a/ld/ldlex.h +++ b/ld/ldlex.h -@@ -148,6 +148,8 @@ enum option_values - OPTION_REQUIRE_DEFINED_SYMBOL, - OPTION_ORPHAN_HANDLING, +@@ -150,6 +150,8 @@ enum option_values OPTION_FORCE_GROUP_ALLOCATION, + OPTION_PRINT_MAP_DISCARDED, + OPTION_NO_PRINT_MAP_DISCARDED, + 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 f31eeb2..25f8497 100644 +index 34c19223137..66d2c3f4bcf 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c -@@ -268,6 +268,8 @@ main (int argc, char **argv) +@@ -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; @@ -249,12 +252,12 @@ index f31eeb2..25f8497 100644 /* 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 86a033a..f07f095 100644 +index 1c15ac29c0c..8b714e10a40 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c -@@ -543,6 +543,14 @@ static const struct ld_option ld_options[] = - { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, - '\0', N_("=MODE"), N_("Control how orphan sections are handled."), +@@ -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}, @@ -267,7 +270,7 @@ index 86a033a..f07f095 100644 }; #define OPTION_COUNT ARRAY_SIZE (ld_options) -@@ -555,6 +563,7 @@ parse_args (unsigned argc, char **argv) +@@ -561,6 +569,7 @@ parse_args (unsigned argc, char **argv) int ingroup = 0; char *default_dirlist = NULL; char *shortopts; @@ -275,7 +278,7 @@ index 86a033a..f07f095 100644 struct option *longopts; struct option *really_longopts; int last_optind; -@@ -1543,6 +1552,14 @@ parse_args (unsigned argc, char **argv) +@@ -1549,6 +1558,14 @@ parse_args (unsigned argc, char **argv) } break; @@ -290,7 +293,7 @@ index 86a033a..f07f095 100644 case OPTION_PUSH_STATE: input_flags.pushed = xmemdup (&input_flags, sizeof (input_flags), -@@ -1586,6 +1603,10 @@ parse_args (unsigned argc, char **argv) +@@ -1600,6 +1617,10 @@ parse_args (unsigned argc, char **argv) command_line.soname = NULL; } @@ -300,7 +303,7 @@ index 86a033a..f07f095 100644 + while (ingroup) { - lang_leave_group (); + einfo (_("%P: missing --end-group; added as last command line option\n")); -- -2.7.4 +2.16.2 diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash index 4b747fc2b0..4aea049d3a 100644 --- a/package/binutils/binutils.hash +++ b/package/binutils/binutils.hash @@ -4,7 +4,7 @@ sha512 0fca326feb1d5f5fe505a827b20237fe3ec9c13eaf7ec7e35847fd71184f605ba1cefe13 sha512 d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a binutils-2.32.tar.xz # Locally calculated (fetched from Github) -sha512 e2d8c109ed006eb143bab8360c9e29287c05a0b273448d256edee7458e356d45b27c9869ca6be96206df360c24ba607b21c185190d3a4731999dad515b157c18 binutils-gdb-arc-2019.03-release.tar.gz +sha512 db6a0a855733a79ec71127b94981e6be63c4852dee5aed2bc9738da7d3c3796d88974e86ae9dc20cf28ea5e31897ddf8d68f695fcadfbdec1a8406b437d73df6 binutils-gdb-arc-2019.09-eng002.tar.gz # Locally calculated (fetched from https://github.com/c-sky/binutils-gdb) sha512 979552d4b3a4f31e9f3b9a7027321bd4eb3ac6c2d8deac1720e94e54f81d736db09c53c5d87c301010e307b64127e14400a036c7a35e5d63a954a4edd9cc8e2c binutils-c66d8bbcebfddf713b2b436e1b135e6b125a55a5.tar.gz diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk index d60c032bde..a4ed1a8f76 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-2019.03-release +BINUTILS_VERSION = arc-2019.09-eng002 else BINUTILS_VERSION = 2.31.1 endif endif # BINUTILS_VERSION -ifeq ($(BINUTILS_VERSION),arc-2019.03-release) +ifeq ($(BINUTILS_VERSION),arc-2019.09-eng002) 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 5c1bee076d..e2a4032c90 100644 --- a/package/gcc/Config.in.host +++ b/package/gcc/Config.in.host @@ -10,10 +10,10 @@ choice Select the version of gcc you wish to use. config BR2_GCC_VERSION_ARC - bool "gcc arc (8.x)" + bool "gcc arc (9.x)" # Only supported architecture depends on BR2_arc - select BR2_TOOLCHAIN_GCC_AT_LEAST_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_9 config BR2_GCC_VERSION_CSKY bool "gcc csky" @@ -96,7 +96,7 @@ config BR2_GCC_VERSION default "7.4.0" if BR2_GCC_VERSION_7_X default "8.3.0" if BR2_GCC_VERSION_8_X default "9.2.0" if BR2_GCC_VERSION_9_X - default "arc-2019.03-release" if BR2_GCC_VERSION_ARC + default "arc-2019.09-eng002" if BR2_GCC_VERSION_ARC default "or1k-musl-5.4.0-20170218" if BR2_GCC_VERSION_OR1K default "48152afb96c59733d5bc79e3399bb7b3d4b44266" if BR2_GCC_VERSION_CSKY diff --git a/package/gcc/arc-2019.03-release/0001-ARC-PR89838.patch b/package/gcc/arc-2019.03-release/0001-ARC-PR89838.patch deleted file mode 100644 index e95f7954f9..0000000000 --- a/package/gcc/arc-2019.03-release/0001-ARC-PR89838.patch +++ /dev/null @@ -1,369 +0,0 @@ -From 228efbbb2f1d59ca7fc0ec09d4be75ce58fa583b Mon Sep 17 00:00:00 2001 -From: Claudiu Zissulescu -Date: Mon, 1 Apr 2019 13:03:55 +0300 -Subject: [PATCH] [ARC] PR89838 - -gcc/ -xxxx-xx-xx Claudiu Zissulescu - - * config/arc/arc.c (arc_symbol_binds_local_p): New function. - (arc_legitimize_pic_address): Simplify and cleanup the function. - (SYMBOLIC_CONST): Remove. - (prepare_pic_move): Likewise. - (prepare_move_operands): Handle complex mov cases here. - (arc_legitimize_address_0): Remove call to - arc_legitimize_pic_address. - (arc_legitimize_address): Remove call to - arc_legitimize_tls_address. - * config/arc/arc.md (movqi_insn): Allow Cm3 match. - (movhi_insn): Likewise. - -/gcc/testsuite -xxxx-xx-xx Claudiu Zissulescu - - * gcc.target/arc/pr89838.c: New file. - -Fix in upstream: - https://gcc.gnu.org/viewcvs/gcc?view=revision&sortby=date&revision=272645 - -Signed-off-by: Evgeniy Didin ---- - gcc/config/arc/arc.c | 246 ++++++++++-------------------------------- - gcc/config/arc/arc.md | 8 +- - 2 files changed, 60 insertions(+), 194 deletions(-) - -diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c -index 78a37aa2a18..8b544efaa11 100644 ---- a/gcc/config/arc/arc.c -+++ b/gcc/config/arc/arc.c -@@ -5990,137 +5990,46 @@ arc_legitimize_tls_address (rtx addr, enum tls_model model) - } - } - --/* Legitimize a pic address reference in ORIG. -- The return value is the legitimated address. -- If OLDX is non-zero, it is the target to assign the address to first. */ -+/* Return true if SYMBOL_REF X binds locally. */ - --static rtx --arc_legitimize_pic_address (rtx orig, rtx oldx) -+static bool -+arc_symbol_binds_local_p (const_rtx x) - { -- rtx addr = orig; -- rtx pat = orig; -- rtx base; -+ return (SYMBOL_REF_DECL (x) -+ ? targetm.binds_local_p (SYMBOL_REF_DECL (x)) -+ : SYMBOL_REF_LOCAL_P (x)); -+} - -- if (oldx == orig) -- oldx = NULL; -+/* Legitimize a pic address reference in ORIG. The return value is -+ the legitimated address. */ -+ -+static rtx -+arc_legitimize_pic_address (rtx addr) -+{ -+ if (!flag_pic) -+ return addr; - -- if (GET_CODE (addr) == LABEL_REF) -- ; /* Do nothing. */ -- else if (GET_CODE (addr) == SYMBOL_REF) -+ switch (GET_CODE (addr)) - { -- enum tls_model model = SYMBOL_REF_TLS_MODEL (addr); -- if (model != 0) -- return arc_legitimize_tls_address (addr, model); -- else if (!flag_pic) -- return orig; -- else if (CONSTANT_POOL_ADDRESS_P (addr) || SYMBOL_REF_LOCAL_P (addr)) -- return arc_unspec_offset (addr, ARC_UNSPEC_GOTOFFPC); -+ case SYMBOL_REF: -+ /* TLS symbols are handled in different place. */ -+ if (SYMBOL_REF_TLS_MODEL (addr)) -+ return addr; - - /* This symbol must be referenced via a load from the Global - Offset Table (@GOTPC). */ -- pat = arc_unspec_offset (addr, ARC_UNSPEC_GOT); -- pat = gen_const_mem (Pmode, pat); -+ if (!arc_symbol_binds_local_p (addr)) -+ return gen_const_mem (Pmode, arc_unspec_offset (addr, ARC_UNSPEC_GOT)); - -- if (oldx == NULL) -- oldx = gen_reg_rtx (Pmode); -- -- emit_move_insn (oldx, pat); -- pat = oldx; -- } -- else -- { -- if (GET_CODE (addr) == CONST) -- { -- addr = XEXP (addr, 0); -- if (GET_CODE (addr) == UNSPEC) -- { -- /* Check that the unspec is one of the ones we generate? */ -- return orig; -- } -- /* fwprop is placing in the REG_EQUIV notes constant pic -- unspecs expressions. Then, loop may use these notes for -- optimizations resulting in complex patterns that are not -- supported by the current implementation. The following -- two if-cases are simplifying the complex patters to -- simpler ones. */ -- else if (GET_CODE (addr) == MINUS) -- { -- rtx op0 = XEXP (addr, 0); -- rtx op1 = XEXP (addr, 1); -- gcc_assert (oldx); -- gcc_assert (GET_CODE (op1) == UNSPEC); -- -- emit_move_insn (oldx, -- gen_rtx_CONST (SImode, -- arc_legitimize_pic_address (op1, -- NULL_RTX))); -- emit_insn (gen_rtx_SET (oldx, gen_rtx_MINUS (SImode, op0, oldx))); -- return oldx; -- -- } -- else if (GET_CODE (addr) != PLUS) -- { -- rtx tmp = XEXP (addr, 0); -- enum rtx_code code = GET_CODE (addr); -- -- /* It only works for UNARY operations. */ -- gcc_assert (UNARY_P (addr)); -- gcc_assert (GET_CODE (tmp) == UNSPEC); -- gcc_assert (oldx); -- -- emit_move_insn -- (oldx, -- gen_rtx_CONST (SImode, -- arc_legitimize_pic_address (tmp, -- NULL_RTX))); -- -- emit_insn (gen_rtx_SET (oldx, -- gen_rtx_fmt_ee (code, SImode, -- oldx, const0_rtx))); -- -- return oldx; -- } -- else -- { -- gcc_assert (GET_CODE (addr) == PLUS); -- if (GET_CODE (XEXP (addr, 0)) == UNSPEC) -- return orig; -- } -- } -- -- if (GET_CODE (addr) == PLUS) -- { -- rtx op0 = XEXP (addr, 0), op1 = XEXP (addr, 1); -- -- base = arc_legitimize_pic_address (op0, oldx); -- pat = arc_legitimize_pic_address (op1, -- base == oldx ? NULL_RTX : oldx); -- -- if (base == op0 && pat == op1) -- return orig; -- -- if (GET_CODE (base) == PLUS) -- { -- gcc_assert (oldx != NULL_RTX); -- gcc_assert (REG_P (oldx)); -- emit_insn (gen_rtx_SET (oldx, base)); -- base = oldx; -- } -- if (GET_CODE (pat) == CONST_INT) -- pat = plus_constant (Pmode, base, INTVAL (pat)); -- else -- { -- if (GET_CODE (pat) == PLUS && CONSTANT_P (XEXP (pat, 1))) -- { -- base = gen_rtx_PLUS (Pmode, base, XEXP (pat, 0)); -- pat = XEXP (pat, 1); -- } -- pat = gen_rtx_PLUS (Pmode, base, pat); -- } -- } -+ /* Local symb: use @pcl to access it. */ -+ /* Fall through. */ -+ case LABEL_REF: -+ return arc_unspec_offset (addr, ARC_UNSPEC_GOTOFFPC); -+ default: -+ break; - } - -- return pat; -+ return addr; - } - - /* Output address constant X to FILE, taking PIC into account. */ -@@ -6282,28 +6191,6 @@ arc_output_pic_addr_const (FILE * file, rtx x, int code) - } - } - --#define SYMBOLIC_CONST(X) \ --(GET_CODE (X) == SYMBOL_REF \ -- || GET_CODE (X) == LABEL_REF \ -- || (GET_CODE (X) == CONST && symbolic_reference_mentioned_p (X))) -- --/* Emit insns to move operands[1] into operands[0]. */ -- --static void --prepare_pic_move (rtx *operands, machine_mode) --{ -- if (GET_CODE (operands[0]) == MEM && SYMBOLIC_CONST (operands[1]) -- && flag_pic) -- operands[1] = force_reg (Pmode, operands[1]); -- else -- { -- rtx temp = (reload_in_progress ? operands[0] -- : gen_reg_rtx (Pmode)); -- operands[1] = arc_legitimize_pic_address (operands[1], temp); -- } --} -- -- - /* The function returning the number of words, at the beginning of an - argument, must be put in registers. The returned value must be - zero for arguments that are passed entirely in registers or that -@@ -9178,54 +9065,37 @@ prepare_move_operands (rtx *operands, machine_mode mode) - } - } - -- if (mode == SImode && SYMBOLIC_CONST (operands[1])) -+ if (GET_CODE (operands[1]) == SYMBOL_REF) - { -- prepare_pic_move (operands, SImode); -- -- /* Disable any REG_EQUALs associated with the symref -- otherwise the optimization pass undoes the work done -- here and references the variable directly. */ -+ enum tls_model model = SYMBOL_REF_TLS_MODEL (operands[1]); -+ if (MEM_P (operands[0]) && flag_pic) -+ operands[1] = force_reg (mode, operands[1]); -+ else if (model) -+ operands[1] = arc_legitimize_tls_address (operands[1], model); - } - -+ operands[1] = arc_legitimize_pic_address (operands[1]); -+ -+ /* Store instructions are limited, they only accept as address an -+ immediate, a register or a register plus a small immediate. */ - if (MEM_P (operands[0]) -- && !(reload_in_progress || reload_completed)) -+ && !move_dest_operand (operands[0], mode)) - { -- operands[1] = force_reg (mode, operands[1]); -- if (!move_dest_operand (operands[0], mode)) -- { -- rtx addr = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); -- /* This is like change_address_1 (operands[0], mode, 0, 1) , -- except that we can't use that function because it is static. */ -- rtx pat = change_address (operands[0], mode, addr); -- MEM_COPY_ATTRIBUTES (pat, operands[0]); -- operands[0] = pat; -- } -- if (!cse_not_expected) -- { -- rtx pat = XEXP (operands[0], 0); -- -- pat = arc_legitimize_address_0 (pat, pat, mode); -- if (pat) -- { -- pat = change_address (operands[0], mode, pat); -- MEM_COPY_ATTRIBUTES (pat, operands[0]); -- operands[0] = pat; -- } -- } -+ rtx tmp0 = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); -+ rtx tmp1 = change_address (operands[0], mode, tmp0); -+ MEM_COPY_ATTRIBUTES (tmp1, operands[0]); -+ operands[0] = tmp1; - } - -- if (MEM_P (operands[1]) && !cse_not_expected) -- { -- rtx pat = XEXP (operands[1], 0); -- -- pat = arc_legitimize_address_0 (pat, pat, mode); -- if (pat) -- { -- pat = change_address (operands[1], mode, pat); -- MEM_COPY_ATTRIBUTES (pat, operands[1]); -- operands[1] = pat; -- } -- } -+ /* Check if it is constant but it is not legitimized. */ -+ if (CONSTANT_P (operands[1]) -+ && !arc_legitimate_constant_p (mode, operands[1])) -+ operands[1] = force_reg (mode, XEXP (operands[1], 0)); -+ else if (MEM_P (operands[0]) -+ && ((CONSTANT_P (operands[1]) -+ && !satisfies_constraint_Cm3 (operands[1])) -+ || MEM_P (operands[1]))) -+ operands[1] = force_reg (mode, operands[1]); - - return false; - } -@@ -9630,11 +9500,10 @@ arc_legitimize_address_0 (rtx x, rtx oldx ATTRIBUTE_UNUSED, - { - rtx addr, inner; - -- if (flag_pic && SYMBOLIC_CONST (x)) -- (x) = arc_legitimize_pic_address (x, 0); - addr = x; - if (GET_CODE (addr) == CONST) - addr = XEXP (addr, 0); -+ - if (GET_CODE (addr) == PLUS - && CONST_INT_P (XEXP (addr, 1)) - && ((GET_CODE (XEXP (addr, 0)) == SYMBOL_REF -@@ -9665,13 +9534,6 @@ arc_legitimize_address_0 (rtx x, rtx oldx ATTRIBUTE_UNUSED, - static rtx - arc_legitimize_address (rtx orig_x, rtx oldx, machine_mode mode) - { -- if (GET_CODE (orig_x) == SYMBOL_REF) -- { -- enum tls_model model = SYMBOL_REF_TLS_MODEL (orig_x); -- if (model != 0) -- return arc_legitimize_tls_address (orig_x, model); -- } -- - rtx new_x = arc_legitimize_address_0 (orig_x, oldx, mode); - - if (new_x) -diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md -index a7c5c600a99..dc5bcc0bb14 100644 ---- a/gcc/config/arc/arc.md -+++ b/gcc/config/arc/arc.md -@@ -682,7 +682,9 @@ archs4x, archs4xd" - [(set (match_operand:QI 0 "move_dest_operand" "=Rcq,Rcq#q, w,Rcq#q, h, w, w,???w,h, w,Rcq, S,!*x, r,r, Ucm,m,???m, m,Usc") - (match_operand:QI 1 "move_src_operand" " cL, cP,Rcq#q, P,hCm1,cL, I,?Rac,i,?i, T,Rcq,Usd,Ucm,m,?Rac,c,?Rac,Cm3,i"))] - "register_operand (operands[0], QImode) -- || register_operand (operands[1], QImode)" -+ || register_operand (operands[1], QImode) -+ || (satisfies_constraint_Cm3 (operands[1]) -+ && memory_operand (operands[0], QImode))" - "@ - mov%? %0,%1%& - mov%? %0,%1%& -@@ -724,7 +726,9 @@ archs4x, archs4xd" - /* Don't use a LIMM that we could load with a single insn - we loose - delay-slot filling opportunities. */ - && !satisfies_constraint_I (operands[1]) -- && satisfies_constraint_Usc (operands[0]))" -+ && satisfies_constraint_Usc (operands[0])) -+ || (satisfies_constraint_Cm3 (operands[1]) -+ && memory_operand (operands[0], HImode))" - "@ - mov%? %0,%1%& - mov%? %0,%1%& --- -2.17.2 - diff --git a/package/gcc/arc-2019.03-release/0002-ARC-Fix-emitting-TLS-symbols.patch b/package/gcc/arc-2019.03-release/0002-ARC-Fix-emitting-TLS-symbols.patch deleted file mode 100644 index b6e5c0ee83..0000000000 --- a/package/gcc/arc-2019.03-release/0002-ARC-Fix-emitting-TLS-symbols.patch +++ /dev/null @@ -1,61 +0,0 @@ -From a971faaf8fb48acbf48ca800634fc78a27581517 Mon Sep 17 00:00:00 2001 -From: Claudiu Zissulescu -Date: Wed, 26 Jun 2019 17:53:51 +0300 -Subject: [PATCH] [ARC] Fix emitting TLS symbols. - -When storing a TLS symbol to memory, always use an intermediate register -to load it. Otherwise compiler generates instruction which couldn't be -encoded and we see: ------------------------------>8--------------------------- -In file included from gethstent_r.c:34: -../nss/getXXent_r.c: In function '__gethostent_r': -../nss/getXXent_r.c:168:1: error: unrecognizable insn: - } - ^ -(insn 25 24 26 5 (set (mem:SI (plus:SI (reg/f:SI 149 virtual-outgoing-args) - (const_int 16 [0x10])) [0 S4 A32]) - (plus:SI (reg:SI 25 r25) - (reg:SI 174))) "../nss/getXXent_r.c":160 -1 - (nil)) -during RTL pass: vregs -../nss/getXXent_r.c:168:1: internal compiler error: in extract_insn, at recog.c:2304 -In file included from getnetent_r.c:34: -../nss/getXXent_r.c: In function '__getnetent_r': -../nss/getXXent_r.c:168:1: error: unrecognizable insn: - } - ^ -(insn 25 24 26 5 (set (mem:SI (plus:SI (reg/f:SI 149 virtual-outgoing-args) - (const_int 16 [0x10])) [0 S4 A32]) - (plus:SI (reg:SI 25 r25) - (reg:SI 174))) "../nss/getXXent_r.c":160 -1 - (nil)) -during RTL pass: vregs -../nss/getXXent_r.c:168:1: internal compiler error: in extract_insn, at recog.c:2304 ------------------------------>8--------------------------- - -Note this patch is not yet submitted to the GCC's master and gcc-9-branch but -will be submitted soon. That said with bump of GCC for ARC this patch won't be -needed any longer. - -Signed-off-by: Claudiu Zissulescu -Signed-off-by: Alexey Brodkin ---- - gcc/config/arc/arc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c -index 8b544efaa11..989bec703df 100644 ---- a/gcc/config/arc/arc.c -+++ b/gcc/config/arc/arc.c -@@ -9068,7 +9068,7 @@ prepare_move_operands (rtx *operands, machine_mode mode) - if (GET_CODE (operands[1]) == SYMBOL_REF) - { - enum tls_model model = SYMBOL_REF_TLS_MODEL (operands[1]); -- if (MEM_P (operands[0]) && flag_pic) -+ if (MEM_P (operands[0])) - operands[1] = force_reg (mode, operands[1]); - else if (model) - operands[1] = arc_legitimize_tls_address (operands[1], model); --- -2.16.2 - diff --git a/package/gcc/arc-2019.03-release/0100-uclibc-conf.patch b/package/gcc/arc-2019.09-eng002/0100-uclibc-conf.patch similarity index 100% rename from package/gcc/arc-2019.03-release/0100-uclibc-conf.patch rename to package/gcc/arc-2019.09-eng002/0100-uclibc-conf.patch diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash index 5be1ec1a1d..756e133820 100644 --- a/package/gcc/gcc.hash +++ b/package/gcc/gcc.hash @@ -8,7 +8,7 @@ sha512 1811337ae3add9680cec64968a2509d085b6dc5b6783fc1e8c295e3e47416196fd1a3ad8 sha512 a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040 gcc-9.2.0.tar.xz # Locally calculated (fetched from Github) -sha512 c3f63fb601140f92d2dbef96b2dcc025ef754d2f049bfcc3d33e746c7b218b5138f2d8768cd580134858a8d347d234cf3ead276638f6de409f8f07c986e136b6 gcc-arc-2019.03-release.tar.gz +sha512 7ab8f8ffb79f0b7b69e87aa5692ba29e71478c9e2a4521ba57fcd818e25a20869025c8985a5e09f2f24483aa695881ba9aed4d2df0fc8c8129d791526156db93 gcc-arc-2019.09-eng002.tar.gz # Locally calculated (fetched from Github) sha512 2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1 gcc-or1k-musl-5.4.0-20170218.tar.gz # Locally calculated (fetched from https://github.com/c-sky/gcc) diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host index 58b6a3e770..a9b6dcbd2d 100644 --- a/package/gdb/Config.in.host +++ b/package/gdb/Config.in.host @@ -67,7 +67,7 @@ endif # If cross-gdb is not enabled, the latest working version is chosen. config BR2_GDB_VERSION string - default "arc-2019.03-release-gdb" if BR2_arc + default "arc-2019.09-eng002-gdb" if BR2_arc default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky default "8.1.1" if BR2_GDB_VERSION_8_1 default "8.2.1" if BR2_GDB_VERSION_8_2 || !BR2_PACKAGE_HOST_GDB diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash index 7b0f98cc41..69ab252130 100644 --- a/package/gdb/gdb.hash +++ b/package/gdb/gdb.hash @@ -4,7 +4,7 @@ sha512 2aa81cfd389bb48c35d7d9f95cc10e88b4f7ad4597bdde0f8f1fd312f60f10d9fb2cc6e5 sha512 47ac074d20a09a3fac8f4a41dce0a0cbe6ef702f7dc21ba8b7d650d306128dcae481e9a16bf65e596b3a541dc82ae57c02bcbb786d551b4ef3e2917b9b6f0ae1 gdb-8.3.tar.xz # Locally calculated (fetched from Github) -sha512 45b4610b92d4c9fb8c3f516c0e86867f34dfd9e47af3af582b1470f2e4bcb04070dd8d69e033dc758e5587f012b9f472572c5075b3331d9d574bdc3edb9b11f9 gdb-arc-2019.03-release-gdb.tar.gz +sha512 2625e568ec85652cc223409162b4bd97dd292c5f7a597a57ccb2c6c88a69dfc5fbcf1f0750716ab94c932fa97c8900732f7d2fec940973bc3d6c88ef3f8c6d26 gdb-arc-2019.09-eng002-gdb.tar.gz # Locally calculated (fetched from https://github.com/c-sky/binutils-gdb) sha512 c421e1f3c0d6cfb3c04544573c0c4b0075c8d8e3d563c6c234fcc1e4c2167ab203d1e57aec3b58abd348dc46f8cf9b47b753d3a43dba3ea970c9c9a6bd78c07b gdb-4ecb98fbc2f94dbe01b69384afbc515107de73df.tar.gz diff --git a/package/glibc/arc-2019.03-release/glibc.hash b/package/glibc/arc-2019.09-eng002/glibc.hash similarity index 75% rename from package/glibc/arc-2019.03-release/glibc.hash rename to package/glibc/arc-2019.09-eng002/glibc.hash index 2fa706dc86..5a0b7629ea 100644 --- a/package/glibc/arc-2019.03-release/glibc.hash +++ b/package/glibc/arc-2019.09-eng002/glibc.hash @@ -1,5 +1,5 @@ # Locally calculated (fetched from Github) -sha256 d8fd15462475f7e268147903cd7811705707b9bd9b29cd9dfe9a941ba48c7ea2 glibc-arc-2019.03-release.tar.gz +sha256 7ae8409c6e0649f21a9dccd55b0d84cb34ab69c1e95cb1bf807a0713bcf7a086 glibc-arc-2019.09-eng002.tar.gz # Hashes for license files sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk index 9421f9fd81..c6acc43ff5 100644 --- a/package/glibc/glibc.mk +++ b/package/glibc/glibc.mk @@ -5,7 +5,7 @@ ################################################################################ ifeq ($(BR2_arc),y) -GLIBC_VERSION = arc-2019.03-release +GLIBC_VERSION = arc-2019.09-eng002 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION)) else ifeq ($(BR2_RISCV_32),y) GLIBC_VERSION = 06983fe52cfe8e4779035c27e8cc5d2caab31531