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

signal SIGFPE



Bonjour à tous

Toujours à la recherche d'informations sur le traitement de sigaux dans un programme, j'ai suivi un conseil de Basile Starynkevitch et installé strace. Puis je l'ai essayé sur mes fichiers de tests de division de -2147483648 par -1 (en représentation signée complément à deux sur 32 bits). J'ai été très surpris des résultats. J'ai quatre fichiers de tests, un en Ada, un en C et deux en assembleur (l'un d'eux travaille directement en 64 bits, l'autre en 32 bits pour comparer les résultats avec Ada et C). Je joins les quatre, ainsi que les résultats d'exécution des trois en 32 bits, avec strace, groupés dans une archive tar (sans compression pour si peu).

1°) les programmes C et Ada font des initialisations curieuses, cherchant méthodiquement un ficher de configuration (/etc/ld.so.nohwcap) qu'il ne trouve pas (traces de Open avec résultat -1). Problème de configuration de gcc? (N.B.: le compilateur Ada gnat, disponible avec debian, utilise les services de gcc).

2°) strace manifestement trace les appels de la bibliothèqe C, pas ceux directement par int 80h (appel système sur processeurs de famille Intel). Alors qu'il écrit les mêmes nombres à l'écran que ses "collègues" en langage évolué, le programme en assembleur ne donne de trace que de la fonction "stat".

3°) le programme Ada, comme je le pensais, ne peut qu'installer des traiteurs de signaux pour les transformer en exceptions Ada --- trace d'appel de "rt_sigaction", pour plusieurs signaux mais avec le même traiteur. J'aimerais bien trouver comment il fait pour envoyer l'exécution à l'adresse de son choix, c'est exactement ce que je cherche.

Au passage, ELEM_IO est un "package" de mon cru qui interface pour Ada les appels système, open, read, etc..., le standard Ada TEXT_IO (qui fournit avec mêmes noms les procédures de sortie de ce petit programme) étant du genre usine à gaz et de plus muni des protections pour usage multitâche. Dans plada.txt, j'ai été étonné de voir qu'à la fin, le "exception handler" (ou traite-exceptions) "final" du code fourni par gnat affiche les caractères un par un!

Cordialement

Philippe Deleval



Attachment: plante.tar
Description: Unix tar archive


Reply to: