![]() Harvey J. Stein, LinuxFocus Leser |
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: Profiling under Linux Alpha ?
Miguel A Sepulveda writes:
> Hallo allerseits,
> Ich versuche auf meiner Alpha (Kernel 2.0.30) eines meiner Programme
> zu profilen.
> Ich kompilierte die Quelltexte mit -g2 -pg und startete dann das Programm.
> Nach Beendigung sollte eine Datei gmon.out erzeugt worden sein, stattdessen
> stürzt das Programm mit einem Coredump ab. Das Programm selbst ist
> in Ordnung, ohne die Option -pg läuft es einwandfrei.
Ich mußte Einiges tun, bevor ich das Profiling mit Redhat 4.2
zum Laufen bekam.
Es gibt dazu zwei Patches, die ich dieser Liste zugänglich gemacht
habe und welche einige Probleme mit gcc beheben. Der erste Patch
(rth-gcc-2.7.2-970921.diff.gz) korrigiert ein Problem mit großen
Stack Frames, der zweite (gcc-alpha-profiling-patch-2.7.2.1-toon-971001)
soll einige Probleme von gcc mit Profiling lösen, allerdings habe
ich selbst nicht getestet, ob dies notwendig war.
Auf jeden Fall kommen sie mit dieser Mail mit, inklusive einer RPM
SPECS Datei, für das Übersetzen von gcc. Man sollte die
Datei gcc-2.7.2.1-2.src.rpm entpacken, die SPECS Datei in /usr/src/redhat
durch die beiligende Datei ersetzen, den Patch dem SOURCES Verzeichnis
hinzufügen und gcc neu kompilieren. Dann kann gcc-2.7.2.1-2c.alpha.rpm
installiert werden. Ich füge die Datei gcc-new-patches.tar.gz.uue
bei (getarred, gezipped und uuencoded), die beide Patches und die
SPECS Datei enthält.
gprof muß ebenfalls gepatched werden. Selbige Prozedur, allerdings
dieses Mal mit binutils-2.7.0.2-4.src.rpm. Allerdings enthält das
binutils Paket Include Dateien, welche mit denen der libc einen Konflikt
erzeugen, deswegen sollte gprof nach der Neuübersetzung per Hand
ersetzt werden. binutils-new-patches.tar.gz.uue füge ich ebenfalls bei.
Zum Schluß müssen einige Bibliotheken gepatched werden. Dies
dürfte der wichtigste Teil sein. Der Patch ist im Archive der
Mailing Liste zu finden:
http://www.redhat.com/support/mailing-lists/archives/axp-list/1997-March/0464.html
Aus Bequemlichkeit wird er beigefügt (pg-fixes.tar.gz.uue), sowie
ein Auszug der oben genannten Nachricht von David Mosberger-Tang
(eigentlich ein großer Teil der Nachricht), der beschreibt,
wie der Patch angwendet wird:
Einige Leute haben Probleme mit Profiling unter RH4.1 gemeldet.
Hier ist eine Datei (uuencoded), welche drei modifizierte Objektdateien
beinhaltet. Die md5sum Werte sind:
0854f6609580506aeea2595d7729e27b gmon.po
e2e3cdbace223a162efe90048e0ed661 ieee_get_fp_control.po
8340b52dc581956131e038d3946ba81b ieee_set_fp_control.po
Nachdem diese Dateien ausgepackt worden sind, sollten sie in der
jeweiligen libc_p.a ersetzt werden, zum Beispiel:
ar rv /usr/lib/libc_p.a gmon.po ieee_{s,g}et_fp_control.po
Dananch sollte Profiling wieder funktionieren. Man sollte beachten,
daß gprof des binutils-2.7 einen Bug hat, der manchmal einen
SIGFPE Fehler auslöst. In einer früheren Nachricht von mir
findet man einen Patch für dieses Problem.
Zum Schluß sollte erwähnt werden, daß es noch immer
ein Problem mit Profiling in Verbindung mit dynamischen Binden gibt,
zum Beispiel wird ein Programm, dynamisch gelinkt, durch Hinzufügen
von -lm später mit Segmentation Faults abstürzen. Fürs
erste sollte das -static Flag dieses Problem umgehen, bis ein Lösung
gefunden worden ist.
Viel Glück,
--
Harvey J. Stein
Berger Financial Research
hjstein@bfr.co.il
Patch file
| This website is maintained by Miguel Angel Sepulveda LinuxFocus 1998 |