From 0658f1d7b43ad10e19fa6d7920708f9ba811624c Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Aug 26 2014 10:47:06 +0000 Subject: Import patch from mainline to fix indirect symbol resolution. Resolves: BZ #1123714 --- diff --git a/binutils-2.24-indirect-chain.patch b/binutils-2.24-indirect-chain.patch new file mode 100644 index 0000000..b255424 --- /dev/null +++ b/binutils-2.24-indirect-chain.patch @@ -0,0 +1,28 @@ +*** ../binutils-2.24.orig/bfd/elflink.c 2014-08-21 09:17:27.753408085 +0100 +--- bfd/elflink.c 2014-08-21 10:04:52.174935912 +0100 +*************** _bfd_elf_add_default_symbol (bfd *abfd, +*** 1705,1710 **** +--- 1705,1716 ---- + ht = (struct elf_link_hash_entry *) hi->root.u.i.link; + (*bed->elf_backend_copy_indirect_symbol) (info, ht, hi); + ++ /* A reference to the SHORTNAME symbol from a dynamic library ++ will be satisfied by the versioned symbol at runtime. In ++ effect, we have a reference to the versioned symbol. */ ++ ht->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak; ++ hi->dynamic_def |= ht->dynamic_def; ++ + /* See if the new flags lead us to realize that the symbol must + be dynamic. */ + if (! *dynsym) +*************** nondefault: +*** 1774,1779 **** +--- 1780,1787 ---- + if (hi->root.type == bfd_link_hash_indirect) + { + (*bed->elf_backend_copy_indirect_symbol) (info, h, hi); ++ h->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak; ++ hi->dynamic_def |= h->dynamic_def; + + /* See if the new flags lead us to realize that the symbol + must be dynamic. */ diff --git a/binutils.spec b/binutils.spec index b348707..4d58e4a 100644 --- a/binutils.spec +++ b/binutils.spec @@ -17,7 +17,7 @@ Summary: A GNU collection of binary utilities Name: %{?cross}binutils%{?_with_debug:-debug} Version: 2.24 -Release: 19%{?dist} +Release: 20%{?dist} License: GPLv3+ Group: Development/Tools URL: http://sources.redhat.com/binutils @@ -64,6 +64,7 @@ Patch21: binutils-2.24-fat-lto-objects.patch Patch22: binutils-2.24-symbol-warning.patch Patch23: binutils-2.24-aarch64-ld-shared-non-PIC-xfail.patch Patch24: binutils-2.24-weak-sym-merge.patch +Patch25: binutils-2.24-indirect-chain.patch Patch26: binutils-2.24-aarch64-fix-final_link_relocate.patch Provides: bundled(libiberty) @@ -193,6 +194,7 @@ using libelf instead of BFD. %patch22 -p1 -b .symwarn~ %patch23 -p1 -b .ld-aarch64-xfails~ %patch24 -p0 -b .weak-sym-merge~ +%patch25 -p0 -b .indirect-chain~ %patch26 -p1 -b .aa64-final-link~ # We cannot run autotools as there is an exact requirement of autoconf-2.59. @@ -504,6 +506,10 @@ exit 0 %endif # %{isnative} %changelog +* Tue Aug 26 2014 Nick Clifton - 2.24-20 +- Import patch from mainline to fix indirect symbol resolution. + Resolves: BZ #1123714 + * Thu Aug 21 2014 Kyle McMartin - 2.24-19 - bfd/elfnn-aarch64.c: use correct offsets in final_link_relocate Resolves: BZ #1126199