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