]> git.lizzy.rs Git - rust.git/commitdiff
Follow rename of mx_handle_wait Magenta syscalls
authorRaph Levien <raph@google.com>
Fri, 17 Feb 2017 19:26:22 +0000 (11:26 -0800)
committerRaph Levien <raph@google.com>
Fri, 17 Feb 2017 19:26:22 +0000 (11:26 -0800)
The mx_handle_wait_* syscalls in Magenta were renamed to
mx_object_wait. The syscall is used in the Magenta/Fuchsia
implementation of std::process, to wait on child processes.

In addition, this patch enables the use of the system provided
libbacktrace library on Fuchsia targets. Symbolization is not yet
working, but at least it allows printing hex addresses in a backtrace
and makes building succeed when the backtrace feature is not disabled.

src/libstd/build.rs
src/libstd/sys/unix/process/magenta.rs
src/libstd/sys/unix/process/process_fuchsia.rs

index 0fca374f6e6d1035381faf7ba96498965663378b..038dea77f3ead8d570483a299e02a99059ece819 100644 (file)
@@ -59,6 +59,10 @@ fn main() {
         println!("cargo:rustc-link-lib=userenv");
         println!("cargo:rustc-link-lib=shell32");
     } else if target.contains("fuchsia") {
+        // use system-provided libbacktrace
+        if cfg!(feature = "backtrace") {
+            println!("cargo:rustc-link-lib=backtrace");
+        }
         println!("cargo:rustc-link-lib=magenta");
         println!("cargo:rustc-link-lib=mxio");
         println!("cargo:rustc-link-lib=launchpad"); // for std::process
index a81bedcad22ff6034b3b0261ec5bb761a80d9722..08a827ce08142ee9ad208a7da71d25d39a07dc50 100644 (file)
@@ -111,7 +111,7 @@ pub struct mx_info_process_t {
     pub fn mx_handle_duplicate(handle: mx_handle_t, rights: mx_rights_t,
                                out: *const mx_handle_t) -> mx_handle_t;
 
-    pub fn mx_handle_wait_one(handle: mx_handle_t, signals: mx_signals_t, timeout: mx_time_t,
+    pub fn mx_object_wait_one(handle: mx_handle_t, signals: mx_signals_t, timeout: mx_time_t,
                               pending: *mut mx_signals_t) -> mx_status_t;
 
     pub fn mx_object_get_info(handle: mx_handle_t, topic: u32, buffer: *mut c_void,
index 0bb2e0c1a83d4469a534469b83ef8c363a08d901..608e44ca9e86e1641ac957b2c36a7ebf46bfb5ff 100644 (file)
@@ -151,7 +151,7 @@ pub fn wait(&mut self) -> io::Result<ExitStatus> {
         let mut avail: mx_size_t = 0;
 
         unsafe {
-            mx_cvt(mx_handle_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
+            mx_cvt(mx_object_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
                                       MX_TIME_INFINITE, ptr::null_mut()))?;
             mx_cvt(mx_object_get_info(self.handle.raw(), MX_INFO_PROCESS,
                                       &mut proc_info as *mut _ as *mut libc::c_void,
@@ -174,7 +174,7 @@ pub fn try_wait(&mut self) -> io::Result<Option<ExitStatus>> {
         let mut avail: mx_size_t = 0;
 
         unsafe {
-            let status = mx_handle_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
+            let status = mx_object_wait_one(self.handle.raw(), MX_TASK_TERMINATED,
                                             0, ptr::null_mut());
             match status {
                 0 => { }, // Success