[GHC] #5987: Too many symbols in ghc package DLL

GHC ghc-devs at haskell.org
Mon Jul 4 19:57:52 UTC 2016


#5987: Too many symbols in ghc package DLL
---------------------------------+----------------------------------------
        Reporter:  igloo         |                Owner:  Phyx-
            Type:  bug           |               Status:  new
        Priority:  normal        |            Milestone:
       Component:  Compiler      |              Version:  7.5
      Resolution:                |             Keywords:
Operating System:  Windows       |         Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown  |            Test Case:
      Blocked By:  10352         |             Blocking:  5355
 Related Tickets:                |  Differential Rev(s):
       Wiki Page:                |
---------------------------------+----------------------------------------
Changes (by Phyx-):

 * blockedby:   => 10352


Comment:

 Quick update, dynamic linking now works again:

 {{{
 $ ghc-stage2 -fforce-recomp test.hs -dynamic && ./test
 [1 of 1] Compiling Main             ( test.hs, test.o )
 Linking test.exe ...
 Hello World
 }}}

 And loader logs:

 {{{
 Process Started: 0000000000400000 E:\temp\dynamic\test.exe
 ...
 DLL Loaded: 0000000070D00000 R:\GHC\libHSghc-
 prim-0.5.0.0-ghc8.1.20160628.dll
 DLL Loaded: 0000000067240000 R:\GHC\libHSrts-ghc8.1.20160628.dll
 ...
 DLL Loaded: 0000000069F80000 R:\GHC\libHSbase-4.9.0.0-ghc8.1.20160628.dll
 ...
 DLL Loaded: 000000006B740000 R:\GHC\libffi-6.dll
 ...
 DLL Loaded: 0000000069780000 R:\GHC\libHSinteger-
 gmp-1.0.0.1-ghc8.1.20160628.dll
 }}}

 Approach is written
 https://ghc.haskell.org/trac/ghc/wiki/WindowsDynamicLinking here and I'll
 keep updating it as I go.

 Code is not done but changes can be seen
 https://github.com/Mistuke/ghc/pull/5 on my Github.

 The major limitation in this version is that only the normal `rts` can be
 used. Due to the fact that we can't link with unknown symbols on Windows
 in the final link. After talking to `rwbarton` I believe this can be
 solved by a Windows version of #10352 and so temporarily stopping work on
 this so I can take a look at #10352 instead.

 Remaining:
  - Figure out the `ASSERT` failures in `compiler/stgSyn/CoreToStg.hs`
  - Fix dist building to include split dlls if split occurs
  - Implement mechanism to select right `rts` version.
  - Clean up code

 For reference, the sizes of the produced `dlls` are now also a tad smaller

 {{{
   695960 /r/GHC/libHSarray-0.5.1.1-ghc8.1.20160628.dll
 11997540 /r/GHC/libHSbase-4.9.0.0-ghc8.1.20160628.dll
   770941 /r/GHC/libHSbinary-0.8.3.0-ghc8.1.20160628.dll
  1222357 /r/GHC/libHSbytestring-0.10.8.1-ghc8.1.20160628.dll
 17275289 /r/GHC/libHSCabal-1.25.0.0-ghc8.1.20160628.dll
  2327994 /r/GHC/libHScontainers-0.5.7.1-ghc8.1.20160628.dll
   183756 /r/GHC/libHSdeepseq-1.4.2.0-ghc8.1.20160628.dll
   386058 /r/GHC/libHSdirectory-1.2.6.2-ghc8.1.20160628.dll
   224319 /r/GHC/libHSfilepath-1.4.1.0-ghc8.1.20160628.dll
 47179898 /r/GHC/libHSghc-8.1-ghc8.1.20160628.dll
   583840 /r/GHC/libHSghc-boot-8.1-ghc8.1.20160628.dll
   476365 /r/GHC/libHSghc-boot-th-8.1-ghc8.1.20160628.dll
  2004675 /r/GHC/libHSghci-8.1-ghc8.1.20160628.dll
  3144663 /r/GHC/libHSghc-prim-0.5.0.0-ghc8.1.20160628.dll
  1721465 /r/GHC/libHShaskeline-0.7.2.3-ghc8.1.20160628.dll
   894721 /r/GHC/libHShoopl-3.10.2.1-ghc8.1.20160628.dll
   318805 /r/GHC/libHShpc-0.6.0.3-ghc8.1.20160628.dll
   761724 /r/GHC/libHSinteger-gmp-1.0.0.1-ghc8.1.20160628.dll
   668894 /r/GHC/libHSpretty-1.1.3.3-ghc8.1.20160628.dll
   264811 /r/GHC/libHSprocess-1.4.2.0-ghc8.1.20160628.dll
  1680082 /r/GHC/libHSrts_debug-ghc8.1.20160628.dll
  2182245 /r/GHC/libHSrts_l-ghc8.1.20160628.dll
  1796551 /r/GHC/libHSrts_thr_debug-ghc8.1.20160628.dll
  2466036 /r/GHC/libHSrts_thr_l-ghc8.1.20160628.dll
  2206968 /r/GHC/libHSrts_thr-ghc8.1.20160628.dll
  1949321 /r/GHC/libHSrts-ghc8.1.20160628.dll
  4638331 /r/GHC/libHStemplate-haskell-2.11.0.0-ghc8.1.20160628.dll
  1448186 /r/GHC/libHStime-1.6.0.1-ghc8.1.20160628.dll
  1494791 /r/GHC/libHStransformers-0.5.2.0-ghc8.1.20160628.dll
  2644212 /r/GHC/libHSWin32-2.3.1.1-ghc8.1.20160628.dll
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/5987#comment:58>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list