[GHC] #10322: In ghci object code loader, linking against the previous temp dylib is not enough on OS X

GHC ghc-devs at haskell.org
Sat Apr 25 12:22:21 UTC 2015


#10322: In ghci object code loader, linking against the previous temp dylib is not
enough on OS X
-------------------------------------+-------------------------------------
        Reporter:  rwbarton          |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  high              |               Milestone:  7.10.2
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  MacOS X           |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:  Phab:D852
-------------------------------------+-------------------------------------

Comment (by George):

 Not sure but the -flat_namespace option might be what you are looking for.
 Following is from the Mac man page for ld. I wonder if ghc has always had
 this bug or if this is a regression.

 == Two-level namespace ==

 By default all references resolved to a dynamic library record the library
 to which they were resolved. At runtime, dyld uses that information to
 directly resolve symbols.  The alternative is to use the -flat_namespace
 option.  With flat namespace, the library is not recorded.  At runtime,
 dyld will search each dynamic library in load order when resolving
 symbols. This is slower, but more like how other operating systems resolve
 symbols.

 == Indirect dynamic libraries ==

 If the command line specifies to link against dylib A, and when dylib A
 was built it linked against dylib B, then B is considered an indirect
 dylib.  When linking for two-level namespace, ld does not look at indirect
 dylibs, except when re-exported by a direct dylibs.  On the other hand
 when linking for flat namespace, ld does load all indirect dylibs and uses
 them to resolve references.  Even though indirect dylibs are specified via
 a full path, ld first uses the specified search paths to locate each
 indirect dylib.  If one cannot be found using the search paths, the full
 path is used.

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


More information about the ghc-tickets mailing list