On 2019-01-24 14:45, Florian Weimer wrote:
* Magnus Ihse Bursie:

The default binutils linker used by gcc, the bfd linker, is slow. The
new replacement, gold, has been distributed alongside gcc for several
years now, and is a well mature, and much faster, replacement.
The gold linker is an optional component of binutils, not available in
all builds.  For example, binutils in Red Hat Enterprise Linux 7.6 does
not include gold on the ppc64le architecture.

The gold linker also supports a different set of features compared to
BFD ld, which may or may not be what you want.  But I think OpenJDK does
not use many tricky ELF features, so the differences probably do not
matter.

Is it possible to add -fuse-ld=gold to LDFLAGS externally, outside the
build system, so that the build system can use the gold linker if people
prefer it over BFD ld?

Or you could configure your binutils with --enable-gold=default, so that
it defaults to ld.gold, again not requiring any OpenJDK changes.
One of the driving forces behind this bug is the speed increase in gold by itself. You are correct that to achieve this, a solution outside the build system can be used.

However, the other driving force is the ability to enable incremental linking. The build system must know if we use gold, so that it knows that those command line options are available. So to resort to the solution of changing the environment would not enable that second part.

But I'm leaning more towards just enabling gold on x86_64 -- for other platforms, we might as well keep the good ol' bfd linker. Does that sound like a good solution to you?

/Magnus


Thanks,
Florian

Reply via email to