
On Tue, 21 Mar 2006 23:31:34 +0000
Duncan Coutts
Chris found that the problem is that gcc 4.1 is noticing that StgRunIsImplementedInAssembler is not actually used anywhere. It is in inline assembly in StgRunIsImplementedInAssembler that the global symbols StgRun and StgReturn are being defined. This is why it works on x86 and not on amd64, because on x86 it uses StgRun rather than StgRunIsImplementedInAssembler so the function (and the global syms defined therein) are not discarded.
So the solution is to get gcc to not discard the function by using the gcc __attribute__((used)). To make this portable we use the existing GNUC3_ATTRIBUTE macro, so it's: GNUC3_ATTRIBUTE(used).
The patch we are using in the Gentoo ebuild is here:
http://haskell.org/~gentoo/gentoo-haskell/portage/dev-lang/ghc/files/ghc-6.4...
Thanks a lot for this information, Duncan - finally I managed to rebuild ghc for FC5 in Fedora Extras with this patch. :) Jens