
#11211: Please add initial platform support for sparc64 ----------------------------------------+------------------------------ Reporter: glaubitz | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.2 Resolution: | Keywords: Operating System: Linux | Architecture: Other Type of failure: Building GHC failed | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | ----------------------------------------+------------------------------ Description changed by nomeata: Old description:
Hello!
I have successfully bootstrapped ghc for sparc64 on Debian unstable by cross-compiling it on amd64, then installing it manually into a build root and rebuild the Debian package.
Unfortunately, the buildds can currently neither compile ghc itself nor any Haskell packages as gcc always passes "-relax" to the GNU linker which will fail as ghc passes "-Wl,-r" [1]:
"/usr/bin/ghc" -hisuf hi -osuf o -hcsuf hc -static -H32m -O -lffi -optl-pthread -package-db libraries/bootstrapping.conf -this-package- key termi_6iVf4EBnOgfIaaOCLRs8jl -hide-all-packages -i -ilibraries/terminfo/. -ilibraries/terminfo/dist-boot/build -ilibraries/terminfo/dist-boot/build/autogen -Ilibraries/terminfo/dist- boot/build -Ilibraries/terminfo/dist-boot/build/autogen -Ilibraries/terminfo/. -optP-include -optPlibraries/terminfo/dist- boot/build/autogen/cabal_macros.h -package-key base_HQfYBxpPvuw8OunzQu6JGM -Wall -XHaskell2010 -no-user-package-db -rtsopts -odir libraries/terminfo/dist-boot/build -hidir libraries/terminfo/dist-boot/build -stubdir libraries/terminfo/dist- boot/build -c libraries/terminfo/./System/Console/Terminfo/Base.hs -o libraries/terminfo/dist-boot/build/System/Console/Terminfo/Base.o /usr/bin/ld: --relax and -r may not be used together collect2: error: ld returned 1 exit status make[3]: *** [libraries/terminfo/dist- boot/build/System/Console/Terminfo/Base.o] Error 1 libraries/terminfo/ghc.mk:3: recipe for target 'libraries/terminfo/dist- boot/build/System/Console/Terminfo/Base.o' failed
This issue has already been fixed in ghc but that was for sparc only and not sparc64 [2].
Thus, in order to be able to apply the same fix from [2], ghc needs to add sparc64 to its list of known architectures (currently "sparc64" matches to "ArchUnknown" in aclocal.m4") and then extend the fix from [2] to match *both* sparc *and* sparc64 (please don't drop sparc here).
In particular, I suggest adding sparc64 in the same way that Alpha, Mipseb and Mipsel were added [3], thus matching "sparc64" to "ArchSPARC64", then extending the if-clause from [4] to set "-Wl,-no- relax" for *both* ArchSPARC *and* ArchSPARC64.
Thanks, Adrian
[1] https://buildd.debian.org/status/fetch.php?pkg=ghc&arch=sparc64&ver=7.10.3-3&stamp=1449983921 [2] https://ghc.haskell.org/trac/ghc/ticket/3791 [3] https://git.haskell.org/ghc.git/commitdiff/9756690fe7aa26aee6955d0b720377d53... [4] https://git.haskell.org/ghc.git/commitdiff/3b322660f82d0c7c4f7d02523367ebd0e...
New description: Hello! I have successfully bootstrapped ghc for sparc64 on Debian unstable by cross-compiling it on amd64, then installing it manually into a build root and rebuild the Debian package. Unfortunately, the buildds can currently neither compile ghc itself nor any Haskell packages as gcc always passes "-relax" to the GNU linker which will fail as ghc passes "-Wl,-r" (1): {{{ "/usr/bin/ghc" -hisuf hi -osuf o -hcsuf hc -static -H32m -O -lffi -optl- pthread -package-db libraries/bootstrapping.conf -this-package-key termi_6iVf4EBnOgfIaaOCLRs8jl -hide-all-packages -i -ilibraries/terminfo/. -ilibraries/terminfo/dist-boot/build -ilibraries/terminfo/dist- boot/build/autogen -Ilibraries/terminfo/dist-boot/build -Ilibraries/terminfo/dist-boot/build/autogen -Ilibraries/terminfo/. -optP-include -optPlibraries/terminfo/dist- boot/build/autogen/cabal_macros.h -package-key base_HQfYBxpPvuw8OunzQu6JGM -Wall -XHaskell2010 -no-user-package-db -rtsopts -odir libraries/terminfo/dist-boot/build -hidir libraries/terminfo/dist- boot/build -stubdir libraries/terminfo/dist-boot/build -c libraries/terminfo/./System/Console/Terminfo/Base.hs -o libraries/terminfo /dist-boot/build/System/Console/Terminfo/Base.o /usr/bin/ld: --relax and -r may not be used together collect2: error: ld returned 1 exit status make[3]: *** [libraries/terminfo/dist- boot/build/System/Console/Terminfo/Base.o] Error 1 libraries/terminfo/ghc.mk:3: recipe for target 'libraries/terminfo/dist- boot/build/System/Console/Terminfo/Base.o' failed }}} This issue has already been fixed in ghc but that was for sparc only and not sparc64 (2). Thus, in order to be able to apply the same fix from (2), ghc needs to add sparc64 to its list of known architectures (currently "sparc64" matches to "ArchUnknown" in aclocal.m4") and then extend the fix from (2) to match *both* sparc *and* sparc64 (please don't drop sparc here). In particular, I suggest adding sparc64 in the same way that Alpha, Mipseb and Mipsel were added (3), thus matching "sparc64" to "ArchSPARC64", then extending the if-clause from (4) to set "-Wl,-no-relax" for *both* ArchSPARC *and* ArchSPARC64. Thanks, Adrian * (1) https://buildd.debian.org/status/fetch.php?pkg=ghc&arch=sparc64&ver=7.10.3-3&stamp=1449983921 * (2) https://ghc.haskell.org/trac/ghc/ticket/3791 * (3) https://git.haskell.org/ghc.git/commitdiff/9756690fe7aa26aee6955d0b720377d53... * (4) https://git.haskell.org/ghc.git/commitdiff/3b322660f82d0c7c4f7d02523367ebd0e... -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11211#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler