From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Current status)
(deferred by FESCo and owner is not working on it)
Line 12: Line 12:
== Current status ==
== Current status ==
* Targeted release: [[Releases/15 | Fedora 15 ]]  
* Targeted release: [[Releases/?? | Fedora ?? ]]  
* Last updated: July 7, 2010
* Last updated: July 7, 2010
* Percentage of completion: 70%
* Percentage of completion: 70%
Line 60: Line 60:

Latest revision as of 01:10, 27 October 2010


[edit] Features/GoldLinkerDefault

[edit] Summary

Gold is a replacement for the aging gnu linker (gld) created by Ian Taylor and was integrated into binutils-2.18.

[edit] Owner

  • Email: <law@redhat.com>

[edit] Current status

  • Targeted release: Fedora ??
  • Last updated: July 7, 2010
  • Percentage of completion: 70%

[edit] Detailed Description

Gold was included as an alternative for gnu-ld in Fedora 13. For Fedora 14, I think we should seriously consider making Gold the default linker for everything except glibc and the kernel. We would continue to use gnu-ld for glibc, the kernel and gnu-ld would be available as an alternative for gold.

[edit] Benefit to Fedora

Gold is more efficient than gnu-ld, particularly for large C++ applications. There have been reports of 5x improvements for applications with link sizes on the order of 800M. Gold is also useful for GCC's link-time-optimizations and will likely be a required for incremental linking in the future.

[edit] Scope

First, glibc & the kernel need to explicitly run "ld.bfd" rather than "ld" so ensure they continue to use the old gnu-ld rather than gold.

Second, the default linker should be switched from ld.bfd (gnu-ld) to gold.

Third, rebuild everything. In theory, any compatibility issues between gold and gnu-ld were addressed during the Fedora 13 cycle. But a mass rebuild should be run as soon as possible to weed out any new problems.

[edit] How To Test

We need testing for each of the platforms supported by Fedora (x86, x86_64, etc).

First gold has a testsuite which should successfully run during building of the binutils RPMs.

To test an existing (Fedora 13 or rawhide) system, first switch to gold as the system linker. "/usr/sbin/alternatives --set ld /usr/bin/ld.gold". Then continue development as normal. If all is working correctly, you should see no change in behaviour, particularly during linking of applications or execution of applications.

A more thorough test would be a mass rebuild of all the Fedora packages before/after switching the default to gold. Any packages that build with gnu-ld (ld.bfd) but fail to build with gold would need to be investigated. I believe this test was performed for Fedora 13 and packages were fixed accordingly. However, re-testing everything for Fedora 14 as soon as possible would be wise.

[edit] User Experience

The only user-visible change should be link times improve, particularly for very large applications.

[edit] Dependencies

All architecture specific RPMs ultimately depend on the linker, just like they depend on the compiler & assembler.

The major dependencies are getting the glibc & kernel packages to call the old linker explicitly (ld.bfd) as those packages use linker-script features not available in gold. In theory the rest of the Fedora packages are already "gold ready".

[edit] Contingency Plan

None necessary, we can simply continue to use the gnu-ld linker instead of gold.

[edit] Documentation

Included in the binutils package.

[edit] Release Notes

Using gold instead of gnu-ld as the default linker can cause some applications to fail to link if those applications depend on the incorrect behaviour of gnu-ld with respect to symbol resolution in indirect shared libraries. See https://fedoraproject.org/wiki/GoldIncompatibilities.

[edit] Comments and Discussion