From e56f61be758d90c463cc220c50ad7f30b955c2af Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 19 Jul 2004 16:40:52 +0000 Subject: bfd/ 2004-07-19 H.J. Lu * bfd-in.h (dynamic_lib_link_class): Add DYN_NO_ADD_NEEDED and DYN_NO_NEEDED. (bfd_elf_get_dyn_lib_class): New prototype. * elf.c (bfd_elf_get_dyn_lib_class): New function. * elflink.c (elf_link_add_object_symbols): Check DYN_AS_NEEDED, DYN_DT_NEEDED and DYN_NO_NEEDED bits to see if a DT_NEEDED entry is needed. Issue an error if a DT_NEEDED entry is needed for a file marked DYN_NO_NEEDED. (elf_link_check_versioned_symbol): Check the DYN_DT_NEEDED bit for DT_NEEDED tags. * bfd-in2.h: Regenerated. ld/ 2004-07-19 H.J. Lu * emultempl/elf32.em (gld${EMULATION_NAME}_load_symbols): Also check the add_needed field. (dt_needed): New struct. (gld${EMULATION_NAME}_try_needed): Change the first argument to a pointer to struct dt_needed. Check the DYN_NO_ADD_NEEDED bit in the file where the DT_NEEDED entry comes from. (gld${EMULATION_NAME}_search_needed): Change the second argument to a pointer to struct dt_needed. (gld${EMULATION_NAME}_check_ld_so_conf): Updated. (gld${EMULATION_NAME}_after_open): Likewise. * ld.texinfo: Add --add-needed document. * ldlang.c (new_afile): Set p->add_needed. * ldlang.h (lang_input_statement_type): Add add_needed field. * ldmain.h (add_needed): Declare. * ldmain.c (add_needed): New global var. * lexsup.c (option_values): Add OPTION_ADD_NEEDED and OPTION_NO_ADD_NEEDED. (ld_options): Likewise. (parse_args): Handle them. --- ld/ld.texinfo | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ld/ld.texinfo') diff --git a/ld/ld.texinfo b/ld/ld.texinfo index 2b77260..8af0223 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -984,6 +984,18 @@ needed. @option{--as-needed} causes DT_NEEDED tags to only be emitted for libraries that satisfy some reference from regular objects. @option{--no-as-needed} restores the default behaviour. +@kindex --add-needed +@kindex --no-add-needed +@item --add-needed +@itemx --no-add-needed +This option affects the treatment of dynamic libraries from ELF +DT_NEEDED tags in dynamic libraries mentioned on the command line after +the @option{--no-add-needed} option. Normally, the linker will add +a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. +@option{--no-add-needed} causes DT_NEEDED tags will never be emitted +for those libraries from DT_NEEDED tags. @option{--add-needed} restores +the default behaviour. + @kindex -assert @var{keyword} @item -assert @var{keyword} This option is ignored for SunOS compatibility. -- cgit v1.1