Hello community,

here is the log from the commit of package lcov for openSUSE:Factory checked in 
at 2015-01-30 17:46:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lcov (Old)
 and      /work/SRC/openSUSE:Factory/.lcov.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lcov"

Changes:
--------
--- /work/SRC/openSUSE:Factory/lcov/lcov.changes        2013-01-17 
09:44:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.lcov.new/lcov.changes   2015-01-30 
17:47:16.000000000 +0100
@@ -1,0 +2,11 @@
+Sun Jun  1 14:07:41 UTC 2014 - vmik...@collabora.co.uk
+
+- Update to version 1.11:
+  + Improved support for GCC 4.7
+  + Improved performance for specific functions
+  + Compatibility support for LLVM's gcov
+  + Multiple bug fixes and documentation improvements
+- Adapt lcov-1.10-except-unreach.patch to upstream changes
+  >  lcov-1.11-except-unreach.patch 
+  
+-------------------------------------------------------------------

Old:
----
  lcov-1.10-except-unreach.patch
  lcov-1.10.tar.bz2

New:
----
  lcov-1.11-except-unreach.patch
  lcov-1.11.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lcov.spec ++++++
--- /var/tmp/diff_new_pack.PWtgrV/_old  2015-01-30 17:47:19.000000000 +0100
+++ /var/tmp/diff_new_pack.PWtgrV/_new  2015-01-30 17:47:19.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package lcov
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -23,7 +23,7 @@
 Summary:        A Graphical GCOV Front-end
 License:        GPL-2.0+
 Group:          Development/Tools/Other
-Version:        1.10
+Version:        1.11
 Release:        0
 Source:         %{name}-%{version}.tar.bz2
 Patch0:         %{name}-%{version}-except-unreach.patch

++++++ lcov-1.10-except-unreach.patch -> lcov-1.11-except-unreach.patch ++++++
--- /work/SRC/openSUSE:Factory/lcov/lcov-1.10-except-unreach.patch      
2013-01-17 09:44:00.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.lcov.new/lcov-1.11-except-unreach.patch 
2015-01-30 17:47:11.000000000 +0100
@@ -1,14 +1,13 @@
 Fixes:
 geninfo: Argument "=====" isn't numeric in numeric gt (>) at /usr/bin/geninfo 
line 1126.
---- lcov.orig/bin/geninfo      2012-03-12 04:26:08.000000000 -0700
-+++ lcov/bin/geninfo   2012-06-06 16:54:15.231499893 -0700
-@@ -1637,7 +1637,8 @@
-                                               push(@result, 0);
-                                       } else {
-                                               # Check for zero count
--                                              if ($count eq "#####") {
-+                                              if ($count eq "#####"
-+                                                    or $count eq "=====") {
-                                                       $count = 0;
-                                               }
-                                               push(@result, 1);
+--- lcov-1.11.orig/bin/geninfo 2014-05-23 11:03:45.000000000 +0200
++++ lcov-1.11/bin/geninfo      2014-06-01 15:51:23.334218890 +0200
+@@ -1760,7 +1760,7 @@
+ 
+                               # Check for zero count which is indicated
+                               # by ######
+-                              if ($number eq "######") { $number = 0; }
++                              if ($number eq "######" or $number eq "=====") 
{ $number = 0;   }
+ 
+                               if ($exclude_line) {
+                                       # Register uninstrumented line instead

++++++ lcov-1.10.tar.bz2 -> lcov-1.11.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/CHANGES new/lcov-1.11/CHANGES
--- old/lcov-1.10/CHANGES       2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/CHANGES       2014-05-23 11:03:45.000000000 +0200
@@ -1,3 +1,63 @@
+Version 1.11
+============
+
+genhtml:
+- Added current time to date information in HTML output. Based on patch by
+  sylves...@debian.org
+- Improved --demanglecpp performance. Based on suggestion by o...@survex.com
+- Improved memory usage when combining files. Based on patch by o...@survex.com
+- Changed initial function table sorting order to execution counts. Based on
+  suggestion by paul.bign...@hotmail.fr
+- Fixed incorrect function execution counts when using --demanglecpp on
+  functions that demange to the same name
+- Fixed handling of prefix with trailing /. Reported by ahmed_os...@mentor.com
+- Fixed "use of uninitialized value" warning when processing incorrect
+  test description files. Reported by lbalba...@gmail.com
+- Fixed reordering of unnamed branch blocks during coverage data merging.
+  Contributed by jh...@cmu.edu
+
+geninfo:
+- Added exclusion markers for branch coverage. Contributed by s_stig...@gmx.de
+- Added toleration support for .gcno files with trailing garbage. Reported by
+  christophe.guil...@st.com
+- Fixed parsing of gcc 4.7 gcov format. Reported by fa.s...@gmx.net
+- Fixed geninfo aborting on empty data directories. Based on suggestion by
+  rich_dr...@yahoo.com
+- Fixed "no data found" warning when using lcov with gcc 4.7
+- Fixed --no-external not working with --initial. Reported by
+  malcolm.pars...@gmail.com
+- Fixed handling of non-english locales. Reported by s_stig...@gmx.de
+- Fixed gcov tool version detection for gcov versions containing additional
+  versions in parenthesis.
+
+lcov:
+- Added compatibility support with LLVM's gcov (NOT llvm-cov). Contributed by
+  jo...@petri.us
+- Improved memory usage when combining files. Contributed by o...@survex.com
+- Fixed lcov aborting when using --diff on a patch file that changes the list
+  of functions. Reported by nasir.amanul...@us.fujitsu.com
+- Fixed whitespace handling in --rc options
+- Fixed --config-file not being passed to geninfo. Reported by
+  liuyhli...@gmail.com
+- Fixed missing description for command line parameter value in man page.
+  Reported by sylves...@mozilla.com
+- Fixed reordering of unnamed branch blocks during coverage data merging.
+  Contributed by jh...@cmu.edu
+
+lcov.spec:
+- Fixed Perl dependency statement
+
+lcovrc:
+- Added config file setting 'genhtml_desc_html' to allow using HTML markup in
+  test case description text
+
+CONTRIBUTING:
+- Added contribution guidelines
+
+README:
+- Improved note on lcov usage
+
+
 Version 1.10
 ============
 
@@ -149,7 +209,7 @@
 - Fixed errors when processing incomplete function names in .bb files
 - Fixed filename prefix detection
 - Fixed problem with matching filename
-- Fixed problem when LANG is set to non-english locale. Reported by
+- Fixed problem when LANG is set to non-English locale. Reported by
   benoit_belbe...@yahoo.fr.
 - Fixed short-name option ambiguities
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/CONTRIBUTING new/lcov-1.11/CONTRIBUTING
--- old/lcov-1.10/CONTRIBUTING  1970-01-01 01:00:00.000000000 +0100
+++ new/lcov-1.11/CONTRIBUTING  2014-05-23 11:03:45.000000000 +0200
@@ -0,0 +1,96 @@
+Contributing to LCOV
+====================
+
+Please read this document if you would like to help improving the LTP GCOV
+extension (LCOV). In general, all types of contributions are welcome, for
+example:
+
+ * Fixes for code or documentation
+ * Performance and compatibility improvements
+ * Functional enhancements
+
+There are some rules that these contributions must follow to be acceptable for
+inclusion:
+
+ 1. The contribution must align with the project goals of LCOV.
+ 2. The contribution must follow a particular format.
+ 3. The contribution must be signed.
+
+Once you have made sure that your contribution follows these rules, send it via
+e-mail to the LTP coverage mailing list [1].
+
+
+Signing your work
+=================
+
+All contributions to LCOV must be signed by putting the following line at the
+end of the explanation of a patch:
+
+  Signed-off-by: Your Name <your.em...@example.org>
+
+By signing a patch, you certify the following:
+
+  By making a contribution to the LTP GCOV extension (LCOV) on
+  http://ltp.sourceforge.net, I certify that:
+
+  a) The contribution was created by me and I have the right to submit it
+     under the terms and conditions of the open source license
+     "GNU General Public License, version 2 or later".
+     (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html).
+
+  b) The contribution is made free of any other party's intellectual property
+     claims or rights.
+
+  c) I understand and agree that this project and the contribution are public
+     and that a record of the contribution (including all personal information
+     I submit with it, including my sign-off) is maintained indefinitely and
+     may be redistributed consistent with this project or the open source
+     license(s) involved.
+
+
+Project goals
+=============
+
+The goal of LCOV is to provide a set of command line tools that can be used to
+collect, process and visualize code coverage data as produced by the gcov tool
+that is part of the GNU Compiler Collection (GCC) [2].
+
+If you have an idea for a contribution but are unsure if it aligns with the
+project goals, feel free to discuss the idea on the LTP coverage mailing
+list [1].
+
+
+Contribution format
+===================
+
+To contribute a change, please create a patch using the diff utility with the
+following command line options:
+
+  diff -Naurp
+
+Please base your changes on the most current version of LCOV. You can use the
+following command line to obtain this version from the "utils" module of the
+LTP CVS repository (when asked for a password, simply press return):
+
+  cvs -d:pserver:anonym...@ltp.cvs.sourceforge.net:/cvsroot/ltp login
+  cvs -z3 -d:pserver:anonym...@ltp.cvs.sourceforge.net:/cvsroot/ltp co -P utils
+
+You can find LCOV in sub-directory "utils/analysis/lcov".
+
+Add a meaningful description of the contribution to the top of the patch. The
+description should follow this format:
+
+  component: short description
+
+  detailed description
+
+  Signed-off-by: Your Name <your.em...@example.org>
+
+With your Signed-off-by, you certify the rules stated in section
+"Signing your work".
+
+
+-- 
+
+[1] ltp-cover...@lists.sourceforge.net
+[2] http://gcc.gnu.org
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/Makefile new/lcov-1.11/Makefile
--- old/lcov-1.10/Makefile      2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/Makefile      2014-05-23 11:03:45.000000000 +0200
@@ -11,7 +11,7 @@
 #   - clean:     remove all generated files
 #
 
