about summary refs log tree commit diff
path: root/src/libstd/sys
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2015-11-26 19:05:10 +0000
committerBrian Anderson <banderson@mozilla.com>2016-02-06 20:56:14 +0000
commitd6c0d859f6d859aa6e418b5ec58246071efbc9de (patch)
tree0faba720f79f5047f27173e7173501b104503903 /src/libstd/sys
parent34af2de4096b3b1c5d3a5b70171c6e27822aaefb (diff)
downloadrust-d6c0d859f6d859aa6e418b5ec58246071efbc9de.tar.gz
rust-d6c0d859f6d859aa6e418b5ec58246071efbc9de.zip
Add the asmjs-unknown-emscripten triple. Add cfgs to libs.
Backtraces, and the compilation of libbacktrace for asmjs, are disabled.

This port doesn't use jemalloc so, like pnacl, it disables jemalloc *for all targets*
in the configure file.

It disables stack protection.
Diffstat (limited to 'src/libstd/sys')
-rw-r--r--src/libstd/sys/common/args.rs3
-rw-r--r--src/libstd/sys/common/libunwind.rs4
-rw-r--r--src/libstd/sys/common/mod.rs2
-rw-r--r--src/libstd/sys/unix/backtrace/printing/mod.rs6
-rw-r--r--src/libstd/sys/unix/fs.rs6
-rw-r--r--src/libstd/sys/unix/mod.rs1
-rw-r--r--src/libstd/sys/unix/os.rs8
-rw-r--r--src/libstd/sys/unix/process.rs3
-rw-r--r--src/libstd/sys/unix/thread.rs4
9 files changed, 26 insertions, 11 deletions
diff --git a/src/libstd/sys/common/args.rs b/src/libstd/sys/common/args.rs
index 4600983eb3b..58417540664 100644
--- a/src/libstd/sys/common/args.rs
+++ b/src/libstd/sys/common/args.rs
@@ -39,7 +39,8 @@ pub fn clone() -> Option<Vec<Vec<u8>>> { imp::clone() }
           target_os = "bitrig",
           target_os = "netbsd",
           target_os = "openbsd",
-          target_os = "solaris"))]
+          target_os = "solaris",
+          target_os = "emscripten"))]
 mod imp {
     use prelude::v1::*;
 
diff --git a/src/libstd/sys/common/libunwind.rs b/src/libstd/sys/common/libunwind.rs
index 956f6005f1c..3f70afe6ad7 100644
--- a/src/libstd/sys/common/libunwind.rs
+++ b/src/libstd/sys/common/libunwind.rs
@@ -86,6 +86,10 @@ pub const unwinder_private_data_size: usize = 2;
 #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
 pub const unwinder_private_data_size: usize = 2;
 
+#[cfg(target_arch = "asmjs")]
+// FIXME: Copied from arm. Need to confirm.
+pub const unwinder_private_data_size: usize = 20;
+
 #[repr(C)]
 pub struct _Unwind_Exception {
     pub exception_class: _Unwind_Exception_Class,
diff --git a/src/libstd/sys/common/mod.rs b/src/libstd/sys/common/mod.rs
index 5062be8cd63..56628a4c754 100644
--- a/src/libstd/sys/common/mod.rs
+++ b/src/libstd/sys/common/mod.rs
@@ -45,7 +45,7 @@ pub mod unwind;
 pub mod util;
 pub mod wtf8;
 
-#[cfg(any(all(unix, not(any(target_os = "macos", target_os = "ios"))),
+#[cfg(any(all(unix, not(any(target_os = "macos", target_os = "ios", target_os = "emscripten"))),
           all(windows, target_env = "gnu")))]
 pub mod gnu;
 
diff --git a/src/libstd/sys/unix/backtrace/printing/mod.rs b/src/libstd/sys/unix/backtrace/printing/mod.rs
index e09832c231e..02e53854727 100644
--- a/src/libstd/sys/unix/backtrace/printing/mod.rs
+++ b/src/libstd/sys/unix/backtrace/printing/mod.rs
@@ -10,10 +10,12 @@
 
 pub use self::imp::print;
 
-#[cfg(any(target_os = "macos", target_os = "ios"))]
+#[cfg(any(target_os = "macos", target_os = "ios",
+          target_os = "emscripten"))]
 #[path = "dladdr.rs"]
 mod imp;
 
-#[cfg(not(any(target_os = "macos", target_os = "ios")))]
+#[cfg(not(any(target_os = "macos", target_os = "ios",
+              target_os = "emscripten")))]
 #[path = "gnu.rs"]
 mod imp;
diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs
index e672d9f1586..79cf4841300 100644
--- a/src/libstd/sys/unix/fs.rs
+++ b/src/libstd/sys/unix/fs.rs
@@ -293,7 +293,8 @@ impl DirEntry {
     #[cfg(any(target_os = "macos",
               target_os = "ios",
               target_os = "linux",
-              target_os = "solaris"))]
+              target_os = "solaris",
+              target_os = "emscripten"))]
     pub fn ino(&self) -> raw::ino_t {
         self.entry.d_ino
     }
@@ -326,7 +327,8 @@ impl DirEntry {
         }
     }
     #[cfg(any(target_os = "android",
-              target_os = "linux"))]
+              target_os = "linux",
+              target_os = "emscripten"))]
     fn name_bytes(&self) -> &[u8] {
         unsafe {
             CStr::from_ptr(self.entry.d_name.as_ptr()).to_bytes()
diff --git a/src/libstd/sys/unix/mod.rs b/src/libstd/sys/unix/mod.rs
index f8a4bcdecd7..ac24cdb4d1c 100644
--- a/src/libstd/sys/unix/mod.rs
+++ b/src/libstd/sys/unix/mod.rs
@@ -26,6 +26,7 @@ use ops::Neg;
 #[cfg(target_os = "netbsd")]    pub use os::netbsd as platform;
 #[cfg(target_os = "openbsd")]   pub use os::openbsd as platform;
 #[cfg(target_os = "solaris")]   pub use os::solaris as platform;
+#[cfg(target_os = "emscripten")] pub use os::emscripten as platform;
 
 pub mod backtrace;
 pub mod condvar;
diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs
index da770514593..9def3adc303 100644
--- a/src/libstd/sys/unix/os.rs
+++ b/src/libstd/sys/unix/os.rs
@@ -38,7 +38,8 @@ static ENV_LOCK: StaticMutex = StaticMutex::new();
 /// Returns the platform-specific value of errno
 pub fn errno() -> i32 {
     extern {
-        #[cfg_attr(any(target_os = "linux"), link_name = "__errno_location")]
+        #[cfg_attr(any(target_os = "linux", target_os = "emscripten"),
+                   link_name = "__errno_location")]
         #[cfg_attr(any(target_os = "bitrig",
                        target_os = "netbsd",
                        target_os = "openbsd",
@@ -235,7 +236,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
     }
 }
 
-#[cfg(any(target_os = "linux", target_os = "android"))]
+#[cfg(any(target_os = "linux", target_os = "android", target_os = "emscripten"))]
 pub fn current_exe() -> io::Result<PathBuf> {
     ::fs::read_link("/proc/self/exe")
 }
@@ -385,7 +386,8 @@ pub fn args() -> Args {
           target_os = "netbsd",
           target_os = "openbsd",
           target_os = "solaris",
-          target_os = "nacl"))]
+          target_os = "nacl",
+          target_os = "emscripten"))]
 pub fn args() -> Args {
     use sys_common;
     let bytes = sys_common::args::clone().unwrap_or(Vec::new());
diff --git a/src/libstd/sys/unix/process.rs b/src/libstd/sys/unix/process.rs
index 3ce2c684f07..f881070d241 100644
--- a/src/libstd/sys/unix/process.rs
+++ b/src/libstd/sys/unix/process.rs
@@ -131,7 +131,8 @@ impl fmt::Debug for Command {
 pub struct ExitStatus(c_int);
 
 #[cfg(any(target_os = "linux", target_os = "android",
-          target_os = "nacl", target_os = "solaris"))]
+          target_os = "nacl", target_os = "solaris",
+          target_os = "emscripten"))]
 mod status_imp {
     pub fn WIFEXITED(status: i32) -> bool { (status & 0xff) == 0 }
     pub fn WEXITSTATUS(status: i32) -> i32 { (status >> 8) & 0xff }
diff --git a/src/libstd/sys/unix/thread.rs b/src/libstd/sys/unix/thread.rs
index 277aa5f19f0..883aae8120e 100644
--- a/src/libstd/sys/unix/thread.rs
+++ b/src/libstd/sys/unix/thread.rs
@@ -81,7 +81,9 @@ impl Thread {
         debug_assert_eq!(ret, 0);
     }
 
-    #[cfg(any(target_os = "linux", target_os = "android"))]
+    #[cfg(any(target_os = "linux",
+              target_os = "android",
+              target_os = "emscripten"))]
     pub fn set_name(name: &str) {
         const PR_SET_NAME: libc::c_int = 15;
         let cname = CString::new(name).unwrap_or_else(|_| {