Nuke uses of LEADING_UNDERSCORE; use Config.cLeadingUnderscore instead.
\begin{code}
{-# OPTIONS -#include "Linker.h" #-}
--- so that we can see defn of LEADING_UNDERSCORE
-#include "../includes/config.h"
-
module Linker (
initLinker, -- :: IO ()
loadObj, -- :: String -> IO ()
import PrelByteArr
import PrelPack (packString)
import Panic ( panic )
+import DriverUtil ( prefixUnderscore )
-- ---------------------------------------------------------------------------
-- RTS Linker Interface
-- ---------------------------------------------------------------------------
lookupSymbol str_in = do
-# ifdef LEADING_UNDERSCORE
- let str = '_':str_in
-# else
- let str = str_in
-# endif
+ let str = prefixUnderscore str_in
addr <- c_lookupSymbol (packString str)
if addr == nullPtr
then return Nothing
++ pkg_extra_ld_opts
++ extra_ld_opts
++ if static && not no_hs_main then
-#ifdef LEADING_UNDERSCORE
- [ "-u", "_PrelMain_mainIO_closure" ,
- "-u", "___init_PrelMain"]
-#else
[ "-u", prefixUnderscore "PrelMain_mainIO_closure" ,
"-u", prefixUnderscore "__init_PrelMain"]
-#endif
else []))
-- parallel only: move binary to another dir -- HWL
import GlaExts ( word2Int#, int2Word#, shiftRL#, and#, (/=#) )
import Outputable ( pprPanic, ppr )
import IOExts ( trace )
+import Config ( cLeadingUnderscore )
import FastTypes
\end{code}
\begin{code}
underscorePrefix :: Bool -- leading underscore on assembler labels?
-
-#ifdef LEADING_UNDERSCORE
-underscorePrefix = True
-#else
-underscorePrefix = False
-#endif
+underscorePrefix = (cLeadingUnderscore == "YES")
---------------------------
fmtAsmLbl :: String -> String -- for formatting labels