Skip to content

ghc-7.2.1-rc1 broke unregisterised build

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 <batterseapower@hotmail.com>
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!

Trac metadata
Trac field Value
Version
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC batterseapower@hotmail.com
Operating system Linux
Architecture alpha
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information