Re: A propos du No eXecute d'AMD64

Page principale

Répondre à ce message
Auteur: serge rouveyrol
Date:  
À: guilde
Sujet: Re: A propos du No eXecute d'AMD64
Le mercredi 09 juin 2004 a 02:23:42, Yves Martin a ecrit :
> Selon Bernard Cassagne <Bernard.Cassagne@???>:
>
> > Yves Martin wrote:
> >
> > > De souvenir, je crois que les premiers Linux x86 de Linus utilisaient la
> > > segmentation pour ce problème justement - mais a été refait avec
> > uniquement
> > > de la pagination pour la portabilité entre plateformes.
>
> > Tu es sur ?
>
>  Non mais j'ai retrouvé un vieux mail
>  (Merci Google: rechercher 'Linux history segmentation')
>    http://www-2.cs.cmu.edu/~awb/linux.history.html

>
> D'après ce que j'ai pu comprendre, le task-switching de l'époque utilise
> les segments.
>
> dans la version actuelle mais je pense que Linux
> définit un seul segment qui couvre toute la mémoire (avec droit en exécution)
> et que sa valeur est posée dans tous les registres de segment (CS, DS, ES,
> FS, GS, SS)
>
> > J'ai toujours entendu dire que personne n'avait fait d'OS avec support
> > des segments par manque de gestion du concept de segment par gcc/gld/gas
>
> C'est effectivement un problème. Mais un code assembleur inline permet
> de changer les valeurs des segments et cela devrait suffire au niveau du
> kernel (un segment CS pour le code, un pour les données DS (et copie dans
> ES, FS, GS), un pour la pile SS pour chaque application)
> Une fois que le kernel les définit pour l'application, l'application n'a pas
> besoin d'y toucher (d'ailleurs elle aurait du mal si elle ne connaît pas leur
> valeur exacte).


pour une application il reste le probmeme du code genere par C pour un pointeur
sur une variable dans la zone data et un pointeur sur une variable locale


>
> Ce qui me fait sourire, c'est le message "segmentation fault",
> "pagination fault" serait plus exact ;)
>
> --
> Yves Martin
>