DLL support broken
Creating a DLL using the -shared option does not work for me:
- ghc tries to create a static library (foobar.dll.a).
- The linker complains about missing symbols.
Building an executable from the same project works fine and the resulting executable runs all unit tests without errors.
With 6.6 and the --mk-dll option, the DLL was built without problems.
/vol/c/ghc/ghc-6.8.2/bin/ghc.exe \
-fglasgow-exts -odir ../targets/i686-CYGWIN_NT-5.1/plain -hidir ../targets/i686-CYGWIN_NT-5.1/plain -i../targets/i686-CYGWIN_NT-5.1/plain +RTS -M64m -RTS \
-shared \
-o ../targets/i686-CYGWIN_NT-5.1/plain/foobar.dll \
foobar.def \
../targets/i686-CYGWIN_NT-5.1/plain/*.o
Creating library file: ..\targets\i686-CYGWIN_NT-5.1\plain\foobar.dll.a
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1696):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x44c3):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_zdf3_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x7e6d):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0xf392):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0xf3f6):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_insert_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0xf8e3):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0xf933):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_sizze_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0xffae):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x10012):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_insert_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x10076):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x100c7):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x101ef):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_null_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x125e7):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_toAscList_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x133e2):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1c91f):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1ca0f):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_sizze_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1cecb):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_sizze_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1cfb0):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1f3ec):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_singleton_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1fdd5):fake: undefined reference to `__stginit_arrayzm0zi1zi0zi0_DataziArray_'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1fdf3):fake: undefined reference to `__stginit_containerszm0zi1zi0zi1_DataziSet_'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1fdfd):fake: undefined reference to `__stginit_haskell98_List_'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.text+0x1fe07):fake: undefined reference to `__stginit_haskell98_Maybe_'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x124):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x3dc):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_zdf3_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x4a8):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xdc0):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xdd8):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_insert_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xe48):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_sizze_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xe4c):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xf58):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xf70):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_insert_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xf88):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_delete_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xfc4):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_null_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0xfc8):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x118c):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x1190):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_toAscList_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x192c):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_empty_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x1930):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_sizze_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x1934):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_elems_closure'
../targets/i686-CYGWIN_NT-5.1/plain/foobar.o(.data+0x19f4):fake: undefined reference to `containerszm0zi1zi0zi1_DataziSet_singleton_closure'
../targets/i686-CYGWIN_NT-5.1/plain/Types.o(.text+0xa5b9):fake: undefined reference to `__stginit_arrayzm0zi1zi0zi0_DataziArray_'
collect2: ld returned 1 exit status