Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to resolve __gcov_init undefined reference issue when linking

I now work on C code coverage study and encountered following issue, GCC version 4.4.6:

  1. Added compiler flag CFLAGS = --coverage and linker option LDFLAGS := --coverage or LOCAL_LDLIBS := --coverage and got the error:

undefined reference to '__gcov_init'" and "undefined reference to '__gcov_merge_add'

  1. Added option LOCAL_LDFLAGS := --coverage, and got link error:

libgcov.a(_gcov.o): in function __gcov_set_sampling_rate: undefined reference to '__gcov_sampling_rate' libgcov.a(_gcov.o): in function gcov_exit: undefined reference to '__gcov_pmu_profile_filename' libgcov.a(_gcov.o): in function __gcov_init: undefined reference to '__gcov_pmu_profile_options' '__gcov_pmu_top_n_address'

Can anyone help to provide some suggestions on this issue?

like image 620
lilingmzai Avatar asked May 22 '13 02:05

lilingmzai


4 Answers

Try this approach:

Compile the code for which you want to generate the coverage with these options:

CFLAGS: -fprofile-arcs -ftest-coverage

LFLAGS: -lgcov --coverage

If this doesn't solve the problem, then please provide some information on the structure of your application, i.e. whether its single program or an application involving shared/static libraries etc.

Hope that helps!

like image 163
Rajen Avatar answered Nov 04 '22 15:11

Rajen


Are you linking with -lgcov?

If you are using a Makefile it would be of great help to have a look at it in order to help you.

like image 44
niglesias Avatar answered Nov 04 '22 15:11

niglesias


you have to provide LDFLAGS to resolve this issue.

LDFLAGS += " -lgcov --coverage"
like image 5
Ajay.kundu Avatar answered Nov 04 '22 15:11

Ajay.kundu


I can't be sure which change finally did the trick for me but I think it was the -fprofile-generate flag. Using GNAT GPS I went to the Switches tab on the left and then selected the Ada Linker tab on the top. Then I enabled the checkbox for Code Coverage. Oh yeah I've found that on the Builder tab in that same area if you enable the Recompile if switches changed checkbox it can save a lot of teeth-gnashing. Probably slows things down for the pros but I found it helpful.

like image 1
Tod Avatar answered Nov 04 '22 13:11

Tod