--- /dev/null
+ PR ld/815
+ * elflink.c (elf_smash_syms): Clear undef.next if it's not being
+ used as a list pointer.
+
+--- bfd/elflink.c 2005/03/22 14:49:54 1.136.2.1
++++ bfd/elflink.c 2005/04/15 03:52:53 1.136.2.2
+@@ -2932,8 +2932,11 @@
+ if (h->ref_regular)
+ abort ();
+
+- /* Set sym back to newly created state, but keep undefs list pointer. */
++ /* Set sym back to newly created state, but keep undef.next if it is
++ being used as a list pointer. */
+ bh = h->root.u.undef.next;
++ if (bh == &h->root)
++ bh = NULL;
+ if (bh != NULL || inf->htab->root.undefs_tail == &h->root)
+ inf->twiddled = TRUE;
+ (*inf->htab->root.table.newfunc) (&h->root.root,