From 07dbc6bd766ba7f489afcda78bb00bbcd9d83d85 Mon Sep 17 00:00:00 2001
From: jD91mZM2 <me@krake.one>
Date: Mon, 2 Jul 2018 08:52:27 +0200
Subject: [PATCH] Fix no_std on redox

Apparently a root-level cfg does not go well with a root-level no_std
---
 src/lib.rs                         |  4 +--
 src/setjmp/src/impl/bin/.gitignore |  2 --
 src/sys_utsname/src/lib.rs         | 42 ++++++++++++++++--------------
 3 files changed, 25 insertions(+), 23 deletions(-)
 delete mode 100644 src/setjmp/src/impl/bin/.gitignore

diff --git a/src/lib.rs b/src/lib.rs
index 555deba4..558f7764 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -32,7 +32,7 @@ pub extern crate unistd;
 pub extern crate wchar;
 pub extern crate wctype;
 
-#[cfg(not(any(test, target_os = "redox")))]
+#[cfg(not(test))]
 #[panic_implementation]
 #[linkage = "weak"]
 #[no_mangle]
@@ -51,7 +51,7 @@ pub extern "C" fn rust_begin_unwind(pi: &::core::panic::PanicInfo) -> ! {
 #[linkage = "weak"]
 pub extern "C" fn rust_eh_personality() {}
 
-#[cfg(not(any(test, target_os = "redox")))]
+#[cfg(not(test))]
 #[lang = "oom"]
 #[linkage = "weak"]
 #[no_mangle]
diff --git a/src/setjmp/src/impl/bin/.gitignore b/src/setjmp/src/impl/bin/.gitignore
deleted file mode 100644
index d6b7ef32..00000000
--- a/src/setjmp/src/impl/bin/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/src/sys_utsname/src/lib.rs b/src/sys_utsname/src/lib.rs
index a0792dd5..0bb0da2e 100644
--- a/src/sys_utsname/src/lib.rs
+++ b/src/sys_utsname/src/lib.rs
@@ -1,28 +1,32 @@
 //! sys/utsname implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysutsname.h.html
 
 #![no_std]
-#![cfg(target_os = "linux")]
 
-extern crate platform;
+#[cfg(target_os = "linux")]
+mod inner {
+    extern crate platform;
 
-use core::ptr;
-use platform::types::*;
+    use core::ptr;
+    use self::platform::types::*;
 
-const LENGTH: usize = 65;
+    const LENGTH: usize = 65;
 
-#[allow(non_camel_case)]
-#[no_mangle]
-#[repr(C)]
-pub struct utsname {
-    pub sysname:    [c_char; LENGTH],
-    pub nodename:   [c_char; LENGTH],
-    pub release:    [c_char; LENGTH],
-    pub version:    [c_char; LENGTH],
-    pub machine:    [c_char; LENGTH],
-    pub domainname: [c_char; LENGTH]
-}
+    #[allow(non_camel_case)]
+    #[no_mangle]
+    #[repr(C)]
+    pub struct utsname {
+        pub sysname:    [c_char; LENGTH],
+        pub nodename:   [c_char; LENGTH],
+        pub release:    [c_char; LENGTH],
+        pub version:    [c_char; LENGTH],
+        pub machine:    [c_char; LENGTH],
+        pub domainname: [c_char; LENGTH]
+    }
 
-#[no_mangle]
-pub unsafe extern "C" fn uname(uts: *mut utsname) -> c_int {
-    platform::uname(uts as usize)
+    #[no_mangle]
+    pub unsafe extern "C" fn uname(uts: *mut utsname) -> c_int {
+        platform::uname(uts as usize)
+    }
 }
+#[cfg(target_os = "linux")]
+pub use inner::*;
-- 
GitLab