[LLVMdev] undefined reference to 'llvm_gcda_start_file', 'llvm_gcda_emit_arcs', etc

Qun Fa testforqunfa at gmail.com
Fri Mar 15 11:51:52 PDT 2013


Thank you Alexey.

I have tried to use Makefile. This will generate the correct symbols that I
need.

Any idea on the schedule of adding CMake support to compiler-rt?

Sincerely,
Qun

On Fri, Mar 15, 2013 at 1:51 AM, Alexey Samsonov <samsonov at google.com>wrote:

>
> On Fri, Mar 15, 2013 at 1:36 AM, Qun Fa <testforqunfa at gmail.com> wrote:
>
>> Hi All,
>>
>> I think Nick's suggestion is correct, my code was linked against
>> libprofile_rt.a, which had gcda profiling code before, but was removed
>> https://github.com/llvm-mirror/llvm/commit/218042a02305a3cc38d968a97ff9ecf4b4abe6ff
>>
>> So, I couldn't find the correct symbols from libprofile_rt.a any more.
>>
>> Now my assumption is I need to use the correct library that is provided
>> by compiler-rt. May I know which one?
>>
>> I am building the entire llvm/clang including compiler-rt based on the
>> instructions given on the clang get started page (
>> http://clang.llvm.org/get_started.html), but with CMake instead of
>> Makefile. But I also noticed in the compiler-rt/lib/CMakeLists.txt file, we
>> have the following FIXME.
>>
>> # FIXME: Add support for the profile library.
>>
>> So, if I want to use the correct library, do I have to switch to
>> Makefile? Any ideas?
>>
>
> Yeah, can you try Makefile (I think it should build libprofile_rt from
> GCDAProfiling.c that you need). I'll see if I can add CMake support for
> profile in compiler-rt any time soon.
> However, looks like Clang driver won't be smart enough to link two
> archives (lib/libprofile_rt.a and the one under lib/clang/3.3/linux/...),
> so we may need to patch the driver as well.
>
>
>>
>> Thanks very much,
>> Qun
>>
>>
>>
>> On Thu, Mar 14, 2013 at 8:46 AM, Qun Fa <testforqunfa at gmail.com> wrote:
>>
>>> Thanks for your reply.
>>>
>>> May I know which is the recommended library that should be linked
>>> against?
>>>
>>> I am currently linking libprofile_rt.a.
>>>
>>> And I have noticed the differences that, if we do
>>>
>>> `nm libprofile_rt.a | grep llvm`
>>>
>>> with my old copy of the llvm/clang installation, I can see
>>>
>>> 00000000000005e0 T _llvm_gcda_emit_arcs
>>> 0000000000000b48 S _llvm_gcda_emit_arcs.eh
>>> 0000000000000430 T _llvm_gcda_emit_function
>>> 0000000000000aa8 S _llvm_gcda_emit_function.eh
>>> 00000000000006c0 T _llvm_gcda_end_file
>>> 0000000000000b98 S _llvm_gcda_end_file.eh
>>> 00000000000003d0 T _llvm_gcda_increment_indirect_counter
>>> 0000000000000a80 S _llvm_gcda_increment_indirect_counter.eh
>>> 0000000000000000 T _llvm_gcda_start_file
>>> 0000000000000a08 S _llvm_gcda_start_file.eh
>>>
>>> They are the symbols that my test build is looking for.
>>>
>>> But with the latest codebase, here is what I saw
>>>
>>> 00000000000000a8 T llvm_start_basic_block_tracing
>>> 0000000000000067 T llvm_trace_basic_block
>>> 0000000000000467 T llvm_decrement_path_count
>>> 000000000000042a T llvm_increment_path_count
>>> 0000000000000662 T llvm_start_path_profiling
>>> 0000000000000020 T llvm_start_edge_profiling
>>> 0000000000000020 T llvm_start_opt_edge_profiling
>>>
>>> Thanks again,
>>> Qun
>>>
>>> On Thu, Mar 14, 2013 at 1:11 AM, Nick Lewycky <nicholas at mxc.ca> wrote:
>>>
>>>> Qun Fa wrote:
>>>>
>>>>> Hi,
>>>>> I am trying to test my project and get the code coverage with a version
>>>>> of clang compiler that was built from the latest llvm/clang codebase.
>>>>>
>>>>> It worked for a while. But today, after I updated my local checkout,
>>>>> and
>>>>> re-build llvm, clang and compiler-rt, when I test my project again, I
>>>>> got the errors with undefined reference to 'llvm_gcda_start_file',
>>>>> 'llvm_gcda_emit_arcs', 'llvm_gcda_emit_function', and
>>>>> 'llvm_gcda_end_file'.
>>>>>
>>>>> I have searched the codebase, and have found the functions are defined
>>>>> in GCDAProfiling.c file, but not sure why this suddenly doesn't work
>>>>> for me.
>>>>>
>>>>> Anyone can give any suggestions?
>>>>>
>>>>
>>>> Those symbols should be provided by compiler-rt/lib/profile/**GCDAProfiling.c.
>>>> There used to be a copy in llvm's tree, but I deleted that one recently.
>>>> It's possible you used to be using the one from llvm, but now need to
>>>> switch to using the one from compiler-rt?
>>>>
>>>> Nick
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> --
> Alexey Samsonov, MSK
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130315/19dce2a7/attachment.html>


More information about the llvm-dev mailing list