From 6030cea9e99d93b361e9ee42ce57859792d575cb Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 28 Apr 2022 22:55:47 +0200 Subject: [PATCH] package/binutils: drop version 2.32 Now that recent versions of binutils work with FLAT binaries, we can drop the old 2.32 version, which was kept only to keep support FLAT binaries. Signed-off-by: Thomas Petazzoni Signed-off-by: Yann E. MORIN --- Config.in.legacy | 6 + package/binutils/2.32/0001-sh-conf.patch | 48 -- .../2.32/0002-poison-system-directories.patch | 306 ----------- ...hrink_dynamic_reloc_sections-for-exp.patch | 41 -- ...s-const16-for-xtensa-loop-relaxation.patch | 294 ---------- ...t-.literal_position-at-section-start.patch | 96 ---- ...ct-value-in-PLT-GOT-entries-causing-.patch | 46 -- .../0007-bfd-xtensa-fix-PR-ld-25630.patch | 37 -- .../2.32/0008-xtensa-fix-PR-ld-25861.patch | 432 --------------- ...TENSA_NDIFF-handling-for-PR-ld-25861.patch | 128 ----- ...ith-plt-link-failure-for-local-calls.patch | 59 --- ...elocation-R_OR1K_GOT_AHI16-for-gotha.patch | 256 --------- ...K_GOT16-overflow-failures-in-presenc.patch | 61 --- ...ge-plt_relocs-when-generating-plt-en.patch | 500 ------------------ ...or1k-fix-building-with-gcc-version-5.patch | 50 -- ...tive-relocation-against-dynamic-on-P.patch | 59 --- ...K_GOT16-signed-overflow-by-using-spe.patch | 75 --- package/binutils/Config.in.host | 5 - package/binutils/binutils.hash | 1 - 19 files changed, 6 insertions(+), 2494 deletions(-) delete mode 100644 package/binutils/2.32/0001-sh-conf.patch delete mode 100644 package/binutils/2.32/0002-poison-system-directories.patch delete mode 100644 package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch delete mode 100644 package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch delete mode 100644 package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch delete mode 100644 package/binutils/2.32/0006-or1k-Fix-incorrect-value-in-PLT-GOT-entries-causing-.patch delete mode 100644 package/binutils/2.32/0007-bfd-xtensa-fix-PR-ld-25630.patch delete mode 100644 package/binutils/2.32/0008-xtensa-fix-PR-ld-25861.patch delete mode 100644 package/binutils/2.32/0009-xtensa-fix-XTENSA_NDIFF-handling-for-PR-ld-25861.patch delete mode 100644 package/binutils/2.32/0010-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch delete mode 100644 package/binutils/2.32/0011-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch delete mode 100644 package/binutils/2.32/0012-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch delete mode 100644 package/binutils/2.32/0013-or1k-Support-large-plt_relocs-when-generating-plt-en.patch delete mode 100644 package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch delete mode 100644 package/binutils/2.32/0015-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch delete mode 100644 package/binutils/2.32/0016-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch diff --git a/Config.in.legacy b/Config.in.legacy index 387653f45d..6d2c82ab7f 100644 --- a/Config.in.legacy +++ b/Config.in.legacy @@ -146,6 +146,12 @@ endif comment "Legacy options removed in 2022.05" +config BR2_BINUTILS_VERSION_2_32_X + bool "binutils 2.32.x has been removed" + select BR2_LEGACY + help + binutils 2.32 has been removed, use a newer version. + config BR2_sh2a bool "sh2a architecture support removed" select BR2_LEGACY diff --git a/package/binutils/2.32/0001-sh-conf.patch b/package/binutils/2.32/0001-sh-conf.patch deleted file mode 100644 index fff91ae35c..0000000000 --- a/package/binutils/2.32/0001-sh-conf.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 98b2acf2bd3a527d114a9f8931083c2617a2daa9 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Fri, 25 Dec 2015 11:38:13 +0100 -Subject: [PATCH] sh-conf - -Likewise, binutils has no idea about any of these new targets either, so we -fix that up too.. now we're able to actually build a real toolchain for -sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more -inept targets than that one, really. Go look, I promise). - -[Romain: rebase on top of 2.32] -Signed-off-by: Romain Naour -[Thomas: rebase on top of 2.29, in which sh64 support was removed.] -Signed-off-by: Thomas Petazzoni ---- - configure | 2 +- - configure.ac | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure b/configure -index 37476459612..66fbc19f9ff 100755 ---- a/configure -+++ b/configure -@@ -3861,7 +3861,7 @@ case "${target}" in - nvptx*-*-*) - noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" - ;; -- sh-*-*) -+ sh*-*-*) - case "${target}" in - sh*-*-elf) - ;; -diff --git a/configure.ac b/configure.ac -index 46501c28826..6c731930884 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1158,7 +1158,7 @@ case "${target}" in - nvptx*-*-*) - noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" - ;; -- sh-*-*) -+ sh*-*-*) - case "${target}" in - sh*-*-elf) - ;; --- -2.14.5 - diff --git a/package/binutils/2.32/0002-poison-system-directories.patch b/package/binutils/2.32/0002-poison-system-directories.patch deleted file mode 100644 index 98f41e87f3..0000000000 --- a/package/binutils/2.32/0002-poison-system-directories.patch +++ /dev/null @@ -1,306 +0,0 @@ -From f559402ea868d370ddf25089c68cda2600db3bfa Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Fri, 25 Dec 2015 11:45:38 +0100 -Subject: [PATCH] poison-system-directories - -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.32] -Signed-off-by: Romain Naour -[Gustavo: adapt to binutils 2.25] -Signed-off-by: Thomas Petazzoni -Signed-off-by: Gustavo Zacarias - -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 - - 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 - - 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 - - Merge from Sourcery G++ binutils 2.17: - - 2007-03-20 Joseph Myers - Based on patch by Mark Hatle . - 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 -Signed-off-by: Scott Garman ---- - 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 18ada7808f5..7e7d2f97809 100755 ---- a/ld/configure -+++ b/ld/configure -@@ -822,6 +822,7 @@ with_lib_path - enable_targets - enable_64_bit_bfd - with_sysroot -+enable_poison_system_directories - enable_gold - enable_got - enable_compressed_debug_sections -@@ -1486,6 +1487,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= GOT handling scheme (target, single, negative, - multigot) -@@ -15803,7 +15806,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 d335f210917..7f692d93873 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 b97d977f37b..f3bbd2d55d4 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 5179af3e0e1..f78bf746822 100644 ---- a/ld/ld.texi -+++ b/ld/ld.texi -@@ -2524,6 +2524,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. -+ -+@kindex --no-poison-system-directories -+@item --no-poison-system-directories -+Do not warn for @option{-L} options using system directories such as -+@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. -+ -+@kindex --error-poison-system-directories -+@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 fcadc08c73f..63e295ce8ae 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 32853debe45..8135361c498 100644 ---- a/ld/ldlex.h -+++ b/ld/ldlex.h -@@ -148,6 +148,8 @@ enum option_values - OPTION_REQUIRE_DEFINED_SYMBOL, - OPTION_ORPHAN_HANDLING, - OPTION_FORCE_GROUP_ALLOCATION, -+ 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 77cdbd0dd29..725512f1260 100644 ---- a/ld/ldmain.c -+++ b/ld/ldmain.c -@@ -269,6 +269,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 88e85c73f49..be4cd492d14 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."), - 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) -@@ -555,6 +563,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; -@@ -1543,6 +1552,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), -@@ -1586,6 +1603,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) - { - lang_leave_group (); --- -2.14.5 - diff --git a/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch b/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch deleted file mode 100644 index b80e1fa7ce..0000000000 --- a/package/binutils/2.32/0003-bfd-xtensa-fix-shrink_dynamic_reloc_sections-for-exp.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 278989f23735aa501be1052e085540c75c126dbb Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Thu, 28 Mar 2019 17:03:57 -0700 -Subject: [PATCH] bfd: xtensa: fix shrink_dynamic_reloc_sections for - export-dynamic - -shrink_dynamic_reloc_sections must remove PLT entry that was created for -an undefined weak symbol in the presence of --export-dynamic option when -relaxation coalesces literals pointing to that symbol. This fixes the -following assertion: - - ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at - elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections - -2019-03-28 Max Filippov -bfd/ - * elf32-xtensa.c (shrink_dynamic_reloc_sections): Add - info->export_dynamic to the conditional. - -Signed-off-by: Max Filippov ---- - bfd/elf32-xtensa.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c -index c3df3d6db756..37ea200eea74 100644 ---- a/bfd/elf32-xtensa.c -+++ b/bfd/elf32-xtensa.c -@@ -10083,7 +10083,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info, - && (input_section->flags & SEC_ALLOC) != 0 - && (dynamic_symbol || bfd_link_pic (info)) - && (!h || h->root.type != bfd_link_hash_undefweak -- || (dynamic_symbol && bfd_link_dll (info)))) -+ || (dynamic_symbol -+ && (bfd_link_dll (info) || info->export_dynamic)))) - { - asection *srel; - bfd_boolean is_plt = FALSE; --- -2.11.0 - diff --git a/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch b/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch deleted file mode 100644 index ed617bcaf7..0000000000 --- a/package/binutils/2.32/0004-gas-use-literals-const16-for-xtensa-loop-relaxation.patch +++ /dev/null @@ -1,294 +0,0 @@ -From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Tue, 2 Apr 2019 14:32:42 -0700 -Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation - -Loop opcode relaxation that uses addi/addmi doesn't work well with other -relaxations that may cause code movement. Instead of encoding fixed loop -end offset in the relaxed sequence use l32r or a pair of const16 to load -loop end address. This way the address of the loop end gets a relocation -record and it gets updated appropriately. - -gas/ -2019-04-02 Max Filippov - - * config/tc-xtensa.c (convert_frag_immed): Drop - convert_frag_immed_finish_loop invocation. - (convert_frag_immed_finish_loop): Drop declaration and - definition. - * config/xtensa-relax.c (widen_spec_list): Replace loop - widening that uses addi/addmi with widening that uses l32r - and const16. - -Signed-off-by: Max Filippov ---- - gas/config/tc-xtensa.c | 120 ---------------------------------------------- - gas/config/xtensa-relax.c | 77 ++++++++++++++++++++--------- - 2 files changed, 55 insertions(+), 142 deletions(-) - -diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c -index 3bdbbc931cfc..0cc06361cf6f 100644 ---- a/gas/config/tc-xtensa.c -+++ b/gas/config/tc-xtensa.c -@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP) - static fixS *fix_new_exp_in_seg - (segT, subsegT, fragS *, int, int, expressionS *, int, - bfd_reloc_code_real_type); --static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *); - - static void - convert_frag_immed (segT segP, -@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP, - } - } - -- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1) -- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn); -- - if (expanded && is_direct_call_opcode (orig_tinsn.opcode)) - { - /* Add an expansion note on the expanded instruction. */ -@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg, - } - - --/* Relax a loop instruction so that it can span loop >256 bytes. -- -- loop as, .L1 -- .L0: -- rsr as, LEND -- wsr as, LBEG -- addi as, as, lo8 (label-.L1) -- addmi as, as, mid8 (label-.L1) -- wsr as, LEND -- isync -- rsr as, LCOUNT -- addi as, as, 1 -- .L1: -- <> -- label: --*/ -- --static void --convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn) --{ -- TInsn loop_insn; -- TInsn addi_insn; -- TInsn addmi_insn; -- unsigned long target; -- static xtensa_insnbuf insnbuf = NULL; -- unsigned int loop_length, loop_length_hi, loop_length_lo; -- xtensa_isa isa = xtensa_default_isa; -- addressT loop_offset; -- addressT addi_offset = 9; -- addressT addmi_offset = 12; -- fragS *next_fragP; -- int target_count; -- -- if (!insnbuf) -- insnbuf = xtensa_insnbuf_alloc (isa); -- -- /* Get the loop offset. */ -- loop_offset = get_expanded_loop_offset (tinsn->opcode); -- -- /* Validate that there really is a LOOP at the loop_offset. Because -- loops are not bundleable, we can assume that the instruction will be -- in slot 0. */ -- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0); -- tinsn_immed_from_frag (&loop_insn, fragP, 0); -- -- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1); -- addi_offset += loop_offset; -- addmi_offset += loop_offset; -- -- gas_assert (tinsn->ntok == 2); -- if (tinsn->tok[1].X_op == O_constant) -- target = tinsn->tok[1].X_add_number; -- else if (tinsn->tok[1].X_op == O_symbol) -- { -- /* Find the fragment. */ -- symbolS *sym = tinsn->tok[1].X_add_symbol; -- gas_assert (S_GET_SEGMENT (sym) == segP -- || S_GET_SEGMENT (sym) == absolute_section); -- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number); -- } -- else -- { -- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op); -- target = 0; -- } -- -- loop_length = target - (fragP->fr_address + fragP->fr_fix); -- loop_length_hi = loop_length & ~0x0ff; -- loop_length_lo = loop_length & 0x0ff; -- if (loop_length_lo >= 128) -- { -- loop_length_lo -= 256; -- loop_length_hi += 256; -- } -- -- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most -- 32512. If the loop is larger than that, then we just fail. */ -- if (loop_length_hi > 32512) -- as_bad_where (fragP->fr_file, fragP->fr_line, -- _("loop too long for LOOP instruction")); -- -- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0); -- gas_assert (addi_insn.opcode == xtensa_addi_opcode); -- -- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0); -- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode); -- -- set_expr_const (&addi_insn.tok[2], loop_length_lo); -- tinsn_to_insnbuf (&addi_insn, insnbuf); -- -- fragP->tc_frag_data.is_insn = TRUE; -- xtensa_insnbuf_to_chars -- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0); -- -- set_expr_const (&addmi_insn.tok[2], loop_length_hi); -- tinsn_to_insnbuf (&addmi_insn, insnbuf); -- xtensa_insnbuf_to_chars -- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0); -- -- /* Walk through all of the frags from here to the loop end -- and mark them as no_transform to keep them from being modified -- by the linker. If we ever have a relocation for the -- addi/addmi of the difference of two symbols we can remove this. */ -- -- target_count = 0; -- for (next_fragP = fragP; next_fragP != NULL; -- next_fragP = next_fragP->fr_next) -- { -- next_fragP->tc_frag_data.is_no_transform = TRUE; -- if (next_fragP->tc_frag_data.is_loop_target) -- target_count++; -- if (target_count == 2) -- break; -- } --} -- - - /* A map that keeps information on a per-subsegment basis. This is - maintained during initial assembly, but is invalid once the -diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c -index cb296ed85ed2..daf15d52c259 100644 ---- a/gas/config/xtensa-relax.c -+++ b/gas/config/xtensa-relax.c -@@ -87,13 +87,7 @@ - when the first and second operands are not the same as specified - by the "| %at!=%as" precondition clause. - {"l32i %at,%as,%imm | %at!=%as", -- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} -- -- There is special case for loop instructions here, but because we do -- not currently have the ability to represent the difference of two -- symbols, the conversion requires special code in the assembler to -- write the operands of the addi/addmi pair representing the -- difference of the old and new loop end label. */ -+ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */ - - #include "as.h" - #include "xtensa-isa.h" -@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] = - {"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16", - "const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"}, - -- /* This is only PART of the loop instruction. In addition, -- hardcoded into its use is a modification of the final operand in -- the instruction in bytes 9 and 12. */ -- {"loop %as,%label | %as!=1 ? IsaUseLoops", -+ /* Widening loops with literals. */ -+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", -+ "loop %as,%LABEL;" -+ "rsr.lend %as;" /* LEND */ -+ "wsr.lbeg %as;" /* LBEG */ -+ "LITERAL %label;" -+ "l32r %as, %LITERAL;" -+ "nop;" -+ "wsr.lend %as;" -+ "isync;" -+ "rsr.lcount %as;" /* LCOUNT */ -+ "addi %as, %as, 1;" -+ "LABEL"}, -+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", -+ "beqz %as,%label;" -+ "bltz %as,%label;" -+ "loopgtz %as,%LABEL;" -+ "rsr.lend %as;" /* LEND */ -+ "wsr.lbeg %as;" /* LBEG */ -+ "LITERAL %label;" -+ "l32r %as, %LITERAL;" -+ "nop;" -+ "wsr.lend %as;" -+ "isync;" -+ "rsr.lcount %as;" /* LCOUNT */ -+ "addi %as, %as, 1;" -+ "LABEL"}, -+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R", -+ "beqz %as,%label;" -+ "loopnez %as,%LABEL;" -+ "rsr.lend %as;" /* LEND */ -+ "wsr.lbeg %as;" /* LBEG */ -+ "LITERAL %label;" -+ "l32r %as, %LITERAL;" -+ "nop;" -+ "wsr.lend %as;" -+ "isync;" -+ "rsr.lcount %as;" /* LCOUNT */ -+ "addi %as, %as, 1;" -+ "LABEL"}, -+ -+ /* Widening loops with const16. */ -+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", - "loop %as,%LABEL;" - "rsr.lend %as;" /* LEND */ - "wsr.lbeg %as;" /* LBEG */ -- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ -- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ -+ "const16 %as,HI16U(%label);" -+ "const16 %as,LOW16U(%label);" - "wsr.lend %as;" - "isync;" - "rsr.lcount %as;" /* LCOUNT */ -- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ -+ "addi %as, %as, 1;" - "LABEL"}, -- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops", -+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", - "beqz %as,%label;" - "bltz %as,%label;" - "loopgtz %as,%LABEL;" - "rsr.lend %as;" /* LEND */ - "wsr.lbeg %as;" /* LBEG */ -- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ -- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ -+ "const16 %as,HI16U(%label);" -+ "const16 %as,LOW16U(%label);" - "wsr.lend %as;" - "isync;" - "rsr.lcount %as;" /* LCOUNT */ -- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ -+ "addi %as, %as, 1;" - "LABEL"}, -- {"loopnez %as,%label | %as!=1 ? IsaUseLoops", -+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16", - "beqz %as,%label;" - "loopnez %as,%LABEL;" - "rsr.lend %as;" /* LEND */ - "wsr.lbeg %as;" /* LBEG */ -- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */ -- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */ -+ "const16 %as,HI16U(%label);" -+ "const16 %as,LOW16U(%label);" - "wsr.lend %as;" - "isync;" - "rsr.lcount %as;" /* LCOUNT */ -- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */ -+ "addi %as, %as, 1;" - "LABEL"}, - - /* Relaxing to wide branches. Order is important here. With wide --- -2.11.0 - diff --git a/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch b/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch deleted file mode 100644 index b4bbc27b37..0000000000 --- a/package/binutils/2.32/0005-xtensa-gas-put-.literal_position-at-section-start.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 471702ac4a57878a06e8167f063274cf413e548d Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Mon, 8 Apr 2019 13:47:18 -0700 -Subject: [PATCH] xtensa: gas: put .literal_position at section start - -Provide literal position at the beginning of each section for literal -space reserved by relaxations when text-section-literals or -auto-litpools options are used. Remove code that adds fill frag to the -literal section for every .literal_position directive to avoid creation -of empty literal sections. - -Fix auto-litpools tests that got literal pool address changes. - -gas/ -2019-04-11 Max Filippov - - * config/tc-xtensa.c (xtensa_is_init_fini): Add declaration. - (xtensa_mark_literal_pool_location): Don't add fill frag to literal - section that records literal pool location. - (md_begin): Call xtensa_mark_literal_pool_location when text - section literals or auto litpools are used. - (xtensa_elf_section_change_hook): Call - xtensa_mark_literal_pool_location when text section literals or - auto litpools are used, there's no literal pool location defined - for the current section and it's not .init or .fini. - -Signed-off-by: Max Filippov ---- - gas/config/tc-xtensa.c | 22 +++++++++------------- - 1 file changed, 9 insertions(+), 13 deletions(-) - -diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c -index 0cc06361cf6f..6a80e76fed8c 100644 ---- a/gas/config/tc-xtensa.c -+++ b/gas/config/tc-xtensa.c -@@ -497,6 +497,7 @@ static fixS *xg_append_jump (fragS *fragP, symbolS *sym, offsetT offset); - static void xtensa_maybe_create_literal_pool_frag (bfd_boolean, bfd_boolean); - static bfd_boolean auto_litpools = FALSE; - static int auto_litpool_limit = 0; -+static bfd_boolean xtensa_is_init_fini (segT seg); - - /* Alignment Functions. */ - -@@ -4797,7 +4798,6 @@ xtensa_mark_literal_pool_location (void) - { - /* Any labels pointing to the current location need - to be adjusted to after the literal pool. */ -- emit_state s; - fragS *pool_location; - - if (use_literal_section) -@@ -4818,19 +4818,7 @@ xtensa_mark_literal_pool_location (void) - RELAX_LITERAL_POOL_END, NULL, 0, NULL); - xtensa_set_frag_assembly_state (frag_now); - -- /* Now put a frag into the literal pool that points to this location. */ - set_literal_pool_location (now_seg, pool_location); -- xtensa_switch_to_non_abs_literal_fragment (&s); -- frag_align (2, 0, 0); -- record_alignment (now_seg, 2); -- -- /* Close whatever frag is there. */ -- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); -- xtensa_set_frag_assembly_state (frag_now); -- frag_now->tc_frag_data.literal_frag = pool_location; -- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL); -- xtensa_restore_emit_state (&s); -- xtensa_set_frag_assembly_state (frag_now); - } - - -@@ -5334,6 +5322,9 @@ md_begin (void) - /* Set up the assembly state. */ - if (!frag_now->tc_frag_data.is_assembly_state_set) - xtensa_set_frag_assembly_state (frag_now); -+ -+ if (!use_literal_section) -+ xtensa_mark_literal_pool_location (); - } - - -@@ -5933,6 +5924,11 @@ xtensa_elf_section_change_hook (void) - /* Set up the assembly state. */ - if (!frag_now->tc_frag_data.is_assembly_state_set) - xtensa_set_frag_assembly_state (frag_now); -+ -+ if (!use_literal_section -+ && seg_info (now_seg)->tc_segment_info_data.literal_pool_loc == NULL -+ && !xtensa_is_init_fini (now_seg)) -+ xtensa_mark_literal_pool_location (); - } - - --- -2.11.0 - diff --git a/package/binutils/2.32/0006-or1k-Fix-incorrect-value-in-PLT-GOT-entries-causing-.patch b/package/binutils/2.32/0006-or1k-Fix-incorrect-value-in-PLT-GOT-entries-causing-.patch deleted file mode 100644 index 8527b66733..0000000000 --- a/package/binutils/2.32/0006-or1k-Fix-incorrect-value-in-PLT-GOT-entries-causing-.patch +++ /dev/null @@ -1,46 +0,0 @@ -From b17678f639f953d687d96cd52690e7cbfae50f91 Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Fri, 23 Aug 2019 22:25:55 +0900 -Subject: [PATCH] or1k: Fix incorrect value in PLT GOT entries, causing - infinite loop - -The PLT GOT entry should point to the first PLT entry which contains the -runtime linker function. It was pointing back to the symbol PLT entry -causing an infinite loop. - -I found this when testing the OpenRISC glibc port which uses the runtime -dynamic linker. It seems other libc's we use so far have not been -making use of the initial PLT GOT entries. - -bfd/ChangeLog: - - * elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for - PLT GOT entries. - -(cherry picked from commit 09f7b0de537d465fc8ed9f9433e348c1bc78aab2) -Signed-off-by: Romain Naour ---- - bfd/elf32-or1k.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 2f200b197b8..32839cfa7b6 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -2379,8 +2379,11 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd, - or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset, - plt0, plt1, plt2, OR1K_JR(12)); - -- /* Fill in the entry in the global offset table. */ -- bfd_put_32 (output_bfd, plt_addr, sgot->contents + got_offset); -+ /* Fill in the entry in the global offset table. We initialize it to -+ point to the top of the plt. This is done to lazy lookup the actual -+ symbol as the first plt entry will be setup by libc to call the -+ runtime dynamic linker. */ -+ bfd_put_32 (output_bfd, plt_base_addr, sgot->contents + got_offset); - - /* Fill in the entry in the .rela.plt section. */ - rela.r_offset = got_addr; --- -2.23.0 - diff --git a/package/binutils/2.32/0007-bfd-xtensa-fix-PR-ld-25630.patch b/package/binutils/2.32/0007-bfd-xtensa-fix-PR-ld-25630.patch deleted file mode 100644 index f499426b70..0000000000 --- a/package/binutils/2.32/0007-bfd-xtensa-fix-PR-ld-25630.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 85dcca5997cf3822d6456a5c9c59c46b56adfbb8 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Wed, 4 Mar 2020 14:54:27 -0800 -Subject: [PATCH] bfd: xtensa: fix PR ld/25630 - -bfd/ -2020-03-05 Max Filippov - - * elf32-xtensa.c (shrink_dynamic_reloc_sections): Shrink dynamic - relocation sections for any removed reference to a dynamic symbol. - -Signed-off-by: Max Filippov ---- - bfd/elf32-xtensa.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c -index 12ff9f772aaf..65e14d87940c 100644 ---- a/bfd/elf32-xtensa.c -+++ b/bfd/elf32-xtensa.c -@@ -10148,10 +10148,9 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info, - - if ((r_type == R_XTENSA_32 || r_type == R_XTENSA_PLT) - && (input_section->flags & SEC_ALLOC) != 0 -- && (dynamic_symbol || bfd_link_pic (info)) -- && (!h || h->root.type != bfd_link_hash_undefweak -- || (dynamic_symbol -- && (bfd_link_dll (info) || info->export_dynamic)))) -+ && (dynamic_symbol -+ || (bfd_link_pic (info) -+ && (!h || h->root.type != bfd_link_hash_undefweak)))) - { - asection *srel; - bfd_boolean is_plt = FALSE; --- -2.20.1 - diff --git a/package/binutils/2.32/0008-xtensa-fix-PR-ld-25861.patch b/package/binutils/2.32/0008-xtensa-fix-PR-ld-25861.patch deleted file mode 100644 index 2df46c6526..0000000000 --- a/package/binutils/2.32/0008-xtensa-fix-PR-ld-25861.patch +++ /dev/null @@ -1,432 +0,0 @@ -From c7a1d1f656c717394937a92cb970f0f4cecce128 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Sun, 19 Apr 2020 19:04:41 -0700 -Subject: [PATCH] xtensa: fix PR ld/25861 - -Introduce new relaxations XTENSA_PDIFF{8,16,32} for positive differences -(subtracted symbol precedes diminished symbol) and XTENSA_NDIFF{8,16,32} -for negative differences (subtracted symbol follows diminished symbol). -Don't generate XTENSA_DIFF relocations in the assembler, generate -XTENSA_PDIFF or XTENSA_NDIFF based on relative symbol position. - -Handle XTENSA_DIFF in BFD for compatibility with old object files. -Handle XTENSA_PDIFF and XTENSA_NDIFF in BFD, treating difference value -as unsigned. - -2020-04-22 Max Filippov -bfd/ - * bfd-in2.h: Regenerated. - * elf32-xtensa.c (elf_howto_table): New entries for - R_XTENSA_PDIFF{8,16,32} and R_XTENSA_NDIFF{8,16,32}. - (elf_xtensa_reloc_type_lookup, elf_xtensa_do_reloc) - (relax_section): Add cases for R_XTENSA_PDIFF{8,16,32} and - R_XTENSA_NDIFF{8,16,32}. - * libbfd.h (bfd_reloc_code_real_names): Add names for - BFD_RELOC_XTENSA_PDIFF{8,16,32} and - BFD_RELOC_XTENSA_NDIFF{8,16,32}. - * reloc.c: Add documentation for BFD_RELOC_XTENSA_PDIFF{8,16,32} - and BFD_RELOC_XTENSA_NDIFF{8,16,32}. - -binutils/ - * readelf.c (is_none_reloc): Recognize - BFD_RELOC_XTENSA_PDIFF{8,16,32} and - BFD_RELOC_XTENSA_NDIFF{8,16,32}. - -gas/ - * config/tc-xtensa.c (md_apply_fix): Replace - BFD_RELOC_XTENSA_DIFF{8,16,32} generation with - BFD_RELOC_XTENSA_PDIFF{8,16,32} and - BFD_RELOC_XTENSA_NDIFF{8,16,32} generation. - * testsuite/gas/xtensa/loc.d: Replace BFD_RELOC_XTENSA_DIFF16 - with BFD_RELOC_XTENSA_PDIFF16 in the expected output. - -include/ - * elf/xtensa.h (elf_xtensa_reloc_type): New entries for - R_XTENSA_PDIFF{8,16,32} and R_XTENSA_NDIFF{8,16,32}. - -ld/ - * testsuite/ld-xtensa/relax-loc.d: New test definition. - * testsuite/ld-xtensa/relax-loc.s: New test source. - * testsuite/ld-xtensa/xtensa.exp (relax-loc): New test. - -Signed-off-by: Max Filippov ---- -Backported from: 30ce8e47fad9b057b6d7af9e1d43061126d34d20 - - bfd/bfd-in2.h | 20 ++++++- - bfd/elf32-xtensa.c | 89 +++++++++++++++++++++++++++++- - bfd/libbfd.h | 6 ++ - bfd/reloc.c | 24 ++++++++ - binutils/readelf.c | 8 ++- - gas/config/tc-xtensa.c | 12 +++- - gas/testsuite/gas/xtensa/loc.d | 2 +- - include/elf/xtensa.h | 6 ++ - ld/testsuite/ld-xtensa/relax-loc.d | 7 +++ - ld/testsuite/ld-xtensa/relax-loc.s | 15 +++++ - ld/testsuite/ld-xtensa/xtensa.exp | 1 + - 11 files changed, 183 insertions(+), 7 deletions(-) - create mode 100644 ld/testsuite/ld-xtensa/relax-loc.d - create mode 100644 ld/testsuite/ld-xtensa/relax-loc.s - -diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h -index 37114607b515..be6a30f57955 100644 ---- a/bfd/bfd-in2.h -+++ b/bfd/bfd-in2.h -@@ -5217,7 +5217,9 @@ to one of its own internal functions or data structures. */ - PLT entries. Otherwise, this is just a generic 32-bit relocation. */ - BFD_RELOC_XTENSA_PLT, - --/* Xtensa relocations to mark the difference of two local symbols. -+/* Xtensa relocations for backward compatibility. These have been replaced -+by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF. -+Xtensa relocations to mark the difference of two local symbols. - These are only needed to support linker relaxation and can be ignored - when not relaxing. The field is set to the value of the difference - assuming no relaxation. The relocation encodes the position of the -@@ -5291,6 +5293,22 @@ BFD_RELOC_XTENSA_ASM_EXPAND. */ - BFD_RELOC_XTENSA_TLS_ARG, - BFD_RELOC_XTENSA_TLS_CALL, - -+/* Xtensa relocations to mark the difference of two local symbols. -+These are only needed to support linker relaxation and can be ignored -+when not relaxing. The field is set to the value of the difference -+assuming no relaxation. The relocation encodes the position of the -+subtracted symbol so the linker can determine whether to adjust the field -+value. PDIFF relocations are used for positive differences, NDIFF -+relocations are used for negative differences. The difference value -+is treated as unsigned with these relocation types, giving full -+8/16 value ranges. */ -+ BFD_RELOC_XTENSA_PDIFF8, -+ BFD_RELOC_XTENSA_PDIFF16, -+ BFD_RELOC_XTENSA_PDIFF32, -+ BFD_RELOC_XTENSA_NDIFF8, -+ BFD_RELOC_XTENSA_NDIFF16, -+ BFD_RELOC_XTENSA_NDIFF32, -+ - /* 8 bit signed offset in (ix+d) or (iy+d). */ - BFD_RELOC_Z80_DISP8, - -diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c -index 473a9d76f289..fded42d52a9a 100644 ---- a/bfd/elf32-xtensa.c -+++ b/bfd/elf32-xtensa.c -@@ -325,6 +325,20 @@ static reloc_howto_type elf_howto_table[] = - HOWTO (R_XTENSA_TLS_CALL, 0, 0, 0, FALSE, 0, complain_overflow_dont, - bfd_elf_xtensa_reloc, "R_XTENSA_TLS_CALL", - FALSE, 0, 0, FALSE), -+ -+ HOWTO (R_XTENSA_PDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF8", FALSE, 0, 0xff, FALSE), -+ HOWTO (R_XTENSA_PDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF16", FALSE, 0, 0xffff, FALSE), -+ HOWTO (R_XTENSA_PDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF32", FALSE, 0, 0xffffffff, FALSE), -+ -+ HOWTO (R_XTENSA_NDIFF8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF8", FALSE, 0, 0xff, FALSE), -+ HOWTO (R_XTENSA_NDIFF16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF16", FALSE, 0, 0xffff, FALSE), -+ HOWTO (R_XTENSA_NDIFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, -+ bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF32", FALSE, 0, 0xffffffff, FALSE), - }; - - #if DEBUG_GEN_RELOC -@@ -364,6 +378,30 @@ elf_xtensa_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, - TRACE ("BFD_RELOC_XTENSA_DIFF32"); - return &elf_howto_table[(unsigned) R_XTENSA_DIFF32 ]; - -+ case BFD_RELOC_XTENSA_PDIFF8: -+ TRACE ("BFD_RELOC_XTENSA_PDIFF8"); -+ return &elf_howto_table[(unsigned) R_XTENSA_PDIFF8 ]; -+ -+ case BFD_RELOC_XTENSA_PDIFF16: -+ TRACE ("BFD_RELOC_XTENSA_PDIFF16"); -+ return &elf_howto_table[(unsigned) R_XTENSA_PDIFF16 ]; -+ -+ case BFD_RELOC_XTENSA_PDIFF32: -+ TRACE ("BFD_RELOC_XTENSA_PDIFF32"); -+ return &elf_howto_table[(unsigned) R_XTENSA_PDIFF32 ]; -+ -+ case BFD_RELOC_XTENSA_NDIFF8: -+ TRACE ("BFD_RELOC_XTENSA_NDIFF8"); -+ return &elf_howto_table[(unsigned) R_XTENSA_NDIFF8 ]; -+ -+ case BFD_RELOC_XTENSA_NDIFF16: -+ TRACE ("BFD_RELOC_XTENSA_NDIFF16"); -+ return &elf_howto_table[(unsigned) R_XTENSA_NDIFF16 ]; -+ -+ case BFD_RELOC_XTENSA_NDIFF32: -+ TRACE ("BFD_RELOC_XTENSA_NDIFF32"); -+ return &elf_howto_table[(unsigned) R_XTENSA_NDIFF32 ]; -+ - case BFD_RELOC_XTENSA_RTLD: - TRACE ("BFD_RELOC_XTENSA_RTLD"); - return &elf_howto_table[(unsigned) R_XTENSA_RTLD ]; -@@ -1851,6 +1889,12 @@ elf_xtensa_do_reloc (reloc_howto_type *howto, - case R_XTENSA_DIFF8: - case R_XTENSA_DIFF16: - case R_XTENSA_DIFF32: -+ case R_XTENSA_PDIFF8: -+ case R_XTENSA_PDIFF16: -+ case R_XTENSA_PDIFF32: -+ case R_XTENSA_NDIFF8: -+ case R_XTENSA_NDIFF16: -+ case R_XTENSA_NDIFF32: - case R_XTENSA_TLS_FUNC: - case R_XTENSA_TLS_ARG: - case R_XTENSA_TLS_CALL: -@@ -9604,7 +9648,13 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) - - if (r_type == R_XTENSA_DIFF8 - || r_type == R_XTENSA_DIFF16 -- || r_type == R_XTENSA_DIFF32) -+ || r_type == R_XTENSA_DIFF32 -+ || r_type == R_XTENSA_PDIFF8 -+ || r_type == R_XTENSA_PDIFF16 -+ || r_type == R_XTENSA_PDIFF32 -+ || r_type == R_XTENSA_NDIFF8 -+ || r_type == R_XTENSA_NDIFF16 -+ || r_type == R_XTENSA_NDIFF32) - { - bfd_signed_vma diff_value = 0; - bfd_vma new_end_offset, diff_mask = 0; -@@ -9631,8 +9681,27 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) - diff_value = - bfd_get_signed_32 (abfd, &contents[old_source_offset]); - break; -+ case R_XTENSA_PDIFF8: -+ case R_XTENSA_NDIFF8: -+ diff_value = -+ bfd_get_8 (abfd, &contents[old_source_offset]); -+ break; -+ case R_XTENSA_PDIFF16: -+ case R_XTENSA_NDIFF16: -+ diff_value = -+ bfd_get_16 (abfd, &contents[old_source_offset]); -+ break; -+ case R_XTENSA_PDIFF32: -+ case R_XTENSA_NDIFF32: -+ diff_value = -+ bfd_get_32 (abfd, &contents[old_source_offset]); -+ break; - } - -+ if (r_type >= R_XTENSA_NDIFF8 -+ && r_type <= R_XTENSA_NDIFF32) -+ diff_value = -diff_value; -+ - new_end_offset = offset_with_removed_text_map - (&target_relax_info->action_list, - r_rel.target_offset + diff_value); -@@ -9655,6 +9724,24 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) - bfd_put_signed_32 (abfd, diff_value, - &contents[old_source_offset]); - break; -+ case R_XTENSA_PDIFF8: -+ case R_XTENSA_NDIFF8: -+ diff_mask = 0xff; -+ bfd_put_8 (abfd, diff_value, -+ &contents[old_source_offset]); -+ break; -+ case R_XTENSA_PDIFF16: -+ case R_XTENSA_NDIFF16: -+ diff_mask = 0xffff; -+ bfd_put_16 (abfd, diff_value, -+ &contents[old_source_offset]); -+ break; -+ case R_XTENSA_PDIFF32: -+ case R_XTENSA_NDIFF32: -+ diff_mask = 0xffffffff; -+ bfd_put_32 (abfd, diff_value, -+ &contents[old_source_offset]); -+ break; - } - - /* Check for overflow. Sign bits must be all zeroes or all ones */ -diff --git a/bfd/libbfd.h b/bfd/libbfd.h -index 3c184fcadadf..989f4bc0b595 100644 ---- a/bfd/libbfd.h -+++ b/bfd/libbfd.h -@@ -2919,6 +2919,12 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", - "BFD_RELOC_XTENSA_TLS_FUNC", - "BFD_RELOC_XTENSA_TLS_ARG", - "BFD_RELOC_XTENSA_TLS_CALL", -+ "BFD_RELOC_XTENSA_PDIFF8", -+ "BFD_RELOC_XTENSA_PDIFF16", -+ "BFD_RELOC_XTENSA_PDIFF32", -+ "BFD_RELOC_XTENSA_NDIFF8", -+ "BFD_RELOC_XTENSA_NDIFF16", -+ "BFD_RELOC_XTENSA_NDIFF32", - "BFD_RELOC_Z80_DISP8", - "BFD_RELOC_Z80_BYTE0", - "BFD_RELOC_Z80_BYTE1", -diff --git a/bfd/reloc.c b/bfd/reloc.c -index c4dec86d1d46..f5df8e2ab3eb 100644 ---- a/bfd/reloc.c -+++ b/bfd/reloc.c -@@ -6556,6 +6556,8 @@ ENUMX - ENUMX - BFD_RELOC_XTENSA_DIFF32 - ENUMDOC -+ Xtensa relocations for backward compatibility. These have been replaced -+ by BFD_RELOC_XTENSA_PDIFF and BFD_RELOC_XTENSA_NDIFF. - Xtensa relocations to mark the difference of two local symbols. - These are only needed to support linker relaxation and can be ignored - when not relaxing. The field is set to the value of the difference -@@ -6668,6 +6670,28 @@ ENUMX - BFD_RELOC_XTENSA_TLS_CALL - ENUMDOC - Xtensa TLS relocations. -+ENUM -+ BFD_RELOC_XTENSA_PDIFF8 -+ENUMX -+ BFD_RELOC_XTENSA_PDIFF16 -+ENUMX -+ BFD_RELOC_XTENSA_PDIFF32 -+ENUMX -+ BFD_RELOC_XTENSA_NDIFF8 -+ENUMX -+ BFD_RELOC_XTENSA_NDIFF16 -+ENUMX -+ BFD_RELOC_XTENSA_NDIFF32 -+ENUMDOC -+ Xtensa relocations to mark the difference of two local symbols. -+ These are only needed to support linker relaxation and can be ignored -+ when not relaxing. The field is set to the value of the difference -+ assuming no relaxation. The relocation encodes the position of the -+ subtracted symbol so the linker can determine whether to adjust the field -+ value. PDIFF relocations are used for positive differences, NDIFF -+ relocations are used for negative differences. The difference value -+ is treated as unsigned with these relocation types, giving full -+ 8/16 value ranges. - - ENUM - BFD_RELOC_Z80_DISP8 -diff --git a/binutils/readelf.c b/binutils/readelf.c -index d4756c93b345..800918f901c8 100644 ---- a/binutils/readelf.c -+++ b/binutils/readelf.c -@@ -13262,7 +13262,13 @@ is_none_reloc (Filedata * filedata, unsigned int reloc_type) - return (reloc_type == 0 /* R_XTENSA_NONE. */ - || reloc_type == 17 /* R_XTENSA_DIFF8. */ - || reloc_type == 18 /* R_XTENSA_DIFF16. */ -- || reloc_type == 19 /* R_XTENSA_DIFF32. */); -+ || reloc_type == 19 /* R_XTENSA_DIFF32. */ -+ || reloc_type == 57 /* R_XTENSA_PDIFF8. */ -+ || reloc_type == 58 /* R_XTENSA_PDIFF16. */ -+ || reloc_type == 59 /* R_XTENSA_PDIFF32. */ -+ || reloc_type == 60 /* R_XTENSA_NDIFF8. */ -+ || reloc_type == 61 /* R_XTENSA_NDIFF16. */ -+ || reloc_type == 62 /* R_XTENSA_NDIFF32. */); - } - return FALSE; - } -diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c -index 71d4d94a8d7d..ee75c13548ff 100644 ---- a/gas/config/tc-xtensa.c -+++ b/gas/config/tc-xtensa.c -@@ -5974,18 +5974,24 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg) - case BFD_RELOC_8: - if (fixP->fx_subsy) - { -+ bfd_boolean neg = S_GET_VALUE (fixP->fx_addsy) + fixP->fx_offset -+ < S_GET_VALUE (fixP->fx_subsy); -+ - switch (fixP->fx_r_type) - { - case BFD_RELOC_8: -- fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF8; -+ fixP->fx_r_type = neg -+ ? BFD_RELOC_XTENSA_NDIFF8 : BFD_RELOC_XTENSA_PDIFF8; - fixP->fx_signed = 0; - break; - case BFD_RELOC_16: -- fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF16; -+ fixP->fx_r_type = neg -+ ? BFD_RELOC_XTENSA_NDIFF16 : BFD_RELOC_XTENSA_PDIFF16; - fixP->fx_signed = 0; - break; - case BFD_RELOC_32: -- fixP->fx_r_type = BFD_RELOC_XTENSA_DIFF32; -+ fixP->fx_r_type = neg -+ ? BFD_RELOC_XTENSA_NDIFF32 : BFD_RELOC_XTENSA_PDIFF32; - fixP->fx_signed = 0; - break; - default: -diff --git a/gas/testsuite/gas/xtensa/loc.d b/gas/testsuite/gas/xtensa/loc.d -index 71983cc90055..8fb3425999d5 100644 ---- a/gas/testsuite/gas/xtensa/loc.d -+++ b/gas/testsuite/gas/xtensa/loc.d -@@ -6,5 +6,5 @@ - - RELOCATION RECORDS FOR \[\.debug_line\]: - #... --.*R_XTENSA_DIFF16.*\.text\+0x00009c42 -+.*R_XTENSA_PDIFF16.*\.text\+0x00009c42 - #... -diff --git a/include/elf/xtensa.h b/include/elf/xtensa.h -index 2eb5e4e52941..bd5c80d13777 100644 ---- a/include/elf/xtensa.h -+++ b/include/elf/xtensa.h -@@ -87,6 +87,12 @@ START_RELOC_NUMBERS (elf_xtensa_reloc_type) - RELOC_NUMBER (R_XTENSA_TLS_FUNC, 54) - RELOC_NUMBER (R_XTENSA_TLS_ARG, 55) - RELOC_NUMBER (R_XTENSA_TLS_CALL, 56) -+ RELOC_NUMBER (R_XTENSA_PDIFF8, 57) -+ RELOC_NUMBER (R_XTENSA_PDIFF16, 58) -+ RELOC_NUMBER (R_XTENSA_PDIFF32, 59) -+ RELOC_NUMBER (R_XTENSA_NDIFF8, 60) -+ RELOC_NUMBER (R_XTENSA_NDIFF16, 61) -+ RELOC_NUMBER (R_XTENSA_NDIFF32, 62) - END_RELOC_NUMBERS (R_XTENSA_max) - - /* Processor-specific flags for the ELF header e_flags field. */ -diff --git a/ld/testsuite/ld-xtensa/relax-loc.d b/ld/testsuite/ld-xtensa/relax-loc.d -new file mode 100644 -index 000000000000..3c8d673732ff ---- /dev/null -+++ b/ld/testsuite/ld-xtensa/relax-loc.d -@@ -0,0 +1,7 @@ -+#as: --text-section-literals -+#ld: -+#objdump: --dwarf=decodedline -+#... -+relax-loc.s[ ]+1[ ]+0x400054[ ]+.* -+relax-loc.s[ ]+2[ ]+0x40005c[ ]+.* -+#... -diff --git a/ld/testsuite/ld-xtensa/relax-loc.s b/ld/testsuite/ld-xtensa/relax-loc.s -new file mode 100644 -index 000000000000..d768470e287a ---- /dev/null -+++ b/ld/testsuite/ld-xtensa/relax-loc.s -@@ -0,0 +1,15 @@ -+ .file 1 "relax-loc.s" -+ .globl _start -+ .globl _ResetVector -+ .text -+_ResetVector: -+_start: -+ .loc 1 1 -+ j 1f -+ .literal_position -+1: -+ .loc 1 2 -+ -+ .rep 10000 -+ movi a2, 0x12345678 -+ .endr -diff --git a/ld/testsuite/ld-xtensa/xtensa.exp b/ld/testsuite/ld-xtensa/xtensa.exp -index 9b2235b2151b..de39887936ad 100644 ---- a/ld/testsuite/ld-xtensa/xtensa.exp -+++ b/ld/testsuite/ld-xtensa/xtensa.exp -@@ -27,6 +27,7 @@ run_dump_test "call_overflow" - run_dump_test "coalesce" - run_dump_test "diff_overflow" - run_dump_test "lcall" -+run_dump_test "relax-loc" - - run_dump_test "relax-static-pie" - run_dump_test "relax-static-local-pie" --- -2.20.1 - diff --git a/package/binutils/2.32/0009-xtensa-fix-XTENSA_NDIFF-handling-for-PR-ld-25861.patch b/package/binutils/2.32/0009-xtensa-fix-XTENSA_NDIFF-handling-for-PR-ld-25861.patch deleted file mode 100644 index 28f17d7c56..0000000000 --- a/package/binutils/2.32/0009-xtensa-fix-XTENSA_NDIFF-handling-for-PR-ld-25861.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 735321812435ae278d3766a3371f55937dc776d6 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Sat, 25 Apr 2020 00:40:25 -0700 -Subject: [PATCH] xtensa: fix XTENSA_NDIFF handling for PR ld/25861 - -Fields marked with XTENSA_NDIFF relocations are not negated, they only -have sign bits removed. Don't negate their values when relaxation is -performed. Don't add sign bits when the value is zero. Report overflow -when the result has negative sign but all significant bits are zero. - -2020-04-29 Max Filippov -bfd/ - * elf32-xtensa.c (relax_section): Don't negate diff_value for - XTENSA_NDIFF relocations. Don't add sign bits whe diff_value - equals 0. Report overflow when the result has negative sign but - all significant bits are zero. - -Signed-off-by: Max Filippov -Backported from: d548f47df4d2e3d117d504a4c9977982c78a0556 ---- - - bfd/elf32-xtensa.c | 26 +++++++++++++++----------- - 1 file changed, 15 insertions(+), 11 deletions(-) - -diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c -index fded42d52a9a..4327b027911f 100644 ---- a/bfd/elf32-xtensa.c -+++ b/bfd/elf32-xtensa.c -@@ -9670,37 +9670,44 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) - switch (r_type) - { - case R_XTENSA_DIFF8: -+ diff_mask = 0x7f; - diff_value = - bfd_get_signed_8 (abfd, &contents[old_source_offset]); - break; - case R_XTENSA_DIFF16: -+ diff_mask = 0x7fff; - diff_value = - bfd_get_signed_16 (abfd, &contents[old_source_offset]); - break; - case R_XTENSA_DIFF32: -+ diff_mask = 0x7fffffff; - diff_value = - bfd_get_signed_32 (abfd, &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF8: - case R_XTENSA_NDIFF8: -+ diff_mask = 0xff; - diff_value = - bfd_get_8 (abfd, &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF16: - case R_XTENSA_NDIFF16: -+ diff_mask = 0xffff; - diff_value = - bfd_get_16 (abfd, &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF32: - case R_XTENSA_NDIFF32: -+ diff_mask = 0xffffffff; - diff_value = - bfd_get_32 (abfd, &contents[old_source_offset]); - break; - } - - if (r_type >= R_XTENSA_NDIFF8 -- && r_type <= R_XTENSA_NDIFF32) -- diff_value = -diff_value; -+ && r_type <= R_XTENSA_NDIFF32 -+ && diff_value) -+ diff_value |= ~diff_mask; - - new_end_offset = offset_with_removed_text_map - (&target_relax_info->action_list, -@@ -9710,43 +9717,40 @@ relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info) - switch (r_type) - { - case R_XTENSA_DIFF8: -- diff_mask = 0x7f; - bfd_put_signed_8 (abfd, diff_value, - &contents[old_source_offset]); - break; - case R_XTENSA_DIFF16: -- diff_mask = 0x7fff; - bfd_put_signed_16 (abfd, diff_value, - &contents[old_source_offset]); - break; - case R_XTENSA_DIFF32: -- diff_mask = 0x7fffffff; - bfd_put_signed_32 (abfd, diff_value, - &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF8: - case R_XTENSA_NDIFF8: -- diff_mask = 0xff; - bfd_put_8 (abfd, diff_value, - &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF16: - case R_XTENSA_NDIFF16: -- diff_mask = 0xffff; - bfd_put_16 (abfd, diff_value, - &contents[old_source_offset]); - break; - case R_XTENSA_PDIFF32: - case R_XTENSA_NDIFF32: -- diff_mask = 0xffffffff; - bfd_put_32 (abfd, diff_value, - &contents[old_source_offset]); - break; - } - -- /* Check for overflow. Sign bits must be all zeroes or all ones */ -- if ((diff_value & ~diff_mask) != 0 && -- (diff_value & ~diff_mask) != (-1 & ~diff_mask)) -+ /* Check for overflow. Sign bits must be all zeroes or -+ all ones. When sign bits are all ones diff_value -+ may not be zero. */ -+ if (((diff_value & ~diff_mask) != 0 -+ && (diff_value & ~diff_mask) != ~diff_mask) -+ || (diff_value && (bfd_vma) diff_value == ~diff_mask)) - { - (*link_info->callbacks->reloc_dangerous) - (link_info, _("overflow after relaxation"), --- -2.20.1 - diff --git a/package/binutils/2.32/0010-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch b/package/binutils/2.32/0010-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch deleted file mode 100644 index a67d12789e..0000000000 --- a/package/binutils/2.32/0010-or1k-Fix-issue-with-plt-link-failure-for-local-calls.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 788cda9f9447e0fe67e582e8fb5adafd678d08b2 Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 May 2021 06:02:14 +0900 -Subject: [PATCH] or1k: Fix issue with plt link failure for local calls - -When building protobuf we were seeing the assert failure: - - /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: - BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377 - /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: - BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377 - /home/giuliobenetti/git/upstream/or1k-binutils-2.36.1/host/lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: - BFD (GNU Binutils) 2.36.1 assertion fail elf32-or1k.c:2377 - collect2: error: ld returned 1 exit status - -This failure happens while writing out PLT entries, there is a check -"BFD_ASSERT (h->dynindx != -1)" to confirm all plt entries have dynamic -symbol attributes. This was failing for symbols that were -"forced_local" in previous linking code. - -The fix adds logic to or1k_elf_adjust_dynamic_symbol to identify -"forced_local" symbols and exclude them from the the PLT. - -bfd/ChangeLog: - - PR 27624 - * elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change - condition used to cleanup plt entries to cleanup forced local - entries. - -Cc: Giulio Benetti -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 2f200b197b8..1f2c88b0b3a 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -2535,11 +2535,10 @@ or1k_elf_adjust_dynamic_symbol (struct bfd_link_info *info, - if (h->type == STT_FUNC - || h->needs_plt) - { -- if (! bfd_link_pic (info) -- && !h->def_dynamic -- && !h->ref_dynamic -- && h->root.type != bfd_link_hash_undefweak -- && h->root.type != bfd_link_hash_undefined) -+ if (h->plt.refcount <= 0 -+ || (SYMBOL_CALLS_LOCAL (info, h) -+ || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT -+ && h->root.type == bfd_link_hash_undefweak))) - { - /* This case can occur if we saw a PLT reloc in an input - file, but the symbol was never referred to by a dynamic --- -2.25.1 - diff --git a/package/binutils/2.32/0011-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch b/package/binutils/2.32/0011-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch deleted file mode 100644 index 5a2b91fe8e..0000000000 --- a/package/binutils/2.32/0011-or1k-Implement-relocation-R_OR1K_GOT_AHI16-for-gotha.patch +++ /dev/null @@ -1,256 +0,0 @@ -From b10e6230dea0015bf3b7748580b82c551f9a3a4a Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 May 2021 06:02:15 +0900 -Subject: [PATCH] or1k: Implement relocation R_OR1K_GOT_AHI16 for gotha() - -The gotha() relocation mnemonic will be outputted by OpenRISC GCC when -using the -mcmodel=large option. This relocation is used along with -got() to generate 32-bit GOT offsets. This increases the previous GOT -offset limit from the previous 16-bit (64K) limit. - -This is needed on large binaries where the GOT grows larger than 64k. - -bfd/ChangeLog: - - PR 21464 - * bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation. - * elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise. - (or1k_final_link_relocate, or1k_elf_relocate_section, - or1k_elf_check_relocs): Likewise. - * libbfd.h (bfd_reloc_code_real_names): Likewise. - * reloc.c: Likewise. - -cpu/ChangeLog: - - PR 21464 - * or1k.opc (or1k_imm16_relocs, parse_reloc): Define parse logic - for gotha() relocation. - -include/ChangeLog: - - PR 21464 - * elf/or1k.h (elf_or1k_reloc_type): Define R_OR1K_GOT_AHI16 number. - -opcodes/ChangeLog: - - PR 21464 - * or1k-asm.c: Regenerate. - -gas/ChangeLog: - - PR 21464 - * testsuite/gas/or1k/reloc-1.s: Add test for new relocation. - * testsuite/gas/or1k/reloc-1.d: Add test result for new - relocation. - -Cc: Giulio Benetti - -fixup reloc, add tests - -Signed-off-by: Giulio Benetti ---- - bfd/bfd-in2.h | 1 + - bfd/elf32-or1k.c | 21 ++++++++++++++++++++- - bfd/libbfd.h | 1 + - bfd/reloc.c | 2 ++ - cpu/or1k.opc | 7 ++++++- - gas/testsuite/gas/or1k/reloc-1.d | 4 +++- - gas/testsuite/gas/or1k/reloc-1.s | 4 ++++ - include/elf/or1k.h | 1 + - opcodes/or1k-asm.c | 7 ++++++- - 9 files changed, 44 insertions(+), 4 deletions(-) - -diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h -index e25da50aafb..530a41fca43 100644 ---- a/bfd/bfd-in2.h -+++ b/bfd/bfd-in2.h -@@ -5517,6 +5517,7 @@ then it may be truncated to 8 bits. */ - BFD_RELOC_OR1K_TLS_TPOFF, - BFD_RELOC_OR1K_TLS_DTPOFF, - BFD_RELOC_OR1K_TLS_DTPMOD, -+ BFD_RELOC_OR1K_GOT_AHI16, - - /* H8 elf Relocations. */ - BFD_RELOC_H8_DIR16A8, -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 1f2c88b0b3a..a4a64f73b7c 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -808,6 +808,20 @@ static reloc_howto_type or1k_elf_howto_table[] = - 0, /* Source Mask. */ - 0x03ffffff, /* Dest Mask. */ - TRUE), /* PC relative offset? */ -+ -+ HOWTO (R_OR1K_GOT_AHI16, /* type */ -+ 16, /* rightshift */ -+ 2, /* size (0 = byte, 1 = short, 2 = long) */ -+ 16, /* bitsize */ -+ FALSE, /* pc_relative */ -+ 0, /* bitpos */ -+ complain_overflow_signed, /* complain_on_overflow */ -+ bfd_elf_generic_reloc, /* special_function */ -+ "R_OR1K_GOT_AHI16", /* name */ -+ FALSE, /* partial_inplace */ -+ 0, /* src_mask */ -+ 0xffff, /* dst_mask */ -+ FALSE), /* pcrel_offset */ - }; - - /* Map BFD reloc types to Or1k ELF reloc types. */ -@@ -871,6 +885,7 @@ static const struct or1k_reloc_map or1k_reloc_map[] = - { BFD_RELOC_OR1K_TLS_IE_LO13, R_OR1K_TLS_IE_LO13 }, - { BFD_RELOC_OR1K_SLO13, R_OR1K_SLO13 }, - { BFD_RELOC_OR1K_PLTA26, R_OR1K_PLTA26 }, -+ { BFD_RELOC_OR1K_GOT_AHI16, R_OR1K_GOT_AHI16 }, - }; - - #define TLS_UNKNOWN 0 -@@ -1080,6 +1095,7 @@ or1k_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd, - switch (howto->type) - { - case R_OR1K_AHI16: -+ case R_OR1K_GOT_AHI16: - case R_OR1K_GOTOFF_AHI16: - case R_OR1K_TLS_IE_AHI16: - case R_OR1K_TLS_LE_AHI16: -@@ -1344,6 +1360,7 @@ or1k_elf_relocate_section (bfd *output_bfd, - } - break; - -+ case R_OR1K_GOT_AHI16: - case R_OR1K_GOT16: - case R_OR1K_GOT_PG21: - case R_OR1K_GOT_LO13: -@@ -1435,7 +1452,8 @@ or1k_elf_relocate_section (bfd *output_bfd, - /* The GOT_PG21 and GOT_LO13 relocs are pc-relative, - while the GOT16 reloc is GOT relative. */ - relocation = got_base + off; -- if (r_type == R_OR1K_GOT16) -+ if (r_type == R_OR1K_GOT16 -+ || r_type == R_OR1K_GOT_AHI16) - relocation -= got_sym_value; - - /* Addend should be zero. */ -@@ -1945,6 +1963,7 @@ or1k_elf_check_relocs (bfd *abfd, - } - break; - -+ case R_OR1K_GOT_AHI16: - case R_OR1K_GOT16: - case R_OR1K_GOT_PG21: - case R_OR1K_GOT_LO13: -diff --git a/bfd/libbfd.h b/bfd/libbfd.h -index 36284d71a9b..6e9e3190bb8 100644 ---- a/bfd/libbfd.h -+++ b/bfd/libbfd.h -@@ -2702,6 +2702,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", - "BFD_RELOC_OR1K_TLS_TPOFF", - "BFD_RELOC_OR1K_TLS_DTPOFF", - "BFD_RELOC_OR1K_TLS_DTPMOD", -+ "BFD_RELOC_OR1K_GOT_AHI16", - "BFD_RELOC_H8_DIR16A8", - "BFD_RELOC_H8_DIR16R8", - "BFD_RELOC_H8_DIR24A8", -diff --git a/bfd/reloc.c b/bfd/reloc.c -index e6446a78098..b0003ab1175 100644 ---- a/bfd/reloc.c -+++ b/bfd/reloc.c -@@ -6164,6 +6164,8 @@ ENUMX - BFD_RELOC_OR1K_GOTPC_HI16 - ENUMX - BFD_RELOC_OR1K_GOTPC_LO16 -+ENUMX -+ BFD_RELOC_OR1K_GOT_AHI16 - ENUMX - BFD_RELOC_OR1K_GOT16 - ENUMX -diff --git a/cpu/or1k.opc b/cpu/or1k.opc -index 5082a30cee1..85163fc96c9 100644 ---- a/cpu/or1k.opc -+++ b/cpu/or1k.opc -@@ -173,7 +173,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = { - BFD_RELOC_OR1K_GOT_LO13, - BFD_RELOC_UNUSED, - BFD_RELOC_UNUSED, -- BFD_RELOC_UNUSED }, -+ BFD_RELOC_OR1K_GOT_AHI16 }, - { BFD_RELOC_OR1K_GOTPC_LO16, - BFD_RELOC_UNUSED, - BFD_RELOC_UNUSED, -@@ -276,6 +276,11 @@ parse_reloc (const char **strp) - str += 5; - cls = RCLASS_TPOFF; - } -+ else if (strncasecmp (str, "got", 3) == 0) -+ { -+ str += 3; -+ cls = RCLASS_GOT; -+ } - - if (strncasecmp (str, "hi(", 3) == 0) - { -diff --git a/gas/testsuite/gas/or1k/reloc-1.d b/gas/testsuite/gas/or1k/reloc-1.d -index d1bcf5608bb..3a001c4ed99 100644 ---- a/gas/testsuite/gas/or1k/reloc-1.d -+++ b/gas/testsuite/gas/or1k/reloc-1.d -@@ -68,5 +68,7 @@ OFFSET TYPE VALUE - 000000ec R_OR1K_LO13 x - 000000f0 R_OR1K_GOT_LO13 x - 000000f4 R_OR1K_SLO13 x -- -+000000f8 R_OR1K_GOT_AHI16 x -+000000fc R_OR1K_GOT_AHI16 x -+00000100 R_OR1K_GOT_AHI16 x - -diff --git a/gas/testsuite/gas/or1k/reloc-1.s b/gas/testsuite/gas/or1k/reloc-1.s -index e76abef6532..562609aa869 100644 ---- a/gas/testsuite/gas/or1k/reloc-1.s -+++ b/gas/testsuite/gas/or1k/reloc-1.s -@@ -74,3 +74,7 @@ - l.lbz r5,po(x)(r3) - l.lbz r5,gotpo(x)(r3) - l.sb po(x)(r3),r6 -+ -+ l.movhi r4,gotha(x) -+ l.ori r3,r4,gotha(x) -+ l.addi r3,r4,gotha(x) -diff --git a/include/elf/or1k.h b/include/elf/or1k.h -index 0abef046202..7db3cad18eb 100644 ---- a/include/elf/or1k.h -+++ b/include/elf/or1k.h -@@ -77,6 +77,7 @@ START_RELOC_NUMBERS (elf_or1k_reloc_type) - RELOC_NUMBER (R_OR1K_TLS_IE_LO13, 51) - RELOC_NUMBER (R_OR1K_SLO13, 52) - RELOC_NUMBER (R_OR1K_PLTA26, 53) -+ RELOC_NUMBER (R_OR1K_GOT_AHI16, 54) - END_RELOC_NUMBERS (R_OR1K_max) - - #define EF_OR1K_NODELAY (1UL << 0) -diff --git a/opcodes/or1k-asm.c b/opcodes/or1k-asm.c -index 7d058d03f5f..332f4b7a9b5 100644 ---- a/opcodes/or1k-asm.c -+++ b/opcodes/or1k-asm.c -@@ -177,7 +177,7 @@ static const bfd_reloc_code_real_type or1k_imm16_relocs[][6] = { - BFD_RELOC_OR1K_GOT_LO13, - BFD_RELOC_UNUSED, - BFD_RELOC_UNUSED, -- BFD_RELOC_UNUSED }, -+ BFD_RELOC_OR1K_GOT_AHI16 }, - { BFD_RELOC_OR1K_GOTPC_LO16, - BFD_RELOC_UNUSED, - BFD_RELOC_UNUSED, -@@ -280,6 +280,11 @@ parse_reloc (const char **strp) - str += 5; - cls = RCLASS_TPOFF; - } -+ else if (strncasecmp (str, "got", 3) == 0) -+ { -+ str += 3; -+ cls = RCLASS_GOT; -+ } - - if (strncasecmp (str, "hi(", 3) == 0) - { --- -2.25.1 - diff --git a/package/binutils/2.32/0012-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch b/package/binutils/2.32/0012-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch deleted file mode 100644 index adc6f5f8b9..0000000000 --- a/package/binutils/2.32/0012-or1k-Avoid-R_OR1K_GOT16-overflow-failures-in-presenc.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0f61f76454a9420f158f626cb09a4fbc08c3709e Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 May 2021 06:02:16 +0900 -Subject: [PATCH] or1k: Avoid R_OR1K_GOT16 overflow failures in presence - of R_OR1K_GOT_AHI16 - -Now that we support R_OR1K_GOT_AHI16 we can relax the R_OR1K_GOT16 -overflow validation check if the section has R_OR1K_GOT_AHI16. - -We cannot simple disable R_OR1K_GOT16 overflow validation as there will -still be binaries that will have only R_OR1K_GOT16. The -R_OR1K_GOT_AHI16 relocation will only be added by GCC when building with -the option -mcmodel=large. - -This assumes that R_OR1K_GOT_AHI16 will come before R_OR1K_GOT16, which -is the code pattern that will be emitted by GCC. - -bfd/ChangeLog: - - PR 21464 - * elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16 - overflow check if we have R_OR1K_GOT_AHI16 followed by - R_OR1K_GOT16. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index a4a64f73b7c..07fff3602a3 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -1248,6 +1248,7 @@ or1k_elf_relocate_section (bfd *output_bfd, - asection *sgot, *splt; - bfd_vma plt_base, got_base, got_sym_value; - bfd_boolean ret_val = TRUE; -+ bfd_boolean saw_gotha = FALSE; - - if (htab == NULL) - return FALSE; -@@ -1456,6 +1457,16 @@ or1k_elf_relocate_section (bfd *output_bfd, - || r_type == R_OR1K_GOT_AHI16) - relocation -= got_sym_value; - -+ if (r_type == R_OR1K_GOT_AHI16) -+ saw_gotha = TRUE; -+ -+ /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16 -+ relocation we assume the code is doing the right thing to avoid -+ overflows. Here we mask the lower 16-bit of the relocation to -+ avoid overflow validation failures. */ -+ if (r_type == R_OR1K_GOT16 && saw_gotha) -+ relocation &= 0xffff; -+ - /* Addend should be zero. */ - if (rel->r_addend != 0) - { --- -2.25.1 - diff --git a/package/binutils/2.32/0013-or1k-Support-large-plt_relocs-when-generating-plt-en.patch b/package/binutils/2.32/0013-or1k-Support-large-plt_relocs-when-generating-plt-en.patch deleted file mode 100644 index dc0431e0af..0000000000 --- a/package/binutils/2.32/0013-or1k-Support-large-plt_relocs-when-generating-plt-en.patch +++ /dev/null @@ -1,500 +0,0 @@ -From 36c7de7ef77ab0c30cb33e2c7ea7a6f4e3052c73 Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 May 2021 06:02:17 +0900 -Subject: [PATCH] or1k: Support large plt_relocs when generating plt - entries - -The current PLT generation code will generate invalid code when the PLT -relocation offset exceeds 64k. This fixes the issue by detecting large -plt_reloc offsets and generare code sequences to create larger plt -relocations. - -The "large" plt code needs 2 extra instructions to create 32-bit offsets. - -bfd/ChangeLog: - - PR 27746 - * elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT, - OR1K_ADD, OR1K_ORI): New macros to help with plt creation. - (elf_or1k_link_hash_table): New field plt_count. - (elf_or1k_link_hash_entry): New field plt_index. - (elf_or1k_plt_entry_size): New function. - (or1k_write_plt_entry): Update to support variable size PLTs. - (or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry - API. - (or1k_elf_finish_dynamic_symbol): Update to write large PLTs - when needed. - (allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for - PLT size. - -ld/ChangeLog: - - PR 27746 - testsuite/ld-or1k/or1k.exp (or1kplttests): Add tests for linking - along with gotha() relocations. - testsuite/ld-or1k/gotha1.dd: New file. - testsuite/ld-or1k/gotha1.s: New file. - testsuite/ld-or1k/gotha2.dd: New file. - testsuite/ld-or1k/gotha2.s: New file - testsuite/ld-or1k/pltlib.s (x): Define size to avoid link - failure. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 149 ++++++++++++++++++++++++--------- - ld/testsuite/ld-or1k/gotha1.dd | 34 ++++++++ - ld/testsuite/ld-or1k/gotha1.s | 24 ++++++ - ld/testsuite/ld-or1k/gotha2.dd | 21 +++++ - ld/testsuite/ld-or1k/gotha2.s | 22 +++++ - ld/testsuite/ld-or1k/or1k.exp | 8 ++ - ld/testsuite/ld-or1k/pltlib.s | 1 + - 7 files changed, 220 insertions(+), 39 deletions(-) - create mode 100644 ld/testsuite/ld-or1k/gotha1.dd - create mode 100644 ld/testsuite/ld-or1k/gotha1.s - create mode 100644 ld/testsuite/ld-or1k/gotha2.dd - create mode 100644 ld/testsuite/ld-or1k/gotha2.s - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 07fff3602a3..fcebbe5f23a 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -30,10 +30,14 @@ - #define N_ONES(X) (((bfd_vma)2 << (X)) - 1) - - #define PLT_ENTRY_SIZE 16 -+#define PLT_ENTRY_SIZE_LARGE (6*4) -+#define PLT_MAX_INSN_COUNT 6 - - #define OR1K_MOVHI(D) (0x18000000 | (D << 21)) - #define OR1K_ADRP(D) (0x08000000 | (D << 21)) - #define OR1K_LWZ(D,A) (0x84000000 | (D << 21) | (A << 16)) -+#define OR1K_ADD(D,A,B) (0xE0000000 | (D << 21) | (A << 16) | (B << 11)) -+#define OR1K_ORI(D,A) (0xA8000000 | (D << 21) | (A << 16)) - #define OR1K_ORI0(D) (0xA8000000 | (D << 21)) - #define OR1K_JR(B) (0x44000000 | (B << 11)) - #define OR1K_NOP 0x15000000 -@@ -903,6 +907,8 @@ struct elf_or1k_link_hash_entry - /* Track dynamic relocs copied for this symbol. */ - struct elf_dyn_relocs *dyn_relocs; - -+ /* For calculating PLT size. */ -+ bfd_vma plt_index; - /* Track type of TLS access. */ - unsigned char tls_type; - }; -@@ -930,9 +936,20 @@ struct elf_or1k_link_hash_table - /* Small local sym to section mapping cache. */ - struct sym_cache sym_sec; - -+ bfd_vma plt_count; - bfd_boolean saw_plta; - }; - -+static size_t -+elf_or1k_plt_entry_size (bfd_vma plt_index) -+{ -+ bfd_vma plt_reloc; -+ -+ plt_reloc = plt_index * sizeof (Elf32_External_Rela); -+ -+ return (plt_reloc > 0xffff) ? PLT_ENTRY_SIZE_LARGE : PLT_ENTRY_SIZE; -+} -+ - /* Get the ELF linker hash table from a link_info structure. */ - #define or1k_elf_hash_table(p) \ - (elf_hash_table_id ((struct elf_link_hash_table *) ((p)->hash)) \ -@@ -2176,33 +2193,46 @@ or1k_elf_check_relocs (bfd *abfd, - } - - static void --or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insn1, -- unsigned insn2, unsigned insn3, unsigned insnj) -+or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, -+ unsigned insns[], size_t insn_count) - { - unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY; -- unsigned insn4; -+ unsigned output_insns[PLT_MAX_INSN_COUNT]; -+ -+ /* Copy instructions into the output buffer. */ -+ for (size_t i = 0; i < insn_count; i++) -+ output_insns[i] = insns[i]; - - /* Honor the no-delay-slot setting. */ -- if (insn3 == OR1K_NOP) -+ if (insns[insn_count-1] == OR1K_NOP) - { -- insn4 = insn3; -+ unsigned slot1, slot2; -+ - if (nodelay) -- insn3 = insnj; -+ slot1 = insns[insn_count-2], slot2 = insnj; - else -- insn3 = insn2, insn2 = insnj; -+ slot1 = insnj, slot2 = insns[insn_count-2]; -+ -+ output_insns[insn_count-2] = slot1; -+ output_insns[insn_count-1] = slot2; -+ output_insns[insn_count] = OR1K_NOP; - } - else - { -+ unsigned slot1, slot2; -+ - if (nodelay) -- insn4 = insnj; -+ slot1 = insns[insn_count-1], slot2 = insnj; - else -- insn4 = insn3, insn3 = insnj; -+ slot1 = insnj, slot2 = insns[insn_count-1]; -+ -+ output_insns[insn_count-1] = slot1; -+ output_insns[insn_count] = slot2; - } - -- bfd_put_32 (output_bfd, insn1, contents); -- bfd_put_32 (output_bfd, insn2, contents + 4); -- bfd_put_32 (output_bfd, insn3, contents + 8); -- bfd_put_32 (output_bfd, insn4, contents + 12); -+ /* Write out the output buffer. */ -+ for (size_t i = 0; i < (insn_count+1); i++) -+ bfd_put_32 (output_bfd, output_insns[i], contents + (i*4)); - } - - /* Finish up the dynamic sections. */ -@@ -2269,7 +2299,8 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd, - splt = htab->root.splt; - if (splt && splt->size > 0) - { -- unsigned plt0, plt1, plt2; -+ unsigned plt[PLT_MAX_INSN_COUNT]; -+ size_t plt_insn_count = 3; - bfd_vma got_addr = sgot->output_section->vma + sgot->output_offset; - - /* Note we force 16 byte alignment on the .got, so that -@@ -2280,27 +2311,27 @@ or1k_elf_finish_dynamic_sections (bfd *output_bfd, - bfd_vma pc = splt->output_section->vma + splt->output_offset; - unsigned pa = ((got_addr >> 13) - (pc >> 13)) & 0x1fffff; - unsigned po = got_addr & 0x1fff; -- plt0 = OR1K_ADRP(12) | pa; -- plt1 = OR1K_LWZ(15,12) | (po + 8); -- plt2 = OR1K_LWZ(12,12) | (po + 4); -+ plt[0] = OR1K_ADRP(12) | pa; -+ plt[1] = OR1K_LWZ(15,12) | (po + 8); -+ plt[2] = OR1K_LWZ(12,12) | (po + 4); - } - else if (bfd_link_pic (info)) - { -- plt0 = OR1K_LWZ(15, 16) | 8; /* .got+8 */ -- plt1 = OR1K_LWZ(12, 16) | 4; /* .got+4 */ -- plt2 = OR1K_NOP; -+ plt[0] = OR1K_LWZ(15, 16) | 8; /* .got+8 */ -+ plt[1] = OR1K_LWZ(12, 16) | 4; /* .got+4 */ -+ plt[2] = OR1K_NOP; - } - else - { - unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff; - unsigned lo = got_addr & 0xffff; -- plt0 = OR1K_MOVHI(12) | ha; -- plt1 = OR1K_LWZ(15,12) | (lo + 8); -- plt2 = OR1K_LWZ(12,12) | (lo + 4); -+ plt[0] = OR1K_MOVHI(12) | ha; -+ plt[1] = OR1K_LWZ(15,12) | (lo + 8); -+ plt[2] = OR1K_LWZ(12,12) | (lo + 4); - } - -- or1k_write_plt_entry (output_bfd, splt->contents, -- plt0, plt1, plt2, OR1K_JR(15)); -+ or1k_write_plt_entry (output_bfd, splt->contents, OR1K_JR(15), -+ plt, plt_insn_count); - - elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4; - } -@@ -2343,7 +2374,8 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd, - - if (h->plt.offset != (bfd_vma) -1) - { -- unsigned int plt0, plt1, plt2; -+ unsigned int plt[PLT_MAX_INSN_COUNT]; -+ size_t plt_insn_count = 3; - asection *splt; - asection *sgot; - asection *srela; -@@ -2355,6 +2387,7 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd, - bfd_vma got_offset; - bfd_vma got_addr; - Elf_Internal_Rela rela; -+ bfd_boolean large_plt_entry; - - /* This symbol has an entry in the procedure linkage table. Set - it up. */ -@@ -2372,10 +2405,13 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd, - corresponds to this symbol. This is the index of this symbol - in all the symbols for which we are making plt entries. The - first entry in the procedure linkage table is reserved. */ -- plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1; -+ plt_index = ((struct elf_or1k_link_hash_entry *) h)->plt_index; - plt_addr = plt_base_addr + h->plt.offset; - plt_reloc = plt_index * sizeof (Elf32_External_Rela); - -+ large_plt_entry = (elf_or1k_plt_entry_size (plt_index) -+ == PLT_ENTRY_SIZE_LARGE); -+ - /* Get the offset into the .got table of the entry that - corresponds to this function. Each .got entry is 4 bytes. - The first three are reserved. */ -@@ -2387,27 +2423,57 @@ or1k_elf_finish_dynamic_symbol (bfd *output_bfd, - { - unsigned pa = ((got_addr >> 13) - (plt_addr >> 13)) & 0x1fffff; - unsigned po = (got_addr & 0x1fff); -- plt0 = OR1K_ADRP(12) | pa; -- plt1 = OR1K_LWZ(12,12) | po; -- plt2 = OR1K_ORI0(11) | plt_reloc; -+ plt[0] = OR1K_ADRP(12) | pa; -+ plt[1] = OR1K_LWZ(12,12) | po; -+ plt[2] = OR1K_ORI0(11) | plt_reloc; - } - else if (bfd_link_pic (info)) - { -- plt0 = OR1K_LWZ(12,16) | got_offset; -- plt1 = OR1K_ORI0(11) | plt_reloc; -- plt2 = OR1K_NOP; -+ if (large_plt_entry) -+ { -+ unsigned gotha = ((got_offset + 0x8000) >> 16) & 0xffff; -+ unsigned got = got_offset & 0xffff; -+ unsigned pltrelhi = (plt_reloc >> 16) & 0xffff; -+ unsigned pltrello = plt_reloc & 0xffff; -+ -+ plt[0] = OR1K_MOVHI(12) | gotha; -+ plt[1] = OR1K_ADD(12,12,16); -+ plt[2] = OR1K_LWZ(12,12) | got; -+ plt[3] = OR1K_MOVHI(11) | pltrelhi; -+ plt[4] = OR1K_ORI(11,11) | pltrello; -+ plt_insn_count = 5; -+ } -+ else -+ { -+ plt[0] = OR1K_LWZ(12,16) | got_offset; -+ plt[1] = OR1K_ORI0(11) | plt_reloc; -+ plt[2] = OR1K_NOP; -+ } - } - else - { - unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff; - unsigned lo = got_addr & 0xffff; -- plt0 = OR1K_MOVHI(12) | ha; -- plt1 = OR1K_LWZ(12,12) | lo; -- plt2 = OR1K_ORI0(11) | plt_reloc; -+ plt[0] = OR1K_MOVHI(12) | ha; -+ plt[1] = OR1K_LWZ(12,12) | lo; -+ plt[2] = OR1K_ORI0(11) | plt_reloc; -+ } -+ -+ /* For large code model we fixup the non-PIC PLT relocation instructions -+ here. */ -+ if (large_plt_entry && !bfd_link_pic (info)) -+ { -+ unsigned pltrelhi = (plt_reloc >> 16) & 0xffff; -+ unsigned pltrello = plt_reloc & 0xffff; -+ -+ plt[2] = OR1K_MOVHI(11) | pltrelhi; -+ plt[3] = OR1K_ORI(11,11) | pltrello; -+ plt[4] = OR1K_NOP; -+ plt_insn_count = 5; - } - - or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset, -- plt0, plt1, plt2, OR1K_JR(12)); -+ OR1K_JR(12), plt, plt_insn_count); - - /* Fill in the entry in the global offset table. */ - bfd_put_32 (output_bfd, plt_addr, sgot->contents + got_offset); -@@ -2699,11 +2765,16 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) - if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h)) - { - asection *s = htab->root.splt; -+ bfd_vma plt_index; -+ -+ /* Track the index of our plt entry for use in calculating size. */ -+ plt_index = htab->plt_count++; -+ ((struct elf_or1k_link_hash_entry *) h)->plt_index = plt_index; - - /* If this is the first .plt entry, make room for the special - first entry. */ - if (s->size == 0) -- s->size = PLT_ENTRY_SIZE; -+ s->size = elf_or1k_plt_entry_size (plt_index); - - h->plt.offset = s->size; - -@@ -2720,7 +2791,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf) - } - - /* Make room for this entry. */ -- s->size += PLT_ENTRY_SIZE; -+ s->size += elf_or1k_plt_entry_size (plt_index); - - /* We also need to make an entry in the .got.plt section, which - will be placed in the .got section by the linker script. */ -diff --git a/ld/testsuite/ld-or1k/gotha1.dd b/ld/testsuite/ld-or1k/gotha1.dd -new file mode 100644 -index 00000000000..0ad1f8f5399 ---- /dev/null -+++ b/ld/testsuite/ld-or1k/gotha1.dd -@@ -0,0 +1,34 @@ -+ -+.*\.x: file format elf32-or1k -+ -+ -+Disassembly of section \.plt: -+ -+[0-9a-f]+ <\.plt>: -+ +[0-9a-f]+: 19 80 00 00 l\.movhi r12,0x0 -+ +[0-9a-f]+: 85 ec [0-9a-f]+ [0-9a-f]+ l\.lwz r15,[0-9]+\(r12\) -+ +[0-9a-f]+: 44 00 78 00 l\.jr r15 -+ +[0-9a-f]+: 85 8c [0-9a-f]+ [0-9a-f]+ l\.lwz r12,[0-9]+\(r12\) -+ +[0-9a-f]+: 19 80 00 00 l\.movhi r12,0x0 -+ +[0-9a-f]+: 85 8c [0-9a-f]+ [0-9a-f]+ l\.lwz r12,[0-9]+\(r12\) -+ +[0-9a-f]+: 44 00 60 00 l\.jr r12 -+ +[0-9a-f]+: a9 60 00 00 l\.ori r11,r0,0x0 -+ -+Disassembly of section \.text: -+ -+[0-9a-f]+ <_start>: -+ +[0-9a-f]+: 9c 21 ff fc l\.addi r1,r1,-4 -+ +[0-9a-f]+: d4 01 48 00 l\.sw 0\(r1\),r9 -+ +[0-9a-f]+: 04 00 00 02 l\.jal [0-9a-f]+ <_start\+0x10> -+ +[0-9a-f]+: 1a 60 00 00 l\.movhi r19,0x0 -+ +[0-9a-f]+: aa 73 [0-9a-f]+ [0-9a-f]+ l\.ori r19,r19,0x[0-9a-f]+ -+ +[0-9a-f]+: e2 73 48 00 l\.add r19,r19,r9 -+ +[0-9a-f]+: 1a 20 00 00 l\.movhi r17,0x0 -+ +[0-9a-f]+: e2 31 98 00 l\.add r17,r17,r19 -+ +[0-9a-f]+: 86 31 00 10 l\.lwz r17,16\(r17\) -+ +[0-9a-f]+: 84 71 00 00 l\.lwz r3,0\(r17\) -+ +[0-9a-f]+: 07 ff ff f2 l\.jal [0-9a-f]+ <\.plt\+0x10> -+ +[0-9a-f]+: 15 00 00 00 l\.nop 0x0 -+ +[0-9a-f]+: 85 21 00 00 l\.lwz r9,0\(r1\) -+ +[0-9a-f]+: 44 00 48 00 l\.jr r9 -+ +[0-9a-f]+: 9c 21 00 04 l\.addi r1,r1,4 -diff --git a/ld/testsuite/ld-or1k/gotha1.s b/ld/testsuite/ld-or1k/gotha1.s -new file mode 100644 -index 00000000000..42b16db425c ---- /dev/null -+++ b/ld/testsuite/ld-or1k/gotha1.s -@@ -0,0 +1,24 @@ -+ .data -+ .p2align 16 -+ -+ .text -+ .globl _start -+_start: -+ l.addi r1, r1, -4 -+ l.sw 0(r1), r9 -+ -+ l.jal 8 -+ l.movhi r19, gotpchi(_GLOBAL_OFFSET_TABLE_-4) -+ l.ori r19, r19, gotpclo(_GLOBAL_OFFSET_TABLE_+0) -+ l.add r19, r19, r9 -+ -+ l.movhi r17, gotha(x) -+ l.add r17, r17, r19 -+ l.lwz r17, got(x)(r17) -+ l.lwz r3, 0(r17) -+ -+ l.jal plt(func) -+ l.nop -+ l.lwz r9, 0(r1) -+ l.jr r9 -+ l.addi r1, r1, 4 -diff --git a/ld/testsuite/ld-or1k/gotha2.dd b/ld/testsuite/ld-or1k/gotha2.dd -new file mode 100644 -index 00000000000..fe09da5466b ---- /dev/null -+++ b/ld/testsuite/ld-or1k/gotha2.dd -@@ -0,0 +1,21 @@ -+ -+.*\.x: file format elf32-or1k -+ -+ -+Disassembly of section \.text: -+ -+[0-9a-f]+ : -+ +[0-9a-f]+: 9c 21 ff f8 l\.addi r1,r1,-8 -+ +[0-9a-f]+: d4 01 80 00 l\.sw 0\(r1\),r16 -+ +[0-9a-f]+: d4 01 48 04 l\.sw 4\(r1\),r9 -+ +[0-9a-f]+: 04 00 [0-9a-f]+ [0-9a-f]+ l\.jal [0-9a-f]+ -+ +[0-9a-f]+: 1a 00 00 00 l\.movhi r16,0x0 -+ +[0-9a-f]+: aa 10 [0-9a-f]+ [0-9a-f]+ l\.ori r16,r16,0x[0-9a-f]+ -+ +[0-9a-f]+: e2 10 48 00 l\.add r16,r16,r9 -+ +[0-9a-f]+: 1a 20 00 00 l\.movhi r17,0x0 -+ +[0-9a-f]+: e2 31 80 00 l\.add r17,r17,r16 -+ +[0-9a-f]+: 86 31 00 0c l\.lwz r17,12\(r17\) -+ +[0-9a-f]+: 85 21 00 04 l\.lwz r9,4\(r1\) -+ +[0-9a-f]+: 86 01 00 00 l\.lwz r16,0\(r1\) -+ +[0-9a-f]+: 44 00 48 00 l\.jr r9 -+ +[0-9a-f]+: 9c 21 00 08 l\.addi r1,r1,8 -diff --git a/ld/testsuite/ld-or1k/gotha2.s b/ld/testsuite/ld-or1k/gotha2.s -new file mode 100644 -index 00000000000..164b282f2dd ---- /dev/null -+++ b/ld/testsuite/ld-or1k/gotha2.s -@@ -0,0 +1,22 @@ -+ .section .text -+ .align 4 -+ .global test -+ .type test, @function -+test: -+ l.addi r1, r1, -8 -+ l.sw 0(r1), r16 -+ l.sw 4(r1), r9 -+ -+ l.jal 8 -+ l.movhi r16, gotpchi(_GLOBAL_OFFSET_TABLE_-4) -+ l.ori r16, r16, gotpclo(_GLOBAL_OFFSET_TABLE_+0) -+ l.add r16, r16, r9 -+ -+ l.movhi r17, gotha(i) -+ l.add r17, r17, r16 -+ l.lwz r17, got(i)(r17) -+ -+ l.lwz r9, 4(r1) -+ l.lwz r16, 0(r1) -+ l.jr r9 -+ l.addi r1, r1, 8 -diff --git a/ld/testsuite/ld-or1k/or1k.exp b/ld/testsuite/ld-or1k/or1k.exp -index 24cdbe5fbf3..9cebc49b946 100644 ---- a/ld/testsuite/ld-or1k/or1k.exp -+++ b/ld/testsuite/ld-or1k/or1k.exp -@@ -53,6 +53,14 @@ set or1kplttests { - "" {plt1.s} - {{objdump -dr plt1.x.dd}} - "plt1.x"} -+ {"gotha exec plt" "tmpdir/libpltlib.so" "" -+ "" {gotha1.s} -+ {{objdump -dr gotha1.dd}} -+ "gotha1.x"} -+ {"gotha -fpic -shared" "-fpic -shared" "" -+ "" {gotha2.s} -+ {{objdump -dr gotha2.dd}} -+ "gotha2.x"} - } - - # Not implemented yet -diff --git a/ld/testsuite/ld-or1k/pltlib.s b/ld/testsuite/ld-or1k/pltlib.s -index baf76ca1af7..8b4d7ba48fd 100644 ---- a/ld/testsuite/ld-or1k/pltlib.s -+++ b/ld/testsuite/ld-or1k/pltlib.s -@@ -1,5 +1,6 @@ - .section .data - .globl x, y -+ .size x, 4 - x: .long 33 - y: .long 44 - --- -2.25.1 - diff --git a/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch b/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch deleted file mode 100644 index c3978e22fa..0000000000 --- a/package/binutils/2.32/0014-bfd-elf32-or1k-fix-building-with-gcc-version-5.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c3003947e4bad18faea4337fd2073feeb30ee078 Mon Sep 17 00:00:00 2001 -From: Giulio Benetti -Date: Wed, 9 Jun 2021 17:28:27 +0200 -Subject: [PATCH] bfd/elf32-or1k: fix building with gcc version < 5 - -Gcc version >= 5 has standard C mode not set to -std=gnu11, so if we use -an old compiler(i.e. gcc 4.9) build fails on: -``` -elf32-or1k.c:2251:3: error: 'for' loop initial declarations are only allowed in -C99 or C11 mode - for (size_t i = 0; i < insn_count; i++) - ^ -``` - -So let's declare `size_t i` at the top of the function instead of inside -for loop. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..32063ab0289 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -2244,9 +2244,10 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - { - unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY; - unsigned output_insns[PLT_MAX_INSN_COUNT]; -+ size_t i; - - /* Copy instructions into the output buffer. */ -- for (size_t i = 0; i < insn_count; i++) -+ for (i = 0; i < insn_count; i++) - output_insns[i] = insns[i]; - - /* Honor the no-delay-slot setting. */ -@@ -2277,7 +2278,7 @@ or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj, - } - - /* Write out the output buffer. */ -- for (size_t i = 0; i < (insn_count+1); i++) -+ for (i = 0; i < (insn_count+1); i++) - bfd_put_32 (output_bfd, output_insns[i], contents + (i*4)); - } - --- -2.25.1 - diff --git a/package/binutils/2.32/0015-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch b/package/binutils/2.32/0015-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch deleted file mode 100644 index 585b97b2af..0000000000 --- a/package/binutils/2.32/0015-or1k-fix-pc-relative-relocation-against-dynamic-on-P.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 9af93e143a7fbdb75aa1ed37277f9250eb111628 Mon Sep 17 00:00:00 2001 -From: Giulio Benetti -Date: Sat, 10 Jul 2021 17:57:34 +0200 -Subject: [PATCH] or1k: fix pc-relative relocation against dynamic on PC - relative 26 bit relocation - -When building openal we were seeing the assert failure: - -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourcePausev -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourceStopv -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourceRewindv -/home/buildroot/autobuild/run/instance-0/output-1/host/opt/ext-toolchain/bin/../lib/gcc/or1k-buildroot-linux-uclibc/9.3.0/../../../../or1k-buildroot-linux-uclibc/bin/ld: CMakeFiles/OpenAL.dir/al/source.cpp.o: -pc-relative relocation against dynamic symbol alSourcePlayv -collect2: error: ld returned 1 exit status - -This happens because in R_OR1K_INSN_REL_26 case we can't reference local -symbol as previously done but we need to make sure that calls to actual -symbol always call the version of current object. - -bfd/Changelog: - - * elf32-or1k.c (or1k_elf_relocate_section): use a separate entry - in switch case R_OR1K_INSN_REL_26 where we need to check for - !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL(). - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index 4ae7f324d33..4f9092539f5 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -1543,6 +1543,18 @@ or1k_elf_relocate_section (bfd *output_bfd, - break; - - case R_OR1K_INSN_REL_26: -+ /* For a non-shared link, these will reference plt or call the -+ version of actual object. */ -+ if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h)) -+ { -+ _bfd_error_handler -+ (_("%pB: pc-relative relocation against dynamic symbol %s"), -+ input_bfd, name); -+ ret_val = FALSE; -+ bfd_set_error (bfd_error_bad_value); -+ } -+ break; -+ - case R_OR1K_PCREL_PG21: - case R_OR1K_LO13: - case R_OR1K_SLO13: --- -2.25.1 - diff --git a/package/binutils/2.32/0016-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch b/package/binutils/2.32/0016-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch deleted file mode 100644 index 7e92e2bfd8..0000000000 --- a/package/binutils/2.32/0016-or1k-Avoid-R_OR1K_GOT16-signed-overflow-by-using-spe.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 51def3dc6a168d03d28e0d4e2935d9ddb2929192 Mon Sep 17 00:00:00 2001 -From: Stafford Horne -Date: Sun, 2 Jan 2022 09:03:28 +0900 -Subject: [PATCH] or1k: Avoid R_OR1K_GOT16 signed overflow by using special - howto - -Previously when fixing PR 21464 we masked out upper bits of the -relocation value in order to avoid overflow complaints when acceptable. -It turns out this does not work when the relocation value ends up being -signed. - -To fix this this patch introduces a special howto with -complain_on_overflow set to complain_overflow_dont. This is used in -place of the normal R_OR1K_GOT16 howto when we detect R_OR1K_GOT_AHI16 -relocations. - -bfd/ChangeLog: - - PR 28735 - * elf32-or1k.c (or1k_elf_got16_no_overflow_howto): Define. - (or1k_elf_relocate_section): Use new howto instead of trying to - mask out relocation bits. - -Signed-off-by: Giulio Benetti ---- - bfd/elf32-or1k.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -diff --git a/bfd/elf32-or1k.c b/bfd/elf32-or1k.c -index cfa292f0032..ecb70753b6a 100644 ---- a/bfd/elf32-or1k.c -+++ b/bfd/elf32-or1k.c -@@ -828,6 +828,23 @@ static reloc_howto_type or1k_elf_howto_table[] = - FALSE), /* pcrel_offset */ - }; - -+/* A copy of the R_OR1K_GOT16 used in the presense of R_OR1K_GOT_AHI16 -+ relocations when we know we can ignore overflows. */ -+static reloc_howto_type or1k_elf_got16_no_overflow_howto = -+ HOWTO (R_OR1K_GOT16, /* type */ -+ 0, /* rightshift */ -+ 2, /* size (0 = byte, 1 = short, 2 = long) */ -+ 16, /* bitsize */ -+ FALSE, /* pc_relative */ -+ 0, /* bitpos */ -+ complain_overflow_dont, /* complain_on_overflow */ -+ bfd_elf_generic_reloc, /* special_function */ -+ "R_OR1K_GOT16", /* name */ -+ FALSE, /* partial_inplace */ -+ 0, /* src_mask */ -+ 0xffff, /* dst_mask */ -+ FALSE); /* pcrel_offset */ -+ - /* Map BFD reloc types to Or1k ELF reloc types. */ - - struct or1k_reloc_map -@@ -1477,12 +1494,11 @@ or1k_elf_relocate_section (bfd *output_bfd, - if (r_type == R_OR1K_GOT_AHI16) - saw_gotha = TRUE; - -- /* If we have a R_OR1K_GOT16 followed by a R_OR1K_GOT_AHI16 -+ /* If we have a R_OR1K_GOT16 following a R_OR1K_GOT_AHI16 - relocation we assume the code is doing the right thing to avoid -- overflows. Here we mask the lower 16-bit of the relocation to -- avoid overflow validation failures. */ -+ overflows. */ - if (r_type == R_OR1K_GOT16 && saw_gotha) -- relocation &= 0xffff; -+ howto = &or1k_elf_got16_no_overflow_howto; - - /* Addend should be zero. */ - if (rel->r_addend != 0) --- -2.25.1 - diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host index 4382b32237..ef1b2a94db 100644 --- a/package/binutils/Config.in.host +++ b/package/binutils/Config.in.host @@ -12,10 +12,6 @@ choice help Select the version of binutils you wish to use. -config BR2_BINUTILS_VERSION_2_32_X - bool "binutils 2.32" - depends on !BR2_csky - config BR2_BINUTILS_VERSION_2_36_X bool "binutils 2.36.1" depends on !BR2_csky @@ -35,7 +31,6 @@ endchoice config BR2_BINUTILS_VERSION string default "arc-2020.09-release" if BR2_BINUTILS_VERSION_ARC - default "2.32" if BR2_BINUTILS_VERSION_2_32_X default "2.36.1" if BR2_BINUTILS_VERSION_2_36_X default "2.37" if BR2_BINUTILS_VERSION_2_37_X default "2.38" if BR2_BINUTILS_VERSION_2_38_X diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash index 4141e0c5f2..e98cb85275 100644 --- a/package/binutils/binutils.hash +++ b/package/binutils/binutils.hash @@ -1,5 +1,4 @@ # From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum -sha512 d326408f12a03d9a61a9de56584c2af12f81c2e50d2d7e835d51565df8314df01575724afa1e43bd0db45cfc9916b41519b67dfce03232aa4978704492a6994a binutils-2.32.tar.xz sha512 cc24590bcead10b90763386b6f96bb027d7594c659c2d95174a6352e8b98465a50ec3e4088d0da038428abe059bbc4ae5f37b269f31a40fc048072c8a234f4e9 binutils-2.36.1.tar.xz sha512 5c11aeef6935860a6819ed3a3c93371f052e52b4bdc5033da36037c1544d013b7f12cb8d561ec954fe7469a68f1b66f1a3cd53d5a3af7293635a90d69edd15e7 binutils-2.37.tar.xz sha512 8bf0b0d193c9c010e0518ee2b2e5a830898af206510992483b427477ed178396cd210235e85fd7bd99a96fc6d5eedbeccbd48317a10f752b7336ada8b2bb826d binutils-2.38.tar.xz