broken bootstrap, roottask and l4linux with different tools
Valery V. Sedletski
_valerius at mail.ru
Sun Nov 2 05:42:57 CET 2008
I'm now trying to compile l4env and L4Linux under older Linux distribution (I moved to virtual machine -- VIrtual PC with RedHat 9.0
installed in it). The tools are updated -- I checked that versions of all tools are not lower than those mentioned in dev-overview.txt file.
Only gcc is version 3.4.6 (on previous machine I have gcc 4.2.2), but I read it is OK.
The problem is that bootstrap, roottask and l4linux kernel are not working. Bootstrap file is about 3 Mb long and is not starting
by GRUB, it says "Invalid or unsupported executable format". I opened it under hex editor and it has ELF signature and some data
at the beginning (probably, ELF header etc). Then goes a long run of zeroes and code is at the end. I peeked into linker script
and saw that bootstrap is linked at addess 0x2d0000, which is also about 3 Mb. Maybe someone already encountered this problem?
How to avoid extra zeroes? As I understand it depends on linker script, but why with different tools all is OK? (I have binutils version
2.13 and gcc 3.4.6, with 4.2.2 all is OK).
And also roottask is sem-working. The simpliest configuration with pingpong test is working but when I start configuration with dm_phys,
for example, DOpE with Nitpicker test:
ROOT: task 7.00 at 01505f7a is trying to get page 00000000 which is reserved
--double page fault--------------------------------------IP: 0012804b
[root.pager] (4.00) jdb:
-- the task 7 is dm_phys. The problem is with roottask, not dm_phys because when I repalce roottassk with version, compiled with
gcc 4.2.2 under Mandriva 2008.0 (I don't remember binutils version), it works. As I remember, similar error occures when a program
must be started with loader to be fixed up, but was started by roottask, not the loader. But dm_phys is not reuired to be started with
the loader server.
Also, when I compiled l4linux with these tools, I got a pagefault at zero address with eip == address of LOG_printf() function. --
Linux starts and first tries write something to log server and traps.
As I understand, two last errors are because of accessing data by zero pointer.
Other binaries seem to work.
What can be wrong with tools and how to avoid such effect? (Maybe someone had similar problems?)
More information about the l4-hackers