GNOME 1.0.1/Flagi kompilacji.

Marcin Dalecki dalecki w cs.net.pl
Wto, 9 Mar 1999, 12:57:37 CET


Wczoraj bawilem sie instalacja GNOME-a w domu.

Facyt: Fajne z wyjatkiem manadzera okienek 
en(nigdy nie wiem jak ta raszta)menta. 

Przy okazji zrobilem male odkrycie. Otoz od dawna podejzewalem,
ze flaga kompilacji -fomit-frame-pointer jest rowniez
nieco podejzana.

No i fakt gdm a dokladniej caly proces managowania sesji wali sie
jesli biblioteki X11 i GNOME zostaly skompilowane przy uzyciu 
-fomit-frame-pointer. Przekompilowalem wszystko bez i DZIALA!

A teraz dlaczego sadze, ze domyslne stosowanie -fomit-frame-pointer
jest chybione.

Otoz FP jest wsakznikiem na biezaca ramke parametrow w funkcji.
Jest to decydujaca informacja dla debuggera i relokacji objektow
w bibliotekach wspoldzielonych. Jak wiemy GCC rowniez pozwala na
zagniezdzanie funkcji. Jesli wiec takiego rodzaju funkcje wystepuja,
to nie dzialaja one poprawnie z -fomit-frame-pointer. Jestem niemal
pewny, za gdzies tam one wlasie wystepuja.

Tak wiec -fomit-frame-pointer jako ustawienie domyslne stwarza 
nastepujace problemy:

1. Eliminuje mozliwosc stosowania debuggera. Domyslnie na blibotekach
jest to bardzo zlym pomyslem. 

2. Eliminuje mozliwosc poprawnego zagniezdzania funkcji. Mozliwosc ta
jest
napewno stosowana w glibc i raczej napewno w GNOM-ie.

3. Kluci sie rowniez najwyrazniej z virtualnymi funkcjami w C++.

Tak wiec -fomit-frame-pointer jest cacy ale tylko dla pojedynczych
programow
w czystym C jako flaga domyslna kompilatora nie ma nic do szukania,
chocby dlatego, ze skutki zastosowania tegoz sa zbyt subtelne i
globalne.
Wlasciwie to dziwilem sie dlaczego mi wiele bibliotek wspoldzielonych 
kompilowanych z -fomit-frame-pointer w ogole dzialalo. Prawdopodobnie
kompilator przy -fpic lub -fPIC to domyslnie wylacza. Ale nie
marudzilem,
dopuki nie wystepowaly konkretne problemy.

Flagami jakie wiec pozostaja jako JEDYNA mozaliwa domyslna poprawna
wartosc
sa wiec:

				-O2 -mpentium

				I TO WSZYSTKO!

Wszelkie inne predzej czy pozniej stwarzaly mi jakies problemy natury
mniej lub bardziej "ezoterycznej".

Nawet -mpentium jest zbedne, albowiem, jesli podamy jako host
dla egcs-a -i586-linux zamiast -i386-linux to bedzie to wartoscia
domyslna 
kompilatora.

Jeszcze drobnostka. Jesli nastawie sobie otocznie LANG itp. na Polish,
to X11 nie definiuje paru kolorow (np. red itp.) Widac to jak byk np. w
orginalnym xterm i gvim-ie. Moze ktos wie czemu?

Ponadto wciaz brakuje sporo zeczy w CVS-ie. np. rc-scrypts i
sh-utils jakos sie nie pojawiaja, 

--Marcin



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