HeapStackCheck.cmm

Alexander Pakhomov ker0sin at yandex.ru
Tue Dec 10 21:43:42 UTC 2013


Thanks. I think preprocessor dump could help me:
cpp -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header -Iincludes/dist-ghcconstants/header -Irts -Irts/dist/build -DCOMPILING_RTS -Irts/dist/build -Irts/dist/build/autogen         rts/HeapStackCheck.cmm > cpp_dump
That is ghc-stage1 -> cpp and all options that cpp doesn't accept removed.
I hope ghc preprocessor is compatible with system C preprocessor.

11.12.2013, 01:06, "Simon Marlow" <marlowsd at gmail.com>:
> On 10/12/13 00:35, Alexander Pakhomov wrote:
>
>>  Hi. Trying to compile ghc HEAD on OpenBSD I got an error:
>>  rts/HeapStackCheck.cmm:97:18: parse error on input `['
>>  The code is following:
>>    96         if (HpAlloc <= BLOCK_SIZE
>>    97             && bdescr_link(CurrentNursery) != NULL) {
>>  which preprocesses to:
>>           if (HpAlloc <= (1<<12)
>>               && b0[CurrentNursery+15] != (0::bits64)) {
>>  This is the first occurrence of b0 in preprocessed file. I believe that it is due to undefined b0.
>>  Command that fails is:
>>  "inplace/bin/ghc-stage1" -static  -H32m -O -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header -Iincludes/dist-ghcconstants/header -Irts -Irts/dist/build -DCOMPILING_RTS -package-name rts -dcmm-lint      -i -irts -irts/dist/build -irts/dist/build/autogen -Irts/dist/build -Irts/dist/build/autogen           -O2    -c rts/HeapStackCheck.cmm -o rts/dist/build/HeapStackCheck.o
>>  To preprocess do the following:
>>  cpp -O -Iincludes -Iincludes/dist -Iincludes/dist-derivedconstants/header -Iincludes/dist-ghcconstants/header -Irts -Irts/dist/build -DCOMPILING_RTS -Irts/dist/build -Irts/dist/build/autogen         rts/HeapStackCheck.cmm | less
>>
>>  Can you please find source of b0 in preprocessed file?
>
> I think this means that something went wrong when generating
> DerivedConstants.h, which is where the definition of bdescr_link() comes
> from.  In my build, I have the following, in the file
> includes/dist-derivedconstants/header/:
>
> #define OFFSET_bdescr_link 16
> #define REP_bdescr_link b64
> #define bdescr_link(__ptr__) REP_bdescr_link[__ptr__+OFFSET_bdescr_link]
>
> This is auto-generated by the program in utils/deriveConstants.  This
> used to be a C program, but nowadays it's a Haskell program that
> generates a C program for reasons that I forget.  Anyway, your problem
> is somewhere in there... see if you can find out where by dumping out
> intermediate files and so forth.  If you get stuck, tell us where you
> get to and we'll try to help some more.
>
> Cheers,
> Simon


More information about the ghc-devs mailing list