OSDN Git Service

llvm-cov: Fix reading gcov data that does not have function names
authorJustin Bogner <mail@justinbogner.com>
Mon, 8 Feb 2016 22:49:40 +0000 (22:49 +0000)
committerJustin Bogner <mail@justinbogner.com>
Mon, 8 Feb 2016 22:49:40 +0000 (22:49 +0000)
commiteb833bab8d00c1365644db143f9fd80aa9c5999c
tree5d06dfeef794e99fb1b4f7935591352bfdddbc71
parent5835d8e04475268c9a0b047a59c70194f29ddcd5
llvm-cov: Fix reading gcov data that does not have function names

In order for recent gcov versions to read the coverage data, you have
to use UseCfgChecksum=true and FunctionNamesInData=false options for
coverage profiling pass. This is because gcov is expecting the
function section in .gcda to be exactly 3 words in size, containing
ident and two checksums.

While llvm-cov is compatible with UseCfgChecksum=true, it always
expects a function name in .gcda function sections (it's not
compatible with FunctionNamesInData=false). Thus it's currently
impossible to generate one set of coverage files that works with both
gcov and llvm-cov.

This change fixes the reading of coverage information to only read the
function name if it's present.

Patch by Arseny Kapoulkine. Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260162 91177308-0d34-0410-b5e6-96231b3b80d8
lib/IR/GCOV.cpp
test/tools/llvm-cov/Inputs/gcov47_compatibility.gcda [new file with mode: 0644]
test/tools/llvm-cov/Inputs/gcov47_compatibility.gcno [new file with mode: 0644]
test/tools/llvm-cov/gcov47_compatibility.cpp [new file with mode: 0644]