On 3/30/22 16:48, Sebastian Huber wrote:


On 30/03/2022 15:30, Sebastian Huber wrote:
On 30/03/2022 13:56, Martin Liška wrote:
Example:

base64 -d log.txt | gcov-tool merge-stream

The gcov-tool uses a new tag which contains the filename of the associated gcov 
info file:

gcov-dump b-xilinx_zynq_a9_qemu/init.gcda
b-xilinx_zynq_a9_qemu/init.gcda:data:magic `gcda':version `B20 '
b-xilinx_zynq_a9_qemu/init.gcda:stamp 3496756572
b-xilinx_zynq_a9_qemu/init.gcda:checksum 137326246
b-xilinx_zynq_a9_qemu/init.gcda:  a5000000:  62:FILENAME 
`/home/EB/sebastian_h/src/lwip/b-xilinx_zynq_a9_qemu/init.gcda'
b-xilinx_zynq_a9_qemu/init.gcda:  a1000000:   8:OBJECT_SUMMARY runs=0, sum_max=0
b-xilinx_zynq_a9_qemu/init.gcda:  01000000:  12:FUNCTION ident=1016818396, 
lineno_checksum=0xd31791e7, cfg_checksum=0x4529789a
b-xilinx_zynq_a9_qemu/init.gcda:    01a10000: 232:COUNTERS arcs 29 counts

Should I generate this filename tag to all configurations or just in case 
inhibit_libc is defined?

I would emit it unconditionally. Btw. why do you need the tag?

The tag was the easiest way to add the filename to the gcov information.

We need some gcov defined way to get the filename associated with a gcov 
information, so that the gcov-tool can generate the gcov files from the gcov 
information itself. In a hosted environment, it is not necessary to include the 
filename in the gcov information, since the instrumented executable already 
creates the gcov files. In a freestanding environment, the gcov information is 
not automatically stored to files since no file system may be available. Here, 
we can dump the gcov information through __gcov_info_to_gcda(). This dump is 
basically a concatenation of several gcov files.

An alternative to a tag inside the gcov data would be a header which is dumped 
before the gcov data and understood by the gcov-tool:

header : int32:filename-magic int32:version string

#define GCOV_FILENAME_MAGIC ((gcov_unsigned_t)0x6763666e) /* "gcfn" */

Thanks for asking the question. The alternative with the header is much less 
intrusive. I will work on this approach now.

Agreed.


Another question, I would like to add an option to gcov-tool to transform the 
filenames using regular expressions (for example, remove or add a prefix). Can I use 
the C++ <regex> for this?

Sure, use it!

Thanks,
Martin

Reply via email to