diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -235,6 +235,7 @@
         -- * Linker/compiler information
         LinkerInfo(..),
         CompilerInfo(..),
+        useXLinkerRPath,
 
         -- * File cleanup
         FilesToClean(..), emptyFilesToClean,
@@ -4606,7 +4607,8 @@
       Opt_ProfCountEntries,
       Opt_SharedImplib,
       Opt_SimplPreInlining,
-      Opt_VersionMacros
+      Opt_VersionMacros,
+      Opt_RPath
     ]
 
     ++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns]
@@ -4614,8 +4616,6 @@
 
     ++ default_PIC platform
 
-    ++ default_RPath platform
-
     ++ concatMap (wayGeneralFlags platform) (defaultWays settings)
     ++ validHoleFitDefaults
 
@@ -4671,29 +4671,6 @@
                                           -- information.
     _                        -> []
 
-
--- We usually want to use RPath, except on macOS (OSDarwin).  On recent macOS
--- versions the number of load commands we can embed in a dynamic library is
--- restricted.  Hence since b592bd98ff2 we rely on -dead_strip_dylib to only
--- link the needed dylibs instead of linking the full dependency closure.
---
--- If we split the library linking into injecting -rpath and -l @rpath/...
--- components, we will reduce the number of libraries we link, however we will
--- still inject one -rpath entry for each library, independent of their use.
--- That is, we even inject -rpath values for libraries that we dead_strip in
--- the end. As such we can run afoul of the load command size limit simply
--- by polluting the load commands with RPATH entries.
---
--- Thus, we disable Opt_RPath by default on OSDarwin.  The savvy user can always
--- enable it with -use-rpath if they so wish.
---
--- See Note [Dynamic linking on macOS]
-
-default_RPath :: Platform -> [GeneralFlag]
-default_RPath platform | platformOS platform == OSDarwin = []
-default_RPath _                                          = [Opt_RPath]
-
-
 -- General flags that are switched on/off when other general flags are switched
 -- on
 impliedGFlags :: [(GeneralFlag, TurnOnFlag, GeneralFlag)]
@@ -5924,6 +5901,40 @@
    | AppleClang51
    | UnknownCC
    deriving Eq
+
+
+-- | Should we use `-XLinker -rpath` when linking or not?
+-- See Note [-fno-use-rpaths]
+useXLinkerRPath :: DynFlags -> OS -> Bool
+useXLinkerRPath _ OSDarwin = False -- See Note [Dynamic linking on macOS]
+useXLinkerRPath dflags _ = gopt Opt_RPath dflags
+
+{-
+Note [-fno-use-rpaths]
+~~~~~~~~~~~~~~~~~~~~~~
+
+First read, Note [Dynamic linking on macOS] to understand why on darwin we never
+use `-XLinker -rpath`.
+
+The specification of `Opt_RPath` is as follows:
+
+The default case `-fuse-rpaths`:
+* On darwin, never use `-Xlinker -rpath -Xlinker`, always inject the rpath
+  afterwards, see `runInjectRPaths`. There is no way to use `-Xlinker` on darwin
+  as things stand but it wasn't documented in the user guide before this patch how
+  `-fuse-rpaths` should behave and the fact it was always disabled on darwin.
+* Otherwise, use `-Xlinker -rpath -Xlinker` to set the rpath of the executable,
+  this is the normal way you should set the rpath.
+
+The case of `-fno-use-rpaths`
+* Never inject anything into the rpath.
+
+When this was first implemented, `Opt_RPath` was disabled on darwin, but
+the rpath was still always augmented by `runInjectRPaths`, and there was no way to
+stop this. This was problematic because you couldn't build an executable in CI
+with a clean rpath.
+
+-}
 
 -- -----------------------------------------------------------------------------
 -- RTS hooks
diff --git a/ghc-lib-parser.cabal b/ghc-lib-parser.cabal
--- a/ghc-lib-parser.cabal
+++ b/ghc-lib-parser.cabal
@@ -1,7 +1,7 @@
 cabal-version: >=1.22
 build-type: Simple
 name: ghc-lib-parser
-version: 8.10.5.20210606
+version: 8.10.6.20210814
 license: BSD3
 license-file: LICENSE
 category: Development
@@ -43,7 +43,6 @@
     ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
     ghc-lib/stage0/compiler/build/Parser.hs
     ghc-lib/stage0/compiler/build/Lexer.hs
-    includes/ghcconfig.h
     includes/MachDeps.h
     includes/stg/MachRegs.h
     includes/CodeGen.Platform.hs
@@ -81,8 +80,7 @@
         pretty == 1.1.*,
         time >= 1.4 && < 1.10,
         transformers == 0.5.*,
-        process >= 1 && < 1.7,
-        hpc == 0.6.*
+        process >= 1 && < 1.7
     build-tools: alex >= 3.1, happy >= 1.19.4
     other-extensions:
         BangPatterns
diff --git a/ghc-lib/stage0/lib/ghcautoconf.h b/ghc-lib/stage0/lib/ghcautoconf.h
--- a/ghc-lib/stage0/lib/ghcautoconf.h
+++ b/ghc-lib/stage0/lib/ghcautoconf.h
@@ -598,10 +598,10 @@
 /* #undef pid_t */
 
 /* The maximum supported LLVM version number */
-#define sUPPORTED_LLVM_VERSION_MAX (12)
+#define sUPPORTED_LLVM_VERSION_MAX (13)
 
 /* The minimum supported LLVM version number */
-#define sUPPORTED_LLVM_VERSION_MIN (10)
+#define sUPPORTED_LLVM_VERSION_MIN (9)
 
 /* Define to `unsigned int' if <sys/types.h> does not define. */
 /* #undef size_t */
diff --git a/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs b/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
--- a/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
+++ b/ghc-lib/stage0/libraries/ghc-boot/build/GHC/Version.hs
@@ -3,19 +3,19 @@
 import Prelude -- See Note [Why do we import Prelude here?]
 
 cProjectGitCommitId   :: String
-cProjectGitCommitId   = "a43a5650f51fdc04d757abc3d86b0a23ec518259"
+cProjectGitCommitId   = "f7b3359be12030d762b299681e1aeef0292417ce"
 
 cProjectVersion       :: String
-cProjectVersion       = "8.10.5"
+cProjectVersion       = "8.10.6"
 
 cProjectVersionInt    :: String
 cProjectVersionInt    = "810"
 
 cProjectPatchLevel    :: String
-cProjectPatchLevel    = "5"
+cProjectPatchLevel    = "6"
 
 cProjectPatchLevel1   :: String
-cProjectPatchLevel1   = "5"
+cProjectPatchLevel1   = "6"
 
 cProjectPatchLevel2   :: String
 cProjectPatchLevel2   = ""
diff --git a/includes/ghcconfig.h b/includes/ghcconfig.h
deleted file mode 100644
--- a/includes/ghcconfig.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#include "ghcautoconf.h"
-#include "ghcplatform.h"
