As a temporary measure, I have applied the following patch to my copy of genhtml.
This turns % genhtml --legend --demangle-cpp --output-directory html foo.info Reading data file foo.info Found 4 entries. Demangling 5 function names genhtml: ERROR: Demangled function name _ZN3subD2Ev maps to different lines (5 vs 4) into % genhtml --legend --demangle-cpp --output-directory html foo.info Reading data file foo.info Found 4 entries. Demangling 5 function names genhtml: WARNING: Demangled function name sub::~sub() maps to different lines (5 vs 4) in /home/adl/t/foo.cc Found common filename prefix "/home/adl" Writing .css and .png files. Generating output. Processing file t/foo.h Processing file t/foo.cc Processing file t/main.cc Processing file /usr/include/c++/4.9/iostream Writing directory view page. Overall coverage rate: lines......: 100.0% (8 of 8 lines) functions..: 80.0% (4 of 5 functions) even if the handling of destructors might not be correct, at least it lets us use genhtml to cover the rest of the functions.
--- /usr/bin/genhtml 2014-05-23 11:03:45.000000000 +0200 +++ genhtml 2014-06-24 10:13:39.158691632 +0200 @@ -736,10 +736,10 @@ # same demangled name. if (defined($newfuncdata{$cn}) && $newfuncdata{$cn} != $funcdata->{$fn}) { - die("ERROR: Demangled function name $fn ". + warn("WARNING: Demangled function name $cn ". " maps to different lines (". $newfuncdata{$cn}." vs ". - $funcdata->{$fn}.")\n"); + $funcdata->{$fn}.") in $filename\n"); } $newfuncdata{$cn} = $funcdata->{$fn}; }