From 01e9a597c12d352a6de7d2829584fc69c4a774f3 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 2 Aug 2018 21:12:11 -0500 Subject: [PATCH 1/2] stop recommending LLD until https://bugs.llvm.org/show_bug.cgi?id=38435 is fixed --- .cargo/config | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.cargo/config b/.cargo/config index 337c283..5999ced 100644 --- a/.cargo/config +++ b/.cargo/config @@ -3,11 +3,6 @@ runner = 'arm-none-eabi-gdb' rustflags = [ "-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-nostartfiles", - - # uncomment to use rustc LLD to link programs (a) - # "-C", "link-arg=-Tlink.x", - # "-C", "linker=lld", - # "-Z", "linker-flavor=ld.lld", ] [target.thumbv7m-none-eabi] @@ -15,11 +10,6 @@ runner = 'arm-none-eabi-gdb' rustflags = [ "-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-nostartfiles", - - # uncomment to use rustc LLD to link programs (a) - # "-C", "link-arg=-Tlink.x", - # "-C", "linker=lld", - # "-Z", "linker-flavor=ld.lld", ] [target.thumbv7em-none-eabi] @@ -27,11 +17,6 @@ runner = 'arm-none-eabi-gdb' rustflags = [ "-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-nostartfiles", - - # uncomment to use rustc LLD to link programs (a) - # "-C", "link-arg=-Tlink.x", - # "-C", "linker=lld", - # "-Z", "linker-flavor=ld.lld", ] [target.thumbv7em-none-eabihf] @@ -39,12 +24,4 @@ runner = 'arm-none-eabi-gdb' rustflags = [ "-C", "link-arg=-Wl,-Tlink.x", "-C", "link-arg=-nostartfiles", - - # uncomment to use rustc LLD to link programs (a) - # "-C", "link-arg=-Tlink.x", - # "-C", "linker=lld", - # "-Z", "linker-flavor=ld.lld", ] - -# (a) you also need to comment out the other two `link-arg` lines. But note that as of v0.6.0 LLD -# has a bug where it mislinks FFI calls and they up crashing the program at runtime \ No newline at end of file From b7884948b29b2a3c5047b5f282072bbd9d051245 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Thu, 2 Aug 2018 21:37:39 -0500 Subject: [PATCH 2/2] fix the allocator example --- examples/allocator.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/allocator.rs b/examples/allocator.rs index 0d06669..652a04c 100644 --- a/examples/allocator.rs +++ b/examples/allocator.rs @@ -10,6 +10,7 @@ //! --- #![feature(alloc)] +#![feature(alloc_error_handler)] #![feature(global_allocator)] #![feature(lang_items)] #![no_main] @@ -25,6 +26,7 @@ extern crate cortex_m_rt as rt; extern crate cortex_m_semihosting as sh; extern crate panic_semihosting; +use core::alloc::Layout; use core::fmt::Write; use alloc_cortex_m::CortexMHeap; @@ -54,9 +56,9 @@ fn main() -> ! { } // define what happens in an Out Of Memory (OOM) condition -#[lang = "oom"] +#[alloc_error_handler] #[no_mangle] -pub fn rust_oom() -> ! { +pub fn alloc_error(layout: Layout) -> ! { asm::bkpt(); loop {}