Adds x86_64-apple-darwin14 target.
authorMoritz Angermann <moritz.angermann@gmail.com>
Tue, 5 Jul 2016 18:32:22 +0000 (20:32 +0200)
committerBen Gamari <ben@smart-cactus.org>
Tue, 5 Jul 2016 18:32:37 +0000 (20:32 +0200)
x86_64-apple-darwin14, is the target for the 64bit simulator.
Ideally, we'd have (i386|armv7|arm64|x64_86)-apple-ios, yet,
many #ifdefs depend on `darwin`, notably libffi. Hence, this only adds
x86_64-apple-darwin14 as a target. This also updates the comment to
add the `-S` flag, and dump the output to stdout; and adjusts the
`datalayout` and `triple` values, as obtained through the method
mentioned in the comment.

Reviewers: hvr, erikd, austin, bgamari, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2378

aclocal.m4
compiler/llvmGen/LlvmCodeGen/Ppr.hs
rts/StgCRun.c

index cbf51df..ce8944c 100644 (file)
@@ -25,7 +25,7 @@ AC_DEFUN([GHC_SELECT_FILE_EXTENSIONS],
     x86_64-apple-darwin)
         $3='.dylib'
         ;;
-    arm-apple-darwin10|i386-apple-darwin11|aarch64-apple-darwin14)
+    arm-apple-darwin10|i386-apple-darwin11|aarch64-apple-darwin14|x86_64-apple-darwin14)
         $2='.a'
         $3='.dylib'
         ;;
@@ -1936,7 +1936,7 @@ AC_DEFUN([GHC_CONVERT_VENDOR],[
 # converts os from gnu to ghc naming, and assigns the result to $target_var
 AC_DEFUN([GHC_CONVERT_OS],[
 case "$1-$2" in
-  darwin10-arm|darwin11-i386|darwin14-aarch64)
+  darwin10-arm|darwin11-i386|darwin14-aarch64|darwin14-x86_64)
     $3="ios"
     ;;
   *)
index 1de630e..37d1391 100644 (file)
@@ -60,14 +60,17 @@ moduleLayout = sdocWithPlatform $ \platform ->
         text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\""
         $+$ text "target triple = \"arm-unknown-nto-qnx8.0.0eabi\""
     Platform { platformArch = ArchARM {}, platformOS = OSiOS } ->
-        text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32\""
-        $+$ text "target triple = \"arm-apple-darwin10\""
-    Platform { platformArch = ArchX86, platformOS = OSiOS } ->
-        text "target datalayout = \"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32\""
-        $+$ text "target triple = \"i386-apple-darwin11\""
+        text "target datalayout = \"e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32\""
+        $+$ text "target triple = \"thumbv7-apple-ios7.0.0\""
     Platform { platformArch = ArchARM64, platformOS = OSiOS } ->
-        text "target datalayout = \"e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128\""
+        text "target datalayout = \"e-m:o-i64:64-i128:128-n32:64-S128\""
         $+$ text "target triple = \"arm64-apple-ios7.0.0\""
+    Platform { platformArch = ArchX86, platformOS = OSiOS } ->
+        text "target datalayout = \"e-m:o-p:32:32-f64:32:64-f80:128-n8:16:32-S128\""
+        $+$ text "target triple = \"i386-apple-ios7.0.0\""
+    Platform { platformArch = ArchX86_64, platformOS = OSiOS } ->
+        text "target datalayout = \"e-m:o-i64:64-f80:128-n8:16:32:64-S128\""
+        $+$ text "target triple = \"x86_64-apple-ios7.0.0\""
     Platform { platformArch = ArchARM64, platformOS = OSLinux } ->
         text "target datalayout = \"e-m:e-i64:64-i128:128-n32:64-S128\""
         $+$ text "target triple = \"aarch64-unknown-linux-gnu\""
@@ -78,7 +81,7 @@ moduleLayout = sdocWithPlatform $ \platform ->
         -- If you see the above panic, GHC is missing the required target datalayout
         -- and triple information. You can obtain this info by compiling a simple
         -- 'hello world' C program with the clang C compiler eg:
-        --     clang hello.c -emit-llvm -o hello.ll
+        --     clang -S hello.c -emit-llvm -o -
         -- and the first two lines of hello.ll should provide the 'target datalayout'
         -- and 'target triple' lines required.
 
index cf0c05c..c110f51 100644 (file)
@@ -245,7 +245,7 @@ StgRunIsImplementedInAssembler(void)
 
 #define STG_GLOBAL ".globl "
 
-#ifdef darwin_HOST_OS
+#if defined(darwin_HOST_OS) || defined(ios_HOST_OS)
 #define STG_HIDDEN ".private_extern "
 #else
 #define STG_HIDDEN ".hidden "
@@ -417,7 +417,7 @@ StgRun(StgFunPtr f, StgRegTable *basereg) {
 
 #define STG_GLOBAL ".globl "
 
-#ifdef darwin_HOST_OS
+#if defined(darwin_HOST_OS)
 #define STG_HIDDEN ".private_extern "
 #else
 #define STG_HIDDEN ".hidden "