about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-07-14 19:30:35 +0000
committerbors <bors@rust-lang.org>2023-07-14 19:30:35 +0000
commit789dfd2a256e2725d2bcf50cca3e73f0397b91f8 (patch)
tree39780ef937a55e15466c8aea7794b9278b99e4f4
parent8e5f944317cfefc8fb17b57ff7b7ccc7326f4642 (diff)
parent41b8b0b77d5f30ff63aa3c2fdf87e643ca9481e5 (diff)
downloadrust-789dfd2a256e2725d2bcf50cca3e73f0397b91f8.tar.gz
rust-789dfd2a256e2725d2bcf50cca3e73f0397b91f8.zip
Auto merge of #15284 - HKalbasi:mir, r=HKalbasi
Enable cfg miri in analysis
-rw-r--r--crates/hir-ty/src/mir/eval/shim.rs11
-rw-r--r--crates/project-model/src/rustc_cfg.rs3
2 files changed, 14 insertions, 0 deletions
diff --git a/crates/hir-ty/src/mir/eval/shim.rs b/crates/hir-ty/src/mir/eval/shim.rs
index 28a5e50a56a..9ad6087cad9 100644
--- a/crates/hir-ty/src/mir/eval/shim.rs
+++ b/crates/hir-ty/src/mir/eval/shim.rs
@@ -380,6 +380,17 @@ impl Evaluator<'_> {
                 let id = from_bytes!(i64, id.get(self)?);
                 self.exec_syscall(id, rest, destination, locals, span)
             }
+            "sched_getaffinity" => {
+                let [_pid, _set_size, set] = args else {
+                    return Err(MirEvalError::TypeError("libc::write args are not provided"));
+                };
+                let set = Address::from_bytes(set.get(self)?)?;
+                // Only enable core 0 (we are single threaded anyway), which is bitset 0x0000001
+                self.write_memory(set, &[1])?;
+                // return 0 as success
+                self.write_memory_using_ref(destination.addr, destination.size)?.fill(0);
+                Ok(())
+            }
             _ => not_supported!("unknown external function {as_str}"),
         }
     }
diff --git a/crates/project-model/src/rustc_cfg.rs b/crates/project-model/src/rustc_cfg.rs
index 7ec6948eff0..8392718b227 100644
--- a/crates/project-model/src/rustc_cfg.rs
+++ b/crates/project-model/src/rustc_cfg.rs
@@ -22,6 +22,9 @@ pub(crate) fn get(
         }
     }
 
+    // Add miri cfg, which is useful for mir eval in stdlib
+    res.push(CfgFlag::Atom("miri".into()));
+
     match get_rust_cfgs(cargo_toml, target, extra_env) {
         Ok(rustc_cfgs) => {
             tracing::debug!(