original in en Harvey J. Stein
en to nl Guus Snijders
From [email protected] Fri Dec 19 15:35:35 1997 Date: 19 Nov 1997 11:55:52 +0200 From: "Harvey J. Stein" <[email protected]> To: Miguel A Sepulveda <[email protected]> Cc: [email protected] Subject: Re: Profiling under Linux Alpha ? Miguel A Sepulveda <[email protected]> writes: > Hoi Allemaal, > > Ik probeer een programma van mij te profilen op mijn Alpha platform > Kernel 2.0.30. > > Ik heb de source gecompileerd met -g2 -pg, en vervolgens de executable > uitgevoerd. Als de executable klaar is, zou het een gmon.out moeten > genereren, maar in plaats daarvan crasht het programma en dumpt een > core. Het programma is in orde want zonder de -pg optie werkt het > gewoon goed. Ik moest een paar dingen doen met RedHat 4.2 om profiling werkend te krijgen. Er zijn twee patches naar deze lijst gestuurd die problemen fixen in gcc. De eerste (rth-gcc-2.7.2-970921.diff.gz) lost een probleem op met grote stack frames. De tweede (gcc-alpha-profiling-patch-2.7.2.1-toon-971001) zou een aantal gcc profiling problemen moeten oplossen, maar ik ben er nog van overtuigd dat dit eigenlijk nodig was. In ieder geval, hier zijn ze, samen een RPM Spec bestand om gcc te bouwen. Zorg dat je gcc-2.7.2.1-2.src.rpm hebt, pak deze uit en vervang het spec bestand in /usr/src/redhat/SPECS met degene die hier bij zit, voeg de patches toe aan de SOURCES directory en hercompileer gcc. Dan kun je gcc-2.7.2.1-2c.alpha.rpm. Ik voeg een getarred, gzipped, uuencoded bestand (gcc-new-patches.tar.gz.uue) bij, deze bebat de 2 patches & het spec bestand. Je moet ook gprof patchen. Dezelfde procedure is van toepassing, maar deze keer met binutils-2.7.0.2-4.src.rpm. Het binutils pakket bevat echter bestanden die conflicteren met de libc headers, dus je kunt het beste proberen gprof met de hand te vervangen na het herbouwen. binutils-new-patches.tar.gz.uue zit ook bijgevoegd. Ten slotte moet je nog wat libraries patchen. Dit is volgens mij de het belangrijkste deel. De patch is te vinden in het mailing list archief: http://www.redhat.com/support/mailing-lists/archives/axp-list/1997-March/0464.html Voor het gemak, voeg de patch hierbij (pg-fixes.tar.gz.uue), alsmede een deel van bovenstaande bericht van David Mosberger-Tang (ok, eigenlijk het grootste deel van het bericht) over hoe deze toe te passen: Sommigen rapporteerden problemen met profiling onder RH4.1. Hier is een uuencoded bestand van drie gerepareerde object bestanden. De md5sum uitvoer is: 0854f6609580506aeea2595d7729e27b gmon.po e2e3cdbace223a162efe90048e0ed661 ieee_get_fp_control.po 8340b52dc581956131e038d3946ba81b ieee_set_fp_control.po Na het uitpakken van deze bestanden, plaatst je ze in je libc_p.a. Bijvoorbeeld: ar rv /usr/lib/libc_p.a gmon.po ieee_{s,g}et_fp_control.po en dan zou profiling weer moeten werken. Merk op dat de binutils-2.7 gprof een bug heeft die soms een SIGFPE opleverd. Zie mijn eerdere mail voor een patch die dit repareert. Ten slotten is er nog steeds een probleem met het mixen van profiling en dynamisch linken. Met dynamisch linken bijvoorbeeld, zorgt -lm voor een binary die segfault. Voor het moment zou de -static flag dit moeten omzeilen (tot er een echte oplossing is gevonden). Veel succes, -- Harvey J. Stein Berger Financial Research [email protected]Patch file (article11-atach.txt)