Gentoo Archives: gentoo-user

From: Richard Fish <bigfish@××××××××××.org>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] gcc-4.1.1
Date: Thu, 08 Jun 2006 04:31:05
Message-Id: 7573e9640606072124u3bb8c439ue9a0053b7d1b6b46@mail.gmail.com
In Reply to: RE: [gentoo-user] gcc-4.1.1 by Bob Young
1 On 6/7/06, Bob Young <BYoung@××××××××××.com> wrote:
2 > chain. At the end of the first emerge -e system you may have a new compiler,
3 > but that new compiler was built with the old compiler.
4
5 This is false. Gcc uses itself to build itself. It uses the system
6 compiler to build an initial version of itself, and then uses that
7 version to build itself. And then for good measure, it uses that
8 version to build the final version. It's called a 3-stage bootstrap,
9 and is documented in the file INSTALL/build.html in the gcc sources.
10 You can also look at /usr/portage/eclass/toolchain.eclass to determine
11 that Gentoo uses the "bootstrap-lean" target by default.
12
13 Frankly, anybody who claims that gcc needs to be merged twice so it
14 can be built with itself and produce better object code does not have
15 a clue what they are talking about and you should simply disregard
16 anything else they have to say about what is necessary/useful when
17 upgrading gcc.
18
19 > happen before glibc is rebuilt are linked against a glibc that was built
20 > with the old compiler.
21
22 And guess what difference this makes to the end result. None. Nada. Nothing.
23
24 Because for basically every program on your system, they are
25 *dynamically linked* against glibc. This means that you can recompile
26 glibc with different CFLAGS, a different compiler version, whatever,
27 and they will *never notice*. Well, unless you use broken CFLAGS or a
28 broken compiler, but no amount of "emerge -e world" can help you then.
29
30 There are a few statically linked programs that will include glibc
31 internally. These are used only for system recovery purposes...there
32 is no need to worry about them at all.
33
34 Again, *anybody* who claims that the end result of a compile depends
35 upon what version of glibc you have installed, much less what CFLAGS
36 or compiler glibc was built with, does not know what they are talking
37 about.
38
39 > for most people. This page: http://forums.gentoo.org/viewtopic-t-345229.html
40 > is about doing an install, but it shows how to update a subset of the entire
41 > tool chain. Note that the article does in the end, do a double emerge -e
42 > system, so the the value of updating a toolchain subset is questionable for
43 > the article's purposes.
44
45 Any article, on the forums or anywhere else, that claims some speed
46 benefit resulting from doing emerge -e world twice is wrong.
47
48 >
49 > In short:
50 >
51 > emerge gcc-config glibc binutils libstdc++-v3 gcc
52 > emerge gcc-config glibc binutils libstdc++-v3 gcc
53 > emerge -e world
54
55 There is no value to having glibc or libstdc++-v3 in the first line.
56 There is no value at all to doing that twice.
57
58 Also, libstdc++-v3 is only needed by a few binary-only programs on
59 Gentoo. Moreover, it is simply a build of gcc-3.3.6, which as I
60 already said uses itself to build itself, so I cannot see any point in
61 ever re-merging libstdc++-v3 due to a gcc upgrade, much less doing
62 that 3 or 4 times!
63
64 > To be clear, in order to make sure absolutely everything is updated and the
65 > libraries that are linked against are also updated prior to use, the two
66 > emerge -e system commands, are the definitive solution. For those who don't
67 > want to spend many extra hours of compile time, in order to gain a 0.5%
68 > increase in performance, the above is offered for consideration.
69
70 No, there will not even be a 0.5% increase in performance. Not even
71 0.1%. Not even 0.000000000.....000001%.
72
73 -Richard
74 --
75 gentoo-user@g.o mailing list

Replies

Subject Author
RE: [gentoo-user] gcc-4.1.1 Bob Young <BYoung@××××××××××.com>