HI I don't have an immediate answer but I have questions.
+ Is wait() in the Symbol Set the coverage analysis is supposed to include? If so, this error is a side-effect of a normal execution case which shouldn't be an error. We are careful that an RTEMS exe only includes the minimum symbols needed. This means that if a symbol is not needed, the linker leaves it out. covoar is going to ask for information in the exe for every symbol of interest and some/many will not be in a particular exe. It should just ignore the "symbol not found in this exe" reported by the symbol lookup. There is a bit of a degenerate case where the symbol is not in any exe. This means that covoar has never actually seen an exe with the code in it and thus cannot include it in the coverage reports. There is a special report for methods with 0 coverage. They are just listed by name. + If wait() is not in the "symbols of interest", then I have no idea why covoar is looking for it in the exe. If it's the first case, then I expect integrating the new-ish use of the ELF/DWARF library rather than executing nm and parsing the output just missed this and whoever did it thought it was an error. --joel --joel On Wed, Feb 26, 2020 at 1:06 AM Vijay Kumar Banerjee < vijaykumar9...@gmail.com> wrote: > > > On Wed, Feb 26, 2020 at 12:28 PM Vijay Kumar Banerjee < > vijaykumar9...@gmail.com> wrote: > >> >> >> On Fri, Feb 21, 2020 at 1:27 PM Bran S <archsb...@gmail.com> wrote: >> >>> On Wed, 19 Feb 2020 at 22:51, Vijay Kumar Banerjee >>> <vijaykumar9...@gmail.com> wrote: >>> > >>> > >>> > >>> > On Mon, Feb 17, 2020 at 12:08 AM Bran S <archsb...@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. >>> >>> Hi Bran, >> >> Sorry, I couldn't find time to look into the details and I was hoping >> someone >> else will join in. You are in the right direction and found the function >> that is >> getting the error. Now that you have a function to follow, I will suggest >> you to >> run gdb on covoar and follow this function, especially where it's getting >> the >> symbols. >> To run covoar on gdb do the following: >> $gdb /path/to/covoar >> (gdb) r -vvvv -S >> /home/lunatic/development/rtems/rtems-tools/tester/rtems/testing/coverage/leon3-qemu-symbols.ini >> \ >> -O leon3-qemu-coverage \ >> -E >> /home/lunatic/development/rtems/rtems-tools/tester/rtems/testing/coverage/Explanations.txt >> \ >> -p RTEMS-5 /your/exe.exe >> >> The above is just an example and you can adapt it according to your exe > and bsp. Also, since you're using leon3-sis-coverage, please also add the > option -fTSIM > >> set a breakpoint at findCoverageMap() and see what it is doing. >> Most likely, you'll be able to see where is it getting other symbols >> from and why is "wait" not there, or if it's there, why is it skipping it. >> >> Best regards, >> Vijay >> >>> 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 ? >>> >> _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel