This works great! Thanks Alexey for your help.<div><br></div><div>Qun<br><br><div class="gmail_quote">On Mon, Mar 25, 2013 at 9:22 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><div class="im">On Mon, Mar 25, 2013 at 5:04 PM, Qun Fa <span dir="ltr"><<a href="mailto:testforqunfa@gmail.com" target="_blank">testforqunfa@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you Alexey. I will try this out this week. Any idea on supporting this for Mac?<div><br></div><div>My raw idea is to add this to compiler-rt/lib/profile/CMakeLists.txt<br>

<div><br></div><div><pre style="margin-top:0px;margin-bottom:0px;padding:0px;border:0px;font-size:12px;font-family:Consolas,'Liberation Mono',Courier,monospace;color:rgb(51,51,51);line-height:16px"><div style="margin:0px;padding:0px 0px 0px 10px;border:0px">

<span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">if</span><span style="margin:0px;padding:0px;border:0px">(</span><span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">APPLE</span><span style="margin:0px;padding:0px;border:0px">)</span></div>


<div style="margin:0px;padding:0px 0px 0px 10px;border:0px">  <span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">foreach</span><span style="margin:0px;padding:0px;border:0px">(</span><span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">arch</span> <span style="margin:0px;padding:0px;border:0px;font-weight:bold">${</span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,128,128)">PROFILE_SUPPORTED_ARCH</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">}</span><span style="margin:0px;padding:0px;border:0px">)</span></div>


<div style="margin:0px;padding:0px 0px 0px 10px;border:0px">    <span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">add_compiler_rt_static_runtime</span><span style="margin:0px;padding:0px;border:0px">(</span><span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">clang_rt.profile-</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">${</span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,128,128)">arch</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">}</span> <span style="margin:0px;padding:0px;border:0px;font-weight:bold">${</span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,128,128)">arch</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">}</span></div>


<div style="margin:0px;padding:0px 0px 0px 10px;border:0px">      <span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">SOURCES</span> <span style="margin:0px;padding:0px;border:0px;font-weight:bold">${</span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,128,128)">PROFILE_SOURCES</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">}</span></div>


<div style="margin:0px;padding:0px 0px 0px 10px;border:0px">      <span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">CFLAGS</span> <span style="margin:0px;padding:0px;border:0px;color:rgb(221,17,68)">--sysroot=</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">${</span><span style="margin:0px;padding:0px;border:0px;color:rgb(0,128,128)">COMPILER_RT_DARWIN_SDK_SYSROOT</span><span style="margin:0px;padding:0px;border:0px;font-weight:bold">}</span><span style="margin:0px;padding:0px;border:0px">)</span></div>


<div style="margin:0px;padding:0px 0px 0px 10px;border:0px">  <span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">endforeach</span><span style="margin:0px;padding:0px;border:0px">()</span></div>
<div style="margin:0px;padding:0px 0px 0px 10px;border:0px"><span style="margin:0px;padding:0px;border:0px;color:rgb(0,134,179)">endif</span><span style="margin:0px;padding:0px;border:0px">()</span></div>
</pre><div><br></div><div>Do you think it will then support Mac?</div></div></div></blockquote><div><br></div></div><div>Generally we build universal libraries on Mac OS X, so that one static library has sources compiled for</div>

<div>multiple arches. I've added basic Mac support in r177870, hope this will work for you.</div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div><div><br></div><div>Longyi</div><div><div><div><br></div><br><div class="gmail_quote">On Tue, Mar 19, 2013 at 4:20 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Hi!</div><div class="gmail_extra"><br><div class="gmail_quote"><div>
On Fri, Mar 15, 2013 at 10:51 PM, Qun Fa <span dir="ltr"><<a href="mailto:testforqunfa@gmail.com" target="_blank">testforqunfa@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Thank you Alexey.<div><br></div><div>I have tried to use Makefile. This will generate the correct symbols that I need.</div>



<div><br></div><div>Any idea on the schedule of adding CMake support to compiler-rt?</div></blockquote><div><br></div></div><div>Starting from r177382 CMake on Linux should build the same profile compiler-rt library</div>



<div>as Makefiles.</div><div><div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><br>
</div><div>Sincerely,</div><div>Qun<div><div><br><br><div class="gmail_quote">On Fri, Mar 15, 2013 at 1:51 AM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">



<div>On Fri, Mar 15, 2013 at 1:36 AM, Qun Fa <span dir="ltr"><<a href="mailto:testforqunfa@gmail.com" target="_blank">testforqunfa@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi All,<div><br></div><div>I think Nick's suggestion is correct, my code was linked against libprofile_rt.a, which had gcda profiling code before, but was removed <a href="https://github.com/llvm-mirror/llvm/commit/218042a02305a3cc38d968a97ff9ecf4b4abe6ff" target="_blank">https://github.com/llvm-mirror/llvm/commit/218042a02305a3cc38d968a97ff9ecf4b4abe6ff</a></div>






