[cross-binutils-2.15.91.0.2] assertion fail linker.c:619

H. J. Lu hjl@lucon.org
Tue Aug 17 22:16:00 GMT 2004


On Tue, Aug 17, 2004 at 11:42:20AM +0200, Pawe?? Sikora wrote:
> Hi,
> 
> I have a minor problem during with kernel cross compilation.
> The cross linker reports an error but kernel works fine.
> 
> # make ARCH=x86_64 CROSS_COMPILE=amd64-pld-linux-
> (...)
> LD ?? ?? ??vmlinux
> amd64-pld-linux-ld: BFD 2.15.91.0.2 20040727 assertion fail linker.c:619
> (...)
> 
> Any ideas?
> 
> # crossamd64-binutils-2.15.91.0.2-1
> # crossamd64-gcc-3.4.2-0.20040806.1
> # glibc-2.3.4-0.20040722.2+nptl
> 

This is a linker bug:

http://sources.redhat.com/bugzilla/show_bug.cgi?id=338

The problem is bfd_link_add_undef assumes h->und_next == NULL. But it
may not be true in all cases, depending on how lucky/unlucky you are.
This patch seems to fix the testcase. But I am not sure if it is 100%
correct.


H.J.
--
--- linker.c.undef	2004-08-13 08:00:10.000000000 -0700
+++ linker.c	2004-08-17 15:14:00.595475841 -0700
@@ -616,7 +616,7 @@ void
 bfd_link_add_undef (struct bfd_link_hash_table *table,
 		    struct bfd_link_hash_entry *h)
 {
-  BFD_ASSERT (h->und_next == NULL);
+  BFD_ASSERT (h->und_next == NULL || h->und_next == table->undefs_tail);
   if (table->undefs_tail != NULL)
     table->undefs_tail->und_next = h;
   if (table->undefs == NULL)



More information about the Binutils mailing list