#2730: Quasiquote or TH linking may need HPC flag
---------------------------------+------------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 6.10.1
Component: Compiler | Version: 6.8.3
Severity: normal | Keywords:
Difficulty: Unknown | Testcase:
Architecture: Unknown/Multiple | Os: Unknown/Multiple
---------------------------------+------------------------------------------
Test `quasiquotation/qq005` fails in the `hpc` way:
{{{
'/64playpen/simonpj/builds/HEAD-1/ghc/stage2-inplace/ghc' -fforce-recomp
-dcore-lint -dcmm-lint -Dx86_64_unknown_linux -dno-debug-output -c -o
qq005 Main.hs -O -fhpc
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Loading package syb ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package packedstring-0.1.0.1 ... linking ... done.
Loading package containers-0.2.0.0 ... linking ... done.
Loading package pretty-1.0.1.0 ... linking ... done.
Loading package template-haskell ... linking ... done.
Loading package parsec-2.1.0.1 ... linking ... done.
ghc: ./Expr.o: unknown symbol `hs_hpc_module'
}}}
I believe the reason is this:
* `Expr.hs` contains a quasiquote parser
* This parser is invoked in `Main.hs`
* But `Expr.hs` is compiled with `-fhpc` and contains a reference to the
RTS function `hs_hpc_module`
* When doing dynamic linking of `Expr.o` (to run the quasiquote parser)
the linker can't find `hs_hpc_module`. (Even though `Main.hs` is also
compiled with `-fhpc`.
The same thing happens with Template Haskell. (Try running the `th` tests
with the `hpc` way. Not all tests fail, but some do, with the same
error.)
I'm no expert on the dynamic linking part. Is `hs_hpc_module` (defined in
`rts/Hpc.c`) always part of the RTS? Does it need to be added to a list I
vaguely recall, of externally linkable symbols (perhaps `RTS_SYMBOLS` in
`rts/Linker.c`) [PS: some comments explaining these lists would be v
useful]? Or what?
I'll milestone this for 6.10.1, because it does seem a bug that TH and HPC
don't mix; but it should probably not hold up the release.
Simon
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2730>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs