V2 Add DWARF support to the rtemstoolkit and put it to use.
Chris Johns
chrisj at rtems.org
Thu May 10 10:47:59 UTC 2018
On 10/5/18 2:43 pm, Chris Johns wrote:
> On 10/5/18 8:47 am, Cillian O'Donnell wrote:
>>
>> --------------------
>> GDB
>> --------------------
>>
>> (gdb) bt
>> #0 0x00007ffff74aa428 in __GI_raise (sig=sig at entry=6)
>> at ../sysdeps/unix/sysv/linux/raise.c:54
>> #1 0x00007ffff74ac02a in __GI_abort () at abort.c:89
>> #2 0x00007ffff7ae484d in __gnu_cxx::__verbose_terminate_handler() ()
>> from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
>> #3 0x00007ffff7ae26b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
>> #4 0x00007ffff7ae2701 in std::terminate() ()
>> from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
>> #5 0x00007ffff7ae2919 in __cxa_throw ()
>> from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
>> #6 0x000000000042ad4a in rld::dwarf::address::path[abi:cxx11]() const (
>> this=this at entry=0x7fffffffcc10) at ../rtemstoolkit/rld-dwarf.cpp:129
>> #7 0x000000000042dfad in rld::dwarf::file::get_source (this=this at entry=0x6be568,
>> addr=<optimized out>, source_file="unknown", source_line=@0x7fffffffccdc: -1)
>> at ../rtemstoolkit/rld-dwarf.cpp:860
>> #8 0x000000000040d541 in Coverage::ExecutableInfo::getSourceAndLine (
>> this=this at entry=0x6be3c0, address=<optimized out>, line="")
>> at ../tester/covoar/ExecutableInfo.cc:134
>> #9 0x000000000040a115 in Coverage::DesiredSymbols::determineSourceLines (
>> this=this at entry=0xafee70, theRanges=theRanges at entry=0xd626f0,
>> theExecutable=0x6be3c0) at ../tester/covoar/DesiredSymbols.cc:411
>> #10 0x000000000040a24f in Coverage::DesiredSymbols::findSourceForUncovered (
>> this=0xafee70) at ../tester/covoar/DesiredSymbols.cc:440
>> #11 0x0000000000406028 in main (argc=<optimized out>, argv=<optimized out>)
>> at ../tester/covoar/covoar.cc:526
>
> This looks like an exception being thrown in a destructor path.
>
I can reproduce this on MacOS with the hello.cov file. Thank you for it.
It is not a exception in an exception or in a stack unwind path, it is an
exception being thrown with no catch.
The covoar `main()` is like C with return vales, stderr prints and exits or
there are calls to exit in some paths taken from main. The RLD code expects a
top level single catch which prints a message to stderr then exits. It is mixing
this these two approaches which resulted in no catch. I am so use to not needing
to think about it. Maybe I should look at main and clean it up.
I also need to figure out why the address has lost it's reference to the source
table.
Chris
More information about the devel
mailing list