mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
38 lines
1 KiB
Diff
38 lines
1 KiB
Diff
===================================================================
|
|
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);
|