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

Christophe Lucas clucas at altern.org
Jeu 28 Juil 19:13:07 CEST 2005


romain a écrit :

> Bonjour,
> Je suis tous neuf sur cette news amors bonjours a tous !
> je m'appelle romain je suis en region parisienne, 26 piges pationné 
> d'info et d'electronique</mylife>
>  
> Je sais pas si j'ai trouvé des buggs sur SOS ou si je ne pige pas tous 
> , voila je m'explique!
>  
>  
> 1/ Dans la macro BUILD_GDTE on n'affecte pas les bits de la base 31 à 
> 34 (sos_ui8_t  base_paged_addr_31_24;)
> #define BUILD_GDTE(descr_privilege_level,is_code) ...
> (Coup de bol que la base soit à 0 ;), ce doit etre un oublie )
>  
>  
> 2/la strucutre x86_gdt_register bizarement dimensionnée !
>  
> struct x86_gdt_register {
>   sos_ui16_t  limit;
>   sos_ui32_t base_addr;
> } __attribute__((packed, aligned(8)));
>  
> 16 + 32 = 48 soit 6 octets a passer au processeur (spec intel ) !


Justement la spec Intel donne les réponses à tes questions. Il est dit 
que l'adresse de base de la GDT doit être aligné sur 8 octect d'où le 
__attribute__ ((aligned(8)));
De plus, oui oui le registre gdtr est bien de 48bits. C'est un "pseudo 
registre".

> Ici elle est aligné sur 8, si je ne m'abuse, cela indique que gcc 
> place cette structure sur 8 octets (modulo 8 octets pour 
> l'optimisation...).
> du coup il y'a 2 octets en rab ! il vont ou ? enfin comment le 
> processeur les comprend quand on fait
> lgdtl (gdtr) ????
>
Cf volume 3, chapitre 3, paragraphe 5.

> à premiere vu je dirais que le pad est mis a la fin (si non sos ne 
> marcherais pas correctement). en fait j'en sais rien, je voudrais etre 
> eclairé sur ce point !
>  [LIM H] [LIM L] [BASE H] [BASE H] [BASE L] [BASE L]   [PAD?]  [PAD ?]
>  
> Si c'est le cas, pourquoi aligné sur 8 et pas sur 6 ce bout de 
> structure ?? je ne vois pas !!
>
Parce que simplement, c'est ce qui est dit dans la spécification Intel 
(The base address of the GDT should be aligned on an eight-byte boundary...)

> Merci de m'aiclairer
>  
> Bon courage à vous, Merci pour ces fabuleuses sources tres instructives.
>  
> Romain




Plus d'informations sur la liste de diffusion Sos