linux-l: compiler aerger

Winfried Winkler willi at Hobbit.IN-Berlin.De
Mo Apr 2 23:32:19 CEST 2001


JSC wrote:
> 
> hat irgendjemand sachdienliche hinweise? die politik von
> gcc und egcs ist mir nicht klar. ist der egcs-1.1.2 jetzt
> wirklich aelter als gcc-2.91. wenn ja, gilt gcc 2.91 als
> stabil? hilfe!
> 
> gruss
> Jens
> 
> PS: ja ich weiss, dass:
> * kernel 2.4.3 draussen ist
> * redhat bescheuert ist
> * gcc 2.96 nicht als release gehandelt wird
> * x-linux sowieso besser ist und nur noch von y-linux geschlagen
>   wird
> ich weiss aber auch, dass dies auch sachlich als reine compiler
> diskussion verstanden werden kann. wenn man will.

:-)

grob vereinfacht zusammengefasst...:
am gcc wurde anscheinend "nicht mehr viel gemacht"...
ungeduldige fanden sich zusammen und eroeffneten (code-fork) egcs
um aktuelle patches und erweiterungen fuer neuere cpu einzubringen
ein weiterer patch davon ist der pgcc (pentium-optimized) gcc.
nachdem in der fsgs die ganze sache genug aerger und machtworte 
einer sattsam bekannten galleonsfigur :-) heraufbeschworen hatte,
wurde der code vom egcs quasi "zum offiziellen" erklaert und von
cygnus komplett mit in die basis des gcc-3.0 (unstable/development)
uebernommen...
gcc 3.0 wird hoffentlich noch dieses jahr kommen und dann gibts
diese fragerei nicht mehr :-)

gcc-2.96 ist angeblich auf linkage level inkompatibel, d.h. wenn
libs kompiliert mit anderen gcc-versionen und programme kompiliert
mit gcc-2.96 oder umgekehrt verwendet werden schreit das nach aerger
so habs ichs mal irgendwo aufgeschnappt -- keine eigenen erfahrungen
damit (wozu risiken eingehen).

das problem des kernels im besonderen ist nun weniger, dass einzelne
versionen des gcc mehr oder weniger "stable" sind, sondern dass an
diversen stellen mit hand-verfasstem assembler code um ganz bestimmte
probleme in ganz bestimmten gcc versionen "drum herum" programmiert
wurde und dass um optimale effizienz/laufzeitverhalten zu erzielen,
an einigen stellen dem optimiser vom gcc "bestimmte vorlagen" gegeben
wurden.... so weit allgemein und verstaendlich (hoffentlich richtig)?  
:-)
neuere versionen optimierten nun aber anders, hatten strengere und/oder
andere syntax checks usw usw. und liefern dann einfach mit diesen
"drum herum programmier" konstrukten logischerweise nicht mehr dieselben
gewuenschten resultate...

der 2.4 kernel ist hierbei nach aussagen von leuten die's wissen sollten
bei weitem nicht mehr so anfaellig (d.h. viele dieser "kruecken" wurden
ausgebaut und durch "sauberere" konstrukte ersetzt, insges. wohl sowieso
mehr c weniger assembler aus portabilitaetsgruenden / mehr
architekturen)

ich kann nur auf die kommentare von alan cox verweisen, der seine -ac
kernel patches mit gcc 2.95.2 baut oder mit dem egcs 1.2.x.
zumindest sind das die beiden einzigen namentlich erwaehnten compiler
in seinen changelogs/kommentaren.
vom gcc-2.96 raet er definitiv grundsaetzlich ab.
den von dir erwaehnten gcc 2.91 hab ich selber nie gesehen/benutzt.
ich hatte hier auf meiner kiste immer nur den 2.95.x (und den 2.7.2
zum 2.2.x kernel bauen). den egcs/pgcc hab ich auch vorher nur fuer
einzelne utilities wo's mir drauf ankam (gzip/bzip2 z.b.) genommen,
aus sicherheitsgruenden nie fuer den kernel.

ansonsten sag doch mal einer was dazu der von den gcc interna mehr
ahnung hat als ich :-)

gruesse,
  winfried



Mehr Informationen über die Mailingliste linux-l