diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 83c4f4135d6..e0da01f36cb 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-03  Alexandre Oliva  <aoliva@redhat.com>
+
+	* elflink.c (bfd_elf_record_link_assignment): Mark undefweak and
+	undefined symbols as hash_new.
+
 2003-03-03  Andrew Stubbs  <andrew.stubbs@superh.com>
 
 	* archures.c: Add bfd_mach_sh4_nommu_nofpu.
diff --git a/bfd/elflink.c b/bfd/elflink.c
index b992c39cb18..50513648db6 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -430,6 +430,13 @@ bfd_elf_record_link_assignment (bfd *output_bfd ATTRIBUTE_UNUSED,
   if (h == NULL)
     return FALSE;
 
+  /* Since we're defining the symbol, don't let it seem to have not
+     been defined.  record_dynamic_symbol and size_dynamic_sections
+     may depend on this.  */
+  if (h->root.type == bfd_link_hash_undefweak
+      || h->root.type == bfd_link_hash_undefined)
+    h->root.type = bfd_link_hash_new;
+
   if (h->root.type == bfd_link_hash_new)
     h->elf_link_hash_flags &= ~ELF_LINK_NON_ELF;