Talk:Upgrading GCC

FUD
Hrm. I don't think using "FUD" to describe the previous version of this page is very chummy. I'm going to change it. Also, the references to "rebuilding everything" on the old page were for *complete assurance* of compatibility, not FUD or otherwise due to a lack of understanding. Can this page now guarantee this for those who follow the present version? --NightMonkey (talk) 22:35, 28 January 2015 (UTC)


 * Sure, why don't you.--jer (talk) 11:59, 29 January 2015 (UTC)


 * I actually fixed this issue. Looks like NightMonkey never clarified the acronym. --Maffblaster (talk) 23:01, 15 December 2016 (UTC)

Do we need to escape the periods?
The code currently suggests to escape the periods, like so:

The command works just fine without this. Wouldn't it be much user friendlier to keep it as such then?

--SwifT (talk) 18:33, 11 August 2015 (UTC)


 * --library can be a regular expression, so I escaped dot to avoid ambiguity, but yes, the version without escape characters is equivalent to the escaped version. I'm going to remove the dot to cure the Leaning Toothpick Syndrome in the code. Biergaizi (talk)

--Ormaaj (talk) 11:01, 12 August 2015 (UTC)
 * I left in the dot escapes because the manual says it interprets the argument as a BRE unless it's a full path to a library. Ideally there would be a better way to obtain the soname from the current gcc configuration using scanelf perhaps.
 * If it's a regular expression, then shouldn't it be ? - dcljr (talk) 16:18, 15 August 2016 (UTC)

C++11 and revdep-rebuild
Under "The special case C++11 (and C++14)", this article states:
 * "GCC only makes C++11 ABI stability guarantees beginning with version 5.1. This means that switching (even minor) versions of gcc (say from 4.7.3 -> 4.7.4) might cause ABI breakage for binaries built from C++11 code."

And then it links to a handful of sources targeted to audiences of developers. It doesn't actually say in that section what the Gentoo user should do to avoid problems related to C++11.

Now, earlier in the article, under "ABI changes", it says:
 * "''If you are upgrading to GCC 4.1, or GCC 5.1, you would probably encounter ABI issues. This is also why we use the revdep-rebuild command against the libstdc++.so.5 (from GCC 3 to GCC 4.1), or libstdc++.so.6 (from GCC 4 to GCC 5.1)."

OK, but what about for changes from, say, 4.7.3 to 4.7.4 (as alluded to in the above quote), or any other 4.x to 4.y? Unless I'm more confused about this than I thought, this should also be handled with:

Right? Can someone who knows please make this more clear in the "special case C++11" section?

Also, is it crucial to do this rebuilding immediately after the switch of GCC versions? Or just when any C++11-based package has to be built (IOW, if you do any C++11's, do all of them)? Does it matter if/when you restart services (say, X)? Just curious… - dcljr (talk) 16:23, 15 August 2016 (UTC)

In the list of packages that are known to need rebuilding should we add: dev-libs/leveldb I don't know if that's appropriate or not, but I had that problem and I've seen others in the forums have the same/similar problem: https://forums.gentoo.org/viewtopic-t-1065516-start-0-postdays-0-postorder-asc-highlight-.html https://forums.gentoo.org/viewtopic-t-1056646-highlight-leveldb.html https://forums.gentoo.org/viewtopic-t-1057232-highlight-leveldb.html Seems to be a problem between a GCC version 5 upgrade and a qtwebkit upgrade. I don't understand more than that so far. Thanks! Aries97 (talk) 19:13, 8 July 2017 (UTC)

MUST rebuild
The following statement is questionable:


 * To be completely sure that your system is in a sane state, you must rebuild the toolchain and then world to make use of the new compiler.

I certainly don't believe it is always necessary and I have never done such instructions except when I tried a hardened toolchain once. If there is major changes, there should be a GLEP news announcement (such as the proposed PIE change).

I would like to see what would say to this as well. --Grknight (talk) 20:54, 4 August 2017 (UTC)

My comment on the rebuild-all strategy: It takes very long to find out manually which packages need to be compiled. Then find out which were missed. The fast and safe way is to rebuild all on a modern computer. Bugzilla gets flooded during gcc upgrades and 99% of the problems could be solved with the complete rebuild. In an ideal world we would have of course a package manager which can handle this and rebuilds on demand.--Jonasstein (talk) 19:30, 8 August 2017 (UTC)