<div><br></div><div>So, I couldn't find the correct symbols from libprofile_rt.a any more.</div><div><br></div><div>Now my assumption is I need to use the correct library that is provided by compiler-rt. May I know which one? </div>






<div><br></div><div>I am building the entire llvm/clang including compiler-rt based on the instructions given on the clang get started page (<a href="http://clang.llvm.org/get_started.html" target="_blank">http://clang.llvm.org/get_started.html</a>), but with CMake instead of Makefile. But I also noticed in the compiler-rt/lib/CMakeLists.txt file, we have the following FIXME.</div>






<div><br></div><div># FIXME: Add support for the profile library.</div><div><br></div><div>So, if I want to use the correct library, do I have to switch to Makefile? Any ideas?</div></blockquote><div><br></div></div><div>





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.</div><div>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.</div>





<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div><br></div><div>Thanks very much,</div>




<div>Qun</div><div><div><div><br></div><div><br><br><div class="gmail_quote">On Thu, Mar 14, 2013 at 8:46 AM, Qun Fa <span dir="ltr"><<a href="mailto:testforqunfa@gmail.com" target="_blank">testforqunfa@gmail.com</a>></span> wrote:<br>






<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Thanks for your reply.<div><br></div><div>May I know which is the recommended library that should be linked against?</div>






<div><br></div><div>I am currently linking libprofile_rt.a.</div><div><br></div><div>And I have noticed the differences that, if we do </div>
<div><br></div><div>`nm libprofile_rt.a | grep llvm`</div><div><br></div><div>with my old copy of the llvm/clang installation, I can see</div><div><br></div><div><div>00000000000005e0 T _llvm_gcda_emit_arcs</div><div>0000000000000b48 S _llvm_gcda_emit_arcs.eh</div>







<div>0000000000000430 T _llvm_gcda_emit_function</div><div>0000000000000aa8 S _llvm_gcda_emit_function.eh</div><div>00000000000006c0 T _llvm_gcda_end_file</div><div>0000000000000b98 S _llvm_gcda_end_file.eh</div><div>00000000000003d0 T _llvm_gcda_increment_indirect_counter</div>







<div>0000000000000a80 S _llvm_gcda_increment_indirect_counter.eh</div><div>0000000000000000 T _llvm_gcda_start_file</div><div>0000000000000a08 S _llvm_gcda_start_file.eh</div><div><br></div><div>They are the symbols that my test build is looking for.</div>







<div><br></div><div>But with the latest codebase, here is what I saw</div><div><br></div><div><div>00000000000000a8 T llvm_start_basic_block_tracing</div><div>0000000000000067 T llvm_trace_basic_block</div><div>0000000000000467 T llvm_decrement_path_count</div>







<div>000000000000042a T llvm_increment_path_count</div><div>0000000000000662 T llvm_start_path_profiling</div><div>0000000000000020 T llvm_start_edge_profiling</div><div>0000000000000020 T llvm_start_opt_edge_profiling</div>







</div><div><br></div><div>Thanks again,</div><div>Qun</div><div><div><br><div class="gmail_quote">On Thu, Mar 14, 2013 at 1:11 AM, Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span> wrote:<br>







<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>Qun Fa wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hi,<br>
I am trying to test my project and get the code coverage with a version<br>
of clang compiler that was built from the latest llvm/clang codebase.<br>
<br>
It worked for a while. But today, after I updated my local checkout, and<br>
re-build llvm, clang and compiler-rt, when I test my project again, I<br>
got the errors with undefined reference to 'llvm_gcda_start_file',<br>
'llvm_gcda_emit_arcs', 'llvm_gcda_emit_function', and 'llvm_gcda_end_file'.<br>
<br>
I have searched the codebase, and have found the functions are defined<br>
in GCDAProfiling.c file, but not sure why this suddenly doesn't work for me.<br>
<br>
Anyone can give any suggestions?<br>
</blockquote>
<br></div></div>
Those symbols should be provided by compiler-rt/lib/profile/<u></u>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?<span><font color="#888888"><br>








<br>
Nick<br>
<br>
</font></span></blockquote></div><br></div></div></div>
</blockquote></div><br></div>
</div></div><br></div></div>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</font></span></div></div>
</blockquote></div><br></div></div></div>
</blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</font></span></div></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</font></span></div></div>
</blockquote></div><br></div>