binutils/

* NEWS: Mention --as-needed change.
ld/
	* ld.texinfo (--as-needed): Update.
bfd/
	* elflink.c (on_needed_list): New function.
	(elf_link_add_object_symbols): Link in --as-needed libs if they
	satisfy undefined symbols in other libs.
This commit is contained in:
Alan Modra 2009-01-31 11:44:38 +00:00
parent 5d27446dac
commit 010e5ae26e
6 changed files with 39 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2009-01-31 Alan Modra <amodra@bigpond.net.au>
* elflink.c (on_needed_list): New function.
(elf_link_add_object_symbols): Link in --as-needed libs if they
satisfy undefined symbols in other libs.
2009-01-30 Julian Brown <julian@codesourcery.com>
* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with

View File

@ -3199,6 +3199,16 @@ elf_add_dt_needed_tag (bfd *abfd,
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 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
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);

View File

@ -1,3 +1,7 @@
2009-01-31 Alan Modra <amodra@bigpond.net.au>
* NEWS: Mention --as-needed change.
2009-01-29 Alan Modra <amodra@bigpond.net.au>
PR 9798

View File

@ -1,5 +1,10 @@
-*- text -*-
* --as-needed now links in a dynamic library if it satisfies undefined
symbols in regular objects, or in other dynamic libraries. In the
latter case the library is not linked if it is found in a DT_NEEDED
entry of one of the libraries already linked.
* Add new option --use-nul-prefixed-import-tables to dlltool to allow fall-
back to old import table generation with null element prefix.

View File

@ -1,3 +1,7 @@
2009-01-31 Alan Modra <amodra@bigpond.net.au>
* ld.texinfo (--as-needed): Update.
2009-01-29 Andrew Jenner <andrew@codesourcery.com>
* emultempl/armelf.em: Correct formatting of help text for

View File

@ -1093,9 +1093,11 @@ This option affects ELF DT_NEEDED tags for dynamic libraries mentioned
on the command line after the @option{--as-needed} option. Normally,
the linker will add a DT_NEEDED tag for each dynamic library mentioned
on the command line, regardless of whether the library is actually
needed. @option{--as-needed} causes DT_NEEDED tags to only be emitted
for libraries that satisfy some symbol reference from regular objects
which is undefined at the point that the library was linked.
needed. @option{--as-needed} causes a DT_NEEDED tag to only be emitted
for a library that satisfies a symbol reference from regular objects
which is undefined at the point that the library was linked, or, if
the library is not found in the DT_NEEDED lists of other libraries
linked up to that point, a reference from another dynamic library.
@option{--no-as-needed} restores the default behaviour.
@kindex --add-needed