X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fphases.xml;h=ec1436434fbcdd4f2a1a2092a320213ae7993132;hb=269949584b7c124e95543c5c006822db4cec4d8b;hp=f3a6e339cf6e8fa1bc124d759d906e045b656f5b;hpb=4ca6790feb128b03e0783de7f44399fef5c5ad22;p=ghc-hetmet.git diff --git a/docs/users_guide/phases.xml b/docs/users_guide/phases.xml index f3a6e33..ec14364 100644 --- a/docs/users_guide/phases.xml +++ b/docs/users_guide/phases.xml @@ -642,12 +642,10 @@ $ cat foo.hspp Generate position-independent code (code that can be put into - shared libraries). This currently works on Mac OS X; it works on - PowerPC Linux when using the native code generator (-fasm). - It is not quite ready to be used yet for x86 Linux. - On Windows, position-independent code is never used, - and on PowerPC64 Linux, position-independent code is always used, - so the flag is a no-op on those platforms. + shared libraries). This currently works on Linux x86 and x86-64 when + using the native code generator (-fasm). + On Windows, position-independent code is never used + so the flag is a no-op on that platform. @@ -659,8 +657,8 @@ $ cat foo.hspp When generating code, assume that entities imported from a different package will reside in a different shared library or binary. - Note that this option also causes GHC to use shared libraries - when linking. + Note that using this option when linking causes GHC to link + against shared libraries. @@ -825,8 +823,10 @@ $ cat foo.hspp - This flag switches to shared Haskell libraries for - linking. See on how to + This flag tells GHC to link against shared Haskell libraries. + This flag only affects the selection of dependent libraries, not + the form of the current target (see -shared). + See on how to create them. Note that this option also has an effect on @@ -863,6 +863,19 @@ $ cat foo.hspp + + + + + + + + This flag selects one of a number of modes for finding shared + libraries at runtime. See for + a description of each mode. + + + @@ -966,23 +979,11 @@ $ cat foo.hspp machine. See . The ability to make a foreign call that does not - block all other Haskell threads. - - The ability to invoke foreign exported Haskell - functions from multiple OS threads. + block all other Haskell threads, and to invoke + foreign-exported Haskell functions from multiple OS + threads. See . - - With , calls to foreign - functions are made using the same OS thread that created the - Haskell thread (if it was created by a call to a foreign - exported Haskell function), or an arbitrary OS thread - otherwise (if the Haskell thread was created by - forkIO). - - More details on the use of "bound threads" in the - threaded runtime can be found in the Control.Concurrent module. @@ -1051,6 +1052,28 @@ $ cat foo.hspp />). + + + + + + + + + DLLs on Windows are typically linked to by linking to a corresponding + .lib or .dll.a - the so-called import library. + GHC will typically generate such a file for every DLL you create by compiling in + -shared mode. However, sometimes you don't want to pay the + disk-space cost of creating this import library, which can be substantial - it + might require as much space as the code itself, as Haskell DLLs tend to export + lots of symbols. + + As long as you are happy to only be able to link to the DLL using + GetProcAddress and friends, you can supply the + flag to disable the creation of the import + library entirely. + +