Commit 22423fc9 authored by dterei's avatar dterei
Browse files

LLVM: Add support for 64bit OSX. (partial #4210)

parent 70280417
......@@ -12,6 +12,8 @@
module LlvmMangler ( llvmFixupAsm ) where
#include "HsVersions.h"
import Control.Exception
import qualified Data.ByteString.Char8 as B
import Data.Char
......@@ -23,14 +25,20 @@ infoSec, newInfoSec, newLine, spInst, jmpInst :: B.ByteString
infoSec = B.pack "\t.section\t__STRIP,__me"
newInfoSec = B.pack "\n\t.text"
newLine = B.pack "\n"
spInst = B.pack ", %esp\n"
jmpInst = B.pack "\n\tjmp"
infoLen, spFix, labelStart :: Int
infoLen = B.length infoSec
spFix = 4
infoLen, labelStart, spFix :: Int
infoLen = B.length infoSec
labelStart = B.length jmpInst
#if x86_64_TARGET_ARCH
spInst = B.pack ", %rsp\n"
spFix = 8
#else
spInst = B.pack ", %esp\n"
spFix = 4
#endif
-- Search Predicates
eolPred, dollarPred, commaPred :: Char -> Bool
eolPred = ((==) '\n')
......
......@@ -1103,12 +1103,13 @@ parseDynamicFlags_ dflags0 args pkg_flags = do
when (not (null errs)) $ ghcError $ errorsToGhcException errs
let (pic_warns, dflags2)
| not (cTargetArch == X86_64 && cTargetOS == Linux) &&
| not (cTargetArch == X86_64 && (cTargetOS == Linux || cTargetOS == OSX)) &&
(not opt_Static || opt_PIC) &&
hscTarget dflags1 == HscLlvm
= ([L noSrcSpan $ "Warning: -fllvm is incompatible with -fPIC and -"
++ "dynamic on this platform;\n"
++ " using " ++ showHscTargetFlag defaultObjectTarget ++ " instead"],
= ([L noSrcSpan $ "Warning: -fllvm is incompatible with -fPIC and "
++ "-dynamic on this platform;\n"
++ " using "
++ showHscTargetFlag defaultObjectTarget ++ " instead"],
dflags1{ hscTarget = defaultObjectTarget })
| otherwise = ([], dflags1)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment