aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/cofflink.c8
-rw-r--r--gas/config/obj-coff.c2
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);