GoldTransition

From FedoraProject

Jump to: navigation, search

Ian Taylor from Google has created a replacement for the GNU linker called Gold. The stated goal of Gold is to dramatically improve link times for large C++ applications. Reports of 5X improvement in link times for large (say 800M) C++ applications have been reported.

This page is meant to document our transition plan to replace the old gnu linker with Gold.

Gold's initial announcement: http://sourceware.org/ml/binutils/2008-03/msg00162.html

Incompatibilities between GNU ld and Gold: GoldIncompatibilities

Feature tracking page for the --no-add-needed change to GNU-LD for Fedora 13 which makes GNU LD and Gold compatible in how they handle symbol resolution Features/ChangeInImplicitDSOLinking.

Fedora 13's binutils has the --enable-gold=both patch which allows installation of both the GNU LD and Gold linker at the same time and is selectable via the alternatives mechanism.


The first project is to identify and fix packages relying on the old linker's incorrect symbol resolution. We plan to disable the incorrect symbol resolution (by adding "--no-add-needed" to GCC's link_spec or changing the old linker's default behavior), then run a full build of the Fedora packages. That will identify packages directly relying on the incorrect behavior and allow maintainers to fix those packages.

It may also be necessary to compare package build logs before/after that change to detect any cases where autoconf was relying on this broken behavior and is now generating sub-optimal configurations.


Note that in addition to potentially improving link times, Gold is also used by other desirable projects such as LTO (link-time-optimization) and will probably be required for incremental linking (see http://permalink.gmane.org/gmane.comp.gnu.binutils/39444)