[commit: ghc] master: Add Windows to NoSharedLibsPlatformList (4af1e76)

kyra kyrab at mail.ru
Mon Jan 13 10:51:50 UTC 2014


Statically linked 64-bit Windows GHC does not work because of #7134. 
Even LARGEADDRESSAWARE flag disabling (extremely bad hack itself) does 
not work anymore both on Windows 7 and Windows 8.

Or is there another (besides dynamic linking) plan to attack #7134?

I could step in to try to help with any of these, but I'd want to get 
more guidance then - either on enabling dll-relating things (for some 
time age I've tried to find better ghc-to-dlls decomposition using 
dll-split tool, but quickly found we can't do better than it is now, 
perhaps GHC itself needs some refactoring to solve this problem), or 
fixing #7134 in some other way. The last would be better, because 
dynamic-linked Windows GHC has longer load time (which can jump to 
intolerable 2-3 secs, which happens, I guess, when we approach 64k 
exported symbols limit).

On 1/13/2014 14:31, Austin Seipp wrote:
> The 64bit GHC 7.6.3 windows compiler was not dynamically linked,
> although it did have -dynamic libraries (although using them is a pain
> in Windows.) It loaded static object files (you can verify this
> yourself: 'ghc -O foo.hs && ghci foo' will load the object file, but
> 'ghc -dynamic -O foo.hs && ghci foo' will not and instead interpret.)
> Relatedly, -dynamic-too is also broken on windows, but it's more of an
> optimization than anything.
>
> 7.8 won't have a dynamically linked GHCi for Windows and it won't have
> -dynamic-too (i.e. essentially the same as 7.6.) Linux, OS X will have
> both.
>
> At this exact moment, -dynamic also seems busted on Windows and I'm
> looking into fixing it. This will just help me in the mean time to
> clean up the tree and keep it building for others.
>
> On Mon, Jan 13, 2014 at 4:01 AM, kyra <kyrab at mail.ru> wrote:
>> Does this mean we have no 64-bit windows support for 7.8 (only
>> dynamic-linked compiler works on 64-bit windows)?
>>
>>
>> On 1/13/2014 10:28, git at git.haskell.org wrote:
>>> Repository : ssh://git@git.haskell.org/ghc
>>>
>>> On branch  : master
>>> Link       :
>>> http://ghc.haskell.org/trac/ghc/changeset/4af1e76c701a7698ebd9b5ca3fb1394dd8b56c8d/ghc
>>>
>>>> ---------------------------------------------------------------
>>> commit 4af1e76c701a7698ebd9b5ca3fb1394dd8b56c8d
>>> Author: Austin Seipp <austin at well-typed.com>
>>> Date:   Mon Jan 13 00:21:18 2014 -0600
>>>
>>>       Add Windows to NoSharedLibsPlatformList
>>>            We're punting on full -dynamic and -dynamic-too support for
>>> Windows
>>>       right now, since it's still unstable. Also, ensure "Support
>>> dynamic-too"
>>>       in `ghc --info` is set to "NO" for Cabal.
>>>            See issues #7134, #8228, and #5987
>>>            Signed-off-by: Austin Seipp <austin at well-typed.com>
>>>
>>>
>>>> ---------------------------------------------------------------
>>> 4af1e76c701a7698ebd9b5ca3fb1394dd8b56c8d
>>>    compiler/main/DynFlags.hs |    4 +++-
>>>    mk/config.mk.in           |   19 ++++---------------
>>>    2 files changed, 7 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
>>> index 06d1ed9..734e7e9 100644
>>> --- a/compiler/main/DynFlags.hs
>>> +++ b/compiler/main/DynFlags.hs
>>> @@ -3563,7 +3563,7 @@ compilerInfo dflags
>>>           ("Support SMP",                 cGhcWithSMP),
>>>           ("Tables next to code",         cGhcEnableTablesNextToCode),
>>>           ("RTS ways",                    cGhcRTSWays),
>>> -       ("Support dynamic-too",         "YES"),
>>> +       ("Support dynamic-too",         if isWindows then "NO" else
>>> "YES"),
>>>           ("Support parallel --make",     "YES"),
>>>           ("Dynamic by default",          if dYNAMIC_BY_DEFAULT dflags
>>>                                           then "YES" else "NO"),
>>> @@ -3574,6 +3574,8 @@ compilerInfo dflags
>>>           ("LibDir",                      topDir dflags),
>>>           ("Global Package DB",           systemPackageConfig dflags)
>>>          ]
>>> +  where
>>> +    isWindows = platformOS (targetPlatform dflags) == OSMinGW32
>>>      #include
>>> "../includes/dist-derivedconstants/header/GHCConstantsHaskellWrappers.hs"
>>>    diff --git a/mk/config.mk.in b/mk/config.mk.in
>>> index f61ecc0..59d48c4 100644
>>> --- a/mk/config.mk.in
>>> +++ b/mk/config.mk.in
>>> @@ -94,22 +94,11 @@ else
>>>    TargetElf = YES
>>>    endif
>>>    -# Currently, on Windows, we artificially limit the unfolding creation
>>> -# threshold to minimize the number of exported symbols on Windows
>>> -# platforms in the stage2 DLL. This avoids a hard limit of 2^16
>>> -# exported symbols in the windows dynamic linker.
>>> -#
>>> -# This is a pitifully low threshold (the default is 750,) but it
>>> -# reduced the symbol count by about ~7,000, bringing us back under the
>>> -# limit (for now.)
>>> -#
>>> -# See #5987
>>> -ifeq "$(TargetOS_CPP)" "mingw32"
>>> -GhcStage2HcOpts += -funfolding-creation-threshold=100
>>> -endif
>>> -
>>>    # Some platforms don't support shared libraries
>>> -NoSharedLibsPlatformList = arm-unknown-linux powerpc-unknown-linux
>>> +NoSharedLibsPlatformList = arm-unknown-linux \
>>> +       powerpc-unknown-linux \
>>> +       x86_64-unknown-mingw32 \
>>> +       i386-unknown-mingw32
>>>      ifeq "$(SOLARIS_BROKEN_SHLD)" "YES"
>>>    NoSharedLibsPlatformList += i386-unknown-solaris2
>>>
>>> _______________________________________________
>>> ghc-commits mailing list
>>> ghc-commits at haskell.org
>>> http://www.haskell.org/mailman/listinfo/ghc-commits
>>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>
>
>



More information about the ghc-devs mailing list