[FreeVMS] build problem

BERTRAND Joël joel.bertrand at systella.fr
Tue Dec 17 10:19:41 CET 2013


Alessandro Sangiuliano a écrit :
> This evening I cloned the L4Ka git repo, where pistachio resides.
>
> I built it, set up an image with grub2, kickstart, sigma0 and pingpong,
> but I get the same error that I get with FreeVMS:

	You cannot obtain another output with L4Ka as last important L4Ka patch 
was sent by me ;-)

> qemu: fatal: Trying to execute code outside RAM or ROM at 0x00000000c061e950
>
> I’m wronging something, but still not discovered what.

	Can you answer my question ? I don't know what program tries to execute 
code outside memory.

	I have checked that kickstart works fine under qemu. It detects memory 
without error.

	When you start qemu with :

qemu-system-x86_64 -cpu kvm64 -hdc freevms.img -smp 2 -serial stdio -m 128M

you should obtain 'two' consoles :
- 1st : graphical one
- 2nd : serial line

	Both are driven by libearly, but the firts lines have to be different. 
Indeed, kickstart prints information on screen and L4/X2 on serial line.

	Can you confirm that you can read on console :
KickStart 0.12.56
Detected multiboot compliant loader
  Kernel ....
...
  sigma0 ...
...
  roottask ...

	After that, you should obtain on serial line :
L4Ka::Pistachio - built on Jun 23 2013 22:23:41 by bertrand at riemann 
using gcc version 4.7.3
(with your build information of course)

Now, L4/X2 is running and lanching sigma0 (sigma0 has no output) and 
roottask (freevms.sys) that prints all other informations.

	When do you obtain your error ? This information is very important. 
Indeed, kickstart should relocated kernel. For example :

riemann:[~/openvms/mnt/boot] > readelf -l x86-kernel

Type de fichier ELF est EXEC (fichier exécutable)
Point d'entrée 0xd17000
Il y a 6 en-têtes de programme, débutant à l'adresse de décalage64

Type de fichier ELF est EXEC (fichier exécutable)
Point d'entrée 0xd17000
Il y a 6 en-têtes de programme, débutant à l'adresse de décalage64

En-têtes de programme:
   Type          Décalage           Adr.virt           Adr.phys.
                 Taille fichier     Taille mémoire      Fanion Alignement
   LOAD          0x00000000000001a0 0xffffffffc0600000 0x0000000000600000
                 0x000000000002d560 0x000000000002d560  RWE    20
   LOAD          0x000000000002d700 0xffffffffc0800000 0x0000000000800000
                 0x0000000000000903 0x0000000000000903  R E    10
   LOAD          0x000000000002f000 0xffffffffc0a00000 0x0000000000a00000
                 0x00000000000051b4 0x00000000000051b4  RW     1000
   LOAD          0x0000000000035000 0xffffffffc0c00000 0x0000000000c00000
                 0x0000000000016450 0x0000000000016450  RWE    1000
   LOAD          0x000000000004c000 0x0000000000d17000 0x0000000000d17000
                 0x0000000000007cf0 0x0000000000007cf0  RWE    1000
   GNU_STACK     0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RWE    8

and kickstart should indicates the same informations :
... -> 0x00600000-0x0062d560
... -> 0x00800000-0x00800903
...

	Please note that Adr.phys. always should be accessible (in the first 
128 MB in your case). If not, your linker script is broken.

	Can you send here ELF header of your kernel ?

	Some addresses are configured by :
cd $(BUILDDIR)/kernel && $(SRCDIR)/kernel/configure \
	--with-kickstart-linkbase=0x00100000 \
	--with-s0-linkbase=0x00080000 \
	--with-roottask-linkbase=0x00200000

	Regards,

	JKB



More information about the FreeVMS mailing list