[GHC] #9012: HPC is broken (relocation R_386_GOTOFF against undefined symbol can not be used when making a shared object)
GHC
ghc-devs at haskell.org
Tue Jul 1 16:43:52 UTC 2014
#9012: HPC is broken (relocation R_386_GOTOFF against undefined symbol can not be
used when making a shared object)
-------------------------------------+------------------------------------
Reporter: Feuerbach | Owner:
Type: bug | Status: patch
Priority: high | Milestone: 7.8.4
Component: Compiler | Version: 7.8.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+------------------------------------
Comment (by rwbarton):
Replying to [comment:12 Feuerbach]:
> Try `regex-applicative`. E.g.: `cabal install --enable-library-coverage
--run-tests regex-applicative`. (Assuming you have cabal-install 1.20.)
That should build the package, run the tests, and generate the hpc report.
>
> Obviously I can't test these instructions because of the very bug we're
discussing...
Great, thanks. I did this:
{{{
cabal install --only-dep --run-tests -w $HOME/ghc/inplace/bin/ghc-stage2
regex-applicative
cabal get regex-applicative
cd regex-applicative*
cabal configure --enable-library-coverage --enable-tests -w
$HOME/ghc/inplace/bin/ghc-stage2 --ghc-option=-XFlexibleContexts # see
#8883
cabal test
}}}
and it seems to have worked fine:
{{{
[... building ...]
Running 1 test suites...
Test suite test-regex-applicative: RUNNING...
Test suite test-regex-applicative: PASS
Test suite logged to:
dist/test/regex-applicative-0.3.0.2-test-regex-applicative.log
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.StateQueue.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Compile.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Types.hs.html
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.Interface.hs.html
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.Reference.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Object.hs.html
Writing: hpc_index.html
Writing: hpc_index_fun.html
Writing: hpc_index_alt.html
Writing: hpc_index_exp.html
Test coverage report written to
dist/hpc/html/test-regex-applicative/hpc_index.html
1 of 1 test suites (1 of 1 test cases) passed.
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.StateQueue.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Compile.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Types.hs.html
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.Interface.hs.html
Writing: regex-
applicative-0.3.0.2/Text.Regex.Applicative.Reference.hs.html
Writing: regex-applicative-0.3.0.2/Text.Regex.Applicative.Object.hs.html
Writing: hpc_index.html
Writing: hpc_index_fun.html
Writing: hpc_index_alt.html
Writing: hpc_index_exp.html
Package coverage report written to
dist/hpc/html/regex-applicative-0.3.0.2/hpc_index.html
}}}
The report looks fine, too. (I tried the your first set of instructions
first, and I got the same successful messages, but as far as I can tell
Cabal didn't save the coverage report anywhere!)
However, if I also install the dependencies (test frameworks) with
`--enable-library-coverage`, then things break:
{{{
[...]
Running 1 test suites...
Test suite test-regex-applicative: RUNNING...
Test suite test-regex-applicative: PASS
Test suite logged to:
dist/test/regex-applicative-0.3.0.2-test-regex-applicative.log
hpc: can not find HUnit-1.2.5.2/Test.HUnit.Lang in
["./.hpc","./dist/hpc/mix/regex-applicative-0.3.0.2","./dist/hpc/mix/test-
regex-applicative"]
}}}
The test executable is not using shared libraries at all, though, so I
suspect this case has always been broken.
If I make the test executable dynamic, with the first set of steps, I get
a report that includes two additional modules, `Text.Regex.Applicative`
and `Text.Regex.Applicative.Common`, which have no coverage. I suspect
this is due to static linking not linking those object files since they're
not needed, while dynamic linking is monolithic. I also get a slightly
different error with the second set of steps, possibly due to the same
cause.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9012#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list