2

I have a simple daemon program -

https://gist.github.com/RAvenGEr/9563c051de35662d64baf26a8cd66d2e

I have added a --coverage flag in makefile as below

CC = g++

CFLAGS = -I. -Wall --coverage

all: daemon-name clean

daemon-name: daemon-name.o $(CC) -o $@ $^ chmod 700 daemon-name

daemon-name.o: daemon-name.cpp $(CC) -c $(CFLAGS) $<

clean: rm *.o

When I compile the program I get -

Undefined symbols for architecture x86_64:

"_llvm_gcda_emit_arcs", referenced from: ___llvm_gcov_writeout in daemon-name.o

"_llvm_gcda_emit_function", referenced from: ___llvm_gcov_writeout in daemon-name.o

"_llvm_gcda_end_file", referenced from: ___llvm_gcov_writeout in daemon-name.o

"_llvm_gcda_start_file", referenced from: ___llvm_gcov_writeout in daemon-name.o

"_llvm_gcda_summary_info", referenced from: ___llvm_gcov_writeout in daemon-name.o "_llvm_gcov_init", referenced from: ___llvm_gcov_init in daemon-name.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Note that program is compiling and linking correctly without --coverage flag, but I really need to see coverage of daemon-name.cpp

I believe the cause of error is linker somehow not interpreting --coverage flag. How can I add the --coverage flag to the linker in order to see code coverage.

  • Maybe it will help: https://stackoverflow.com/questions/53626481/linking-llvm-causes-gcov-to-fail/54032670#54032670. – CristiFati Nov 14 '19 at 22:23

0 Answers0