GCOV Cross Profiling: __gcov_flush() does not flush coverage data for shared libraries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am trying to get code coverage for an arm based embedded system.
Using x86 for cross compilation.So basically, I have a cross profiling
question.

For the application I want to generate code coverage data, I have
defined a signal handler inside which I call __gcov_flush() to flush
code coverage data to .gcda files. I am sending SIGUSR1 to the
application. The application uses multiple .so files where bulk of the
code and logic is implemented.

When I send the signal to the process, the .gcda files for just the
application get created/updated. The .gcda files for the .so's are not
created/updated at all.

Is there a way to make __gcov_flush() flush all the coverage data for
the .so's that the application is using?

I dont want to force the application to exit() because that would
defeat the purpose of what I am trying to do. I need to be able to
dump coverage data for the application and the .so it uses at runtime.
Please help!!

Using ARM GCC v4.5.1.

This is what I have done so far to generate code coverage data:

I have defined the following options for GCC in the Master makefile:
CFLAGS += -fprofile-arcs -ftest-coverage LDFLAGS += -fprofile-arcs
-ftest-coverage

I am also exporting GCOV_PREFIX and GCOV_PREFIX_STRIP as global
environment variables on the target system to force the .gcda files to
be created in a specific path. This is working.

My only problem is the .gcda files for the .so's not getting
created/update when __gcov_flush() is called from the application



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux