hi all,
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 r --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?)
WBR, valery
On Sun Nov 02, 2008 at 16:42:57 +1200, Valery V. Sedletski wrote:
hi all,
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 r --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?)
Well, we use not too old tools, lets say current Debian stable and unstable, Ubuntu Hardy, Intrepid, something like that. It's not that gcc-3.4 is too ancient but on the other side we don't test that often because mostly everyone uses gcc-4.x now (x >= 1). Linkerscripts are quite hairy usually and require a lot of care to get right for a broad range of tool versions. The best advice I can give is to use a recent tool chain.
Adam
l4-hackers@os.inf.tu-dresden.de