mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-07 04:21:39 +00:00
eb833bab8d
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
31 lines
1.1 KiB
C++
31 lines
1.1 KiB
C++
// Make sure that llvm-cov can read coverage data written in gcov47+ compatible
|
|
// format.
|
|
|
|
// Compile with these arguments and run the result to generate .gc* files:
|
|
// -coverage -Xclang -coverage-no-function-names-in-data
|
|
// -Xclang -coverage-cfg-checksum -Xclang -coverage-version='407*'
|
|
|
|
// We need shell for cd
|
|
// REQUIRES: shell
|
|
|
|
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: cd %t
|
|
// RUN: cp %s %p/Inputs/gcov47_compatibility.gc* .
|
|
|
|
// RUN: llvm-cov gcov gcov47_compatibility.cpp | FileCheck %s --check-prefix=STDOUT
|
|
// STDOUT: File 'gcov47_compatibility.cpp'
|
|
// STDOUT: Lines executed:100.00% of 1
|
|
// STDOUT: gcov47_compatibility.cpp:creating 'gcov47_compatibility.cpp.gcov'
|
|
|
|
// RUN: FileCheck %s --check-prefix=GCOV < %t/gcov47_compatibility.cpp.gcov
|
|
// GCOV: -: 0:Runs:1
|
|
// GCOV: -: 0:Programs:1
|
|
|
|
int main(int argc, const char *argv[]) { // GCOV: -: [[@LINE]]:int main(
|
|
return 0; // GCOV: 1: [[@LINE]]: return
|
|
} // GCOV: -: [[@LINE]]:}
|
|
|
|
// llvm-cov doesn't work on big endian yet
|
|
// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc
|