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