#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

Reply via email to