On 10/11/2014 9:24 PM, Herbert Valerio Riedel wrote:
Consider the following trivial program:

     module Main where

     foreign import ccall unsafe "time.h tzset" c_tzset :: IO ()

     main :: IO()
     main = c_tzset

[...]
However, when loaded into GHCi, the RTS linker fails to find `tzset`:

     $ ghci tz.hs

[...]
     ByteCodeLink: can't find label
     During interactive linking, GHCi couldn't find the following symbol:
       tzset


Strange, I tried it under HaskellPlatform-2014.2, it works, I didn't see the
failure. And I tried it in both Windows cmd and msys2 shell.

However, when I prefix a `_` to the symbol-name in the FFI import, i.e.

     foreign import ccall unsafe "time.h tzset" c_tzset :: IO ()


I guess it should read:
foreign import ccall unsafe "time.h _tzset" c_tzset :: IO ()

It works too.

Actually both _tzset and tzset exist in include/time.h, only tzset is old
style name. They will be linked as the same function __imp__tzset.

--
cg



_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to