Hi Serg,
thanks for your review.


> +
> +my $gcc_version= `gcc -dumpversion`;
> +$gcc_version=~ s/(\d).*$/$1/;

you don't need this second line, I suspect


It is not unique for all versions, that's why I used it:

$ for i in 5 6 7 9 10; do $(/usr/bin/gcc-$i -dumpversion); done
5.5.0: command not found
6.5.0: command not found
7: command not found
9: command not found
10: command not found
 
and write `my $fname` here

> +      for my $line (@{$file->{lines}}){
> +        $cov{$fname}->{$line->{line_number}}= $line->{count};

shouldn't it be += $line->{count} ?
The point is to accumulate all counters, see how it's done for non-json
intermediate format.

> +      }
> +    }
>    }
>  }

Have seen  and I'm not sure how it accumulates since per line "line_number" value is different (I haven't seen 'lcount' to have the same line_number), so the hash is different and += doesn't take effect.
Confirmed that I'm getting the same result with/without += for both versions ( since line number is a function of  the counter (one to one relationship) ?)
Maybe to remove += from gcc < 9.1 ?
gcov 7.5:
$ cat sql_show.cc.gcda##field.h.gcov

lcount:847,20 # this line : line_number=847, count = 20
lcount:848,20 # not the same as this one, line_number=848, 20
lcount:851,0
lcount:852,0
lcount:878,0
lcount:981,1181

gcov 9.4:
$ cat <some.gcda.gcov file>
        "lines" : [
            {
               "unexecuted_block" : false,
               "function_name" : "sum",
               "count" : 1,
               "branches" : [],
               "line_number" : 3  # this line
            },
            {
               "function_name" : "sum",
               "unexecuted_block" : false,
               "count" : 1,
               "line_number" : 5, # is not the same as this line
               "branches" : []
            }
         ],

However I'm confirming that there is different result in counter for the same test and I'm suspecting it is the result of generated parsing between gcov versions:
gcov 7.5 ( counter = 88):
*********************
dgcov sql/sql_show.cc
*********************
@@ +6601,7 @@ static int get_check_constraints_record(THD *thd, TABLE_LIST *tables,
         : 6601:      }
         : 6602:#endif
         : 6603:      Virtual_column_info *check= tables->table->check_constraints[i];
       88: 6605:      table->field[0]->store(STRING_WITH_LEN("definition"), system_charset_info);
         : 6606:      table->field[3]->store(check->name.str, check->name.length,
         : 6607:                             system_charset_info);

gcov 9.4 ( counter = 44):
*********************
dgcov sql/sql_show.cc
*********************
@@ +6601,7 @@ static int get_check_constraints_record(THD *thd, TABLE_LIST *tables,
         : 6601:      }
         : 6602:#endif
         : 6603:      Virtual_column_info *check= tables->table->check_constraints[i];
       44: 6605:      table->field[0]->store(STRING_WITH_LEN("definition"), system_charset_info);
         : 6606:      table->field[3]->store(check->name.str, check->name.length,
         : 6607:                             system_charset_info);

Regards,
Anel 
_____________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp