[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