From: Alan Modra Date: Mon, 11 Apr 2005 14:26:46 +0000 (+0000) Subject: * emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Ignore X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7cedef86d88a60cd2064f30beb6d46d3efcb661a;p=binutils-gdb.git * emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Ignore as_needed libs that were not needed. (gld${EMULATION_NAME}_check_needed): Likewise. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index 61afd9a6e23..c4d13d8a728 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2005-04-11 Alan Modra + + * emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Ignore + as_needed libs that were not needed. + (gld${EMULATION_NAME}_check_needed): Likewise. + 2005-04-07 Nick Clifton * emultempl/m68kcoff.em: Include ldexp.h and ldlang.h so that diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index 16464b54af0..87edf6f0a45 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -230,6 +230,9 @@ gld${EMULATION_NAME}_stat_needed (lang_input_statement_type *s) return; if (s->the_bfd == NULL) return; + if (s->as_needed + && (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0) + return; if (bfd_stat (s->the_bfd, &st) != 0) { @@ -737,6 +740,13 @@ gld${EMULATION_NAME}_check_needed (lang_input_statement_type *s) if (global_found) return; + /* If this input file was an as-needed entry, and wasn't found to be + needed at the stage it was linked, then don't say we have loaded it. */ + if (s->as_needed + && (s->the_bfd == NULL + || (bfd_elf_get_dyn_lib_class (s->the_bfd) & DYN_AS_NEEDED) != 0)) + return; + if (s->filename != NULL) { const char *f;