[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