Link temporary shared objects with `--no-as-needed`
authorPeter Trommler <ptrommler@acm.org>
Sat, 14 Mar 2015 08:05:41 +0000 (09:05 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 14 Mar 2015 08:05:47 +0000 (09:05 +0100)
commit1b7f59769052fd8193c6acc561216e070d0ca335
treea152d77a8424300a77a1c933d8f4dd8912d226d1
parentcc07a0ba64b554ffd1ff85757b02cd79d30ed57a
Link temporary shared objects with `--no-as-needed`

Some ELF link editors default to `--as-needed` and record only
those libraries in DT_NEEDED tags that are needed to resolve
undefined symbols in the shared object to be created.

In Template Haskell we rely on all symbols that were defined
in modules compiled so far to be available in the current
temporary shared object. To prevent the link editor from
dropping the DT_NEEDED tag for the previously linked temporary
shared object we need to override the link editors default and
specify `--no-as-needed` on the command line. This is for GNU ld
and GOLD ld.

This addresses #10110

TODO: regression test

Reviewed By: hvr

Differential Revision: https://phabricator.haskell.org/D731
compiler/main/SysTools.hs