[GHC] #9875: ld -l:filename.dylib does not appear to be portable

GHC ghc-devs at haskell.org
Wed Dec 10 02:00:13 UTC 2014


#9875: ld -l:filename.dylib does not appear to be portable
-------------------------------------+------------------------------------
              Reporter:  ezyang      |            Owner:
                  Type:  bug         |           Status:  new
              Priority:  high        |        Milestone:  7.10.1
             Component:  GHCi        |          Version:  7.9
            Resolution:              |         Keywords:
      Operating System:  MacOS X     |     Architecture:  Unknown/Multiple
       Type of failure:  GHCi crash  |       Difficulty:  Unknown
             Test Case:  T2276_ghci  |       Blocked By:
              Blocking:              |  Related Tickets:
Differential Revisions:              |
-------------------------------------+------------------------------------
Description changed by ezyang:

Old description:

> In GHCi, we seem to use `-l:` to ask the linker to link a specific
> filename, instead of munging the filename.  Unfortunately, this does not
> appear to be universally supported by all versions of `ld`. Here is the
> manpage `ld` that comes with Mac OS X 10.10.1:
>
> {{{
>    Options that control libraries
>      -lx         This option tells the linker to search for libx.dylib or
> libx.a in
>                  the library search path.  If string x is of the form
> y.o, then that
>                  file is searched for in the same places, but without
> prepending
>                  `lib' or appending `.a' or `.dylib' to the filename.
> }}}
>
> It causes T2276_ghci to fail:
>
> {{{
> --- /dev/null   2014-12-09 20:57:29.000000000 -0500
> +++ ./T2276_ghci.run.stderr     2014-12-09 20:57:30.000000000 -0500
> @@ -0,0 +1,3 @@
> +ld: library not found for -l:ghc75404_1.dylib
> +clang: error: linker command failed with exit code 1 (use -v to see
> invocation)
> +phase `Linker' failed (exitcode = 1)
> *** unexpected failure for T2276_ghci(ghci
> }}}
>
> Regression seems to have been introduced by:
>
> {{{
> commit 383733b9191a36e2d3f757700842dbc3855911d9
> Author: Peter Trommler <ptrommler at acm.org>
> Date:   Sun Nov 30 12:00:39 2014 -0600
>
>     Fix obscure problem with using the system linker (#8935)
> }}}
>
> Probably we can fix it by not using colon and making sure the libraries
> we generate have the right file format.

New description:

 In GHCi, we seem to use `-l:` to ask the linker to link a specific
 filename, instead of munging the filename.  Unfortunately, this does not
 appear to be universally supported by all versions of `ld`. Here is the
 manpage `ld` that comes with Mac OS X 10.10.1:

 {{{
    Options that control libraries
      -lx         This option tells the linker to search for libx.dylib or
 libx.a in
                  the library search path.  If string x is of the form y.o,
 then that
                  file is searched for in the same places, but without
 prepending
                  `lib' or appending `.a' or `.dylib' to the filename.
 }}}

 It causes T2276_ghci, prog003, T8696 and ghci058 to fail:

 {{{
 --- /dev/null   2014-12-09 20:57:29.000000000 -0500
 +++ ./T2276_ghci.run.stderr     2014-12-09 20:57:30.000000000 -0500
 @@ -0,0 +1,3 @@
 +ld: library not found for -l:ghc75404_1.dylib
 +clang: error: linker command failed with exit code 1 (use -v to see
 invocation)
 +phase `Linker' failed (exitcode = 1)
 *** unexpected failure for T2276_ghci(ghci
 }}}

 Regression seems to have been introduced by:

 {{{
 commit 383733b9191a36e2d3f757700842dbc3855911d9
 Author: Peter Trommler <ptrommler at acm.org>
 Date:   Sun Nov 30 12:00:39 2014 -0600

     Fix obscure problem with using the system linker (#8935)
 }}}

 Probably we can fix it by not using colon and making sure the libraries we
 generate have the right file format.

--

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9875#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list