From 259319e456cf3a4145230be91d42928f5beabe62 Mon Sep 17 00:00:00 2001 From: whitequark Date: Thu, 2 Feb 2017 10:47:18 +0000 Subject: [PATCH] firmware: use compiler_builtins crate instead of our compiler-rt. This cannot be done for ksupport yet because compiler_builtins misses most soft-float operations. --- artiq/firmware/Cargo.lock | 23 +++++++++++++++++++++++ artiq/firmware/runtime/Cargo.toml | 1 + artiq/firmware/runtime/lib.rs | 3 ++- artiq/runtime/Makefile | 2 +- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/artiq/firmware/Cargo.lock b/artiq/firmware/Cargo.lock index 20b5f9e1c..8e80b2cea 100644 --- a/artiq/firmware/Cargo.lock +++ b/artiq/firmware/Cargo.lock @@ -29,6 +29,15 @@ name = "byteorder" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "compiler_builtins" +version = "0.1.0" +source = "git+https://github.com/rust-lang-nursery/compiler-builtins#631b5687b24af413fdbffa4c2644484e60660b00" +dependencies = [ + "gcc 0.3.42 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-cfg 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cslice" version = "0.3.0" @@ -42,6 +51,11 @@ dependencies = [ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "gcc" +version = "0.3.42" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -100,6 +114,7 @@ dependencies = [ "board 0.0.0", "build_artiq 0.0.0", "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "compiler_builtins 0.1.0 (git+https://github.com/rust-lang-nursery/compiler-builtins)", "fringe 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "logger_artiq 0.0.0", @@ -107,6 +122,11 @@ dependencies = [ "std_artiq 0.0.0", ] +[[package]] +name = "rustc-cfg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "satman" version = "0.0.0" @@ -150,13 +170,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] "checksum byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c40977b0ee6b9885c9013cd41d9feffdd22deb3bb4dc3a71d901cc7a77de18c8" +"checksum compiler_builtins 0.1.0 (git+https://github.com/rust-lang-nursery/compiler-builtins)" = "" "checksum cslice 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0f8cb7306107e4b10e64994de6d3274bd08996a7c1322a27b86482392f96be0a" "checksum fringe 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "987689dcfad85eee8d76b477865641ec483e63fb86d52966bfc350c4a647d78a" +"checksum gcc 0.3.42 (registry+https://github.com/rust-lang/crates.io-index)" = "291055c78f59ca3d84c99026c9501c469413d386bb46be1e1cf1d285cd1db3b0" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" "checksum log_buffer 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec57723b84bbe7bdf76aa93169c9b59e67473317c6de3a83cb2a0f8ccb2aa493" "checksum managed 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5981b4c6de5ce272aaf2caaa56adb8f6fd24a73206b38302db572ab9374aab10" +"checksum rustc-cfg 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "56a596b5718bf5e059d59a30af12f7f462a152de147aa462b70892849ee18704" "checksum smoltcp 0.2.1 (git+https://github.com/m-labs/smoltcp?rev=e8ece3e)" = "" "checksum walkdir 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7c16466ecc507c7cb5988db03e6eab4aaeab89a5c37a29251fcfd3ac9b7afe" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" diff --git a/artiq/firmware/runtime/Cargo.toml b/artiq/firmware/runtime/Cargo.toml index 7ca898910..e76b20478 100644 --- a/artiq/firmware/runtime/Cargo.toml +++ b/artiq/firmware/runtime/Cargo.toml @@ -13,6 +13,7 @@ path = "lib.rs" build_artiq = { path = "../libbuild_artiq" } [dependencies] +compiler_builtins = { git = "https://github.com/rust-lang-nursery/compiler-builtins" } alloc_artiq = { path = "../liballoc_artiq" } std_artiq = { path = "../libstd_artiq", features = ["alloc"] } logger_artiq = { path = "../liblogger_artiq" } diff --git a/artiq/firmware/runtime/lib.rs b/artiq/firmware/runtime/lib.rs index 2a4bc19f6..61ee29feb 100644 --- a/artiq/firmware/runtime/lib.rs +++ b/artiq/firmware/runtime/lib.rs @@ -1,6 +1,7 @@ #![no_std] -#![feature(libc, repr_simd, const_fn)] +#![feature(compiler_builtins_lib, libc, repr_simd, const_fn)] +extern crate compiler_builtins; extern crate alloc_artiq; #[macro_use] extern crate std_artiq as std; diff --git a/artiq/runtime/Makefile b/artiq/runtime/Makefile index f759d8d9b..8dced97a3 100644 --- a/artiq/runtime/Makefile +++ b/artiq/runtime/Makefile @@ -43,7 +43,7 @@ runtime.elf: $(RUSTOUT)/libruntime.a ksupport_data.o -T $(RUNTIME_DIRECTORY)/runtime.ld \ -o $@ \ $^ \ - -lbase-nofloat -lcompiler-rt + -lbase-nofloat @chmod -x $@ .PHONY: $(RUSTOUT_KSUPPORT)/libksupport.a