This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, dear libffi list! Some time ago ghc project[1] switched to libffi to handle foreign calls from/to external world. When I tried ghc on powerpc64 I got some problems which I believe are result of that switch. In one of FFI call types ghc uses C code generation and produces following code: void haskell_closure_called_from_c( void *cif __UNUSED__, void* resp, void** args, void* haskell_runtime) { HaskellObj ret; HsInt32 cret; ret = RT_CALL(haskell_runtime(args)); cret=rts_getInt32(ret); *(HsInt32*)resp = cret; /* <- is that corrct code? */ } ghc passes pointer to HsInt32 as a 'resp' parameter when calls this function. So I wrote some tests[2] and ask you, dear list, are those tests correct or they use libffi incorrectly? (Similar example was added to yet-unapplied patches recently[3], but it does not _check_ closure return value) Those tests work on i386, x86_64, but do not work on powerpc64: FAIL: libffi.call/closure_sint_retval.c -O0 -W -Wall output pattern test, is call 123: 444 res: -988098224 ? should match call 123: 444 res: 444 FAIL: libffi.call/closure_uint16_retval.c -O0 -W -Wall output pattern test, is call 123: 444 res: 34576 ? should match call 123: 444 res: 444 FAIL: libffi.call/closure_uint32_retval.c -O0 -W -Wall output pattern test, is call 123: 444 res: -740774672 ? should match call 123: 444 res: 444 Thank you! [1] http://haskell.org/ghc/ The Glasgow Haskell Compiler [2] http://github.com/trofi/libffi/commit/bf0633dede571789bd20dda84556f92b929d4834 tests for simple return values [3] http://github.com/atgreen/libffi/commit/edfdfd2e85b8d01d2455934f1d7f4d7eb2f3cf1c closure example -- Sergei
Attachment:
signature.asc
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |