#5503: 32-bit testsuite failures
----------------------------------+-----------------------------------------
Reporter: daniel.is.fischer | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.3 | Keywords:
Testcase: | Blockedby:
Os: Linux | Blocking:
Architecture: x86 | Failure: None/Unknown
----------------------------------+-----------------------------------------
Comment(by daniel.is.fischer):
Indeed, in `System.Posix.Resource`, things have changed. For my venerable
7.0.4, it was
{{{
getResourceLimit :: Resource -> IO ResourceLimits
getResourceLimit res = do
allocaBytes (16) $ \p_rlimit -> do
{-# LINE 71 "libraries/unix/./System/Posix/Resource.hsc" #-}
throwErrnoIfMinus1 "getResourceLimit" $
c_getrlimit (packResource res) p_rlimit
soft <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) p_rlimit
{-# LINE 74 "libraries/unix/./System/Posix/Resource.hsc" #-}
hard <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) p_rlimit
{-# LINE 75 "libraries/unix/./System/Posix/Resource.hsc" #-}
return (ResourceLimits {
softLimit = unpackRLimit soft,
hardLimit = unpackRLimit hard
})
setResourceLimit :: Resource -> ResourceLimits -> IO ()
setResourceLimit res ResourceLimits{softLimit=soft,hardLimit=hard} = do
allocaBytes (16) $ \p_rlimit -> do
{-# LINE 83 "libraries/unix/./System/Posix/Resource.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p_rlimit (packRLimit soft True)
{-# LINE 84 "libraries/unix/./System/Posix/Resource.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 8)) p_rlimit (packRLimit hard False)
{-# LINE 85 "libraries/unix/./System/Posix/Resource.hsc" #-}
throwErrnoIfMinus1 "setResourceLimit" $
c_setrlimit (packResource res) p_rlimit
return ()
}}}
and HEAD's .hsc source got converted to
{{{
getResourceLimit :: Resource -> IO ResourceLimits
getResourceLimit res = do
allocaBytes (8) $ \p_rlimit -> do
{-# LINE 74 "libraries/unix/./System/Posix/Resource.hsc" #-}
throwErrnoIfMinus1 "getResourceLimit" $
c_getrlimit (packResource res) p_rlimit
soft <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) p_rlimit
{-# LINE 77 "libraries/unix/./System/Posix/Resource.hsc" #-}
hard <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p_rlimit
{-# LINE 78 "libraries/unix/./System/Posix/Resource.hsc" #-}
return (ResourceLimits {
softLimit = unpackRLimit soft,
hardLimit = unpackRLimit hard
})
setResourceLimit :: Resource -> ResourceLimits -> IO ()
setResourceLimit res ResourceLimits{softLimit=soft,hardLimit=hard} = do
allocaBytes (8) $ \p_rlimit -> do
{-# LINE 86 "libraries/unix/./System/Posix/Resource.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 0)) p_rlimit (packRLimit soft True)
{-# LINE 87 "libraries/unix/./System/Posix/Resource.hsc" #-}
((\hsc_ptr -> pokeByteOff hsc_ptr 4)) p_rlimit (packRLimit hard False)
{-# LINE 88 "libraries/unix/./System/Posix/Resource.hsc" #-}
throwErrnoIfMinus1 "setResourceLimit" $
c_setrlimit (packResource res) p_rlimit
return ()
}}}
Which is very odd, because on the one hand, gcc confirms that
sizeof(struct rlimit) is 8 (and sizeof(rlim_t) = 4), but on the other
hand, resourceLimit passes with 7.0.4 which works with 16 resp. 8.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5503#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs