From 4a32bf925b8aba7885d9c745769fe84a10979a53 Mon Sep 17 00:00:00 2001 From: Simon Brenner Date: Thu, 12 Nov 2015 11:10:54 +0100 Subject: Implement function-sections for Haskell code, #8405 This adds a flag -split-sections that does similar things to -split-objs, but using sections in single object files instead of relying on the Satanic Splitter and other abominations. This is very similar to the GCC flags -ffunction-sections and -fdata-sections. The --gc-sections linker flag, which allows unused sections to actually be removed, is added to all link commands (if the linker supports it) so that space savings from having base compiled with sections can be realized. Supported both in LLVM and the native code-gen, in theory for all architectures, but really tested on x86 only. In the GHC build, a new SplitSections variable enables -split-sections for relevant parts of the build. Test Plan: validate with both settings of SplitSections Reviewers: dterei, Phyx, austin, simonmar, thomie, bgamari Reviewed By: simonmar, thomie, bgamari Subscribers: hsyl20, erikd, kgardas, thomie Differential Revision: https://phabricator.haskell.org/D1242 GHC Trac Issues: #8405 --- compiler/ghc.mk | 3 +++ 1 file changed, 3 insertions(+) (limited to 'compiler/ghc.mk') diff --git a/compiler/ghc.mk b/compiler/ghc.mk index e3ea52acec..887a876b56 100644 --- a/compiler/ghc.mk +++ b/compiler/ghc.mk @@ -462,6 +462,9 @@ endif compiler_stage1_SplitObjs = NO compiler_stage2_SplitObjs = NO compiler_stage3_SplitObjs = NO +compiler_stage1_SplitSections = NO +compiler_stage2_SplitSections = NO +compiler_stage3_SplitSections = NO # There are too many symbols in the ghc package for a Windows DLL. # We therefore need to split some of the modules off into a separate -- cgit v1.2.1