Ticket #3515: covoar failure while running for full testsuites

Bran S archsbran at gmail.com
Fri Feb 21 07:57:34 UTC 2020


On Wed, 19 Feb 2020 at 22:51, Vijay Kumar Banerjee
<vijaykumar9597 at gmail.com> wrote:
>
>
>
> On Mon, Feb 17, 2020 at 12:08 AM Bran S <archsbran at gmail.com> wrote:
>>
>> Hi Guys,
>>
> Hi Bran!
>>
>> I am trying to understand and solve Ticket #3515.
>> https://devel.rtems.org/ticket/3515
>>
>> $ /home/user45/quick-start/rtems/5/share/rtems/tester/bin/covoar -vvvv
>> -S /home/user45/quick-start/rtems/5/share/rtems/tester/rtems/testing/coverage/leon3-sis-symbols.ini
>> -O leon3-sis-coverage -E
>> /home/user45/quick-start/rtems/5/share/rtems/tester/rtems/testing/coverage/Explanations.txt
>> -p RTEMS-5 /home/user45/quick-start/build/b-leon3/sparc-rtems5/c/leon3/testsuites/fstests/fsclose01.exe
>>
>> The output of the above command is at:
>> https://gist.github.com/archsbran/7834a931d52311c7b26842c6325d8d9a
>>
>> On the last line it can be seen that absence of `wait` symbol causes the error.
>>
>> I made some changes in ExecutableInfo.cc to print out the symbols
>> being added into coverageMap.
>> Added symbols can be seen from line 636 to 7236 at the above link.
>> In those lines we can see that `wait` is not added into coverageMap.
>>
> Great work in finding the possible issue.
>>
>> I am new so the only thing I know about covoar is that it does
>> coverage analysis.
>> Any ideas on how to move further into solving this ?
>
> I added Chris in CC, he'll be able to tell us where to look for the source
> of the error you found.
> In general, you can follow covoar.cc file, which has the main `covoar`
> function in it. That will be a good starting point.
>


Yeah, I traversed through the code in covoar.cc

It goes something like:

In covoar.cc: covar()
at line 382: objdumpProcessor->load( exe, objdumpFile, err );
Here, `exe` points to the executableinfo object, the one in which the
coverageMap was created via createCoverageMap()

Now inside objdumpProcessor->load()
at line 301: finalizeSymbol() is called which further calls
findCoverageMap() at line 35. This is the point where error occurs, as
`wait` symbol is not found.

The objdumpProcessor->load() function searches symbols in
CoverageMap(via finalizeSymbol()) according to the symbols present in
objdump generated at
line 291: getFile( executableInformation->getFileName(), objdumpFile, err );

The objdump is created using the executableinfo from which we loaded
the symbols into CoverageMap, right ?
Then is it so that the code missed out on the symbol while adding them
into CoverageMap ?


More information about the devel mailing list