[GHC] #5664: Missing checks for FFI declaration types
GHC
cvs-ghc at haskell.org
Tue Apr 3 10:35:27 CEST 2012
#5664: Missing checks for FFI declaration types
---------------------------------+------------------------------------------
Reporter: simonmar | Owner: pcapriotti
Type: bug | Status: new
Priority: normal | Milestone: 7.6.1
Component: Compiler (FFI) | Version: 7.2.1
Keywords: | Os: Unknown/Multiple
Architecture: Unknown/Multiple | Failure: GHC accepts invalid program
Difficulty: Unknown | Testcase:
Blockedby: | Blocking:
Related: |
---------------------------------+------------------------------------------
Comment(by pcapriotti):
Here is the relevant portion of the FFI specification in the Haskell 2010
report:
{{{
Dynamic import.
The type of a dynamic stub has to be of the form (FunPtr ft) -> ft, where
ft may be any foreign type.
As an example, consider
foreign import ccall "dynamic"
mkFun :: FunPtr (CInt -> IO ()) -> (CInt -> IO ())
The stub factory mkFun converts any pointer to a C function that gets an
integer value as its only argument and does not have a return value into a
corresponding Haskell function.
Dynamic wrapper.
The type of a wrapper stub has to be of the form ft -> IO (FunPtr ft),
where ft may be any foreign type.
As an example, consider
foreign import ccall "wrapper"
mkCallback :: IO () -> IO (FunPtr (IO ()))
The stub factory mkCallback turns any Haskell computation of type IO ()
into a C function pointer that can be passed to C routines, which can call
back into the Haskell context by invoking the referenced function.
}}}
We are currently checking whether the signature of a dynamic (resp.
wrapper) import has a `FunPtr` argument (resp. result), but not if the
wrapped function type is correct.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5664#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list