blob: 2a4b80c976052cdd10fd0a8a32d0555e6a6335e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Language.Haskell.TH.Syntax
import Foreign.C.String
$(do
-- some architectures require a "_" symbol prefix...
-- GHC defines a LEADING_UNDERSCORE CPP constant to indicate this.
addForeignSource LangAsm
"#if defined(LEADING_UNDERSCORE)\n\
\.global \"_mydata\"\n\
\_mydata:\n\
\#else\n\
\.global \"mydata\"\n\
\mydata:\n\
\#endif\n\
\.ascii \"Hello world\\0\"\n"
return [])
foreign import ccall "&mydata" mystring :: CString
main :: IO ()
main = putStrLn =<< peekCString mystring
|