gcc na athlonie (było: gcc i qt na alphie...)

Jakub Bogusz qboosh w pld.org.pl
Nie, 3 Lis 2002, 00:50:40 CET


On Sat, Oct 26, 2002 at 04:27:27PM +0200, Jakub Bogusz wrote:
> Zobaczymy co wyjdzie z finalnego gcc 3.2.1 (jeszcze trochę błędów chcą
> popoprawiać przed wypuszczeniem).
> Na razie na x86 mam problemy z jednym pakietem (djvulibre
> z "-O2 -march=athlon" segfaultuje, z innymi optymalizacjami jest OK).

Z 3.2.1-pre to samo.
(chociaż może to wynika ze źle skompilowanego qt? tamto było jeszcze
3.2-5)

Trochę się temu przyjrzałem - błąd jest bardzo dziwny.
Z coredumpa nic nie wynika, bo eip=0.
Przez śledzenie doszedłem do tego, że program wywołuje konstruktor
QImage, a w nim (czyli wewnątrz qt!) próbuje wywołać jakąś funkcję
biblioteczną, przechodzi przez kilka skoków pośrednich (jak to zwykle
przy nowych funkcjach linkowanych dynamicznie), ale po którymś z kolei
zamiast trafiać do lookup_symbol (czy jak to się nazywa) skacze pod 0.

No i nie wiem co o tym sądzić, bo:
- błędne wywołanie jest wewnątrz qt
- wywołanie QImage::QImage(int,int,int,int,Endian) jest w kodzie djview
  - występowanie błędu nie zależy od tego, czy samo djview było
  kompilowane z -march=i686 czy -march=athlon
- występowanie błędu zależy od tego, czy libdjvulibre.so była
  kompilowana z -march=i686 (jest OK) czy -march=athlon (SEGV); sama
  libdjvulibre.so w ogóle nie odwołuje się do qt

Jakieś pomysły? Nawet nie mam jak zgłosić buga.


Jak ktoś chce więcej takich zagadek, to mogę opowiedzieć jeszcze
o librhtv+powertweak[1] ;)

[1] jedyny program jaki miałem, którego nie przekonałem jeszcze do gcc
3.2. Zawiera nieco zmodyfikowaną starszą wersję librhtv (paskudne to,
kompletnie nie gotowe na gcc3); mamy librhtv.spec z nowszą wersją
(paskudne jeszcze bardziej, ale gotowe na gcc 3.0.x; do 3.[12] wymagało
jeszcze paru poprawek - kompiluje się już, ciekawe czy działa, bo nie
mam na czym sprawdzić) - ale razem to działać nijak nie chce, są tylko
dziwne SEGV (przy gcc 2.95.4 i 3.2, więc to nie problem kompilatora).

Aha, dla masochistów jest jeszcze tvision.spec, zawierający inaczej
zmodyfikowaną wersję Turbo Vision 2.0 - tak samo niegotową na gcc3.


-- 
Jakub Bogusz    http://www.cs.net.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl