From 3bee4f8515db7aa3d644085da431ecf330575983 Mon Sep 17 00:00:00 2001 From: Kavon Farvardin Date: Wed, 16 May 2018 18:13:04 -0500 Subject: fix bug with missing symbols in info table on Linux [skip-ci] --- compiler/llvmGen/LlvmCodeGen/Data.hs | 13 +++++++------ 1 file 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" -- cgit v1.2.1