OSDN Git Service

bfd
authorDanny Smith <dannysmith@users.sourceforge.net>
Wed, 17 Aug 2005 08:58:01 +0000 (08:58 +0000)
committerDanny Smith <dannysmith@users.sourceforge.net>
Wed, 17 Aug 2005 08:58:01 +0000 (08:58 +0000)
* 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.

bfd/ChangeLog
bfd/cofflink.c
gas/config/obj-coff.c

index ed9ead4..7d0d5f3 100644 (file)
@@ -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
index a99a5b3..151b1ff 100644 (file)
@@ -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[
index 98b901b..4ea65be 100644 (file)
@@ -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);