[project @ 2005-01-23 06:10:15 by wolfgang]
[ghc-hetmet.git] / ghc / compiler / nativeGen / AsmCodeGen.lhs
index 95a5b6c..5844c89 100644 (file)
@@ -33,10 +33,8 @@ import UniqFM
 import Unique          ( Unique, getUnique )
 import UniqSupply
 import FastTypes
-#if darwin_TARGET_OS || (powerpc_TARGET_ARCH && linux_TARGET_OS)
 import List            ( groupBy, sortBy )
 import CLabel           ( pprCLabel )
-#endif
 import ErrUtils                ( dumpIfSet_dyn )
 import CmdLineOpts     ( DynFlags, DynFlag(..), dopt, opt_Static,
                          opt_EnsureSplittableC, opt_PIC )
@@ -123,7 +121,14 @@ nativeCodeGen dflags cmms us
           returnUs (Cmm cmms, my_vcat docs, concat imps)
     in do
     dumpIfSet_dyn dflags Opt_D_dump_opt_cmm "Optimised Cmm" (pprCmms [ppr_cmms])
-    return (insn_sdoc Pretty.$$ dyld_stubs imports)
+    return (insn_sdoc Pretty.$$ dyld_stubs imports
+#if HAVE_SUBSECTIONS_VIA_SYMBOLS
+                -- On recent versions of Darwin, the linker supports
+                -- dead-stripping of code and data on a per-symbol basis.
+                -- There's a hack to make this work in PprMach.pprNatCmmTop.
+            Pretty.$$ Pretty.text ".subsections_via_symbols"
+#endif
+            )
 
   where
 
@@ -133,7 +138,6 @@ nativeCodeGen dflags cmms us
 
     split_marker = CmmProc [] mkSplitMarkerLabel [] []
 
-#if darwin_TARGET_OS || (powerpc_TARGET_ARCH && linux_TARGET_OS)
         -- Generate "symbol stubs" for all external symbols that might
         -- come from a dynamic library.
 {-    dyld_stubs imps = Pretty.vcat $ map pprDyldSymbolStub $
@@ -155,9 +159,6 @@ nativeCodeGen dflags cmms us
         
         where doPpr lbl = (lbl, Pretty.render $ pprCLabel lbl astyle)
               astyle = mkCodeStyle AsmStyle
-#else
-    dyld_stubs imps = Pretty.empty
-#endif
 
 #ifndef NCG_DEBUG
     my_vcat sds = Pretty.vcat sds