[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