diff options
-rw-r--r-- | hadrian/src/Oracles/Setting.hs | 7 | ||||
-rw-r--r-- | hadrian/src/Settings/Builders/Ghc.hs | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs index d8492dbe94..368954b736 100644 --- a/hadrian/src/Oracles/Setting.hs +++ b/hadrian/src/Oracles/Setting.hs @@ -7,7 +7,7 @@ module Oracles.Setting ( -- * Helpers ghcCanonVersion, cmdLineLengthLimit, hostSupportsRPaths, topDirectory, - libsuf, ghcVersionStage, bashPath, + libsuf, ghcVersionStage, bashPath, hostNeedsAsmShortcuttingWorkaround, -- ** Target platform things anyTargetPlatform, anyTargetOs, anyTargetArch, anyHostOs, @@ -272,6 +272,11 @@ anyTargetArch = matchSetting TargetArch anyHostOs :: [String] -> Action Bool anyHostOs = matchSetting HostOs +-- | Workaround for #21972. It can be removed once the minimal bootstrapping +-- compiler has a fix for this bug. +hostNeedsAsmShortcuttingWorkaround :: Action Bool +hostNeedsAsmShortcuttingWorkaround = anyHostOs [ "darwin" ] + -- | List of OSes that use the ELF object format. elfOSes :: [String] elfOSes = diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs index 88bd26bd62..946c8802a2 100644 --- a/hadrian/src/Settings/Builders/Ghc.hs +++ b/hadrian/src/Settings/Builders/Ghc.hs @@ -57,6 +57,7 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do , (hasVanilla && hasDynamic) ? builder (Ghc CompileHs) ? platformSupportsSharedLibs ? way vanilla ? arg "-dynamic-too" + , hostNeedsAsmShortcuttingWorkaround ? stage0 ? arg "-fno-asm-shortcutting" , commonGhcArgs , ghcLinkArgs , defaultGhcWarningsArgs |