[GHC] #3879: Enable shared libraries on Windows

GHC trac at galois.com
Sun Feb 21 16:02:36 EST 2010


#3879: Enable shared libraries on Windows
---------------------------------+------------------------------------------
    Reporter:  igloo             |        Owner:  benl        
        Type:  feature request   |       Status:  new         
    Priority:  high              |    Milestone:  6.14.1      
   Component:  Compiler          |      Version:  6.12.1      
    Keywords:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Testcase:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
Changes (by igloo):

  * owner:  => benl


Comment:

 I needed this patch to get `rts/RtsDllMain.c` to compile:
 {{{
 hunk ./rts/RtsDllMain.c 12
 +#include "RtsDllMain.h"
 hunk ./rts/RtsDllMain.c 22
 -DllMain ( HINSTANCE hInstance
 +DllMain ( HINSTANCE hInstance STG_UNUSED
 hunk ./rts/RtsDllMain.c 24
 -       , LPVOID reserved
 +       , LPVOID reserved STG_UNUSED
 addfile ./rts/RtsDllMain.h
 hunk ./rts/RtsDllMain.h 1
 +
 +#include "Rts.h"
 +
 +#ifdef HAVE_WINDOWS_H
 +#include <windows.h>
 +#endif
 +
 +/* I'd be mildly surprised if this wasn't defined, but still. */
 +#if defined(__PIC__) && defined(mingw32_TARGET_OS)
 +BOOL
 +WINAPI
 +DllMain ( HINSTANCE hInstance
 +        , DWORD reason
 +       , LPVOID reserved
 +       );
 +#endif
 +
 }}}
 but then the build fails with:
 {{{
 "inplace/bin/ghc-stage1.exe" -shared -dynamic -dynload deploy -no-auto-
 link-packages `cat rts/libs.depend` rts/dist/build/Adjustor.thr_dyn_o
 rts/dist/build/Arena.thr_dyn_o rts/dist/build/Capability.thr_dyn_o
 rts/dist/build/ClosureFlags.thr_dyn_o
 rts/dist/build/Disassembler.thr_dyn_o rts/dist/build/FrontPanel.thr_dyn_o
 rts/dist/build/Globals.thr_dyn_o rts/dist/build/Hash.thr_dyn_o
 rts/dist/build/Hpc.thr_dyn_o rts/dist/build/HsFFI.thr_dyn_o
 rts/dist/build/Inlines.thr_dyn_o rts/dist/build/Interpreter.thr_dyn_o
 rts/dist/build/LdvProfile.thr_dyn_o rts/dist/build/Linker.thr_dyn_o
 rts/dist/build/Papi.thr_dyn_o rts/dist/build/Printer.thr_dyn_o
 rts/dist/build/ProfHeap.thr_dyn_o rts/dist/build/Profiling.thr_dyn_o
 rts/dist/build/Proftimer.thr_dyn_o rts/dist/build/RaiseAsync.thr_dyn_o
 rts/dist/build/RetainerProfile.thr_dyn_o
 rts/dist/build/RetainerSet.thr_dyn_o rts/dist/build/RtsAPI.thr_dyn_o
 rts/dist/build/RtsDllMain.thr_dyn_o rts/dist/build/RtsFlags.thr_dyn_o
 rts/dist/build/RtsMain.thr_dyn_o rts/dist/build/RtsMessages.thr_dyn_o
 rts/dist/build/RtsStartup.thr_dyn_o rts/dist/build/RtsUtils.thr_dyn_o
 rts/dist/build/STM.thr_dyn_o rts/dist/build/Schedule.thr_dyn_o
 rts/dist/build/Sparks.thr_dyn_o rts/dist/build/Stable.thr_dyn_o
 rts/dist/build/Stats.thr_dyn_o rts/dist/build/StgCRun.thr_dyn_o
 rts/dist/build/StgPrimFloat.thr_dyn_o rts/dist/build/Task.thr_dyn_o
 rts/dist/build/ThreadLabels.thr_dyn_o
 rts/dist/build/ThreadPaused.thr_dyn_o rts/dist/build/Threads.thr_dyn_o
 rts/dist/build/Ticky.thr_dyn_o rts/dist/build/Timer.thr_dyn_o
 rts/dist/build/Trace.thr_dyn_o rts/dist/build/WSDeque.thr_dyn_o
 rts/dist/build/Weak.thr_dyn_o rts/dist/build/hooks/FlagDefaults.thr_dyn_o
 rts/dist/build/hooks/MallocFail.thr_dyn_o
 rts/dist/build/hooks/OnExit.thr_dyn_o
 rts/dist/build/hooks/OutOfHeap.thr_dyn_o
 rts/dist/build/hooks/RtsOpts.thr_dyn_o
 rts/dist/build/hooks/StackOverflow.thr_dyn_o
 rts/dist/build/parallel/0Hash.thr_dyn_o
 rts/dist/build/parallel/0Unpack.thr_dyn_o
 rts/dist/build/parallel/Dist.thr_dyn_o
 rts/dist/build/parallel/Global.thr_dyn_o
 rts/dist/build/parallel/GranSim.thr_dyn_o
 rts/dist/build/parallel/HLComms.thr_dyn_o
 rts/dist/build/parallel/LLComms.thr_dyn_o
 rts/dist/build/parallel/Pack.thr_dyn_o
 rts/dist/build/parallel/ParInit.thr_dyn_o
 rts/dist/build/parallel/ParTicky.thr_dyn_o
 rts/dist/build/parallel/Parallel.thr_dyn_o
 rts/dist/build/parallel/ParallelDebug.thr_dyn_o
 rts/dist/build/parallel/RBH.thr_dyn_o
 rts/dist/build/sm/BlockAlloc.thr_dyn_o rts/dist/build/sm/Compact.thr_dyn_o
 rts/dist/build/sm/Evac.thr_dyn_o rts/dist/build/sm/GC.thr_dyn_o
 rts/dist/build/sm/GCAux.thr_dyn_o rts/dist/build/sm/GCUtils.thr_dyn_o
 rts/dist/build/sm/MBlock.thr_dyn_o rts/dist/build/sm/MarkWeak.thr_dyn_o
 rts/dist/build/sm/Sanity.thr_dyn_o rts/dist/build/sm/Scav.thr_dyn_o
 rts/dist/build/sm/Storage.thr_dyn_o rts/dist/build/sm/Sweep.thr_dyn_o
 rts/dist/build/eventlog/EventLog.thr_dyn_o
 rts/dist/build/win32/AsyncIO.thr_dyn_o
 rts/dist/build/win32/AwaitEvent.thr_dyn_o
 rts/dist/build/win32/ConsoleHandler.thr_dyn_o
 rts/dist/build/win32/GetTime.thr_dyn_o
 rts/dist/build/win32/IOManager.thr_dyn_o
 rts/dist/build/win32/OSMem.thr_dyn_o
 rts/dist/build/win32/OSThreads.thr_dyn_o
 rts/dist/build/win32/ThrIOManager.thr_dyn_o
 rts/dist/build/win32/Ticker.thr_dyn_o
 rts/dist/build/win32/WorkQueue.thr_dyn_o
 rts/dist/build/win32/seh_excn.thr_dyn_o
 rts/dist/build/sm/Evac_thr.thr_dyn_o rts/dist/build/sm/Scav_thr.thr_dyn_o
 rts/dist/build/Apply.thr_dyn_o rts/dist/build/Exception.thr_dyn_o
 rts/dist/build/HeapStackCheck.thr_dyn_o rts/dist/build/PrimOps.thr_dyn_o
 rts/dist/build/StgMiscClosures.thr_dyn_o
 rts/dist/build/StgStartup.thr_dyn_o rts/dist/build/StgStdThunks.thr_dyn_o
 rts/dist/build/Updates.thr_dyn_o rts/dist/build/AutoApply.thr_dyn_o
 rts/dist/build/win32/libHSbase.dll.a rts/dist/build/win32/libHSghc-
 prim.dll.a rts/dist/build/win32/libHSffi.dll.a  -o rts/dist/build
 /libHSrts_thr-ghc6.13.20100221.dll
 Creating library file: rts/dist/build/libHSrts_thr-ghc6.13.20100221.dll.a
 rts\dist\build\PrimOps.thr_dyn_o:fake:(.text+0x4ab): undefined reference
 to `_imp__sm_mutex'
 rts\dist\build\PrimOps.thr_dyn_o:fake:(.text+0x4cf): undefined reference
 to `_imp__sm_mutex'
 rts\dist\build\PrimOps.thr_dyn_o:fake:(.text+0x5e6): undefined reference
 to `_imp__sm_mutex'
 rts\dist\build\PrimOps.thr_dyn_o:fake:(.text+0x608): undefined reference
 to `_imp__sm_mutex'
 collect2: ld returned 1 exit status
 make[1]: *** [rts/dist/build/libHSrts_thr-ghc6.13.20100221.dll] Error 1
 make: *** [all] Error 2
 }}}
 Ben, any idea what's going on?

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3879#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the Glasgow-haskell-bugs mailing list