summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKavon Farvardin <kavon@farvard.in>2018-05-16 18:13:04 -0500
committerKavon Farvardin <kavon@farvard.in>2018-05-16 18:20:25 -0500
commit3bee4f8515db7aa3d644085da431ecf330575983 (patch)
treed553ed1fb8c18e3dcadb34dff820a3592084441a
parentf9b84f633c9eee144824c7dc0a441caa2e04281a (diff)
downloadhaskell-wip/kavon-nosplit-llvm.tar.gz
fix bug with missing symbols in info table on Linuxwip/kavon-nosplit-llvm
[skip-ci]
-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"