diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index 54b943ed58d91e387064853a63d4b9b818bdc543..cee1ee8b1d8e9783ca96b81e2efd1dbe00f297e8 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -10,6 +10,7 @@ import Settings.Builders.Common (wayCcArgs)
 
 import GHC.Toolchain.Target
 import GHC.Platform.ArchOS
+import Data.Version.Extra
 
 -- | Package-specific command-line arguments.
 packageArgs :: Args
@@ -33,6 +34,7 @@ packageArgs = do
     cursesLibraryDir <- getSetting CursesLibDir
     ffiIncludeDir  <- getSetting FfiIncludeDir
     ffiLibraryDir  <- getSetting FfiLibDir
+    stageVersion <- readVersion <$> (expr $ ghcVersionStage stage)
 
     mconcat
         --------------------------------- base ---------------------------------
@@ -83,7 +85,7 @@ packageArgs = do
             -- not being fixed to `ghc`, when building stage0, we must set
             -- -this-unit-id to `ghc` because the boot compiler expects that.
             -- We do it through a cabal flag in ghc.cabal
-            , stage0 ? arg "+hadrian-stage0"
+            , stageVersion < makeVersion [9,8,1] ? arg "+hadrian-stage0"
             , flag StaticLibzstd `cabalFlag` "static-libzstd"
             ]
 
diff --git a/libraries/ghc-heap/GHC/Exts/Stack.hs b/libraries/ghc-heap/GHC/Exts/Stack.hs
index 90081a522a655f07096e53c1bb6d0c5071f073a0..bc9f2402d0c9c45746ea9b134f250e81f3013984 100644
--- a/libraries/ghc-heap/GHC/Exts/Stack.hs
+++ b/libraries/ghc-heap/GHC/Exts/Stack.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE CPP #-}
-#if MIN_TOOL_VERSION_ghc(9,7,0)
+#if MIN_TOOL_VERSION_ghc(9,9,0)
 {-# LANGUAGE RecordWildCards #-}
 
 module GHC.Exts.Stack
diff --git a/libraries/ghc-heap/GHC/Exts/Stack/Constants.hsc b/libraries/ghc-heap/GHC/Exts/Stack/Constants.hsc
index 19a4da9dc5ce22f455cbfe00f085154115b3a305..28ba7c6e9617c6cc5330bc7606be35525ef3b55e 100644
--- a/libraries/ghc-heap/GHC/Exts/Stack/Constants.hsc
+++ b/libraries/ghc-heap/GHC/Exts/Stack/Constants.hsc
@@ -3,7 +3,7 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 module GHC.Exts.Stack.Constants where
 
-#if MIN_TOOL_VERSION_ghc(9,7,0)
+#if MIN_TOOL_VERSION_ghc(9,9,0)
 
 import           Prelude
 
diff --git a/libraries/ghc-heap/GHC/Exts/Stack/Decode.hs b/libraries/ghc-heap/GHC/Exts/Stack/Decode.hs
index 8a01d12a324bfd246cf59a8021d69f25313214d5..1c49a6eb7b97c50d8037a931c95aab55871068e8 100644
--- a/libraries/ghc-heap/GHC/Exts/Stack/Decode.hs
+++ b/libraries/ghc-heap/GHC/Exts/Stack/Decode.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE CPP #-}
-#if MIN_TOOL_VERSION_ghc(9,7,0)
+#if MIN_TOOL_VERSION_ghc(9,9,0)
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE DuplicateRecordFields #-}
 {-# LANGUAGE FlexibleInstances #-}
diff --git a/libraries/ghc-heap/ghc-heap.cabal.in b/libraries/ghc-heap/ghc-heap.cabal.in
index f4cb2dee2f9ac4c9b0450a84bc279aa68d5767af..45d433fd7e0251e2eaba367e447351d926899b36 100644
--- a/libraries/ghc-heap/ghc-heap.cabal.in
+++ b/libraries/ghc-heap/ghc-heap.cabal.in
@@ -23,7 +23,7 @@ library
   default-language: Haskell2010
 
   build-depends:    base             >= 4.9.0 && < 5.0
-                  , ghc-prim         > 0.2 && < 0.11
+                  , ghc-prim         > 0.2 && < 0.12
                   , rts              == 1.0.*
                   , containers       >= 0.6.2.1 && < 0.7
 
diff --git a/libraries/ghci/ghci.cabal.in b/libraries/ghci/ghci.cabal.in
index 87da371f20c9a95f33d10384bfcd15bdcda32434..565b4198dea33d9923e4340e630da45957081855 100644
--- a/libraries/ghci/ghci.cabal.in
+++ b/libraries/ghci/ghci.cabal.in
@@ -76,7 +76,7 @@ library
         rts,
         array            == 0.5.*,
         base             >= 4.8 && < 4.20,
-        ghc-prim         >= 0.5.0 && < 0.11,
+        ghc-prim         >= 0.5.0 && < 0.12,
         binary           == 0.8.*,
         bytestring       >= 0.10 && < 0.13,
         containers       >= 0.5 && < 0.7,
diff --git a/linters/lint-whitespace/lint-whitespace.cabal b/linters/lint-whitespace/lint-whitespace.cabal
index 61e376d1f96ef3faa857735e173ad9eb6d03966b..e4fab0631e02430a7a50f4fc3b526362733a4382 100644
--- a/linters/lint-whitespace/lint-whitespace.cabal
+++ b/linters/lint-whitespace/lint-whitespace.cabal
@@ -28,4 +28,4 @@ executable lint-whitespace
     base
        >= 4.14 && < 5,
     text
-       >= 1.2  && < 2.1,
+       >= 1.2  && < 3,
diff --git a/linters/linters-common/linters-common.cabal b/linters/linters-common/linters-common.cabal
index 02245750dd19dde988d747a901ab764794195abf..eea509a207c6ca450147f4ab6c8aadc1fd0adff4 100644
--- a/linters/linters-common/linters-common.cabal
+++ b/linters/linters-common/linters-common.cabal
@@ -16,7 +16,7 @@ library
     base
        >= 4.14 && < 5,
     text
-       >= 1.2  && < 2.1,
+       >= 1.2  && < 3,
     deepseq
        >= 1.1,