<div dir="ltr"><div><div><div><div>Just running covoar there, we seem to be running into some problems at the source line lookup stage<br><br>cpod@cpod ~/development/rtems/leon3 $ covoar -S /home/cpod/development/rtems/test/rtems-tools/tester/rtems/testing/coverage/score-symbols.ini -O /home/cpod/coverage_test/test/score -E/home/cpod/development/rtems/test/rtems-tools/tester/rtems/testing/coverage/Explanations.txt -p RTEMS-5 -v sparc-rtems5/c/leon3/testsuites/samples/hello/hello.exe<br>Processing multiple executable/coverage file pairs<br>Coverage Format : html<br>Target          : sparc-rtems5<br><br>Coverage file sparc-rtems5/c/leon3/testsuites/samples/hello/hello.cov for executable: sparc-rtems5/c/leon3/testsuites/samples/hello/hello.exe<br>Loading symbol sets: /home/cpod/development/rtems/test/rtems-tools/tester/rtems/testing/coverage/score-symbols.ini<br> Symbol set: score<br> Loading library: sparc-rtems5/c/leon3/cpukit/score/libscore.a<br>cache:load-sym: object files: 192<br>cache:load-sym: symbols: 382<br>Analyzing 382 symbols<br>Extracting information from: sparc-rtems5/c/leon3/testsuites/samples/hello/hello.exe<br>Created unified coverage map for _RTEMS_Lock_allocator (0x0 - 0x13)<br>Created unified coverage map for _RTEMS_Unlock_allocator (0x0 - 0x13)<br>Created unified coverage map for _API_Mutex_Lock (0x0 - 0x2f)<br>Created unified coverage map for _API_Mutex_Unlock (0x0 - 0x2f)<br>Created unified coverage map for _Chain_Initialize (0x0 - 0x4f)<br>Created unified coverage map for _Freechain_Initialize (0x0 - 0x33)<br>Created unified coverage map for _Freechain_Get (0x0 - 0x77)<br>Created unified coverage map for _Freechain_Put (0x0 - 0x27)<br>Created unified coverage map for _Heap_Allocate_aligned_with_boundary (0x0 - 0x23f)<br>................<br>...............<br>...............<br>Branch always taken found in_Workspace_Handler_initialization (0x4000ab8c - 0x4000ab8f)<br>Branch never taken found in _Workspace_Handler_initialization (0x1073785764 - 0x1073785767)<br>Branch never taken found in _Workspace_Handler_initialization (0x1073785776 - 0x1073785779)<br>Calculate statistics<br>Looking up source lines for uncovered ranges and branches<br>Looking up source lines for uncovered ranges in CSWTCH.1<br>terminate called after throwing an instance of 'rld::error'<br>Aborted<br><br>--------------------<br></div>GDB <br>--------------------<br><br>(gdb) bt<br>#0  0x00007ffff74aa428 in __GI_raise (sig=sig@entry=6)<br>    at ../sysdeps/unix/sysv/linux/raise.c:54<br>#1  0x00007ffff74ac02a in __GI_abort () at abort.c:89<br>#2  0x00007ffff7ae484d in __gnu_cxx::__verbose_terminate_handler() ()<br>   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>#3  0x00007ffff7ae26b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>#4  0x00007ffff7ae2701 in std::terminate() ()<br>   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>#5  0x00007ffff7ae2919 in __cxa_throw ()<br>   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>#6  0x000000000042ad4a in rld::dwarf::address::path[abi:cxx11]() const (<br>    this=this@entry=0x7fffffffcc10) at ../rtemstoolkit/rld-dwarf.cpp:129<br>#7  0x000000000042dfad in rld::dwarf::file::get_source (this=this@entry=0x6be568, <br>    addr=<optimized out>, source_file="unknown", source_line=@0x7fffffffccdc: -1)<br>    at ../rtemstoolkit/rld-dwarf.cpp:860<br>#8  0x000000000040d541 in Coverage::ExecutableInfo::getSourceAndLine (<br>    this=this@entry=0x6be3c0, address=<optimized out>, line="")<br>    at ../tester/covoar/ExecutableInfo.cc:134<br>#9  0x000000000040a115 in Coverage::DesiredSymbols::determineSourceLines (<br>    this=this@entry=0xafee70, theRanges=theRanges@entry=0xd626f0, <br>    theExecutable=0x6be3c0) at ../tester/covoar/DesiredSymbols.cc:411<br>#10 0x000000000040a24f in Coverage::DesiredSymbols::findSourceForUncovered (<br>    this=0xafee70) at ../tester/covoar/DesiredSymbols.cc:440<br>#11 0x0000000000406028 in main (argc=<optimized out>, argv=<optimized out>)<br>    at ../tester/covoar/covoar.cc:526<br><br></div>I'll attach a trace file I'm using to debug, hopefully you can use this. It has to go with hello.exe in the build directory<br><br></div>All the best,<br><br></div>Cillian.<br><div><div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 8 May 2018 at 06:09, Chris Johns <span dir="ltr"><<a href="mailto:chrisj@rtems.org" target="_blank">chrisj@rtems.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
This is a wrap up patch of all the issues that have been raise. Thanks to<br>
the excellent debugging and teamwork in finding the linking issue on Linux,<br>
that is a really strange one to trip over.<br>
<br>
The patches:<br>
<br>
- Add a DWARF framework to the rtemstoolkit to access the<br>
  source file and line given an address in an executable. This allows<br>
  us to remove exec'ing addr2line in covoar.<br>
<br>
- Add producer support to rtems-exe-info to list the compilers used<br>
  to build the executables plus list the common flags and optionally<br>
  list all the object files with the flags that are not common.<br>
<br>
- Clean up exception handling in destructors in some places. This<br>
  avoids a terminate if an exception is thrown in an exception<br>
  unwind.<br>
<br>
Changes since v1:<br>
<br>
- Fix rld::path::path_abs() to not walk above the root directory.<br>
<br>
- Fix a memory issue with the dwarf_srcfiles(). The libdwarf we are<br>
  using manages all memory and does not need to have it dealloced<br>
  while the man pages state it should be.<br>
<br>
- Add producer support to collect and manage CU producer attributes.<br>
<br>
- Remove libgen.h from covoar and use RLD path. I have not tested<br>
  those changes.<br>
<br>
I recommend anyone shipping RTEMS executables to run rtems-exe-info over<br>
your executables and have a look. It will let you know if you are using<br>
the same compiler in all parts as well as listing the machine flags<br>
used to control GCC.<br>
<br>
Chris<br>
<br>
______________________________<wbr>_________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
</blockquote></div><br></div>