Package: lcov
Version: 1.9-2
Severity: important
Tags: patch
User: [email protected]
Dear Alastair,
Using lcov on gcc-4.7 generated code fails. That particular has already
been fixed in Fedora [1], along with another bug concerning the creation
of files containing the characters < and > in their name [2].
The attached debdiff contains the patches as applied to the Fedora
packages [3].
* Apply Fedora patches by Daniel Berrange:
- gcc-compat-4.7.patch: Fix compat with gcc 4.7
- three-arg-open.patch: Replace 2 argument open with 3 argument open
* Standards-Version: 3.9.3
Thanks for considering the patch.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=787502
[2] https://bugzilla.redhat.com/show_bug.cgi?id=706040
[3]
http://pkgs.fedoraproject.org/gitweb/?p=lcov.git;a=commitdiff;h=25a274d9dbd6813b160e8c8c6ab12791dff8733e
-- System Information:
Debian Release: wheezy/sid
APT prefers precise-updates
APT policy: (500, 'precise-updates'), (500, 'precise-security'), (500,
'precise'), (100, 'precise-backports')
Architecture: amd64 (x86_64)
Kernel: Linux 3.2.0-24-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru lcov-1.9/debian/changelog lcov-1.9/debian/changelog
diff -Nru lcov-1.9/debian/control lcov-1.9/debian/control
--- lcov-1.9/debian/control 2010-10-08 15:25:21.000000000 +0200
+++ lcov-1.9/debian/control 2012-05-14 11:23:14.000000000 +0200
@@ -4,7 +4,7 @@
Build-Depends: debhelper (>=7.0.50~)
Maintainer: Alastair McKinstry <[email protected]>
Homepage: http://ltp.sourceforge.net/coverage/lcov.php
-Standards-Version: 3.9.1
+Standards-Version: 3.9.3
Package: lcov
Architecture: all
diff -Nru lcov-1.9/debian/patches/gcc-compat-4.7.patch lcov-1.9/debian/patches/gcc-compat-4.7.patch
--- lcov-1.9/debian/patches/gcc-compat-4.7.patch 1970-01-01 01:00:00.000000000 +0100
+++ lcov-1.9/debian/patches/gcc-compat-4.7.patch 2012-05-14 11:16:30.000000000 +0200
@@ -0,0 +1,27 @@
+Subject: Fix compat with gcc 4.7
+Origin: vendor, http://pkgs.fedoraproject.org/gitweb/?p=lcov.git;a=blob_plain;f=lcov-1.9-gcc-compat-4.7.patch;hb=25a274d9dbd6813b160e8c8c6ab12791dff8733e
+Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=787502
+Author: Daniel Berrange <[email protected]>
+
+diff -rup lcov-1.9.orig/bin/geninfo lcov-1.9.new/bin/geninfo
+--- lcov-1.9.orig/bin/geninfo 2010-08-06 12:05:17.000000000 +0100
++++ lcov-1.9.new/bin/geninfo 2012-03-12 10:59:11.253999711 +0000
+@@ -63,6 +63,7 @@ our $lcov_url = "http://ltp.sourceforge
+ our $gcov_tool = "gcov";
+ our $tool_name = basename($0);
+
++our $GCOV_VERSION_4_7_0 = 0x40700;
+ our $GCOV_VERSION_3_4_0 = 0x30400;
+ our $GCOV_VERSION_3_3_0 = 0x30300;
+ our $GCNO_FUNCTION_TAG = 0x01000000;
+@@ -2903,6 +2904,10 @@ sub read_gcno_function_record(*$$$$)
+ graph_expect("function record");
+ # Skip ident and checksum
+ graph_skip($handle, 8, "function ident and checksum") or return undef;
++ if ($gcov_version >= $GCOV_VERSION_4_7_0) {
++ # Skip extra word added by android 4.4.0 / gcc >= 4.7 toolchains.
++ graph_skip($handle, 4, "android_4_4_0 extra word");
++ }
+ # Read function name
+ graph_expect("function name");
+ $function = read_gcno_string($handle, $big_endian);
diff -Nru lcov-1.9/debian/patches/series lcov-1.9/debian/patches/series
--- lcov-1.9/debian/patches/series 2010-10-13 01:14:21.000000000 +0200
+++ lcov-1.9/debian/patches/series 2012-05-14 11:03:58.000000000 +0200
@@ -4,3 +4,5 @@
utf8-output.patch
perl-nocaps.patch
debian-changes-1.9-2
+gcc-compat-4.7.patch
+three-arg-open.patch
diff -Nru lcov-1.9/debian/patches/three-arg-open.patch lcov-1.9/debian/patches/three-arg-open.patch
--- lcov-1.9/debian/patches/three-arg-open.patch 1970-01-01 01:00:00.000000000 +0100
+++ lcov-1.9/debian/patches/three-arg-open.patch 2012-05-14 11:19:54.000000000 +0200
@@ -0,0 +1,162 @@
+Subject: Replace 2 argument open with 3 argument open
+Origin: vendor, http://pkgs.fedoraproject.org/gitweb/?p=lcov.git;a=blob_plain;f=lcov-1.9-three-arg-open.patch;hb=25a274d9dbd6813b160e8c8c6ab12791dff8733e
+Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=706040
+Author: Daniel Berrange <[email protected]>
+
+diff -rup lcov-1.9.orig/bin/geninfo lcov-1.9.new/bin/geninfo
+--- lcov-1.9.orig/bin/geninfo 2012-03-12 11:11:31.837992625 +0000
++++ lcov-1.9.new/bin/geninfo 2012-03-12 11:11:00.721000276 +0000
+@@ -424,7 +424,7 @@ if (defined($output_filename) && ($outpu
+ # Initially create output filename, data is appended
+ # for each data file processed
+ local *DUMMY_HANDLE;
+- open(DUMMY_HANDLE, ">$output_filename")
++ open(DUMMY_HANDLE, ">", $output_filename)
+ or die("ERROR: cannot create $output_filename!\n");
+ close(DUMMY_HANDLE);
+
+@@ -906,7 +906,7 @@ sub process_dafile($$)
+ else
+ {
+ # Append to output file
+- open(INFO_HANDLE, ">>$output_filename")
++ open(INFO_HANDLE, ">>", $output_filename)
+ or die("ERROR: cannot write to ".
+ "$output_filename!\n");
+ }
+@@ -914,7 +914,7 @@ sub process_dafile($$)
+ else
+ {
+ # Open .info file for output
+- open(INFO_HANDLE, ">$da_filename.info")
++ open(INFO_HANDLE, ">", "$da_filename.info")
+ or die("ERROR: cannot create $da_filename.info!\n");
+ }
+
+@@ -1267,7 +1267,7 @@ sub solve_ambiguous_match($$$)
+ {
+
+ # Compare file contents
+- open(SOURCE, $filename)
++ open(SOURCE, "<", $filename)
+ or die("ERROR: cannot read $filename!\n");
+
+ $no_match = 0;
+@@ -1337,7 +1337,7 @@ sub read_gcov_header($)
+ my $object;
+ local *INPUT;
+
+- if (!open(INPUT, $_[0]))
++ if (!open(INPUT, "<", $_[0]))
+ {
+ if ($ignore_errors[$ERROR_GCOV])
+ {
+@@ -1489,7 +1489,7 @@ sub read_gcov_file($)
+ my $last_line = 0;
+ local *INPUT;
+
+- if (!open(INPUT, $filename)) {
++ if (!open(INPUT, "<", $filename)) {
+ if ($ignore_errors[$ERROR_GCOV])
+ {
+ warn("WARNING: cannot read $filename!\n");
+@@ -1669,7 +1669,7 @@ sub get_gcov_version()
+ my $version_string;
+ my $result;
+
+- open(GCOV_PIPE, "$gcov_tool -v |")
++ open(GCOV_PIPE, "-|", "$gcov_tool -v")
+ or die("ERROR: cannot retrieve gcov version!\n");
+ $version_string = <GCOV_PIPE>;
+ close(GCOV_PIPE);
+@@ -1757,12 +1757,12 @@ sub system_no_output($@)
+ local *OLD_STDOUT;
+
+ # Save old stdout and stderr handles
+- ($mode & 1) && open(OLD_STDOUT, ">>&STDOUT");
+- ($mode & 2) && open(OLD_STDERR, ">>&STDERR");
++ ($mode & 1) && open(OLD_STDOUT, ">>&", "STDOUT");
++ ($mode & 2) && open(OLD_STDERR, ">>&", "STDERR");
+
+ # Redirect to /dev/null
+- ($mode & 1) && open(STDOUT, ">/dev/null");
+- ($mode & 2) && open(STDERR, ">/dev/null");
++ ($mode & 1) && open(STDOUT, ">", "/dev/null");
++ ($mode & 2) && open(STDERR, ">", "/dev/null");
+
+ system(@_);
+ $result = $?;
+@@ -1772,8 +1772,8 @@ sub system_no_output($@)
+ ($mode & 2) && close(STDERR);
+
+ # Restore old handles
+- ($mode & 1) && open(STDOUT, ">>&OLD_STDOUT");
+- ($mode & 2) && open(STDERR, ">>&OLD_STDERR");
++ ($mode & 1) && open(STDOUT, ">>&", "OLD_STDOUT");
++ ($mode & 2) && open(STDERR, ">>&", "OLD_STDERR");
+
+ return $result;
+ }
+@@ -1794,7 +1794,7 @@ sub read_config($)
+ my $value;
+ local *HANDLE;
+
+- if (!open(HANDLE, "<$filename"))
++ if (!open(HANDLE, "<", $filename))
+ {
+ warn("WARNING: cannot read configuration file $filename\n");
+ return undef;
+@@ -1866,7 +1866,7 @@ sub get_exclusion_data($)
+ my $flag = 0;
+ local *HANDLE;
+
+- if (!open(HANDLE, "<$filename")) {
++ if (!open(HANDLE, "<", $filename)) {
+ warn("WARNING: could not open $filename\n");
+ return undef;
+ }
+@@ -2072,7 +2072,7 @@ sub process_graphfile($$)
+ else
+ {
+ # Append to output file
+- open(INFO_HANDLE, ">>$output_filename")
++ open(INFO_HANDLE, ">>", $output_filename)
+ or die("ERROR: cannot write to ".
+ "$output_filename!\n");
+ }
+@@ -2080,7 +2080,7 @@ sub process_graphfile($$)
+ else
+ {
+ # Open .info file for output
+- open(INFO_HANDLE, ">$graph_filename.info")
++ open(INFO_HANDLE, ">", "$graph_filename.info")
+ or die("ERROR: cannot create $graph_filename.info!\n");
+ }
+
+@@ -2544,7 +2544,7 @@ sub read_bb($$)
+ my $graph;
+ local *HANDLE;
+
+- open(HANDLE, "<$bb_filename") or goto open_error;
++ open(HANDLE, "<", $bb_filename) or goto open_error;
+ binmode(HANDLE);
+ while (!eof(HANDLE)) {
+ $value = read_bb_value(*HANDLE, "data word");
+@@ -2721,7 +2721,7 @@ sub read_bbg($$)
+ my $graph;
+ local *HANDLE;
+
+- open(HANDLE, "<$bbg_filename") or goto open_error;
++ open(HANDLE, "<", $bbg_filename) or goto open_error;
+ binmode(HANDLE);
+ # Read magic
+ $word = read_bbg_value(*HANDLE, "file magic");
+@@ -2959,7 +2959,7 @@ sub read_gcno($$)
+ my $graph;
+ local *HANDLE;
+
+- open(HANDLE, "<$gcno_filename") or goto open_error;
++ open(HANDLE, "<", $gcno_filename) or goto open_error;
+ binmode(HANDLE);
+ # Read magic
+ $word = read_gcno_word(*HANDLE, "file magic");