(Imported from Trac #701, reported by @dcoutts on 2010-06-14)
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.