Hi. Attempt of the patch is to explain that consumers of gcov tool should use the intermediate format instead of reading of the profile files. The format change is documented.
Ready for trunk? Thanks, Martin gcc/ChangeLog: 2018-03-07 Martin Liska <mli...@suse.cz> PR gcov-profile/84735 * doc/gcov.texi: Document usage of profile files. * gcov-io.h: Document changes in the format. --- gcc/doc/gcov.texi | 6 +++--- gcc/gcov-io.h | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index d4c7806bc23..59235876aaa 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -816,9 +816,9 @@ A separate @file{.gcda} file is created for each object file compiled with this option. It contains arc transition counts, value profile counts, and some summary information. -The full details of the file format is specified in @file{gcov-io.h}, -and functions provided in that header file should be used to access the -coverage files. +It is not recommended to access the coverage files directly. +Consumers should use the intermediate format that is provided +by @command{gcov} tool via @option{--intermediate-format} option. @node Cross-profiling @section Data File Relocation to Support Cross-Profiling diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index 18937e35474..d6389c48908 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -48,7 +48,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see padding: | char:0 | char:0 char:0 | char:0 char:0 char:0 item: int32 | int64 | string - The basic format of the files is + The basic format of the notes file is + + file : int32:magic int32:version int32:stamp int32:support_unexecuted_blocks record* + + The basic format of the data file is file : int32:magic int32:version int32:stamp record* @@ -104,7 +108,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see function-graph: announce_function basic_blocks {arcs | lines}* announce_function: header int32:ident int32:lineno_checksum int32:cfg_checksum - string:name string:source int32:lineno + string:name string:source int32:start_lineno int32:start_column int32:end_lineno basic_block: header int32:flags* arcs: header int32:block_no arc* arc: int32:dest_block int32:flags