
#9218: Upgrade the version of MinGW shipped with GHC -------------------------------------+------------------------------------- Reporter: komadori | Owner: gintas Type: task | Status: patch Priority: normal | Milestone: 7.10.1 Component: Build | Version: 7.8.2 System | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: Windows | Difficulty: Unknown Type of failure: | Blocked By: None/Unknown | Related Tickets: #3390 Test Case: | Blocking: | Differential Revisions: Phab:D339 | -------------------------------------+------------------------------------- Comment (by awson): Here I propose my patchset for `rts/Linker.c` (against current HEAD). It intersects with Gintas' one, but does a bit more (`COMDAT` support for gcc 4.9.x) and does some things in a more straightforward manner -- mostly in handling name decoration things. What's going on with name decoration? Well, original code have some crufty and ad-hocish paths related mostly to very old mingw gcc/binutils/runtime combinations. Now mingw-w64 offers pretty uniform and MS-compatible decoration scheme across its tools and runtime. The scheme is pretty straightforward: on 32 bit objects symbols are exported with underscore prepended (and `@` + stack size suffix appended for `stdcall` functions), on 64 bits no underscore is prepended and no suffix is appended because we have no `stdcall` convention on 64 bits. On top of that `__imp_` prefix is further prepended for `dllimport`ed symbols. Mingw-w64 runtime is conformant to MS declaring all win32 symbols `dllimport`ed, while old mingw is not and this is why 32-bit cases differs so much. I commented on this extensively in #7097 and #2283. My patch reflects these considerations and also unifies a bunch of RTS imports between 32 and 64 bit cases. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9218#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler