X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FnativeGen%2FAsmCodeGen.lhs;h=5844c89e08aa74a6e43ef631a3f66b644606a373;hb=6ac3317e3c882d2010ceb5cdd3c059633860cd42;hp=95a5b6c06b628513bfd7e52047593fe126724efa;hpb=6b46a9846976ac8a4259dff36c043372decf8730;p=ghc-hetmet.git diff --git a/ghc/compiler/nativeGen/AsmCodeGen.lhs b/ghc/compiler/nativeGen/AsmCodeGen.lhs index 95a5b6c..5844c89 100644 --- a/ghc/compiler/nativeGen/AsmCodeGen.lhs +++ b/ghc/compiler/nativeGen/AsmCodeGen.lhs @@ -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