diff --git a/Cabal.cabal b/Cabal.cabal
--- a/Cabal.cabal
+++ b/Cabal.cabal
@@ -1,5 +1,5 @@
 name: Cabal
-version: 1.22.5.0
+version: 1.22.6.0
 copyright: 2003-2006, Isaac Jones
            2005-2011, Duncan Coutts
 license: BSD3
@@ -145,7 +145,7 @@
   if flag(bundled-binary-generic)
     build-depends: binary >= 0.5 && < 0.7
   else
-    build-depends: binary >= 0.7 && < 0.8
+    build-depends: binary >= 0.7 && < 0.9
 
   -- Needed for GHC.Generics before GHC 7.6
   if impl(ghc < 7.6)
@@ -265,7 +265,7 @@
     test-framework-hunit,
     test-framework-quickcheck2,
     HUnit,
-    QuickCheck < 2.8,
+    QuickCheck < 2.9,
     Cabal
   ghc-options: -Wall
   default-language: Haskell98
@@ -312,7 +312,7 @@
     test-framework-quickcheck2 >= 0.2.12,
     test-framework-hunit,
     HUnit,
-    QuickCheck >= 2.1.0.1 && < 2.8,
+    QuickCheck >= 2.1.0.1 && < 2.9,
     Cabal,
     process,
     directory,
diff --git a/Distribution/Simple/GHC.hs b/Distribution/Simple/GHC.hs
--- a/Distribution/Simple/GHC.hs
+++ b/Distribution/Simple/GHC.hs
@@ -553,9 +553,11 @@
   -- TODO: problem here is we need the .c files built first, so we can load them
   -- with ghci, but .c files can depend on .h files generated by ghc by ffi
   -- exports.
-  unless (null (libModules lib)) $
-     ifReplLib (runGhcProg replOpts)
 
+  ifReplLib $ do
+    when (null (libModules lib)) $ warn verbosity "No exposed modules"
+    ifReplLib (runGhcProg replOpts)
+
   -- link:
   unless forRepl $ do
     info verbosity "Linking..."
@@ -766,7 +768,9 @@
                       ghcOptLinkLibPath    = toNubListR $ extraLibDirs exeBi,
                       ghcOptLinkFrameworks = toNubListR $ PD.frameworks exeBi,
                       ghcOptInputFiles     = toNubListR
-                                             [exeDir </> x | x <- cObjs],
+                                             [exeDir </> x | x <- cObjs]
+                    }
+      dynLinkerOpts = mempty {
                       ghcOptRPaths         = rpaths
                    }
       replOpts   = baseOpts {
@@ -812,9 +816,9 @@
         | otherwise    = doingTH && (withProfExe lbi || withDynExe lbi)
 
       linkOpts = commonOpts `mappend`
-                 linkerOpts `mappend` mempty {
-                      ghcOptLinkNoHsMain   = toFlag (not isHaskellMain)
-                 }
+                 linkerOpts `mappend`
+                 mempty { ghcOptLinkNoHsMain   = toFlag (not isHaskellMain) } `mappend`
+                 (if withDynExe lbi then dynLinkerOpts else mempty)
 
   -- Build static/dynamic object files for TH, if needed.
   when compileForTH $
diff --git a/Distribution/Version.hs b/Distribution/Version.hs
--- a/Distribution/Version.hs
+++ b/Distribution/Version.hs
@@ -3,7 +3,25 @@
 #if __GLASGOW_HASKELL__ < 707
 {-# LANGUAGE StandaloneDeriving #-}
 #endif
+
+-- Hack approach to support bootstrapping
+-- Assume binary <0.8 when MIN_VERSION_binary macro is not available.
+-- Starting with GHC>=8.0, compiler will hopefully provide this macros too.
+-- https://ghc.haskell.org/trac/ghc/ticket/10970
+--
+-- Otherwise, one can specify -DMIN_VERSION_binary_0_8_0=1, when bootstrapping
+-- with binary >=0.8.0.0
+#ifdef MIN_VERSION_binary
+#define MIN_VERSION_binary_0_8_0 MIN_VERSION_binary(0,8,0)
+#else
+#ifndef MIN_VERSION_binary_0_8_0
+#define MIN_VERSION_binary_0_8_0 0
+#endif
+#endif
+
+#if !MIN_VERSION_binary_0_8_0
 {-# OPTIONS_GHC -fno-warn-orphans #-}
+#endif
 
 -----------------------------------------------------------------------------
 -- |
@@ -109,6 +127,7 @@
 deriving instance Data Version
 #endif
 
+#if !(MIN_VERSION_binary_0_8_0)
 -- Deriving this instance from Generic gives trouble on GHC 7.2 because the
 -- Generic instance has to be standalone-derived. So, we hand-roll our own.
 -- We can't use a generic Binary instance on later versions because we must
@@ -119,6 +138,7 @@
         tags <- get
         return $ Version br tags
     put (Version br tags) = put br >> put tags
+#endif
 
 {-# DEPRECATED AnyVersion "Use 'anyVersion', 'foldVersionRange' or 'asVersionIntervals'" #-}
 {-# DEPRECATED ThisVersion "use 'thisVersion', 'foldVersionRange' or 'asVersionIntervals'" #-}
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+1.22.6.0
+	* Relax upper bound to allow upcoming binary-0.8
+
 1.22.5.0
 	* Don't recompile C sources unless needed (#2601). (Luke Iannini)
 	* Support Haddock response files.
