[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