<font size=2 face="sans-serif">Hi Mariana,</font>
<br>
<br><font size=2 face="sans-serif">happy to hear that. If you have performed
any mods on the code would you please forward them to me in, say source
code or patch format?</font>
<br>
<br>
<br><font size=2 face="sans-serif">Regards,</font>
<br>
<br><font size=2 face="sans-serif">Aitor</font>
<br>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">From:</font>
<td><font size=1 face="sans-serif">Mariana Solaro <msolaro@invap.com.ar></font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">To:</font>
<td><font size=1 face="sans-serif">Aitor.Viana.Sanchez@esa.int</font>
<tr>
<td valign=top><font size=1 color=#5f5f5f face="sans-serif">Cc:</font>
<td><font size=1 face="sans-serif">rtems-users@rtems.org, rtems-users-bounces@rtems.org</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Date:</font>
<td><font size=1 face="sans-serif">09/15/2010 02:59 PM</font>
<tr valign=top>
<td><font size=1 color=#5f5f5f face="sans-serif">Subject:</font>
<td><font size=1 face="sans-serif">Re: gcov question</font></table>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>Hello Aitor, thank you very much for your help. We used
what you gave us, and it finally worked.<br>
We are measuring the coverage using the TSIM and using the real hardware.<br>
<br>
Best regards, <br>
Mariana<br>
<br>
<br>
El 02/09/2010 11:56 a.m., </font><a href=mailto:Aitor.Viana.Sanchez@esa.int><font size=3 color=blue><u>Aitor.Viana.Sanchez@esa.int</u></font></a><font size=3>
escribió: </font>
<br><font size=2 face="sans-serif">Hi Mariana,</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
When you compile your code with -ftest-coverage and -fprofile-arcs the
compiler analyses and divides the compiled code into basic blocks. Those
blocks are one or more lines of code and each of them has a counter, added
also by the compiler. The compiled code is also instrumented with some
assembly code in order to increase the basic block counters.</font><font size=3>
<br>
</font><font size=2 face="sans-serif"><br>
The __gcov_init and __gcov_merge_add functions (among others) are missing
from the RTEMS toolchain so need to be implemented (or borrow from the
libgcov.c as they are pretty standard). The only problem you may face is
that the libgcov standard library is implemented for non-embedded systems
which means that the counters and coverage information is dumped from time
to time to the proper files. In ERC32 (embedded system) you won't have
that capability so you'll have to modify (re-implement) some of the functions.
In particular gcov_init() and gcov_exit() to store the info in local memory
and flush it off a e.g. serial line.</font><font size=3> </font><font size=2 face="sans-serif"><br>
On the other side you'll need an application that interprets the data and
generages the gcov files.</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
I already did that exercise some time ago for LEON2 processor (pretty similar
to ERC32) and I attach to this email the source code.</font><font size=3>
<br>
</font><font size=2 face="sans-serif"><br>
This source code has the following directory tree:</font><font size=3>
</font>
<ul>
<li><font size=2 face="sans-serif">arch -> all the architecture dependent
code</font><font size=3> </font>
<li><font size=2 face="sans-serif">build -> build directory</font><font size=3>
</font>
<li><font size=2 face="sans-serif">include -> header files directory</font><font size=3>
</font>
<li><font size=2 face="sans-serif">lib -> standard libgcov.c file</font><font size=3>
</font>
<li><font size=2 face="sans-serif">os -> OS dependent code. So far only
for RTEMS</font><font size=3> </font>
<li><font size=2 face="sans-serif">samples -> some example programs</font><font size=3>
</font>
<li><font size=2 face="sans-serif">tools -> gcov-iov version generator
tool</font></ul><font size=3><br>
</font><font size=2 face="sans-serif"><br>
If you look into the arch directory you'll see the sparc sub-directory
and under this both the erc32 and leon2 directories. The erc32 directory
and particulary the if_serial.c file is the one you'll have to modify to
make it work under ERC32. Only four functions need to be implemented</font><font size=3>
</font>
<ul>
<li><font size=2 face="sans-serif">if_serial_init - initialise the serial
interface</font><font size=3> </font>
<li><font size=2 face="sans-serif">if_serial_read - read from the serial
interface</font><font size=3> </font>
<li><font size=2 face="sans-serif">if_serial_write - write to the serial
interface</font><font size=3> </font>
<li><font size=2 face="sans-serif">if_serial_destroy - destroy the serial
interface</font></ul><font size=2 face="sans-serif"><br>
Implementing those functions and adding to the Makefile the necessary lines
to also compile the erc32 architecture (easy) you'll build a libgcov_rtems_erc32.a
library which you'll link together with your application under coverage
testing.</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
In the directory e.g samples/bubble you'll find the the lcov.sh script.
Which contains all the necessary commands to compile the bubble.c application,
link it with the libcov_rtems_xxx.a library, execute it under TSIM and
then analyse the results.</font><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><br>
I did not get into too much detail regarding the GCOV functionality. The
source code attached is working and I have used it with RTEMS 4.8 and LEON2
under both TSIM and real hardware using the RS232 port.</font><font size=3>
<br>
<br>
<br>
</font><font size=2 face="sans-serif"><br>
With regard to GPROF, also some code needs to be implemented. I already
started a gprof implementation for leon2 and RTEMS 4.8 but its still not
working 100% properly. If you want I can also send it to you. </font><font size=3><br>
<br>
</font><font size=2 face="sans-serif"><br>
Hope this helps</font><font size=3> <br>
<br>
</font><font size=2 face="sans-serif"><br>
Aitor</font><font size=3> <br>
<br>
<br>
<br>
<br>
</font>
<table width=100%>
<tr valign=top>
<td width=60%><font size=1 face="sans-serif"><b>Mariana Solaro </b></font><a href=mailto:msolaro@invap.com.ar><font size=1 color=blue face="sans-serif"><b><u><msolaro@invap.com.ar></u></b></font></a><font size=1 face="sans-serif">
<br>
Sent by: </font><a href="mailto:rtems-users-bounces@rtems.org"><font size=1 color=blue face="sans-serif"><u>rtems-users-bounces@rtems.org</u></font></a><font size=3>
</font>
<p><font size=1 face="sans-serif">09/02/2010 03:42 PM</font><font size=3>
</font>
<td width=39%>
<br>
<table width=100%>
<tr valign=top>
<td width=25%>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td width=74%><a href="mailto:rtems-users@rtems.org"><font size=1 color=blue face="sans-serif"><u>rtems-users@rtems.org</u></font></a><font size=3>
</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">gcov question</font></table>
<br>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br><font size=3><br>
<br>
</font><tt><font size=2><br>
Hello, I have a question about gcov an how to use it.<br>
We are using the sparc ERC32 processor, and the RTEMS 4.10 version.<br>
We've seen that there is a tool called gcov that allows it to measure <br>
the tests coverage. We don´t know exactly how to use it with RTEMS. We
<br>
already try to compile the source code with the -ftest-coverage and <br>
-fprofile-arcs options, but it only generates the .gcno files, and not
<br>
the .gcda files, so when using gcov, the coverage indicated is 0%.<br>
When the linker starts it says that it can't find the __gcov_init and <br>
__gcov_merge_add functions.<br>
So, I would like to know how to use the gcov and gprof tools with RTEMS
<br>
if it is posible.<br>
<br>
Thank You!<br>
<br>
Bye<br>
<br>
_______________________________________________<br>
rtems-users mailing list</font></tt><tt><font size=2 color=blue><u><br>
</u></font></tt><a href="mailto:rtems-users@rtems.org"><tt><font size=2 color=blue><u>rtems-users@rtems.org</u></font></tt></a><font size=3 color=blue><u><br>
</u></font><a href="http://www.rtems.org/mailman/listinfo/rtems-users"><tt><font size=2 color=blue><u>http://www.rtems.org/mailman/listinfo/rtems-users</u></font></tt></a><font size=3><br>
</font>
<br>
<br><font size=3>-- <br>
</font><img src=cid:_2_07E3F19C07E17C9400479E98C125779F width=285 height=163>
<br>
<br>