Cross-build for QNX ARM smashes stack when using FunPtr wrappers
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)
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (FFI) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | nathan.huesken@posteo.de |
| Operating system | Unknown/Multiple |
| Architecture |