Commit 431e40e1 authored by Duncan Coutts's avatar Duncan Coutts
Browse files

Make ghc -dynamic imply -fPIC for C code

As is already the case for ghc -fPIC. This is needed because ghc -dynamic
means to generate code that is capable of being linked to Haskell shared
libs and for C code the equivalent is -fPIC. Normally C code does not need
-fPIC merely to link to shared libs however Haskell shared libs do not
follow common conventions. In particular the static data cannot be
referenced statically because it cannot be copied by the static linker.
The linker cannot copy them because we do not specify a .size for the
_closure entries (in the .data section) though in principle we could.
parent ffafcfbb
...@@ -72,7 +72,7 @@ import PackageConfig ...@@ -72,7 +72,7 @@ import PackageConfig
import PrelNames ( mAIN, main_RDR_Unqual ) import PrelNames ( mAIN, main_RDR_Unqual )
import RdrName ( RdrName, mkRdrUnqual ) import RdrName ( RdrName, mkRdrUnqual )
import OccName ( mkVarOccFS ) import OccName ( mkVarOccFS )
#ifdef i386_TARGET_ARCH #if defined(i386_TARGET_ARCH) || ! defined(mingw32_TARGET_OS)
import StaticFlags ( opt_Static ) import StaticFlags ( opt_Static )
#endif #endif
import StaticFlags ( opt_PIC, WayName(..), v_Ways, v_Build_tag, import StaticFlags ( opt_PIC, WayName(..), v_Ways, v_Build_tag,
...@@ -2305,7 +2305,7 @@ picCCOpts _dflags ...@@ -2305,7 +2305,7 @@ picCCOpts _dflags
| otherwise | otherwise
= [] = []
#else #else
| opt_PIC | opt_PIC || not opt_Static
= ["-fPIC", "-U __PIC__", "-D__PIC__"] = ["-fPIC", "-U __PIC__", "-D__PIC__"]
| otherwise | otherwise
= [] = []
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment