Created
November 29, 2020 04:10
-
-
Save hjelmn/f7feb4ad37d31a1da2fd55c4aad7b123 to your computer and use it in GitHub Desktop.
GHC 8.10.2 Apple Silicon Patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -Nur ghc-8.10.2/aclocal.m4 ghc-8.10.2.new/aclocal.m4 | |
--- ghc-8.10.2/aclocal.m4 2020-08-07 08:52:59.000000000 -0600 | |
+++ ghc-8.10.2.new/aclocal.m4 2020-11-27 11:47:18.000000000 -0700 | |
@@ -118,7 +118,7 @@ | |
GHC_CONVERT_OS([$target_os], [$TargetArch], [TargetOS]) | |
fi | |
- GHC_LLVM_TARGET([$target_cpu],[$target_vendor],[$target_os],[LlvmTarget]) | |
+ GHC_LLVM_TARGET([$target],[$target_cpu],[$target_vendor],[$target_os],[LlvmTarget]) | |
GHC_SELECT_FILE_EXTENSIONS([$host], [exeext_host], [soext_host]) | |
GHC_SELECT_FILE_EXTENSIONS([$target], [exeext_target], [soext_target]) | |
@@ -218,7 +218,7 @@ | |
test -z "[$]2" || eval "[$]2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT, armABI = \$ARM_ABI}\"" | |
;; | |
aarch64) | |
- test -z "[$]2" || eval "[$]2=ArchARM64" | |
+ test -z "[$]2" || eval "[$]2=ArchAArch64" | |
;; | |
alpha) | |
test -z "[$]2" || eval "[$]2=ArchAlpha" | |
@@ -327,9 +327,14 @@ | |
AC_LINK_IFELSE( | |
[AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])], | |
[AC_MSG_RESULT(yes) | |
- TargetHasSubsectionsViaSymbols=YES | |
- AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1], | |
+ if test x"$TargetArch" = xaarch64; then | |
+ dnl subsections via symbols is busted on arm64 | |
+ TargetHasSubsectionsViaSymbols=NO | |
+ else | |
+ TargetHasSubsectionsViaSymbols=YES | |
+ AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1], | |
[Define to 1 if Apple-style dead-stripping is supported.]) | |
+ fi | |
], | |
[TargetHasSubsectionsViaSymbols=NO | |
AC_MSG_RESULT(no)]) | |
@@ -1919,7 +1924,7 @@ | |
# converts cpu from gnu to ghc naming, and assigns the result to $target_var | |
AC_DEFUN([GHC_CONVERT_CPU],[ | |
case "$1" in | |
- aarch64*) | |
+ aarch64*|arm64*) | |
$2="aarch64" | |
;; | |
alpha*) | |
@@ -2001,18 +2006,19 @@ | |
esac | |
]) | |
-# GHC_LLVM_TARGET(target_cpu, target_vendor, target_os, llvm_target_var) | |
+# GHC_LLVM_TARGET(target, target_cpu, target_vendor, target_os, llvm_target_var) | |
# -------------------------------- | |
# converts the canonicalized target into someting llvm can understand | |
AC_DEFUN([GHC_LLVM_TARGET], [ | |
- case "$2-$3" in | |
+ llvm_target_cpu=$2 | |
+ case "$1" in | |
*-freebsd*-gnueabihf) | |
llvm_target_vendor="unknown" | |
llvm_target_os="freebsd-gnueabihf" | |
;; | |
- hardfloat-*eabi) | |
+ *-hardfloat-*eabi) | |
llvm_target_vendor="unknown" | |
- llvm_target_os="$3""hf" | |
+ llvm_target_os="$4""hf" | |
;; | |
*-mingw32|*-mingw64|*-msys) | |
llvm_target_vendor="unknown" | |
@@ -2022,16 +2028,26 @@ | |
# for the LLVM Target. Otherwise these would be | |
# turned into just `-linux` and fail to be found | |
# in the `llvm-targets` file. | |
- *-android*|*-gnueabi*|*-musleabi*) | |
- GHC_CONVERT_VENDOR([$2],[llvm_target_vendor]) | |
- llvm_target_os="$3" | |
+ *-android*|*-gnueabi*) | |
+ GHC_CONVERT_VENDOR([$3],[llvm_target_vendor]) | |
+ llvm_target_os="$4" | |
+ ;; | |
+ # apple is a bit about their naming scheme for | |
+ # aarch64; and clang on macOS doesn't know that | |
+ # aarch64 would be arm64. So for LLVM we'll need | |
+ # to call it arm64; while we'll refer to it internally | |
+ # as aarch64 for consistency and sanity. | |
+ aarch64-apple-*|arm64-apple-*) | |
+ llvm_target_cpu="arm64" | |
+ GHC_CONVERT_VENDOR([$3],[llvm_target_vendor]) | |
+ GHC_CONVERT_OS([$4],[$2],[llvm_target_os]) | |
;; | |
*) | |
- GHC_CONVERT_VENDOR([$2],[llvm_target_vendor]) | |
- GHC_CONVERT_OS([$3],[$1],[llvm_target_os]) | |
+ GHC_CONVERT_VENDOR([$3],[llvm_target_vendor]) | |
+ GHC_CONVERT_OS([$4],[$2],[llvm_target_os]) | |
;; | |
esac | |
- $4="$1-$llvm_target_vendor-$llvm_target_os" | |
+ $5="$llvm_target_cpu-$llvm_target_vendor-$llvm_target_os" | |
]) | |
diff -Nur ghc-8.10.2/compiler/GHC/Platform/AArch64.hs ghc-8.10.2.new/compiler/GHC/Platform/AArch64.hs | |
--- ghc-8.10.2/compiler/GHC/Platform/AArch64.hs 1969-12-31 17:00:00.000000000 -0700 | |
+++ ghc-8.10.2.new/compiler/GHC/Platform/AArch64.hs 2020-11-27 09:20:02.000000000 -0700 | |
@@ -0,0 +1,10 @@ | |
+{-# LANGUAGE CPP #-} | |
+ | |
+module GHC.Platform.AArch64 where | |
+ | |
+import GhcPrelude | |
+ | |
+#define MACHREGS_NO_REGS 0 | |
+#define MACHREGS_aarch64 1 | |
+#include "../../../includes/CodeGen.Platform.hs" | |
+ | |
diff -Nur ghc-8.10.2/compiler/GHC/Platform/Regs.hs ghc-8.10.2.new/compiler/GHC/Platform/Regs.hs | |
--- ghc-8.10.2/compiler/GHC/Platform/Regs.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/GHC/Platform/Regs.hs 2020-11-27 09:47:06.000000000 -0700 | |
@@ -11,6 +11,7 @@ | |
import qualified GHC.Platform.ARM as ARM | |
import qualified GHC.Platform.ARM64 as ARM64 | |
+import qualified GHC.Platform.AArch64 as AArch64 | |
import qualified GHC.Platform.PPC as PPC | |
import qualified GHC.Platform.S390X as S390X | |
import qualified GHC.Platform.SPARC as SPARC | |
@@ -32,6 +33,7 @@ | |
ArchSPARC -> SPARC.callerSaves | |
ArchARM {} -> ARM.callerSaves | |
ArchARM64 -> ARM64.callerSaves | |
+ ArchAArch64 -> AArch64.callerSaves | |
arch | |
| arch `elem` [ArchPPC, ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2] -> | |
PPC.callerSaves | |
@@ -54,6 +56,7 @@ | |
ArchSPARC -> SPARC.activeStgRegs | |
ArchARM {} -> ARM.activeStgRegs | |
ArchARM64 -> ARM64.activeStgRegs | |
+ ArchAArch64 -> AArch64.activeStgRegs | |
arch | |
| arch `elem` [ArchPPC, ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2] -> | |
PPC.activeStgRegs | |
@@ -71,6 +74,7 @@ | |
ArchSPARC -> SPARC.haveRegBase | |
ArchARM {} -> ARM.haveRegBase | |
ArchARM64 -> ARM64.haveRegBase | |
+ ArchAArch64 -> AArch64.haveRegBase | |
arch | |
| arch `elem` [ArchPPC, ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2] -> | |
PPC.haveRegBase | |
@@ -88,6 +92,7 @@ | |
ArchSPARC -> SPARC.globalRegMaybe | |
ArchARM {} -> ARM.globalRegMaybe | |
ArchARM64 -> ARM64.globalRegMaybe | |
+ ArchAArch64 -> AArch64.globalRegMaybe | |
arch | |
| arch `elem` [ArchPPC, ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2] -> | |
PPC.globalRegMaybe | |
@@ -105,6 +110,7 @@ | |
ArchSPARC -> SPARC.freeReg | |
ArchARM {} -> ARM.freeReg | |
ArchARM64 -> ARM64.freeReg | |
+ ArchAArch64 -> AArch64.freeReg | |
arch | |
| arch `elem` [ArchPPC, ArchPPC_64 ELF_V1, ArchPPC_64 ELF_V2] -> | |
PPC.freeReg | |
diff -Nur ghc-8.10.2/compiler/cmm/PprC.hs ghc-8.10.2.new/compiler/cmm/PprC.hs | |
--- ghc-8.10.2/compiler/cmm/PprC.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/cmm/PprC.hs 2020-11-27 08:45:57.000000000 -0700 | |
@@ -1165,6 +1165,7 @@ | |
bewareLoadStoreAlignment ArchMipsel = True | |
bewareLoadStoreAlignment (ArchARM {}) = True | |
bewareLoadStoreAlignment ArchARM64 = True | |
+ bewareLoadStoreAlignment ArchAArch64 = True | |
bewareLoadStoreAlignment ArchSPARC = True | |
bewareLoadStoreAlignment ArchSPARC64 = True | |
-- Pessimistically assume that they will also cause problems | |
diff -Nur ghc-8.10.2/compiler/codeGen/CodeGen/Platform/AArch64.hs ghc-8.10.2.new/compiler/codeGen/CodeGen/Platform/AArch64.hs | |
--- ghc-8.10.2/compiler/codeGen/CodeGen/Platform/AArch64.hs 1969-12-31 17:00:00.000000000 -0700 | |
+++ ghc-8.10.2.new/compiler/codeGen/CodeGen/Platform/AArch64.hs 2020-11-26 21:24:21.000000000 -0700 | |
@@ -0,0 +1,10 @@ | |
+{-# LANGUAGE CPP #-} | |
+ | |
+module CodeGen.Platform.AArch64 where | |
+ | |
+import GhcPrelude | |
+ | |
+#define MACHREGS_NO_REGS 0 | |
+#define MACHREGS_aarch64 1 | |
+#include "../../../../includes/CodeGen.Platform.hs" | |
+ | |
diff -Nur ghc-8.10.2/compiler/ghc.cabal.in ghc-8.10.2.new/compiler/ghc.cabal.in | |
--- ghc-8.10.2/compiler/ghc.cabal.in 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/ghc.cabal.in 2020-11-27 09:16:27.000000000 -0700 | |
@@ -292,6 +292,7 @@ | |
GHC.Platform.Regs | |
GHC.Platform.ARM | |
GHC.Platform.ARM64 | |
+ GHC.Platform.AArch64 | |
GHC.Platform.NoRegs | |
GHC.Platform.PPC | |
GHC.Platform.S390X | |
diff -Nur ghc-8.10.2/compiler/main/DriverPipeline.hs ghc-8.10.2.new/compiler/main/DriverPipeline.hs | |
--- ghc-8.10.2/compiler/main/DriverPipeline.hs 2020-08-04 21:30:14.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/main/DriverPipeline.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -1803,9 +1803,10 @@ | |
(platformOS platform == OSDarwin) && | |
case platformArch platform of | |
ArchX86 -> True | |
- ArchX86_64 -> True | |
- ArchARM {} -> True | |
- ArchARM64 -> True | |
+ ArchX86_64 -> True | |
+ ArchARM {} -> True | |
+ ArchARM64 -> True | |
+ ArchAArch64 -> True | |
_ -> False | |
then ["-Wl,-no_compact_unwind"] | |
else []) | |
diff -Nur ghc-8.10.2/compiler/nativeGen/AsmCodeGen.hs ghc-8.10.2.new/compiler/nativeGen/AsmCodeGen.hs | |
--- ghc-8.10.2/compiler/nativeGen/AsmCodeGen.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/nativeGen/AsmCodeGen.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -173,6 +173,7 @@ | |
ArchSPARC64 -> panic "nativeCodeGen: No NCG for SPARC64" | |
ArchARM {} -> panic "nativeCodeGen: No NCG for ARM" | |
ArchARM64 -> panic "nativeCodeGen: No NCG for ARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchPPC_64 _ -> nCG' (ppcNcgImpl dflags) | |
ArchAlpha -> panic "nativeCodeGen: No NCG for Alpha" | |
ArchMipseb -> panic "nativeCodeGen: No NCG for mipseb" | |
diff -Nur ghc-8.10.2/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs | |
--- ghc-8.10.2/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -116,6 +116,7 @@ | |
ArchPPC_64 _ -> 15 | |
ArchARM _ _ _ -> panic "trivColorable ArchARM" | |
ArchARM64 -> panic "trivColorable ArchARM64" | |
+ ArchAArch64 -> panic "trivColorable ArchAArch64" | |
ArchAlpha -> panic "trivColorable ArchAlpha" | |
ArchMipseb -> panic "trivColorable ArchMipseb" | |
ArchMipsel -> panic "trivColorable ArchMipsel" | |
@@ -147,6 +148,7 @@ | |
ArchPPC_64 _ -> 0 | |
ArchARM _ _ _ -> panic "trivColorable ArchARM" | |
ArchARM64 -> panic "trivColorable ArchARM64" | |
+ ArchAArch64 -> panic "trivColorable ArchAArch64" | |
ArchAlpha -> panic "trivColorable ArchAlpha" | |
ArchMipseb -> panic "trivColorable ArchMipseb" | |
ArchMipsel -> panic "trivColorable ArchMipsel" | |
@@ -180,6 +182,7 @@ | |
ArchPPC_64 _ -> 20 | |
ArchARM _ _ _ -> panic "trivColorable ArchARM" | |
ArchARM64 -> panic "trivColorable ArchARM64" | |
+ ArchAArch64 -> panic "trivColorable ArchAArch64" | |
ArchAlpha -> panic "trivColorable ArchAlpha" | |
ArchMipseb -> panic "trivColorable ArchMipseb" | |
ArchMipsel -> panic "trivColorable ArchMipsel" | |
diff -Nur ghc-8.10.2/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs | |
--- ghc-8.10.2/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Linear/FreeRegs.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -80,6 +80,7 @@ | |
ArchSPARC64 -> panic "maxSpillSlots ArchSPARC64" | |
ArchARM _ _ _ -> panic "maxSpillSlots ArchARM" | |
ArchARM64 -> panic "maxSpillSlots ArchARM64" | |
+ ArchAArch64 -> panic "maxSpillSlots ArchAArch64" | |
ArchPPC_64 _ -> PPC.Instr.maxSpillSlots dflags | |
ArchAlpha -> panic "maxSpillSlots ArchAlpha" | |
ArchMipseb -> panic "maxSpillSlots ArchMipseb" | |
diff -Nur ghc-8.10.2/compiler/nativeGen/RegAlloc/Linear/Main.hs ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Linear/Main.hs | |
--- ghc-8.10.2/compiler/nativeGen/RegAlloc/Linear/Main.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/nativeGen/RegAlloc/Linear/Main.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -217,6 +217,7 @@ | |
ArchPPC -> go $ (frInitFreeRegs platform :: PPC.FreeRegs) | |
ArchARM _ _ _ -> panic "linearRegAlloc ArchARM" | |
ArchARM64 -> panic "linearRegAlloc ArchARM64" | |
+ ArchAArch64 -> panic "linearRegAlloc ArchAArch64" | |
ArchPPC_64 _ -> go $ (frInitFreeRegs platform :: PPC.FreeRegs) | |
ArchAlpha -> panic "linearRegAlloc ArchAlpha" | |
ArchMipseb -> panic "linearRegAlloc ArchMipseb" | |
diff -Nur ghc-8.10.2/compiler/nativeGen/TargetReg.hs ghc-8.10.2.new/compiler/nativeGen/TargetReg.hs | |
--- ghc-8.10.2/compiler/nativeGen/TargetReg.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/compiler/nativeGen/TargetReg.hs 2020-11-26 21:24:43.000000000 -0700 | |
@@ -50,6 +50,7 @@ | |
ArchPPC_64 _ -> PPC.virtualRegSqueeze | |
ArchARM _ _ _ -> panic "targetVirtualRegSqueeze ArchARM" | |
ArchARM64 -> panic "targetVirtualRegSqueeze ArchARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchAlpha -> panic "targetVirtualRegSqueeze ArchAlpha" | |
ArchMipseb -> panic "targetVirtualRegSqueeze ArchMipseb" | |
ArchMipsel -> panic "targetVirtualRegSqueeze ArchMipsel" | |
@@ -69,6 +70,7 @@ | |
ArchPPC_64 _ -> PPC.realRegSqueeze | |
ArchARM _ _ _ -> panic "targetRealRegSqueeze ArchARM" | |
ArchARM64 -> panic "targetRealRegSqueeze ArchARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchAlpha -> panic "targetRealRegSqueeze ArchAlpha" | |
ArchMipseb -> panic "targetRealRegSqueeze ArchMipseb" | |
ArchMipsel -> panic "targetRealRegSqueeze ArchMipsel" | |
@@ -87,6 +89,7 @@ | |
ArchPPC_64 _ -> PPC.classOfRealReg | |
ArchARM _ _ _ -> panic "targetClassOfRealReg ArchARM" | |
ArchARM64 -> panic "targetClassOfRealReg ArchARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchAlpha -> panic "targetClassOfRealReg ArchAlpha" | |
ArchMipseb -> panic "targetClassOfRealReg ArchMipseb" | |
ArchMipsel -> panic "targetClassOfRealReg ArchMipsel" | |
@@ -105,6 +108,7 @@ | |
ArchPPC_64 _ -> PPC.mkVirtualReg | |
ArchARM _ _ _ -> panic "targetMkVirtualReg ArchARM" | |
ArchARM64 -> panic "targetMkVirtualReg ArchARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchAlpha -> panic "targetMkVirtualReg ArchAlpha" | |
ArchMipseb -> panic "targetMkVirtualReg ArchMipseb" | |
ArchMipsel -> panic "targetMkVirtualReg ArchMipsel" | |
@@ -123,6 +127,7 @@ | |
ArchPPC_64 _ -> PPC.regDotColor | |
ArchARM _ _ _ -> panic "targetRegDotColor ArchARM" | |
ArchARM64 -> panic "targetRegDotColor ArchARM64" | |
+ ArchAArch64 -> panic "nativeCodeGen: No NCG for AArch64" | |
ArchAlpha -> panic "targetRegDotColor ArchAlpha" | |
ArchMipseb -> panic "targetRegDotColor ArchMipseb" | |
ArchMipsel -> panic "targetRegDotColor ArchMipsel" | |
diff -Nur ghc-8.10.2/config.guess ghc-8.10.2.new/config.guess | |
--- ghc-8.10.2/config.guess 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/config.guess 2020-11-26 21:22:54.000000000 -0700 | |
@@ -2,7 +2,7 @@ | |
# Attempt to guess a canonical system name. | |
# Copyright 1992-2019 Free Software Foundation, Inc. | |
-timestamp='2019-12-21' | |
+timestamp='2019-03-04' | |
# This file is free software; you can redistribute it and/or modify it | |
# under the terms of the GNU General Public License as published by | |
@@ -99,8 +99,6 @@ | |
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 | |
set_cc_for_build() { | |
- # prevent multiple calls if $tmp is already set | |
- test "$tmp" && return 0 | |
: "${TMPDIR=/tmp}" | |
# shellcheck disable=SC2039 | |
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || | |
@@ -264,9 +262,6 @@ | |
*:SolidBSD:*:*) | |
echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" | |
exit ;; | |
- *:OS108:*:*) | |
- echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" | |
- exit ;; | |
macppc:MirBSD:*:*) | |
echo powerpc-unknown-mirbsd"$UNAME_RELEASE" | |
exit ;; | |
@@ -276,15 +271,12 @@ | |
*:Sortix:*:*) | |
echo "$UNAME_MACHINE"-unknown-sortix | |
exit ;; | |
- *:Twizzler:*:*) | |
- echo "$UNAME_MACHINE"-unknown-twizzler | |
- exit ;; | |
*:Redox:*:*) | |
echo "$UNAME_MACHINE"-unknown-redox | |
exit ;; | |
mips:OSF1:*.*) | |
- echo mips-dec-osf1 | |
- exit ;; | |
+ echo mips-dec-osf1 | |
+ exit ;; | |
alpha:OSF1:*:*) | |
case $UNAME_RELEASE in | |
*4.0) | |
@@ -926,7 +918,7 @@ | |
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" | |
exit ;; | |
alpha:Linux:*:*) | |
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in | |
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in | |
EV5) UNAME_MACHINE=alphaev5 ;; | |
EV56) UNAME_MACHINE=alphaev56 ;; | |
PCA56) UNAME_MACHINE=alphapca56 ;; | |
@@ -1333,39 +1325,38 @@ | |
echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" | |
exit ;; | |
*:Darwin:*:*) | |
- UNAME_PROCESSOR=`uname -p` | |
- case $UNAME_PROCESSOR in | |
- unknown) UNAME_PROCESSOR=powerpc ;; | |
- esac | |
- if command -v xcode-select > /dev/null 2> /dev/null && \ | |
- ! xcode-select --print-path > /dev/null 2> /dev/null ; then | |
- # Avoid executing cc if there is no toolchain installed as | |
- # cc will be a stub that puts up a graphical alert | |
- # prompting the user to install developer tools. | |
- CC_FOR_BUILD=no_compiler_found | |
- else | |
- set_cc_for_build | |
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown | |
+ set_cc_for_build | |
+ if test "$UNAME_PROCESSOR" = unknown ; then | |
+ UNAME_PROCESSOR=powerpc | |
fi | |
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then | |
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
- grep IS_64BIT_ARCH >/dev/null | |
- then | |
- case $UNAME_PROCESSOR in | |
- i386) UNAME_PROCESSOR=x86_64 ;; | |
- powerpc) UNAME_PROCESSOR=powerpc64 ;; | |
- esac | |
- fi | |
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc | |
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ | |
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
- grep IS_PPC >/dev/null | |
- then | |
- UNAME_PROCESSOR=powerpc | |
+ if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then | |
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then | |
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ | |
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
+ grep IS_64BIT_ARCH >/dev/null | |
+ then | |
+ case $UNAME_PROCESSOR in | |
+ i386) UNAME_PROCESSOR=x86_64 ;; | |
+ powerpc) UNAME_PROCESSOR=powerpc64 ;; | |
+ esac | |
+ fi | |
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc | |
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ | |
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ | |
+ grep IS_PPC >/dev/null | |
+ then | |
+ UNAME_PROCESSOR=powerpc | |
+ fi | |
fi | |
elif test "$UNAME_PROCESSOR" = i386 ; then | |
- # uname -m returns i386 or x86_64 | |
- UNAME_PROCESSOR=$UNAME_MACHINE | |
+ # Avoid executing cc on OS X 10.9, as it ships with a stub | |
+ # that puts up a graphical alert prompting to install | |
+ # developer tools. Any system running Mac OS X 10.7 or | |
+ # later (Darwin 11 and later) is required to have a 64-bit | |
+ # processor. This is not true of the ARM version of Darwin | |
+ # that Apple uses in portable devices. | |
+ UNAME_PROCESSOR=x86_64 | |
fi | |
echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" | |
exit ;; | |
@@ -1477,14 +1468,6 @@ | |
#include <sys/types.h> | |
#include <sys/utsname.h> | |
#endif | |
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) | |
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) | |
-#include <signal.h> | |
-#if defined(_SIZE_T_) || defined(SIGLOST) | |
-#include <sys/utsname.h> | |
-#endif | |
-#endif | |
-#endif | |
main () | |
{ | |
#if defined (sony) | |
@@ -1572,23 +1555,18 @@ | |
printf ("vax-dec-bsd\n"); exit (0); | |
#endif | |
#else | |
-#if defined(_SIZE_T_) || defined(SIGLOST) | |
- struct utsname un; | |
- uname (&un); | |
- printf ("vax-dec-ultrix%s\n", un.release); exit (0); | |
-#else | |
printf ("vax-dec-ultrix\n"); exit (0); | |
#endif | |
#endif | |
-#endif | |
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) | |
#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) | |
-#if defined(_SIZE_T_) || defined(SIGLOST) | |
- struct utsname *un; | |
- uname (&un); | |
- printf ("mips-dec-ultrix%s\n", un.release); exit (0); | |
+#include <signal.h> | |
+#if defined(_SIZE_T_) /* >= ULTRIX4 */ | |
+ printf ("mips-dec-ultrix4\n"); exit (0); | |
#else | |
- printf ("mips-dec-ultrix\n"); exit (0); | |
+#if defined(ULTRIX3) || defined(ultrix3) || defined(SIGLOST) | |
+ printf ("mips-dec-ultrix3\n"); exit (0); | |
+#endif | |
#endif | |
#endif | |
#endif | |
diff -Nur ghc-8.10.2/config.sub ghc-8.10.2.new/config.sub | |
--- ghc-8.10.2/config.sub 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/config.sub 2020-11-26 21:29:24.000000000 -0700 | |
@@ -1,8 +1,8 @@ | |
#! /bin/sh | |
# Configuration validation subroutine script. | |
-# Copyright 1992-2019 Free Software Foundation, Inc. | |
+# Copyright 1992-2020 Free Software Foundation, Inc. | |
-timestamp='2019-06-30' | |
+timestamp='2020-09-08' | |
# This file is free software; you can redistribute it and/or modify it | |
# under the terms of the GNU General Public License as published by | |
@@ -67,7 +67,7 @@ | |
version="\ | |
GNU config.sub ($timestamp) | |
-Copyright 1992-2019 Free Software Foundation, Inc. | |
+Copyright 1992-2020 Free Software Foundation, Inc. | |
This is free software; see the source for copying conditions. There is NO | |
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." | |
@@ -124,28 +124,27 @@ | |
;; | |
*-*-*-*) | |
basic_machine=$field1-$field2 | |
- os=$field3-$field4 | |
+ basic_os=$field3-$field4 | |
;; | |
*-*-*) | |
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two | |
# parts | |
maybe_os=$field2-$field3 | |
case $maybe_os in | |
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ | |
- | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ | |
+ nto-qnx* | linux-* | uclinux-uclibc* \ | |
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | |
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | |
| storm-chaos* | os2-emx* | rtmk-nova*) | |
basic_machine=$field1 | |
- os=$maybe_os | |
+ basic_os=$maybe_os | |
;; | |
android-linux) | |
basic_machine=$field1-unknown | |
- os=linux-android | |
+ basic_os=linux-android | |
;; | |
*) | |
basic_machine=$field1-$field2 | |
- os=$field3 | |
+ basic_os=$field3 | |
;; | |
esac | |
;; | |
@@ -154,7 +153,7 @@ | |
case $field1-$field2 in | |
decstation-3100) | |
basic_machine=mips-dec | |
- os= | |
+ basic_os= | |
;; | |
*-*) | |
# Second component is usually, but not always the OS | |
@@ -162,7 +161,7 @@ | |
# Prevent following clause from handling this valid os | |
sun*os*) | |
basic_machine=$field1 | |
- os=$field2 | |
+ basic_os=$field2 | |
;; | |
# Manufacturers | |
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | |
@@ -175,11 +174,11 @@ | |
| microblaze* | sim | cisco \ | |
| oki | wec | wrs | winbond) | |
basic_machine=$field1-$field2 | |
- os= | |
+ basic_os= | |
;; | |
*) | |
basic_machine=$field1 | |
- os=$field2 | |
+ basic_os=$field2 | |
;; | |
esac | |
;; | |
@@ -191,447 +190,451 @@ | |
case $field1 in | |
386bsd) | |
basic_machine=i386-pc | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
a29khif) | |
basic_machine=a29k-amd | |
- os=udi | |
+ basic_os=udi | |
;; | |
adobe68k) | |
basic_machine=m68010-adobe | |
- os=scout | |
+ basic_os=scout | |
;; | |
alliant) | |
basic_machine=fx80-alliant | |
- os= | |
+ basic_os= | |
;; | |
altos | altos3068) | |
basic_machine=m68k-altos | |
- os= | |
+ basic_os= | |
;; | |
am29k) | |
basic_machine=a29k-none | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
amdahl) | |
basic_machine=580-amdahl | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
amiga) | |
basic_machine=m68k-unknown | |
- os= | |
+ basic_os= | |
;; | |
amigaos | amigados) | |
basic_machine=m68k-unknown | |
- os=amigaos | |
+ basic_os=amigaos | |
;; | |
amigaunix | amix) | |
basic_machine=m68k-unknown | |
- os=sysv4 | |
+ basic_os=sysv4 | |
;; | |
apollo68) | |
basic_machine=m68k-apollo | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
apollo68bsd) | |
basic_machine=m68k-apollo | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
aros) | |
basic_machine=i386-pc | |
- os=aros | |
+ basic_os=aros | |
;; | |
aux) | |
basic_machine=m68k-apple | |
- os=aux | |
+ basic_os=aux | |
;; | |
balance) | |
basic_machine=ns32k-sequent | |
- os=dynix | |
+ basic_os=dynix | |
;; | |
blackfin) | |
basic_machine=bfin-unknown | |
- os=linux | |
+ basic_os=linux | |
;; | |
cegcc) | |
basic_machine=arm-unknown | |
- os=cegcc | |
+ basic_os=cegcc | |
;; | |
convex-c1) | |
basic_machine=c1-convex | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
convex-c2) | |
basic_machine=c2-convex | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
convex-c32) | |
basic_machine=c32-convex | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
convex-c34) | |
basic_machine=c34-convex | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
convex-c38) | |
basic_machine=c38-convex | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
cray) | |
basic_machine=j90-cray | |
- os=unicos | |
+ basic_os=unicos | |
;; | |
crds | unos) | |
basic_machine=m68k-crds | |
- os= | |
+ basic_os= | |
;; | |
da30) | |
basic_machine=m68k-da30 | |
- os= | |
+ basic_os= | |
;; | |
decstation | pmax | pmin | dec3100 | decstatn) | |
basic_machine=mips-dec | |
- os= | |
+ basic_os= | |
;; | |
delta88) | |
basic_machine=m88k-motorola | |
- os=sysv3 | |
+ basic_os=sysv3 | |
;; | |
dicos) | |
basic_machine=i686-pc | |
- os=dicos | |
+ basic_os=dicos | |
;; | |
djgpp) | |
basic_machine=i586-pc | |
- os=msdosdjgpp | |
+ basic_os=msdosdjgpp | |
;; | |
ebmon29k) | |
basic_machine=a29k-amd | |
- os=ebmon | |
+ basic_os=ebmon | |
;; | |
es1800 | OSE68k | ose68k | ose | OSE) | |
basic_machine=m68k-ericsson | |
- os=ose | |
+ basic_os=ose | |
;; | |
gmicro) | |
basic_machine=tron-gmicro | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
go32) | |
basic_machine=i386-pc | |
- os=go32 | |
+ basic_os=go32 | |
;; | |
h8300hms) | |
basic_machine=h8300-hitachi | |
- os=hms | |
+ basic_os=hms | |
;; | |
h8300xray) | |
basic_machine=h8300-hitachi | |
- os=xray | |
+ basic_os=xray | |
;; | |
h8500hms) | |
basic_machine=h8500-hitachi | |
- os=hms | |
+ basic_os=hms | |
;; | |
harris) | |
basic_machine=m88k-harris | |
- os=sysv3 | |
+ basic_os=sysv3 | |
;; | |
hp300 | hp300hpux) | |
basic_machine=m68k-hp | |
- os=hpux | |
+ basic_os=hpux | |
;; | |
hp300bsd) | |
basic_machine=m68k-hp | |
- os=bsd | |
+ basic_os=bsd | |
;; | |
hppaosf) | |
basic_machine=hppa1.1-hp | |
- os=osf | |
+ basic_os=osf | |
;; | |
hppro) | |
basic_machine=hppa1.1-hp | |
- os=proelf | |
+ basic_os=proelf | |
;; | |
i386mach) | |
basic_machine=i386-mach | |
- os=mach | |
+ basic_os=mach | |
;; | |
isi68 | isi) | |
basic_machine=m68k-isi | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
m68knommu) | |
basic_machine=m68k-unknown | |
- os=linux | |
+ basic_os=linux | |
;; | |
magnum | m3230) | |
basic_machine=mips-mips | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
merlin) | |
basic_machine=ns32k-utek | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
mingw64) | |
basic_machine=x86_64-pc | |
- os=mingw64 | |
+ basic_os=mingw64 | |
;; | |
mingw32) | |
basic_machine=i686-pc | |
- os=mingw32 | |
+ basic_os=mingw32 | |
;; | |
mingw32ce) | |
basic_machine=arm-unknown | |
- os=mingw32ce | |
+ basic_os=mingw32ce | |
;; | |
monitor) | |
basic_machine=m68k-rom68k | |
- os=coff | |
+ basic_os=coff | |
;; | |
morphos) | |
basic_machine=powerpc-unknown | |
- os=morphos | |
+ basic_os=morphos | |
;; | |
moxiebox) | |
basic_machine=moxie-unknown | |
- os=moxiebox | |
+ basic_os=moxiebox | |
;; | |
msdos) | |
basic_machine=i386-pc | |
- os=msdos | |
+ basic_os=msdos | |
;; | |
msys) | |
basic_machine=i686-pc | |
- os=msys | |
+ basic_os=msys | |
;; | |
mvs) | |
basic_machine=i370-ibm | |
- os=mvs | |
+ basic_os=mvs | |
;; | |
nacl) | |
basic_machine=le32-unknown | |
- os=nacl | |
+ basic_os=nacl | |
;; | |
ncr3000) | |
basic_machine=i486-ncr | |
- os=sysv4 | |
+ basic_os=sysv4 | |
;; | |
netbsd386) | |
basic_machine=i386-pc | |
- os=netbsd | |
+ basic_os=netbsd | |
;; | |
netwinder) | |
basic_machine=armv4l-rebel | |
- os=linux | |
+ basic_os=linux | |
;; | |
news | news700 | news800 | news900) | |
basic_machine=m68k-sony | |
- os=newsos | |
+ basic_os=newsos | |
;; | |
news1000) | |
basic_machine=m68030-sony | |
- os=newsos | |
+ basic_os=newsos | |
;; | |
necv70) | |
basic_machine=v70-nec | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
nh3000) | |
basic_machine=m68k-harris | |
- os=cxux | |
+ basic_os=cxux | |
;; | |
nh[45]000) | |
basic_machine=m88k-harris | |
- os=cxux | |
+ basic_os=cxux | |
;; | |
nindy960) | |
basic_machine=i960-intel | |
- os=nindy | |
+ basic_os=nindy | |
;; | |
mon960) | |
basic_machine=i960-intel | |
- os=mon960 | |
+ basic_os=mon960 | |
;; | |
nonstopux) | |
basic_machine=mips-compaq | |
- os=nonstopux | |
+ basic_os=nonstopux | |
;; | |
os400) | |
basic_machine=powerpc-ibm | |
- os=os400 | |
+ basic_os=os400 | |
;; | |
OSE68000 | ose68000) | |
basic_machine=m68000-ericsson | |
- os=ose | |
+ basic_os=ose | |
;; | |
os68k) | |
basic_machine=m68k-none | |
- os=os68k | |
+ basic_os=os68k | |
;; | |
paragon) | |
basic_machine=i860-intel | |
- os=osf | |
+ basic_os=osf | |
;; | |
parisc) | |
basic_machine=hppa-unknown | |
- os=linux | |
+ basic_os=linux | |
+ ;; | |
+ psp) | |
+ basic_machine=mipsallegrexel-sony | |
+ basic_os=psp | |
;; | |
pw32) | |
basic_machine=i586-unknown | |
- os=pw32 | |
+ basic_os=pw32 | |
;; | |
rdos | rdos64) | |
basic_machine=x86_64-pc | |
- os=rdos | |
+ basic_os=rdos | |
;; | |
rdos32) | |
basic_machine=i386-pc | |
- os=rdos | |
+ basic_os=rdos | |
;; | |
rom68k) | |
basic_machine=m68k-rom68k | |
- os=coff | |
+ basic_os=coff | |
;; | |
sa29200) | |
basic_machine=a29k-amd | |
- os=udi | |
+ basic_os=udi | |
;; | |
sei) | |
basic_machine=mips-sei | |
- os=seiux | |
+ basic_os=seiux | |
;; | |
sequent) | |
basic_machine=i386-sequent | |
- os= | |
+ basic_os= | |
;; | |
sps7) | |
basic_machine=m68k-bull | |
- os=sysv2 | |
+ basic_os=sysv2 | |
;; | |
st2000) | |
basic_machine=m68k-tandem | |
- os= | |
+ basic_os= | |
;; | |
stratus) | |
basic_machine=i860-stratus | |
- os=sysv4 | |
+ basic_os=sysv4 | |
;; | |
sun2) | |
basic_machine=m68000-sun | |
- os= | |
+ basic_os= | |
;; | |
sun2os3) | |
basic_machine=m68000-sun | |
- os=sunos3 | |
+ basic_os=sunos3 | |
;; | |
sun2os4) | |
basic_machine=m68000-sun | |
- os=sunos4 | |
+ basic_os=sunos4 | |
;; | |
sun3) | |
basic_machine=m68k-sun | |
- os= | |
+ basic_os= | |
;; | |
sun3os3) | |
basic_machine=m68k-sun | |
- os=sunos3 | |
+ basic_os=sunos3 | |
;; | |
sun3os4) | |
basic_machine=m68k-sun | |
- os=sunos4 | |
+ basic_os=sunos4 | |
;; | |
sun4) | |
basic_machine=sparc-sun | |
- os= | |
+ basic_os= | |
;; | |
sun4os3) | |
basic_machine=sparc-sun | |
- os=sunos3 | |
+ basic_os=sunos3 | |
;; | |
sun4os4) | |
basic_machine=sparc-sun | |
- os=sunos4 | |
+ basic_os=sunos4 | |
;; | |
sun4sol2) | |
basic_machine=sparc-sun | |
- os=solaris2 | |
+ basic_os=solaris2 | |
;; | |
sun386 | sun386i | roadrunner) | |
basic_machine=i386-sun | |
- os= | |
+ basic_os= | |
;; | |
sv1) | |
basic_machine=sv1-cray | |
- os=unicos | |
+ basic_os=unicos | |
;; | |
symmetry) | |
basic_machine=i386-sequent | |
- os=dynix | |
+ basic_os=dynix | |
;; | |
t3e) | |
basic_machine=alphaev5-cray | |
- os=unicos | |
+ basic_os=unicos | |
;; | |
t90) | |
basic_machine=t90-cray | |
- os=unicos | |
+ basic_os=unicos | |
;; | |
toad1) | |
basic_machine=pdp10-xkl | |
- os=tops20 | |
+ basic_os=tops20 | |
;; | |
tpf) | |
basic_machine=s390x-ibm | |
- os=tpf | |
+ basic_os=tpf | |
;; | |
udi29k) | |
basic_machine=a29k-amd | |
- os=udi | |
+ basic_os=udi | |
;; | |
ultra3) | |
basic_machine=a29k-nyu | |
- os=sym1 | |
+ basic_os=sym1 | |
;; | |
v810 | necv810) | |
basic_machine=v810-nec | |
- os=none | |
+ basic_os=none | |
;; | |
vaxv) | |
basic_machine=vax-dec | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
vms) | |
basic_machine=vax-dec | |
- os=vms | |
+ basic_os=vms | |
;; | |
vsta) | |
basic_machine=i386-pc | |
- os=vsta | |
+ basic_os=vsta | |
;; | |
vxworks960) | |
basic_machine=i960-wrs | |
- os=vxworks | |
+ basic_os=vxworks | |
;; | |
vxworks68) | |
basic_machine=m68k-wrs | |
- os=vxworks | |
+ basic_os=vxworks | |
;; | |
vxworks29k) | |
basic_machine=a29k-wrs | |
- os=vxworks | |
+ basic_os=vxworks | |
;; | |
xbox) | |
basic_machine=i686-pc | |
- os=mingw32 | |
+ basic_os=mingw32 | |
;; | |
ymp) | |
basic_machine=ymp-cray | |
- os=unicos | |
+ basic_os=unicos | |
;; | |
*) | |
basic_machine=$1 | |
- os= | |
+ basic_os= | |
;; | |
esac | |
;; | |
@@ -683,17 +686,17 @@ | |
bluegene*) | |
cpu=powerpc | |
vendor=ibm | |
- os=cnk | |
+ basic_os=cnk | |
;; | |
decsystem10* | dec10*) | |
cpu=pdp10 | |
vendor=dec | |
- os=tops10 | |
+ basic_os=tops10 | |
;; | |
decsystem20* | dec20*) | |
cpu=pdp10 | |
vendor=dec | |
- os=tops20 | |
+ basic_os=tops20 | |
;; | |
delta | 3300 | motorola-3300 | motorola-delta \ | |
| 3300-motorola | delta-motorola) | |
@@ -703,7 +706,7 @@ | |
dpx2*) | |
cpu=m68k | |
vendor=bull | |
- os=sysv3 | |
+ basic_os=sysv3 | |
;; | |
encore | umax | mmax) | |
cpu=ns32k | |
@@ -712,7 +715,7 @@ | |
elxsi) | |
cpu=elxsi | |
vendor=elxsi | |
- os=${os:-bsd} | |
+ basic_os=${basic_os:-bsd} | |
;; | |
fx2800) | |
cpu=i860 | |
@@ -725,7 +728,7 @@ | |
h3050r* | hiux*) | |
cpu=hppa1.1 | |
vendor=hitachi | |
- os=hiuxwe2 | |
+ basic_os=hiuxwe2 | |
;; | |
hp3k9[0-9][0-9] | hp9[0-9][0-9]) | |
cpu=hppa1.0 | |
@@ -768,36 +771,36 @@ | |
i*86v32) | |
cpu=`echo "$1" | sed -e 's/86.*/86/'` | |
vendor=pc | |
- os=sysv32 | |
+ basic_os=sysv32 | |
;; | |
i*86v4*) | |
cpu=`echo "$1" | sed -e 's/86.*/86/'` | |
vendor=pc | |
- os=sysv4 | |
+ basic_os=sysv4 | |
;; | |
i*86v) | |
cpu=`echo "$1" | sed -e 's/86.*/86/'` | |
vendor=pc | |
- os=sysv | |
+ basic_os=sysv | |
;; | |
i*86sol2) | |
cpu=`echo "$1" | sed -e 's/86.*/86/'` | |
vendor=pc | |
- os=solaris2 | |
+ basic_os=solaris2 | |
;; | |
j90 | j90-cray) | |
cpu=j90 | |
vendor=cray | |
- os=${os:-unicos} | |
+ basic_os=${basic_os:-unicos} | |
;; | |
iris | iris4d) | |
cpu=mips | |
vendor=sgi | |
- case $os in | |
+ case $basic_os in | |
irix*) | |
;; | |
*) | |
- os=irix4 | |
+ basic_os=irix4 | |
;; | |
esac | |
;; | |
@@ -808,26 +811,26 @@ | |
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) | |
cpu=m68k | |
vendor=atari | |
- os=mint | |
+ basic_os=mint | |
;; | |
news-3600 | risc-news) | |
cpu=mips | |
vendor=sony | |
- os=newsos | |
+ basic_os=newsos | |
;; | |
next | m*-next) | |
cpu=m68k | |
vendor=next | |
- case $os in | |
+ case $basic_os in | |
openstep*) | |
;; | |
nextstep*) | |
;; | |
ns2*) | |
- os=nextstep2 | |
+ basic_os=nextstep2 | |
;; | |
*) | |
- os=nextstep3 | |
+ basic_os=nextstep3 | |
;; | |
esac | |
;; | |
@@ -838,12 +841,12 @@ | |
op50n-* | op60c-*) | |
cpu=hppa1.1 | |
vendor=oki | |
- os=proelf | |
+ basic_os=proelf | |
;; | |
pa-hitachi) | |
cpu=hppa1.1 | |
vendor=hitachi | |
- os=hiuxwe2 | |
+ basic_os=hiuxwe2 | |
;; | |
pbd) | |
cpu=sparc | |
@@ -880,12 +883,12 @@ | |
sde) | |
cpu=mipsisa32 | |
vendor=sde | |
- os=${os:-elf} | |
+ basic_os=${basic_os:-elf} | |
;; | |
simso-wrs) | |
cpu=sparclite | |
vendor=wrs | |
- os=vxworks | |
+ basic_os=vxworks | |
;; | |
tower | tower-32) | |
cpu=m68k | |
@@ -902,7 +905,7 @@ | |
w89k-*) | |
cpu=hppa1.1 | |
vendor=winbond | |
- os=proelf | |
+ basic_os=proelf | |
;; | |
none) | |
cpu=none | |
@@ -955,11 +958,11 @@ | |
# some cases the only manufacturer, in others, it is the most popular. | |
craynv-unknown) | |
vendor=cray | |
- os=${os:-unicosmp} | |
+ basic_os=${basic_os:-unicosmp} | |
;; | |
c90-unknown | c90-cray) | |
vendor=cray | |
- os=${os:-unicos} | |
+ basic_os=${Basic_os:-unicos} | |
;; | |
fx80-unknown) | |
vendor=alliant | |
@@ -1003,7 +1006,7 @@ | |
dpx20-unknown | dpx20-bull) | |
cpu=rs6000 | |
vendor=bull | |
- os=${os:-bosx} | |
+ basic_os=${basic_os:-bosx} | |
;; | |
# Here we normalize CPU types irrespective of the vendor | |
@@ -1012,7 +1015,7 @@ | |
;; | |
blackfin-*) | |
cpu=bfin | |
- os=linux | |
+ basic_os=linux | |
;; | |
c54x-*) | |
cpu=tic54x | |
@@ -1025,7 +1028,7 @@ | |
;; | |
e500v[12]-*) | |
cpu=powerpc | |
- os=$os"spe" | |
+ basic_os=${basic_os}"spe" | |
;; | |
mips3*-*) | |
cpu=mips64 | |
@@ -1035,7 +1038,7 @@ | |
;; | |
m68knommu-*) | |
cpu=m68k | |
- os=linux | |
+ basic_os=linux | |
;; | |
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) | |
cpu=s12z | |
@@ -1045,7 +1048,7 @@ | |
;; | |
parisc-*) | |
cpu=hppa | |
- os=linux | |
+ basic_os=linux | |
;; | |
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) | |
cpu=i586 | |
@@ -1101,11 +1104,14 @@ | |
xscale-* | xscalee[bl]-*) | |
cpu=`echo "$cpu" | sed 's/^xscale/arm/'` | |
;; | |
+ arm64-*) | |
+ cpu=aarch64 | |
+ ;; | |
# Recognize the canonical CPU Types that limit and/or modify the | |
# company names they are paired with. | |
cr16-*) | |
- os=${os:-elf} | |
+ basic_os=${basic_os:-elf} | |
;; | |
crisv32-* | etraxfs*-*) | |
cpu=crisv32 | |
@@ -1116,7 +1122,7 @@ | |
vendor=axis | |
;; | |
crx-*) | |
- os=${os:-elf} | |
+ basic_os=${basic_os:-elf} | |
;; | |
neo-tandem) | |
cpu=neo | |
@@ -1138,16 +1144,12 @@ | |
cpu=nsx | |
vendor=tandem | |
;; | |
- s390-*) | |
- cpu=s390 | |
- vendor=ibm | |
- ;; | |
- s390x-*) | |
- cpu=s390x | |
- vendor=ibm | |
+ mipsallegrexel-sony) | |
+ cpu=mipsallegrexel | |
+ vendor=sony | |
;; | |
tile*-*) | |
- os=${os:-linux-gnu} | |
+ basic_os=${basic_os:-linux-gnu} | |
;; | |
*) | |
@@ -1164,7 +1166,7 @@ | |
| am33_2.0 \ | |
| amdgcn \ | |
| arc | arceb \ | |
- | arm | arm[lb]e | arme[lb] | armv* \ | |
+ | arm | arm[lb]e | arme[lb] | armv* \ | |
| avr | avr32 \ | |
| asmjs \ | |
| ba \ | |
@@ -1229,6 +1231,7 @@ | |
| pyramid \ | |
| riscv | riscv32 | riscv64 \ | |
| rl78 | romp | rs6000 | rx \ | |
+ | s390 | s390x \ | |
| score \ | |
| sh | shl \ | |
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ | |
@@ -1275,8 +1278,43 @@ | |
# Decode manufacturer-specific aliases for certain operating systems. | |
-if [ x$os != x ] | |
+if test x$basic_os != x | |
then | |
+ | |
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just | |
+# set os. | |
+case $basic_os in | |
+ gnu/linux*) | |
+ kernel=linux | |
+ os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'` | |
+ ;; | |
+ nto-qnx*) | |
+ kernel=nto | |
+ os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'` | |
+ ;; | |
+ *-*) | |
+ # shellcheck disable=SC2162 | |
+ IFS="-" read kernel os <<EOF | |
+$basic_os | |
+EOF | |
+ ;; | |
+ # Default OS when just kernel was specified | |
+ nto*) | |
+ kernel=nto | |
+ os=`echo $basic_os | sed -e 's|nto|qnx|'` | |
+ ;; | |
+ linux*) | |
+ kernel=linux | |
+ os=`echo $basic_os | sed -e 's|linux|gnu|'` | |
+ ;; | |
+ *) | |
+ kernel= | |
+ os=$basic_os | |
+ ;; | |
+esac | |
+ | |
+# Now, normalize the OS (knowing we just have one component, it's not a kernel, | |
+# etc.) | |
case $os in | |
# First match some system type aliases that might get confused | |
# with valid system types. | |
@@ -1296,9 +1334,6 @@ | |
unixware*) | |
os=sysv4.2uw | |
;; | |
- gnu/linux*) | |
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` | |
- ;; | |
# es1800 is here to avoid being matched by es* (a different OS) | |
es1800*) | |
os=ose | |
@@ -1322,10 +1357,7 @@ | |
sco3.2.[4-9]*) | |
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` | |
;; | |
- sco3.2v[4-9]* | sco5v6*) | |
- # Don't forget version if it is 3.2v4 or newer. | |
- ;; | |
- scout) | |
+ sco*v* | scout) | |
# Don't match below | |
;; | |
sco*) | |
@@ -1334,78 +1366,25 @@ | |
psos*) | |
os=psos | |
;; | |
- # Now accept the basic system types. | |
- # The portable systems comes first. | |
- # Each alternative MUST end in a * to match a version number. | |
- # sysv* is not here because it comes later, after sysvr4. | |
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ | |
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ | |
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | |
- | sym* | kopensolaris* | plan9* \ | |
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | |
- | aos* | aros* | cloudabi* | sortix* | twizzler* \ | |
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | |
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | |
- | knetbsd* | mirbsd* | netbsd* \ | |
- | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ | |
- | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ | |
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | |
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | |
- | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ | |
- | chorusrdb* | cegcc* | glidix* \ | |
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | |
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ | |
- | linux-newlib* | linux-musl* | linux-uclibc* \ | |
- | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | |
- | interix* | uwin* | mks* | rhapsody* | darwin* \ | |
- | openstep* | oskit* | conix* | pw32* | nonstopux* \ | |
- | storm-chaos* | tops10* | tenex* | tops20* | its* \ | |
- | os2* | vos* | palmos* | uclinux* | nucleus* \ | |
- | morphos* | superux* | rtmk* | windiss* \ | |
- | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | |
- | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | |
- | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | |
- | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | |
- | nsk* | powerunix) | |
- # Remember, each alternative MUST END IN *, to match a version number. | |
- ;; | |
qnx*) | |
- case $cpu in | |
- x86 | i*86) | |
- ;; | |
- *) | |
- os=nto-$os | |
- ;; | |
- esac | |
+ os=qnx | |
;; | |
hiux*) | |
os=hiuxwe2 | |
;; | |
- nto-qnx*) | |
- ;; | |
- nto*) | |
- os=`echo $os | sed -e 's|nto|nto-qnx|'` | |
- ;; | |
- sim | xray | os68k* | v88r* \ | |
- | windows* | osx | abug | netware* | os9* \ | |
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) | |
- ;; | |
- linux-dietlibc) | |
- os=linux-dietlibc | |
- ;; | |
- linux*) | |
- os=`echo $os | sed -e 's|linux|linux-gnu|'` | |
- ;; | |
lynx*178) | |
os=lynxos178 | |
;; | |
lynx*5) | |
os=lynxos5 | |
;; | |
+ lynxos*) | |
+ # don't get caught up in next wildcard | |
+ ;; | |
lynx*) | |
os=lynxos | |
;; | |
- mac*) | |
+ mac[0-9]*) | |
os=`echo "$os" | sed -e 's|mac|macos|'` | |
;; | |
opened*) | |
@@ -1475,18 +1454,12 @@ | |
sysvr4) | |
os=sysv4 | |
;; | |
- # This must come after sysvr4. | |
- sysv*) | |
- ;; | |
ose*) | |
os=ose | |
;; | |
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*) | |
os=mint | |
;; | |
- zvmoe) | |
- os=zvmoe | |
- ;; | |
dicos*) | |
os=dicos | |
;; | |
@@ -1503,19 +1476,11 @@ | |
;; | |
esac | |
;; | |
- nacl*) | |
- ;; | |
- ios) | |
- ;; | |
- none) | |
- ;; | |
- *-eabi) | |
- ;; | |
*) | |
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 | |
- exit 1 | |
+ # No normalization, but not necessarily accepted, that comes below. | |
;; | |
esac | |
+ | |
else | |
# Here we handle the default operating systems that come with various machines. | |
@@ -1528,6 +1493,7 @@ | |
# will signal an error saying that MANUFACTURER isn't an operating | |
# system, and we'll never get to this point. | |
+kernel= | |
case $cpu-$vendor in | |
score-*) | |
os=elf | |
@@ -1539,7 +1505,8 @@ | |
os=riscix1.2 | |
;; | |
arm*-rebel) | |
- os=linux | |
+ kernel=linux | |
+ os=gnu | |
;; | |
arm*-semi) | |
os=aout | |
@@ -1705,84 +1672,169 @@ | |
os=none | |
;; | |
esac | |
+ | |
fi | |
+# Now, validate our (potentially fixed-up) OS. | |
+case $os in | |
+ # Sometimes we do "kernel-abi", so those need to count as OSes. | |
+ musl* | newlib* | uclibc*) | |
+ ;; | |
+ # Likewise for "kernel-libc" | |
+ eabi | eabihf | gnueabi | gnueabihf) | |
+ ;; | |
+ # Now accept the basic system types. | |
+ # The portable systems comes first. | |
+ # Each alternative MUST end in a * to match a version number. | |
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ | |
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ | |
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | |
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ | |
+ | hiux* | abug | nacl* | netware* | windows* \ | |
+ | os9* | macos* | osx* | ios* \ | |
+ | mpw* | magic* | mmixware* | mon960* | lnews* \ | |
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | |
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \ | |
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | |
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | |
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \ | |
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ | |
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ | |
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | |
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | |
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \ | |
+ | chorusrdb* | cegcc* | glidix* \ | |
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | |
+ | midipix* | mingw32* | mingw64* | mint* \ | |
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | |
+ | interix* | uwin* | mks* | rhapsody* | darwin* \ | |
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \ | |
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \ | |
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ | |
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ | |
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | |
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | |
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | |
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | |
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* ) | |
+ ;; | |
+ # This one is extra strict with allowed versions | |
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*) | |
+ # Don't forget version if it is 3.2v4 or newer. | |
+ ;; | |
+ none) | |
+ ;; | |
+ *) | |
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 | |
+ exit 1 | |
+ ;; | |
+esac | |
+ | |
+# As a final step for OS-related things, validate the OS-kernel combination | |
+# (given a valid OS), if there is a kernel. | |
+case $kernel-$os in | |
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* ) | |
+ ;; | |
+ -dietlibc* | -newlib* | -musl* | -uclibc* ) | |
+ # These are just libc implementations, not actual OSes, and thus | |
+ # require a kernel. | |
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 | |
+ exit 1 | |
+ ;; | |
+ kfreebsd*-gnu* | kopensolaris*-gnu*) | |
+ ;; | |
+ nto-qnx*) | |
+ ;; | |
+ *-eabi* | *-gnueabi*) | |
+ ;; | |
+ -*) | |
+ # Blank kernel with real OS is always fine. | |
+ ;; | |
+ *-*) | |
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 | |
+ exit 1 | |
+ ;; | |
+esac | |
+ | |
# Here we handle the case where we know the os, and the CPU type, but not the | |
# manufacturer. We pick the logical manufacturer. | |
case $vendor in | |
unknown) | |
- case $os in | |
- riscix*) | |
+ case $cpu-$os in | |
+ *-riscix*) | |
vendor=acorn | |
;; | |
- sunos*) | |
+ *-sunos*) | |
vendor=sun | |
;; | |
- cnk*|-aix*) | |
+ *-cnk* | *-aix*) | |
vendor=ibm | |
;; | |
- beos*) | |
+ *-beos*) | |
vendor=be | |
;; | |
- hpux*) | |
+ *-hpux*) | |
vendor=hp | |
;; | |
- mpeix*) | |
+ *-mpeix*) | |
vendor=hp | |
;; | |
- hiux*) | |
+ *-hiux*) | |
vendor=hitachi | |
;; | |
- unos*) | |
+ *-unos*) | |
vendor=crds | |
;; | |
- dgux*) | |
+ *-dgux*) | |
vendor=dg | |
;; | |
- luna*) | |
+ *-luna*) | |
vendor=omron | |
;; | |
- genix*) | |
+ *-genix*) | |
vendor=ns | |
;; | |
- clix*) | |
+ *-clix*) | |
vendor=intergraph | |
;; | |
- mvs* | opened*) | |
+ *-mvs* | *-opened*) | |
+ vendor=ibm | |
+ ;; | |
+ *-os400*) | |
vendor=ibm | |
;; | |
- os400*) | |
+ s390-* | s390x-*) | |
vendor=ibm | |
;; | |
- ptx*) | |
+ *-ptx*) | |
vendor=sequent | |
;; | |
- tpf*) | |
+ *-tpf*) | |
vendor=ibm | |
;; | |
- vxsim* | vxworks* | windiss*) | |
+ *-vxsim* | *-vxworks* | *-windiss*) | |
vendor=wrs | |
;; | |
- aux*) | |
+ *-aux*) | |
vendor=apple | |
;; | |
- hms*) | |
+ *-hms*) | |
vendor=hitachi | |
;; | |
- mpw* | macos*) | |
+ *-mpw* | *-macos*) | |
vendor=apple | |
;; | |
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) | |
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) | |
vendor=atari | |
;; | |
- vos*) | |
+ *-vos*) | |
vendor=stratus | |
;; | |
esac | |
;; | |
esac | |
-echo "$cpu-$vendor-$os" | |
+echo "$cpu-$vendor-${kernel:+$kernel-}$os" | |
exit | |
# Local variables: | |
diff -Nur ghc-8.10.2/configure ghc-8.10.2.new/configure | |
--- ghc-8.10.2/configure 2020-08-08 04:53:43.000000000 -0600 | |
+++ ghc-8.10.2.new/configure 2020-11-27 12:00:06.000000000 -0700 | |
@@ -3552,7 +3552,7 @@ | |
else | |
case "$build_cpu" in | |
- aarch64*) | |
+ aarch64*|arm64*) | |
BuildArch="aarch64" | |
;; | |
alpha*) | |
@@ -3717,7 +3717,7 @@ | |
else | |
case "$host_cpu" in | |
- aarch64*) | |
+ aarch64*|arm64*) | |
HostArch="aarch64" | |
;; | |
alpha*) | |
@@ -3871,7 +3871,7 @@ | |
then | |
case "$host_cpu" in | |
- aarch64*) | |
+ aarch64*|arm64*) | |
TargetArch="aarch64" | |
;; | |
alpha*) | |
@@ -4034,7 +4034,7 @@ | |
else | |
case "$target_cpu" in | |
- aarch64*) | |
+ aarch64*|arm64*) | |
TargetArch="aarch64" | |
;; | |
alpha*) | |
@@ -4183,12 +4183,13 @@ | |
fi | |
- case "$target_vendor-$target_os" in | |
+ llvm_target_cpu=$target_cpu | |
+ case "$target" in | |
*-freebsd*-gnueabihf) | |
llvm_target_vendor="unknown" | |
llvm_target_os="freebsd-gnueabihf" | |
;; | |
- hardfloat-*eabi) | |
+ *-hardfloat-*eabi) | |
llvm_target_vendor="unknown" | |
llvm_target_os="$target_os""hf" | |
;; | |
@@ -4200,7 +4201,7 @@ | |
# for the LLVM Target. Otherwise these would be | |
# turned into just `-linux` and fail to be found | |
# in the `llvm-targets` file. | |
- *-android*|*-gnueabi*|*-musleabi*) | |
+ *-android*|*-gnueabi*) | |
case "$target_vendor" in | |
pc|gentoo|w64) # like i686-pc-linux-gnu, i686-gentoo-freebsd8, x86_64-w64-mingw32 | |
@@ -4218,7 +4219,80 @@ | |
;; | |
esac | |
- llvm_target_os="$target_os" | |
+ llvm_target_os="$target_os" | |
+ ;; | |
+ # apple is a bit about their naming scheme for | |
+ # aarch64; and clang on macOS doesn't know that | |
+ # aarch64 would be arm64. So for LLVM we'll need | |
+ # to call it arm64; while we'll refer to it internally | |
+ # as aarch64 for consistency and sanity. | |
+ aarch64-apple-*|arm64-apple-*) | |
+ llvm_target_cpu="arm64" | |
+ | |
+ case "$target_vendor" in | |
+ pc|gentoo|w64) # like i686-pc-linux-gnu, i686-gentoo-freebsd8, x86_64-w64-mingw32 | |
+ llvm_target_vendor="unknown" | |
+ ;; | |
+ softfloat) # like armv5tel-softfloat-linux-gnueabi | |
+ llvm_target_vendor="unknown" | |
+ ;; | |
+ hardfloat) # like armv7a-hardfloat-linux-gnueabi | |
+ llvm_target_vendor="unknown" | |
+ ;; | |
+ *) | |
+ #pass thru by default | |
+ llvm_target_vendor="$target_vendor" | |
+ ;; | |
+ esac | |
+ | |
+ | |
+ case "$target_os" in | |
+ gnu*) # e.g. i686-unknown-gnu0.9 | |
+ llvm_target_os="gnu" | |
+ ;; | |
+ # watchos and tvos are ios variants as of May 2017. | |
+ ios|watchos|tvos) | |
+ llvm_target_os="ios" | |
+ ;; | |
+ linux-android*) | |
+ llvm_target_os="linux-android" | |
+ ;; | |
+ linux-*|linux) | |
+ llvm_target_os="linux" | |
+ ;; | |
+ openbsd*) | |
+ llvm_target_os="openbsd" | |
+ ;; | |
+ # As far as I'm aware, none of these have relevant variants | |
+ freebsd|netbsd|dragonfly|hpux|linuxaout|kfreebsdgnu|freebsd2|mingw32|darwin|nextstep2|nextstep3|sunos4|ultrix|haiku) | |
+ llvm_target_os="$target_os" | |
+ ;; | |
+ msys) | |
+ as_fn_error $? "Building GHC using the msys toolchain is not supported; please use mingw instead. Perhaps you need to set 'MSYSTEM=MINGW64 or MINGW32?'" "$LINENO" 5 | |
+ ;; | |
+ aix*) # e.g. powerpc-ibm-aix7.1.3.0 | |
+ llvm_target_os="aix" | |
+ ;; | |
+ darwin*) # e.g. aarch64-apple-darwin14 | |
+ llvm_target_os="darwin" | |
+ ;; | |
+ solaris2*) | |
+ llvm_target_os="solaris2" | |
+ ;; | |
+ freebsd*) # like i686-gentoo-freebsd7 | |
+ # i686-gentoo-freebsd8 | |
+ # i686-gentoo-freebsd8.2 | |
+ llvm_target_os="freebsd" | |
+ ;; | |
+ nto-qnx*) | |
+ llvm_target_os="nto-qnx" | |
+ ;; | |
+ *) | |
+ echo "Unknown OS $target_os" | |
+ exit 1 | |
+ ;; | |
+ esac | |
+ | |
;; | |
*) | |
@@ -4288,7 +4362,7 @@ | |
;; | |
esac | |
- LlvmTarget="$target_cpu-$llvm_target_vendor-$llvm_target_os" | |
+ LlvmTarget="$llvm_target_cpu-$llvm_target_vendor-$llvm_target_os" | |
@@ -10243,7 +10317,7 @@ | |
test -z "$2" || eval "$2=\"ArchARM {armISA = \$ARM_ISA, armISAExt = \$ARM_ISA_EXT, armABI = \$ARM_ABI}\"" | |
;; | |
aarch64) | |
- test -z "$2" || eval "$2=ArchARM64" | |
+ test -z "$2" || eval "$2=ArchAArch64" | |
;; | |
alpha) | |
test -z "$2" || eval "$2=ArchAlpha" | |
@@ -10344,10 +10418,14 @@ | |
if ac_fn_c_try_link "$LINENO"; then : | |
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | |
$as_echo "yes" >&6; } | |
- TargetHasSubsectionsViaSymbols=YES | |
+ if test x"$TargetArch" = xaarch64; then | |
+ TargetHasSubsectionsViaSymbols=NO | |
+ else | |
+ TargetHasSubsectionsViaSymbols=YES | |
$as_echo "#define HAVE_SUBSECTIONS_VIA_SYMBOLS 1" >>confdefs.h | |
+ fi | |
else | |
TargetHasSubsectionsViaSymbols=NO | |
diff -Nur ghc-8.10.2/includes/CodeGen.Platform.hs ghc-8.10.2.new/includes/CodeGen.Platform.hs | |
--- ghc-8.10.2/includes/CodeGen.Platform.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/includes/CodeGen.Platform.hs 2020-11-26 21:24:44.000000000 -0700 | |
@@ -94,7 +94,7 @@ | |
# define zmm14 30 | |
# define zmm15 31 | |
--- Note: these are only needed for ARM/ARM64 because globalRegMaybe is now used in CmmSink.hs. | |
+-- Note: these are only needed for ARM/AArch64 because globalRegMaybe is now used in CmmSink.hs. | |
-- Since it's only used to check 'isJust', the actual values don't matter, thus | |
-- I'm not sure if these are the correct numberings. | |
-- Normally, the register names are just stringified as part of the REG() macro | |
@@ -1096,4 +1096,3 @@ | |
freeReg = panic "freeReg not defined for this platform" | |
#endif | |
- | |
diff -Nur ghc-8.10.2/includes/rts/storage/GC.h ghc-8.10.2.new/includes/rts/storage/GC.h | |
--- ghc-8.10.2/includes/rts/storage/GC.h 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/includes/rts/storage/GC.h 2020-11-26 21:24:44.000000000 -0700 | |
@@ -199,7 +199,7 @@ | |
AdjustorWritable allocateExec(W_ len, AdjustorExecutable *exec_addr); | |
void flushExec(W_ len, AdjustorExecutable exec_addr); | |
-#if defined(ios_HOST_OS) | |
+#if (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && (defined(ios_HOST_OS) || defined(darwin_HOST_OS)) | |
AdjustorWritable execToWritable(AdjustorExecutable exec); | |
#endif | |
void freeExec (AdjustorExecutable p); | |
diff -Nur ghc-8.10.2/includes/stg/Regs.h ghc-8.10.2.new/includes/stg/Regs.h | |
--- ghc-8.10.2/includes/stg/Regs.h 2019-11-02 08:49:16.000000000 -0600 | |
+++ ghc-8.10.2.new/includes/stg/Regs.h 2020-11-27 21:28:42.000000000 -0700 | |
@@ -442,7 +442,7 @@ | |
#error BaseReg must be in a register for THREADED_RTS | |
#endif | |
#define BaseReg (&((struct PartCapability_ *)MainCapability)->r) | |
-#define ASSIGN_BaseReg(e) (e) | |
+#define ASSIGN_BaseReg(e) ((void)e) | |
#endif | |
#if defined(REG_Sp) && !defined(NO_GLOBAL_REG_DECLS) | |
diff -Nur ghc-8.10.2/libraries/ghc-boot/GHC/Platform.hs ghc-8.10.2.new/libraries/ghc-boot/GHC/Platform.hs | |
--- ghc-8.10.2/libraries/ghc-boot/GHC/Platform.hs 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/libraries/ghc-boot/GHC/Platform.hs 2020-11-27 10:54:58.000000000 -0700 | |
@@ -115,6 +115,7 @@ | |
, armABI :: ArmABI | |
} | |
| ArchARM64 | |
+ | ArchAArch64 | |
| ArchAlpha | |
| ArchMipseb | |
| ArchMipsel | |
@@ -156,6 +157,7 @@ | |
ARMv6 -> "v6" | |
ARMv7 -> "v7" | |
ArchARM64 -> "aarch64" | |
+ ArchAArch64 -> "aarch64" | |
ArchAlpha -> "alpha" | |
ArchMipseb -> "mipseb" | |
ArchMipsel -> "mipsel" | |
@@ -164,6 +166,7 @@ | |
isARM :: Arch -> Bool | |
isARM (ArchARM {}) = True | |
isARM ArchARM64 = True | |
+isARM ArchAArch64 = True | |
isARM _ = False | |
-- | Operating systems that the native code generator knows about. | |
diff -Nur ghc-8.10.2/libraries/ghci/GHCi/InfoTable.hsc ghc-8.10.2.new/libraries/ghci/GHCi/InfoTable.hsc | |
--- ghc-8.10.2/libraries/ghci/GHCi/InfoTable.hsc 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/libraries/ghci/GHCi/InfoTable.hsc 2020-11-26 21:24:44.000000000 -0700 | |
@@ -73,7 +73,7 @@ | |
| ArchX86_64 | |
| ArchAlpha | |
| ArchARM | |
- | ArchARM64 | |
+ | ArchAArch64 | |
| ArchPPC64 | |
| ArchPPC64LE | |
| ArchS390X | |
@@ -95,7 +95,7 @@ | |
#elif defined(arm_HOST_ARCH) | |
ArchARM | |
#elif defined(aarch64_HOST_ARCH) | |
- ArchARM64 | |
+ ArchAArch64 | |
#elif defined(powerpc64_HOST_ARCH) | |
ArchPPC64 | |
#elif defined(powerpc64le_HOST_ARCH) | |
@@ -211,7 +211,7 @@ | |
, 0x11, 0xff, 0x2f, 0xe1 | |
, byte0 w32, byte1 w32, byte2 w32, byte3 w32] | |
- ArchARM64 { } -> | |
+ ArchAArch64 { } -> | |
-- Generates: | |
-- | |
-- ldr x1, label | |
Binary files ghc-8.10.2/libraries/integer-gmp/gmp/gmp-tarballs/gmp-6.1.2-nodoc.tar.bz2 and ghc-8.10.2.new/libraries/integer-gmp/gmp/gmp-tarballs/gmp-6.1.2-nodoc.tar.bz2 differ | |
Binary files ghc-8.10.2/libraries/integer-gmp/gmp/gmp-tarballs/gmp-6.2.1-nodoc.tar.bz2 and ghc-8.10.2.new/libraries/integer-gmp/gmp/gmp-tarballs/gmp-6.2.1-nodoc.tar.bz2 differ | |
diff -Nur ghc-8.10.2/libraries/integer-gmp/gmp/gmpsrc.patch ghc-8.10.2.new/libraries/integer-gmp/gmp/gmpsrc.patch | |
--- ghc-8.10.2/libraries/integer-gmp/gmp/gmpsrc.patch 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/libraries/integer-gmp/gmp/gmpsrc.patch 2020-11-26 21:28:29.000000000 -0700 | |
@@ -1,16 +1,70 @@ | |
-diff -Naur gmp-6.1.2/configure gmpbuild/configure | |
---- gmp-6.1.2/configure 2016-12-16 10:45:32.000000000 -0500 | |
-+++ gmpbuild/configure 2017-01-29 15:18:01.037775639 -0500 | |
-@@ -28181,7 +28181,7 @@ | |
+diff -Naur gmp-6.2.1/Makefile.am gmpbuild/Makefile.am | |
+--- gmp-6.2.1/Makefile.am 2020-11-14 11:45:09.000000000 -0700 | |
++++ gmpbuild/Makefile.am 2020-11-19 22:53:46.000000000 -0700 | |
+@@ -112,7 +112,7 @@ | |
+ LIBGMPXX_LT_AGE = 6 | |
+ | |
+ | |
+-SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc | |
++SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune | |
+ | |
+ EXTRA_DIST = configfsf.guess configfsf.sub .gdbinit INSTALL.autoconf \ | |
+ COPYING.LESSERv3 COPYINGv2 COPYINGv3 | |
+diff -Naur gmp-6.2.1/Makefile.in gmpbuild/Makefile.in | |
+--- gmp-6.2.1/Makefile.in 2020-11-14 11:45:16.000000000 -0700 | |
++++ gmpbuild/Makefile.in 2020-11-19 22:58:19.000000000 -0700 | |
+@@ -572,7 +572,7 @@ | |
+ LIBGMPXX_LT_CURRENT = 10 | |
+ LIBGMPXX_LT_REVISION = 1 | |
+ LIBGMPXX_LT_AGE = 6 | |
+-SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc | |
++SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune | |
+ | |
+ # Put asl.h here for now. | |
+ | |
+diff -Naur gmp-6.2.1/configure gmpbuild/configure | |
+--- gmp-6.2.1/configure 2020-11-14 11:45:15.000000000 -0700 | |
++++ gmpbuild/configure 2020-11-19 23:00:13.000000000 -0700 | |
+@@ -4088,8 +4088,8 @@ | |
+ # | |
+ cclist="gcc cc" | |
+ | |
+-gcc_cflags="-O2 -pedantic" | |
+-gcc_64_cflags="-O2 -pedantic" | |
++gcc_cflags="-O2 -pedantic -fPIC" | |
++gcc_64_cflags="-O2 -pedantic -fPIC" | |
+ cc_cflags="-O" | |
+ cc_64_cflags="-O" | |
+ | |
+@@ -26220,6 +26220,8 @@ | |
+ 64) | |
+ case $host in | |
+ *-*-darwin*) | |
++echo "define(<PIC_ALWAYS>,<yes>)" >> $gmp_tmpconfigm4 | |
++ | |
+ | |
+ echo "include_mpn(\`arm64/darwin.m4')" >> $gmp_tmpconfigm4i | |
+ ;; | |
+@@ -27176,6 +27178,9 @@ | |
+ case $host in | |
+ *-*-darwin*) | |
+ | |
++echo "define(<PIC_ALWAYS>,<yes>)" >> $gmp_tmpconfigm4 | |
++ | |
++ | |
+ echo "include_mpn(\`x86_64/darwin.m4')" >> $gmp_tmpconfigm4i | |
+ ;; | |
+ *-*-mingw* | *-*-msys | *-*-cygwin) | |
+@@ -27985,7 +27990,7 @@ | |
# FIXME: Upcoming version of autoconf/automake may not like broken lines. | |
# Right now automake isn't accepting the new AC_CONFIG_FILES scheme. | |
--ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile doc/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in" | |
-+ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in" | |
+-ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile doc/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in gmp.pc:gmp.pc.in gmpxx.pc:gmpxx.pc.in" | |
++ac_config_files="$ac_config_files Makefile mpf/Makefile mpn/Makefile mpq/Makefile mpz/Makefile printf/Makefile scanf/Makefile rand/Makefile cxx/Makefile tests/Makefile tests/devel/Makefile tests/mpf/Makefile tests/mpn/Makefile tests/mpq/Makefile tests/mpz/Makefile tests/rand/Makefile tests/misc/Makefile tests/cxx/Makefile tune/Makefile demos/Makefile demos/calc/Makefile demos/expr/Makefile gmp.h:gmp-h.in gmp.pc:gmp.pc.in gmpxx.pc:gmpxx.pc.in" | |
cat >confcache <<\_ACEOF | |
# This file is a shell script that caches the results of configure | |
-@@ -29325,7 +29325,6 @@ | |
+@@ -29129,7 +29134,6 @@ | |
"tests/rand/Makefile") CONFIG_FILES="$CONFIG_FILES tests/rand/Makefile" ;; | |
"tests/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/misc/Makefile" ;; | |
"tests/cxx/Makefile") CONFIG_FILES="$CONFIG_FILES tests/cxx/Makefile" ;; | |
@@ -18,27 +72,26 @@ | |
"tune/Makefile") CONFIG_FILES="$CONFIG_FILES tune/Makefile" ;; | |
"demos/Makefile") CONFIG_FILES="$CONFIG_FILES demos/Makefile" ;; | |
"demos/calc/Makefile") CONFIG_FILES="$CONFIG_FILES demos/calc/Makefile" ;; | |
-diff -Naur gmp-6.1.2/Makefile.am gmpbuild/Makefile.am | |
---- gmp-6.1.2/Makefile.am 2016-12-16 10:45:27.000000000 -0500 | |
-+++ gmpbuild/Makefile.am 2017-01-29 15:14:20.764370926 -0500 | |
-@@ -110,7 +110,7 @@ | |
- LIBGMPXX_LT_AGE = 5 | |
- | |
+diff -Naur gmp-6.2.1/configure.ac gmpbuild/configure.ac | |
+--- gmp-6.2.1/configure.ac 2020-11-14 11:45:09.000000000 -0700 | |
++++ gmpbuild/configure.ac 2020-11-19 22:56:58.000000000 -0700 | |
+@@ -3703,6 +3703,7 @@ | |
+ 64) | |
+ case $host in | |
+ *-*-darwin*) | |
++ GMP_DEFINE_RAW(["define(<PIC_ALWAYS>,<yes>)"]) | |
+ GMP_INCLUDE_MPN(arm64/darwin.m4) ;; | |
+ *) | |
+ GMP_INCLUDE_MPN(arm64/arm64-defs.m4) ;; | |
+diff -Naur gmp-6.2.1/mpn/asm-defs.m4 gmpbuild/mpn/asm-defs.m4 | |
+--- gmp-6.2.1/mpn/asm-defs.m4 2020-11-14 11:45:09.000000000 -0700 | |
++++ gmpbuild/mpn/asm-defs.m4 2020-11-19 22:53:46.000000000 -0700 | |
+@@ -1051,7 +1051,7 @@ | |
+ dnl systems which are always PIC. PIC_ALWAYS established in config.m4 | |
+ dnl identifies these for us. | |
--SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc | |
-+SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune | |
+-ifelse(`PIC_ALWAYS',`yes',`define(`PIC')') | |
++ifelse(PIC_ALWAYS,yes,`define(`PIC')') | |
- EXTRA_DIST = configfsf.guess configfsf.sub .gdbinit INSTALL.autoconf \ | |
- COPYING.LESSERv3 COPYINGv2 COPYINGv3 | |
-diff -Naur gmp-6.1.2/Makefile.in gmpbuild/Makefile.in | |
---- gmp-6.1.2/Makefile.in 2016-12-16 10:45:34.000000000 -0500 | |
-+++ gmpbuild/Makefile.in 2017-01-29 15:14:32.596446554 -0500 | |
-@@ -566,7 +566,7 @@ | |
- LIBGMPXX_LT_CURRENT = 9 | |
- LIBGMPXX_LT_REVISION = 2 | |
- LIBGMPXX_LT_AGE = 5 | |
--SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune doc | |
-+SUBDIRS = tests mpn mpz mpq mpf printf scanf rand cxx demos tune | |
- # The "test -f" support for srcdir!=builddir is similar to the automake .c.o | |
- # etc rules, but with each foo.c explicitly, since $< is not portable | |
+ dnl Various possible defines passed from the Makefile that are to be tested | |
diff -Nur ghc-8.10.2/llvm-targets ghc-8.10.2.new/llvm-targets | |
--- ghc-8.10.2/llvm-targets 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/llvm-targets 2020-11-26 21:24:44.000000000 -0700 | |
@@ -36,6 +36,8 @@ | |
,("s390x-ibm-linux", ("E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64", "z10", "")) | |
,("i386-apple-darwin", ("e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128", "yonah", "")) | |
,("x86_64-apple-darwin", ("e-m:o-i64:64-f80:128-n8:16:32:64-S128", "core2", "")) | |
+,("arm64-apple-darwin", ("e-m:o-i64:64-i128:128-n32:64-S128", "vortex", "+v8.3a +fp-armv8 +neon +crc +crypto +fullfp16 +ras +lse +rdm +rcpc +zcm +zcz +sha2 +aes")) | |
+,("aarch64-apple-darwin", ("e-m:o-i64:64-i128:128-n32:64-S128", "vortex", "+v8.3a +fp-armv8 +neon +crc +crypto +fullfp16 +ras +lse +rdm +rcpc +zcm +zcz +sha2 +aes")) | |
,("armv7-apple-ios", ("e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32", "generic", "")) | |
,("aarch64-apple-ios", ("e-m:o-i64:64-i128:128-n32:64-S128", "generic", "+neon")) | |
,("i386-apple-ios", ("e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128", "yonah", "")) | |
diff -Nur ghc-8.10.2/rts/Adjustor.c ghc-8.10.2.new/rts/Adjustor.c | |
--- ghc-8.10.2/rts/Adjustor.c 2019-11-02 08:49:16.000000000 -0600 | |
+++ ghc-8.10.2.new/rts/Adjustor.c 2020-11-26 21:24:44.000000000 -0700 | |
@@ -99,7 +99,7 @@ | |
{ | |
ffi_closure *cl; | |
-#if defined(ios_HOST_OS) | |
+#if defined(ios_HOST_OS) || defined(darwin_HOST_OS) | |
cl = execToWritable(ptr); | |
#else | |
cl = (ffi_closure*)ptr; | |
diff -Nur ghc-8.10.2/rts/StgCRun.c ghc-8.10.2.new/rts/StgCRun.c | |
--- ghc-8.10.2/rts/StgCRun.c 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/rts/StgCRun.c 2020-11-26 21:24:44.000000000 -0700 | |
@@ -973,7 +973,7 @@ | |
"br %1\n\t" | |
".globl " STG_RETURN "\n\t" | |
-#if !defined(ios_HOST_OS) | |
+#if !defined(ios_HOST_OS) && !defined(darwin_HOST_OS) | |
".type " STG_RETURN ", %%function\n" | |
#endif | |
STG_RETURN ":\n\t" | |
@@ -982,7 +982,7 @@ | |
*/ | |
"add sp, sp, %3\n\t" | |
/* | |
- * Return the new register table, taking it from Stg's R1 (ARM64's R22). | |
+ * Return the new register table, taking it from Stg's R1 (AArch64's R22). | |
*/ | |
"mov %0, x22\n\t" | |
/* | |
diff -Nur ghc-8.10.2/rts/linker/elf_plt_aarch64.c ghc-8.10.2.new/rts/linker/elf_plt_aarch64.c | |
--- ghc-8.10.2/rts/linker/elf_plt_aarch64.c 2019-11-10 07:20:41.000000000 -0700 | |
+++ ghc-8.10.2.new/rts/linker/elf_plt_aarch64.c 2020-11-26 21:24:44.000000000 -0700 | |
@@ -46,8 +46,8 @@ | |
bool | |
makeStubAarch64(Stub * s) { | |
// We (the linker) may corrupt registers x16 (IP0) and x17 (IP1) [AAPCS64] | |
- // and the condition flags, according to the "ELF for the ARM64 | |
- // Architecture". | |
+ // and the condition flags, according to the "ELF for the ARM 64-bit | |
+ // Architecture (AArch64)". | |
// | |
// [Special purpose regs] | |
// X16 and X17 are IP0 and IP1, intra-procedure-call temporary registers. | |
diff -Nur ghc-8.10.2/rts/linker/elf_reloc.c ghc-8.10.2.new/rts/linker/elf_reloc.c | |
--- ghc-8.10.2/rts/linker/elf_reloc.c 2019-11-10 07:20:41.000000000 -0700 | |
+++ ghc-8.10.2.new/rts/linker/elf_reloc.c 2020-11-26 21:27:32.000000000 -0700 | |
@@ -4,7 +4,7 @@ | |
#if defined(OBJFORMAT_ELF) | |
-/* we currently only use this abstraction for elf/arm64 */ | |
+/* we currently only use this abstraction for elf/aarch64 */ | |
#if defined(aarch64_HOST_ARCH) | |
bool | |
diff -Nur ghc-8.10.2/rts/package.conf.in ghc-8.10.2.new/rts/package.conf.in | |
--- ghc-8.10.2/rts/package.conf.in 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/rts/package.conf.in 2020-11-26 21:24:44.000000000 -0700 | |
@@ -296,7 +296,7 @@ | |
, "-Wl,-search_paths_first" | |
#endif | |
-#if defined(darwin_HOST_OS) && !defined(x86_64_HOST_ARCH) | |
+#if defined(darwin_HOST_OS) && !defined(x86_64_HOST_ARCH) && !defined(aarch64_HOST_ARCH) | |
, "-read_only_relocs", "warning" | |
#endif | |
diff -Nur ghc-8.10.2/rts/rts.cabal.in ghc-8.10.2.new/rts/rts.cabal.in | |
--- ghc-8.10.2/rts/rts.cabal.in 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/rts/rts.cabal.in 2020-11-26 21:24:44.000000000 -0700 | |
@@ -355,7 +355,7 @@ | |
if os(osx) | |
ld-options: "-Wl,-search_paths_first" | |
- if !arch(x86_64) | |
+ if !arch(x86_64) && !arch(aarch64) | |
ld-options: -read_only_relocs warning | |
cmm-sources: Apply.cmm | |
diff -Nur ghc-8.10.2/rts/sm/Storage.c ghc-8.10.2.new/rts/sm/Storage.c | |
--- ghc-8.10.2/rts/sm/Storage.c 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/rts/sm/Storage.c 2020-11-26 21:26:50.000000000 -0700 | |
@@ -30,7 +30,7 @@ | |
#include "GC.h" | |
#include "Evac.h" | |
#include "NonMoving.h" | |
-#if defined(ios_HOST_OS) | |
+#if defined(ios_HOST_OS) || defined(darwin_HOST_OS) | |
#include "Hash.h" | |
#endif | |
@@ -1541,7 +1541,7 @@ | |
should be modified to use allocateExec instead of VirtualAlloc. | |
------------------------------------------------------------------------- */ | |
-#if (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && defined(ios_HOST_OS) | |
+#if (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && (defined(ios_HOST_OS) || defined(darwin_HOST_OS)) | |
#include <libkern/OSCacheControl.h> | |
#endif | |
@@ -1572,7 +1572,7 @@ | |
/* x86 doesn't need to do anything, so just suppress some warnings. */ | |
(void)len; | |
(void)exec_addr; | |
-#elif (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && defined(ios_HOST_OS) | |
+#elif (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && (defined(ios_HOST_OS) || defined(darwin_HOST_OS)) | |
/* On iOS we need to use the special 'sys_icache_invalidate' call. */ | |
sys_icache_invalidate(exec_addr, len); | |
#elif defined(__clang__) | |
@@ -1626,7 +1626,7 @@ | |
RELEASE_SM_LOCK | |
} | |
-#elif defined(ios_HOST_OS) | |
+#elif (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) && (defined(ios_HOST_OS) || defined(darwin_HOST_OS)) | |
static HashTable* allocatedExecs; | |
diff -Nur ghc-8.10.2/utils/llvm-targets/gen-data-layout.sh ghc-8.10.2.new/utils/llvm-targets/gen-data-layout.sh | |
--- ghc-8.10.2/utils/llvm-targets/gen-data-layout.sh 2020-08-03 15:51:22.000000000 -0600 | |
+++ ghc-8.10.2.new/utils/llvm-targets/gen-data-layout.sh 2020-11-26 21:26:10.000000000 -0700 | |
@@ -80,6 +80,9 @@ | |
# macOS | |
"i386-apple-darwin" | |
"x86_64-apple-darwin" | |
+ "arm64-apple-darin" | |
+ "aarch64-apple-darwin" | |
+ | |
# iOS | |
"armv7-apple-ios arm64-apple-ios" | |
"i386-apple-ios x86_64-apple-ios" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment