[SOS] Bug supposé a l'initialisation de la GDT.

stephane duverger duvergers at chello.fr
Ven 29 Juil 13:59:12 CEST 2005


Oui l'objet sera aligné mais ce dont parle la doc intel c'est de
l'adresse de base de la GDT et non pas du champ contenant cettte
adresse.

Selon ta remarque, cher david :

struct toto{
int a;
int b;
} obj;

&obj.a (ou &obj.b, je ne sais plus l'ordre) sera aligné sur 8 bytes. Or
dans le cas de votre structure gdtr contenant un champ base_addr, il me
semble qu'il est inutile que le champ base_addr soit alloué à une
adresse multiple de 8 bytes, car la doc intel parle bien de la valeur
dans ce champ, l'adresse de base de la GDT. Et c'est cette valeur qui
doit etre alignée sur 8 bytes non pas l'adresse de la variable la
contenant.

Je me suis mieux exprimé ? Ou j'ai toujours rien compris ?

On Fri, 2005-07-29 at 13:43 +0200, David Decotigny wrote:
> Bonjour,
> 
> stephane duverger wrote:
> > Il est dit que c'est l'adresse de base de la GDT qui doit etre alignée
> > sur 8 octets. Donc la valeur contenue dans le champ "base_addr" de votre
> > structure.
> 
> Oui. La definition de "un objet machin est aligne sur X octets" est tout 
> simplement "le premier champ de machin est aligne sur X octets".
> 
> Dans notre cas, comme ce champ base_addr est le premier de la structure 
> (de memoire, j'ai pas le code sous les yeux), c'est donc la structure 
> dans son ensemble qui sera alignee sur 8 octets. Et reciproquement.
> 
> > Cependant les attributs gcc s'appliquent sur les instances de cette
> > structure "x86_gdt_register". C'est donc l'adresse d'un objet de ce
> > type, en l'occurence la variable initialisant le registre gdtr, qui est
> > alignée sur 8 octets et non pas la valeur contenue dans un de ses
> > champs.
> 
> Je ne comprends pas cette remarque.
> 
> Si je dis :
> <<
>    Je declare une struct toto avec un attribut "align(8)";
>    puis:
>    J'instancie un objet obj de type "struct toto";
>  >>
> Alors obj sera aligne sur 8 octets. C'est par definition equivalent a 
> dire que le premier champ de obj sera aligne sur 8 octets.
> 
> Bonne journee,
> _______________________________________________
> Sos mailing list
> Sos at the-doors.enix.org
> http://the-doors.enix.org/cgi-bin/mailman/listinfo/sos



Plus d'informations sur la liste de diffusion Sos