As of the latest nightly (
nightly-2018-04-08) the expansion of
extern crate compiler_builtins. This unstable crate contains compiler intrinsics, like
addsf3, which LLVM uses (calls) to perform operations, like addition of single precision floats, when they can’t be performed using native instructions. Some targets need this crate to link properly.
This is a breaking change:
If you had a crate that directly depended on the
compiler_builtins crate you’ll have to remove the
extern crate bit:
#![no_std] -#![feature(compiler_builtins_lib)] -extern crate compiler_builtins; // ..
But this also means you can drop the
compiler_builtins_lib feature gate, which is a good thing.
Also, if you were using Xargo (which requires nightly) v0.3.11 or older (NOTE that you don’t need Xargo if you are cross compiling for ARM Cortex-M) and you were building a sysroot that only contained
core you’ll have to add / modify Xargo.toml to also (cross) compile the
$ cat Xargo.toml
[dependencies.core] stage = 0 [dependencies.compiler_builtins] features = ["mem"] stage = 1
Alternatively, you can use the upcoming Xargo v0.3.12 which will compile both
compiler_builtins by default.
This change is part of the effort towards making embedded development possible on the stable channel.
See this issue for previous discussion regarding this change.