diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile
index 293ec5cba21fba70a50ba6b14b9338d69d5a2bfd..413f59e474b2289eab57dd0f657ea7809c232ed5 100644
--- a/ghc/compiler/Makefile
+++ b/ghc/compiler/Makefile
@@ -1,5 +1,5 @@
 # -----------------------------------------------------------------------------
-# $Id: Makefile,v 1.102 2000/10/30 09:52:14 simonpj Exp $
+# $Id: Makefile,v 1.103 2000/10/30 11:18:14 sewardj Exp $
 
 TOP = ..
 include $(TOP)/mk/boilerplate.mk
@@ -366,7 +366,7 @@ parser/Parser.hs : parser/Parser.y
 #-----------------------------------------------------------------------------
 # 		Linking
 
-SRC_LD_OPTS += -no-link-chk
+SRC_LD_OPTS += -no-link-chk -ldl
 
 ifneq "$(GhcWithHscBuiltViaC)" "YES"
 ifeq "$(GhcReportCompiles)" "YES"
diff --git a/ghc/compiler/main/DriverPipeline.hs b/ghc/compiler/main/DriverPipeline.hs
index 092b9243325a780b8f5dc3127a3ba4a841189d6d..8f1cb2b26fda2b380332a840804a36ae7dcc3922 100644
--- a/ghc/compiler/main/DriverPipeline.hs
+++ b/ghc/compiler/main/DriverPipeline.hs
@@ -1,5 +1,5 @@
 -----------------------------------------------------------------------------
--- $Id: DriverPipeline.hs,v 1.10 2000/10/27 13:50:25 sewardj Exp $
+-- $Id: DriverPipeline.hs,v 1.11 2000/10/30 11:18:14 sewardj Exp $
 --
 -- GHC Driver
 --
@@ -413,7 +413,7 @@ run_phase Hsc basename suff input_fn output_fn
   -- only do this if we're eventually going to generate a .o file.
   -- (ToDo: do when generating .hc files too?)
   --
-  -- Setting source_unchanged to "-fsource_unchanged" means that M.o seems
+  -- Setting source_unchanged to "-fsource-unchanged" means that M.o seems
   -- to be up to date wrt M.hs; so no need to recompile unless imports have
   -- changed (which the compiler itself figures out).
   -- Setting source_unchanged to "" tells the compiler that M.o is out of
@@ -448,6 +448,7 @@ run_phase Hsc basename suff input_fn output_fn
   -- run the compiler!
         pcs <- initPersistentCompilerState
 	result <- hscMain dyn_flags{ hscOutName = output_fn }
+			  (source_unchanged == "-fsource-unchanged")
 			  summary 
 			  Nothing	 -- no iface
 			  emptyModuleEnv -- HomeSymbolTable
@@ -749,6 +750,7 @@ compile summary old_iface hst hit pcs = do
 
    -- run the compiler
    hsc_result <- hscMain dyn_flags{ hscOutName = output_fn } 
+			 (panic "compile:source_unchanged")
                          summary old_iface hst hit pcs
 
    case hsc_result of {
diff --git a/ghc/compiler/main/HscMain.lhs b/ghc/compiler/main/HscMain.lhs
index b22d33dc6111851cdd8c1224c3a12cee238b5aa0..45eaed42e11b1cae0afa70aa478ef5f3ac79e668 100644
--- a/ghc/compiler/main/HscMain.lhs
+++ b/ghc/compiler/main/HscMain.lhs
@@ -86,6 +86,7 @@ data HscResult
 
 hscMain
   :: DynFlags
+  -> Bool	      -- source unchanged?
   -> ModSummary       -- summary, including source filename
   -> Maybe ModIface   -- old interface, if available
   -> HomeSymbolTable		-- for home module ModDetails
@@ -93,11 +94,11 @@ hscMain
   -> PersistentCompilerState    -- IN: persistent compiler state
   -> IO HscResult
 
-hscMain dflags summary maybe_old_iface hst hit pcs
+hscMain dflags source_unchanged summary maybe_old_iface hst hit pcs
  = do {
       -- ????? source_unchanged :: Bool -- extracted from summary?
-      let source_unchanged = trace "WARNING: source_unchanged?!" False
-      ;
+      --let source_unchanged = trace "WARNING: source_unchanged?!" False
+      --;
       putStrLn "checking old iface ...";
       (pcs_ch, check_errs, (recomp_reqd, maybe_checked_iface))
          <- checkOldIface dflags hit hst pcs (ms_mod summary)