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"Patch fileTo: 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
This website is maintained by Miguel Angel Sepulveda LinuxFocus 1998 |