Building ghc-6.4 on Solaris x86

Simon Marlow simonmarhaskell at gmail.com
Wed May 3 06:50:46 EDT 2006


Georg Sauthoff wrote:

> Ok, I tried[1] that and like I guessed, now I  get again the infamous
> 'Prologue junk?' error' again:
> 
> ../../ghc/compiler/ghc-inplace -H16m -O -O2 -static -I. -#include Prelude.h -#include Rts.h -#include RtsFlags.h -#include RtsUtils.h -#include StgRun.h -#include Schedule.h -#include Printer.h -#include Sanity.h -#include STM.h -#include Storage.h -#include SchedAPI.h -#include Timer.h -#include Itimer.h -#include ProfHeap.h -#include LdvProfile.h -#include Profiling.h -#include Apply.h -fvia-C -dcmm-lint     -c Apply.cmm -o Apply.o
> Prologue junk?: .globl stg_ap_0_ret
>         .type   stg_ap_0_ret, @function
> stg_ap_0_ret:
>         pushl   %ebp
>         movl    %esp, %ebp
> 
> make[2]: *** [Apply.o] Error 255
> make[1]: *** [all] Error 1
> make[1]: Leaving directory `/var/tmp/gsauthof/src/nothread/ghc-6.4.2/ghc'
> make: *** [build] Error 1
> 
> This error I don't understand. Doesn't the mangler expects the
> pushl/movl instructions? Isn't this a 'normal' sequence if the functions
> pushes local variables to the stack?
> 
> Ok, if I diff a raw_s file from linux against one from solaris x86, the
> pushl/movl sequences are deleted (and the '#NO_APP' command is replaced by
> '/NO_APP').

You shouldn't see the %ebp instructions, because gcc should be invoked 
with -fomit-frame-pointer.  Is it possible that somehow part of your 
build thinks it is unregisterised?

Try running GHC with -v, see whether the -fomit-frame-pointer flag is 
being passed to gcc.  If not, try to find out why - it should be added 
by code in ghc/compiler/main/DriverFlags.hs.

Cheers,
	Simon


More information about the Glasgow-haskell-users mailing list