4.08.2: foreign export dynamic broken for CTypes
Here the first nasty bug in the 4.08.2 release :-/
Given the module
import Addr
import CTypes
foreign export ccall dynamic
mkHandler :: (CInt -> IO ()) -> IO Addr
main = print 42
4.08.2 when invoked with
ghc -fglasgow-exts -o test test.hs
dies with
In file included from test_stub.c:1,
test_stub.h:2:63: warning: no newline at end of file
test_stub.c:11:1: warning: no newline at end of file
In file included from test_stub.c:2,
test_stub.h:2: parse error before `StgCInt'
test_stub.c:4: parse error before `StgCInt'
test_stub.c:8: `a0' undeclared (first use in this function)
test_stub.c:8: (Each undeclared identifier is reported only once
test_stub.c:8: for each function it appears in.)
test_stub.c:8: warning: implicit declaration of function `rts_mkCInt'
test_stub.c:8: `a1' undeclared (first use in this function)
test_stub.c:8: warning: passing arg 2 of `rts_apply' makes pointer from integer without a cast
The reason is that it generates the non-existent type `StgCInt' in the _stub file. 4.11 generates `HsInt32' instead (or whatever size it has on the current architecture, I hope), which works fine.
Trac metadata
| Trac field | Value |
|---|---|
| Version | None |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | ResolvedFixed |
| Component | Compiler (FFI) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |