
John Hornkvist
Simon Marlow
writes: SIZEOF_mp_limb_t comes from DerivedConstants.h, and SIZEOF_VOID_P comes from ghcautoconf.h (both in ghc/includes). Both of these files should be from the target system for a cross-compile; I strongly suspect that one of them has been overwritten by the host version in your tree.
Those files got overwritten several times for me, too, despite following the instructions... I ended up watching for them to get overwritten and copying them back whenever that happened.
This is not really sufficient. I use "chflags uchg" to protect these files. At least you you will be noticed, when the overwrite tries to happen.
I've been trying to crosscompile for amd64-freebsd from Mac OS X, but although I seem to get all the hc files, the ghc-pkg-inplace crashes, and
Are you sure? The recommended procedure has a serious bug, which I discovered about 30 minutes ago. You need to do "make boot" in the rebuilding of ghc/lib/compat with the same flags as "make all", because libghccompat.a is built in "make boot" and you won't get the .hc files otherwise. Just look into ghc/lib/Compat subdirectories for .hc files.
so does ghc-inplace, with the following backtrace:
#0 0x00000000014f3ed0 in StgRun () #1 0x00000000014f09b5 in schedule () #2 0x00000000014f1386 in waitThread_ () #3 0x00000000014f12aa in scheduleWaitThread () #4 0x00000000014ee421 in rts_evalLazyIO () #5 0x00000000014edccf in main ()
Should I try to build again with debug symbols, or is that pointless for ghc output?
This is pointless, and typical for the sort of errors SM mentioned. I have got dozens of these in the process. Now let me report real progress. I have got it on FreeBSD-6.0-amd64 at last. Here are the steps on the host system, which are needed IIRC: cp ../../fptools-amd64/ghc-6.4.1/ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h} ghc/includes touch ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h,mkDerivedConstants.c} touch ghc/includes/{mkDerivedConstantsHdr,mkDerivedConstants.o,mkGHCConstants,mkGHCConstants.o} touch ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h} chflags uchg ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h} (cd glafp-utils && gmake boot && gmake) (cd ghc && gmake boot && gmake) (cd libraries && gmake boot && gmake) (cd ghc/compiler && gmake boot stage=2 && gmake stage=2) (cd ghc/lib/compat && gmake clean; rm .depend; gmake boot UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files'; gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files') (cd ghc/rts && gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files') (cd ghc/utils && gmake clean; gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files') gmake hc-file-bundle Project=Ghc Don't forget to delete Linker.c (for ghci). The stage on teh host system where the process fails jsut now is
$MAKE -C libraries boot all because Fake happy is not happy!
But ghc-inplace seems to work pretty good now on amd64. -- Dipl.-Math. Wilhelm Bernhard Kloke Institut fuer Arbeitsphysiologie an der Universitaet Dortmund Ardeystrasse 67, D-44139 Dortmund, Tel. 0231-1084-257