Closed Bug 158385 Opened 22 years ago Closed 21 years ago

switch all linux mozilla builds to gcc 3.2

Categories

(SeaMonkey :: Build Config, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: dmosedale, Assigned: leaf)

References

Details

We want this largely so that we can then turn on -O2, which isn't possible with our current compilers (egcs 1.1.2). There are a number of issues which need to be solved before this can happens; those bugs will be marked as blocking this one.
Depends on: 116444
Depends on: 158387
Depends on: 158391
.
Assignee: seawood → dmose
FYI gcc-3.2 has a (Yet Another) ABI change, making c++ code compiled with it incompatible on earliere gcc compilers.
It's important to note that I don't think there are any major Linux vendors who are going to end up shipping gcc 3.1 or gcc 3.0. Did anyone ship 3.0?
Mandrake 9.0 beta ships with gcc 3.1 and all system compiled with it. So Mandrake 9 will ship with probably with gcc 3.2 as it will contains c++ abi fixes and probably Suse & Redhat will follow.
The last Red Hat beta from a few days ago is shipping with a 3.2 pre-release with the ABI changes and most of the C++ changes.
Mandrake 9.0 beta 2 has already switched to gcc 3.2 pre-release and final Mdk 9.0 will ship with gcc 3.2 final.. All linux distros (and even FreeBSD) have agreed to use gcc 3.2 to ensure C++ ABI is conformed to the V3 multi-vendor standard.
Well some distros like my Slackware Linux wont upgrade to gcc 3.2 unless Linus says "Gcc 3.2 is kernel compiler now" . So I think its a better idea to provide gcc 2.95.3 compiled mozillas.
Depends on: 107976
I don't think this legitimately depends on 107976. Just make sure "gcc" points to gcc 3.2 and you don't need support for overriding the compiler coreconf uses.
Blocks: O2
Beware http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=168134 which reports a Mozilla ICE w/ gcc 3.2.
Besides the fact that the compiler used in that bug is not gcc-3.2... (hint: debian calls the executable g++-3.2)
g++ is a part of gcc. But, yes, it is a snapshot... and apparently newer snapshots fixed it. So that is no longer a problem.
Debian's default compiler for all its binaries is gcc-3.2. gcc-2.95 is quickly becoming obsolete. Besides there's the issue of the loose of performance (the GCC team claims gcc-3.2 produces 10% faster code, can we add another 10% of not being able to use full optimization?). Sorry for the spam. =)
FreeBSD-CURRENT's default compiler is: $ gcc -v Using built-in specs. Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 3.2.1 [FreeBSD] 20021119 (release) and Mozilla works great (built from scratch)
Debian sid now contains Mozilla 1.2.1 compiled with gcc/g++ 3.2.
FWIW, the brad tinderbox Z value went down 311K (over two steps, for some odd reason - possibly the compiler was updated half way through) when it was upgraded to 3.3 (well, the debian 3.3 prerelease) It also now produces 40000 warnings, but thats using a non-default warning flag warning about a gcc ABI bug, and theres a bug on that to work arround the issue. Random loser was js_interpret @+3.8K; random winner was nsIndexedToHTML::OnStartRequest @-0.9K. js_Interpret looks like loop unrolling of some sort, or possibly inlining; there are a lot of changes and its hard to work out what is happening. The nsIndexedToHTML change is coming from lots of little places, it appears. It also looks like the compiler is skipping some virtual call overhead; I see: - movl _ZTV24nsASingleFragmentCString@GOT(%ebx), %ecx - addl $8, %ecx - movl %eax, -1064(%ebp) - movl %eax, -88(%ebp) + leal -104(%ebp), %eax + movl _ZTV18nsDependentCString@GOT(%ebx), %esi + addl $8, %esi + movl %eax, -1172(%ebp) I can't seem to match that chunk to a source code line to see exactly what is happening, though.
Java plugin 1.4.2 will work correctly with Mozilla, for more information see this Java bugParade bug: <http://developer.java.sun.com/developer/bugParade/bugs/4687814.html> Choice quote from that bug: "FRI JUN 07 12:48 P.M. 2002 steven_m_katz No it is a Mozilla issue in that Mozilla's answer to compatability of the plugin interface has always been, "Those interfaces arn't final until the product ships and we can and do change them at will". They are perfectly within their right to say this, but it makes support of Mozilla impossible given the long lead times inherent in the release of the JRE/plugin. Maybe that situation will change now that 1.0 has shipped. To further complicate matters, Netscape shipped product based on these changable interfaces. Since the two browsers are not compatable and we don't have the resources to support each version of Netscape and every version of pre-release Mozilla, we had to make a choice. That choice was to support the released product (ie Netscape). The most current verison of Mozilla's plugin interface is definitly a step in the right direction. It eliminates the use of static C++ symbols which should make the choice of compiler a non-issue. So what Sun is saying when it says they don't support Mozilla is: "We expect the two browsers, Netscape and Mozilla, to provide bug for bug compatable plugin interfaces. To the extent that they don't we will choses to support Netscape." I urge the user community to push both Netscape and Mozilla to keep their plugin intefaces in sync."
But the comment quoted in comment #16 was entered on June 7, 2002--over a year ago. The "evaluation" section of the Java bug has the following annotation, entered in March 2003: We need to build two version of OJI plugin due to SuSe8.1 release which ships the 3.2 compiled Mozilla. Didn't Red Hat and Sun recently enter a partnership whereby Red Hat will distribute Sun's JDK? If so, this problem must be on Sun's radar screen.
Thought I'd point out that sometime recently, this sort of happened (though this is just one build, and not sure it pertains to all the builds we spin). I just downloaded Mozilla build 2003062805 and my about:buildconfig says: Build platform target i686-pc-linux-gnu Build tools Compiler Version Compiler flags gcc gcc version 3.2.3 -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -pedantic -Wno-long-long -g -pthread -pipe c++ gcc version 3.2.3 -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -pedantic -Wno-long-long -g -fshort-wchar -pthread -pipe -I/usr/X11R6/include Configure arguments --disable-tests --enable-extensions=default,irc --without-system-nspr --without-system-jpeg --without-system-zlib --without-system-png --without-system-mng --disable-debug --enable-optimize --disable-elf-dynstr-gc --enable-crypto
The default builds have indeed changed, thanks to leaf's hard work. This means we can now switch them to -O2. Woot!
Assignee: dmose → leaf
Fixed.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.