This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.

New ELF linker code added to GNU binutils

From: Ian Lance Taylor <iant at google dot com>

To: binutils at sourceware dot org

Date: Fri, 21 Mar 2008 17:02:13 -0700

Subject: New ELF linker code added to GNU binutils

I have been working on a new ELF linker for some time. With the agreement of the main GNU binutils maintainers, I have just added it to the GNU binutils. The new of the new linker is gold. There are two new directories: src/gold and src/elfcpp. Checking out binutils as usual will pick up the new directories. To build it, configure with --enable-gold. You will then get gold instead of the usual GNU ld. gold is written in C++. It is likely that it only works with gcc version 4.0 or later. I would be happy to apply simple compatibility patches for earlier versions. gold only supports ELF targets such as GNU/Linux and other free operating systems. gold does not support Windows. There is no expectation that gold will ever support anything other than ELF targets. At the moment gold only supports x86 and x86_64 targets. It is designed for portability, and we expect to add support for more targets in the future. At the moment gold has only one significant advantage over the existing linker: it is faster. On large C++ programs, I have measured it as running five times faster. At this time gold should be considered as beta quality software. It has had quite a bit of testing inside Google. However, it has not been widely tested in other environments. For most normal use cases I expect it to work correctly. However, I have been told that it has problems building the Linux kernel, in that a kernel linked with gold does not boot. I hope that people will be able to help identify and resolve this problem. gold does not yet have any internal documentation. I plan to work on that. gold does not yet have a manual. For now the GNU linker manual should be accurate for those features which gold supports--which is to say, many of them but not all of them. I have added gold to the binutils with development history. This will have the odd effect that if you check out the binutils as of a given date you will see gold sources from that date, even for times when gold was not part of the binutils. However, check outs of old release tags will still pick up only the correct sources. I would be happy to receive any feedback. Ian