[commit: ghc] master: Fix -split-objs: there was a bad interaction with the recent changes (d4d383b)
Simon Marlow
marlowsd at gmail.com
Wed Apr 6 12:27:22 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/d4d383b880ac76d803cdd37fb031ab0c50eb9170
>---------------------------------------------------------------
commit d4d383b880ac76d803cdd37fb031ab0c50eb9170
Author: Simon Marlow <marlowsd at gmail.com>
Date: Wed Apr 6 10:31:58 2011 +0100
Fix -split-objs: there was a bad interaction with the recent changes
to the way stub files were handled.
>---------------------------------------------------------------
compiler/main/DriverPipeline.hs | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index 13c91c2..9bcc30a 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1178,7 +1178,9 @@ runPhase As input_fn dflags
runPhase SplitAs _input_fn dflags
= do
- next_phase <- maybeMergeStub
+ -- we'll handle the stub_o file in this phase, so don't MergeStub,
+ -- just jump straight to StopLn afterwards.
+ let next_phase = StopLn
output_fn <- phaseOutputFilename next_phase
let base_o = dropExtension output_fn
@@ -1226,8 +1228,15 @@ runPhase SplitAs _input_fn dflags
io $ mapM_ assemble_file [1..n]
+ -- If there's a stub_o file, then we make it the n+1th split object.
+ PipeState{maybe_stub_o} <- getPipeState
+ n' <- case maybe_stub_o of
+ Nothing -> return n
+ Just stub_o -> do io $ copyFile stub_o (split_obj (n+1))
+ return (n+1)
+
-- join them into a single .o file
- io $ joinObjectFiles dflags (map split_obj [1..n]) output_fn
+ io $ joinObjectFiles dflags (map split_obj [1..n']) output_fn
return (next_phase, output_fn)
More information about the Cvs-ghc
mailing list