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