
#13431: Linker error related to atan and ntdll on 32-bit Windows -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Phyx- Type: bug | Status: closed Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.0.1 Resolution: wontfix | Keywords: Operating System: Windows | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by Phyx-): * status: upstream => closed * resolution: => wontfix * architecture: x86 => Unknown/Multiple Comment: Well, the long story short is this won't get fixed. The issue is that `mingw-w64` have their own version of the math functions. So depending on the link order you specify you get either the weird one exported in `ntdll` (which honestly I think is a mistake that Microsoft never could correct due to backwards compatibility.) Anyway, we debated three options, one of which I proposed was to remove these functions from `ntdll.a` entirely as MSDN does not document them. This lends more evidence to my theory that they were a mistake. But it seems this can't be done, so instead I suggested to also change the x64 version to break. The reason is that at least it's consistent and you won't end up with a different math function by accident. On the long term, this means that no haskell library should use `ntdll.a` as libraries don't have full control over the link ordering. This of course extends to other C code compiled by GHC. Those have to be linked to a shared library and then used by haskell code or dynamically load ntdll. Such is life. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13431#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler