Skip to content

DLL support broken

Creating a DLL using the -shared option does not work for me:

  1. ghc tries to create a static library (foobar.dll.a).
  2. 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
Edited by Ian Lynagh -
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information