[commit: ghc] master: Detect linker information at runtime. Fixes Trac #6063 (71a194d)

Austin Seipp mad.one at gmail.com
Mon Jun 17 03:06:58 CEST 2013


Repository : http://darcs.haskell.org/ghc.git/

On branch  : master

https://github.com/ghc/ghc/commit/71a194d8ca2efd075a5c000be0b378c8706ca0b3

>---------------------------------------------------------------

commit 71a194d8ca2efd075a5c000be0b378c8706ca0b3
Author: Austin Seipp <aseipp at pobox.com>
Date:   Sat May 4 16:07:22 2013 -0500

    Detect linker information at runtime. Fixes Trac #6063
    
    Previously, we did ./configure time checks to see if 'GNU ld' supported
    certain options. If it does, we bake those options into the link step.
    See Trac #5240.
    
    Unfortunately, the linker we use at runtime can change for several
    reasons. One is that the user specifies -pgml 'foo'. The other is if
    /usr/bin/ld or whatnot changes from when GHC was built.  Those options
    mentioned earlier are specific to GNU ld, but many systems support GNU
    gold too. This is Trac #6063.
    
    So we need to check at runtime what linker we're using. This is actually
    a little bit complicated because we normally use the C compiler as our
    linker. Windows and OS X are also special here.
    
    Finally, this patch also unconditionally gives '--hash-size=31' and
    '--reduce-memory-overheads' to the system linker if it's GNU ld. These
    options have been supported for 8+ years from what I can see, and there
    are probably a lot of other reasons why GHC would not work with such an
    ancient binutils, all things considered.
    
    See Note [Run-time linker info] in SysTools for details. There are
    plenty of comments as well in the surrounding code.
    
    Signed-off-by: Austin Seipp <aseipp at pobox.com>

 aclocal.m4                 |  33 -------------
 compiler/main/DynFlags.hs  |  26 ++++++++--
 compiler/main/SysTools.lhs | 115 ++++++++++++++++++++++++++++++++++++++++++++-
 configure.ac               |   2 -
 distrib/configure.ac.in    |   2 -
 5 files changed, 136 insertions(+), 42 deletions(-)


Diff suppressed because of size. To see it, use:

    git show 71a194d8ca2efd075a5c000be0b378c8706ca0b3



More information about the ghc-commits mailing list