diff options
Diffstat (limited to 'toolchain-layer/recipes-devtools/binutils/binutils-2.20.1/202_elflink_noaddneeded_vs_weak.patch')
-rw-r--r-- | toolchain-layer/recipes-devtools/binutils/binutils-2.20.1/202_elflink_noaddneeded_vs_weak.patch | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/toolchain-layer/recipes-devtools/binutils/binutils-2.20.1/202_elflink_noaddneeded_vs_weak.patch b/toolchain-layer/recipes-devtools/binutils/binutils-2.20.1/202_elflink_noaddneeded_vs_weak.patch deleted file mode 100644 index a7dbc7ad82..0000000000 --- a/toolchain-layer/recipes-devtools/binutils/binutils-2.20.1/202_elflink_noaddneeded_vs_weak.patch +++ /dev/null @@ -1,87 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## 202_elflink_noaddneeded_vs_weak.dpatch by <kirr@landau.phys.spbu.ru> -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Fixes '-no-add-needed breaks linking with weak symbols' -## DP: Upstream status: submitted upstream for binutils-2_20-branch - - -2010-08-07 Kirill Smelkov <kirr@landau.phys.spbu.ru> - - Backport from mainline: - 2010-01-21 Nick Clifton <nickc@redhat.com> - - * elflink.c (elf_link_add_object_symbols): Look up name of - undefined symbol both before and after versioning has been - applied. Do not bother with symbols that are weakly undefined. - - -@DPATCH@ -diff --git a/bfd/elflink.c b/bfd/elflink.c -index 10eee8c..e058064 100644 ---- a/bfd/elflink.c -+++ b/bfd/elflink.c -@@ -3991,6 +3991,20 @@ error_free_dyn: - unsigned int vernum = 0; - bfd_boolean skip; - -+ /* If this is a definition of a symbol which was previously -+ referenced in a non-weak manner then make a note of the bfd -+ that contained the reference. This is used if we need to -+ refer to the source of the reference later on. */ -+ if (! bfd_is_und_section (sec)) -+ { -+ h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); -+ -+ if (h != NULL -+ && h->root.type == bfd_link_hash_undefined -+ && h->root.u.undef.abfd) -+ undef_bfd = h->root.u.undef.abfd; -+ } -+ - if (ever == NULL) - { - if (info->default_imported_symver) -@@ -4098,16 +4112,15 @@ error_free_dyn: - name = newname; - } - -- /* If this is a definition of a previously undefined symbol -- make a note of the bfd that contained the reference in -- case we need to refer to it later on in error messages. */ -- if (! bfd_is_und_section (sec)) -+ /* If necessary, make a second attempt to locate the bfd -+ containing an unresolved, non-weak reference to the -+ current symbol. */ -+ if (! bfd_is_und_section (sec) && undef_bfd == NULL) - { - h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE); - - if (h != NULL -- && (h->root.type == bfd_link_hash_undefined -- || h->root.type == bfd_link_hash_undefweak) -+ && h->root.type == bfd_link_hash_undefined - && h->root.u.undef.abfd) - undef_bfd = h->root.u.undef.abfd; - } -@@ -4448,12 +4461,14 @@ error_free_dyn: - /* A symbol from a library loaded via DT_NEEDED of some - other library is referenced by a regular object. - Add a DT_NEEDED entry for it. Issue an error if -- --no-add-needed is used. */ -- if ((elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) -+ --no-add-needed is used and the reference was not -+ a weak one. */ -+ if (undef_bfd != NULL -+ && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0) - { - (*_bfd_error_handler) - (_("%B: undefined reference to symbol '%s'"), -- undef_bfd == NULL ? info->output_bfd : undef_bfd, name); -+ undef_bfd, name); - (*_bfd_error_handler) - (_("note: '%s' is defined in DSO %B so try adding it to the linker command line"), - abfd, name); --- -1.7.2.1.44.g721e7 - |