Skip to content

Commit f2ce789

Browse files
cjlongoriafacebook-github-bot
authored andcommitted
applying rustfix to fbcode
Summary: applying changes to make code compatible for both 2021 and 2024 rust editions Reviewed By: dtolnay Differential Revision: D74498804 fbshipit-source-id: 4bab03965e061d1b09090f581508da0055af7e47
1 parent ded955d commit f2ce789

File tree

14 files changed

+144
-130
lines changed

14 files changed

+144
-130
lines changed

common/edit-distance/src/bubbles.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ mod tests {
398398
);
399399
}
400400
macro_rules! assert_sortable_range_eq {
401-
([$($full:expr),*], [$($expected_sortable_range:expr),*]; where max_index = $max_index:expr) => {
401+
([$($full:expr_2021),*], [$($expected_sortable_range:expr_2021),*]; where max_index = $max_index:expr_2021) => {
402402
let full_perm : &[usize] = &[$($full),*];
403403
let range = find_sortable_range(full_perm, $max_index);
404404
let actual_sortable_range = &full_perm[range];
@@ -421,7 +421,7 @@ mod tests {
421421
}
422422

423423
macro_rules! assert_perm_eq {
424-
($expected:expr, $perm:expr) => {
424+
($expected:expr_2021, $perm:expr_2021) => {
425425
assert_eq!(
426426
Ok($expected),
427427
from_utf8(&$perm.cloned().collect::<Vec<u8>>())
@@ -490,7 +490,7 @@ mod tests {
490490
/// produced expanded perm against the actual after mapping unmatched
491491
/// characters in the target to `_`
492492
macro_rules! assert_expanded_target_eq {
493-
($expected:expr, expand_target($src:expr, $target:expr)) => {
493+
($expected:expr_2021, expand_target($src:expr_2021, $target:expr_2021)) => {
494494
assert_eq!(
495495
Ok($expected),
496496
from_utf8(

common/test-allocator/src/lib.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,16 +238,20 @@ unsafe impl Sync for OvercommitBumpAlloc {}
238238

239239
unsafe impl GlobalAlloc for OvercommitBumpAlloc {
240240
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
241-
// SAFETY: layout.align() is guaranteed to be a power of two
242-
self.allocate(layout.size(), layout.align())
241+
unsafe {
242+
// SAFETY: layout.align() is guaranteed to be a power of two
243+
self.allocate(layout.size(), layout.align())
244+
}
243245
}
244246
unsafe fn dealloc(&self, _ptr: *mut u8, _layout: Layout) {
245247
// do nothing
246248
}
247249
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
248-
// SAFETY: layout.align() is guaranteed to be a power of two
249-
// SAFETY: MAP_ANONYMOUS pages are guaranteed to be zero
250-
self.allocate(layout.size(), layout.align())
250+
unsafe {
251+
// SAFETY: layout.align() is guaranteed to be a power of two
252+
// SAFETY: MAP_ANONYMOUS pages are guaranteed to be zero
253+
self.allocate(layout.size(), layout.align())
254+
}
251255
}
252256
}
253257

@@ -285,16 +289,16 @@ pub static GLOBAL: OvercommitBumpAlloc =
285289
pub struct Global;
286290
unsafe impl GlobalAlloc for Global {
287291
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
288-
GLOBAL.alloc(layout)
292+
unsafe { GLOBAL.alloc(layout) }
289293
}
290294
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
291-
GLOBAL.dealloc(ptr, layout)
295+
unsafe { GLOBAL.dealloc(ptr, layout) }
292296
}
293297
unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 {
294-
GLOBAL.alloc_zeroed(layout)
298+
unsafe { GLOBAL.alloc_zeroed(layout) }
295299
}
296300
unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 {
297-
GLOBAL.realloc(ptr, layout, new_size)
301+
unsafe { GLOBAL.realloc(ptr, layout, new_size) }
298302
}
299303
}
300304

detcore/src/dirents.rs

Lines changed: 111 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -53,128 +53,136 @@ impl<'a> Ord for Dirent64<'a> {
5353
}
5454

5555
pub unsafe fn deserialize_dirents64(bytes: &[u8]) -> Vec<Dirent64> {
56-
let mut res = Vec::new();
56+
unsafe {
57+
let mut res = Vec::new();
5758

58-
let dirp: *const u8 = bytes.as_ptr();
59-
let nb = bytes.len();
60-
let mut k = 0;
59+
let dirp: *const u8 = bytes.as_ptr();
60+
let nb = bytes.len();
61+
let mut k = 0;
6162

62-
while k < nb as isize {
63-
let dirp = dirp.offset(k);
64-
let mut j: isize = 0;
65-
let ino = ptr::read(dirp.offset(j).cast::<u64>());
66-
j += std::mem::size_of::<u64>() as isize;
67-
let off = ptr::read(dirp.offset(j).cast::<i64>());
68-
j += std::mem::size_of::<i64>() as isize;
69-
let reclen = ptr::read(dirp.offset(j).cast::<u16>());
70-
j += std::mem::size_of::<u16>() as isize;
71-
let ty = ptr::read(dirp.offset(j).cast::<u8>());
72-
j += std::mem::size_of::<u8>() as isize;
73-
let name = std::slice::from_raw_parts(dirp.offset(j), 1 + reclen as usize - j as usize);
74-
let ent = Dirent64 {
75-
ino,
76-
off,
77-
reclen,
78-
ty,
79-
name,
80-
};
81-
res.push(ent);
82-
k += reclen as isize;
63+
while k < nb as isize {
64+
let dirp = dirp.offset(k);
65+
let mut j: isize = 0;
66+
let ino = ptr::read(dirp.offset(j).cast::<u64>());
67+
j += std::mem::size_of::<u64>() as isize;
68+
let off = ptr::read(dirp.offset(j).cast::<i64>());
69+
j += std::mem::size_of::<i64>() as isize;
70+
let reclen = ptr::read(dirp.offset(j).cast::<u16>());
71+
j += std::mem::size_of::<u16>() as isize;
72+
let ty = ptr::read(dirp.offset(j).cast::<u8>());
73+
j += std::mem::size_of::<u8>() as isize;
74+
let name = std::slice::from_raw_parts(dirp.offset(j), 1 + reclen as usize - j as usize);
75+
let ent = Dirent64 {
76+
ino,
77+
off,
78+
reclen,
79+
ty,
80+
name,
81+
};
82+
res.push(ent);
83+
k += reclen as isize;
84+
}
85+
res
8386
}
84-
res
8587
}
8688

8789
pub unsafe fn serialize_dirents64(dents: &[Dirent64], bytes: &mut [u8]) -> usize {
88-
let nb = bytes.len();
89-
let mut k = 0;
90-
let mut i = 0;
90+
unsafe {
91+
let nb = bytes.len();
92+
let mut k = 0;
93+
let mut i = 0;
9194

92-
while k < nb as isize && i < dents.len() {
93-
let ent = &dents[i];
94-
let dirp = bytes.as_mut_ptr().offset(k);
95-
let mut j: isize = 0;
96-
ptr::write(dirp.offset(j).cast::<u64>(), ent.ino);
97-
j += std::mem::size_of::<u64>() as isize;
98-
ptr::write(dirp.offset(j).cast::<i64>(), ent.off);
99-
j += std::mem::size_of::<i64>() as isize;
100-
ptr::write(dirp.offset(j).cast::<u16>(), ent.reclen);
101-
j += std::mem::size_of::<u16>() as isize;
102-
ptr::write(dirp.offset(j).cast::<u8>(), ent.ty);
103-
j += std::mem::size_of::<u8>() as isize;
104-
let reclen = ent.reclen;
105-
ptr::copy_nonoverlapping(
106-
ent.name.as_ptr(),
107-
dirp.offset(j),
108-
// NOTE: name is null-terminated with the man page
109-
// explicitly warning against other methods to read
110-
// d_name besides strlen(): https://man7.org/linux/man-pages/man3/readdir.3.html
111-
strlen(ent.name.as_ptr() as *const i8),
112-
);
113-
k += reclen as isize;
114-
i += 1;
95+
while k < nb as isize && i < dents.len() {
96+
let ent = &dents[i];
97+
let dirp = bytes.as_mut_ptr().offset(k);
98+
let mut j: isize = 0;
99+
ptr::write(dirp.offset(j).cast::<u64>(), ent.ino);
100+
j += std::mem::size_of::<u64>() as isize;
101+
ptr::write(dirp.offset(j).cast::<i64>(), ent.off);
102+
j += std::mem::size_of::<i64>() as isize;
103+
ptr::write(dirp.offset(j).cast::<u16>(), ent.reclen);
104+
j += std::mem::size_of::<u16>() as isize;
105+
ptr::write(dirp.offset(j).cast::<u8>(), ent.ty);
106+
j += std::mem::size_of::<u8>() as isize;
107+
let reclen = ent.reclen;
108+
ptr::copy_nonoverlapping(
109+
ent.name.as_ptr(),
110+
dirp.offset(j),
111+
// NOTE: name is null-terminated with the man page
112+
// explicitly warning against other methods to read
113+
// d_name besides strlen(): https://man7.org/linux/man-pages/man3/readdir.3.html
114+
strlen(ent.name.as_ptr() as *const i8),
115+
);
116+
k += reclen as isize;
117+
i += 1;
118+
}
119+
dents.len()
115120
}
116-
dents.len()
117121
}
118122

119123
pub unsafe fn deserialize_dirents(bytes: &[u8]) -> Vec<Dirent64> {
120-
let mut res = Vec::new();
124+
unsafe {
125+
let mut res = Vec::new();
121126

122-
let dirp: *const u8 = bytes.as_ptr();
123-
let nb = bytes.len();
124-
let mut k = 0;
127+
let dirp: *const u8 = bytes.as_ptr();
128+
let nb = bytes.len();
129+
let mut k = 0;
125130

126-
while k < nb as isize {
127-
let dirp = dirp.offset(k);
128-
let mut j: isize = 0;
129-
let ino = ptr::read(dirp.offset(j).cast::<u64>());
130-
j += std::mem::size_of::<u64>() as isize;
131-
let off = ptr::read(dirp.offset(j).cast::<i64>());
132-
j += std::mem::size_of::<i64>() as isize;
133-
let reclen = ptr::read(dirp.offset(j).cast::<u16>());
134-
j += std::mem::size_of::<u16>() as isize;
135-
let name = std::slice::from_raw_parts(dirp.offset(j), reclen as usize - j as usize);
136-
j = reclen as isize - 1;
137-
let ty = ptr::read(dirp.offset(j).cast::<u8>());
138-
let ent = Dirent64 {
139-
ino,
140-
off,
141-
reclen,
142-
ty,
143-
name,
144-
};
145-
res.push(ent);
146-
k += reclen as isize;
131+
while k < nb as isize {
132+
let dirp = dirp.offset(k);
133+
let mut j: isize = 0;
134+
let ino = ptr::read(dirp.offset(j).cast::<u64>());
135+
j += std::mem::size_of::<u64>() as isize;
136+
let off = ptr::read(dirp.offset(j).cast::<i64>());
137+
j += std::mem::size_of::<i64>() as isize;
138+
let reclen = ptr::read(dirp.offset(j).cast::<u16>());
139+
j += std::mem::size_of::<u16>() as isize;
140+
let name = std::slice::from_raw_parts(dirp.offset(j), reclen as usize - j as usize);
141+
j = reclen as isize - 1;
142+
let ty = ptr::read(dirp.offset(j).cast::<u8>());
143+
let ent = Dirent64 {
144+
ino,
145+
off,
146+
reclen,
147+
ty,
148+
name,
149+
};
150+
res.push(ent);
151+
k += reclen as isize;
152+
}
153+
res
147154
}
148-
res
149155
}
150156

151157
pub unsafe fn serialize_dirents(dents: &[Dirent64], bytes: &mut [u8]) -> usize {
152-
let nb = bytes.len();
153-
let mut k = 0;
154-
let mut i = 0;
158+
unsafe {
159+
let nb = bytes.len();
160+
let mut k = 0;
161+
let mut i = 0;
155162

156-
while k < nb as isize && i < dents.len() {
157-
let ent = &dents[i];
158-
let dirp = bytes.as_mut_ptr().offset(k);
159-
let mut j: isize = 0;
160-
ptr::write(dirp.offset(j).cast::<u64>(), ent.ino);
161-
j += std::mem::size_of::<u64>() as isize;
162-
ptr::write(dirp.offset(j).cast::<i64>(), ent.off);
163-
j += std::mem::size_of::<i64>() as isize;
164-
ptr::write(dirp.offset(j).cast::<u16>(), ent.reclen);
165-
j += std::mem::size_of::<u16>() as isize;
166-
let reclen = ent.reclen;
167-
ptr::copy_nonoverlapping(
168-
ent.name.as_ptr(),
169-
dirp.offset(j),
170-
strlen(ent.name.as_ptr() as *const i8),
171-
);
172-
j = reclen as isize - 1;
173-
ptr::write(dirp.offset(j).cast::<u8>(), ent.ty);
174-
k += reclen as isize;
175-
i += 1;
163+
while k < nb as isize && i < dents.len() {
164+
let ent = &dents[i];
165+
let dirp = bytes.as_mut_ptr().offset(k);
166+
let mut j: isize = 0;
167+
ptr::write(dirp.offset(j).cast::<u64>(), ent.ino);
168+
j += std::mem::size_of::<u64>() as isize;
169+
ptr::write(dirp.offset(j).cast::<i64>(), ent.off);
170+
j += std::mem::size_of::<i64>() as isize;
171+
ptr::write(dirp.offset(j).cast::<u16>(), ent.reclen);
172+
j += std::mem::size_of::<u16>() as isize;
173+
let reclen = ent.reclen;
174+
ptr::copy_nonoverlapping(
175+
ent.name.as_ptr(),
176+
dirp.offset(j),
177+
strlen(ent.name.as_ptr() as *const i8),
178+
);
179+
j = reclen as isize - 1;
180+
ptr::write(dirp.offset(j).cast::<u8>(), ent.ty);
181+
k += reclen as isize;
182+
i += 1;
183+
}
184+
dents.len()
176185
}
177-
dents.len()
178186
}
179187

180188
#[cfg(test)]

detcore/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@ impl<T: RecordOrReplay> Tool for Detcore<T> {
852852
if let Some(ptr) = guest.auxv().at_random() {
853853
// It is safe to mutate this address since libc has not yet had a
854854
// chance to modify or copy the auxv table.
855-
let bytes: [u8; 16] = guest.thread_state_mut().thread_prng().gen();
855+
let bytes: [u8; 16] = guest.thread_state_mut().thread_prng().r#gen();
856856
detlog!(
857857
"[post_exec, dtid {}] init auxv AT_RANDOM value to {:?}",
858858
guest.thread_state().dettid,

detcore/tests/testutils/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,16 +272,16 @@ macro_rules! basic_det_test {
272272
( $fn:path ) => {
273273
$crate::basic_det_test!($fn, |_| true);
274274
};
275-
( $fn:path, $f:expr ) => {
275+
( $fn:path, $f:expr_2021 ) => {
276276
$crate::basic_det_test!(@gendef $fn, $f);
277277
$crate::make_det_test_variants!(detcore, "all");
278278
};
279-
( $fn:path, $f:expr, $($variants:tt),+ ) => {
279+
( $fn:path, $f:expr_2021, $($variants:tt),+ ) => {
280280
$crate::basic_det_test!(@gendef $fn, $f);
281281
$crate::make_det_test_variants!(detcore $(,$variants)* );
282282
};
283283

284-
(@gendef $fn:path, $f:expr ) => {
284+
(@gendef $fn:path, $f:expr_2021 ) => {
285285
fn detcore(cfg: & ::detcore::Config) {
286286
$crate::det_test_fn_with_config(
287287
$f(cfg),

hermit-cli/src/bin/hermit/analyze/minimize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ impl AnalyzeOpts {
115115

116116
let min_seed = self.analyze_seed.unwrap_or_else(|| {
117117
let mut rng0 = rand::thread_rng();
118-
let seed: u64 = rng0.gen();
118+
let seed: u64 = rng0.r#gen();
119119
seed
120120
});
121121
eprintln!(

hermit-cli/src/bin/hermit/analyze/phases.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,7 @@ impl AnalyzeOpts {
850850
fn do_search(&self) -> RunData {
851851
let search_seed = self.analyze_seed.unwrap_or_else(|| {
852852
let mut rng0 = rand::thread_rng();
853-
let seed: u64 = rng0.gen();
853+
let seed: u64 = rng0.r#gen();
854854
yellow_msg(&format!("WARNING: performing --search with system randomness, use --analyze-seed={} to repro.", seed));
855855
seed
856856
});
@@ -859,7 +859,7 @@ impl AnalyzeOpts {
859859

860860
let mut round = 0;
861861
loop {
862-
let sched_seed = rng.gen();
862+
let sched_seed = rng.r#gen();
863863
if let Some(mut rundat) = self
864864
.launch_search(round, sched_seed)
865865
.unwrap_or_else(|e| panic!("Error: {}", e))

hermit-cli/src/bin/hermit/global_opts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl GlobalOpts {
5555
/// Initalizes tracing. If using a container, this must be done *inside* of
5656
/// the container because the tracer may create a new thread.
5757
#[must_use = "This function returns a guard that should not be immediately dropped"]
58-
pub fn init_tracing(&self) -> Option<impl Drop> {
58+
pub fn init_tracing(&self) -> Option<impl Drop + use<>> {
5959
if let Some(path) = &self.log_file {
6060
let file_writer = File::create(path).expect("Failed to open log file");
6161
Some(init_file_tracing(self.log, file_writer))

hermit-cli/src/bin/hermit/record_start.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ impl StartOpts {
121121
// FIXME: This is a little hacky. This should be configured via a config
122122
// value instead. That's not done because there is no nesting of global
123123
// state yet.
124-
std::env::set_var("HERMIT_VERIFY", "1");
124+
// TODO: Audit that the environment access only happens in single-threaded code.
125+
unsafe { std::env::set_var("HERMIT_VERIFY", "1") };
125126

126127
// Replay the recording.
127128
let replay = container
@@ -168,7 +169,8 @@ impl StartOpts {
168169
// FIXME: This is a little hacky. This should be configured via a config
169170
// value instead. That's not done because there is no nesting of global
170171
// state yet.
171-
std::env::set_var("HERMIT_VERIFY", "1");
172+
// TODO: Audit that the environment access only happens in single-threaded code.
173+
unsafe { std::env::set_var("HERMIT_VERIFY", "1") };
172174

173175
// Find the path to the executable so that GDB can use it to resolve
174176
// symbols.

0 commit comments

Comments
 (0)