Build ghc with hardened toolchain

章宏九 secludedsage at gmail.com
Fri Nov 27 09:14:17 EST 2009


Sorry, it is about ghc.wrapper. Add the options here to solve the
problem. Thanks.

2009/11/24 章宏九 <secludedsage at gmail.com>:
> Hello.
>
> I am using Gentoo with hardened features enabled. Recently i want to
> try yi-editor. I built GHC with emerge and nothing strange happened.
> However, I got following error information when i built yi:
>
> Building yi-0.6.1...
> [  1 of 119] Compiling System.FriendlyPath ( System/FriendlyPath.hs,
> dist/build/System/FriendlyPath.o )
> [  2 of 119] Compiling Shim.ProjectContent ( Shim/ProjectContent.hs,
> dist/build/Shim/ProjectContent.o )
> [  3 of 119] Compiling Parser.Incremental ( Parser/Incremental.hs,
> dist/build/Parser/Incremental.o )
> [  4 of 119] Compiling Data.Trie        ( Data/Trie.hs, dist/build/Data/Trie.o
> )
> [  5 of 119] Compiling Data.DelayList   ( Data/DelayList.hs,
> dist/build/Data/DelayList.o )
> [  6 of 119] Compiling Data.Rope        ( Data/Rope.hs, dist/build/Data/Rope.o
> )
> [  7 of 119] Compiling Data.Prototype   ( Data/Prototype.hs,
> dist/build/Data/Prototype.o )
> [  8 of 119] Compiling HConf.Utils      ( HConf/Utils.hs,
> dist/build/HConf/Utils.o )
> [  9 of 119] Compiling HConf.Paths      ( HConf/Paths.hs,
> dist/build/HConf/Paths.o )
> [ 10 of 119] Compiling Paths_yi         ( dist/build/autogen/Paths_yi.hs,
> dist/build/Paths_yi.o )
> [ 11 of 119] Compiling HConf            ( HConf.hs, dist/build/HConf.o )
> [ 12 of 119] Compiling Yi.Char.Unicode  ( Yi/Char/Unicode.hs,
> dist/build/Yi/Char/Unicode.o )
> [ 13 of 119] Compiling Yi.UI.Common[boot] ( Yi/UI/Common.hs-boot,
> dist/build/Yi/UI/Common.o-boot )
> [ 14 of 119] Compiling Yi.String        ( Yi/String.hs, dist/build/Yi/String.o
> )
> [ 15 of 119] Compiling Yi.Monad         ( Yi/Monad.hs, dist/build/Yi/Monad.o )
> [ 16 of 119] Compiling Yi.Keymap.Completion ( Yi/Keymap/Completion.hs,
> dist/build/Yi/Keymap/Completion.o )
> [ 17 of 119] Compiling Yi.Editor[boot]  ( Yi/Editor.hs-boot,
> dist/build/Yi/Editor.o-boot )
> [ 18 of 119] Compiling Yi.Debug         ( Yi/Debug.hs, dist/build/Yi/Debug.o )
> [ 19 of 119] Compiling Yi.Prelude       ( Yi/Prelude.hs,
> dist/build/Yi/Prelude.o )
> [ 20 of 119] Compiling Yi.Dynamic       ( Yi/Dynamic.hs,
> dist/build/Yi/Dynamic.o )
> [ 21 of 119] Compiling Yi.Event         ( Yi/Event.hs, dist/build/Yi/Event.o )
> [ 22 of 119] Compiling Yi.Interact      ( Yi/Interact.hs,
> dist/build/Yi/Interact.o )
> [ 23 of 119] Compiling Yi.Keymap[boot]  ( Yi/Keymap.hs-boot,
> dist/build/Yi/Keymap.o-boot )
> [ 24 of 119] Compiling Yi.Style         ( Yi/Style.hs, dist/build/Yi/Style.o )
> [ 25 of 119] Compiling Yi.Style.Library ( Yi/Style/Library.hs,
> dist/build/Yi/Style/Library.o )
> [ 26 of 119] Compiling Yi.Interpreter   ( Yi/Interpreter.hs,
> dist/build/Yi/Interpreter.o )
> [ 27 of 119] Compiling Shim.Utils       ( Shim/Utils.hs,
> dist/build/Shim/Utils.o )
> [ 28 of 119] Compiling Shim.CabalInfo   ( Shim/CabalInfo.hs,
> dist/build/Shim/CabalInfo.o )
> [ 29 of 119] Compiling Yi.Buffer.Misc[boot] ( Yi/Buffer/Misc.hs-boot,
> dist/build/Yi/Buffer/Misc.o-boot )
> [ 30 of 119] Compiling Yi.Buffer.Basic  ( Yi/Buffer/Basic.hs,
> dist/build/Yi/Buffer/Basic.o )
> ghc: /usr/lib/ghc-6.10.4/ghc-prim-0.1.0.0/HSghc-prim-0.1.0.0.o: unknown symbol
> `_GLOBAL_OFFSET_TABLE_'
> Loading package ghc-prim ... linking ... ghc: unable to load package `ghc-prim'
>
> I notice that Gentoo has already done some works about disabling
> hardened features temporarily for Haskell. Here is the mk/build.mk:
>
> # Gentoo changes
> docdir = /usr/share/doc/ghc-6.10.4
> htmldir = /usr/share/doc/ghc-6.10.4
> SRC_HC_OPTS+= -optc-march=native -opta-march=native -optc-nopie
> -optl-nopie -optc-fno-PIE -opta-Wa,--noexecstack
> SRC_CC_OPTS+=-O2 -march=native -pipe -nopie -Wa,--noexecstack
> XMLDocWays=
> HADDOCK_DOCS=NO
> SRC_HC_OPTS+=-w
>
> While talking on IRC (#gentoo-haskell and #haskell) I was told that
> this might be caused by a broken GHC. Although above shows that PIE
> are disabled, ghc-prim (maybe at least) is still built with PIE
> enabled. According to advice from #gentoo-haskell, I was told to seek
> for help here.
>
> I also submit a bug about it as #3668. (Very sorry that I ask
> everywhere. Forgive me, but until yesterday I forgot my password of my
> gmail and cannot join a mailling-list.) Thank igloo told me add
> "-nopie" in SRC_LD_OPTS. I did but still failed:
>
> ------------------------------------------------------------------------
> == make boot - --no-print-directory -r --jobserver-fds=3,4 -
> --jobserver-fds=3,4 -j;
>  in /var/tmp/portage/dev-lang/ghc-6.10.4/work/ghc-6.10.4/utils/genapply
> ------------------------------------------------------------------------
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/usr/bin/ghc -package-conf
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/ghc-6.10.4/libraries/bootstrapping.conf
> -H32m -O -optc-march=native -opta-march=native -optc-nopie -optl-nopie
> -opta-Wa,--noexecstack -w -package pretty -fforce-recomp    -c
> GenApply.hs -o GenApply.o  -ohi GenApply.hi
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/usr/bin/ghc -M -dep-makefile
> .depend  -osuf o -package-conf
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/ghc-6.10.4/libraries/bootstrapping.conf
>   -package-conf
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/ghc-6.10.4/libraries/bootstrapping.conf
> -H32m -O -optc-march=native -opta-march=native -optc-nopie -optl-nopie
> -opta-Wa,--noexecstack -w -package pretty -fforce-recomp GenApply.hs
> /var/tmp/portage/dev-lang/ghc-6.10.4/work/usr/bin/ghc -o genapply
> -package-conf /var/tmp/portage/dev-lang/ghc-6.10.4/work/ghc-6.10.4/libraries/bootstrapping.conf
> -H32m -O -optc-march=native -opta-march=native -optc-nopie -optl-nopie
> -opta-Wa,--noexecstack -w -package pretty -fforce-recomp    -nopie
> GenApply.o
> ghc: unrecognised flags: -nopie
> Usage: For basic information, try the `--help' option.
> make[2]: *** [genapply] Error 1
> Failed making boot in genapply: 1
> make[1]: *** [boot] Error 1
> make: *** [stage1] Error 1
>
> I am surprised that why "-nopie" is sent here. Since wiki only told me
> to see config.mk.in and it does not have any examples, I have no idea
> about SRC_LD_OPTS.
>
> I need help how to completely disable PIE for GHC. Thank you very much.
>
>
> Hongjiu Zhang
>


More information about the Glasgow-haskell-users mailing list