[LLVMdev] Correctly compiling shared libraries for llvm-gcov on OSX
Artur Szostak
aszostak at partner.eso.org
Fri Oct 17 07:50:00 PDT 2014
Hi,
I have the following problem. I am trying to compile and link a binary and shared library on OS X 10.9 using the clang compiler on that platform. The binary links against the shared library (libgiraffe.19.dylib). I am using the -coverage flag for compilation and linking. Everything works fine until I get the following run time errors when trying to execute the binary:
dyld: lazy symbol binding failed: Symbol not found: _llvm_gcov_init
Referenced from: /Users/buildacc/jenkinsBuild/workspace/test-giraf-head-coverage-clone/BUILD_TYPE/debug/label/testnode/giraffe/.libs/libgiraffe.19.dylib
Expected in: flat namespace
dyld: Symbol not found: _llvm_gcov_init
Referenced from: /Users/buildacc/jenkinsBuild/workspace/test-giraf-head-coverage-clone/BUILD_TYPE/debug/label/testnode/giraffe/.libs/libgiraffe.19.dylib
Expected in: flat namespace
My immediate assumption is that I need to pass an extra library when linking the shared library (libgiraffe.19.dylib), which contains _llvm_gcov_init. However, I could not find a single library on the platform that provides this function. This makes me think that LLVM implicitly adds these functions when linking a binary. Indeed, in the binary I do find a private symbol _llvm_gcov_init.
So, can I tell LLVM to export the _llvm_gcov_init symbol in the binary so the shared library gets a chance to resolve it?
Or, how could I create a library with the required function like _llvm_gcov_init to link my libraries against?
Kind regards.
Artur
More information about the llvm-dev
mailing list