[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[HS] course vers SIGFPE



Rebonjour!

Avec mes excuses pour Sylvain Sauvage, mon rédacteur de message m'a fait une blague curieuse (que je préfère emacs!)

Le 01/07/2014 16:05, Sylvain L. Sauvage a écrit :
(...)
Euh, t’as bien mis le drapeau SA_SIGINFO ?
Bien sûr! Il était là dès que j'ai repris l'exemple sur Internet, avant même que je le trouve dans un .h !
Et il est assez documenté dans la page de manuel de sigaction.

j'ai d'ailleurs repris sigaction.h dans mon fpe_asm.asm.
D'où l'idée que j'étais directement dans le bon contexte.
   D’où l’autre idée que tu n’as pas le contexte parce que tu ne
l’as pas demandé ?
Je m'entends, ce que j'appelle 'contexte', c'est le 'stack frame' ! Pas besoin de demander ce qu'on a déjà! L'exemple Solaris m'avait mis en erreur sur ce point. Le 'ret' du handler renvoie à l'instruction qui a déclenché l'interruption (int 5 convertie en SIGFPE par le noyau). Il semble que ce ne soit pas le cas sous Solaris.
(....)
Ce n’est pas du tout un comportement « spécial », c’est le
comportement défini. Le pré-processeur, comme son nom l’indique,
passe avant le compilateur.
   Que tu veuilles (option -S) arrêter la compilation à l’étape
« compilation », c’est-à-dire avant l’étape « assemblage », ne
change rien au fait que le pré-processeur passera avant
l’analyse du code.

   Si tu veux les valeurs des macros (« constantes ») pour
greg_t, il « suffit » de comprendre le code C de
sys/ucontext.h :
Mais tout ça est bien là dans mon fichier assembleur ! Pas dur de transformer des #define en %define (ou %idefine) de nasm et des /* ... */ en ; avec emacs! Et je sais ce que veut dire enum, c'est la moindre des choses quand on a été formé à Pascal et qu'on travaille en Ada.
(Perso, je ferais une moulinette pour automatiser tout ça et, au
  moins, je dirais d’où viennent les données.
  (P.ex. sys/ucontext.h explique que certaines proviennent des
en-têtes du noyau.))

j'ai bien envisagé cette moulinette (en Ada?), mais après tout, il me semble que cpp fait un boulot assez proche pour que ce soit l'affaire d'une option de gcc.

D'ailleurs gcc a une option (dans les options générales) -fdump-ada-spec qui fournit des spécifications Ada (.ads). Mais ce sont des copies des .h, et sans les constantes, si ce n'est en commentaire Ada! j' attendrais mieux.

Il me reste un problème: mon handler ne marche qu'une fois!

Cordialement

Philippe Deleval


Reply to: