From 73a9d29b298100b4454e6ca17ca057a4dda0a91a Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 26 Aug 2020 01:23:49 +0200 Subject: [PATCH 1/4] Rust assembly stubs --- .cargo/config | 2 + .travis.yml | 1 - Cargo.toml | 17 +- asm-cm7-r0p1.s | 35 --- asm-fpu.s | 21 -- asm-v7.s | 78 ------- asm-v8-main.s | 43 ---- asm-v8.s | 42 ---- asm.rs | 337 ++++++++++++++++++++++++++++ asm.s | 192 ---------------- assemble.sh | 47 ---- bin/thumbv6m-none-eabi-lto.a | Bin 0 -> 11940 bytes bin/thumbv6m-none-eabi.a | Bin 5782 -> 16172 bytes bin/thumbv7em-none-eabi-lto.a | Bin 0 -> 16632 bytes bin/thumbv7em-none-eabi.a | Bin 11130 -> 20040 bytes bin/thumbv7em-none-eabihf-lto.a | Bin 0 -> 17432 bytes bin/thumbv7em-none-eabihf.a | Bin 13164 -> 21096 bytes bin/thumbv7m-none-eabi-lto.a | Bin 0 -> 15356 bytes bin/thumbv7m-none-eabi.a | Bin 8920 -> 19032 bytes bin/thumbv8m.base-none-eabi-lto.a | Bin 0 -> 13328 bytes bin/thumbv8m.base-none-eabi.a | Bin 8198 -> 17960 bytes bin/thumbv8m.main-none-eabi-lto.a | Bin 0 -> 17956 bytes bin/thumbv8m.main-none-eabi.a | Bin 13908 -> 22760 bytes bin/thumbv8m.main-none-eabihf-lto.a | Bin 0 -> 18700 bytes bin/thumbv8m.main-none-eabihf.a | Bin 15948 -> 23748 bytes build.rs | 13 +- check-blobs.sh | 21 -- ci/install.sh | 4 - ci/script.sh | 2 +- xtask/Cargo.toml | 9 + xtask/src/main.rs | 180 +++++++++++++++ 31 files changed, 552 insertions(+), 492 deletions(-) create mode 100644 .cargo/config delete mode 100644 asm-cm7-r0p1.s delete mode 100644 asm-fpu.s delete mode 100644 asm-v7.s delete mode 100644 asm-v8-main.s delete mode 100644 asm-v8.s create mode 100644 asm.rs delete mode 100644 asm.s delete mode 100755 assemble.sh create mode 100644 bin/thumbv6m-none-eabi-lto.a create mode 100644 bin/thumbv7em-none-eabi-lto.a create mode 100644 bin/thumbv7em-none-eabihf-lto.a create mode 100644 bin/thumbv7m-none-eabi-lto.a create mode 100644 bin/thumbv8m.base-none-eabi-lto.a create mode 100644 bin/thumbv8m.main-none-eabi-lto.a create mode 100644 bin/thumbv8m.main-none-eabihf-lto.a delete mode 100755 check-blobs.sh create mode 100644 xtask/Cargo.toml create mode 100644 xtask/src/main.rs diff --git a/.cargo/config b/.cargo/config new file mode 100644 index 00000000..86281707 --- /dev/null +++ b/.cargo/config @@ -0,0 +1,2 @@ +[alias] +xtask = "run --package xtask --bin xtask --" diff --git a/.travis.yml b/.travis.yml index bbe3d487..7f25eae8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -72,7 +72,6 @@ before_install: set -e install: - bash ci/install.sh - - export PATH="$PATH:$PWD/gcc/bin" script: - bash ci/script.sh diff --git a/Cargo.toml b/Cargo.toml index 2e55f6ad..4f0587b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,19 @@ volatile-register = "0.2.0" bitfield = "0.13.2" embedded-hal = "0.2.4" +[features] +cm7-r0p1 = [] +inline-asm = [] + +# Link against prebuilt assembly blobs that are compatible with Linker-Plugin LTO. +# When using this feature, you *must* pass `-Clinker-plugin-lto` to rustc. See this link for +# details: +# https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html +linker-plugin-lto = [] + +[workspace] +members = ["xtask"] + [package.metadata.docs.rs] targets = [ "thumbv8m.main-none-eabihf", @@ -31,7 +44,3 @@ targets = [ "thumbv8m.base-none-eabi", "thumbv8m.main-none-eabi" ] - -[features] -cm7-r0p1 = [] -inline-asm = [] diff --git a/asm-cm7-r0p1.s b/asm-cm7-r0p1.s deleted file mode 100644 index 28c3384e..00000000 --- a/asm-cm7-r0p1.s +++ /dev/null @@ -1,35 +0,0 @@ - .cfi_sections .debug_frame - - .section .text.__basepri_max_cm7_r0p1 - .global __basepri_max_cm7_r0p1 - .syntax unified - .thumb_func - .cfi_startproc -__basepri_max_cm7_r0p1: - mrs r1, PRIMASK - cpsid i - tst.w r1, #1 - msr BASEPRI_MAX, r0 - it ne - bxne lr - cpsie i - bx lr - .cfi_endproc - .size __basepri_max_cm7_r0p1, . - __basepri_max_cm7_r0p1 - - .section .text.__basepri_w_cm7_r0p1 - .global __basepri_w_cm7_r0p1 - .syntax unified - .thumb_func - .cfi_startproc -__basepri_w_cm7_r0p1: - mrs r1, PRIMASK - cpsid i - tst.w r1, #1 - msr BASEPRI, r0 - it ne - bxne lr - cpsie i - bx lr - .cfi_endproc - .size __basepri_w_cm7_r0p1, . - __basepri_w_cm7_r0p1 diff --git a/asm-fpu.s b/asm-fpu.s deleted file mode 100644 index 417d199a..00000000 --- a/asm-fpu.s +++ /dev/null @@ -1,21 +0,0 @@ - .cfi_sections .debug_frame - - .section .text.__get_FPSCR - .global __get_FPSCR - .thumb_func - .cfi_startproc -__get_FPSCR: - vmrs r0, fpscr - bx lr - .cfi_endproc - .size __get_FPSCR, . - __get_FPSCR - - .section .text.__set_FPSCR - .global __set_FPSCR - .thumb_func - .cfi_startproc -__set_FPSCR: - vmsr fpscr, r0 - bx lr - .cfi_endproc - .size __set_FPSCR, . - __set_FPSCR diff --git a/asm-v7.s b/asm-v7.s deleted file mode 100644 index 17d7110e..00000000 --- a/asm-v7.s +++ /dev/null @@ -1,78 +0,0 @@ - .syntax unified - .cfi_sections .debug_frame - - .section .text.__basepri_max - .global __basepri_max - .thumb_func - .cfi_startproc -__basepri_max: - msr BASEPRI_MAX, r0 - bx lr - .cfi_endproc - .size __basepri_max, . - __basepri_max - - .section .text.__basepri_r - .global __basepri_r - .thumb_func - .cfi_startproc -__basepri_r: - mrs r0, BASEPRI - bx lr - .cfi_endproc - .size __basepri_r, . - __basepri_r - - .section .text.__basepri_w - .global __basepri_w - .thumb_func - .cfi_startproc -__basepri_w: - msr BASEPRI, r0 - bx lr - .cfi_endproc - .size __basepri_w, . - __basepri_w - - .section .text.__faultmask - .global __faultmask - .thumb_func - .cfi_startproc -__faultmask: - mrs r0, FAULTMASK - bx lr - .cfi_endproc - .size __faultmask, . - __faultmask - - .section .text.__enable_icache - .global __enable_icache - .thumb_func - .cfi_startproc -__enable_icache: - ldr r0, =0xE000ED14 @ CCR - mrs r2, PRIMASK @ save critical nesting info - cpsid i @ mask interrupts - ldr r1, [r0] @ read CCR - orr.w r1, r1, #(1 << 17) @ Set bit 17, IC - str r1, [r0] @ write it back - dsb @ ensure store completes - isb @ synchronize pipeline - msr PRIMASK, r2 @ unnest critical section - bx lr - .cfi_endproc - .size __enable_icache, . - __enable_icache - - .section .text.__enable_dcache - .global __enable_dcache - .thumb_func - .cfi_startproc -__enable_dcache: - ldr r0, =0xE000ED14 @ CCR - mrs r2, PRIMASK @ save critical nesting info - cpsid i @ mask interrupts - ldr r1, [r0] @ read CCR - orr.w r1, r1, #(1 << 16) @ Set bit 16, DC - str r1, [r0] @ write it back - dsb @ ensure store completes - isb @ synchronize pipeline - msr PRIMASK, r2 @ unnest critical section - bx lr - .cfi_endproc - .size __enable_dcache, . - __enable_dcache diff --git a/asm-v8-main.s b/asm-v8-main.s deleted file mode 100644 index 1fad1555..00000000 --- a/asm-v8-main.s +++ /dev/null @@ -1,43 +0,0 @@ - - .cfi_sections .debug_frame - - .section .text.__msplim_r - .global __msplim_r - .thumb_func - .cfi_startproc -__msplim_r: - mrs r0, MSPLIM - bx lr - .cfi_endproc - .size __msplim_r, . - __msplim_r - - .section .text.__msplim_w - .global __msplim_w - .thumb_func - .cfi_startproc -__msplim_w: - msr MSPLIM, r0 - bx lr - .cfi_endproc - .size __msplim_w, . - __msplim_w - - .section .text.__psplim_r - .global __psplim_r - .thumb_func - .cfi_startproc -__psplim_r: - mrs r0, PSPLIM - bx lr - .cfi_endproc - .size __psplim_r, . - __psplim_r - - .section .text.__psplim_w - .global __psplim_w - .thumb_func - .cfi_startproc -__psplim_w: - msr PSPLIM, r0 - bx lr - .cfi_endproc - .size __psplim_w, . - __psplim_w - diff --git a/asm-v8.s b/asm-v8.s deleted file mode 100644 index 7d3a8c94..00000000 --- a/asm-v8.s +++ /dev/null @@ -1,42 +0,0 @@ - .cfi_sections .debug_frame - - .section .text.__tt - .global __tt - .thumb_func - .cfi_startproc -__tt: - tt r0, r0 - bx lr - .cfi_endproc - .size __tt, . - __tt - - .section .text.__ttt - .global __ttt - .thumb_func - .cfi_startproc -__ttt: - ttt r0, r0 - bx lr - .cfi_endproc - .size __ttt, . - __ttt - - .section .text.__tta - .global __tta - .thumb_func - .cfi_startproc -__tta: - tta r0, r0 - bx lr - .cfi_endproc - .size __tta, . - __tta - - - .section .text.__ttat - .global __ttat - .thumb_func - .cfi_startproc -__ttat: - ttat r0, r0 - bx lr - .cfi_endproc - .size __ttat, . - __ttat diff --git a/asm.rs b/asm.rs new file mode 100644 index 00000000..0bbf0c7a --- /dev/null +++ b/asm.rs @@ -0,0 +1,337 @@ +//! Assembly stubs for the `cortex-m` crate. +//! +//! We use this file to precompile some assembly stubs into the static libraries you can find in +//! `bin`. Apps using the `cortex-m` crate then link against those static libraries and don't need +//! to build this file themselves. +//! +//! Nowadays the assembly stubs are no longer actual assembly files, but actually just this Rust +//! file `asm.rs` that uses unstable inline assembly, coupled with the `xtask` tool to invoke rustc +//! and build the files. +//! +//! Precompiling this to a static lib allows users to call assembly routines from stable Rust, but +//! also perform [linker plugin LTO] with the precompiled artifacts to completely inline the +//! assembly routines into their code, which brings the "outline assembly" on par with "real" inline +//! assembly. +//! +//! For developers and contributors to `cortex-m`, this setup means that they don't have to install +//! any binutils, assembler, or C compiler to hack on the crate. All they need is a nightly rustc +//! and run `cargo xtask assemble` to rebuild the archives from this file. +//! +//! Cool, right? +//! +//! [linker plugin LTO]: https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html + +#![feature(asm)] +#![no_std] +#![crate_type = "staticlib"] +#![deny(warnings)] + +#[no_mangle] +pub unsafe extern "C" fn __bkpt() { + asm!("bkpt"); +} + +#[no_mangle] +pub unsafe extern "C" fn __control_r() -> u32 { + let r; + asm!("mrs {}, CONTROL", out(reg) r); + r +} + +#[no_mangle] +pub unsafe extern "C" fn __control_w(w: u32) { + asm!("msr CONTROL, {}", in(reg) w); +} + +#[no_mangle] +pub unsafe extern "C" fn __cpsid() { + asm!("cpsid i"); +} + +#[no_mangle] +pub unsafe extern "C" fn __cpsie() { + asm!("cpsie i"); +} + +#[no_mangle] +pub unsafe extern "C" fn __delay(cyc: u32) { + asm!(" + 1: + nop + subs {}, #1 + bne 1b + // Branch to 1 instead of __delay does not generate R_ARM_THM_JUMP8 relocation, which breaks + // linking on the thumbv6m-none-eabi target + ", in(reg) cyc); +} + +// FIXME do we need compiler fences here or should we expect them in the caller? +#[no_mangle] +pub unsafe extern "C" fn __dmb() { + asm!("dmb 0xF"); +} + +#[no_mangle] +pub unsafe extern "C" fn __dsb() { + asm!("dsb 0xF"); +} + +#[no_mangle] +pub unsafe extern "C" fn __isb() { + asm!("isb 0xF"); +} + +#[no_mangle] +pub unsafe extern "C" fn __msp_r() -> u32 { + let r; + asm!("mrs {}, MSP", out(reg) r); + r +} + +#[no_mangle] +pub unsafe extern "C" fn __msp_w(val: u32) { + asm!("msr MSP, {}", in(reg) val); +} + +#[no_mangle] +pub unsafe extern "C" fn __nop() { + // NOTE: This is a `pure` asm block, but applying that option allows the compiler to eliminate + // the nop entirely (or to collapse multiple subsequent ones). Since the user probably wants N + // nops when they call `nop` N times, let's not add that option. + asm!("nop"); +} + +#[no_mangle] +pub unsafe extern "C" fn __primask() -> u32 { + // FIXME: rename to __primask_r + let r; + asm!("mrs {}, PRIMASK", out(reg) r); + r +} + +#[no_mangle] +pub unsafe extern "C" fn __psp_r() -> u32 { + let r; + asm!("mrs {}, PSP", out(reg) r); + r +} + +#[no_mangle] +pub unsafe extern "C" fn __psp_w(val: u32) { + asm!("msr PSP, {}", in(reg) val); +} + +#[no_mangle] +pub unsafe extern "C" fn __sev() { + asm!("sev"); +} + +#[no_mangle] +pub unsafe extern "C" fn __udf() { + asm!("udf #0"); +} + +#[no_mangle] +pub unsafe extern "C" fn __wfe() { + asm!("wfe"); +} + +#[no_mangle] +pub unsafe extern "C" fn __wfi() { + asm!("wfi"); +} + +#[cfg(armv7m)] +pub mod v7m { + #[no_mangle] + pub unsafe extern "C" fn __basepri_max(val: u8) { + asm!("msr BASEPRI_MAX, {}", in(reg) val); + } + + #[no_mangle] + pub unsafe extern "C" fn __basepri_r() -> u8 { + let r; + asm!("mrs {}, BASEPRI", out(reg) r); + r + } + + #[no_mangle] + pub unsafe extern "C" fn __basepri_w(val: u8) { + asm!("msr BASEPRI, {}", in(reg) val); + } + + #[no_mangle] + pub unsafe extern "C" fn __faultmask() -> u32 { + let r; + asm!("mrs {}, FAULTMASK", out(reg) r); + r + } + + // FIXME: compiler_fences necessary? + #[no_mangle] + pub unsafe extern "C" fn __enable_icache() { + asm!( + " + ldr r0, =0xE000ED14 @ CCR + mrs r2, PRIMASK @ save critical nesting info + cpsid i @ mask interrupts + ldr r1, [r0] @ read CCR + orr.w r1, r1, #(1 << 17) @ Set bit 17, IC + str r1, [r0] @ write it back + dsb @ ensure store completes + isb @ synchronize pipeline + msr PRIMASK, r2 @ unnest critical section + ", + out("r0") _, + out("r1") _, + out("r2") _, + ); + } + + #[no_mangle] + pub unsafe extern "C" fn __enable_dcache() { + asm!( + " + ldr r0, =0xE000ED14 @ CCR + mrs r2, PRIMASK @ save critical nesting info + cpsid i @ mask interrupts + ldr r1, [r0] @ read CCR + orr.w r1, r1, #(1 << 16) @ Set bit 16, DC + str r1, [r0] @ write it back + dsb @ ensure store completes + isb @ synchronize pipeline + msr PRIMASK, r2 @ unnest critical section + ", + out("r0") _, + out("r1") _, + out("r2") _, + ); + } +} + +#[cfg(armv7em)] +mod v7em { + #[no_mangle] + pub unsafe extern "C" fn __basepri_max_cm7_r0p1(val: u8) { + asm!( + " + mrs r1, PRIMASK + cpsid i + tst.w r1, #1 + msr BASEPRI_MAX, {} + it ne + bxne lr + cpsie i + ", + in(reg) val, + out("r1") _, + ); + } + + #[no_mangle] + pub unsafe extern "C" fn __basepri_w_cm7_r0p1(val: u8) { + asm!( + " + mrs r1, PRIMASK + cpsid i + tst.w r1, #1 + msr BASEPRI, {} + it ne + bxne lr + cpsie i + ", + in(reg) val, + out("r1") _, + ); + } +} + +/// Baseline and Mainline. +#[cfg(armv8m)] +pub mod v8m { + #[no_mangle] + pub unsafe extern "C" fn __tt(mut target: u32) -> u32 { + asm!("tt {target}, {target}", target = inout(reg) target); + target + } + + #[no_mangle] + pub unsafe extern "C" fn __ttt(mut target: u32) -> u32 { + asm!("ttt {target}, {target}", target = inout(reg) target); + target + } + + #[no_mangle] + pub unsafe extern "C" fn __tta(mut target: u32) -> u32 { + asm!("tta {target}, {target}", target = inout(reg) target); + target + } + + #[no_mangle] + pub unsafe extern "C" fn __ttat(mut target: u32) -> u32 { + asm!("ttat {target}, {target}", target = inout(reg) target); + target + } +} + +/// Mainline only. +#[cfg(armv8m_main)] +pub mod v8m_main { + #[no_mangle] + pub unsafe extern "C" fn __msplim_r() -> u32 { + let r; + asm!("mrs {}, MSPLIM", out(reg) r); + r + } + + #[no_mangle] + pub unsafe extern "C" fn __msplim_w(val: u32) { + asm!("msr MSPLIM, {}", in(reg) val); + } + + #[no_mangle] + pub unsafe extern "C" fn __psplim_r() -> u32 { + let r; + asm!("mrs {}, PSPLIM", out(reg) r); + r + } + + #[no_mangle] + pub unsafe extern "C" fn __psplim_w(val: u32) { + asm!("msr PSPLIM, {}", in(reg) val); + } +} + +/// All targets with FPU. +#[cfg(has_fpu)] +pub mod fpu { + #[no_mangle] + pub unsafe extern "C" fn __get_FPSCR() -> u32 { + let r; + asm!("vmrs {}, fpscr", out(reg) r); + r + } + + #[no_mangle] + pub unsafe extern "C" fn __set_FPSCR(val: u32) { + asm!("vmsr fpscr, {}", in(reg) val); + } +} + +/// We *must* define a panic handler here, even though nothing here should ever be able to panic. +/// +/// We prove that nothing will ever panic by calling a function that doesn't exist. If the panic +/// handler gets linked in, this causes a linker error. We always build this file with optimizations +/// enabled, but even without them the panic handler should never be linked in. +#[panic_handler] +fn panic(_: &core::panic::PanicInfo) -> ! { + extern "C" { + #[link_name = "cortex-m internal error: panic handler not optimized out, please file an \ + issue at https://github.com/rust-embedded/cortex-m"] + fn __cortex_m_should_not_panic() -> !; + } + + unsafe { + __cortex_m_should_not_panic(); + } +} diff --git a/asm.s b/asm.s deleted file mode 100644 index 3d1a54bb..00000000 --- a/asm.s +++ /dev/null @@ -1,192 +0,0 @@ - .cfi_sections .debug_frame - - .section .text.__bkpt - .global __bkpt - .thumb_func - .cfi_startproc -__bkpt: - bkpt - bx lr - .cfi_endproc - .size __bkpt, . - __bkpt - - .section .text.__control_r - .global __control_r - .thumb_func - .cfi_startproc -__control_r: - mrs r0, CONTROL - bx lr - .cfi_endproc - .size __control_r, . - __control_r - - .section .text.__control_w - .global __control_w - .thumb_func - .cfi_startproc -__control_w: - msr CONTROL, r0 - bx lr - .cfi_endproc - .size __control_w, . - __control_w - - - .section .text.__cpsid - .global __cpsid - .thumb_func - .cfi_startproc -__cpsid: - cpsid i - bx lr - .cfi_endproc - .size __cpsid, . - __cpsid - - .section .text.__cpsie - .global __cpsie - .thumb_func - .cfi_startproc -__cpsie: - cpsie i - bx lr - .cfi_endproc - .size __cpsie, . - __cpsie - - .section .text.__delay - .global __delay - .syntax unified - .thumb_func - .cfi_startproc -__delay: -1: - nop - subs r0, #1 - bne 1b // Branch to 1 instead of __delay does not generate R_ARM_THM_JUMP8 relocation, which breaks linking on the thumbv6m-none-eabi target - bx lr - .cfi_endproc - .size __delay, . - __delay - - .section .text.__dmb - .global __dmb - .thumb_func - .cfi_startproc -__dmb: - dmb 0xF - bx lr - .cfi_endproc - .size __dmb, . - __dmb - - .section .text.__dsb - .global __dsb - .thumb_func - .cfi_startproc -__dsb: - dsb 0xF - bx lr - .cfi_endproc - .size __dsb, . - __dsb - - .section .text.__isb - .global __isb - .thumb_func - .cfi_startproc -__isb: - isb 0xF - bx lr - .cfi_endproc - .size __isb, . - __isb - - .section .text.__msp_r - .global __msp_r - .thumb_func - .cfi_startproc -__msp_r: - mrs r0, MSP - bx lr - .cfi_endproc - .size __msp_r, . - __msp_r - - .section .text.__msp_w - .global __msp_w - .thumb_func -__msp_w: - msr MSP, r0 - bx lr - .size __msp_w, . - __msp_w - - .section .text.__nop - .global __nop - .thumb_func - .cfi_startproc -__nop: - bx lr - .cfi_endproc - .size __nop, . - __nop - - .section .text.__primask - .global __primask - .thumb_func - .cfi_startproc -__primask: - mrs r0, PRIMASK - bx lr - .cfi_endproc - .size __primask, . - __primask - - .section .text.__psp_r - .global __psp_r - .thumb_func - .cfi_startproc -__psp_r: - mrs r0, PSP - bx lr - .cfi_endproc - .size __psp_r, . - __psp_r - - .section .text.__psp_w - .global __psp_w - .thumb_func -__psp_w: - msr PSP, r0 - bx lr - .size __psp_w, . - __psp_w - - .section .text.__sev - .global __sev - .thumb_func - .cfi_startproc -__sev: - sev - bx lr - .cfi_endproc - .size __sev, . - __sev - - - .section .text.__udf - .global __udf - .thumb_func - .cfi_startproc -__udf: - udf - .cfi_endproc - .size __udf, . - __udf - - .section .text.__wfe - .global __wfe - .thumb_func - .cfi_startproc -__wfe: - wfe - bx lr - .cfi_endproc - .size __wfe, . - __wfe - - - .section .text.__wfi - .global __wfi - .thumb_func - .cfi_startproc -__wfi: - wfi - bx lr - .cfi_endproc - .size __wfi, . - __wfi diff --git a/assemble.sh b/assemble.sh deleted file mode 100755 index 070481a7..00000000 --- a/assemble.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash - -set -euxo pipefail - -# cflags taken from cc 1.0.22 - -crate=cortex-m - -# remove existing blobs because otherwise this will append object files to the old blobs -rm -f bin/*.a - -pwd=$(pwd) -flags=(-g --debug-prefix-map "$pwd=.") - -arm-none-eabi-as "${flags[@]}" -march=armv6s-m asm.s -o bin/$crate.o -ar crs bin/thumbv6m-none-eabi.a bin/$crate.o - -arm-none-eabi-as "${flags[@]}" -march=armv7-m asm.s -o bin/$crate.o -arm-none-eabi-as "${flags[@]}" -march=armv7-m asm-v7.s -o bin/$crate-v7.o -ar crs bin/thumbv7m-none-eabi.a bin/$crate.o bin/$crate-v7.o - -arm-none-eabi-as "${flags[@]}" -march=armv7e-m asm.s -o bin/$crate.o -arm-none-eabi-as "${flags[@]}" -march=armv7e-m asm-fpu.s -mfpu=fpv4-sp-d16 -o bin/$crate-v7-fpu.o -arm-none-eabi-as "${flags[@]}" -march=armv7e-m asm-cm7-r0p1.s -o bin/$crate-cm7-r0p1.o -arm-none-eabi-as "${flags[@]}" -march=armv7e-m asm-v7.s -o bin/$crate-v7.o -ar crs bin/thumbv7em-none-eabi.a bin/$crate.o bin/$crate-v7.o bin/$crate-cm7-r0p1.o -ar crs bin/thumbv7em-none-eabihf.a bin/$crate.o bin/$crate-v7.o bin/$crate-cm7-r0p1.o bin/$crate-v7-fpu.o - -arm-none-eabi-as "${flags[@]}" -march=armv8-m.base asm.s -o bin/$crate.o -arm-none-eabi-as "${flags[@]}" -march=armv8-m.base asm-v8.s -o bin/$crate-v8.o -ar crs bin/thumbv8m.base-none-eabi.a bin/$crate.o bin/$crate-v8.o - -arm-none-eabi-as "${flags[@]}" -march=armv8-m.main asm.s -o bin/$crate.o -arm-none-eabi-as "${flags[@]}" -march=armv8-m.main asm-v7.s -o bin/$crate-v7.o -arm-none-eabi-as "${flags[@]}" -march=armv8-m.main asm-v8.s -o bin/$crate-v8.o -arm-none-eabi-as "${flags[@]}" -march=armv8-m.main asm-v8-main.s -o bin/$crate-v8-main.o -arm-none-eabi-as "${flags[@]}" -march=armv8-m.main asm-fpu.s -mfpu=fpv5-sp-d16 -o bin/$crate-v8-fpu.o -ar crs bin/thumbv8m.main-none-eabi.a bin/$crate.o bin/$crate-v7.o bin/$crate-v8.o bin/$crate-v8-main.o -ar crs bin/thumbv8m.main-none-eabihf.a bin/$crate.o bin/$crate-v7.o bin/$crate-v8.o bin/$crate-v8-main.o bin/$crate-v8-fpu.o - -rm bin/$crate.o -rm bin/$crate-v7.o -rm bin/$crate-v7-fpu.o -rm bin/$crate-v8-fpu.o -rm bin/$crate-cm7-r0p1.o -rm bin/$crate-v8.o -rm bin/$crate-v8-main.o diff --git a/bin/thumbv6m-none-eabi-lto.a b/bin/thumbv6m-none-eabi-lto.a new file mode 100644 index 0000000000000000000000000000000000000000..f32cbe111d23515305d016b0baf45676c53a9818 GIT binary patch literal 11940 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 literal 5782 zcmd5=TWDNG82-$+|L4p(XJ=csr}9IiJ8HKi!lgYxy>_rpBsw~_X~kfzh%6OxHvC)Hz(D$Ft|$Wo zLz5H5{N&g`KG2?KJ6FgKYs>(LGh?aa#PKxi0_&`*#|t?%n#hq8lR4D6e0DrlILel` z6KOAG9!EVjJc4?9gubUovLZv1`C{hS=JDjDw@&3&XIp2dT9vyxJG#8(8LU0|;OafPnaG+Ys=u;R!6w-#Sjf+Ez4Ht4nOyJ8LVPyYoBuf1o5po%m(%sfm$}}H z3j?QF?@{$6>iLDJQb(aCi-FBA)Tq81^mSj%^~$vb>ULa*5r8XeFk{5|y|F&ocl>B~%-bE; z#R-M^v|~;3lHD<9cf9FXp`UlcK0mYt7fi>kSU0tJQW3n@Qic8~E@#GRl33M&Dz|ZU zmFUyuJ)jD!efU74XJ4Wt zxz*drf1=RNV)S-Arr+Ry5q~}6W2}xuPBhjx2)QYYE65rDjkvA1IrF>G_?!8+?YuAl z#Gf6HJ>IsH_pC;h%B0d+!JZYV+_rCXzf{#%_t%8BHcX-7hTd{~-HNMue^TX&DSL!T# zoo__T#hnbtAH1`)<2@Z3(GX&;G+OpX%f7_2dmkPnawTTjW5%S=l_ty1-QX8jnk{>? zZ$!(*kA!gi_|Xt3uEZ^SJYePcWtM%JWnXUDms|E#7U#zHiz_R9f|e_{S)4C*zj)uz zAaC&rTCS{9?>*+so!pF?cbuF%vl;uDGy1#=BRuZutL4rRkIGifxig!kM()+z^H(c9 zAzmlFAzm;2A>JSdLcCE9YtARNS(eC9$R3mN5O0#H5O0>JH230PD$i){`HRa7A^S2p z9pboOt^C>dfBW?(ay#OTAgQ~FSZuCq1UKPPA|CT2L_Dt3L_BuPGlIwGbs`>vcZt}} z7l=sn3*t(VYs6bbekS7Q7(bX1Y_k|PMI<58LR>4-L2MPdpSVF}A90hnk0RJ4d{ac) zFpjuc@FW3~BA7y<`lScXeG<7t>yVGKqcg#Nn5y6dV%n^})QR6XULga+T86wu>S&g$qBy&pR86wtaPUBf3l6*rWLX}9nUY82J z4&aceb?emjE@D*Y340$o)@{GGA0*c6JYXLs$GR1@UBw;Kal$^!eyrP^wyU_}BJXH^ zo``k(Nb^sKSf|UHUm;?hzR~M9QlIcQ0lI%$8w~ZnGiPP?xE)DQbpCvoaqM4G-JBb<_ z&!eR_&ZDNyv#Du&C)6PGXX0tqSj?HV#MQ|)$oz3U#TpCGvZl=wt>4Z{GM^bs4rkI+ zM+U~S6R`O_J25he)l#-pI-RFS-$#^Ju_k^W?=Sj=bB zQ$>va`-NX>+~U%?rqdc4(Y!_LT+MAAeXwlA6~%QkT^ls^ycOs(#msvTI)b_`aJ;Tc z#poVFPf)i5d@-H*4jbD}=oXvzsO7J(jPAIl+YQeAO)>F3kB(q``@u~N)EeEZmhQ1K zy0P01kHL9I%IH3|bYo?7pIf>-xQQLjQu}L5R|H=y-|sEm6J>P2Sh|@qI)3Ma z`924}*!``8D5!f8y2bKXVd+kl@wd*>ohhT+s&z1{GKV_FKy)$9Eokr*)UEq3gPcXX z6&HWoGAHh{2P}WTfv-isDaPM@mcK*zM&Wg@{PEYj@wdnFw*rfT&rzuue~j6*X>5n? zgObXB2KawiFppE1_Z)Q01D~nVygBWUF|m9He{rv=YR<*$q}CbJb?D9;0yNLwlh6g{ zZL33!=;ORReVBY-vHYFGiz|UXQ>bHk+46U&-uo>{e=WF-zqg=+iyX(WT!MjlnqpiN v5qhayg>Emd_2}uqMSn3|%)z`%(UdlHyvBwu#vf0NLETt`$os|!n`!<93S8fD diff --git a/bin/thumbv7em-none-eabi-lto.a b/bin/thumbv7em-none-eabi-lto.a new file mode 100644 index 0000000000000000000000000000000000000000..e60db308dc33919ec58905c199882441de945642 GIT binary patch literal 16632 zcmeHvYgkiPy71ZrvO|C*C}NP?MlD4vx^qteF(KY-+j#5P)|TufJA&mBLJ+ieW<$`R z(kV{ud`#=~gOO>iI&)}srp|Mmr{SVfhUw6b(_uQE4piFFe$=An%(18KIp4c>vH|fz z+wadj-*fViwbp*K_FC`#UF+Rzlaa@GokjW5d8#EEH8t^}Cz@2KJ-MVPm0qXU@_p=5 zM{(H_Ur|-5V~2q)%`Pi1W3yStQJh`kD_>lW5Gt?+KhPy0B!jjimQJZXFFj$8`Gtb? z42t2eqF;R7CjZVW}bA~H|}jFSjo zvUc741emd^+@ zDl9*WaP>%DOQ5VP8>qJkwWD6SFl%9xYIpnAgVebm7q#sLyEs>)56-cc9Skg2XN$$DFT(pMkK*Pg9b5s0F z4SOTa4eA12-==4}a(k?%%e84itMRlor_rBwnYiyvm$6>7w5==mv?yoJ@uU}8Tc6B) zGUWqHTCYVuhSEAaQr~4##>{eiM#{yE)N>iLE_S4RK%_o%VO`vNwud9lM@p#{h564_ z!#`n^duMP7iHy1E@H`ZS)+-SLGEj2+;D5u1G|#=9kup4#(p#JMzCC5IHI1vxBCE5= zovQ;CNUtbB4IN?!LaKq5c-(&(il^eo6te3c*+(E4S~hBv2Th0kxrh9DZCyr`e0VOJ zVJD7JRGpU7XPv|M$hkxcmW{5A&}9Jj77Xth3iCBs1&n&6MJ7J=d&I z&a4w*xPF&8u&aoyXbWyZbIpqE@le(Yg2DQ z>9bo<`dMJ^6qGjSCjdS-q4ZVjn$XxVBYc2Mznby82q1DYCtut$gC~~*D13n1d(IY2 zL1};XOSf?8+EgxWh`TRD?l_lb)!3qWa?SkEm`j)Ey^ryxFcY8zls3=(Qh^8?Tw?|P1(JQ zBb;Xcqen&!YnzVHCh3olw3~WgI>IfLjvYB;?R~uMt5vE5MB6?>#xkM;$6UpVSH(0k$N{AZ;zUQKvz?fO?G zFZP~%b>zkUe|vS{fA=OGt2rXwd~Dq-(nH70$E9h<6Hcx*9=~vM|Hk8|e~jwSPGt`R3YxKYsen{WDH@I;1Hl6kSIb`Qy16S-^(Zz+Qh0G-)JUO7~ETJAqi* zU^UivH5PE>&Kk0^xgz#sB>z+)8{=e}*aGaK-fm5C(@}gke{!E_X^(YjqiAVgO{334 zJ|)2(#^WJ(c|<#E0v;-m)E6%sX_5`m@-kX}X%rlbOrz*d{U9S{AS1PtNpsWta?kj4 z`>m!^qP#Qyyn0b?-)O=PJNZ-*X($SKq2vOdrhvyz?#Lo{+=zlK{9HbRRWJ*_Fjttowcd67x!%}D94P3>jG?=@LX;EXLYd@X^bw>QeKBKdWjY`95w$t)kD zWFtTYm6dw2Bdybt_AWT<+O&&<;BQkuA=2E+^~QE<&S8IUpKX4a5PJapTut-(bz@C( z%z?D+X}wI!<&4x1I#Rz+q+x_JQb!r_ragXRUsrCsbty39tIoV(Yig5#^t_IDEos9;vj>J!KL7+)C*`*Lm!9$`*LN8kt){-N zywe?~o-Uvx~0rQ{#c@{cI_KWwrxh3pb7gUinc z#a9Mp!#3Fs+B)=pM(W3{DWe3BIkWP@UvMk~+?EVjbNZ|~4b~i>y5E}LXFRjBDNq3< zD@nAILg;^ietFYYQ`Uyqq-d{tH8roc@!-LCmbWOfTzM*W!4I10)o?;w8=!rfeIvZr#HVP+8upN}rS3!Fnr;%gZR$Vy%8L zon2PEt;kohlgiR)^$hDYIcQ2vtLbdokgZZJSddp$_GDRkby>c%+{?O4eO})Vm8GP3 zTUjYv=BqNUW8JHW}FCThxh1a{BbyRJm)|9!+sfR<;YZ(pW z)YAqH?WP?%7pu}6b$Xg%943`P?Q*IB|0<2zyMrm&VJO9GCZNe(0R?>MI=W__q|0z2 z!SeyostAIQ!On=b5s?unb`$nX{y1cd)g!wd3dRG4gX^nAt`;gtG-^;#{Wg;H8AWF8 zrC4sL&wQvh=`b;;F(G>Sb;4;DOCmT*Qc#RX#bb=Z9cC@u@osEH@~Mv12hHa6cCm}2 zkfe?p#*sT1TQ}!SM{JkALNv=vMP9Ir&?Ze}a9us>CukA<2coGqN*pBm6c;-HHb~Hq z+xsX~P0!3gPvI#ln|@Cr7ry*Hf7$ZWB$N`EQ8p-caN;6P+(L;R@Q0-KTHGi?iA9vS zj1vDi+5B?wH?{YO%Q&%PP^_NO+_H6GVC4O+J>73_J@?7V=+lk-<@+D>d@|6xwQr#F z?T=SR4+6%of)9hxiejYREbtBFt}UKs>rycBcB`qstM22JbFFcgE!cH^oRJ!`xkT+H zyX@~aFlG5LHfZ_ZZL%>K0=)x5z+52v^4k2lhrvOJmbUowz*#hPVbL%YLia*FGt#mM z>n4O4G{29Ht2dqy<@I-6l7C6dF7?Yx2IXJ&%RcIteMZT@=$9jOjYcRA`p#X|)3jb( zAA#p6EOb2S@xfU2MC`+B&ZpEzP~;P-HAu{@-bQk%D7e=Qt7wGgiM!+L?21T@`0V!@ zBhckW3nA{zLS{3pFmRlDEYh6t>sZbp#hu~9PzdEhE#Qdp+|*YkwqB53r{#9D_)A27 z9TeMX>Awt0Pf;=d5|nOCZ?4U2uU$5R9mX=;u;w1Jf@1~`v)(T473Xi zo#kadZ+S_f7ih?cbhY@(jh5%+qICp1cTZ>5RP7{a3pj+&4%V8lT!^pN`6| zH_5-As)OATWQZnDWw8t7$BffcZX?UX^b8QFM6w)&G@*l0DOg51PFr^^$VH(L-BAbc zjHmTG;>iM@wc~jDY^3kbc&M1Mlr0GlY0vb)xJ(_Q7GVml?hu8>`&WtWk7Y*c1fkoG3H zl#khDLuQ$MRQ53vzd0HM(RV~4`vQrFM{!8D56V7+{UPkr24xVfhs^Sikofh{m{uz0 z7o#z!I4P9JY%#w;G2lpG$ucr3gN4FalkBrW8L0k$aI!1>j2}Y0SIGVkEuTzXNAej$ z2~qrXR}Sy}l&~`6h@~wcFI>Ws!Z_ehJ!MTk4Lev^u~|&@eq)5%WbeX_ahH1R3 zY4N@!75E&ot$NXUUJqSt3A59=(+Rp=-x`}K@h7cQ?A3tj6oH?3*Iq{-?TBQy_@g_6 zV!^@W4f^xK4(3tb!7Oa3OBwD+jYRDk_C0YuSxp5CnmZS?6f8X28OhkNz6&;3H(Oju zJ8dYq5Ct1774?)-Sqs;fEw4#Yi$=UBOL83cGb%y1XZisk1GX=MaRgfGlG?`C1(W0FZ*8H~(NIiib%gH;t&M8GH`#XY1-L+4X#KW1 z&X4{29j$h1>=f*_tlWdgs<({OGGrr%!nE8bcCIjm^{m-Hjop5e^&5(Ly-E5Dh4f_m zw_U$27h$>!3q9WAQl|1ro(3kQa~(P3I_K;0`=;t#yX$pDN2$DCZ z+7?Rx_O|s!*tS~b-`=*m@(%fzerwyRWOwj-*)dMb*EaI&JKNTtWntU;YC7AxHFocb zTe-B!Z{j+X!Hzp_;il~21Rqf4a`Si&jpI3YJvo;M?FVk-1J14ve+7_~NxW7~Jd@y@%DJNeRTH%?MOTo}i3(Ry;xopD@o ze;CKp)8Uwd#|_6a1+?4xo)=sH#K$s9+Dga#oOh&e_Dfs2m~U!(6R~@FB#w`;muD(j z@TY~PObt(m1?X6nj`#GMYosPj$9R0RXZB2rZ`^e8Z4KTZY7d6u+xnU3_}%}V;@i?G z^mgB7?>~v~X;vyBdCi6~Z{GV0^y0lgBj?vEmIvn_Z#yD~y}#%%9d$VDQ*8v&N4nbg zDYy;cBtX+l7eXC-2SZ5!Gfo18_LuFD1K9K6{38>wzEjye9_w)qpktjo796y zk4@U9fP?|w)QA3BkoX8Kef_50dT8f<%AeOKQug>$+6iT_Zc$soef6D-PDBVvfbncV zgtE_S9Dv<%hp`9ezH=I_#&(esw#M*WB(#HuvbihwroDe?_De|qd6R4yiLVIwj3YL= z0Z78rm(SZ}I5_~DeF~mK$Vbic&u@cvyU5f7Xj?JbBXxN}%aX~7h>3Ot^fA?o0PU>C zx<$9a4YHQk2gUyZJXByFhDs+Vu0Z15K@u_*)lHa(fZIu&Hx+-_gv$yK?))k(ot#n# z@v0-Q-=D|T=5-UvT*u-bQOek@%)~vjxDI%p1f0YPqJEJQo<%iw<=h6tVOsv-UHKN` zAz%o35=hZNCd3Y@6-b5QhU~L`*(f|a0e;?`0107h32i)Y5%;*P{@$R9DGY$1H?{e0M&v~tJnrO5EF6BJ49HaR@g0`!2fmniua zvmEj^LqSZ%M|3!!b1R>Tq_Nth5kH82S-T~@xg#HxVN8@90`>s#PAOh&|Km9sad#y4 zorQ&L8RIBn3yYnMvk2$jI^>y>uJm;Zu?_Mvt&o?&d$UH!tx$WSJ8e?vkN_PPK!;6R z?n!-GA>~rqSERN_aRl}5UkE#i+L`!0>#02(=sg?Fdp6njY_>-UzF#2*_x?`en)?v< zwld*q=2QfV><;H&ILN>_>_`=E=03-D&|#K@zXKKZxcux;X%1Ir%9x2yNwHn*lU)TdE|CV zUJ-<+XjAh2;T1$z9)#kCf~>xR1$YI~x#Uzq)?h?3MOwAO5J^N)e--vHTrK=#8R`+kspJIKCv_QPw)EWG)7;~M!!cwr14 z9g=&SgTsUR(8Bn>lGV$Zgw?GH>xL3+8M8Jqb^JzXJkNJaj=s@?_d%x*p5UL8txr3* zaN>EO`Ia1g?IgXppVy1$=lCD{=hBORR*k^x0Sb5)(uYVf-tSK6L-n{ez`kHMnE4Vg z^Fq*tLC}Rx(1nJsNJbfm?ljAwLyDjam#>kRr|JS)`v0U0SHil$q~Bc^{tTOC@DX|N z$Q*S+o2RQzWUSwf&ArDhl z?8FCF3LWgW;4*`w_4+%^;(tDt)&fmhfc3y9R|HYuXj4= zQns>^*~XT8d~jywA->EDV*#gOa&j!*ZB_UvOlAIqaHe6ncE#g>WFC(nnz!{)R8Bj3sQ@HeZo}b*mYZie;TngTv|8IvpLfCJjD60|$@wTAhY52`E1n;vA2&7x3Ppn!x?>{LH)l97gFb zBM20F$}5X8quk}*QpUHEFE@Hvr@OeM#97368GLfcUBYau^mtikF+PW6Ew3u`t*I<5 zq}`0xtug5wCY@Vt)a!Jt(Pdy6qd}u}>6{E}%E?(%X@fCJr|-yjTT|*ODP~>M_x^?* z3wJQyVy4Vj=wZCR=|-(CcKM1N8YAs=yR;^agVE6}t8y}Gqe`PwX`L>$!J(t|ZjH*o zYH6)nqc^EtYMn~sa_XVGie}V$w_5L1Io+({4c_}+>$8XT-ChDgdknwHf_^-#di+*p zn)q>|1?Rr1*vZC}lk<>=sivq#F#^5w+oF)}~G;Wv61p+mxS%z^snUKt;?}Y_6U9X!YHeF{&m76E!d){Int2a2* zwBF@l9D0pPt<`EA8jV2*2lKQl6|G@StkLbHO)jk#tW@LBs~rX><1o-FtxBhL8o-CD z86&GQ(keacH0U&HHLJrK&KUKy+vPSHR2r=otejEl7`;oQcQbk&tz#IIUeAK#QX7pr zr_*InsWm2+*6K~P9ykS7;?_7!Mu&+pI*dk|HLwmht=6(8wb2Ql5g4mu!JxoRV6~sN z6R+}jAL%9rPBUOhxs$=3FRX3h2(>N@6>9KntxZ7#J19=p8Bzt;V)$owM(B{hqbNCHfI!FvP!6~$quVTSY{ z?ji^F&Y>hl2w|4`;Mdc@4fsR$^&;)aDDiS@BES8BLyDXhNH`@+r;-t#=#UrFx5r*Zz!nf(b3$|_+8tE#j2)Z< zjJ-ZOCplsO;Lqg4^^zY{BtJKokp|>S5n2w&ctmI<0Q<{{-7dI>{S*ALTcY@Fq|FzYRXK<{nNUL{~q}k zIZA*jMnJ%#bS%5>PO@!P4Q45~1>?p9!~em2gs3oG7i0d52M z4Xk+2TqE?a<0+n#rw7x&;7!{} zlqg25%Ruxgm?69@Mo838-rsV5FNfiWW(e>xkX1GT6zxsRA6)*G2t)%rCv1tJa{F$O zU?8hQHnr&nnqd*#6ySMml$ifv$fn@5t3?tY|C5C1KiR5K6~tek<+VM)jx?H!7{C|aS9k7$|; ztf*NBZf_QWjhez3uG!5UIDvbDlWDiq$P)p9nX3f^`Y{4(jKJT)S$X1lS%h6vU(bQb zuF1Y~!Zig~H)0J*54$GwO3(p!1fFggxTZcym?6w)%s*NVg0{cYN!Al+jvXOg1lnPq ziScxU_eu`qsYkDS<|Rj@0B#!>?G830tR#?FZkngVxMe2hQ|o+@SdqH%EOEKJxo0ni z$Olig3JXh~PG=&_kTD4wZg>DI*joX)WM(=)1vvbXo@W8)khb$=&O|*2U&PwpjG3H> zwH?D1@Nm$BXL;tn-R2h?qhU-qT7W&+OE)-eM~n@tD>lioZnEvIRBYG4ahUGfKKbhB zaJ*#{!P6?DH9Y1s(l21?!ITe#*CgdS4jW0435fwNWIBB=OJD}|5= zT1O&#Yy@=-WvJ^L6d48Gl6`Z`4Y3(>mp3R>1si0Fxz76TGt~0E4e>LsbBd&b4Ua13 zy6WK^G2FY5FW2(rcD~%tm&f?BmoGozODVzk=gYNxxt%Zf^W`zV?B&Z(_);3d_vg#C ze7T)3_w(g3zU<}8Pxw+Q;`{UETE5&aN{9ri@sU4NK_N5;YBi8kkKTw8OB|5Ztp9>jHpe%=W~!ajnsC|z2U`zFU@sWIb?}8I+5%tv!F3vZvp_BJ=P0%- zsPT&p;3ar(i{ZlWxQ+V@A3Q$(;2OUGiX9Mc!-8kL7U2B*7yuV)0iFUdtaCywz~_bG zLM^}-hT%djz(EBe#={G&;aY&}!`DJBz#$;;{e@b9n*omT5o!UxDhwBD0S@-ak0aCq zd?Uc4;VaYvd~0|dp%&oIFkGkw_;!F}x`bMQmxtj(Ex>(YxKIo5ong383-Ip)9G_Pa zY5{%#U|5bqEx>;qh6}X-Zw0^fnRv^? zJJGC$CVo#MRI!DH{AqQlN*z#CLIFpP3k&)4yP*p1fYYJlM=YU%&mV>=_zh0C6&AwL zvBE+)n}v(wiR>zzAey*=aDWO=L9LS;gZ6H;|l(|Y+FI86Vqi`az6cUgws=Ug#i1L)Ma0H6N`$CE- zqlzmltDxbdihMp#WzLc%+lt|z1~?Ww%S)HwS+m(v2MY-U*AijMl9C;zi(QUwi}{R+ uie5}FR%P>DZ+^dT%Ksh+ztzY84+8wEpoUSo9S%oPwsTw6Vj2q?KK~bUjeIWv literal 0 HcmV?d00001 diff --git a/bin/thumbv7em-none-eabi.a b/bin/thumbv7em-none-eabi.a index 5d5c48fb46b9467d23eb59cea7e28831604887b4..8b86100179334047812598cd91071375ce71027e 100644 GIT binary patch literal 20040 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 KA2fEA!2bhC0agS6 literal 11130 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 Wh%RFsv`1VVyT3O$j!IX{==~dsR^<@@ diff --git a/bin/thumbv7em-none-eabihf-lto.a b/bin/thumbv7em-none-eabihf-lto.a new file mode 100644 index 0000000000000000000000000000000000000000..4821df3fee51d8be69d20a508c0f75211ce9d7da GIT binary patch literal 17432 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 KXP?$92L2yrki9kl literal 13164 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 diff --git a/bin/thumbv7m-none-eabi-lto.a b/bin/thumbv7m-none-eabi-lto.a new file mode 100644 index 0000000000000000000000000000000000000000..de66882d8eb3770f46f1102fa8254f4551e07a3c GIT binary patch literal 15356 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 AtpET3 literal 0 HcmV?d00001 diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index 51ab71034d47207bb589c0e51fd443ab0625a2c2..b47f571652c55805636cd955dce8bf0111732dbd 100644 GIT binary patch literal 19032 zcmcIr3wT^ro&V2F(xy#Y(sxP=ot9GC*t~0-#8Ud8kZvDD3I$3_I!PwU(8(msOqvwR z8Y@aaMR^JZ)V9(>1y)gkWkt8u6=e|>{Mg;PDzXZGunI-v_koD8zu$SxoO?O}{r2;G zx%YQ||MP#G*FE>%lRI;k#nSEF%g3HkTV1y}nol+PY*gpnb2M7p(6~hFZy(#1NL6RM z`+M4UF72sI^`_#L@mO1;s`n#n)}I#&g~X@C6?44e%4gC0^W;KwLSR_kCix zETDU0cuar~4UY-fu5fJS`MjT~Bd>AtL&K8-_9uoX4jubi-fn1kqE|jS5Px(tYPcu; zXsCPTAEh?5oozol+C1WGvMcUB7RW+5VL|1nv2{TSY%IXk|!E#8$#wf3h55~&X9 zi=`6nl9mB!-_Y!v;xGfVH%pGjOz=PNI~aOGvK zo7Qew(|XZmEo)j^W&Y)=>_gG|Z8Co)JoLmfnOIj`di$~%YuSj4U-}a9_IO4*V%b=0 zUp6fj==6;8pNyxvvfVO2lb5Re{L2a3P@haf`RVLU_r$W&nMfw3y*rkc7{^&Uld-Oh z^rhqN2~I6pn?WsWq$QS)^~li&t^&+=yf-x& zp>8tgw(+ZadbzaqcglQ@&n4+ZHf~x(H6?UB>9(?@Gqs>lh(*y6O%_Hgmq)cPeH}G5 z=__d2f`yArf$Az;TfOP!xz5~NYe(0qi0wuc2Kpv1-g=^ajY3}jE)rL?A{?XC%GN^4^mi*_ zoDv)%`CDSKO01=06`B}2bHe1}$b_=#GbcQ}YR1IS#nVN?jiJZ{kw{T!?c|;rkqM=x zdqbzdc7a4D%tEGkGRlo`)OZNjPKH85smSR1(A3GO+jude#WO_4%m__G+1Sa@G*+dK z6;;N~z|DJnHLMtT!aQg$FD-@9DOEBtG-=d|^2mgy(hrrM1KqMJ)H*L(JDI|XrAjC= zX|aT-Yvr}5$>g9iRi_k7*tny{RI8Dipv;P|4?$@fl%^wMF;%9YqAFI8ZZ8j^Pef+S zfn;v!Qq=HNR<^WsIkGdSs=`^tC`3O$HCp#K&gv0n76;&@6sE*GMQ({`y-_F_)l7X#oZ1%2Sa^~WwnjCjTo?WrR;DTc zfnG7yx`a*0RZBVElW*1S%$gYUv>RP#rKp;(rK|M;F!fLce7$Z}vnpCEvUc`3j-W$v}=@=_LPKPpzZ>dnKBC7s+NK|&5>$jxn zJ!__77Zr`Z4#9$hcb}?>j8h>V(?r*xsA&9ml++G~nHm%pNxsZ>&FKF*$$1fb6qmAc zGgT9-KK@L!RwY$AGZ83+^IVzL9=#ma!J4;ee`eZcJnx)jCwbR1Z+xx{3RqjPMukvy ztSmfn_Jy`F7dpL+Ku1P!20MNth18nF3{z+xb2Iss4kfsU>G~RSpVHH$oL9(<$0>4@z~+$MFukT7Af-d1kWk2jKktM8+=_vMz`@{!Q$jTG0m$D-9|yI#V`>hb##M*62<=Jo$wM6>VT z2UK3aqeo!vzDZYM;%U7Bxd5K{Has7W`5Gf@kWpI>N0kS@-EUC(e2;$v!PI+$d;yDz z*;u#)7IsVGD@vT-X!wifYI9+Na>$K_xI7=w8<1yo)y*bC29+`|)vq8Twl%I$Rp2JV zIz-dEA-zh*Ed{Q?W^d$9IOfL3kSR<^4GOWD@&N$%RXzyB#>xr!cE9wHw9kU|gk2_5KQK zDQ}}2@&nB$#}QvCx#0X2@AiBubl#`AQjGXoEL?KT`#B#S?LGWnX3ShRkQOf^WI%;osT6;QF6`QRTfM_?DY5d;@oT@5}vTfYUi4l>Jy zFE4s4hc^N17(K=X-tDp64hkPV1GB^5*V!g~x%m6i`oRdPfrO=mFbc4(2UUOp}C>? z2rYc<;dVt4?pdMT6UL1P$2&(Z;Tj8Y1bk2K>-(H5xaU>yUqcZOcc+Dli^onb4p)c6P_@#z zlujuQuMbEU8r^jPX;ncF^#!F3Mw$wEctQ#~eyXte$A!huDe*~l{#jw|7nFFK-|m-{ zc&gv<*9-f8qpzz+r08_kN0|fz~dkF_+F2H%HubB{C1Du zhVWB{%w!{yT_mP_)k6lOOLJd5`b+_(6{!_V|}P{#B1Z;_+{J{0Wag z?eU*@{5Kx|gU9*W;*Qt59v`J{E7UOK>+wk*pXu@Z>$SFDG5kk zKIHN1JpO5qAM*H@9eyYBQCl5pmc0SKPEL33uiU45D`!iiQBoWzpCf+^l+Tl22l!d? zlK`)fZwGj#JQUzHvOmD<; z_+OfvB7rA;j;`AF&8bB4|9nugh~5Nt%FA zk%~M)E+Um4=VnnpMWjAYkc)`@*MJsBq|qy1=J9hpzRKfkJf44&WI;sjcI8zfvN2Co z`6iEF?D5SW&p%nRAR=vEd57?wo3}^4mraso@*D_xiQ?zT1HgRwD&fCT$vKTC!Q;b5 zU)zroK1=5H#|U=>^ZMiD>;OMS%?Ot3c#~u+9Ovz)%Blb_murnZXYM5Q7uRa)Yu+q( z;a-uqUn2_w_A_N43iIWs3!k0y9P5uM*X^4p-w60SOLhnBD}*DGx382R7_RMWBphgO zy&MeiCGxWIuk{;cEVxbF+xRb|ulhHv=R?KKTBG6?gSQ&I&ERJZng{oaI}G1v@J@r~ zLB8T{!#`*6^9Id>eZ_vm4;VaX@QViTF?h(}VT1P?ywBhfgJ04(_9?^f*Yhci_RNMT zjCwT@Q4h}WFzV4qgkR3DF#OSV7O!K|&Lw_XgeycC z_nbvU7<2xIM~k}B!W#oJ(3Af-| z6C%o|7#<};uY!0b+Cy9^vW$rKolo2i01s>iroa z>U}2>^*lsGy}v?i6M3B2F7h4XQjs4Lu{{1a5x0R~6DNuMFR@JIb>c*kH;FYOe<5Zt z?ijQ12k~ER;&O}^u?M??#H&Oqi7Al=A}-d|#6D~f6PI9q5YHCbN<=-nh^R-Fh{4=N zOrkx+6(V;Nw}>1u{OiQaME=Fdj}g(&KQ{9JBwjA^TO#b=B*MNJbBw%<2>WS7$WJ4} zp3j_=*ArtR%|z&LCPJ^>@DvexStGxO2>VYO`K?6UcJCri7THg{S>#K^shCGZTsPk! zV$wfh_>YJWi2Q_Di+M%FI`Ik-x7|Mw>qOomV%^~PEa4d#2jXW%W)M#me5eDw9rKHb z+jBj!9@hyG>&jZ&q76Y1qdl-YK$!h{c)DRlKfu6K9KDZ}?3_)RWIGtmi=@ z)}sfAQG6jpTr6^oi1q0y;v8Hr#LtWTj5t^1H-?`e!rw3v{`hGI*N?HpGw{`v;e0No z-drN|s)_qW8j15nRuK_*Bk=&Pd*Ye6?uiFQ62$pfmxx~!xtfT@<)g%Vuuc&dh}=S) zB60`u5ZXsvC~`j${vRbCM*D~rB0n(vIU?$JoQV3pM7$T@i4#A7c}RpkztrJ+IDxnb z<7W6=BJAfAVb5>C!dQRLCRU1^OT;?7kywR!NxWZVJF!}%gIFVyB*M?t#OWd*CuY$u zVgu$Qahb>?#3rm~#1DylpSVNh8RGf4j}cdi{EB!k<{$Aqkv|jH;24bq<>QGcKaIE= z^(SJ{tu*Bgro5SWiO7eE>o7jV1jdI5KUWgr=W1d%<{Pn9mmx$~327@;daowWH3Q={{&!~dJ14Q)qA%jPV==TQ=K14+SKWy+ZB9y*q z@E8%}@m+&Y5-~1M8yrQ%yt7zN{uR^z7`Fw6FCt>x8Vp}X#JDvZzMhCiTx$4MBF3%T z@FWrAHfZ>6BF1g6;WrTXnR$o!pCiY(9Wmt(5;1O%8U9To#_dVNpC-cSxZyu1V%%Of z{C7l*+na{JO~kmBgn)?04>LJ#<%Z899z^>MUqr;XH5jg*b1-hrhOZ}LkS;ZRD-q+? zZFrK1aT_#zHxc8u*YF#NXzV`2KS#v49WnetBF60ltT)DGB@yF+rAUnf9$i%be~gHJ zN7t$TM$=S3e~*a%{RI()eT^roUAwTxLHg85p5fHu6a2{C1_PBi`2E)f#JSOOvrZBYES` zWmMB+*=#z|)}M{zw>j(%?V_*0ExW7lBv~qkAB4Di_+>__D=4xO?T9}GDcoTFBbvfx z`U8=|WwxV6@@qS4q;h`l1; zdv8xQf4x%~?`ey7bi_NVZO9RNC;y|M!o6UBj8ug>#jDQWcyVPW8*AS&f;avgsjwe@ zZ{+lb`mKe-JMqh#_z0%@GpE9CgWndtr;hnDsIU${eJWIP@-Ly3mb!vRC_Cvo*S`l- zc6zQRd)o^J(?1Ia0$6A5;Q$R;RkfN}$f_R9CMA>a0$6bxNSl`c$g~`pj%yjS|$TFA(ZuwViEk zZQYgaUHw(6payH?Uzys9xYw3X#}xyhHF82o9xXmb| zz16jG4?xL{+vmg`4SgH;XdK6r6Ew3>$aAks&LCPTaBJHtrkf zC^znQQwC7U_VcS+FBi81rHngHt0{lX@?G23g?z|~J09G|UFyY6nljoj*|?Qn+&+{s z?kQA4vh7{y#og<~Ei-!7&Ta1?$|$$V#^uz7Uaq}E;MALhgUQCFFSornIdLZ&J=$%C zfg5)(WOl9~n``fSt(S{?6Ut~ml}bo9ZZk4&+DLhd6^d%k6{Jl)_HLcK#y_D zaWL7qRbJc!PTUzrk9KptxJMu>)ZTJ0?nBU{{Y)H8HtrNJ?hz;METc!eThPgFKR*Up zp}2hZ#b2(Uk3o<2r{iFEdAPWw4Hm~7n3 zk$2-h=ER+A^l0}Qg1T{!J3f%j&8ru+UM?=*QD{GpN=P>D3(#}p9&_TJY4m9KFfJ4~ z?u(EWYA^o}4!vAlz6;U*EF4TW?!C}+<38!cMONw2Zl`WXE*9S<3dQ9+j~kcoT(qyi z!DQp|9m$RRj1!mdJJh4y1{_e$#VP_R6nC}O%e8kL^k`p+gUQA{2YEN{aVIXergCwg zK;DhZJ#gy-MY-{PTg|BSpF_XQ_ztd$)IASTsW1o4xx&jfuMiKA3FWPkZ-;*PXaajUMCv%4=`K z2yu^l?d7{T?Hh40*|^Vn?S0dUi!H-kdpXD8A~%=L1t~PI=4id#_^vl`mqE^C`y<%nFBj_~;}0U0P<@rYtMzhmxwk-j&R-@Q_ZZ}E+!8153ZqB6 z!#JRti`xNGsJ(Y-YnG=`SBK2r@n;y4Ztn3JJKdJR{ak*DQ z`!zV2Y}`*k&y8E|#68dG(QcDBpRa?zd30ow^|#iW&)j>VeY2;x#+%PkC+=G4+V&23 zaUU8XZjTrDITIJ#%PQIWCA_!`oVe?qxX*fVe-3|z#`lMwzZ%CM{^gcy#{*vdUNrTi z4wJ3leV)Gt$6t%lV}EXgJ^s{BW&rX#kndS1;4I@Y1~Q^eUqd6lWeL!h6+>@~BVU2I z4d9(PHsPRa#(frtwLw;T@$k>O*krTsAY=0^dm6_44U|o`>@8&6xPyq>f;uwpW*jyy z*C%U3A9t1MeM#n-Y#G-(*WZ)XdOwr?F2!N}UEulKGg0f&7nAk3&hvKwH=+ZO(ccyv z*53lp-xfSz^9NBj+3Y-I-1@Dk)BQ?+TX9%_ygynS`dB>$C(I3-Y+0G-ui5c;1(dD7 z@0xYP+OM8&a~iEb21S@YTS`5+%q6QgOV8(=d=PpM+d@bgm#N&F&n<9f`>zetG literal 8920 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 ImgeREKTfTTP5=M^ literal 0 HcmV?d00001 diff --git a/bin/thumbv8m.main-none-eabi.a b/bin/thumbv8m.main-none-eabi.a index 1b2418da860cbeda80fcbe7e9f246940be6ea251..708b33aac89883b93a99c4647ba7133c19ff446d 100644 GIT binary patch literal 22760 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 literal 13908 zcmeHOe{5Y<9sj=f*56xs?Ft)%=<6t>YWG^Y${vXLCUq^k!2%;r18HA>t(E?Gd3{@l zVyK8Z5v9hNEJTnHW0pt^s3Fr3MhJ;Zj7AX?q6SGYW`8I}iwTJ)`uUuDzW1Jc_8#2; z!xHyR&;9;9-|so+o_p^1ocr2-ZJ{(ed0k_7CJsFg8_@1Glj+;mYb}NwMWkIM+5gU! z4aY?)mCKHZxTWhwk*Ev}joeWz%h1s1+-$itH$7Bx=mpZn`Kd9B$AQPjrwexy&y4Uo z&+C-A&de80ZDQ7(oh#y6EKSW6=I^LC!pQXa(9~#Qbdr87Kc;+{9W2{x!O#VY(9-Ft8ErI4dPe(H zYRLtWZvSRG_qr0<8%~Dd#?iS_dHm4UnXLzNTW1PWv)Q@sPzKsm56!{3v*xP4KBNC& zIC+K}@BY}Xory#OQz(FhbV|gDWG*oBnm&U%-frNJ$)G#FU}Wcd@Q{Za1$0ng9q%c2|oi}Zfnk4bX?a2fzESG9YbjSEhJbp_eZr|ha*CyKA;}$2y zbMd?{_@giQi!WIA1#d_q*32&?ydYom1xI|rLkX|x#}aX$PxuB;so*^rH#2y$#=X~4 z3wb?CVlmMo>DpUsQ_Yt&U*5dF1~Lne0o$r7k~NlMb%J7*E2e9L>Q}=-oa*-KSM8Kn z%viyE$;!Zuw`O+SlIhKE3uf|v0MrxI-fxe}6~7zpUyJs!tqDoq)x36{kXK;4T%PTJ zGv2rNdG_zk>aXVC*Ym!djX%FVetln0e#d)pDU26JrX+D8$eP^N-PzqcZn#luTk3W< zq#&vasn|-#HAiPsP$dP43n|Q$*z*$39JR0U^v;6=lN4rtyuQvjtzYNq>)i0DU+?L4 zMr!>APv79xZ}jv`9U@3clc#Trl%P_$oALI$cb9ss)v+4uVq8j^J$*UrL-z>LVo=e2W~2@vZWC z%LnaWFJH8L;IB=-8q;4W55#!fuMQ@A=UASLHogxfiB4@N#$a{y{( zknG6(yksfJ+SNvxXm9OH7Qza_K0DN7*F7HUf<3qDxbqHa?7WrcE?ntgFYaOWIs_V%)tGQn|Egm<#K6i)DmTSL*L8p514w*!|tJTdZQo_q^NRFN3dif16W^(!n#vy7Jsw&`&j8QF+qR2XgXQ0R!D!4#xfEY~=;bqwELAe}~UKILEqp%OU zmV%TX2)<3ig8Ji*(X}hC6ZxSkp;IzChuv-Yf<{r3bB@G+g`@hM{uFYZ< zn+Hw5c}FXrxo$nUJ$~%EDSph_>K$KR>hW7V9>=cT?fC2N?oKUalS$_U_gOhzhs4X? z<@kXm?^KEs1~RIbnUE$JFJ~zvN%Hw`tKbhx@U;h{Ha|1DW+dc{ijYvvy>Zg?(IK@9A~L3@Y%f%mto(xsVbp;0~l> zZwI!|KfChJ!rWDz_7@444X#g|D?H2L=~KklnDsT{YX#eIM_(tJBXSH{@dmiT>H{9n z8qPjC`29}5oxM|E)exr(h5PDjh|z(M6Jto3w{ai%8Db3SmxwWx>|+ug6qPh!KZ(^?$kFH|^cz?T^8m_Mm-z zj1S(l2aV~s{2(#fyVvsjh|%sb%TE$>%Dt8Srt{HMH)DFsv5nGQskMqWbSF-!QwX@aC8P3DXIJ!qcGXuz@5ZY>j=a+ds9u2cT9e;SVLVwRXbwJ8qIH;7{zu?(T!j8|a0^3ITHHsUzjJSN>*$=Mz96#E= zg2J|PjUqe_hBgY+vHZhgm7jz#uMDupeHFAD_c6pBhKxShAC1eLi+&aAlTKm|q26B_ zx&GE-@(n{ze_ZF(UkmJzWApYKI0SzgOA~1bd%!@|Y@3-Se7<-un49vM zjrbblG2&~z+!dLv`R-Qv$5&nO^=7#vV`f92E7v4`YvFoAY;r|lV-I6v zhqc7$A=5%o!rpG$3koTBTfhXfj9mU&pcz`b2e_j)ejQ$7QTht4kM^( z7=OeT(fHC0YElorpgxgTucXk;s(hOwWJ92(wS{hsg);b{N$0(agSWw+Gc-P+%`0Ig; z{@k4GF7R3hr2GzrIfsJkz5#*K)SW`%^Ps>s67EBB<35MDoscmuS10YqL!jx8Z6ajA zRLY?qgU*ec1EY0VPvaf~?Z*8p;^rY^+%$^DeHygukGbF;$P{Qt_!)}puM3JiWc0`J zQGdSxjZj4(1IOVnV`(CdMXYm&@)sdkM8TFh%*ohJ#)Q8R_JQGgsG$B%%c0PqKd2F~ z+I71JqB!?-*?<~tuDMi9P>m=6sRqx+0| zKFr=YotB0F8lV>8KM0)9y)cmgTo+x?cS{$9I*+NRo%^)v`|iV@UA6PD z8$G*x6@Q%PZrq(!?8?>-$N+OM=0ytH55BzJcl}Ykb2E_fUC;bN-}U!`);b{NILc-c z7F4$g-t~7J{(2yzKR5SU0TE@~u8jCpT$WKAAh_YJlHEHjgR#ks~?zM#WEvpf*+Wi-> Cp{+Uq diff --git a/bin/thumbv8m.main-none-eabihf-lto.a b/bin/thumbv8m.main-none-eabihf-lto.a new file mode 100644 index 0000000000000000000000000000000000000000..15ffca8b3a5eb74dbb8275fdcc0fb54a23c82dd0 GIT binary patch literal 18700 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 literal 0 HcmV?d00001 diff --git a/bin/thumbv8m.main-none-eabihf.a b/bin/thumbv8m.main-none-eabihf.a index 312dcd2356d617f0e0810604defec7488021f734..5e2f805971e7ce570044d322dcc24d85a0ad0444 100644 GIT binary patch literal 23748 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 UQOV71sC3`qy{Pmnzg7_UKSxki9RL6T diff --git a/build.rs b/build.rs index d53dea5c..dc9b3a02 100644 --- a/build.rs +++ b/build.rs @@ -7,10 +7,17 @@ fn main() { let name = env::var("CARGO_PKG_NAME").unwrap(); if target.starts_with("thumb") { + let suffix = if env::var_os("CARGO_FEATURE_LINKER_PLUGIN_LTO").is_some() { + "-lto" + } else { + "" + }; + fs::copy( - format!("bin/{}.a", target), + format!("bin/{}{}.a", target, suffix), out_dir.join(format!("lib{}.a", name)), - ).unwrap(); + ) + .unwrap(); println!("cargo:rustc-link-lib=static={}", name); println!("cargo:rustc-link-search={}", out_dir.display()); @@ -25,7 +32,7 @@ fn main() { } else if target.starts_with("thumbv7em-") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv7m"); - println!("cargo:rustc-cfg=armv7em"); // (not currently used) + println!("cargo:rustc-cfg=armv7em"); // (not currently used) } else if target.starts_with("thumbv8m.base") { println!("cargo:rustc-cfg=cortex_m"); println!("cargo:rustc-cfg=armv8m"); diff --git a/check-blobs.sh b/check-blobs.sh deleted file mode 100755 index 166b4a4c..00000000 --- a/check-blobs.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# Checks that the blobs are up to date with the committed assembly files - -set -euxo pipefail - -for lib in bin/*.a; do - filename=$(basename "$lib") - arm-none-eabi-objdump -Cd "$lib" > "bin/${filename%.a}.before" -done - -./assemble.sh - -for lib in bin/*.a; do - filename=$(basename "$lib") - arm-none-eabi-objdump -Cd "$lib" > "bin/${filename%.a}.after" -done - -for cksum in bin/*.after; do - diff -u "$cksum" "${cksum%.after}.before" -done diff --git a/ci/install.sh b/ci/install.sh index 371cc8e4..fb3e52dc 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -6,10 +6,6 @@ main() { rustup target add $TARGET ;; esac - - mkdir gcc - - curl -L https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2?revision=bc2c96c0-14b5-4bb4-9f18-bceb4050fee7?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,7-2018-q2-update | tar --strip-components=1 -C gcc -xj } main diff --git a/ci/script.sh b/ci/script.sh index 7c309935..fc1e7547 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -29,7 +29,7 @@ main() { esac if [ $TARGET = x86_64-unknown-linux-gnu ]; then - ./check-blobs.sh + cargo xtask check-blobs fi if [ $TRAVIS_RUST_VERSION = nightly ]; then diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml new file mode 100644 index 00000000..9d35164d --- /dev/null +++ b/xtask/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "xtask" +version = "0.0.0" +authors = ["The Cortex-M Team "] +edition = "2018" +publish = false + +[dependencies] +ar = "0.8.0" diff --git a/xtask/src/main.rs b/xtask/src/main.rs new file mode 100644 index 00000000..16132fb2 --- /dev/null +++ b/xtask/src/main.rs @@ -0,0 +1,180 @@ +//! `cargo xtask` automation. +//! +//! Please refer to for an explanation of the concept. +//! +//! Also see the docs in `asm.rs`. + +use std::env::{self, current_dir}; +use std::{ + collections::BTreeMap, + fs::{self, File}, + process::{self, Command}, +}; + +fn rustc() -> Command { + let mut cmd = Command::new("rustc"); + cmd.arg("+nightly"); + cmd +} + +fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) { + let mut cmd = rustc(); + + // Set the codegen target. + cmd.arg("--target").arg(target); + // Set all the `--cfg` directives for the target. + cmd.args(cfgs.iter().map(|cfg| format!("--cfg={}", cfg))); + + // We want some level of debuginfo to allow unwinding through the functions. + cmd.arg("-g"); + // We always optimize the assembly shims. There's not really any reason not to. + cmd.arg("-O"); + + // rustc will usually add frame pointers by default to aid with debugging, but that is a high + // overhead for the tiny assembly routines. + cmd.arg("-Cforce-frame-pointers=no"); + + // We don't want any system-specific paths to show up since we ship the result to other users. + // Add `--remap-path-prefix $(pwd)=.`. + let mut dir = current_dir().unwrap().as_os_str().to_os_string(); + dir.push("=."); + cmd.arg("--remap-path-prefix").arg(dir); + + // We let rustc build a single object file, not a staticlib, since the latter pulls in loads of + // code that will never be used (`compiler_builtins` and `core::fmt`, etc.). We build the static + // archive by hand after compiling. + cmd.arg("--emit=obj"); + + if plugin_lto { + // Make artifacts compatible with Linker-Plugin LTO (and incompatible with everything else). + cmd.arg("-Clinker-plugin-lto"); + } + + let file_stub = if plugin_lto { + format!("{}-lto", target) + } else { + target.to_string() + }; + + let obj_file = format!("bin/{}.o", file_stub); + + // Pass output and input file. + cmd.arg("-o").arg(&obj_file); + cmd.arg("asm.rs"); + + println!("{:?}", cmd); + let status = cmd.status().unwrap(); + assert!(status.success()); + + // Archive `target.o` -> `bin/target.a`. + let mut builder = ar::Builder::new(File::create(format!("bin/{}.a", file_stub)).unwrap()); + + // Use `append`, not `append_path`, to avoid adding any filesystem metadata (modification times, + // etc.). + let file = fs::read(&obj_file).unwrap(); + builder + .append( + &ar::Header::new(obj_file.as_bytes().to_vec(), file.len() as u64), + &*file, + ) + .unwrap(); + + fs::remove_file(&obj_file).unwrap(); +} + +fn assemble(target: &str, cfgs: &[&str]) { + assemble_really(target, cfgs, false); + assemble_really(target, cfgs, true); +} + +// `--target` -> `--cfg` list (mirrors what `build.rs` does). +static TARGETS: &[(&str, &[&str])] = &[ + ("thumbv6m-none-eabi", &[]), + ("thumbv7m-none-eabi", &["armv7m"]), + ("thumbv7em-none-eabi", &["armv7m", "armv7em"]), + ("thumbv7em-none-eabihf", &["armv7m", "armv7em", "has_fpu"]), + ("thumbv8m.base-none-eabi", &["armv8m", "armv8m_base"]), + ( + "thumbv8m.main-none-eabi", + &["armv7m", "armv8m", "armv8m_main"], + ), + ( + "thumbv8m.main-none-eabihf", + &["armv7m", "armv8m", "armv8m_main", "has_fpu"], + ), +]; + +fn assemble_blobs() { + for (target, cfgs) in TARGETS { + println!("building artifacts for {}", target); + assemble(target, cfgs); + } +} + +fn check_blobs() { + // Load each `.a` file in `bin` into memory. + let mut files_before = BTreeMap::new(); + for entry in fs::read_dir("bin").unwrap() { + let entry = entry.unwrap(); + if entry.path().extension().unwrap() == "a" { + files_before.insert( + entry + .path() + .file_name() + .unwrap() + .to_str() + .unwrap() + .to_string(), + fs::read(entry.path()).unwrap(), + ); + } + } + + assemble_blobs(); + + let mut files_after = BTreeMap::new(); + for entry in fs::read_dir("bin").unwrap() { + let entry = entry.unwrap(); + if entry.path().extension().unwrap() == "a" { + files_after.insert( + entry + .path() + .file_name() + .unwrap() + .to_str() + .unwrap() + .to_string(), + fs::read(entry.path()).unwrap(), + ); + } + } + + // Ensure they contain the same files. + let before = files_before.keys().collect::>(); + let after = files_after.keys().collect::>(); + assert_eq!(before, after); + + for ((file, before), (_, after)) in files_before.iter().zip(files_after.iter()) { + if before != after { + panic!("{} differs between rebuilds", file); + } + } + + println!("Blobs identical."); +} + +fn main() { + let subcommand = env::args().skip(1).next(); + match subcommand.as_deref() { + Some("assemble") => assemble_blobs(), + Some("check-blobs") => check_blobs(), + _ => { + eprintln!("usage: cargo xtask "); + eprintln!(); + eprintln!("subcommands:"); + eprintln!(" assemble Reassemble the pre-built artifacts"); + eprintln!(" check-blobs Check that the pre-built artifacts are up-to-date and reproducible"); + process::exit(1); + } + } +} From 5e9347e53485f6c676dbd06b0ded7abdf05b264b Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 26 Aug 2020 01:39:26 +0200 Subject: [PATCH 2/4] Only check blobs with the nightly compiler --- ci/install.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ci/install.sh b/ci/install.sh index fb3e52dc..855043df 100644 --- a/ci/install.sh +++ b/ci/install.sh @@ -5,6 +5,19 @@ main() { thumbv*-none-eabi*) rustup target add $TARGET ;; + x86_64-unknown-linux-gnu) + # We need *all* targets and nightly as we're checking the blobs. + rustup install nightly + rustup target add \ + thumbv6m-none-eabi \ + thumbv7m-none-eabi \ + thumbv7em-none-eabi \ + thumbv7em-none-eabihf \ + thumbv8m.base-none-eabi \ + thumbv8m.main-none-eabi \ + thumbv8m.main-none-eabihf \ + --toolchain nightly + ;; esac } From ac0cb85ddf09fbb379f6844029a7a6bda9d9a0cf Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Wed, 26 Aug 2020 21:11:43 +0200 Subject: [PATCH 3/4] automate, automate --- asm-toolchain | 1 + asm.rs | 13 ++++++++-- bin/thumbv6m-none-eabi-lto.a | Bin 11940 -> 12016 bytes bin/thumbv6m-none-eabi.a | Bin 16172 -> 16188 bytes bin/thumbv7em-none-eabi-lto.a | Bin 16632 -> 16704 bytes bin/thumbv7em-none-eabi.a | Bin 20040 -> 20056 bytes bin/thumbv7em-none-eabihf-lto.a | Bin 17432 -> 17504 bytes bin/thumbv7em-none-eabihf.a | Bin 21096 -> 21112 bytes bin/thumbv7m-none-eabi-lto.a | Bin 15356 -> 15436 bytes bin/thumbv7m-none-eabi.a | Bin 19032 -> 19044 bytes bin/thumbv8m.base-none-eabi-lto.a | Bin 13328 -> 13392 bytes bin/thumbv8m.base-none-eabi.a | Bin 17960 -> 17976 bytes bin/thumbv8m.main-none-eabi-lto.a | Bin 17956 -> 18040 bytes bin/thumbv8m.main-none-eabi.a | Bin 22760 -> 22776 bytes bin/thumbv8m.main-none-eabihf-lto.a | Bin 18700 -> 18776 bytes bin/thumbv8m.main-none-eabihf.a | Bin 23748 -> 23764 bytes ci/install.sh | 13 ---------- xtask/src/main.rs | 38 +++++++++++++++++++++++++++- 18 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 asm-toolchain diff --git a/asm-toolchain b/asm-toolchain new file mode 100644 index 00000000..a36829b6 --- /dev/null +++ b/asm-toolchain @@ -0,0 +1 @@ +nightly-2020-08-26 diff --git a/asm.rs b/asm.rs index 0bbf0c7a..f5b0179b 100644 --- a/asm.rs +++ b/asm.rs @@ -14,11 +14,20 @@ //! assembly. //! //! For developers and contributors to `cortex-m`, this setup means that they don't have to install -//! any binutils, assembler, or C compiler to hack on the crate. All they need is a nightly rustc -//! and run `cargo xtask assemble` to rebuild the archives from this file. +//! any binutils, assembler, or C compiler to hack on the crate. All they need is to run `cargo +//! xtask assemble` to rebuild the archives from this file. //! //! Cool, right? //! +//! # Rust version management +//! +//! Since inline assembly is still unstable, and we want to ensure that the created blobs are +//! up-to-date in CI, we have to pin the nightly version we use for this. The nightly toolchain is +//! stored in `asm-toolchain`. +//! +//! The `cargo xtask` automation will automatically install the `asm-toolchain` as well as all +//! Cortex-M targets needed to generate the blobs. +//! //! [linker plugin LTO]: https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html #![feature(asm)] diff --git a/bin/thumbv6m-none-eabi-lto.a b/bin/thumbv6m-none-eabi-lto.a index f32cbe111d23515305d016b0baf45676c53a9818..4d2f02cf832058902d768da0346e25e743cc8c64 100644 GIT binary patch delta 4260 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 GtN&l2+UZ*W delta 4193 zcmai13v?9a6~42tSvJXLLt?Td*<_ROED4?W%&tKelF+1pO`uhZw(iW%te^oySP-qU zlLv@ADsgB5i!{;HO3~BhQH?D6YqnVyBUg>54)d~M9QK4{MUFp|68M{bCaTY4UuL3AEJ zTH&x=t~G`n<%^wPYxzl`wzDNYqv6?>@se4CEeA`TFSiVrYOl4V%bfpi`F+LJ1uOqk zrQNo2$DFG}D_>fmWv$x5Y`<|;n!9@Ys@H{+)y_5>vDbKsG1Gy?p&K_y)QVI ze=M0;D0syyno-~83)fa_C#g|d@e-~g1a-AaADAN)IPHC zoow*!WucSn>UG^st(@s=Ci^@5K{s>;-N((`RG02rPo3Mh;5beYj(fWA@x4LHLDG#2jZ29RGQXt)|NSdf++nMEE(ThX1LPT3r_~W)Gl;C}`I$$*D-GMhdvU~j5z^p$V-&y%{sZm@ z+s+U(jAyd~wuTu->V_)furZc(py=t2vZo212%fl1fCs1rdDr#akw}hlBwO-aC@$Cr z5RNscjFIf5E^)`MLJ?JYOP3+}5p6aF-RVxTMW`TQxb z;mr>aH(L1zx{UX;=092}2Rmv%-L-X~YwPEC1&y8?u#O z8AZnY84Zp(G&u(yN<3ekwD*5vzui$ylhxMdhGmn+0n3>4x*Z_jvA8xHC4bgfSG=(5 z{SLyvpJ;Klj^+7(T(F;THA!ky%oWeLqSV}SzfSmdi&~(({fja{D@YL*kA$xjive*n8KhiM4S_qy>diM2TZmF(l)6jpbsz zDkyO+B*j8%D8y-OT#oZnl92_PrX)nFNQhU9sVu9+Rhp(1Mv{aO9@rsD#*HeailQbk zA&#dxnZ`)0ENPNL@ie7`G*MAil@@844To>OXM?utp7q+4j;rojF{RgM@J|uZc&tng z#wkt=(X1kbLKGv@lt$B{64MkmMo}@8fKgI@D5>%shy9f`KBm$vLu-tH=sBK~7@E;U zc>=`LUM9?`ygq|q!Wo~9|1Yz$IX-*+=0xz;_H_x3$HEy7^%xfzHY9Qy_KuCQ3eAfg zMbR?DC^RJtEH5!KqbWQc<77@1R958}MUHX2EGmk~$3$6^;u^1okU&b4#iSSyaY9T{ z1d$UZnxT1BJ76~=vA zY{S0&7y29Bco+@heFI>~W^AsUo9u5qxTMd1)&@=r;Ai+;lAO^NJD1E5cb+Kh1@pRb z&Xr!ay&-2TV*^mY6$OZ-o+ch!JqjDbbix3!|?J^(*3-?yQznI zWeEu|7gx?ZA=6OTg=zk$ux zN#vyV=K$$e3$YI|%q|RrxYpWbG4`_zF|fE08-&5ru0EkPwsPk37c$solal8#UDB7E zK0!pCZw~w3HFMn3XMf3V2`UWmyM1O3?pTI+=Xi<9RyyA-Zm7?`%`Qd=^XVu!eo4=p z{?vV=`Ui+U8`2^~#8Cp<@k(tXz4f}wR1oIw5YsUX6(LVG1k7@K0Z<%XJ?UMW1t#Zb z?T~n~?0l?_DnrBB?Vqd-R6hL*Pz5P-up;XPm&^$6Q|XWe-Q9DdHNrYSESHD?XCZ0{htJ+ zn{fVmH$LQb=Uq3ugM)~auqdd?adVKSPmDxCIKAk+H84(dB68*>^klC!5xNapeIIo# zLK*I#9vCCcZf5Wj&8C0>Y#`h}l&*|Lt%pmG*tPlHV_J6elMtf(OG`(3zrWcG`|MjBU$Ihv;N~B#vQ#_ERHum};ehze z*{Ir-X;^8g)?D9;r5`ee<~AmGbswD_hHBV{N1!hskHEv2JzbX%uxFY@%^9R7{)GM2 z?&T&m1X5$aZM^XiGXG-kCmSi;Xn)+?_$xe=4^M7%5fNiWH}p@#A3@t}de^GOhB=UT zGmBGyMO66viv(l;yh_`JW5&R|*~Fmn*1Ttu9@Dfjh!5dDo)nglU*T>}6wq3gWvio4_5#96rv;p{`o_)wOtUs%J_h*e~PV2spvi!tL`t%pG zrHa=8cJJ!BHFn~L_B#&z{lz2aPCn)24t$(ye>w1*_XyBXK96I*>GqSJ`9HAdQVXaB TbWQu_O^F(M0Vf!z7S#R^k)q0b diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a index 563030aafd81d0680a2264db0539c00b201b7510..beedd73ba3afa74f8fddcddd740e61b9f6ba413a 100644 GIT binary patch delta 4456 zcmZvg4RBOf703VgC7ZOkk+jKXL(@P)Ab~U?VK?8|BoHV8Ng>$K0;OPSfdJdIbfVjj z&@GnM3KVE>NNG()M(a>5Bh0p)s&NJsrq&5C>QJp{9j9tV`yndR))Dpm-@XO*=$qO1 zd;fFJz304l?|ttkFFic^@SavDRQpt0huL>zOW4@WS!H%rR)hSCCP0o%`5E*OS+4xM z>DiyypEb{zoWviq$1*A_a>edC&F#E0Rj>GfYk0|4*YbjgskUGB7sSK)rpJ|GhG9If z-6YAzP1?|w$B3)s=XKwi>Y(#-2Q1BVFLpb)!qA&$sFuLxy5d#o6&Eq19A>p!@!C|v zwU-lKQSnCI+kNT1H6%NO8E~6Jhd-Dez9bd?P%=EvzTh7p-2Yn?p$&Vq zVQ+wmEK->|-KAo@Vbv^DGM!gZmU zGwVu1wV~ST+NSDIec}TX%1rd}cBJ&D~(47o6;ZFgaj?JJxZU%>mpZ1>DlQqNaUgf`4>6p^)(xENxC0wHd`joy$>4ok%(3mXXLz4W`J4rQ-kN`Qxb$u2uo# zl@2J~qI8|olawx3x+38&sx})PNexHheL;3%r^tEn0^Lqtks1CA~ zUabnaN9nDpdcFR3EB%DhJE-0KUW3`H!$o{&xkqwLZ&v;TN(WW^45dqyo+>(--z%U} z1>B|*j41u0(x0d&c3AoMsUaA4Qu)0Co>u`ElwOf~AYS~i($6V4mEO8Rb8#^zXdqFXrSJzpDa1RC=*W@R9OgR61M5k5@V#REA=u%aoq3 zbdA!7Q~}G>oLZkAAIF|_1HPd2pwjQCN%pStk1Bmy>9c8Cp8uO^2H=F!F*ON$mCjW9 zs4DR5O22t!e7iiZ(^ncqH>d{JE8TecktP}^?RKu2b?KS&A_JZF_0mbEEAdh3uw$;a zyQWmcWnZvPe2#1?Hj}ca*+R;$ZyPC_KEAIU*}HKOIr+c~r0h8klLf#i83cYx76QK| zWy|?Kc^&Xi&n~+JII<(lA;q6BjMGp;g9KKR*8?-jVjx1wzJ{yQnF#Pb=S%`tkR`xc zvQ!EuCjy?3WWIxJpqca1zj;sOrZF6dYYH}vfM23JlWEkjiWSTj3 zz)~9Oft92bvYwPe21wa)*750TP-yJxp#o6I3n z=JtN_i!%N%@}ff~6Zt6cJ#v;THcy`-<#qlua<)t^QfB5kvJ?0lIS2SR`I!89A#1>y zD?>p(4oo0#lsQIzN#+Y#{@l zo=D2gPbMXOBSIVm)X!imZcmd1FJApOiU2-R$f57u^Bi8~?lIwsWa=k1JQWAZWltizR zeZY^%4Zs+=5%>kU3HV2rUoN8Z2UE82?!?>EH)d>bUu-fZUYC*KRCt?|DR6<5q4yi1 z3^qT39NZRC26YK3!`Mg4FvUq3mSIwc;}9vsaGaFKe>QQXdQ+x}+TzfD`%>6%e;kUM zDYiZwvmg?3InB7_Lw+HK@X08p?$LwH(-|nlAnqKQ`h}meP-#*b0HFwzy zqE+nq#)A)oI^Y`3&7Hly}rYcS9ui%M#}bo7eYYfB?#ImgR@X=0bjgjse;q{umEY=5NOnU`UQ zBjq{oiJy~){yFxINRh8+9Ppa7&9ncC3O6r*9_W2Z58Gjdq&RN?8UYU-!u6V z>h>II&lS&2?GZ?7oy7s@+PGBV4E{FqqM;J?r% B)(-#x delta 4424 zcmZvf4RBP|8HV3;lTAPtvyfj6`5}RXq=bZQ{x->mjm9Jx3b6)648?#H0$Z$3ri*Q0 z2aN&(iXLFFrL|0L2U{G)RYz@{(Q2I5;b-hrJ4!ok$8oTAsK+O&F?&w!2pa467tC!~R8zHWaMR|Y=v~DNf^`i8 z8#jd3*A&;*)YeqhG*&HMoVea!n`(_yYCkd!^39(C`J~F%pf?eAI*pl;7)d#u5-$v} zC5Su>^2`hZ!iviodS_%ZVs2Qpbq>0X&-dKog6ZhHpn?s>*XtJZ-!cYtX;f<59e zp@|VflOs$yL8m*ylt7OT^y*7knS2TPoRfUas{g-)IOF{jGw7e3!IWzl(Bls#kKf>q zF5_$+A76LBBf0wx6W#BWIM1(d>Gp}~YZDOVaKqVp5}$naP@i!q z=X1D|+ht8&j=9e*_qpZkc5Pn1jpY@^BfJ!}yCsW=TkCd977@4BIv5 zZk@%r-=utva`(AlEbbk!UUk^4{C4Fr<-3&cQNB<4gPu$3McnEU)!_%qk1Kyd`6=Zu zDIZgQX55+j5x4r*c;HJvul%pdFDU<5`De;6D^E8J@ciBcGTgwV=PEByUaGu8dA0I( zM*SQpz>qNk1Ky%`BTcDH52Fe zCNQcxj43~-{B7mum0wW)vGPmCyZ(tB_^;}a>M$SpiMZu-5QC=2TfrZNJ zls7AnDDP3;r#z-SenbV1D*uu4*OdQO`8nlpEB`RrK3{p|RBw|*7EKL^H!5GQeD$O!x{4lj zOuM}>w`f*}d-jPU1>K4Ck|U0}(*Af}d3*)%EopMvfjh`+fF0y=V1&FD;7@{c9l$rg z(+T{H>;j%5zYdI&%YZjY`GNd1c|GtCQhp%+VVr?t2Bc#pxdB*A zHUq7s>`VAUbXEdG;0Nx{Illym4Hg2Dgvw%xv1#p>+%9d7A)ma4asdpNIt4X=7 zW#ks1irfS=k@5?EEjbAEI+A8iHL#Ka*(vsuGLcQBOk{{`0`4L=$`z3z;D_XmzzNS2 zNUj08N$J0e zlztmL-$u&uLtgy*q#S?07q{ee$ssZmc$B^7*^rKTewLIy$nVHX zNiI?{^KWD>@GtUfz!&7bz%+RVoIF_y@;=}y@+!$Oa<}9dc{LCu7h(yPup+ynrKJ2B z=q2|`l96+O0rGxeD_H>CNy@Him@Kqkl;?(ITE}VofnSnEz%yi(yhF$Xz#C+-JR{@- zz7Wf`n2J9ja0sDk;ryO{gfy2NtasluYvO@BUlnFdX<^Zpd-v-W-i{&!Ndf=aA zQ1XhblfM9I!rK5p838iM7NC#}%bSf{B5$-bK7sPCYx6oR^*Y>4wgT(P8{|s7_93r* zgzN4 zld>XAiPuR}b$$pRbFWIy=8UW>41n z?TPxR>9E-iF?+1uZ;v)aO`r8O#_awEzunUqHMiMM#fBUGc6(FQ4B7XaVm8|3x0^#z zGh*Kg#cY4bZ&x=*%^^G19J9-s{kFTM!#rjWw5+hLEq?ofeEY)zr_b1J;T(IhCE$Ba z)^@jjvo+JsX${PLM$%6b1%2{ux1rX2rzg#>YAth4q}!dXWi$UM?aUswci2#_?m)pwoK9~1JV1}%<9Cpk* HLqPaH5qiY? diff --git a/bin/thumbv7em-none-eabi-lto.a b/bin/thumbv7em-none-eabi-lto.a index e60db308dc33919ec58905c199882441de945642..7b8a4f87f21a49ca1a935d498c351a01e02bd035 100644 GIT binary patch delta 4823 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 c&scUtV z&4HM=B06WpiQREpwLG)3Ol^mxK=uj7qYDo_bDjC|Rt-&7zT@x6b0&A)1=>*PB#6El zQ4&f}ax+0#{?Sf?C}g#!9Pe6M4U=@iQ%%pc4kO;HdPVGJD&YbMJ`E%#h`|oH=Je{(!vP z+yTAva`JMra|*Ka1~$KGACGKa(`Ay!Li68~-?OZP=0vytR=O$fo{)5hqV=wGyv$?rU!1@nWxPsf#b=H) z(PQ^-lcmKmC+I4^yLGB3ELLYfX|XVSWe{tESnr^Gi)DFYq}r&eHsfq_%<-P6YCAIQ zZui_e`k?u^d*Z-jA!kHf^uadS&ir4`hbAkvt99KuzHO$brkG`^Jpwb>N+@=YJOp*6 z(p5^=C_P^3`<3=9?Q|P$0e8TeDqx<{4=a7aX$cyG1wX2EKe#+H>P=d88V1v?) zO24l3t4i-y`jFDiK`rCEcd$dM{|6)fR!rX zX{A54g2RR4|E+XG$nEA^qx1@;S5Z6TyBC~M3Exw9^k?PIR5S9tihoJzJxU)G9UR{+ z;HV1ts~Rv(4Va_!6YBaw%HLDXXlg`ge7AtUDqxw?lhqV%P$(cKq4Xs+0F;hWI!@_ir31Z`AzkS#rSp{D ztO_hp{&J`m-+utb?raZ1xc!l|Ev5F%D+J6 zt5g2caLx6f5N;4XQ|VfztCjvi=_^XFQo16nz-gR~eqjdcTD9#aD1Acd9ZH|PnXmba zzDFWDO=Q;AUj!zbEtx&7Y0c*{=R{aBCNC=^5DUza2wOhD7LoE1_;XUe`<9cP0X|S| z`FLc@+3~B@*<^1ioa_TUMoNLdB&G1DNhy32DTVGNrSKzU8t|$m z&mp@n@H-lQ0{oFo2l&LdGl0L5nZW1d?Z9=iA8>=b17J(q@*hT|thAjCbR_Qtx{>{X zbTS9XCUb!TG7n%Y+WA0@Eq!PY0PdqD}uLvhWmTS)^hX9qN#IrRS zH_O#^q+DO`+8-yS0KVL5H)Nso5P2`KmE0ifzmF$H(oE!Yz$@fX;PZUUlZ57=e06y#>0D>+PhjNB63b9On9PhBDFU&NC}U^pq?pEcxf zq{+zP@_r!Y;kS?+0W2oB0?SDGKK+%e*OF4`dQu8)BDVnt$ZFsiITAQUHUV#vqh$Tx z;mLO33OO41)YV^-lJIL%62c?g0kkJ;fCN|fASJF3DRKSDoxt7X7@&ldfk%X_N4b11sIN%X-53rP!FY5+!FR+Td4|s;006a(TlRG5u2lkUPz{{k(`cIJ)fpf0D zNJ@d1Nh$CX@&NFqFknxTZlpmHL`De@0)X)U{V@+3@ME|kCa9Xkh_2l z)xd%8+N`GA;rJuecrGH{<;Q{2L7f+-g_&v+@9z)7HFC=AMpCqNqt)wiQDIT2E z{O+J#9?NHz6mB)qMPAeQUY}KO*4^tjH$=r3`K;xpp~!Ep4fUGHp+0N9Sv1sdE*E>v zH==f$8O45cro?Nm7W>T5Qm>g(;xoS$UKHk(c};bx&+HYRF7;U#O>UXrY#in_$I5)x zRnvQz->fM2nw`UZ);Fe8x!*ii;Wg{aedfB*Tj4YFD!pcTh0lsNEfsza8)zXHtHjpNP>_Nyw!O<~tBJHXsKfNO3#*;}pQqgD9S4rXk1`k3z}{FJzuU3OS&c&!_rBR2lZV}WmZGwzQg^Donl z3)u@zQ+0;*nmH@SS*Asfr%l(9JTG>R^X0hFtdrwg=J?1AkFT3-Tl2}tG;6hq8I@sm JH@Tyd{s)`&RTlsN delta 5371 zcmZvg3v?9K8OQ%Kn*{=^1W3XoghUdPkP`Bufgnl9gCvjuK@AlQNO;I=4H5zi6uZ)L zgo?GurMyHCc|R0rD5r{8YL%ibSUD-ua$0GnmePmV(n?$F>Gz+^HoIThb27jAefQ42 z-^{&pXC{}oTj#c0>+iFNQqB12_+VzNRp)3X ztD!shS0V$m$bA)tlR^_cHa--5*>Q%3+xk)fedr9r(Hq ztkHpIY*QB;o-w~h7RA^ad_CZ-xGOmYeI+b zHCMaF2ah;84UnKa_-A0VhBM;v9pMi`oqXVQqKmJGimyAxh+`WaNzkk+EB>W+zQq#U zEq|>`y5)LWU+6X2+j_fCn`Ip~=lf+_iRQ`valHpxUT@b}uU%`~uq=3;ygY-<@q{>Q z2y0mRPQBr**UM`+MbvxS97~9|-gUO`aoeX2cWm$q3oEZWh4EfHJEE2APB=~{ar4ei zea5Ej&*3Du%1rDZZ$0H~*Kr%%U|HU1$+S~VL?4@-aICjetsND1qC4(fdv{0e@XK;I zRNE8NCY4>X7HOlLhKdAgG z%BLuI)-A?@Zih2eg}KTXDi0`MrF^aOb;`f(dN6dxn^c8u%6BN=t^APklgeLHezx7E zfA&nn-le7Ew`;m-M&#CJRA*M5eX%Bz%5S3Y0)lgf7}-yi0Wu-_wL0s3*} z-&6jE@}DdJu)|yboqE(`O*W@8l6o|-?f?BenBICN<57=ww<#N(9-It3DrL4jX%~^T zz!RiglGWrmfX^&@0>DR;El=RRq`bWzBjt(vIynh=pS&OVkd!C$pUHaQUv6ApuV6m_ z+(k-xtT4y`S9Dg)Bp(BE$qHa3DQ|IAq+GEF$oaq&ayl@ZoGFQubAV-}B=`+d5`UJI z#J7@?=pIrMKT6I9PH`Qy<@DcVU<7cU90_m%wYvi!k@8)0gNy-gl0AUiWIn)k(OxQ_ zHFEFR!{r-?ECu?Jj{|9B3y?)F0)~^#0GBg+F;K^K&@Ke(85jjLkdnw8QW9w)%YfzN zLOCO{9C)6Tmze{ub9Jy~oL_b0XGpoS@44|ynl;gcYxhWWkA*F$MQVMwY zvw^{GJfEBeRFmZZ?`GDU>3S0>$G5oguaa^+Z(7C;87*^&>;>#3H_7-PlckZAx3C3dk}Ol?PGBXO46Jc|Jt>K9Bqh;ZISe>M?gHK=2g>-r&z+ZmD`X1rvFo3Z(%|1nX%JrFZlEif3dFfSfRuUzNvW4j z?g0wPdx0`iIv!8%l_xHl20TIr_W|>`lMXyi?gv(o8Ne#?0I-f61Z*H=$1epUgkBzA_0y$bvgscJz zI?MRmV}KF{s)0(k!bG=1BUuT|Cm)uT&MjZ*mOn#I0lq_y2ey;)?Y^6oj$R?FByn0UP+SNCyzaHKky?`=9jbD%6$5iF7u}g7pKF>MG|*pJ`|8L z-gTsm^L$dWTTRM1?jU8@%)}ABTR$4M*K0MHZx-#8?V#d-HOuTO4w#H$pGht8TP^0f zl7Q(`;xn8e3rvH3!E|Fb|FO z$-k%`t4+unET{UJEC`{WTr%)4T4H4Amm=eN+T2@{l35{lqCA=)vjXz42M?A(cAnPZ zM_lb}nrqVRqG+?NChe}3a@1Ox%{;2XoUci+C-g8kq##Oei|Z0(!8DUtn_ySzeljE$-cPnUUYl+mF~5*)y|KonTPMsQ+18th&UU$M*P30jecik> bF5TN8i}_LW_i-uKO4E0Iy5%#a<9q)X9urs- diff --git a/bin/thumbv7em-none-eabihf-lto.a b/bin/thumbv7em-none-eabihf-lto.a index 4821df3fee51d8be69d20a508c0f75211ce9d7da..4efadd8043a3aa47bce94e7bad634fec023c1ad1 100644 GIT binary patch delta 5017 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 diff --git a/bin/thumbv7m-none-eabi-lto.a b/bin/thumbv7m-none-eabi-lto.a index de66882d8eb3770f46f1102fa8254f4551e07a3c..28e5860aba074018c3cc1ae2ebb4bf3c0fae6c74 100644 GIT binary patch delta 4693 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 a4;ZsuwIuovOi$mo-Wpde!>ig#&;J1mxQPM) delta 4644 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 diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index b47f571652c55805636cd955dce8bf0111732dbd..4559ad4a432f5f4363f29e3d8d870814487bcc63 100644 GIT binary patch delta 5111 zcmZvg32;@_8OQ(UCNF7_M1d@1K@%bggaonx36OwcOTv~s7B$EsC=eDwDEbJ?JYzvE z*b1BovI(Iei)dvY*xK3|wOWf%sV&n&ZSB;eGgOL8>QrjC?|Au>j)a7mIe&urKuU z_;JQ0hPou2jVZ{#MeJ^+nZ-L(*essic*|DZdBe*TZA(n;QkHBQTvcYX6H^K+Zl<80 z*SM+&4d1$M7!_$S%FazpnON^OU?^ULY1+`Jo%M zjfaHW!mP46NvY{;qHFz;+O_PuCDL^ZyI%B|p6X_8*rE+jJM7SXBAsTuC(`epZ81{q zM%?Lvwb`plX~6?--8b4EiL^a(y=|wiUx=R1#-qn_sf*dd^|D z8BUx$LmQhlAb1a#4ApMQBCKnbo}je5sa;#xf10YlOX+~p?yG~gpf}(=<7EWoI+&vz<}1BK=`BicQu-mK*D3vISj+g{3|1?LfqYH6S9pdu zsrn4Q4La3dRr)ritCenYHOKb?XjBffls;v`!$thxQo1El?e+JR(oZP8nc5xSYp_Fg zcu+loqpJR&NyvT~+#u6B*wNpj|mk zP)jgFJ;LouKdba1rT40UPj!s%1+Y&!yskPpt@L|Jx2g6QRsElp{>Xd&Vh(5dC(5B+ z=|gIOuT{N#8NAEeHA?qTI+&>pIZEd%U8MA`$avla%2a)|(vzZf5RK6W%vbs$r8g>l zLIv=mO2VHh|Bs`zJpZ#%2H-bJ4^LbRVTllrHS7x&E1*4WfUg^f9GpD4nVT zyry4AKDPj)g;uT=Vb*9Qnq&0QW-GKF3pR}8Ly{%DNB^p3i)ZVa{O4T&)c zwxA$Cm;@{kvm>Xe6{MW#)|1_U4Wt~Q`Ra7!Ajsr$k^$~xN6uO=k#g92l}rP;{hXcv zx0RC){GH4I{^i-Z8=Ooak(BymVUUJw8pN@H%mPZtUO*)&hrb$9j($_g+khElHr(WN zawKr--oR>70{jjsfq$Qrz;}`o=s{8f{~?(R{M5)B$GIJNgN8n`)?^;=2QnY{E7=$L z8`%%|j4S}YBKrgXAq(Yi2+0AbNY1F_03d^u#mpm%fg-X5s31#$(PSCW;7GN+7GqAwV-(E;Ax4fZgO!;E1O~4{O=^i?>(ngvc6M|B<}e0o0Ll(rh4~kt8GQfVt#OUtV%#fTZ$w?jq?j>gd_mlmBrKI$;hMWy-jN|^F zBQvAnUdc*wE^vyRCvP_LKHzQge&E;SeBk%w0^mb(p(G*M1bj^{l3%?1q&|_9`d;K> znE<&&-Up=ASHw%Sbf~3aDc~m`kToKg$r_R3xR_ihk(0|M>Bt9xE#wM$ACN17ACupf z-9xSl^)8+f8+2dOlHhMk3Nf)iASI!{Bqfo%8lfa=E-8sQjFf!zlag;uq~ueO+z)Ig z+kh8HNtZWCNt5?UNeiA!nFa}t@Hylln>UAna#EJfPs(!fj~FhKZ7WX;l?@*2GiPn{ zuzm9Hjr8FGv(9dna)V8%445Zvixzgo zc2Z4l;zVg7Z%p?yJH@WA$#j0?*j+VwPI9b$qb9FlgVZ;~h3jRPb@a%uU*{e_yvcU2 z%_}%B-<1nqce439-0PM5J6-L(+C2a9Vqm{iF<#kf9qzL{cd2%-1Bt*dI2rHa$o%#7 z{37-yd!jbqOtcrJ^jlMxZ>HIPQu?jmEt{p>VB4geX;0VX`zq4qRcXJh%asS7K0aR- Jt9pFe{{dfn7GMAX delta 4874 zcmZvf3vg7`8OQ(UCL16$7#>MTmPjBbfk=`Kfk=eNBR~?uBS=9=Nikp~ydMQOfVe=V zFybTT@Ky{cK^|72+jQ)MY5IU#i-UG*i*-6URUBFsQQDE#s{Q_V?>5O-cV^FTf8ROx zobTTI-N(MS+g#dhnnpXtBc3cBYu-Dv`FF;CnUFrHI6siLa>?R`b;~zo3@I8>TvxxS zWMLpqLXQtInCjoF_Vqy8NNIALQJ1q6Cs~C`I=h(GMP5e zJtgM04RN+QzF#P}pQ(1kxf?j<7XFTvuQ#|r2S)Vei0&ODN}>~#bWG4`waM-TodQ)| z0tK>Cwa#!hXX?#$m`NW$f62$piR4^3Kf2`njwL(gT&L$-VrTY9>A%b!4BffLZt0N{ zvoue>A(&hc+{Hsq<9;h*V>Huq}2V*F`f5td1MD+4%q4O$)T3$ z;1&-1zl@J|Jv=+28@EPw&`sc09vqJz38@ouun+jZT>EJ2iz#x=M;3==&Bn|@;Otxgs;0>e#R}G|G-^(s}1;*&G+1P z7u(uqV|+a%kGQHX+wOD2{d{p#o!Cz4J@fUWpX(Uid1p@9H~gvQ=WG+sJ6tEtiQ{ZG zaX^0PZtgI~yDgiDS17Mi?p}OuEHeI^s{bD4HOk#{%vi`y>X;zEAlf!=NFwynB1b(juys!LI<)114N_m`nJL@>5J(c%yy#0^XfL{&BQa((1 zq4HAYlaxQX%zfTNm!e3<< z$CzHWI5#IGo%c(hBTv#bWF@efoDDooP67A~a;5@&)Hu@sK2n_Nz-dyRs6QiT0emtz zGl0wFOyDC@is9d0oOg0Zp2!KL^!F2n7|38i2Ii7WfkJXTFou*Dsd92YFpFFa)R6LM z=8e|5R}v@h0~$$5@VlfW{x~U#A0Q>sqogGM61fogDer5}BH)({+yT5smH>YyZvoyV z`v89@6M^ewZ{Q{w0KOobFrSn}7L$_5I&v(qft2^y$H{TPQ>47C9QQm-&I5kz#oI|avKPJhAIWb4ACR*B zO;Wb^g{0^iNF-%~WKufPNtu9GDdR{t+*3$sSTe zr2NTgA)l1>PVk4kF`p)zfuE4c_S&$NP@$9(%>sWT`vaen!+|f!-SSUKD&9$z15fS& zQpq%_C{kXPa!L7zQ$!X4W66C$B{@J&0J&c(icAOU$OFJKVaSo!{Iv`m1Rf*@0y{i! zB2NLkNlEkw`4n)9%m98!jsV)pr-4_=L2`|dhk&=q!NB{Te@x1JH%OTeKJD^iBX%0=ru5A-63*=v#H zi)hDzQZf&iNS=`7$$Y6P@+5FCSpeKe27u+H9Gi_~3b37ACrOi|q?X7rKpT0d+>gl7 zz;DQ9!0W=0Qx5!zfeFB0$%#@;F2TDFT-2 zc~VOBFQk;_KS-%az6P`629r`@C8ShVH7SL&n3Pg^h&&AJA&&qrkWvc2BBcb}d!3x} zPw1_3Njbt}NW(z>cpfMw<+N3ka=Mm=2aR0hGwpW!oh_!pW{nP-)%K9IjW%ga&}^}f zNxRefN`t1!ZkBex{in2t?TWjC=D58g?P*&(HfUb9Z%W&4r;Q7mSL``yU$>>>gXWTL zllC2(Hz8=Q+E!_=+w`)ab90E@TlRqbA554SG~MlXX%p=i()PFOCk0K0{Ycs&wtn&q z6R>TQXC#c03hpk4OO7zA?S=|}-iNZ2=VL{^k0|)jH?Vn$fIP|a-_+eR^+t5%jXhhDW5(Gl(w5nT${bT+M@m~} uYb$enWpY^zcjtV%GEq*%_ob)Wz9~J!CFQ@jR1^dN diff --git a/bin/thumbv8m.base-none-eabi-lto.a b/bin/thumbv8m.base-none-eabi-lto.a index 8c41d359a176ec85ce9a214d4964bcd9a9ed6f26..ee467925240319c90870b28859f22d2b2529a0a9 100644 GIT binary patch delta 4533 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 delta 4508 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 MWU6>U^YHQi29Z%Q$p8QV diff --git a/bin/thumbv8m.base-none-eabi.a b/bin/thumbv8m.base-none-eabi.a index 22aefda690e28f335372c51fa94e0d9b124f57ae..26d25bd37d075ce34defb99172edee8fae474a4d 100644 GIT binary patch delta 5815 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 delta 5735 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 delta 5153 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 QJGR#q+UD6=nS0XxzaPv2+yDRo diff --git a/bin/thumbv8m.main-none-eabi.a b/bin/thumbv8m.main-none-eabi.a index 708b33aac89883b93a99c4647ba7133c19ff446d..10bbf53fff755fc7aef5945f8d7273b7c55db720 100644 GIT binary patch delta 6799 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 hd2$P1MTCmv6&28{mfmcvoN7v0 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 diff --git a/bin/thumbv8m.main-none-eabihf-lto.a b/bin/thumbv8m.main-none-eabihf-lto.a index 15ffca8b3a5eb74dbb8275fdcc0fb54a23c82dd0..1c25494b66dbfa9e8608f6cd7788a1b1303c54e5 100644 GIT binary patch delta 5291 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 delta 7038 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 String { + fs::read_to_string("asm-toolchain") + .unwrap() + .trim() + .to_string() +} + fn rustc() -> Command { let mut cmd = Command::new("rustc"); - cmd.arg("+nightly"); + cmd.arg(format!("+{}", toolchain())); cmd } @@ -105,6 +113,34 @@ static TARGETS: &[(&str, &[&str])] = &[ ]; fn assemble_blobs() { + let mut cmd = rustc(); + cmd.arg("-V"); + cmd.stdout(Stdio::null()); + let status = cmd.status().unwrap(); + + if !status.success() { + let toolchain = toolchain(); + println!( + "asm toolchain {} does not seem to be installed. installing it now.", + toolchain + ); + + let mut rustup = Command::new("rustup"); + let status = rustup.arg("install").arg(&toolchain).status().unwrap(); + assert!(status.success(), "rustup command failed: {:?}", rustup); + + let mut rustup = Command::new("rustup"); + let status = rustup + .arg("target") + .arg("add") + .args(TARGETS.iter().map(|(target, _)| *target)) + .arg("--toolchain") + .arg(toolchain) + .status() + .unwrap(); + assert!(status.success(), "rustup command failed: {:?}", rustup); + } + for (target, cfgs) in TARGETS { println!("building artifacts for {}", target); assemble(target, cfgs); From 346cd48ad3daf8b1a5b9ae0913defccc5259fdc5 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Thu, 27 Aug 2020 20:27:21 +0200 Subject: [PATCH 4/4] Move feature docs to lib.rs and improve them --- Cargo.toml | 5 ----- src/lib.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4f0587b5..eddc6fab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,6 @@ embedded-hal = "0.2.4" [features] cm7-r0p1 = [] inline-asm = [] - -# Link against prebuilt assembly blobs that are compatible with Linker-Plugin LTO. -# When using this feature, you *must* pass `-Clinker-plugin-lto` to rustc. See this link for -# details: -# https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html linker-plugin-lto = [] [workspace] diff --git a/src/lib.rs b/src/lib.rs index 5dbb8f56..723816aa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,6 +24,32 @@ //! //! The disadvantage is that `inline-asm` requires a nightly toolchain. //! +//! ## `cm7-r0p1` +//! +//! This feature enables workarounds for errata found on Cortex-M7 chips with revision r0p1. Some +//! functions in this crate only work correctly on those chips if this Cargo feature is enabled +//! (the functions are documented accordingly). +//! +//! ## `linker-plugin-lto` +//! +//! This feature links against prebuilt assembly blobs that are compatible with [Linker-Plugin LTO]. +//! This allows inlining assembly routines into the caller, even without the `inline-asm` feature, +//! and works on stable Rust (but note the drawbacks below!). +//! +//! If you want to use this feature, you need to be aware of a few things: +//! +//! - You need to make sure that `-Clinker-plugin-lto` is passed to rustc. Please refer to the +//! [Linker-Plugin LTO] documentation for details. +//! +//! - You have to use a Rust version whose LLVM version is compatible with the toolchain in +//! `asm-toolchain`. +//! +//! - Due to a [Rust bug][rust-lang/rust#75940], this option does not work with optimization +//! levels `s` and `z`. +//! +//! [Linker-Plugin LTO]: https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html +//! [rust-lang/rust#75940]: https://github.com/rust-lang/rust/issues/75940 +//! //! # Minimum Supported Rust Version (MSRV) //! //! This crate is guaranteed to compile on stable Rust 1.31 and up. It *might*