[GHC] #11072: Runtime linker doesn't search for DLLs referenced in import libraries on Windows
GHC
ghc-devs at haskell.org
Mon Nov 16 12:54:43 UTC 2015
#11072: Runtime linker doesn't search for DLLs referenced in import libraries on
Windows
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: Phyx-
Type: bug | Status: new
Priority: normal | Milestone: 8.0.1
Component: Compiler | Version: 7.10.2-rc2
(Linking) |
Resolution: | Keywords:
Operating System: Windows | Architecture:
| Unknown/Multiple
Type of failure: Runtime crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Matt):
@Phyx-
I have never before submitted a patch for GHC so i have no idea if i would
be able to take over this ticket and what would be proper procedure for
going with it. However i have been working on this for few days here is
what i got so far.
After examining many import libraries i found out that in all import
libraries i got my hands on, DLL name was always stored in first object
file in import library archive in raw data associated with {{{idata$7}}}
section.
Based on that i think this is reliable way to implement this. I put
together small patch for GHC, however its for GHC-7.10.2 as i have some
trouble building and running GHC-head on my PC. In spite of that it should
be trivial to port this to head as it changes only few lines of existing
code.
I would love to hear some input on this and whether this seems viable. In
the meantime if I manage to build and test this with GHC-head I will post
more update.
At the moment with this patch when you invoke GHCi, for example as {{{ghci
-lfoo}}}, it will look for {{{libfoo.dll.a}}} and {{{libfoo.a}}} before
trying to load libfoo.a as static library.
If either of those 2 are found it will try to extract DLL name from them
in that order. If this succeds and assuming DLL name fetched was
{{{libfoo-1.dll}}}, it will then try to load {{{libfoo-1.dll}}} instead
trying to load {{{libfoo.a}}} as static archive.
GHCi will also print some trace info when invoked with {{{-v}}} so that in
case of trouble it can be traced back from where did DLL name came from.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11072#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list