linking coverage library

Recently I added support for gcov-compatible coverage analysis to compilation. The remaining missing piece is that we should link against libprofile_rt.a when we see the relevant flags in the link step.

There’s currently code in the Driver which adds “-lgcov” when those flags are visible in the link step. Will it break anything for anyone if I remove that? Consider the case where someone uses clang to build fortran by running gfortran and it emits a calls to libgcov that is then linked by clang?

Then I’d like to add in “-l:libprofile_rt.a”. I know how gcc puts libgcov, but how do we ship libraries alongside clang? Does clang pass library search path flags to the linker?

If we can’t remove -lgcov because of some reason, can we pass both -lgcov and “-l:profile_rt.a”? What about people without gcc installed?

Nick

Awesome! You might want to update this bug:

<http://llvm.org/bugs/show_bug.cgi?id=8030>

I can't see why we can't remove the gcov one. At any rate the symbols generated, afaict, are going to have llvm_ prefixed on them and so we'd need the libprofile_rt ones anyhow.

-eric

Sounds good. I’ve gone ahead and implemented this in the attached patch. Good to commit?

Nick

clang-libprofile_rt.patch (3.91 KB)

LGTM.

-eric