summaryrefslogtreecommitdiff
path: root/compiler/llvmGen/LlvmCodeGen/Data.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/llvmGen/LlvmCodeGen/Data.hs')
-rw-r--r--compiler/llvmGen/LlvmCodeGen/Data.hs13
1 files changed, 7 insertions, 6 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/Data.hs b/compiler/llvmGen/LlvmCodeGen/Data.hs
index 75493d1a11..355fca0a41 100644
--- a/compiler/llvmGen/LlvmCodeGen/Data.hs
+++ b/compiler/llvmGen/LlvmCodeGen/Data.hs
@@ -195,7 +195,7 @@ cvtForMangler (Statics _ datum) = do
-- its corresponding byte string.
cvtLit (CmmLabelDiffOff srt _ off w) = do
srtVar <- getGlobalPtr =<< strCLabel_llvm srt
- let srtLab = asmNameOf srtVar
+ srtLab <- asmNameOf srtVar
return $ mkDiffOff srtLab off w
cvtLit _ = error "cvtForMangler: unexpected lit."
@@ -220,11 +220,12 @@ cvtForMangler (Statics _ datum) = do
eol
]
- -- TODO(kavon): consult dflags to put the right number of underscores on the name
- asmNameOf (LMGlobalVar fs _ _ _ _ _) = let
- llName = "_" ++ unpackFS fs
- in
- B.pack llName
+ asmNameOf (LMGlobalVar fs _ _ _ _ _) = do
+ dflags <- getDynFlags
+ return $ B.pack $ case platformOS (targetPlatform dflags) of
+ OSDarwin -> "_" ++ unpackFS fs
+ OSLinux -> unpackFS fs
+ _ -> panic "please update cvtForMangler"
asmNameOf _ = error "asmNameOf -- unexpected name kind"