gcov: make profile merging smarter
commit72e0c742bd01f8e7e6dcca64042b9ad7e75979de
authorMartin Liska <mliska@suse.cz>
Thu, 9 Sep 2021 11:02:24 +0000 (9 13:02 +0200)
committerMartin Liska <mliska@suse.cz>
Wed, 13 Oct 2021 13:26:58 +0000 (13 15:26 +0200)
treeb902a8580178ec7ed6d4dc9416679a4d92f81e78
parent489c8f27296362dcfbc967aecef17ba7c5cab0f2
gcov: make profile merging smarter

Support merging of profiles that are built from a different .o files
but belong to the same source file. Moreover, a checksum is verified
during profile merging and so we can safely combine such profile.

PR gcov-profile/90364

gcc/ChangeLog:

* coverage.c (build_info): Emit checksum to the global variable.
(build_info_type): Add new field for checksum.
(coverage_obj_finish): Pass object_checksum.
(coverage_init): Use 0 as checksum for .gcno files.
* gcov-dump.c (dump_gcov_file): Dump also new checksum field.
* gcov.c (read_graph_file): Read also checksum.
* doc/invoke.texi: Document the behaviour change.

libgcc/ChangeLog:

* libgcov-driver.c (merge_one_data): Skip timestamp and verify
checksums.
(write_one_data): Write also checksum.
* libgcov-util.c (read_gcda_file): Read also checksum field.
* libgcov.h (struct gcov_info): Add new field.
gcc/coverage.c
gcc/doc/invoke.texi
gcc/gcov-dump.c
gcc/gcov.c
libgcc/libgcov-driver.c
libgcc/libgcov-util.c
libgcc/libgcov.h