Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 4a329e9

Browse files
committed
Set the st_fstype filed on Solaris
1 parent 6963ecd commit 4a329e9

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

src/tools/miri/src/shims/unix/freebsd/foreign_items.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,17 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
6060
// since freebsd 12 the former form can be expected.
6161
"stat" | "stat@FBSD_1.0" => {
6262
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
63-
let result = this.macos_fbsd_solaris_stat(path, buf)?;
63+
let result = this.macos_fbsd_solarish_stat(path, buf)?;
6464
this.write_scalar(result, dest)?;
6565
}
6666
"lstat" | "lstat@FBSD_1.0" => {
6767
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
68-
let result = this.macos_fbsd_solaris_lstat(path, buf)?;
68+
let result = this.macos_fbsd_solarish_lstat(path, buf)?;
6969
this.write_scalar(result, dest)?;
7070
}
7171
"fstat" | "fstat@FBSD_1.0" => {
7272
let [fd, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
73-
let result = this.macos_fbsd_solaris_fstat(fd, buf)?;
73+
let result = this.macos_fbsd_solarish_fstat(fd, buf)?;
7474
this.write_scalar(result, dest)?;
7575
}
7676
"readdir_r" | "readdir_r@FBSD_1.0" => {

src/tools/miri/src/shims/unix/fs.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ impl UnixFileDescription for FileHandle {
273273

274274
impl<'tcx> EvalContextExtPrivate<'tcx> for crate::MiriInterpCx<'tcx> {}
275275
trait EvalContextExtPrivate<'tcx>: crate::MiriInterpCxExt<'tcx> {
276-
fn macos_fbsd_solaris_write_buf(
276+
fn macos_fbsd_solarish_write_stat_buf(
277277
&mut self,
278278
metadata: FileMetadata,
279279
buf_op: &OpTy<'tcx>,
@@ -321,9 +321,9 @@ trait EvalContextExtPrivate<'tcx>: crate::MiriInterpCxExt<'tcx> {
321321
}
322322

323323
if matches!(&*this.tcx.sess.target.os, "solaris" | "illumos") {
324-
// FIXME: write st_fstype field once libc is updated.
325-
// https://github.com/rust-lang/libc/pull/4145
326-
//this.write_int_fields_named(&[("st_fstype", 0)], &buf)?;
324+
let st_fstype = this.project_field_named(&buf, "st_fstype")?;
325+
// This is an array; write 0 into first element so that it encodes the empty string.
326+
this.write_int(0, &this.project_index(&st_fstype, 0)?)?;
327327
}
328328

329329
interp_ok(0)
@@ -668,7 +668,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
668668
interp_ok(Scalar::from_i32(this.try_unwrap_io_result(result)?))
669669
}
670670

671-
fn macos_fbsd_solaris_stat(
671+
fn macos_fbsd_solarish_stat(
672672
&mut self,
673673
path_op: &OpTy<'tcx>,
674674
buf_op: &OpTy<'tcx>,
@@ -694,11 +694,11 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
694694
Err(err) => return this.set_last_error_and_return_i32(err),
695695
};
696696

697-
interp_ok(Scalar::from_i32(this.macos_fbsd_solaris_write_buf(metadata, buf_op)?))
697+
interp_ok(Scalar::from_i32(this.macos_fbsd_solarish_write_stat_buf(metadata, buf_op)?))
698698
}
699699

700700
// `lstat` is used to get symlink metadata.
701-
fn macos_fbsd_solaris_lstat(
701+
fn macos_fbsd_solarish_lstat(
702702
&mut self,
703703
path_op: &OpTy<'tcx>,
704704
buf_op: &OpTy<'tcx>,
@@ -726,10 +726,10 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
726726
Err(err) => return this.set_last_error_and_return_i32(err),
727727
};
728728

729-
interp_ok(Scalar::from_i32(this.macos_fbsd_solaris_write_buf(metadata, buf_op)?))
729+
interp_ok(Scalar::from_i32(this.macos_fbsd_solarish_write_stat_buf(metadata, buf_op)?))
730730
}
731731

732-
fn macos_fbsd_solaris_fstat(
732+
fn macos_fbsd_solarish_fstat(
733733
&mut self,
734734
fd_op: &OpTy<'tcx>,
735735
buf_op: &OpTy<'tcx>,
@@ -756,7 +756,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
756756
Ok(metadata) => metadata,
757757
Err(err) => return this.set_last_error_and_return_i32(err),
758758
};
759-
interp_ok(Scalar::from_i32(this.macos_fbsd_solaris_write_buf(metadata, buf_op)?))
759+
interp_ok(Scalar::from_i32(this.macos_fbsd_solarish_write_stat_buf(metadata, buf_op)?))
760760
}
761761

762762
fn linux_statx(

src/tools/miri/src/shims/unix/macos/foreign_items.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,17 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
4040
}
4141
"stat" | "stat64" | "stat$INODE64" => {
4242
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
43-
let result = this.macos_fbsd_solaris_stat(path, buf)?;
43+
let result = this.macos_fbsd_solarish_stat(path, buf)?;
4444
this.write_scalar(result, dest)?;
4545
}
4646
"lstat" | "lstat64" | "lstat$INODE64" => {
4747
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
48-
let result = this.macos_fbsd_solaris_lstat(path, buf)?;
48+
let result = this.macos_fbsd_solarish_lstat(path, buf)?;
4949
this.write_scalar(result, dest)?;
5050
}
5151
"fstat" | "fstat64" | "fstat$INODE64" => {
5252
let [fd, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
53-
let result = this.macos_fbsd_solaris_fstat(fd, buf)?;
53+
let result = this.macos_fbsd_solarish_fstat(fd, buf)?;
5454
this.write_scalar(result, dest)?;
5555
}
5656
"opendir$INODE64" => {

src/tools/miri/src/shims/unix/solarish/foreign_items.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,17 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
8787
// File related shims
8888
"stat" | "stat64" => {
8989
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
90-
let result = this.macos_fbsd_solaris_stat(path, buf)?;
90+
let result = this.macos_fbsd_solarish_stat(path, buf)?;
9191
this.write_scalar(result, dest)?;
9292
}
9393
"lstat" | "lstat64" => {
9494
let [path, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
95-
let result = this.macos_fbsd_solaris_lstat(path, buf)?;
95+
let result = this.macos_fbsd_solarish_lstat(path, buf)?;
9696
this.write_scalar(result, dest)?;
9797
}
9898
"fstat" | "fstat64" => {
9999
let [fd, buf] = this.check_shim(abi, Conv::C, link_name, args)?;
100-
let result = this.macos_fbsd_solaris_fstat(fd, buf)?;
100+
let result = this.macos_fbsd_solarish_fstat(fd, buf)?;
101101
this.write_scalar(result, dest)?;
102102
}
103103
"readdir" => {

0 commit comments

Comments
 (0)