-VERSION := 1.10
+VERSION := 1.11
 RELEASE := 1
 
 CFG_DIR := $(PREFIX)/etc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/README new/lcov-1.11/README
--- old/lcov-1.10/README        2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/README        2014-05-23 11:03:45.000000000 +0200
@@ -1,6 +1,6 @@
 -------------------------------------------------
 - README file for the LTP GCOV extension (LCOV) -
-- Last changes: 2012-10-10                      -
+- Last changes: 2014-05-23                      -
 -------------------------------------------------
 
 Description
@@ -109,11 +109,14 @@
 
      lcov --directory appdir --zerocounters
 
-  b) Capturing the current coverage state to a file (works only after the
-     application has been started and stopped at least once)
+  b) Capturing the current coverage state to a file
 
      lcov --directory appdir --capture --output-file app.info
 
+     Note that this step only works after the application has
+     been started and stopped at least once. Otherwise lcov will
+     abort with an error mentioning that there are no data/.gcda files.
+
   c) Getting HTML output
 
      genhtml app.info
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/bin/gendesc new/lcov-1.11/bin/gendesc
--- old/lcov-1.10/bin/gendesc   2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/bin/gendesc   2014-05-23 11:03:45.000000000 +0200
@@ -41,7 +41,7 @@
 
 
 # Constants
-our $lcov_version      = 'LCOV version 1.10';
+our $lcov_version      = 'LCOV version 1.11';
 our $lcov_url          = "http://ltp.sourceforge.net/coverage/lcov.php";;
 our $tool_name         = basename($0);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/bin/genhtml new/lcov-1.11/bin/genhtml
--- old/lcov-1.10/bin/genhtml   2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/bin/genhtml   2014-05-23 11:03:45.000000000 +0200
@@ -65,14 +65,15 @@
 #
 
 use strict;
-use File::Basename; 
+use File::Basename;
+use File::Temp qw(tempfile);
 use Getopt::Long;
 use Digest::MD5 qw(md5_base64);
 
 
 # Global constants
 our $title             = "LCOV - code coverage report";
-our $lcov_version      = 'LCOV version 1.10';
+our $lcov_version      = 'LCOV version 1.11';
 our $lcov_url          = "http://ltp.sourceforge.net/coverage/lcov.php";;
 our $tool_name         = basename($0);
 
@@ -145,6 +146,7 @@
 our $BR_TAKEN          = 2;
 our $BR_VEC_ENTRIES    = 3;
 our $BR_VEC_WIDTH      = 32;
+our $BR_VEC_MAX                = vec(pack('b*', 1 x $BR_VEC_WIDTH), 0, 
$BR_VEC_WIDTH);
 
 # Additional offsets used when converting branch coverage data to HTML
 our $BR_LEN    = 3;
@@ -299,6 +301,7 @@
 our @rate_png = ("ruby.png", "amber.png", "emerald.png");
 our $lcov_func_coverage = 1;
 our $lcov_branch_coverage = 0;
