Ticket #701 (new enhancement)

Opened 3 years ago

Last modified 17 months ago

Help packages to avoid linker symbol clashes

Reported by: duncan Owned by:
Priority: normal Milestone:
Component: Cabal library Version: 1.6.0.3
Severity: normal Keywords:
Cc: Difficulty: unknown
GHC Version: Platform:

Description

Currently it is all too easy to end up with silently clashing linker symbols.

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.

Change History

Changed 17 months ago by elga

Changed 17 months ago by edouard

Termine le parcours du combattant ! les procedures, aujourd'hui tres simplifiees, sont accessibles en quelques clics seulement.  virgin mobile

Note: See TracTickets for help on using tickets.