https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82702

--- Comment #6 from Martin Liška <marxin at gcc dot gnu.org> ---
Marco is right that it started with the mentioned revision. But let me start in
more general context:

Consider virtual.cpp file that includes some standard header files.
In that case gcov tool can be invoked with arbitrary file extension, because
the file name is only used to find a proper gc{da,no} file:

$ gcov virtual.abcdef
File 'virtual.cpp'
Lines executed:100.00% of 9
Creating 'virtual.cpp.gcov'

File '/home/marxin/bin/gcc2/include/c++/7.2.1/iostream'
Lines executed:100.00% of 1
Creating 'iostream.gcov'

Even if you rename virtual.gcno and virtual.gcda to x.gcno (x.gcda
respectively):

$ gcov x.gcda
File 'virtual.cpp'
Lines executed:100.00% of 9
Creating 'virtual.cpp.gcov'

File '/home/marxin/bin/gcc2/include/c++/7.2.1/iostream'
Lines executed:100.00% of 1
Creating 'iostream.gcov'

Because each gcno file contains locations for all function, it has exactly one
source file and multiple header files. Here we come to intermediate format. I
would prefer to generate same sets of .gcov files for both normal and
intermediate format. I consider it more stable.

In your use case, I would suggest to support -l (--long-names) in intermediate
format and use the path for content of intermediate file:

file:/home/marxin/bin/gcc2/include/c++/7.2.1/iostream.gcov

Doing so, one can concatenate all *.gcov files and use it for tools like lcov.
I know it's behavior change, but can help if you have problem with number of
files that need to be filled to lcov?

Reply via email to