@@ -16,7 +16,7 @@ extern crate compiler_builtins;
16
16
use alloc:: boxed:: Box ;
17
17
use atomic_dbg:: dbg;
18
18
use core:: arch:: asm;
19
- use core:: ptr:: { addr_of_mut, invalid_mut } ;
19
+ use core:: ptr:: { addr_of_mut, without_provenance_mut } ;
20
20
use origin:: { program, thread} ;
21
21
22
22
#[ panic_handler]
@@ -37,25 +37,25 @@ unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) ->
37
37
check_eq ( TEST_DATA . 0 ) ;
38
38
39
39
// Mutate one of the TLS fields.
40
- THREAD_LOCAL [ 1 ] = invalid_mut ( 77 ) ;
40
+ THREAD_LOCAL [ 1 ] = without_provenance_mut ( 77 ) ;
41
41
42
42
// Assert that the mutation happened properly.
43
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 77 ) , TEST_DATA . 0 [ 2 ] ] ) ;
43
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 77 ) , TEST_DATA . 0 [ 2 ] ] ) ;
44
44
45
45
program:: at_exit ( Box :: new ( || {
46
46
// This is the last thing to run. Assert that we see the value stored
47
47
// by the `at_thread_exit` callback.
48
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 79 ) , TEST_DATA . 0 [ 2 ] ] ) ;
48
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 79 ) , TEST_DATA . 0 [ 2 ] ] ) ;
49
49
50
50
// Mutate one of the TLS fields.
51
- THREAD_LOCAL [ 1 ] = invalid_mut ( 80 ) ;
51
+ THREAD_LOCAL [ 1 ] = without_provenance_mut ( 80 ) ;
52
52
} ) ) ;
53
53
thread:: at_exit ( Box :: new ( || {
54
54
// Assert that we see the value stored at the end of `main`.
55
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 78 ) , TEST_DATA . 0 [ 2 ] ] ) ;
55
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 78 ) , TEST_DATA . 0 [ 2 ] ] ) ;
56
56
57
57
// Mutate one of the TLS fields.
58
- THREAD_LOCAL [ 1 ] = invalid_mut ( 79 ) ;
58
+ THREAD_LOCAL [ 1 ] = without_provenance_mut ( 79 ) ;
59
59
} ) ) ;
60
60
61
61
let thread = thread:: create (
@@ -64,14 +64,14 @@ unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) ->
64
64
check_eq ( TEST_DATA . 0 ) ;
65
65
66
66
// Mutate one of the TLS fields.
67
- THREAD_LOCAL [ 1 ] = invalid_mut ( 175 ) ;
67
+ THREAD_LOCAL [ 1 ] = without_provenance_mut ( 175 ) ;
68
68
69
69
// Assert that the mutation happened properly.
70
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 175 ) , TEST_DATA . 0 [ 2 ] ] ) ;
70
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 175 ) , TEST_DATA . 0 [ 2 ] ] ) ;
71
71
72
72
thread:: at_exit ( Box :: new ( || {
73
73
// Assert that we still see the value stored in the thread.
74
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 175 ) , TEST_DATA . 0 [ 2 ] ] ) ;
74
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 175 ) , TEST_DATA . 0 [ 2 ] ] ) ;
75
75
} ) ) ;
76
76
77
77
None
@@ -85,13 +85,13 @@ unsafe fn origin_main(_argc: usize, _argv: *mut *mut u8, _envp: *mut *mut u8) ->
85
85
thread:: join ( thread) ;
86
86
87
87
// Assert that the main thread's TLS is still in place.
88
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 77 ) , TEST_DATA . 0 [ 2 ] ] ) ;
88
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 77 ) , TEST_DATA . 0 [ 2 ] ] ) ;
89
89
90
90
// Mutate one of the TLS fields.
91
- THREAD_LOCAL [ 1 ] = invalid_mut ( 78 ) ;
91
+ THREAD_LOCAL [ 1 ] = without_provenance_mut ( 78 ) ;
92
92
93
93
// Assert that the mutation happened properly.
94
- check_eq ( [ TEST_DATA . 0 [ 0 ] , invalid_mut ( 78 ) , TEST_DATA . 0 [ 2 ] ] ) ;
94
+ check_eq ( [ TEST_DATA . 0 [ 0 ] , without_provenance_mut ( 78 ) , TEST_DATA . 0 [ 2 ] ] ) ;
95
95
96
96
program:: exit ( 200 ) ;
97
97
}
@@ -100,7 +100,7 @@ struct SyncTestData([*const u32; 3]);
100
100
unsafe impl Sync for SyncTestData { }
101
101
static TEST_DATA : SyncTestData = unsafe {
102
102
SyncTestData ( [
103
- invalid_mut ( 0xa0b1a2b3a4b5a6b7_u64 as usize ) ,
103
+ without_provenance_mut ( 0xa0b1a2b3a4b5a6b7_u64 as usize ) ,
104
104
addr_of_mut ! ( SOME_REGULAR_DATA ) ,
105
105
addr_of_mut ! ( SOME_ZERO_DATA ) ,
106
106
] )
@@ -120,7 +120,7 @@ fn check_eq(data: [*const u32; 3]) {
120
120
assert_eq ! ( THREAD_LOCAL , data) ;
121
121
122
122
// Check `THREAD_LOCAL` using a dynamic address.
123
- let mut thread_local_addr: * mut [ * const u32 ; 3 ] = & mut THREAD_LOCAL ;
123
+ let mut thread_local_addr: * mut [ * const u32 ; 3 ] = addr_of_mut ! ( THREAD_LOCAL ) ;
124
124
asm ! ( "# {}" , inout( reg) thread_local_addr, options( pure, nomem, nostack, preserves_flags) ) ;
125
125
assert_eq ! ( * thread_local_addr, data) ;
126
126
}
0 commit comments