
#7621: Cross-build for QNX ARM smashes stack when using FunPtr wrappers -----------------------------+---------------------------------------------- Reporter: singpolyma | Owner: Type: bug | Status: new Priority: normal | Component: Compiler (FFI) Version: 7.6.1 | Keywords: qnx unregistered cross-compile Os: Unknown/Multiple | Architecture: arm Failure: Runtime crash | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- I have built an unregistered LLVM cross-compiler for arm-unknown-nto- qnx8.0.0eabi, which I finally got to build using the attached patch. Simple programs no longer crash like they do in registered ARM cross- compilers (as reported on mailing list at http://www.haskell.org/pipermail /ghc-devs/2013-January/000005.html and other places), however the following code does crash: {{{ {-# LANGUAGE ForeignFunctionInterface #-} module Main (main) where import Foreign.Ptr foreign import ccall "wrapper" wrap_refresh :: ( IO ()) -> IO (FunPtr ( IO ())) main :: IO () main = do wrap_refresh (return ()) return () }}} It seems, from experiments, that any code using the "wrapper" imports causes this error: {{{ $ ./Main *** stack smashing detected ***: Main terminated Abort (core dumped) }}} -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7621 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler