[Kos-dev] Re: [Kos-cvs] [kos] Modification CVS par d2

d2 kos-dev@enix.org
18 Mar 2002 16:37:40 +0100


>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@enix.org> writes:
    Thomas> J'ai pas bien compris pour l'histoire de ton bug : qui
    Thomas> ecrase le code de la fonction ? Est-ce que c'est le GPFM
    Thomas> lui meme (aka l'ensemble des GPFME alloue dynamiquement au
    Thomas> niveau de pmm), ou alors la struct _gpfm_lists_s gpfm
    Thomas> (declaree en static dans _pmm.c) ?

Tu vires le __init devant init_ram_gpfme(), et tu vas tout de suite
comprendre. C'est la *variable* "gpfm" (pas le GPFM tout entier,
puisque, a ce niveau, il n'est pas encore alloue), qui est declaree
dans _pmm.c (pas en static bien sur), qui est du type struct
_gpfm_lists_s. Cette variable, allouee par le compilo, recouvre le
debut de la fonction init_ram_gpfme(). Comme le montre le :

  __dbg_printk("gpfm start=0x%x, end=0x%x, init_ram_gpfme=0x%x\n",
               &gpfm, ((vaddr_t)&gpfm) + sizeof(gpfm),
               init_ram_gpfme);
  ASSERT_FATAL((init_ram_gpfme < &gpfm)
               || (init_ram_gpfme > (((vaddr_t)&gpfm) + sizeof(gpfm))));

Voila. Je jetterai surement un oeil dessus ce soir. Ca a surement a
voir avec l'allocation de la section *COM* du module par le
loader. Encore un detail : objdump indique la meme taille que le
sizeof() dans l'objet compile, donc ca n'a pas l'air de venir de
ld. C'est pour ca que je penche pour un bug dans le loader.

-- 
d2