<div dir="ltr">I am compiling for bare metal Coretex A8 (Beaglebone Black).  I can probably figure out how to disable the floating point with a compiler flag (-fpu ?).</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 8, 2015 at 8:36 PM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Daniel,<br>
<div><div class="h5"><br>
On 8 January 2015 at 16:55, Daniel Dilts <<a href="mailto:diltsman@gmail.com">diltsman@gmail.com</a>> wrote:<br>
> My understanding is that compiler-rt is a library consisting of low level<br>
> functions that the compiler may generate calls to.  Could someone give me an<br>
> example of C or C++ code that would generate a binary that requires<br>
> compiler-rt?<br>
<br>
</div></div>The bulk of the code is a software implementation of floating-point<br>
operations for CPUs (or kernels!) that don't have access to the real<br>
instructions. For example on primitive ARM CPUs, something as simple<br>
as "float foo(double in) { return in; }" would generate a libcall.<br>
<br>
On a modern x86_64 CPU you have to go a lot further. At a glance, the<br>
only candidates I can see are __clear_cache calls (to invalidate the<br>
instruction-cache, likely a NOP even if you do get Clang to produce<br>
it) and __gcc_personality_v0 (C++ exception-related faff, pretty much<br>
any nontrivial "catch" block should use it).<br>
<br>
The repository also provides support routines needed for the various<br>
-fsanitize=XYZ options. But that's only generated if requested (both<br>
by clang and when building the compiler-rt library).<br>
<br>
The situation is slightly different to the GCC world, which rolls all<br>
of the C++ exception support functions into its equivalent library<br>
(libgcc). So there you'd also expect to find things like<br>
_Unwind_Resume which the LLVM world tends to put into a separate<br>
library like libunwind or libc++abi.<br>
<br>
Cheers.<br>
<span class="HOEnZb"><font color="#888888"><br>
Tim.<br>
</font></span></blockquote></div><br></div>