X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FllvmGen%2FLlvmMangler.hs;fp=compiler%2FllvmGen%2FLlvmMangler.hs;h=890f71080cd0caa9804df8444077b41055db65c1;hp=ac187e0a0d8e7082d35b34c762c44f7410e931c0;hb=22423fc93a008732e426f10f1b545b5d571173f3;hpb=7028041739973c3dc17b23a98c65c892f41f0647 diff --git a/compiler/llvmGen/LlvmMangler.hs b/compiler/llvmGen/LlvmMangler.hs index ac187e0..890f710 100644 --- a/compiler/llvmGen/LlvmMangler.hs +++ b/compiler/llvmGen/LlvmMangler.hs @@ -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')