diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7b2f33b0306aa3a958b97016c841c85c328c9f33..cad10a8116e9adb8cdf93326fe3afe7e26ca0ba7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1049,7 +1049,7 @@ ghcup-metadata-nightly:
       artifacts: false
     - job: nightly-x86_64-linux-deb9-validate
       artifacts: false
-    - job: nightly-i386-linux-deb9-validate
+    - job: nightly-i386-linux-deb10-validate
       artifacts: false
     - job: nightly-x86_64-linux-deb10-validate
       artifacts: false
diff --git a/.gitlab/gen_ci.hs b/.gitlab/gen_ci.hs
index 9897edc66df0df1141e021e5bade7e7848b33f32..e39a7cd7688842f58d0a8affe70cc32c0b91130e 100755
--- a/.gitlab/gen_ci.hs
+++ b/.gitlab/gen_ci.hs
@@ -914,7 +914,7 @@ job_groups =
      , standardBuilds AArch64 Darwin
      , standardBuildsWithConfig AArch64 (Linux Debian10) (splitSectionsBroken vanilla)
      , disableValidate (validateBuilds AArch64 (Linux Debian10) llvm)
-     , standardBuildsWithConfig I386 (Linux Debian9) (splitSectionsBroken vanilla)
+     , standardBuildsWithConfig I386 (Linux Debian10) (splitSectionsBroken vanilla)
      -- Fully static build, in theory usable on any linux distribution.
      , fullyStaticBrokenTests (standardBuildsWithConfig Amd64 (Linux Alpine) (splitSectionsBroken static))
      -- Dynamically linked build, suitable for building your own static executables on alpine
diff --git a/.gitlab/jobs.yaml b/.gitlab/jobs.yaml
index 11bb65987ffba8f18305d3ff9399176f69aaa7b3..5238b4b8692049aa71498772416a1fb716cbb01f 100644
--- a/.gitlab/jobs.yaml
+++ b/.gitlab/jobs.yaml
@@ -120,7 +120,7 @@
       "TEST_ENV": "aarch64-linux-deb10-validate"
     }
   },
-  "i386-linux-deb9-validate": {
+  "i386-linux-deb10-validate": {
     "after_script": [
       ".gitlab/ci.sh save_cache",
       ".gitlab/ci.sh clean",
@@ -130,7 +130,7 @@
     "artifacts": {
       "expire_in": "2 weeks",
       "paths": [
-        "ghc-i386-linux-deb9-validate.tar.xz",
+        "ghc-i386-linux-deb10-validate.tar.xz",
         "junit.xml"
       ],
       "reports": {
@@ -139,14 +139,14 @@
       "when": "always"
     },
     "cache": {
-      "key": "i386-linux-deb9-$CACHE_REV",
+      "key": "i386-linux-deb10-$CACHE_REV",
       "paths": [
         "cabal-cache",
         "toolchain"
       ]
     },
     "dependencies": [],
-    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb10:$DOCKER_REV",
     "needs": [
       {
         "artifacts": false,
@@ -172,10 +172,10 @@
     ],
     "variables": {
       "BIGNUM_BACKEND": "gmp",
-      "BIN_DIST_NAME": "ghc-i386-linux-deb9-validate",
+      "BIN_DIST_NAME": "ghc-i386-linux-deb10-validate",
       "BUILD_FLAVOUR": "validate",
       "CONFIGURE_ARGS": "",
-      "TEST_ENV": "i386-linux-deb9-validate"
+      "TEST_ENV": "i386-linux-deb10-validate"
     }
   },
   "nightly-aarch64-darwin-validate": {
@@ -359,7 +359,7 @@
       "XZ_OPT": "-9"
     }
   },
-  "nightly-i386-linux-deb9-validate": {
+  "nightly-i386-linux-deb10-validate": {
     "after_script": [
       ".gitlab/ci.sh save_cache",
       ".gitlab/ci.sh clean",
@@ -369,7 +369,7 @@
     "artifacts": {
       "expire_in": "8 weeks",
       "paths": [
-        "ghc-i386-linux-deb9-validate.tar.xz",
+        "ghc-i386-linux-deb10-validate.tar.xz",
         "junit.xml"
       ],
       "reports": {
@@ -378,14 +378,14 @@
       "when": "always"
     },
     "cache": {
-      "key": "i386-linux-deb9-$CACHE_REV",
+      "key": "i386-linux-deb10-$CACHE_REV",
       "paths": [
         "cabal-cache",
         "toolchain"
       ]
     },
     "dependencies": [],
-    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb10:$DOCKER_REV",
     "needs": [
       {
         "artifacts": false,
@@ -411,10 +411,10 @@
     ],
     "variables": {
       "BIGNUM_BACKEND": "gmp",
-      "BIN_DIST_NAME": "ghc-i386-linux-deb9-validate",
+      "BIN_DIST_NAME": "ghc-i386-linux-deb10-validate",
       "BUILD_FLAVOUR": "validate",
       "CONFIGURE_ARGS": "",
-      "TEST_ENV": "i386-linux-deb9-validate",
+      "TEST_ENV": "i386-linux-deb10-validate",
       "XZ_OPT": "-9"
     }
   },
@@ -2355,7 +2355,7 @@
       "XZ_OPT": "-9"
     }
   },
-  "release-i386-linux-deb9-release+no_split_sections": {
+  "release-i386-linux-deb10-release+no_split_sections": {
     "after_script": [
       ".gitlab/ci.sh save_cache",
       ".gitlab/ci.sh clean",
@@ -2365,7 +2365,7 @@
     "artifacts": {
       "expire_in": "1 year",
       "paths": [
-        "ghc-i386-linux-deb9-release+no_split_sections.tar.xz",
+        "ghc-i386-linux-deb10-release+no_split_sections.tar.xz",
         "junit.xml"
       ],
       "reports": {
@@ -2374,14 +2374,14 @@
       "when": "always"
     },
     "cache": {
-      "key": "i386-linux-deb9-$CACHE_REV",
+      "key": "i386-linux-deb10-$CACHE_REV",
       "paths": [
         "cabal-cache",
         "toolchain"
       ]
     },
     "dependencies": [],
-    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV",
+    "image": "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb10:$DOCKER_REV",
     "needs": [
       {
         "artifacts": false,
@@ -2407,12 +2407,12 @@
     ],
     "variables": {
       "BIGNUM_BACKEND": "gmp",
-      "BIN_DIST_NAME": "ghc-i386-linux-deb9-release+no_split_sections",
+      "BIN_DIST_NAME": "ghc-i386-linux-deb10-release+no_split_sections",
       "BUILD_FLAVOUR": "release+no_split_sections",
       "CONFIGURE_ARGS": "",
       "HADRIAN_ARGS": "--hash-unit-ids",
       "IGNORE_PERF_FAILURES": "all",
-      "TEST_ENV": "i386-linux-deb9-release+no_split_sections",
+      "TEST_ENV": "i386-linux-deb10-release+no_split_sections",
       "XZ_OPT": "-9"
     }
   },
diff --git a/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py b/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
index 68bd62dc49f495629ce6f171c27845b085633e96..204ac40723a4b44d8ee5764015ca71a8b6f5b169 100644
--- a/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
+++ b/.gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
@@ -34,6 +34,7 @@ def job_triple(job_name):
         'release-x86_64-linux-alpine3_12-int_native-release+fully_static': 'x86_64-alpine3_12-linux-static-int_native',
         'release-x86_64-darwin-release': 'x86_64-apple-darwin',
         'release-i386-linux-deb9-release': 'i386-deb9-linux',
+        'release-i386-linux-deb10-release': 'i386-deb10-linux',
         'release-armv7-linux-deb10-release': 'armv7-deb10-linux',
         'release-aarch64-linux-deb10-release': 'aarch64-deb10-linux',
         'release-aarch64-darwin-release': 'aarch64-apple-darwin',
diff --git a/.gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py b/.gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
index 077df337c0f7d130546d7fbe29ed31006a10ddad..38afb4d9303baaf1a023da64585f018436056bf8 100755
--- a/.gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
+++ b/.gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
@@ -191,7 +191,7 @@ def mk_new_yaml(release_mode, version, date, pipeline_type, job_map):
     deb10 = mk(debian("x86_64", 10))
     deb11 = mk(debian("x86_64", 11))
     deb10_arm64 = mk(debian("aarch64", 10))
-    deb9_i386 = mk(debian("i386", 9))
+    deb10_i386 = mk(debian("i386", 10))
 
     source = mk_one_metadata(release_mode, version, job_map, source_artifact)
     test = mk_one_metadata(release_mode, version, job_map, test_artifact)
@@ -221,10 +221,10 @@ def mk_new_yaml(release_mode, version, date, pipeline_type, job_map):
 
           }
 
-    a32 = { "Linux_Debian": { "<10": deb9_i386, "unknown_versioning": deb9_i386 }
-          , "Linux_Ubuntu": { "unknown_versioning": deb9_i386 }
-          , "Linux_Mint" : { "unknown_versioning": deb9_i386 }
-          , "Linux_UnknownLinux" : { "unknown_versioning": deb9_i386 }
+    a32 = { "Linux_Debian": { "unknown_versioning": deb10_i386 }
+          , "Linux_Ubuntu": { "unknown_versioning": deb10_i386 }
+          , "Linux_Mint" : { "unknown_versioning": deb10_i386 }
+          , "Linux_UnknownLinux" : { "unknown_versioning": deb10_i386 }
           }
 
     arm64 = { "Linux_UnknownLinux": { "unknown_versioning": deb10_arm64 }