Profiling makes FFI Marshalling of Doubles and Int64s fail

Simon Marlow simonmar at
Wed Sep 15 05:23:38 EDT 2004

On 15 September 2004 00:33, Roberto Zunino wrote:

> However, compiling with
>    ghc -prof Main.hs test.c -#include test.h
> or s/-prof/-fvia-C/, works fine, provided test.h contains the correct
> function prototypes.
> ------ test.h
> long long myInt64(void);
> double myDouble(void);
> ------
> AFAICS, it seems as the asm code generator knows about the Haskell
> types and therefore knows how to fetch the bits correctly, while the
> via-C code generator simply uses the C function calls (without
> prototypes), so functions return types are defaulted to int.
> Also, you can try adding -Wall and see if the C compiler warns about
> this (mine does).
> The GHC user's guide (section 8.2.2) is also insightful. It seems that
> using C headers is pretty much required, or, as the guide itself says,
> "You're crazy not to do it". ;-)

This is correct.  You should get a warning from the C compiler even
without -Wall, because we turn on -Wimplicit to catch exactly these


More information about the Glasgow-haskell-users mailing list