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

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 00 of 10] Add support for using gold instead of ld, v2


Hello All!

This patchset is a tentative at using gold in place of ld with recent
binutils (2.21 at least) and gcc (4.5.0 at least).

Enabling gold on binutils 2.20 and 2.20.1 makes the code more complex,
as the configure options have changed; so only 2.21 upward are expected
to build gold; this makes things easier, code-wise.

Interaction between gcc and binutils really makes sense when using LTO,
as in this case gcc install the lto-plugin used by gold. As LTO is only
available since gcc-4.5, only those versions are impacted.

Note that it is possible to build gold, for any version of gcc used.
In this case, there is no gain to configure gcc to be aware that gold
is being used (AFAIK).

Currently, glibc can not be built with gold (fails on the ld version
check), and uClibc builds fine with a minor edit in the linker flags
(which is already applied upstream).

Basically, the patch series adds support for building gold or ld or
both, and in the latter case, set which is the default. It also adds
a (shell) wrapper that can override the default at runtime. For gcc,
it makes gcc>=4.5 also buld and install the lto-plugin. There are also
a few ancilliary patches, of which updating a sample enabling gold and
lto-plugin.

Shortlog:
 complibs/libelf: build with -fPIC
 binutils/binutils: add BINUTILS_2_21_or_later blind option
 binutils/binutils: add option to enable gold
 binutils/binutils: add support for gold plugins
 binutils/binutils: add support for threaded gold
 binutils/binutils: add wrapper to gold and ld
 cc/gcc: build lto-plugin if binutils' gold is built
 samples: update i686-nptl-linux-gnu
 cc/gcc: fix building of ecjx
 samples: update i686-nptl-linux-gnu

Diffstat:
 b/config/binutils/binutils.in                  |  111   111     0     0 +++++++++++++++++++++++++
 b/patches/gcc/4.5.0/100-ecjx-host.patch        |   13    13     0     0 +++
 b/patches/gcc/4.5.1/100-ecjx-host.patch        |   13    13     0     0 +++
 b/patches/gcc/4.5.2/100-ecjx-host.patch        |   13    13     0     0 +++
 b/samples/i686-nptl-linux-gnu/crosstool.config |   96    69    27     0 ++++++++++++++++------
 b/scripts/build/binutils/binutils-ld.in        |   11    11     0     0 ++
 b/scripts/build/binutils/binutils.sh           |   44    43     1     0 ++++++++++
 b/scripts/build/cc/gcc.sh                      |   10    10     0     0 ++
 b/scripts/build/companion_libs/libelf.sh       |    2     2     0     0 +
 9 files changed, 285 insertions(+), 28 deletions(-)

TODO:
- add a C wrapper, for systems which may lack a shell (eg. mingw)
- _maybe_ backport uClibc patch to make it build with gold

Thank you to Arnaud and Bryan for their help and comments!

Regards,
Yann E. MORIN.

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]