diff options
Diffstat (limited to 'meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch')
-rw-r--r-- | meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch b/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch new file mode 100644 index 0000000000..01e42c03bb --- /dev/null +++ b/meta/recipes-devtools/binutils/binutils/0020-Make-sure-global-symbol-is-not-an-indirect-or-warnin.patch @@ -0,0 +1,46 @@ +From 9d09ce14b4eef2b56f24660fd69a44acd45128b2 Mon Sep 17 00:00:00 2001 +From: Cupertino Miranda <cmiranda@synopsys.com> +Date: Fri, 2 Mar 2018 17:38:14 +0100 +Subject: [PATCH] Make sure global symbol is not an indirect or warning. + +Problem identified in the context of glibc with latest upstream binutils. +Dynamic symbol space was being reserved but, no actual information for the +symbol was being set. Data for the symbol was kept initialized with -1. +No easy test case was possible to be created. + +bfd/ +2018-03-01 Cupertino Miranda <cmiranda@synopsys.com> + + * elf32-arc.c (elf_arc_check_relocs): Changed. + +Signed-off-by: Cupertino Miranda <cmiranda@synopsys.com> +Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> +[Romain: rebase on top of 2.31] +Signed-off-by: Romain Naour <romain.naour@gmail.com> + +Upstream-Status: Pending +--- + bfd/elf32-arc.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c +index 33fc72cff6e..9b72c5b4f4f 100644 +--- a/bfd/elf32-arc.c ++++ b/bfd/elf32-arc.c +@@ -1960,7 +1960,12 @@ elf_arc_check_relocs (bfd * abfd, + if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */ + h = NULL; + else /* Global one. */ +- h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ { ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info]; ++ while (h->root.type == bfd_link_hash_indirect ++ || h->root.type == bfd_link_hash_warning) ++ h = (struct elf_link_hash_entry *) h->root.u.i.link; ++ } + + + switch (r_type) +-- +2.14.4 + |