about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-08-22 21:06:25 -0700
committerbors <bors@rust-lang.org>2013-08-22 21:06:25 -0700
commit9e1e15209129dad9d3bba90450a43ffb2505df14 (patch)
tree13e3f799277ef2fe51b36dc6f83f989f465c87d0 /src/libextra
parent6f703770410aa6b333978f192ff00f2ce94b0523 (diff)
parent651f38258d72742c5961d646f865316f8ea1823c (diff)
auto merge of #8596 : vadimcn/rust/master, r=alexcrichton
This resolves issue #908.  

Notable changes:
-  On Windows, LLVM integrated assembler emits bad stack unwind tables when segmented stacks are enabled.  However, unwind info directives in the assembly output are correct, so we generate assembly first and then run it through an external assembler, just like it is already done for Android builds.

- Linker is invoked  via "g++" command instead of "gcc": g++ passes the appropriate magic parameters to the linker, which ensure correct registration of stack unwind tables in dynamic libraries.

Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/arc.rs18
-rw-r--r--src/libextra/arena.rs1
-rw-r--r--src/libextra/c_vec.rs2
-rw-r--r--src/libextra/flatpipes.rs2
-rw-r--r--src/libextra/future.rs1
-rw-r--r--src/libextra/priority_queue.rs3
-rw-r--r--src/libextra/sync.rs24
-rw-r--r--src/libextra/test.rs1
8 files changed, 21 insertions, 31 deletions
diff --git a/src/libextra/arc.rs b/src/libextra/arc.rs
index 1704e9a48d6..1df69945a60 100644
--- a/src/libextra/arc.rs
+++ b/src/libextra/arc.rs
@@ -612,7 +612,7 @@ mod tests {
         }
     }
 
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_arc_condvar_poison() {
         unsafe {
             let arc = ~MutexArc::new(1);
@@ -636,7 +636,7 @@ mod tests {
             }
         }
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_mutex_arc_poison() {
         unsafe {
             let arc = ~MutexArc::new(1);
@@ -651,7 +651,7 @@ mod tests {
             }
         }
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     pub fn test_mutex_arc_unwrap_poison() {
         let arc = MutexArc::new(1);
         let arc2 = ~(&arc).clone();
@@ -668,7 +668,7 @@ mod tests {
         let one = arc.unwrap();
         assert!(one == 1);
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_rw_arc_poison_wr() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
@@ -681,7 +681,7 @@ mod tests {
             assert_eq!(*one, 1);
         }
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_rw_arc_poison_ww() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
@@ -694,7 +694,7 @@ mod tests {
             assert_eq!(*one, 1);
         }
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_rw_arc_poison_dw() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
@@ -709,7 +709,7 @@ mod tests {
             assert_eq!(*one, 1);
         }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rw_arc_no_poison_rr() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
@@ -722,7 +722,7 @@ mod tests {
             assert_eq!(*one, 1);
         }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rw_arc_no_poison_rw() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
@@ -735,7 +735,7 @@ mod tests {
             assert_eq!(*one, 1);
         }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rw_arc_no_poison_dr() {
         let arc = ~RWArc::new(1);
         let arc2 = (*arc).clone();
diff --git a/src/libextra/arena.rs b/src/libextra/arena.rs
index ae4356eb4ba..e24e747d61a 100644
--- a/src/libextra/arena.rs
+++ b/src/libextra/arena.rs
@@ -291,7 +291,6 @@ fn test_arena_destructors() {
 
 #[test]
 #[should_fail]
-#[ignore(cfg(windows))]
 fn test_arena_destructors_fail() {
     let arena = Arena::new();
     // Put some stuff in the arena.
diff --git a/src/libextra/c_vec.rs b/src/libextra/c_vec.rs
index 9e1504aad2a..6ae67e7c794 100644
--- a/src/libextra/c_vec.rs
+++ b/src/libextra/c_vec.rs
@@ -185,7 +185,6 @@ mod tests {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(windows))]
     fn test_overrun_get() {
         let cv = malloc(16u as size_t);
 
@@ -194,7 +193,6 @@ mod tests {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(windows))]
     fn test_overrun_set() {
         let cv = malloc(16u as size_t);
 
diff --git a/src/libextra/flatpipes.rs b/src/libextra/flatpipes.rs
index daad3970445..d102f6068f5 100644
--- a/src/libextra/flatpipes.rs
+++ b/src/libextra/flatpipes.rs
@@ -967,12 +967,10 @@ mod test {
         }
 
         #[test]
-        #[ignore(cfg(windows))]
         fn test_try_recv_none4_reader() {
             test_try_recv_none4(reader_port_loader);
         }
         #[test]
-        #[ignore(cfg(windows))]
         fn test_try_recv_none4_pipe() {
             test_try_recv_none4(pipe_port_loader);
         }
diff --git a/src/libextra/future.rs b/src/libextra/future.rs
index 391e4baa8c9..ce56a3dcaa6 100644
--- a/src/libextra/future.rs
+++ b/src/libextra/future.rs
@@ -212,7 +212,6 @@ mod test {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(target_os = "win32"))]
     fn test_futurefail() {
         let mut f = spawn(|| fail!());
         let _x: ~str = f.get();
diff --git a/src/libextra/priority_queue.rs b/src/libextra/priority_queue.rs
index 4f0fed5fccf..a9341a8075d 100644
--- a/src/libextra/priority_queue.rs
+++ b/src/libextra/priority_queue.rs
@@ -338,7 +338,6 @@ mod tests {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(windows))]
     fn test_empty_pop() { let mut heap = PriorityQueue::new::<int>(); heap.pop(); }
 
     #[test]
@@ -349,7 +348,6 @@ mod tests {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(windows))]
     fn test_empty_top() { let empty = PriorityQueue::new::<int>(); empty.top(); }
 
     #[test]
@@ -360,7 +358,6 @@ mod tests {
 
     #[test]
     #[should_fail]
-    #[ignore(cfg(windows))]
     fn test_empty_replace() { let mut heap = PriorityQueue::new(); heap.replace(5); }
 
     #[test]
diff --git a/src/libextra/sync.rs b/src/libextra/sync.rs
index d32b7d6af03..afb4cf3943a 100644
--- a/src/libextra/sync.rs
+++ b/src/libextra/sync.rs
@@ -921,7 +921,7 @@ mod tests {
             assert!(!cond.signal());
         }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_mutex_killed_simple() {
         // Mutex must get automatically unlocked if failed/killed within.
         let m = ~Mutex::new();
@@ -937,7 +937,7 @@ mod tests {
         do m.lock { }
     }
     #[ignore(reason = "linked failure")]
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_mutex_killed_cond() {
         // Getting killed during cond wait must not corrupt the mutex while
         // unwinding (e.g. double unlock).
@@ -964,7 +964,7 @@ mod tests {
         }
     }
     #[ignore(reason = "linked failure")]
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_mutex_killed_broadcast() {
         use std::unstable::finally::Finally;
 
@@ -1024,7 +1024,7 @@ mod tests {
             cond.wait();
         }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_mutex_different_conds() {
         let result = do task::try {
             let m = ~Mutex::new_with_condvars(2);
@@ -1045,7 +1045,7 @@ mod tests {
         };
         assert!(result.is_err());
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_mutex_no_condvars() {
         let result = do task::try {
             let m = ~Mutex::new_with_condvars(0);
@@ -1275,7 +1275,7 @@ mod tests {
         test_rwlock_cond_broadcast_helper(12, false, true);
         test_rwlock_cond_broadcast_helper(12, false, false);
     }
-    #[cfg(test)] #[ignore(cfg(windows))]
+    #[cfg(test)]
     fn rwlock_kill_helper(mode1: RWLockMode, mode2: RWLockMode) {
         // Mutex must get automatically unlocked if failed/killed within.
         let x = ~RWLock::new();
@@ -1290,23 +1290,23 @@ mod tests {
         // child task must have finished by the time try returns
         do lock_rwlock_in_mode(x, mode2) { }
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rwlock_reader_killed_writer() {
         rwlock_kill_helper(Read, Write);
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rwlock_writer_killed_reader() {
         rwlock_kill_helper(Write,Read );
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rwlock_reader_killed_reader() {
         rwlock_kill_helper(Read, Read );
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rwlock_writer_killed_writer() {
         rwlock_kill_helper(Write,Write);
     }
-    #[test] #[ignore(cfg(windows))]
+    #[test]
     fn test_rwlock_kill_downgrader() {
         rwlock_kill_helper(Downgrade, Read);
         rwlock_kill_helper(Read, Downgrade);
@@ -1321,7 +1321,7 @@ mod tests {
         rwlock_kill_helper(Downgrade, DowngradeRead);
         rwlock_kill_helper(Downgrade, DowngradeRead);
     }
-    #[test] #[should_fail] #[ignore(cfg(windows))]
+    #[test] #[should_fail]
     fn test_rwlock_downgrade_cant_swap() {
         // Tests that you can't downgrade with a different rwlock's token.
         let x = ~RWLock::new();
diff --git a/src/libextra/test.rs b/src/libextra/test.rs
index 75d00f9ea59..d940e8bb473 100644
--- a/src/libextra/test.rs
+++ b/src/libextra/test.rs
@@ -1163,7 +1163,6 @@ mod tests {
     }
 
     #[test]
-    #[ignore(cfg(windows))]
     fn test_should_fail() {
         fn f() { fail!(); }
         let desc = TestDescAndFn {