[GHC] #11748: GHC runtime linker: fatal error: I found a duplicate definition for symbol
GHC
ghc-devs at haskell.org
Fri Jan 27 01:06:12 UTC 2017
#11748: GHC runtime linker: fatal error: I found a duplicate definition for symbol
-------------------------------------+-------------------------------------
Reporter: jeiea | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Template Haskell | Version: 7.10.3
Resolution: | Keywords:
Operating System: Windows | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash | Test Case:
Blocked By: | Blocking:
Related Tickets: #11223 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by rwbarton):
The original issue turns out to be simply due to the fact that `inline-c`
depends on `Win32` (via `directory`), and your program's cabal file states
a dependency on your local version `Win32a`. `Win32` defines functions
like `rgb` as wrappers around Windows API macros and your clone `Win32a`
also defines functions with the same names. So you do have duplicate
definitions for symbols. The issue doesn't have anything to do with
`inline-c` besides the fact that it is causing the real `Win32` to be
linked in.
The issue is that, unlike symbols that come from Haskell functions, we
don't mangle the symbols defined in C source files with the package
identifier. I think there is a ticket about changing this, but for now
it's a known limitation that you have to ensure that symbol names in C
files you link in globally unique.
Using the symbol name `rgb` in `Win32` is really not very good, as it is
fairly likely to collide with someone else's symbol, and we should change
that. In the `unix` package, we use symbol names like `__hsunix_ptsname`.
However using a more GHC-specific symbol name would not help here, since
you copied the `Win32` source into your own package.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11748#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list