id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
2022	DLL support broken	mte		"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
}}}
"	bug	closed	normal	6.10 branch	Compiler	6.8.2	invalid			Windows	x86		Unknown				
