base library's MD5 symbols clash with others
We have a large C++ application into which we are linking the GHC runtime. Being large, this app has many components, among which is one that defines a bunch of MD5 functions that have overlapping names with those defined in base, but different ABIs.
Depending on the order in which the linker runs across the object files, we end up with a crash during application startup as a result of one component picking up the other component's MD5 symbols.
The offending source file is libraries/base/cbits/md5.c.
A simple fix for this would be to prefix the function names with e.g. ghc or something similar, so that the names would not clash.
There are perhaps other functions in base (probably many others) that could benefit from a similar treatment, but we're not crashing on those yet.
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | libraries/base |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |