Hi, I think I've at last found a bug in elfboot.c. Until this fix, I had always needed to disable verify code in elfboot.c to get it work. Now it boots ELF kernel with BOOT_IDE perfectly. One of doubly-linked chain was not initialized. I think it did not cause problem when memory near address 0 comes up with zeroes. But my raminit.inc leaves gabages there so some bogus memory ranges have been included in checksum. -- Takeshi Index: src/lib/elfboot.c =================================================================== RCS file: /cvsroot/freebios/freebios/src/lib/elfboot.c,v retrieving revision 1.15 diff -u -r1.15 elfboot.c --- src/lib/elfboot.c 10 Oct 2002 22:23:43 -0000 1.15 +++ src/lib/elfboot.c 30 Jun 2003 18:11:26 -0000 @@ -368,6 +368,7 @@ int i; memset(head, 0, sizeof(*head)); head->next = head->prev = head; + head->phdr_next = head->phdr_prev = head; for(i = 0; i < headers; i++) { struct segment *new; /* Ignore data that I don't need to handle */
SONE Takeshi <ts1@tsn.or.jp> writes:
Hi, I think I've at last found a bug in elfboot.c. Until this fix, I had always needed to disable verify code in elfboot.c to get it work. Now it boots ELF kernel with BOOT_IDE perfectly.
One of doubly-linked chain was not initialized. I think it did not cause problem when memory near address 0 comes up with zeroes. But my raminit.inc leaves gabages there so some bogus memory ranges have been included in checksum.
Thanks good catch. Another possibility is that the checksum is optional and not all versions of mkelfImage add it, and etherboot does not. So that code path is not exercised quite as much as it should be. Eric
participants (2)
-
ebiederman@lnxi.com -
SONE Takeshi