llvm/tools/gold
Rafael Espindola fffb72470d libLTO has a bug in that it will keep every symbol if none is needed. We used
to hack around this in the gold plugin by deleting a module if no symbol was
needed. Unfortunately, the hack is wrong in the case of o module having no
visible symbols but still having side effects via static constructors.

The bug will have to be fixed in libLTO itself.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166745 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-26 00:29:57 +00:00
..
CMakeLists.txt Use absolute path to exportsfile in gold plugin CMake build. 2011-11-05 04:17:20 +00:00
gold-plugin.cpp libLTO has a bug in that it will keep every symbol if none is needed. We used 2012-10-26 00:29:57 +00:00
gold.exports Create an exports file, so that the plugin only exports the onload symbol. 2010-04-16 00:43:25 +00:00
Makefile Pass -lLTO after gold-plugin.o so that it gets used in systems that default to 2012-08-27 03:03:07 +00:00
README.txt s/libLLVMgold/LLVMgold/g 2010-08-08 21:14:26 +00:00

This directory contains a plugin that is designed to work with binutils
gold linker. At present time, this is not the default linker in
binutils, and the default build of gold does not support plugins.

Obtaining binutils:

  cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src login
  {enter "anoncvs" as the password}
  cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src co binutils

This will create a src/ directory. Make a build/ directory and from
there configure binutils with "../src/configure --enable-gold --enable-plugins".
Then build binutils with "make all-gold".

To build the LLVMgold plugin, configure LLVM with the option
--with-binutils-include=/path/to/binutils/src/include/ --enable-pic. To use the
plugin, run "ld-new --plugin /path/to/LLVMgold.so".
Without PIC libLTO and LLVMgold are not being built (because they would fail
link on x86-64 with a relocation error: PIC and non-PIC can't be combined).
As an alternative to passing --enable-pic, you can use 'make ENABLE_PIC=1' in
your entire LLVM build.