From hjstein@bfr.co.il Fri Dec 19 15:35:35 1997
Date: 19 Nov 1997 11:55:52 +0200
From: "Harvey J. Stein"
To: Miguel A Sepulveda
Cc: axp-list@redhat.com
Subject: Re: Profilage avec Linux Alpha ?
Miguel A Sepulveda a écrit:
> Salut à tous,
>
> J'essaye de profiler un de mes programmes sur ma plate-forme Alpha
> Noyau 2.0.30.
>
> J'ai compilé les sources avec -g2 -pg, puis lancé l'exécutable. Après
> avoir fini, cet exécutable est sensé généré un gmon.out, au lieu de
> cela, le programme se plante et vide un "core". Le programme est
> correct car sans l'option -pg il fonctionne bien.
J'ai du faire quelques trucs avec Redhat 4.2 pour faire marcher le
profilage.
Il y deux patches qui ont été envoyés à cette liste et qui résolvent
le problème dans gcc. Le premier (rth-gcc-2.7.2-970921.diff.gz) répare
un problème associé aux piles de grandes dimensions. Le second
(gcc-alpha-profiling-patch-2.7.2.1-toon-971001) est supposé réglé
certains problèmes de profilage avec gcc, mais je ne suis pas convaincu
qu'il soit vraiment nécessaire.
En tous cas, les voici avec un fichier Spec RPM pour construire gcc.
Il vous faut gcc-2.7.2.1-2.src.rpm, décompactez le, remplacez le
fichier dans in /usr/src/redhat/SPECS avec celui fournit ici, ajoutez
le patch aux répertoires SOURCES et recompilez gcc. Vous pouvez alors
installer gcc-2.7.2.1-2c.alpha.rpm. Je joins un fichier compacté avec
tar, gzip et uuencode (gcc-new-patches.tar.gz.uue) qui contient les
2 patches et le fichier spec.
Il vous faudra aussi patcher gprof. La même procédure s'applique, mais
cette fois à binutils-2.7.0.2-4.src.rpm. Toutefois, le lot (package)
binutils comprend des fichiers qui entre en conflit avec des entêtes
de libc, le meilleur compromis, consiste donc à remplacer à la main
gprof après l'avoir reconstruit. Je joint aussi
binutils-new-patches.tar.gz.uue.
Finalement, vous devrez patcher certaines bibliothèques. Je crois que
c'est le point le plus important. Le patch se trouve dans les archives
de la liste de diffusion:
http://www.redhat.com/support/mailing-lists/archives/axp-list/1997-March/0464.html
Pour des raisons pratiques, je joins aussi ici le patch
(pg-fixes.tar.gz.uue), ainsi qu'un extrait du message ci-dessus de
David Mosberger-Tang (en fait, presque tout le message) qui explique
comment l'appliquer:
Quelques un d'entre vous ont signalé des problèmes avec le profilage
sous RH4.1. Voici un fichier uuencodé de trois fichiers objets
corrigés. Le test MD5 donne:
0854f6609580506aeea2595d7729e27b gmon.po
e2e3cdbace223a162efe90048e0ed661 ieee_get_fp_control.po
8340b52dc581956131e038d3946ba81b ieee_set_fp_control.po
Après avoir extrait ces fichiers, remplacez les dans libc_p.a.
par exemple:
ar rv /usr/lib/libc_p.a gmon.po ieee_{s,g}et_fp_control.po
le profilage devrait alors de nouveau fonctionner. Remarquez que
dans les binutils-2.7 gprof à un bogue qui créé parfois un SIGFPE.
voir mes courriers précédents pour un patch qui corrige cela.
Finalement, il y a toujours un problème avec le mélange du
profilage et de l'édition de lien dynamique. Par exemple, avec
l'édition de lien dynamique, l'ajout de -lm créera un fichier
binaire qui produit une faute de segmentation. L'ajout de l'option
-static devrait corriger ce problème pour l'instant (en attendant
une vrai solution).
Bonne chance,
--
Harvey J. Stein
Berger Financial Research
hjstein@bfr.co.il
Les 3 patches uuencodés.
|