<div dir="ltr">I had the exact same problem 3 weeks ago. The answer is yes. You need to compile the libcompiler_rt and replace the libgcc. I'm still working on cross-compile the compiler_rt, some problems are still not solved. In fact there is precompiled libcompiler_rt.a file from ellcc project. Check "<a href="http://ellcc.org">ellcc.org</a>". Hope it helps :)<div><br></div><div>Cheers,</div><div>Chao</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-03-30 8:05 GMT-05:00 Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 30 March 2015 at 13:37,  <<a href="mailto:qiuw@ichaier.com">qiuw@ichaier.com</a>> wrote:<br>
> I used Clang to compile an ARM-v6m project. The runtime library is from GNU-ARM. But as I used 'memcpy' function, an error 'undefined reference to `__aeabi_memcpy' was emitted by linker. Does it mean that I must use LLVM compiler-RT instead?<br>
<br>
</span>Hi Steven,<br>
<br>
This could be this known issue:<br>
<a href="https://llvm.org/bugs/show_bug.cgi?id=11326" target="_blank">https://llvm.org/bugs/show_bug.cgi?id=11326</a> and it affected the Linux<br>
kernel and Android in slightly different ways.<br>
<br>
The problem here is that Clang inadvertently changes "mem*" to<br>
"__aeabi_mem*" because you're compiling to ARM on EABI mode, which<br>
also encompass GNUEABI, which maybe it shouldn't, but there isn't a<br>
simple answer to this problem.<br>
<br>
In the kernel, the issue is that they don't use any libc, so they<br>
provide their own implementations, which don't have __aeabi_ names.<br>
The solution was to create an alias.<br>
<br>
In Android, the issue is that bionic (a libc complement) doesn't<br>
implement mem*, and has a link from mem* to __aeabi_mem*. When Clang<br>
does the same change on the code, it ends up with __aeabi_mem* calling<br>
__aeabi_mem* and of course, fails at run time. The solution is to<br>
create an asm file with the aliases, so that Clang doesn't do the<br>
switch on its own.<br>
<br>
Both solutions are ugly, but even when using the -fno-builtins option<br>
(that suppress the change to __aeabi and others), the end result was<br>
not good enough (I can't remember the specifics).<br>
<br>
In your case, I assume you're using glibc, which for ARM, should have<br>
__aeabi_memcpy, so I'm not sure why you can't see them. Can you give<br>
us more details on what the issue is, and if it is one of the above,<br>
maybe you should complement the bug report with more info. We'll have<br>
to fix that one properly one day. :)<br>
<br>
cheers,<br>
--renato<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">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>
</div></div></blockquote></div><br></div>