diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,45 +1,7 @@
 #!/usr/bin/env runhaskell
--- Cf. <http://www.mail-archive.com/haskell-cafe@haskell.org/msg59984.html>
 
-{-# OPTIONS_GHC -Wall -fwarn-tabs -fno-warn-missing-signatures #-}
 module Main (main) where
 import Distribution.Simple
-import Distribution.Simple.LocalBuildInfo (withPrograms, buildDir)
-import Distribution.Simple.Program        (userSpecifyArgs)
-import System.Directory
-import System.FilePath
-import Control.Monad (forM_)
-----------------------------------------------------------------
 
--- | The list of generated files to remove. /N.B./, watch your file
--- extensions.
---
--- TODO: this should be discovered dynamically.
-generatedFiles :: [FilePath]
-generatedFiles =
-    [ "System/Posix/Types/Iovec.hs"
-    ]
-
-
--- | Define __HADDOCK__ when building documentation.
 main :: IO ()
-main = defaultMainWithHooks
-    $ simpleUserHooks `modify_haddockHook` \oldHH pkg lbi hooks flags -> do
-            
-        -- Horrible hack to force re-processing of the @.hsc@ files.
-        -- Otherwise the __HADDOCK__ macro doesn't end up being defined
-        -- because Cabal will reuse the processed file from before.
-        forM_ generatedFiles $ \file ->
-            removeFile (buildDir lbi </> file) `catch` \_ -> return ()
-        
-        -- Call the old haddockHook with a modified LocalBuildInfo
-        (\lbi' -> oldHH pkg lbi' hooks flags)
-            $ lbi `modify_withPrograms` \oldWP ->
-                userSpecifyArgs "hsc2hs" ["-D__HADDOCK__"] oldWP
-
-
-modify_haddockHook  hooks f = hooks { haddockHook  = f (haddockHook  hooks) }
-modify_withPrograms lbi   f = lbi   { withPrograms = f (withPrograms lbi)   }
-
-----------------------------------------------------------------
------------------------------------------------------------ fin.
+main  = defaultMain
diff --git a/VERSION b/VERSION
--- a/VERSION
+++ b/VERSION
@@ -1,3 +1,6 @@
+0.3.5.4 (2012-08-23):
+	- System.Posix.IO.ByteString: adjusted some imports for GHC 7.6
+	- Removed the custom Setup.hs, for compatibility with GHC 7.6
 0.3.5.3 (2012-02-21):
 	- Foreign.C.Error.Safe: changed (Num a) to (Eq a, Num a) for GHC 7.4
 0.3.5 (2011-06-29):
diff --git a/src/System/Posix/IO/ByteString.hsc b/src/System/Posix/IO/ByteString.hsc
--- a/src/System/Posix/IO/ByteString.hsc
+++ b/src/System/Posix/IO/ByteString.hsc
@@ -8,10 +8,23 @@
 our dependency on the @unix@ package. But this issue is worth making
 a note of.
 -}
+
+-- GHC 7.6 changed the semantics of the FFI so that we must have
+-- the data constructors in scope in order to import functions using
+-- the given types. However, those data constructors[1] are not exported
+-- in earlier versions, so having @(..)@ will raise warnings on old
+-- systems. However, Cabal-style MIN_VERSION_foo(1,2,3) macros don't
+-- play nicely with hsc2hs; and we need hsc2hs in lieu of CPP for
+-- OS X. So we disable -Wall rather than trying to CPP this problem
+-- away. There doesn't appear to be a -fno-warn-foo for this
+-- particular issue.
+--
+-- [1] CSsize(..), COff(..), CInt(..), CSize(..), CChar(..)
+
 {-# LANGUAGE ForeignFunctionInterface #-}
-{-# OPTIONS_GHC -Wall -fwarn-tabs #-}
+{-# OPTIONS_GHC -fwarn-tabs #-}
 ----------------------------------------------------------------
---                                                    2011.06.29
+--                                                    2012.08.23
 -- |
 -- Module      :  System.Posix.IO.ByteString
 -- Copyright   :  Copyright (c) 2010--2012 wren ng thornton
@@ -78,9 +91,10 @@
 import           System.IO                (SeekMode(..))
 import qualified System.IO.Error          as IOE
 import           System.Posix.Types.Iovec
-import           System.Posix.Types       (Fd, ByteCount, FileOffset
-                                          , CSsize, COff)
-import           Foreign.C.Types          (CInt, CSize, CChar)
+import           System.Posix.Types       ( Fd, ByteCount, FileOffset
+                                          , CSsize(..), COff(..))
+import           Foreign.C.Types          (CInt(..), CSize(..), CChar(..))
+
 import qualified Foreign.C.Error          as C
 import           Foreign.C.Error.Safe
 import           Foreign.Ptr              (Ptr, castPtr, plusPtr)
diff --git a/src/System/Posix/Types/Iovec.hsc b/src/System/Posix/Types/Iovec.hsc
--- a/src/System/Posix/Types/Iovec.hsc
+++ b/src/System/Posix/Types/Iovec.hsc
@@ -1,5 +1,11 @@
+-- The -fno-warn-unused-imports flag is to avoid the need for a
+-- special Setup.hs in order to use __HADDOCK__ to conditionally
+-- import Foreign.C.String.CStringLen only for the sake of Haddock.
+-- We avoid the special Setup.hs because in GHC 7.6 the prelude no
+-- longer exports 'catch', and it's not entirely clear what sort
+-- of exceptions from 'removeFile' actually need handling.
 {-# LANGUAGE ForeignFunctionInterface #-}
-{-# OPTIONS_GHC -Wall -fwarn-tabs #-}
+{-# OPTIONS_GHC -Wall -fwarn-tabs -fno-warn-unused-imports #-}
 ----------------------------------------------------------------
 --                                                    2011.03.17
 -- |
@@ -34,9 +40,9 @@
 
 -- N.B., we need a Custom cabal build-type in order for this to
 -- work.
-#ifdef __HADDOCK__
+-- #ifdef __HADDOCK__
 import Foreign.C.String (CStringLen)
-#endif
+-- #endif
 
 -- iovec, writev, and readv are in <sys/uio.h>, but we must include
 -- <sys/types.h> and <unistd.h> for legacy reasons.
diff --git a/unix-bytestring.cabal b/unix-bytestring.cabal
--- a/unix-bytestring.cabal
+++ b/unix-bytestring.cabal
@@ -1,15 +1,14 @@
 ----------------------------------------------------------------
--- wren ng thornton <wren@community.haskell.org>    ~ 2012.02.21
+-- wren ng thornton <wren@community.haskell.org>    ~ 2012.08.23
 ----------------------------------------------------------------
 
 -- By and large Cabal >=1.2 is fine; but >= 1.6 gives tested-with:
 -- and source-repository:.
 Cabal-Version:  >= 1.6
--- We need a custom build in order to define __HADDOCK__
-Build-Type:     Custom
+Build-Type:     Simple
 
 Name:           unix-bytestring
-Version:        0.3.5.3
+Version:        0.3.5.4
 Stability:      experimental
 Homepage:       http://code.haskell.org/~wren/
 Author:         wren ng thornton
