| |
@@ -1,94 +0,0 @@
|
| |
- From a5dd9529f9232b8d901a4d6eb9ae54cae179e5b3 Mon Sep 17 00:00:00 2001
|
| |
- From: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
|
| |
- Date: Wed, 7 Mar 2018 14:18:55 +0100
|
| |
- Subject: [PATCH] geninfo: Add gcc 8 support
|
| |
-
|
| |
- Fix errors and incorrect data when trying to collect coverage data
|
| |
- for programs compiled with gcc 8.
|
| |
-
|
| |
- Covers the following gcov-related changes in gcc:
|
| |
-
|
| |
- .gcov-file format:
|
| |
- - Line coverage data can appear multiple times for the same line
|
| |
- - Line coverage count can be suffixed by '*' to indicated unexecuted
|
| |
- basic blocks in that line
|
| |
-
|
| |
- .gcno-file format:
|
| |
- - new header field 'support unexecuted blocks flag'
|
| |
- - new function record fields 'column number', 'ending line number',
|
| |
- and 'compiler-generated entity flag'
|
| |
-
|
| |
- Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
|
| |
- ---
|
| |
- bin/geninfo | 20 ++++++++++++++++++++
|
| |
- 1 file changed, 20 insertions(+)
|
| |
-
|
| |
- diff --git a/bin/geninfo b/bin/geninfo
|
| |
- index 8562560..ef6a818 100755
|
| |
- --- a/bin/geninfo
|
| |
- +++ b/bin/geninfo
|
| |
- @@ -68,6 +68,7 @@ our $lcov_url = "http://ltp.sourceforge.net/coverage/lcov.php";
|
| |
- our $gcov_tool = "gcov";
|
| |
- our $tool_name = basename($0);
|
| |
-
|
| |
- +our $GCOV_VERSION_8_0_0 = 0x80000;
|
| |
- our $GCOV_VERSION_4_7_0 = 0x40700;
|
| |
- our $GCOV_VERSION_3_4_0 = 0x30400;
|
| |
- our $GCOV_VERSION_3_3_0 = 0x30300;
|
| |
- @@ -1934,6 +1935,9 @@ sub read_gcov_file($)
|
| |
- {
|
| |
- my ($count, $line, $code) = ($1, $2, $3);
|
| |
-
|
| |
- + # Skip instance-specific counts
|
| |
- + next if ($line == $last_line);
|
| |
- +
|
| |
- $last_line = $line;
|
| |
- $last_block = $UNNAMED_BLOCK;
|
| |
- # Check for exclusion markers
|
| |
- @@ -1963,6 +1967,9 @@ sub read_gcov_file($)
|
| |
- }
|
| |
- }
|
| |
-
|
| |
- + # Strip unexecuted basic block marker
|
| |
- + $count =~ s/\*$//;
|
| |
- +
|
| |
- # <exec count>:<line number>:<source code>
|
| |
- if ($line eq "0")
|
| |
- {
|
| |
- @@ -3537,6 +3544,10 @@ sub read_gcno_function_record(*$$$$$)
|
| |
- graph_expect("function name");
|
| |
- $function = read_gcno_string($handle, $big_endian);
|
| |
- return undef if (!defined($function));
|
| |
- + if ($version >= $GCOV_VERSION_8_0_0) {
|
| |
- + graph_skip($handle, 4, "compiler-generated entity flag")
|
| |
- + or return undef;
|
| |
- + }
|
| |
- # Read filename
|
| |
- graph_expect("filename");
|
| |
- $filename = read_gcno_string($handle, $big_endian);
|
| |
- @@ -3544,6 +3555,11 @@ sub read_gcno_function_record(*$$$$$)
|
| |
- # Read first line number
|
| |
- $lineno = read_gcno_value($handle, $big_endian, "initial line number");
|
| |
- return undef if (!defined($lineno));
|
| |
- + # Skip column and ending line number
|
| |
- + if ($version >= $GCOV_VERSION_8_0_0) {
|
| |
- + graph_skip($handle, 4, "column number") or return undef;
|
| |
- + graph_skip($handle, 4, "ending line number") or return undef;
|
| |
- + }
|
| |
- # Add to list
|
| |
- push(@{$bb->{$function}->{$filename}}, $lineno);
|
| |
- graph_add_order($fileorder, $function, $filename);
|
| |
- @@ -3631,6 +3647,10 @@ sub read_gcno($)
|
| |
- debug(sprintf("found version 0x%08x\n", $version));
|
| |
- # Skip stamp
|
| |
- graph_skip(*HANDLE, 4, "file timestamp") or goto incomplete;
|
| |
- + if ($version >= $GCOV_VERSION_8_0_0) {
|
| |
- + graph_skip(*HANDLE, 4, "support unexecuted blocks flag")
|
| |
- + or goto incomplete;
|
| |
- + }
|
| |
- while (!eof(HANDLE)) {
|
| |
- my $next_pos;
|
| |
- my $curr_pos;
|
| |
- --
|
| |
- 2.14.3
|
| |
-
|
| |