[arch-commits] Commit in binutils/trunk (binutils-2.19-as-needed.patch)
Allan McRae
allan at archlinux.org
Sat Apr 25 05:10:51 UTC 2009
Date: Saturday, April 25, 2009 @ 01:10:51
Author: allan
Revision: 36587
add missing patch
Added:
binutils/trunk/binutils-2.19-as-needed.patch
-------------------------------+
binutils-2.19-as-needed.patch | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
Added: binutils-2.19-as-needed.patch
===================================================================
--- binutils-2.19-as-needed.patch (rev 0)
+++ binutils-2.19-as-needed.patch 2009-04-25 05:10:51 UTC (rev 36587)
@@ -0,0 +1,38 @@
+===================================================================
+RCS file: /cvs/src/src/bfd/elflink.c,v
+retrieving revision 1.328
+retrieving revision 1.329
+diff -u -r1.328 -r1.329
+--- src/bfd/elflink.c 2009/01/29 16:35:03 1.328
++++ src/bfd/elflink.c 2009/01/31 11:44:37 1.329
+@@ -3199,6 +3199,16 @@
+ return 0;
+ }
+
++static bfd_boolean
++on_needed_list (const char *soname, struct bfd_link_needed_list *needed)
++{
++ for (; needed != NULL; needed = needed->next)
++ if (strcmp (soname, needed->name) == 0)
++ return TRUE;
++
++ return FALSE;
++}
++
+ /* Sort symbol by value and section. */
+ static int
+ elf_sort_symbol (const void *arg1, const void *arg2)
+@@ -4434,8 +4444,11 @@
+
+ if (!add_needed
+ && definition
+- && dynsym
+- && h->ref_regular)
++ && ((dynsym
++ && h->ref_regular)
++ || (h->ref_dynamic
++ && (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0
++ && !on_needed_list (elf_dt_name (abfd), htab->needed))))
+ {
+ int ret;
+ const char *soname = elf_dt_name (abfd);
More information about the arch-commits
mailing list