diff options
| author | bors <bors@rust-lang.org> | 2013-08-22 21:06:25 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-08-22 21:06:25 -0700 |
| commit | 9e1e15209129dad9d3bba90450a43ffb2505df14 (patch) | |
| tree | 13e3f799277ef2fe51b36dc6f83f989f465c87d0 /src/libextra | |
| parent | 6f703770410aa6b333978f192ff00f2ce94b0523 (diff) | |
| parent | 651f38258d72742c5961d646f865316f8ea1823c (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.rs | 18 | ||||
| -rw-r--r-- | src/libextra/arena.rs | 1 | ||||
| -rw-r--r-- | src/libextra/c_vec.rs | 2 | ||||
| -rw-r--r-- | src/libextra/flatpipes.rs | 2 | ||||
| -rw-r--r-- | src/libextra/future.rs | 1 | ||||
| -rw-r--r-- | src/libextra/priority_queue.rs | 3 | ||||
| -rw-r--r-- | src/libextra/sync.rs | 24 | ||||
| -rw-r--r-- | src/libextra/test.rs | 1 |
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 { |
