include/coff/

* xcoff.h (XCOFF_EXPALL, XCOFF_EXPFULL): New flags.
	(xcoff_loader_info): Add auto_export_flags.

bfd/
	* bfd-in.h (bfd_xcoff_size_dynamic_sections): Replace the
	bfd_boolean export_defineds parameter with an unsigned int
	auto_export_flags parameter.
	* bfd-in2.h: Regenerate.
	* xcofflink.c (xcoff_archive_contains_shared_object_p): New function,
	split out from xcoff_build_ldsyms.
	(xcoff_covered_by_expall_p): New function.
	(xcoff_auto_export_p): New function, split out from xcoff_build_ldsyms
	but with extra code to handle -bexpfull and -bexpall.
	(xcoff_mark_auto_exports): New function.
	(xcoff_build_ldsyms): Use xcoff_auto_export_p to decide whether
	a function should be automatically exported.
	(bfd_xcoff_size_dynamic_sections): Replace the export_defineds
	parameter with an auto_export_flags parameter.  Update ldinfo
	accordingly.  Use xcoff_mark_auto_exports to mark all automatically-
	exported symbols.

ld/
	* emultempl/aix.em (auto_export_flags): New variable.
	(explicit_auto_export_flags): Likewise.
	(OPTION_EXPALL, OPTION_EXPFULL): New enum values.
	(OPTION_NOEXPALL, OPTION_NOEXPFULL): Likewise.
	(gld${EMULATION_NAME}_add_options): Add -bexpall, -bexpfull,
	-bnoexpall and -bnoexpfull.
	(gld${EMULATION_NAME}_handle_option): Handle them.
	(gld${EMULATION_NAME}_before_allocation): Update the call to
	bfd_size_dynamic_sections.

ld/testsuite/
	* ld-powerpc/aix-export-1-all.dd, ld-powerpc/aix-export-1-full.dd,
	ld-powerpc/aix-export-1a.s, ld-powerpc/aix-export-1b.s: New tests.
	* ld-powerpc/aix52.exp: Run them.
This commit is contained in:
Richard Sandiford 2009-03-14 09:35:45 +00:00
parent 443e66934c
commit c7cf32ee27
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
* xcoff.h (XCOFF_EXPALL, XCOFF_EXPFULL): New flags.
(xcoff_loader_info): Add auto_export_flags.
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
* internal.h (C_AIX_WEAKEXT): New macro.

View File

@ -394,6 +394,9 @@ struct xcoff_link_hash_table
asection *special_sections[XCOFF_NUMBER_OF_SPECIAL_SECTIONS];
};
/* These flags indicate which of -bexpall and -bexpfull are in effect. */
#define XCOFF_EXPALL 1
#define XCOFF_EXPFULL 2
/* This structure is used to pass information through
xcoff_link_hash_traverse. */
@ -409,8 +412,8 @@ struct xcoff_loader_info
/* Link information structure. */
struct bfd_link_info *info;
/* Whether all defined symbols should be exported. */
bfd_boolean export_defineds;
/* A mask of XCOFF_EXPALL and XCOFF_EXPFULL flags. */
unsigned int auto_export_flags;
/* Number of ldsym structures. */
size_t ldsym_count;