+our $rc_desc_html = 0; # lcovrc: genhtml_desc_html
 
 our $cwd = `pwd`;      # Current working directory
 chomp($cwd);
@@ -369,6 +372,7 @@
                "genhtml_branch_field_width"    => \$br_field_width,
                "genhtml_sort"                  => \$sort,
                "genhtml_charset"               => \$charset,
+               "genhtml_desc_html"             => \$rc_desc_html,
                "lcov_function_coverage"        => \$lcov_func_coverage,
                "lcov_branch_coverage"          => \$lcov_branch_coverage,
                });
@@ -672,6 +676,170 @@
                if ($br_do);
 }
 
+sub get_fn_list($)
+{
+       my ($info) = @_;
+       my %fns;
+       my @result;
+
+       foreach my $filename (keys(%{$info})) {
+               my $data = $info->{$filename};
+               my $funcdata = $data->{"func"};
+               my $sumfnccount = $data->{"sumfnc"};
+
+               if (defined($funcdata)) {
+                       foreach my $func_name (keys(%{$funcdata})) {
+                               $fns{$func_name} = 1;
+                       }
+               }
+
+               if (defined($sumfnccount)) {
+                       foreach my $func_name (keys(%{$sumfnccount})) {
+                               $fns{$func_name} = 1;
+                       }
+               }
+       }
+
+       @result = keys(%fns);
+
+       return \@result;
+}
+
+#
+# rename_functions(info, conv)
+#
+# Rename all function names in INFO according to CONV: OLD_NAME -> NEW_NAME.
+# In case two functions demangle to the same name, assume that they are
+# different object code implementations for the same source function.
+#
+
+sub rename_functions($$)
+{
+       my ($info, $conv) = @_;
+
+       foreach my $filename (keys(%{$info})) {
+               my $data = $info->{$filename};
+               my $funcdata;
+               my $testfncdata;
+               my $sumfnccount;
+               my %newfuncdata;
+               my %newsumfnccount;
+               my $f_found;
+               my $f_hit;
+
+               # funcdata: function name -> line number
+               $funcdata = $data->{"func"};
+               foreach my $fn (keys(%{$funcdata})) {
+                       my $cn = $conv->{$fn};
+
+                       # Abort if two functions on different lines map to the
+                       # same demangled name.
+                       if (defined($newfuncdata{$cn}) &&
+                           $newfuncdata{$cn} != $funcdata->{$fn}) {
+                               die("ERROR: Demangled function name $fn ".
+                                   " maps to different lines (".
+                                   $newfuncdata{$cn}." vs ".
+                                   $funcdata->{$fn}.")\n");
+                       }
+                       $newfuncdata{$cn} = $funcdata->{$fn};
+               }
+               $data->{"func"} = \%newfuncdata;
+
+               # testfncdata: test name -> testfnccount
+               # testfnccount: function name -> execution count
+               $testfncdata = $data->{"testfnc"};
+               foreach my $tn (keys(%{$testfncdata})) {
+                       my $testfnccount = $testfncdata->{$tn};
+                       my %newtestfnccount;
+
+                       foreach my $fn (keys(%{$testfnccount})) {
+                               my $cn = $conv->{$fn};
+
+                               # Add counts for different functions that map
+                               # to the same name.
+                               $newtestfnccount{$cn} +=
+                                       $testfnccount->{$fn};
+                       }
+                       $testfncdata->{$tn} = \%newtestfnccount;
+               }
+
+               # sumfnccount: function name -> execution count
+               $sumfnccount = $data->{"sumfnc"};
+               foreach my $fn (keys(%{$sumfnccount})) {
+                       my $cn = $conv->{$fn};
+
+                       # Add counts for different functions that map
+                       # to the same name.
+                       $newsumfnccount{$cn} += $sumfnccount->{$fn};
+               }
+               $data->{"sumfnc"} = \%newsumfnccount;
+
+               # Update function found and hit counts since they may have
+               # changed
+               $f_found = 0;
+               $f_hit = 0;
+               foreach my $fn (keys(%newsumfnccount)) {
+                       $f_found++;
+                       $f_hit++ if ($newsumfnccount{$fn} > 0);
+               }
+               $data->{"f_found"} = $f_found;
+               $data->{"f_hit"} = $f_hit;
+       }
+}
+
+#
+# demangle_cpp(INFO)
+#
+# Demangle all function names found in INFO.
+#
+sub demangle_cpp($)
+{
+       my ($info) = @_;
+       my $fn_list = get_fn_list($info);
+       my @fn_list_demangled;
+       my $tmpfile;
+       my $handle;
+       my %demangled;
+       my $changed;
+
+       # Nothing to do
+       return if (!@$fn_list);
+
+       # Write list to temp file
+       (undef, $tmpfile) = tempfile();
+       die("ERROR: could not create temporary file") if (!defined($tmpfile));
+       open($handle, ">", $tmpfile) or
+               die("ERROR: could not write to $tmpfile: $!\n");
+       print($handle join("\n", @$fn_list));
+       close($handle);
+
+       # Run c++ filt on tempfile file and parse output, creating a hash
+       open($handle, "-|", "c++filt < $tmpfile") or
+               die("ERROR: could not run c++filt: $!\n");
+       @fn_list_demangled = <$handle>;
+       close($handle);
+       unlink($tmpfile) or
+               warn("WARNING: could not remove temporary file $tmpfile: $!\n");
+
+       if (scalar(@fn_list_demangled) != scalar(@$fn_list)) {
+               die("ERROR: c++filt output not as expected (".
+                   scalar(@fn_list_demangled)." vs ".
+                   scalar(@$fn_list).") lines\n");
+       }
+
+       # Build old_name -> new_name
+       $changed = 0;
+       for (my $i = 0; $i < scalar(@$fn_list); $i++) {
+               chomp($fn_list_demangled[$i]);
+               $demangled{$fn_list->[$i]} = $fn_list_demangled[$i];
+               $changed++ if ($fn_list->[$i] ne $fn_list_demangled[$i]);
+       }
+
+       info("Demangling $changed function names\n");
+
+       # Change all occurrences of function names in INFO
+       rename_functions($info, \%demangled);
+}
 
 #
 # gen_html()
@@ -730,6 +898,9 @@
                %info_data = %{apply_baseline(\%info_data, \%base_data)};
        }
 
