#5357: ghc-7.2.1-rc1 broke unregisterised build
-----------------------+----------------------------------------------------
Reporter: slyfox | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: | Keywords:
Testcase: | Blockedby:
Os: Linux | Blocking:
Architecture: alpha | Failure: Building GHC failed
-----------------------+----------------------------------------------------
Tried to build unregisterised ghc:
{{{
"inplace/bin/ghc-stage1" -keep-tmp-files -H32m -O -optc-mieee -opta-mieee
-optc-mcpu=ev4 -opta-mcpu=ev4 -w -package-name integer-gmp-0.3.0.0
-hide-all-packages -i -ilibraries/integer-gmp/. -ilibraries/integer-gmp
/dist-install/build -ilibraries/integer-gmp/dist-install/build/autogen
-Ilibraries/integer-gmp/dist-install/build -Ilibraries/integer-gmp/dist-
install/build/autogen -Ilibraries/integer-gmp/. -optP-include
-optPlibraries/integer-gmp/dist-install/build/autogen/cabal_macros.h
-package ghc-prim-0.2.0.0 -package-name integer-gmp -XHaskell98 -XCPP
-XMagicHash -XUnboxedTuples -XNoImplicitPrelude -XForeignFunctionInterface
-XUnliftedFFITypes -O2 -no-user-package-conf -rtsopts -odir libraries
/integer-gmp/dist-install/build -hidir libraries/integer-gmp/dist-
install/build -stubdir libraries/integer-gmp/dist-install/build -hisuf hi
-osuf o -hcsuf hc -c libraries/integer-gmp/./GHC/Integer/Type.hs -o
libraries/integer-gmp/dist-install/build/GHC/Integer/Type.o
/var/tmp/portage/dev-
lang/ghc-7.2.0.20110728/temp/ghc11901_0/ghc11901_0.hc:33:0:
error: static declaration of
‘integerzmgmp_GHCziIntegerziType_Szh_info’ follows non-static declaration
/var/tmp/portage/dev-
lang/ghc-7.2.0.20110728/temp/ghc11901_0/ghc11901_0.hc:6:0:
error: previous declaration of
‘integerzmgmp_GHCziIntegerziType_Szh_info’ was here
/var/tmp/portage/dev-
lang/ghc-7.2.0.20110728/temp/ghc11901_0/ghc11901_0.hc:64:0:
error: static declaration of
‘integerzmgmp_GHCziIntegerziType_Jzh_info’ follows non-static declaration
/var/tmp/portage/dev-
lang/ghc-7.2.0.20110728/temp/ghc11901_0/ghc11901_0.hc:36:0:
error: previous declaration of
‘integerzmgmp_GHCziIntegerziType_Jzh_info’ was here
make[1]: *** [libraries/integer-gmp/dist-install/build/GHC/Integer/Type.o]
Error 1
}}}
And yes, the .hs file contains incoherent declarations:
{{{
EI_(integerzmgmp_GHCziIntegerziType_Szh_info);
StgWord integerzmgmp_GHCziIntegerziType_Szh_closure[] = {
(W_)&integerzmgmp_GHCziIntegerziType_Szh_info
};
...
static StgWord integerzmgmp_GHCziIntegerziType_Szh_info[] = {
(W_)&integerzmgmp_GHCziIntegerziType_Szh_entry, 0x0, 0xfUL, 0x100000004UL
};
}}}
The architecture is alpha-linux, but I think it's a generic problem.
Looks like it's occured after Max's (CCed) _info export change:
{{{
commit dd391759500ab2b6abd23d502ade7ff8946c780f
Author: Max Bolingbroke <[email protected]>
Date: Wed Jul 6 18:01:02 2011 +0100
Don't export the _info symbol for the data constructor worker bindings
This is safe because GHC never generates a fast call to a data
constructor
worker: if the call is seen statically it will be eta-expanded and the
allocation of the data will be inlined. We still need to export the
_closure
in case the constructor is used in an unapplied fashion.
}}}
Thanks!
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5357>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs