On Fri, 25 May 2007, Daniel Jacobowitz wrote: > On Fri, May 25, 2007 at 05:37:49PM +0200, Eric Botcazou wrote: > > > I honestly don't know how to answer this question. Bootstrapping is an > > > unrelated problem, and the compiler is not a vital runtime component > > > of the system, so its dependencies do not need to be exceptionally > > > robust in the way that glibc's or even libstdc++'s do. > > > > A compiler is a "second order" thing though: its ill behaviour sends ripples > > through all the stuff it compiles. Suppose that an MPFR upgrade introduces > > a > > bug in the library and that the compiler is affected; every single program > > compiled from now on will be potentially affected by the MPFR bug, even if > > it > > has nothing to do with MPFR. > > That just means that it's an application you care about. And now an > upgrade of MPFR which fixes bugs will require you to rebuild the > compiler. > > We could go around this in circles forever; I think that the tradeoffs > are exactly the same as for any other application on your system, both > pro and con.
I agree. There are pros & cons and reasonable people can arrive at different conclusions about whether to link cc1 shared or static. If we had a way to specify it via a configure option that would let each person decide for themselves. So perhaps having a flag is a good idea. I don't have an opinion on what the default should be, and I hope we can avoid a flame war over that. :-) However there are two existing options in the mean time: One is build/install gmp/mpfr yourself and specify --disable-shared to both. Then use --with-mpfr= to specify using them instead of the system's shared versions. The second is to drop gmp/mpfr into the top level directory and let the bootstrap process build them. This will automatically do --disable-shared and not install these libraries, IIRC. CLEARLY, these aren't as easy as a configure option, but should work for people building their own compiler distributions. If we decide to add a top level configure option I believe that honoring it would require using libtool to link cc1 et al. I'm not fluent in libtool at all and so I'm not confortable enough to propose a patch. --Kaveh PS: A related problem with shared libraries is that currently all binaries (xgcc, collect2, cpp, gcov, etc) are linked with gmp/mpfr, whereas only cc1 etc (stuff containing libbackend.a) really needs to be. It's probably harmless, but may add a few microseconds of unnecessary startup time. -- Kaveh R. Ghazi [EMAIL PROTECTED]