diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/cofflink.c | 8 | ||||
-rw-r--r-- | gas/config/obj-coff.c | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ed9ead4..7d0d5f3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2005-08-17 Danny Smith <dannysmith@users.sourceforge.net> + + * cofflink.c (_bfd_coff_generic_relocate_section): Correct + comment. + 2005-08-17 Alan Modra <amodra@bigpond.net.au> * elflink.c (_bfd_elf_define_linkage_sym): Don't call diff --git a/bfd/cofflink.c b/bfd/cofflink.c index a99a5b3..151b1ff 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 98b901b..4ea65be 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); |