From: Danny Smith Date: Wed, 17 Aug 2005 08:58:01 +0000 (+0000) Subject: bfd X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=00b38d93accccfcac0f746e897e7b176b9dc1285;p=pf3gnuchains%2Fpf3gnuchains3x.git bfd * cofflink.c (_bfd_coff_generic_relocate_section): Correct comment. gas * config/obj-coff.c (obj_coff_weak): Set auxiliary record of NT weak externals to IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ed9ead4e2e..7d0d5f36df 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2005-08-17 Danny Smith + + * cofflink.c (_bfd_coff_generic_relocate_section): Correct + comment. + 2005-08-17 Alan Modra * elflink.c (_bfd_elf_define_linkage_sym): Don't call diff --git a/bfd/cofflink.c b/bfd/cofflink.c index a99a5b3fe6..151b1fff0e 100644 --- a/bfd/cofflink.c +++ b/bfd/cofflink.c @@ -2937,9 +2937,11 @@ _bfd_coff_generic_relocate_section (bfd *output_bfd, Note that weak symbols without aux records are a GNU extension. FIXME: All weak externals are treated as having - characteristics IMAGE_WEAK_EXTERN_SEARCH_LIBRARY (2). - There are no known uses of the other two types of - weak externals. */ + characteristic IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY (1). + These behave as per SVR4 ABI: A library member + will resolve a weak external only if a normal + external causes the library member to be linked. + See also linker.c: generic_link_check_archive_element. */ asection *sec; struct coff_link_hash_entry *h2 = input_bfd->tdata.coff_obj_data->sym_hashes[ diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 98b901bc7d..4ea65be392 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -1093,7 +1093,7 @@ obj_coff_weak (int ignore ATTRIBUTE_UNUSED) the value of the weak symbol itself. */ S_SET_STORAGE_CLASS (symbolP, C_NT_WEAK); S_SET_NUMBER_AUXILIARY (symbolP, 1); - SA_SET_SYM_FSIZE (symbolP, IMAGE_WEAK_EXTERN_SEARCH_LIBRARY); + SA_SET_SYM_FSIZE (symbolP, IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY); alternateP = symbol_find_or_make (weak_name2altname (name)); S_SET_EXTERNAL (alternateP);