Thank you both for the replies.

My issue with the current situation is that I can navigate myself into a 
situation where I’m stuck. By asking ghc to build static libraries, it will 
later fall over when it tries to load those.

Guess what I really want is to turn the DYNAMIC_GHC_PROGRAMS into a runtime 
flag.

That might help with getting out of the situation without resorting to building 
two ghcs.

Cheers,
 Moritz

Sent from my iPhone

> On 12 Jun 2018, at 9:07 PM, Phyx <loneti...@gmail.com> wrote:
> 
> You could work around the dlopen issue as long as the static library is 
> compiled with -fPIC by using  --whole-archive (assuming you permit dangling 
> references which will need to be resolved later) and making a shared library 
> out of the static code. But you'd have to create one shared library per 
> static library and preserve the order so you don't end up with symbol 
> collisions. 
> 
> And you'd likely not want to do it this on every relink. But i think the - 
> fPIC is a much greater hurdle. Very few of the static libraries a user may 
> want to use would have this likely.
> 
> I think it'll end up being quite a messy situation.. 
> 
> 
>> On Thu, Jun 7, 2018, 22:01 Simon Marlow <marlo...@gmail.com> wrote:
>> There's a technical restriction. The static code would be compiled with the 
>> small memory model, so it would have 32-bit relocations for external 
>> references, assuming that those references would resolve to something in the 
>> low 2GB of the address space. But we would be trying to link it against 
>> shared libraries which could be loaded anywhere in the address space.
>> 
>> If the static code was compiled with -fPIC then it might be possible, but 
>> there's also the restriction that we wouldn't be able to dlopen() a shared 
>> library that depends on the statically linked code, because the system 
>> linker can't see the symbols that the RTS linker has loaded. GHC doesn't 
>> currently know about this restriction, so it would probably go ahead and 
>> try, and things would break.
>> 
>> Cheers
>> Simon
>> 
>> 
>>> On 29 May 2018 at 04:05, Moritz Angermann <mor...@lichtzwerge.de> wrote:
>>> Dear friends,
>>> 
>>> when we build GHC with DYNAMIC_GHC_PROGRAMS=YES, we essentially prevent 
>>> ghc/ghci
>>> from using archives (.a).  Is there a technical reason behind this?  The 
>>> only
>>> only reasoning so far I've came across was: insist on using dynamic/shared 
>>> objects,
>>> because the user said so when building GHC.
>>> 
>>> In that case, we don't however prevent GHC from building archive (static) 
>>> only
>>> libraries.  And as a consequence when we later try to build another archive 
>>> of
>>> a different library, that depends via TH on the former library, GHC will 
>>> bail
>>> and complain that we don't have the relevant dynamic/shared object.  Of 
>>> course we
>>> don't we explicitly didn't build it.  But the linker code we have in GHC is
>>> perfectly capable of loading archives.  So why don't we want to fall back to
>>> archives?
>>> 
>>> Similarly, as @deech asked on twitter[1], why we prevent GHCi from loading 
>>> static
>>> libraries?
>>> 
>>> I'd like to understand the technical reason/rational for this behavior.  Can
>>> someone help me out here?  If there is no fundamental reason for this 
>>> behavior, 
>>> I'd like to go ahead and try to lift it.
>>> 
>>> Thank you!
>>> 
>>> Cheers,
>>>  Moritz
>>> 
>>> ---
>>> [1]: https://twitter.com/deech/status/1001182709555908608
>>> _______________________________________________
>>> ghc-devs mailing list
>>> ghc-devs@haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>> 
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> _______________________________________________
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to