diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs index 5e26d48b36e7bf6a95deb63a8838d58d58038f97..aba5b1aa0525907dfa7c9ab4cda6516cd8127dca 100644 --- a/compiler/GHC/Driver/Pipeline/Execute.hs +++ b/compiler/GHC/Driver/Pipeline/Execute.hs @@ -513,6 +513,13 @@ runCcPhase cc_phase pipe_env hsc_env location input_fn = do , not $ target32Bit (targetPlatform dflags) ] + -- if -fsplit-sections is enabled, we should also + -- build with these flags. + ++ (if gopt Opt_SplitSections dflags && + platformOS (targetPlatform dflags) /= OSDarwin + then ["-ffunction-sections", "-fdata-sections"] + else []) + -- Stub files generated for foreign exports references the runIO_closure -- and runNonIO_closure symbols, which are defined in the base package. -- These symbols are imported into the stub.c file via RtsAPI.h, and the