Re: gcc 3.3 build failure

Malcolm Wallace <[email protected]> Fri, 19 Sep 2003 10:31:52 +0100
Newsgroups gmane.comp.lang.haskell.nhc.bugs
Organization Dept of Computer Science, University of York
Message-ID <[email protected]>
Ian Lynagh <[email protected]> writes:

> My builds with gcc 3.3 on Linux are segfaulting.

We already saw a similar behaviour in the move from gcc-2.95 to
gcc-3.x, so although we have fixed it once, perhaps the cause is
similar.  I suspect a change in the alignment constraints inserted
into the assembler code.  nhc98 assumes and requires a
    .align 4
between constant arrays of unsigned long.  In gcc-3.0, these sometimes
inexplicably lengthened to
    .align 32
and there is an "evil mangler" in the nhc98 driver script which
converts them back to 4.

I suggest you run
   gcc -x c -S -Iinclude
on an arbitrary .hc file somewhere in the distribution package,
and examine the output .s file with "grep .align".  If any of the
numbers are neither 4 nor 32, then we have the culprit.

> which I think should be the two non-win32 patches from your website, the
> asmlong.h patch you committed to CVS, changing abort(-1) to abort() in
> src/runtime/Integer/alloca.c and protecting a trailing \ in
> src/prelude/List/Difference.hs with a comment.

Your extra bugfixes are noted, thanks.

> Also, your build system isn't very clear to me - what is the recommended
> way to use /usr/bin/gcc-2.95 as the C compiler?

The best way would be to set it up at configure time:

    CC=gcc-2.95 ./configure ...
    make basic

Regards,
    Malcolm