[FreeVMS] L4Ka does not boot if built by gcc 4.8

BERTRAND Joël joel.bertrand at systella.fr
Sun Dec 22 17:00:14 CET 2013


	Hello,

	FreeVMS is running as a roottask over L4Ka. I haven't built a new 
microkernel for my patch to build L4Ka with gcc 4.7. Last week, 
Alessandro Sangiuliano has reported on FreeVMS mailing list that L4Ka 
does not work as expected when its build with gcc 4.8.

	Thus, I have tried to build L4 with gcc 4.8. Without any result. With 
the same options, L4Ka runs as expected when it is built by gcc 4.7 and 
does not when it is built by gcc 4.8. Just after kickstart, I obtain :

fatal: Trying to execute code outside RAM or ROM at 0x00000000c062e730

	For information :

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

Type de fichier ELF est EXEC (fichier exécutable)
Point d'entrée 0xd1a000
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
                  0x0000000000050580 0x0000000000050580  RWE    20
   LOAD           0x0000000000050720 0xffffffffc0800000 0x0000000000800000
                  0x0000000000000903 0x0000000000000903  R E    10
   LOAD           0x0000000000052000 0xffffffffc0a00000 0x0000000000a00000
                  0x00000000000051b4 0x00000000000051b4  RW     1000
   LOAD           0x0000000000058000 0xffffffffc0c00000 0x0000000000c00000
                  0x0000000000019a50 0x0000000000019a50  RWE    1000
   LOAD           0x0000000000072000 0x0000000000d1a000 0x0000000000d1a000
                  0x0000000000008dd8 0x0000000000008ee0  RWE    1000
   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x0000000000000000 0x0000000000000000  RWE    10

  Section à la projection de segement:
   Sections de segment...
    00     .text .text._ZN9x86_mmu_t13has_long_modeEv .text.startup 
.text._Z19__tbuf_record_eventmmPKcz .text._ZN5tcb_t16init_saved_stateEv 
.text._ZN13exregs_ctrl_t6stringEv .text._Z15get_cpu_mailboxt 
.text._Z12xcpu_requesttPFvP14cpu_mb_entry_tEP5tcb_tmmmmmmmm 
.text._ZN15hs_sched_ktcb_t16delay_preemptionEP5tcb_t 
.text._ZN11scheduler_t8scheduleEv 
.text._ZN11scheduler_t8scheduleEP5tcb_th 
.text._ZN14thread_state_t6stringEv .text._ZN10spinlock_t4lockEv 
.text._ZN5tcb_t17get_saved_partnerEm .text._ZN5tcb_t6get_mrEm 
.text._ZN5tcb_t6set_mrEmm 
.text._Z12xcpu_requesttPFvP14cpu_mb_entry_tEP5tcb_tmmm 
.text._ZN14hs_scheduler_t15dequeue_timeoutEP5tcb_t 
.text._ZN12sched_ktcb_t11set_timeoutE6time_t 
.text._ZN11scheduler_t8scheduleEP5tcb_tS1_h 
.text._ZN14hs_scheduler_t15enqueue_timeoutEP5tcb_t 
.text._ZN13smp_requeue_t12enqueue_headEP5tcb_t .text._ZN5tcb_t7set_cpuEt 
.rodata .kip
    01     .syscalls
    02     .cpulocal
    03     .data .kdebug .sets
    04     .init .bss._ZZN14tbuf_handler_t9dump_tbufEmmmbE6tb_str
    05
riemann:[~/openvms/mnt/boot] >

	Fault comes from .text._ZN9x86_mmu_t13has_long_modeEv address entry 
point. When kernel is built with gcc 4.7, executable does not contains 
this segment. I don't understand why gcc produces this segment as this 
function is inlined in source code.

	Any idea ?

	Best regards,

	JKB


More information about the FreeVMS mailing list