+       # Demangle C++ function names if requested
+       demangle_cpp(\%info_data) if ($demangle_cpp);
+
        @dir_list = get_dir_list(keys(%info_data));
 
        if ($no_prefix)
@@ -756,6 +927,7 @@
        {
                info("Using user-specified filename prefix \"".
                     "$dir_prefix\"\n");
+               $dir_prefix =~ s/\/+$//;
        }
 
        # Read in test description file if specified
@@ -1239,6 +1411,10 @@
 #        "func"  -> \%funcdata
 #        "found" -> $lines_found (number of instrumented lines found in file)
 #       "hit"   -> $lines_hit (number of executed lines in file)
+#        "f_found" -> $fn_found (number of instrumented functions found in 
file)
+#       "f_hit"   -> $fn_hit (number of executed functions in file)
+#        "b_found" -> $br_found (number of instrumented branches found in file)
+#       "b_hit"   -> $br_hit (number of executed branches in file)
 #        "check" -> \%checkdata
 #        "testfnc" -> \%testfncdata
 #        "sumfnc"  -> \%sumfnccount
@@ -1662,8 +1838,8 @@
 
 sub add_counts($$)
 {
-       my %data1 = %{$_[0]};   # Hash 1
-       my %data2 = %{$_[1]};   # Hash 2
+       my $data1_ref = $_[0];  # Hash 1
+       my $data2_ref = $_[1];  # Hash 2
        my %result;             # Resulting hash
        my $line;               # Current line iteration scalar
        my $data1_count;        # Count of line in hash1
@@ -1671,10 +1847,10 @@
        my $found = 0;          # Total number of lines found
        my $hit = 0;            # Number of lines with a count > 0
 
-       foreach $line (keys(%data1))
+       foreach $line (keys(%$data1_ref))
        {
-               $data1_count = $data1{$line};
-               $data2_count = $data2{$line};
+               $data1_count = $data1_ref->{$line};
+               $data2_count = $data2_ref->{$line};
 
                # Add counts if present in both hashes
                if (defined($data2_count)) { $data1_count += $data2_count; }
@@ -1686,14 +1862,14 @@
                if ($data1_count > 0) { $hit++; }
        }
 
-       # Add lines unique to data2
-       foreach $line (keys(%data2))
+       # Add lines unique to data2_ref
+       foreach $line (keys(%$data2_ref))
        {
-               # Skip lines already in data1
-               if (defined($data1{$line})) { next; }
+               # Skip lines already in data1_ref
+               if (defined($data1_ref->{$line})) { next; }
 
-               # Copy count from data2
-               $result{$line} = $data2{$line};
+               # Copy count from data2_ref
+               $result{$line} = $data2_ref->{$line};
 
                $found++;
                if ($result{$line} > 0) { $hit++; }
@@ -2348,6 +2524,9 @@
                # Match lines beginning with TD:<whitespace(s)>
                if (/^TD:\s+(.*?)\s*$/)
                {
+                       if (!defined($test_name)) {
+                               die("ERROR: Found test description without 
prior test name in $_[0]:$.\n");
+                       }
                        # Check for empty line
                        if ($1)
                        {
@@ -2415,10 +2594,15 @@
        my $year;
        my $month;
        my $day;
+       my $hour;
+       my $min;
+       my $sec;
 
-       ($year, $month, $day) = (localtime())[5, 4, 3];
+       ($year, $month, $day, $hour, $min, $sec) =
+               (localtime())[5, 4, 3, 2, 1, 0];
 
-       return sprintf("%d-%02d-%02d", $year+1900, $month+1, $day);
+       return sprintf("%d-%02d-%02d %02d:%02d:%02d", $year+1900, $month+1,
+                      $day, $hour, $min, $sec);
 }
 
 
@@ -2475,8 +2659,10 @@
 
        foreach $test_name (sort(keys(%description)))
        {
-               write_test_table_entry(*HTML_HANDLE, $test_name,
-                                      escape_html($description{$test_name}));
+               my $desc = $description{$test_name};
+
+               $desc = escape_html($desc) if (!$rc_desc_html);
+               write_test_table_entry(*HTML_HANDLE, $test_name, $desc);
        }
 
        write_test_table_epilog(*HTML_HANDLE);
@@ -4273,7 +4459,11 @@
                if ($func_coverage) {
                        $view .= "<span style=\"font-size: 80%;\">";
                        if ($type == $HDR_SOURCE) {
-                               $view .= " (source / <a 
href=\"$base_name.func.$html_ext\">functions</a>)";
+                               if ($sort) {
+                                       $view .= " (source / <a 
href=\"$base_name.func-sort-c.$html_ext\">functions</a>)";
+                               } else {
+                                       $view .= " (source / <a 
href=\"$base_name.func.$html_ext\">functions</a>)";
+                               }
                        } elsif ($type == $HDR_FUNC) {
                                $view .= " (<a 
href=\"$base_name.gcov.$html_ext\">source</a> / functions)";
                        }
@@ -4852,6 +5042,7 @@
 
        # Retrieve data from vector
        $block  = vec($vec, $offset + $BR_BLOCK, $BR_VEC_WIDTH);
+       $block = -1 if ($block == $BR_VEC_MAX);
        $branch = vec($vec, $offset + $BR_BRANCH, $BR_VEC_WIDTH);
        $taken  = vec($vec, $offset + $BR_TAKEN, $BR_VEC_WIDTH);
 
@@ -4877,10 +5068,12 @@
        my $i;
 
        $vec = "" if (!defined($vec));
+       $block = $BR_VEC_MAX if $block < 0;
 
        # Check if branch already exists in vector
        for ($i = 0; $i < $num; $i++) {
                my ($v_block, $v_branch, $v_taken) = br_ivec_get($vec, $i);
+               $v_block = $BR_VEC_MAX if $v_block < 0;
 
                next if ($v_block != $block || $v_branch != $branch);
 
@@ -5136,8 +5329,10 @@
        if ($type == 0) {
                return sort(keys(%{$funcdata}));
        }
-       return sort({$sumfncdata->{$b} <=> $sumfncdata->{$a}}
-                   keys(%{$sumfncdata}));
+       return sort({
+               $sumfncdata->{$b} == $sumfncdata->{$a} ?
+                       $a cmp $b : $sumfncdata->{$a} <=> $sumfncdata->{$b}
+               } keys(%{$sumfncdata}));
 }
 
 #
@@ -5194,12 +5389,7 @@
                my $count = $sumfncdata->{$name};
                my $countstyle;
 
-               # Demangle C++ function names if requested
-               if ($demangle_cpp) {
-                       $name = `c++filt "$name"`;
-                       chomp($name);
-               }
-               # Escape any remaining special characters
+               # Escape special characters
                $name = escape_html($name);
                if ($startline < 1) {
                        $startline = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/bin/geninfo new/lcov-1.11/bin/geninfo
--- old/lcov-1.10/bin/geninfo   2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/bin/geninfo   2014-05-23 11:03:45.000000000 +0200
@@ -61,7 +61,7 @@
 }
 
 # Constants
-our $lcov_version      = 'LCOV version 1.10';
+our $lcov_version      = 'LCOV version 1.11';
 our $lcov_url          = "http://ltp.sourceforge.net/coverage/lcov.php";;
 our $gcov_tool         = "gcov";
 our $tool_name         = basename($0);
@@ -88,6 +88,11 @@
 our $EXCL_STOP = "LCOV_EXCL_STOP";
 our $EXCL_LINE = "LCOV_EXCL_LINE";
 
+# Marker to exclude branch coverage but keep function and line coveage
+our $EXCL_BR_START = "LCOV_EXCL_BR_START";
+our $EXCL_BR_STOP = "LCOV_EXCL_BR_STOP";
+our $EXCL_BR_LINE = "LCOV_EXCL_BR_LINE";
+
 # Compatibility mode values
 our $COMPAT_VALUE_OFF  = 0;
 our $COMPAT_VALUE_ON   = 1;
@@ -140,8 +145,9 @@
 our $BR_TAKEN          = 3;
 our $BR_VEC_ENTRIES    = 4;
 our $BR_VEC_WIDTH      = 32;
+our $BR_VEC_MAX                = vec(pack('b*', 1 x $BR_VEC_WIDTH), 0, 
$BR_VEC_WIDTH);
 
-our $UNNAMED_BLOCK     = 9999;
+our $UNNAMED_BLOCK     = -1;
 
 # Prototypes
 sub print_usage(*);
@@ -266,8 +272,8 @@
 # Prettify version string
 $lcov_version =~ s/\$\s*Revision\s*:?\s*(\S+)\s*\$/$1/;
 
-# Set LANG so that gcov output will be in a unified format
-$ENV{"LANG"} = "C";
+# Set LC_ALL so that gcov output will be in a unified format
+$ENV{"LC_ALL"} = "C";
 
 # Check command line for a configuration file name
 Getopt::Long::Configure("pass_through", "no_auto_abbrev");
@@ -275,6 +281,16 @@
           "rc=s%" => \%opt_rc);
 Getopt::Long::Configure("default");
 
+# Remove spaces around rc options
+while (my ($key, $value) = each(%opt_rc)) {
+       delete($opt_rc{$key});
+
+       $key =~ s/^\s+|\s+$//g;
+       $value =~ s/^\s+|\s+$//g;
+
+       $opt_rc{$key} = $value;
+}
+
 # Read configuration file if available
 if (defined($opt_config_file)) {
        $config = read_config($opt_config_file);
@@ -684,8 +700,11 @@
 
                @file_list = `find "$directory" $maxdepth $follow -name \\*$ext 
-type f 2>/dev/null`;
                chomp(@file_list);
-               @file_list or
-                       die("ERROR: no $ext files found in $directory!\n");
+               if (!@file_list) {
+                       warn("WARNING: no $ext files found in $directory - ".
+                            "skipping!\n");
+                       return;
+               }
                $prefix = get_common_prefix(1, @file_list);
                info("Found %d %s files in %s\n", $#file_list+1, $type,
                     $directory);
@@ -861,7 +880,6 @@
        my $source;             # gcov source header information
        my $object;             # gcov object header information
        my @matches;            # List of absolute paths matching filename
-       my @unprocessed;        # List of unprocessed source code files
        my $base_dir;           # Base directory for current file
        my @tmp_links;          # Temporary links to be cleaned up
        my @result;
@@ -1057,7 +1075,6 @@
 
        # Traverse the list of generated .gcov files and combine them into a
        # single .info file
-       @unprocessed = keys(%{$instr});
        foreach $gcov_file (sort(@gcov_list))
        {
                my $i;
@@ -1140,16 +1157,6 @@
                                                \@matches, \@gcov_content);
                }
 
-               # Remove processed file from list
-               for ($index = scalar(@unprocessed) - 1; $index >= 0; $index--)
-               {
-                       if ($unprocessed[$index] eq $source_filename)
-                       {
-                               splice(@unprocessed, $index, 1);
-                               last;
-                       }
-               }
-
                # Skip external files if requested
                if (!$opt_external) {
                        if (is_external($source_filename)) {
@@ -1246,6 +1253,7 @@
                        my ($line, $block, $branch, $taken) =
                                br_gvec_get($gcov_branches, $i);
 
+                       $block = $BR_VEC_MAX if ($block < 0);
                        print(INFO_HANDLE "BRDA:$line,$block,$branch,$taken\n");
                        $br_found++;
                        $br_hit++ if ($taken ne '-' && $taken > 0);
@@ -1294,16 +1302,6 @@
                unlink($gcov_file);
        }
 
-       # Check for files which show up in the graph file but were never
-       # processed
-       if (@unprocessed && @gcov_list)
-       {
-               foreach (@unprocessed)
-               {
-                       warn("WARNING: no data found for $_\n");
-               }
-       }
-
        if (!($output_filename && ($output_filename eq "-")))
        {
                close(INFO_HANDLE);
@@ -1600,6 +1598,7 @@
        # Retrieve data from vector
        $line   = vec($vec, $offset + $BR_LINE, $BR_VEC_WIDTH);
        $block  = vec($vec, $offset + $BR_BLOCK, $BR_VEC_WIDTH);
+       $block = -1 if ($block == $BR_VEC_MAX);
        $branch = vec($vec, $offset + $BR_BRANCH, $BR_VEC_WIDTH);
        $taken  = vec($vec, $offset + $BR_TAKEN, $BR_VEC_WIDTH);
 
@@ -1627,6 +1626,7 @@
 
        $vec = "" if (!defined($vec));
        $offset = br_gvec_len($vec) * $BR_VEC_ENTRIES;
+       $block = $BR_VEC_MAX if $block < 0;
 
        # Encode taken value into an integer
        if ($taken eq "-") {
@@ -1676,6 +1676,8 @@
        my $number;
        my $exclude_flag = 0;
        my $exclude_line = 0;
+       my $exclude_br_flag = 0;
+       my $exclude_branch = 0;
        my $last_block = $UNNAMED_BLOCK;
        my $last_line = 0;
        local *INPUT;
@@ -1702,11 +1704,13 @@
                        if (/^branch\s+(\d+)\s+taken\s+=\s+(\d+)/) {
                                next if (!$br_coverage);
                                next if ($exclude_line);
+                               next if ($exclude_branch);
                                $branches = br_gvec_push($branches, $last_line,
                                                $last_block, $1, $2);
                        } elsif (/^branch\s+(\d+)\s+never\s+executed/) {
                                next if (!$br_coverage);
                                next if ($exclude_line);
+                               next if ($exclude_branch);
                                $branches = br_gvec_push($branches, $last_line,
                                                $last_block, $1, '-');
                        }
@@ -1730,6 +1734,19 @@
                                                $exclude_line = 0;
                                        }
                                }
+                               # Check for exclusion markers (branch exclude)
+                               if (!$no_markers) {
+                                       if (/$EXCL_BR_STOP/) {
+                                               $exclude_br_flag = 0;
+                                       } elsif (/$EXCL_BR_START/) {
+                                               $exclude_br_flag = 1;
+                                       }
+                                       if (/$EXCL_BR_LINE/ || 
$exclude_br_flag) {
+                                               $exclude_branch = 1;
+                                       } else {
+                                               $exclude_branch = 0;
+                                       }
+                               }
                                # Source code execution data
                                if (/^\t\t(.*)$/)
                                {
@@ -1775,11 +1792,13 @@
                        } elsif (/^branch\s+(\d+)\s+taken\s+(\d+)/) {
                                next if (!$br_coverage);
                                next if ($exclude_line);
+                               next if ($exclude_branch);
                                $branches = br_gvec_push($branches, $last_line,
                                                $last_block, $1, $2);
                        } elsif (/^branch\s+(\d+)\s+never\s+executed/) {
                                next if (!$br_coverage);
                                next if ($exclude_line);
+                               next if ($exclude_branch);
                                $branches = br_gvec_push($branches, $last_line,
                                                $last_block, $1, '-');
                        }
@@ -1814,6 +1833,20 @@
                                                $exclude_line = 0;
                                        }
                                }
+                               # Check for exclusion markers (branch exclude)
+                               if (!$no_markers) {
+                                       if (/$EXCL_BR_STOP/) {
+                                               $exclude_br_flag = 0;
+                                       } elsif (/$EXCL_BR_START/) {
+                                               $exclude_br_flag = 1;
+                                       }
+                                       if (/$EXCL_BR_LINE/ || 
$exclude_br_flag) {
+                                               $exclude_branch = 1;
+                                       } else {
+                                               $exclude_branch = 0;
+                                       }
+                               }
+
                                # <exec count>:<line number>:<source code>
                                if ($line eq "0")
                                {
@@ -1833,7 +1866,7 @@
                                                push(@result, 0);
                                        } else {
                                                # Check for zero count
-                                               if ($count eq "#####") {
+                                               if ($count =~ /^[#=]/) {
                                                        $count = 0;
                                                }
                                                push(@result, 1);
@@ -1846,7 +1879,7 @@
        }
 
        close(INPUT);
-       if ($exclude_flag) {
+       if ($exclude_flag || $exclude_br_flag) {
                warn("WARNING: unterminated exclusion section in $filename\n");
        }
        return(\@result, $branches, \@functions);
@@ -1865,11 +1898,21 @@
        my $version_string;
        my $result;
 
-       open(GCOV_PIPE, "-|", "$gcov_tool -v")
+       open(GCOV_PIPE, "-|", "$gcov_tool --version")
                or die("ERROR: cannot retrieve gcov version!\n");
        $version_string = <GCOV_PIPE>;
+       # LLVM gcov keeps version information on the second line.
+       # For example, gcov --version yields:
+       # LLVM (http://llvm.org/):
+       #   LLVM version 3.4svn
+       $version_string = <GCOV_PIPE> if ($version_string =~ /LLVM/);
        close(GCOV_PIPE);
 
+       # Remove version information in parenthesis to cope with the following:
+       # - gcov (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
+       # - gcov (crosstool-NG 1.18.0) 4.7.2
+       $version_string =~ s/\([^\)]*\)//g;
+
        $result = 0;
        if ($version_string =~ /(\d+)\.(\d+)(\.(\d+))?/)
        {
@@ -1884,6 +1927,21 @@
                        $result = $1 << 16 | $2 << 8;
                }
        }
+       if ($version_string =~ /LLVM/)
+       {
+               # Map LLVM versions to the version of GCC gcov which
+               # they emulate
+               if ($result >= 0x030400)
+               {
+                       info("Found LLVM gcov version 3.4, which emulates gcov 
version 4.2\n");
+                       $result = 0x040200;
+               }
+               else
+               {
+                       warn("This version of LLVM's gcov is unknown.  Assuming 
it emulates GCC gcov version 4.2.\n");
+                       $result = 0x040200;
+               }
+       }
        return ($result, $version_string);
 }
 
@@ -2285,6 +2343,15 @@
                my $line;
                my $linedata;
 
+               # Skip external files if requested
+               if (!$opt_external) {
+                       if (is_external($filename)) {
+                               info("  ignoring data for external file ".
+                                    "$filename\n");
+                               next;
+                       }
+               }
+
                print(INFO_HANDLE "SF:$filename\n");
 
                if (defined($funcdata) && $func_coverage) {
@@ -3341,9 +3408,11 @@
        my $fileorder = {};
        my $instr;
        my $graph;
+       my $filelength;
        local *HANDLE;
 
        open(HANDLE, "<", $gcno_filename) or goto open_error;
+       $filelength = (stat(HANDLE))[7];
        binmode(HANDLE);
        # Read magic
        $word = read_gcno_word(*HANDLE, "file magic");
@@ -3375,6 +3444,14 @@
                $next_pos = tell(HANDLE);
                goto tell_error if ($next_pos == -1);
                $next_pos += $length;
+               # Catch garbage at the end of a gcno file
+               if ($next_pos > $filelength) {
+                       debug("Overlong record: file_length=$filelength ".
+                             "rec_length=$length\n");
+                       warn("WARNING: $gcno_filename: Overlong record at end ".
+                            "of file!\n");
+                       last;
+               }
                # Process record
                if ($tag == $tag_function) {
                        ($filename, $function) = read_gcno_function_record(
@@ -3443,15 +3520,36 @@
 {
        my $help = `$gcov_tool --help`;
        my %capabilities;
+       my %short_option_translations = (
+               'a' => 'all-blocks',
+               'b' => 'branch-probabilities',
+               'c' => 'branch-counts',
+               'f' => 'function-summaries',
+               'h' => 'help',
+               'l' => 'long-file-names',
+               'n' => 'no-output',
+               'o' => 'object-directory',
+               'p' => 'preserve-paths',
+               'u' => 'unconditional-branches',
+               'v' => 'version',
+       );
 
        foreach (split(/\n/, $help)) {
-               next if (!/--(\S+)/);
-               next if ($1 eq 'help');
-               next if ($1 eq 'version');
-               next if ($1 eq 'object-directory');
+               my $capability;
+               if (/--(\S+)/) {
+                       $capability = $1;
+               } else {
+                       # If the line provides a short option, translate it.
+                       next if (!/^\s*-(\S)\s/);
+                       $capability = $short_option_translations{$1};
+                       next if not defined($capability);
+               }
+               next if ($capability eq 'help');
+               next if ($capability eq 'version');
+               next if ($capability eq 'object-directory');
 
-               $capabilities{$1} = 1;
-               debug("gcov has capability '$1'\n");
+               $capabilities{$capability} = 1;
+               debug("gcov has capability '$capability'\n");
        }
 
        return \%capabilities;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/bin/genpng new/lcov-1.11/bin/genpng
--- old/lcov-1.10/bin/genpng    2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/bin/genpng    2014-05-23 11:03:45.000000000 +0200
@@ -35,7 +35,7 @@
 
 
 # Constants
-our $lcov_version      = 'LCOV version 1.10';
+our $lcov_version      = 'LCOV version 1.11';
 our $lcov_url          = "http://ltp.sourceforge.net/coverage/lcov.php";;
 our $tool_name         = basename($0);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/bin/lcov new/lcov-1.11/bin/lcov
--- old/lcov-1.10/bin/lcov      2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/bin/lcov      2014-05-23 11:03:45.000000000 +0200
@@ -71,7 +71,7 @@
 
 
 # Global constants
-our $lcov_version      = 'LCOV version 1.10';
+our $lcov_version      = 'LCOV version 1.11';
 our $lcov_url          = "http://ltp.sourceforge.net/coverage/lcov.php";;
 our $tool_name         = basename($0);
 
@@ -93,6 +93,7 @@
 our $BR_TAKEN          = 2;
 our $BR_VEC_ENTRIES    = 3;
 our $BR_VEC_WIDTH      = 32;
+our $BR_VEC_MAX                = vec(pack('b*', 1 x $BR_VEC_WIDTH), 0, 
$BR_VEC_WIDTH);
 
 # Branch data combination types
 our $BR_SUB = 0;
@@ -228,6 +229,16 @@
           "rc=s%" => \%opt_rc);
 Getopt::Long::Configure("default");
 
+# Remove spaces around rc options
+while (my ($key, $value) = each(%opt_rc)) {
+       delete($opt_rc{$key});
+
+       $key =~ s/^\s+|\s+$//g;
+       $value =~ s/^\s+|\s+$//g;
+
+       $opt_rc{$key} = $value;
+}
+
 # Read configuration file if available
 if (defined($opt_config_file)) {
        $config = read_config($opt_config_file);
@@ -879,6 +890,9 @@
                        @param = (@param, "--rc", "$key=".$opt_rc{$key});
                }
        }
+       if (defined($opt_config_file)) {
+               @param = (@param, "--config-file", $opt_config_file);
+       }
 
        system(@param) and exit($? >> 8);
 }
@@ -1459,10 +1473,12 @@
        my $i;
 
        $vec = "" if (!defined($vec));
+       $block = $BR_VEC_MAX if $block < 0;
 
        # Check if branch already exists in vector
        for ($i = 0; $i < $num; $i++) {
                my ($v_block, $v_branch, $v_taken) = br_ivec_get($vec, $i);
+               $v_block = $BR_VEC_MAX if $v_block < 0;
 
                next if ($v_block != $block || $v_branch != $branch);
 
@@ -1499,6 +1515,7 @@
 
        # Retrieve data from vector
        $block  = vec($vec, $offset + $BR_BLOCK, $BR_VEC_WIDTH);
+       $block = -1 if ($block == $BR_VEC_MAX);
        $branch = vec($vec, $offset + $BR_BRANCH, $BR_VEC_WIDTH);
        $taken  = vec($vec, $offset + $BR_TAKEN, $BR_VEC_WIDTH);
 
@@ -1554,6 +1571,10 @@
 #        "func"  -> \%funcdata
 #        "found" -> $lines_found (number of instrumented lines found in file)
 #       "hit"   -> $lines_hit (number of executed lines in file)
+#        "f_found" -> $fn_found (number of instrumented functions found in 
file)
+#       "f_hit"   -> $fn_hit (number of executed functions in file)
+#        "b_found" -> $br_found (number of instrumented branches found in file)
+#       "b_hit"   -> $br_hit (number of executed branches in file)
 #        "check" -> \%checkdata
 #        "testfnc" -> \%testfncdata
 #        "sumfnc"  -> \%sumfnccount
@@ -1979,8 +2000,8 @@
 
 sub add_counts($$)
 {
-       my %data1 = %{$_[0]};   # Hash 1
-       my %data2 = %{$_[1]};   # Hash 2
+       my $data1_ref = $_[0];  # Hash 1
+       my $data2_ref = $_[1];  # Hash 2
        my %result;             # Resulting hash
        my $line;               # Current line iteration scalar
        my $data1_count;        # Count of line in hash1
@@ -1988,10 +2009,10 @@
        my $found = 0;          # Total number of lines found
        my $hit = 0;            # Number of lines with a count > 0
 
-       foreach $line (keys(%data1))
+       foreach $line (keys(%$data1_ref))
        {
-               $data1_count = $data1{$line};
-               $data2_count = $data2{$line};
+               $data1_count = $data1_ref->{$line};
+               $data2_count = $data2_ref->{$line};
 
                # Add counts if present in both hashes
                if (defined($data2_count)) { $data1_count += $data2_count; }
@@ -2003,14 +2024,14 @@
                if ($data1_count > 0) { $hit++; }
        }
 
-       # Add lines unique to data2
-       foreach $line (keys(%data2))
+       # Add lines unique to data2_ref
+       foreach $line (keys(%$data2_ref))
        {
-               # Skip lines already in data1
-               if (defined($data1{$line})) { next; }
+               # Skip lines already in data1_ref
+               if (defined($data1_ref->{$line})) { next; }
 
-               # Copy count from data2
-               $result{$line} = $data2{$line};
+               # Copy count from data2_ref
+               $result{$line} = $data2_ref->{$line};
 
                $found++;
                if ($result{$line} > 0) { $hit++; }
@@ -2615,6 +2636,7 @@
                                        my ($block, $branch, $taken) =
                                                br_ivec_get($brdata, $i);
 
+                                       $block = $BR_VEC_MAX if ($block < 0);
                                        print(INFO_HANDLE "BRDA:$line,$block,".
                                              "$branch,$taken\n");
                                        $br_found++;
@@ -3707,10 +3729,10 @@
 
        # Remove count data in testfncdata for functions which are no longer
        # in funcdata
-       foreach $testname (%{$testfncdata}) {
+       foreach $testname (keys(%{$testfncdata})) {
                my $fnccount = $testfncdata->{$testname};
 
-               foreach $func (%{$fnccount}) {
+               foreach $func (keys(%{$fnccount})) {
                        if (!defined($funcdata->{$func})) {
                                delete($fnccount->{$func});
                        }
@@ -3718,7 +3740,7 @@
        }
        # Remove count data in sumfnccount for functions which are no longer
        # in funcdata
-       foreach $func (%{$sumfnccount}) {
+       foreach $func (keys(%{$sumfnccount})) {
                if (!defined($funcdata->{$func})) {
                        delete($sumfnccount->{$func});
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/lcovrc new/lcov-1.11/lcovrc
--- old/lcov-1.10/lcovrc        2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/lcovrc        2014-05-23 11:03:45.000000000 +0200
@@ -90,6 +90,9 @@
 # Specify the character set of all generated HTML pages
 genhtml_charset=UTF-8
 
+# Allow HTML markup in test case description text if non-zero
+genhtml_desc_html=0
+
 # Location of the gcov tool (same as --gcov-info option of geninfo)
 #geninfo_gcov_tool = gcov
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/gendesc.1 new/lcov-1.11/man/gendesc.1
--- old/lcov-1.10/man/gendesc.1 2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/gendesc.1 2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH gendesc 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH gendesc 1 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 .SH NAME
 gendesc \- Generate a test case description file
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/genhtml.1 new/lcov-1.11/man/genhtml.1
--- old/lcov-1.10/man/genhtml.1 2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/genhtml.1 2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH genhtml 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH genhtml 1 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 .SH NAME
 genhtml \- Generate HTML view from LCOV coverage data files
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/geninfo.1 new/lcov-1.11/man/geninfo.1
--- old/lcov-1.10/man/geninfo.1 2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/geninfo.1 2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH geninfo 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH geninfo 1 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 .SH NAME
 geninfo \- Generate tracefiles from .da files
 .SH SYNOPSIS
@@ -74,8 +74,10 @@
 .B Exclusion markers
 
 To exclude specific lines of code from a tracefile, you can add exclusion
-markers to the source code. Exclusion markers are keywords which can for
-example be added in the form of a comment.
+markers to the source code. Additionally you can exclude specific branches from
+branch coverage without excluding the involved lines from line and function
+coverage. Exclusion markers are keywords which can for example be added in the
+form of a comment.
 
 The following markers are recognized by geninfo:
 
@@ -96,6 +98,23 @@
 section.
 .RE
 .br
+LCOV_EXCL_BR_LINE
+.RS
+Lines containing this marker will be excluded from branch coverage.
+.br
+.RE
+LCOV_EXCL_BR_START
+.RS
+Marks the beginning of a section which is excluded from branch coverage. The
+current line is part of this section.
+.br
+.RE
+LCOV_EXCL_BR_STOP
+.RS
+Marks the end of a section which is excluded from branch coverage. The current
+line not part of this section.
+.RE
+.br
 
 .SH OPTIONS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/genpng.1 new/lcov-1.11/man/genpng.1
--- old/lcov-1.10/man/genpng.1  2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/genpng.1  2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH genpng 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH genpng 1 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 .SH NAME
 genpng \- Generate an overview image from a source file
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/lcov.1 new/lcov-1.11/man/lcov.1
--- old/lcov-1.10/man/lcov.1    2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/lcov.1    2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH lcov 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH lcov 1 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 .SH NAME
 lcov \- a graphical GCOV front\-end
 .SH SYNOPSIS
@@ -573,6 +573,9 @@
 
 .B source:
 the source code file for a data set could not be found.
+
+.B graph:
+the graph file could not be found or is corrupted.
 .RE
 
 .B \-i
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/man/lcovrc.5 new/lcov-1.11/man/lcovrc.5
--- old/lcov-1.10/man/lcovrc.5  2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/man/lcovrc.5  2014-05-23 11:03:45.000000000 +0200
@@ -1,4 +1,4 @@
-.TH lcovrc 5 "LCOV 1.10" 2012\-10\-10 "User Manuals"
+.TH lcovrc 5 "LCOV 1.11" 2014\-05\-23 "User Manuals"
 
 .SH NAME
 lcovrc \- lcov configuration file
@@ -149,6 +149,11 @@
 genhtml_charset=UTF\-8
 .br
 
+# Allow HTML markup in test case description text if non\-zero
+.br
+genhtml_desc_html=0
+.br
+
 # Location of the gcov tool
 .br
 #geninfo_gcov_tool = gcov
@@ -546,6 +551,21 @@
 
 Default is UTF-8.
 .PP
+
+.BR genhtml_desc_html " ="
+.IR 0 | 1
+.IP
+If non-zero, test case descriptions may contain HTML markup.
+
+Set this option to one if you want to embed HTML markup (for example to
+include links) in test case descriptions. When set to zero, HTML markup
+characters will be escaped to show up as plain text on the test case
+description page.
+.br
+
+Default is 0.
+.PP
+.
 .BR geninfo_gcov_tool " ="
 .I path_to_gcov
 .IP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lcov-1.10/rpm/lcov.spec new/lcov-1.11/rpm/lcov.spec
--- old/lcov-1.10/rpm/lcov.spec 2012-10-10 11:15:55.000000000 +0200
+++ new/lcov-1.11/rpm/lcov.spec 2014-05-23 11:03:45.000000000 +0200
@@ -1,6 +1,6 @@
 Summary: A graphical GCOV front-end
 Name: lcov
-Version: 1.10
+Version: 1.11
 Release: 1
 License: GPL
 Group: Development/Tools

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to