2007-01-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/3831
	* elf-bfd.h (bfd_elf_link_mark_dynamic_symbol): Add an
	argument, Elf_Internal_Sym *.

	* elflink.c (bfd_elf_link_mark_dynamic_symbol): Mark a data
	symbol dynamic if info->dynamic_data is TRUE.
	(bfd_elf_record_link_assignment): Updated call to
	bfd_elf_record_link_assignment.
	(_bfd_elf_merge_symbol): Likewise.  Always call
	bfd_elf_link_mark_dynamic_symbol.

include/

2007-01-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/3831
	* bfdlink.h (bfd_link_info): Rename dynamic to dynamic_list.
	Add dynamic and dynamic_data.

ld/

2007-01-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/3831
	* NEWS: Mention -Bsymbolic-functions, --dynamic-list-data and
	--dynamic-list-cpp-new.

	* ld.texinfo: Document -Bsymbolic-functions, --dynamic-list-data
	and --dynamic-list-cpp-new.

	* ldlang.c (lang_append_dynamic_list_cpp_new): New.
	(lang_process): Change link_info.dynamic to
	link_info.dynamic_list.
	(lang_append_dynamic_list): Likewise.
	* ldmain.c (main): Likewise.  Initialize link_info.dynamic and
	link_info.dynamic_data to FALSE.

	* ldlang.h (lang_append_dynamic_list_cpp_new): New.

	* lexsup.c (option_values): Add OPTION_DYNAMIC_LIST_DATA and
	OPTION_DYNAMIC_LIST_CPP_NEW.
	(ld_options): Add entries for -Bsymbolic-functions,
	--dynamic-list-data and --dynamic-list-cpp-new.  Make
	-Bsymbolic-functions an alias of --dynamic-list-data.
	(parse_args): Change link_info.dynamic to link_info.dynamic_list.
	Set link_info.dynamic to TRUE for --dynamic-list and
	--dynamic-list-cpp-typeinfo.  Handle --dynamic-list-data and
	--dynamic-list-cpp-new.

ld/testsuite/

2007-01-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/3831
	* ld-elf/del.cc: New.
	* ld-elf/dl5.cc: Likewise.
	* ld-elf/dl5.out: Likewise.
	* ld-elf/new.cc: Likewise.

	* ld-elf/shared.exp: Add tests for --dynamic-list-data and
	 --dynamic-list-cpp-new.
This commit is contained in:
H.J. Lu 2007-01-16 14:56:31 +00:00
parent 835fc32a3a
commit c4c8d06b1a
2 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2007-01-16 H.J. Lu <hongjiu.lu@intel.com>
PR ld/3831
* bfdlink.h (bfd_link_info): Rename dynamic to dynamic_list.
Add dynamic and dynamic_data.
2006-12-05 Michael Tautschnig <tautschn@model.in.tum.de> 2006-12-05 Michael Tautschnig <tautschn@model.in.tum.de>
Nick Clifton <nickc@redhat.com> Nick Clifton <nickc@redhat.com>

View File

@ -340,6 +340,13 @@ struct bfd_link_info
caching ELF symbol buffer. */ caching ELF symbol buffer. */
unsigned int reduce_memory_overheads: 1; unsigned int reduce_memory_overheads: 1;
/* TRUE if all data symbols should be dynamic. */
unsigned int dynamic_data: 1;
/* TRUE if some symbols have to be dynamic, controlled by
--dynamic-list command line options. */
unsigned int dynamic: 1;
/* What to do with unresolved symbols in an object file. /* What to do with unresolved symbols in an object file.
When producing executables the default is GENERATE_ERROR. When producing executables the default is GENERATE_ERROR.
When producing shared libraries the default is IGNORE. The When producing shared libraries the default is IGNORE. The
@ -440,7 +447,7 @@ struct bfd_link_info
bfd_vma relro_start, relro_end; bfd_vma relro_start, relro_end;
/* List of symbols should be dynamic. */ /* List of symbols should be dynamic. */
struct bfd_elf_dynamic_list *dynamic; struct bfd_elf_dynamic_list *dynamic_list;
}; };
/* This structures holds a set of callback functions. These are /* This structures holds a set of callback functions. These are