mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-15 03:48:11 +08:00
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:
@ -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>
|
2009-01-30 Julian Brown <julian@codesourcery.com>
|
||||||
|
|
||||||
* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with
|
* elf32-arm.c (bfd_elf32_arm_vfp11_erratum_scan): Skip BFDs with
|
||||||
|
@ -3199,6 +3199,16 @@ elf_add_dt_needed_tag (bfd *abfd,
|
|||||||
return 0;
|
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. */
|
/* Sort symbol by value and section. */
|
||||||
static int
|
static int
|
||||||
elf_sort_symbol (const void *arg1, const void *arg2)
|
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
|
if (!add_needed
|
||||||
&& definition
|
&& definition
|
||||||
&& dynsym
|
&& ((dynsym
|
||||||
&& h->ref_regular)
|
&& 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;
|
int ret;
|
||||||
const char *soname = elf_dt_name (abfd);
|
const char *soname = elf_dt_name (abfd);
|
||||||
|
@ -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>
|
2009-01-29 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
PR 9798
|
PR 9798
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
-*- text -*-
|
-*- 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-
|
* Add new option --use-nul-prefixed-import-tables to dlltool to allow fall-
|
||||||
back to old import table generation with null element prefix.
|
back to old import table generation with null element prefix.
|
||||||
|
|
||||||
|
@ -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>
|
2009-01-29 Andrew Jenner <andrew@codesourcery.com>
|
||||||
|
|
||||||
* emultempl/armelf.em: Correct formatting of help text for
|
* emultempl/armelf.em: Correct formatting of help text for
|
||||||
|
@ -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,
|
on the command line after the @option{--as-needed} option. Normally,
|
||||||
the linker will add a DT_NEEDED tag for each dynamic library mentioned
|
the linker will add a DT_NEEDED tag for each dynamic library mentioned
|
||||||
on the command line, regardless of whether the library is actually
|
on the command line, regardless of whether the library is actually
|
||||||
needed. @option{--as-needed} causes DT_NEEDED tags to only be emitted
|
needed. @option{--as-needed} causes a DT_NEEDED tag to only be emitted
|
||||||
for libraries that satisfy some symbol reference from regular objects
|
for a library that satisfies a symbol reference from regular objects
|
||||||
which is undefined at the point that the library was linked.
|
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.
|
@option{--no-as-needed} restores the default behaviour.
|
||||||
|
|
||||||
@kindex --add-needed
|
@kindex --add-needed
|
||||||
|
Reference in New Issue
Block a user