about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorJorge Aparicio <japaricious@gmail.com>2016-10-30 22:14:05 -0500
committerJorge Aparicio <japaricious@gmail.com>2016-10-30 22:14:05 -0500
commit907d2a1aeb26151cc81dfa148e874e4fe50d1a14 (patch)
tree07abb5a8862b2c913882e43524f6871604921bdf /src/liballoc
parentea20ab107eb03179e82ff42109d0aaa62aba48b8 (diff)
downloadrust-907d2a1aeb26151cc81dfa148e874e4fe50d1a14.tar.gz
rust-907d2a1aeb26151cc81dfa148e874e4fe50d1a14.zip
make `alloc` and `collections` compilable for thumbv6m-none-eabi
by cfging away `alloc::Arc` and changing OOM to abort for this target
Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/lib.rs2
-rw-r--r--src/liballoc/oom.rs15
2 files changed, 17 insertions, 0 deletions
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index 31491106d97..dd22894ea95 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -74,6 +74,7 @@
 
 #![feature(allocator)]
 #![feature(box_syntax)]
+#![feature(cfg_target_has_atomic)]
 #![feature(coerce_unsized)]
 #![feature(const_fn)]
 #![feature(core_intrinsics)]
@@ -117,6 +118,7 @@ mod boxed {
 }
 #[cfg(test)]
 mod boxed_test;
+#[cfg(target_has_atomic = "ptr")]
 pub mod arc;
 pub mod rc;
 pub mod raw_vec;
diff --git a/src/liballoc/oom.rs b/src/liballoc/oom.rs
index d355d59185e..afdc19678dc 100644
--- a/src/liballoc/oom.rs
+++ b/src/liballoc/oom.rs
@@ -8,10 +8,13 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[cfg(target_has_atomic = "ptr")]
 use core::sync::atomic::{AtomicPtr, Ordering};
+#[cfg(target_has_atomic = "ptr")]
 use core::mem;
 use core::intrinsics;
 
+#[cfg(target_has_atomic = "ptr")]
 static OOM_HANDLER: AtomicPtr<()> = AtomicPtr::new(default_oom_handler as *mut ());
 
 fn default_oom_handler() -> ! {
@@ -21,6 +24,7 @@ fn default_oom_handler() -> ! {
 }
 
 /// Common out-of-memory routine
+#[cfg(target_has_atomic = "ptr")]
 #[cold]
 #[inline(never)]
 #[unstable(feature = "oom", reason = "not a scrutinized interface",
@@ -31,10 +35,21 @@ pub fn oom() -> ! {
     handler();
 }
 
+/// Common out-of-memory routine
+#[cfg(not(target_has_atomic = "ptr"))]
+#[cold]
+#[inline(never)]
+#[unstable(feature = "oom", reason = "not a scrutinized interface",
+           issue = "27700")]
+pub fn oom() -> ! {
+    default_oom_handler()
+}
+
 /// Set a custom handler for out-of-memory conditions
 ///
 /// To avoid recursive OOM failures, it is critical that the OOM handler does
 /// not allocate any memory itself.
+#[cfg(target_has_atomic = "ptr")]
 #[unstable(feature = "oom", reason = "not a scrutinized interface",
            issue = "27700")]
 pub fn set_oom_handler(handler: fn() -> !) {