[GHC] #2022: DLL support broken
GHC
trac at galois.com
Sat Feb 16 12:50:30 EST 2008
#2022: DLL support broken
----------------------+-----------------------------------------------------
Reporter: mte | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.8.2
Severity: normal | Resolution:
Keywords: | Difficulty: Unknown
Testcase: | Architecture: x86
Os: Windows |
----------------------+-----------------------------------------------------
Old description:
> 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
New description:
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
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2022#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list