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

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
import PrelNames ( mAIN, main_RDR_Unqual )
import RdrName ( RdrName, mkRdrUnqual )
import OccName ( mkVarOccFS )
#ifdef i386_TARGET_ARCH
#if defined(i386_TARGET_ARCH) || ! defined(mingw32_TARGET_OS)
import StaticFlags ( opt_Static )
import StaticFlags ( opt_PIC, WayName(..), v_Ways, v_Build_tag,
......@@ -2305,7 +2305,7 @@ picCCOpts _dflags
| otherwise
= []
| opt_PIC
| opt_PIC || not opt_Static
= ["-fPIC", "-U __PIC__", "-D__PIC__"]
| otherwise
= []
Markdown is supported
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