[Hackage] #701: Help packages to avoid linker symbol clashes

Hackage cvs-ghc at haskell.org
Mon Jun 14 08:27:53 EDT 2010

#701: Help packages to avoid linker symbol clashes
  Reporter:  duncan         |        Owner:         
      Type:  enhancement    |       Status:  new    
  Priority:  normal         |    Milestone:         
 Component:  Cabal library  |      Version:
  Severity:  normal         |     Keywords:         
Difficulty:  unknown        |   Ghcversion:         
  Platform:                 |  
 Currently it is all too easy to end up with silently clashing linker

 The prime example is C code linked into a Haskell package. Multiple
 versions of the same package will define the same linker symbols. The
 system linker is happy to just pick the first occurrence of a symbol
 (though the ghci linker is stricter). This can cause havoc if the
 behaviour of the C code changes from one version of the package to another
 (see for example the problem with mmap and darcs, ticket #700).

 There are a number of things we could do to improve the situation.

  * We could make it easier to make versioned C symbols in the C code used
 in a Haskell package by providing cpp macros.
  * We could explicitly check for unversioned C symbols in Haskell libs
  * We could try linking Haskell libs in such a way that the C symbols are
 not visible and thus cannot clash, but it would also mean they are not
 exported for other libs to use.

Ticket URL: <http://hackage.haskell.org/trac/hackage/ticket/701>
Hackage <http://haskell.org/cabal/>
Hackage: Cabal and related projects

More information about the cabal-devel mailing list