diff --git a/GHC/Platform/ArchOS.hs b/GHC/Platform/ArchOS.hs
deleted file mode 100644
--- a/GHC/Platform/ArchOS.hs
+++ /dev/null
@@ -1,161 +0,0 @@
-{-# LANGUAGE LambdaCase, ScopedTypeVariables #-}
-
--- | Platform architecture and OS
---
--- We need it in ghc-boot because ghc-pkg needs it.
-module GHC.Platform.ArchOS
-   ( ArchOS(..)
-   , Arch(..)
-   , OS(..)
-   , ArmISA(..)
-   , ArmISAExt(..)
-   , ArmABI(..)
-   , PPC_64ABI(..)
-   , stringEncodeArch
-   , stringEncodeOS
-   )
-where
-
-import Prelude -- See Note [Why do we import Prelude here?]
-
--- | Platform architecture and OS.
-data ArchOS
-   = ArchOS
-      { archOS_arch :: Arch
-      , archOS_OS   :: OS
-      }
-   deriving (Read, Show, Eq, Ord)
-
--- | Architectures
---
--- TODO: It might be nice to extend these constructors with information about
--- what instruction set extensions an architecture might support.
---
-data Arch
-   = ArchUnknown
-   | ArchX86
-   | ArchX86_64
-   | ArchPPC
-   | ArchPPC_64 PPC_64ABI
-   | ArchS390X
-   | ArchARM ArmISA [ArmISAExt] ArmABI
-   | ArchAArch64
-   | ArchAlpha
-   | ArchMipseb
-   | ArchMipsel
-   | ArchRISCV64
-   | ArchLoongArch64
-   | ArchJavaScript
-   | ArchWasm32
-   deriving (Read, Show, Eq, Ord)
-
--- | ARM Instruction Set Architecture
-data ArmISA
-   = ARMv5
-   | ARMv6
-   | ARMv7
-   deriving (Read, Show, Eq, Ord)
-
--- | ARM extensions
-data ArmISAExt
-   = VFPv2
-   | VFPv3
-   | VFPv3D16
-   | NEON
-   | IWMMX2
-   deriving (Read, Show, Eq, Ord)
-
--- | ARM ABI
-data ArmABI
-   = SOFT
-   | SOFTFP
-   | HARD
-   deriving (Read, Show, Eq, Ord)
-
--- | PowerPC 64-bit ABI
-data PPC_64ABI
-   = ELF_V1 -- ^ PowerPC64
-   | ELF_V2 -- ^ PowerPC64 LE
-   deriving (Read, Show, Eq, Ord)
-
--- | Operating systems.
---
--- Using OSUnknown to generate code should produce a sensible default, but no
--- promises.
-data OS
-   = OSUnknown
-   | OSLinux
-   | OSDarwin
-   | OSSolaris2
-   | OSMinGW32
-   | OSFreeBSD
-   | OSDragonFly
-   | OSOpenBSD
-   | OSNetBSD
-   | OSKFreeBSD
-   | OSHaiku
-   | OSQNXNTO
-   | OSAIX
-   | OSHurd
-   | OSWasi
-   | OSGhcjs
-   deriving (Read, Show, Eq, Ord)
-
-
--- Note [Platform Syntax]
--- ~~~~~~~~~~~~~~~~~~~~~~
---
--- There is a very loose encoding of platforms shared by many tools we are
--- encoding to here. GNU Config (http://git.savannah.gnu.org/cgit/config.git),
--- and LLVM's http://llvm.org/doxygen/classllvm_1_1Triple.html are perhaps the
--- most definitional parsers. The basic syntax is a list of '-'-separated
--- components. The Unix 'uname' command syntax is related but briefer.
---
--- Those two parsers are quite forgiving, and even the 'config.sub'
--- normalization is forgiving too. The "best" way to encode a platform is
--- therefore somewhat a matter of taste.
---
--- The 'stringEncode*' functions here convert each part of GHC's structured
--- notion of a platform into one dash-separated component.
-
--- | See Note [Platform Syntax].
-stringEncodeArch :: Arch -> String
-stringEncodeArch = \case
-  ArchUnknown       -> "unknown"
-  ArchX86           -> "i386"
-  ArchX86_64        -> "x86_64"
-  ArchPPC           -> "powerpc"
-  ArchPPC_64 ELF_V1 -> "powerpc64"
-  ArchPPC_64 ELF_V2 -> "powerpc64le"
-  ArchS390X         -> "s390x"
-  ArchARM ARMv5 _ _ -> "armv5"
-  ArchARM ARMv6 _ _ -> "armv6"
-  ArchARM ARMv7 _ _ -> "armv7"
-  ArchAArch64       -> "aarch64"
-  ArchAlpha         -> "alpha"
-  ArchMipseb        -> "mipseb"
-  ArchMipsel        -> "mipsel"
-  ArchRISCV64       -> "riscv64"
-  ArchLoongArch64   -> "loongarch64"
-  ArchJavaScript    -> "javascript"
-  ArchWasm32        -> "wasm32"
-
--- | See Note [Platform Syntax].
-stringEncodeOS :: OS -> String
-stringEncodeOS = \case
-  OSUnknown   -> "unknown"
-  OSLinux     -> "linux"
-  OSDarwin    -> "darwin"
-  OSSolaris2  -> "solaris2"
-  OSMinGW32   -> "mingw32"
-  OSFreeBSD   -> "freebsd"
-  OSDragonFly -> "dragonfly"
-  OSOpenBSD   -> "openbsd"
-  OSNetBSD    -> "netbsd"
-  OSKFreeBSD  -> "kfreebsdgnu"
-  OSHaiku     -> "haiku"
-  OSQNXNTO    -> "nto-qnx"
-  OSAIX       -> "aix"
-  OSHurd      -> "hurd"
-  OSWasi      -> "wasi"
-  OSGhcjs     -> "ghcjs"
diff --git a/GHC/Utils/Encoding.hs b/GHC/Utils/Encoding.hs
--- a/GHC/Utils/Encoding.hs
+++ b/GHC/Utils/Encoding.hs
@@ -81,7 +81,6 @@
         (,,,,)          Z5T     5-tuple
         (# #)           Z1H     unboxed 1-tuple (note the space)
         (#,,,,#)        Z5H     unboxed 5-tuple
-                (NB: There is no Z1T nor Z0H.)
 -}
 
 type UserString = String        -- As the user typed it
@@ -223,15 +222,15 @@
 for 3-tuples or unboxed 3-tuples respectively.  No other encoding starts
         Z<digit>
 
-* "(# #)" is the tycon for an unboxed 1-tuple (not 0-tuple)
-  There are no unboxed 0-tuples.
+* "(##)" is the tycon for an unboxed 0-tuple
+* "(# #)" is the tycon for an unboxed 1-tuple
 
 * "()" is the tycon for a boxed 0-tuple.
-  There are no boxed 1-tuples.
 -}
 
 maybe_tuple :: UserString -> Maybe EncodedString
 
+maybe_tuple "(##)" = Just("Z0H")
 maybe_tuple "(# #)" = Just("Z1H")
 maybe_tuple ('(' : '#' : cs) = case count_commas (0::Int) cs of
                                  (n, '#' : ')' : _) -> Just ('Z' : shows (n+1) "H")
diff --git a/ghc-boot.cabal b/ghc-boot.cabal
--- a/ghc-boot.cabal
+++ b/ghc-boot.cabal
@@ -5,7 +5,7 @@
 -- ghc-boot.cabal.
 
 name:           ghc-boot
-version:        9.8.1
+version:        9.10.1
 license:        BSD-3-Clause
 license-file:   LICENSE
 category:       GHC
@@ -51,7 +51,6 @@
             GHC.Serialized
             GHC.ForeignSrcLang
             GHC.HandleEncoding
-            GHC.Platform.ArchOS
             GHC.Platform.Host
             GHC.Settings.Utils
             GHC.UniqueSubdir
@@ -65,19 +64,24 @@
             , GHC.ForeignSrcLang.Type
             , GHC.Lexeme
 
+    -- reexport platform modules from ghc-platform
+    reexported-modules:
+              GHC.Platform.ArchOS
+
     -- but done by Hadrian
     autogen-modules:
             GHC.Version
             GHC.Platform.Host
 
-    build-depends: base       >= 4.7 && < 4.20,
+    build-depends: base       >= 4.7 && < 4.21,
                    binary     == 0.8.*,
                    bytestring >= 0.10 && < 0.13,
-                   containers >= 0.5 && < 0.7,
+                   containers >= 0.5 && < 0.8,
                    directory  >= 1.2 && < 1.4,
-                   filepath   >= 1.3 && < 1.5,
+                   filepath   >= 1.3 && < 1.6,
                    deepseq    >= 1.4 && < 1.6,
-                   ghc-boot-th == 9.8.1
+                   ghc-platform >= 0.1,
+                   ghc-boot-th == 9.10.1
     if !os(windows)
         build-depends:
                    unix       >= 2.7 && < 2.9
