Linker problem with HPC and TemplateHaskell

David Turner dct25-561bs at
Fri Dec 19 21:24:25 UTC 2014


I'm getting the following error message when compiling a Yesod
application (which uses Template Haskell rather a lot) with -fhpc:

/usr/bin/ld: ./Foundation.dyn_o: relocation R_X86_64_PC32 against
undefined symbol `_hpc_tickboxes_Settings_hpc' can not be used when
making a shared object; recompile with -fPIC

Steps to reproduce:

1. Run 'yesod init' to make a new scaffold. Call it 'testsite' and
select 'simple' for no database.
2. Run:

cd testsite
sed Settings.hs -i -e 's/staticRoot conf.*/staticRoot conf = "foo"/' #
GHC doesn't like this line
ghc --make app/main.hs  -XTemplateHaskell -XCPP -XOverloadedStrings
-XMultiParamTypeClasses -XTypeFamilies -fhpc -O1

Running the ghc line again completes successfully.

It seems that there is a missing ./Settings.dyn_o in the gcc command
line that ghc calls, the first time through. It's there the second
time so the link succeeds. No idea what that might mean.

It's not a problem at -O0.

I'm using 7.8.3 so this might be fixed now.

Not sure what else might help! Any advice gratefully received.



More information about the ghc-devs mailing list