Add direct accessors for memory addresses in Machine
(for Miri) by Strophox · Pull Request #126787 · rust-lang/rust (original) (raw)
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation3 Commits1 Checks6 Files changed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})
The purpose of this PR is to enable direct (immutable) access to memory addresses in Machine
, which will be needed for further extension of Miri.
This is done by adding (/completing missings pairs of) accessor functions, with the relevant signatures as follows:
/* rust/compiler/rustc_middle/src/mir/interpret/allocation.rs */
pub trait AllocBytes { // ..
fn as_ptr(&self) -> *const u8; /*fn as_mut_ptr(&mut self) -> mut u8; -- Already in the compiler/ }
impl<Prov: Provenance, Extra, Bytes: AllocBytes> Allocation<Prov, Extra, Bytes> { // ..
pub fn get_bytes_unchecked_raw(&self) -> *const u8; /*pub fn get_bytes_unchecked_raw_mut(&mut self) -> mut u8; -- Already in the compiler/ }
/* rust/compiler/rustc_const_eval/src/interpret/memory.rs */
impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> { // ..
pub fn get_alloc_bytes_unchecked_raw(&self, id: AllocId) -> InterpResult<'tcx, *const u8>; pub fn get_alloc_bytes_unchecked_raw_mut(&mut self, id: AllocId) -> InterpResult<'tcx, *mut u8>; }
r? @RalfJung
…hecked_raw in allocation.rs; add pub fn get_alloc_bytes_unchecked_raw[_mut] in memory.rs
rustbot added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
labels
The Miri subtree was changed
cc @rust-lang/miri
Some changes occurred to the CTFE / Miri engine
cc @rust-lang/miri
Some changes occurred to the CTFE / Miri engine
cc @rust-lang/miri
Looks good, thanks!
@bors r+ rollup
📌 Commit b512bf6 has been approved by RalfJung
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
Add direct accessors for memory addresses in Machine
(for Miri)
The purpose of this PR is to enable direct (immutable) access to memory addresses in Machine
, which will be needed for further extension of Miri.
This is done by adding (/completing missings pairs of) accessor functions, with the relevant signatures as follows:
/* rust/compiler/rustc_middle/src/mir/interpret/allocation.rs */
pub trait AllocBytes {
// ..
fn as_ptr(&self) -> *const u8;
/*fn as_mut_ptr(&mut self) -> *mut u8; -- Already in the compiler*/
}
impl<Prov: Provenance, Extra, Bytes: AllocBytes> Allocation<Prov, Extra, Bytes> {
// ..
pub fn get_bytes_unchecked_raw(&self) -> *const u8;
/*pub fn get_bytes_unchecked_raw_mut(&mut self) -> *mut u8; -- Already in the compiler*/
}
/* rust/compiler/rustc_const_eval/src/interpret/memory.rs */
impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
// ..
pub fn get_alloc_bytes_unchecked_raw(&self, id: AllocId) -> InterpResult<'tcx, *const u8>;
pub fn get_alloc_bytes_unchecked_raw_mut(&mut self, id: AllocId) -> InterpResult<'tcx, *mut u8>;
}
r? @RalfJung
bors added a commit to rust-lang-ci/rust that referenced this pull request
…iaskrgr
Rollup of 6 pull requests
Successful merges:
- rust-lang#116113 ( Generalize
{Rc,Arc}::make_mut()
to unsized types.) - rust-lang#126722 (Add method to get
FnAbi
of function pointer) - rust-lang#126787 (Add direct accessors for memory addresses in
Machine
(for Miri)) - rust-lang#126798 ([fuchsia-test-runner] Remove usage of kw_only)
- rust-lang#126809 (Remove stray
.
from error message) - rust-lang#126811 (Add a tidy rule to check that fluent messages and attrs don't end in
.
)
r? @ghost
@rustbot
modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request
Rollup of 6 pull requests
Successful merges:
- rust-lang#116113 ( Generalize
{Rc,Arc}::make_mut()
to unsized types.) - rust-lang#126722 (Add method to get
FnAbi
of function pointer) - rust-lang#126787 (Add direct accessors for memory addresses in
Machine
(for Miri)) - rust-lang#126798 ([fuchsia-test-runner] Remove usage of kw_only)
- rust-lang#126809 (Remove stray
.
from error message) - rust-lang#126811 (Add a tidy rule to check that fluent messages and attrs don't end in
.
)
r? @ghost
@rustbot
modify labels: rollup
try-job: test-various
bors added a commit to rust-lang-ci/rust that referenced this pull request
…kingjubilee
Rollup of 7 pull requests
Successful merges:
- rust-lang#126530 (Add
f16
inline ASM support for RISC-V) - rust-lang#126712 (Migrate
relocation-model
,error-writing-dependencies
andcrate-name-priority
run-make
tests to rmake) - rust-lang#126722 (Add method to get
FnAbi
of function pointer) - rust-lang#126787 (Add direct accessors for memory addresses in
Machine
(for Miri)) - rust-lang#126798 ([fuchsia-test-runner] Remove usage of kw_only)
- rust-lang#126809 (Remove stray
.
from error message) - rust-lang#126811 (Add a tidy rule to check that fluent messages and attrs don't end in
.
)
r? @ghost
@rustbot
modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#126787 - Strophox:get-bytes, r=RalfJung
Add direct accessors for memory addresses in Machine
(for Miri)
The purpose of this PR is to enable direct (immutable) access to memory addresses in Machine
, which will be needed for further extension of Miri.
This is done by adding (/completing missings pairs of) accessor functions, with the relevant signatures as follows:
/* rust/compiler/rustc_middle/src/mir/interpret/allocation.rs */
pub trait AllocBytes {
// ..
fn as_ptr(&self) -> *const u8;
/*fn as_mut_ptr(&mut self) -> *mut u8; -- Already in the compiler*/
}
impl<Prov: Provenance, Extra, Bytes: AllocBytes> Allocation<Prov, Extra, Bytes> {
// ..
pub fn get_bytes_unchecked_raw(&self) -> *const u8;
/*pub fn get_bytes_unchecked_raw_mut(&mut self) -> *mut u8; -- Already in the compiler*/
}
/* rust/compiler/rustc_const_eval/src/interpret/memory.rs */
impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
// ..
pub fn get_alloc_bytes_unchecked_raw(&self, id: AllocId) -> InterpResult<'tcx, *const u8>;
pub fn get_alloc_bytes_unchecked_raw_mut(&mut self, id: AllocId) -> InterpResult<'tcx, *mut u8>;
}
r? @RalfJung
jaisnan pushed a commit to jaisnan/rust-dev that referenced this pull request
Update Rust toolchain from nightly-2024-06-22 to nightly-2024-06-23
without any other source changes.
This is an automatically generated pull request. If any of the CI checks
fail, manual intervention is required. In such a case, review the
changes at https://github.com/rust-lang/rust from
rust-lang@c1b336c
up to
rust-lang@3cb521a.
The log for this commit range is:
rust-lang@3cb521a434 Auto merge of
rust-lang#126761 - GuillaumeGomez:unsafe_extern_blocks, r=spastorino
rust-lang@a0f01c3c10 Auto merge of
rust-lang#126838 - matthiaskrgr:rollup-qkop22o, r=matthiaskrgr
rust-lang@dc9a08f535 Rollup merge of
rust-lang#126552 - fee1-dead-contrib:rmfx, r=compiler-errors
rust-lang@162120b4fa Rollup merge of
rust-lang#126318 - Kobzol:bootstrap-perf, r=onur-ozkan
rust-lang@f3ced9d540 Rollup merge of
rust-lang#126140 - eduardosm:stabilize-fs_try_exists, r=Amanieu
rust-lang@f944afe380 Auto merge of
rust-lang#116113 - kpreid:arcmut, r=dtolnay
rust-lang@88c3db57e4 Generalize
{Rc,Arc}::make_mut()
to unsized types.
rust-lang@a9a4830d25 Replace
WriteCloneIntoRaw
with CloneToUninit
.
rust-lang@ec201b8650 Add
core::clone::CloneToUninit
.
rust-lang@81da6a6d40 Make effects
an
incomplete feature
rust-lang@ac47dbad50 Auto merge of
rust-lang#126824 - GuillaumeGomez:rollup-sybv8o7, r=GuillaumeGomez
rust-lang@d265538016 Rollup merge of
rust-lang#126823 - GuillaumeGomez:migrate-run-make-inline-always-many-cgu,
r=Kobzol
rust-lang@25bcc7d130 Rollup merge of
rust-lang#126731 - Kobzol:bootstrap-cmd-refactor, r=onur-ozkan
rust-lang@399c5cabdd Rollup merge of
rust-lang#126723 - estebank:dot-dot-dot, r=Nadrieril
rust-lang@3ed2cd74b5 Rollup merge of
rust-lang#126686 - fmease:dump-preds-n-item-bounds, r=compiler-errors
rust-lang@07e8b3ac01 Rollup merge of
rust-lang#126555 - beetrees:f16-inline-asm-arm, r=Amanieu
rust-lang@d03d6c0fea Auto merge of
rust-lang#126750 - scottmcm:less-unlikely, r=jhpratt
rust-lang@e7dfd4a913 Migrate
run-make/inline-always-many-cgu
to rmake.rs
rust-lang@d9962bb4d8 Make read_dir
method take a mutable callback
rust-lang@f1b0d54ca9 Auto merge of
rust-lang#126816 - weihanglo:update-cargo, r=weihanglo
rust-lang@0bd58d8122 Apply review
comments.
rust-lang@250586cb2e Wrap std Output
in
CommandOutput
rust-lang@f0aceed540 Auto merge of
rust-lang#126817 - workingjubilee:rollup-0rg0k55, r=workingjubilee
rust-lang@38bd7a0fcb Add
#[rustc_dump_{predicates,item_bounds}]
rust-lang@1916b3d57f Rollup merge of
rust-lang#126811 - compiler-errors:tidy-ftl, r=estebank
rust-lang@539090e5cd Rollup merge of
rust-lang#126809 - estebank:wording-tweak, r=oli-obk
rust-lang@b9ab6c3501 Rollup merge of
rust-lang#126798 - miguelfrde:master, r=tmandry
rust-lang@9498d5cf2f Rollup merge of
rust-lang#126787 - Strophox:get-bytes, r=RalfJung
rust-lang@1f9793f1aa Rollup merge of
rust-lang#126722 - adwinwhite:ptr_fn_abi, r=celinval
rust-lang@84b0922565 Rollup merge of
rust-lang#126712 - Oneirical:bootest-constestllation, r=jieyouxu
rust-lang@e7956cd994 Rollup merge of
rust-lang#126530 - beetrees:f16-inline-asm-riscv, r=Amanieu
rust-lang@10e1f5d212 Auto merge of
rust-lang#124101 - the8472:pidfd-methods, r=cuviper
rust-lang@2c65a24b8c Update cargo
rust-lang@fcae62649e Auto merge of
rust-lang#126758 - spastorino:avoid-safe-outside-unsafe-blocks, r=compiler-errors
rust-lang@ffd72b1700 Fix remaining cases
rust-lang@ea681ef281 Add a tidy rule to
make sure that diagnostics don't end in periods
rust-lang@8abf149bde to extract a pidfd
we must consume the child
rust-lang@0787c7308c Add PidFd::{kill,
wait, try_wait}
rust-lang@5d5892e966 Remove stray .
from error message
rust-lang@d94a40516e
[fuchsia-test-runner] Remove usage of kw_only
rust-lang@771e44ebd3 Add f16
inline ASM
support for RISC-V
rust-lang@753fb070bb Add f16
inline ASM
support for 32-bit ARM
rust-lang@22831ed117 Do not allow safe
usafe on static and fn items
rust-lang@a6a83d3d4e bless tests
rust-lang@b512bf6f77 add as_ptr to trait
AllocBytes, fix 2 impls; add pub fn get_bytes_unchecked_raw in
allocation.rs; add pub fn get_alloc_bytes_unchecked_raw[_mut] in
memory.rs
rust-lang@02aaea1803 update intrinsic
const param counting
rust-lang@3b14b756d8 Remove
feature(effects)
from the standard library
rust-lang@a314f7363a Stop using
unlikely
in strict_*
methods
rust-lang@225796a2df Add method to get
FnAbi
of function pointer
rust-lang@630c3adb14 Add regression test
for unsafe_extern_blocks
rust-lang@bb9a3ef90c Implement
unsafe_extern_blocks
feature in rustdoc
rust-lang@3c0a4bc915 rewrite
crate-name-priority to rmake
rust-lang@bc12972bcd Slightly refactor
the dumping of HIR analysis data
rust-lang@3fe4d134dd Appease clippy
rust-lang@c15293407f Remove unused import
rust-lang@5c4318d02c Implement run_cmd
in terms of run_tracked
rust-lang@0de7b92cc6 Remove
run_delaying_failure
rust-lang@e933cfb13c Remove
run_quiet_delaying_failure
rust-lang@949e667d3f Remove run_quiet
rust-lang@a12f541a18 Implement new
command execution logic
rust-lang@9fd7784b97 Fix ...
in
multline code-skips in suggestions
rust-lang@f22b5afa6a rewrite
error-writing-dependencies to rmake
rust-lang@75ee1d74a9 rewrite
relocation-model to rmake
rust-lang@87d2e61428 Add x perf
command
for profiling the compiler using rustc-perf
rust-lang@fd44aca2aa Copy rustc-fake
binary when building the rustc-perf
tool
rust-lang@9e0b76201b Add RustcPerf
bootstrap tool
rust-lang@9ec178df0b Add cargo_args
to
ToolBuild
rust-lang@6a04dfe78c Rename
std::fs::try_exists
to std::fs::exists
and stabilize fs_try_exists
Co-authored-by: celinval 35149715+celinval@users.noreply.github.com
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
… r=RalfJung
Enable Miri to pass pointers through FFI
Following rust-lang#126787, the purpose of this PR is to now enable Miri to execute native calls that make use of pointers.
Simple example
extern "C" { fn ptr_printer(ptr: *mut i32); } fn main() { let ptr = &mut 42 as *mut i32; unsafe { ptr_printer(ptr); } }
void ptr_printer(int *ptr) { printf("printing pointer dereference from C: %d\n", *ptr); }
should now show
printing pointer dereference from C: 42
.
Note that this PR does not yet implement any logic involved in updating Miri's "analysis" state (byte initialization, provenance) upon such a native call.
r? @RalfJung
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request
… r=RalfJung
Enable Miri to pass pointers through FFI
Following rust-lang#126787, the purpose of this PR is to now enable Miri to execute native calls that make use of pointers.
Simple example
extern "C" { fn ptr_printer(ptr: *mut i32); } fn main() { let ptr = &mut 42 as *mut i32; unsafe { ptr_printer(ptr); } }
void ptr_printer(int *ptr) { printf("printing pointer dereference from C: %d\n", *ptr); }
should now show
printing pointer dereference from C: 42
.
Note that this PR does not yet implement any logic involved in updating Miri's "analysis" state (byte initialization, provenance) upon such a native call.
r? @RalfJung
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#129684 - Strophox:miri-pass-pointer-to-ffi, r=RalfJung
Enable Miri to pass pointers through FFI
Following rust-lang#126787, the purpose of this PR is to now enable Miri to execute native calls that make use of pointers.
Simple example
extern "C" { fn ptr_printer(ptr: *mut i32); } fn main() { let ptr = &mut 42 as *mut i32; unsafe { ptr_printer(ptr); } }
void ptr_printer(int *ptr) { printf("printing pointer dereference from C: %d\n", *ptr); }
should now show
printing pointer dereference from C: 42
.
Note that this PR does not yet implement any logic involved in updating Miri's "analysis" state (byte initialization, provenance) upon such a native call.
r? @RalfJung
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request
Enable Miri to pass pointers through FFI
Following rust-lang/rust#126787, the purpose of this PR is to now enable Miri to execute native calls that make use of pointers.
Simple example
extern "C" { fn ptr_printer(ptr: *mut i32); } fn main() { let ptr = &mut 42 as *mut i32; unsafe { ptr_printer(ptr); } }
void ptr_printer(int *ptr) { printf("printing pointer dereference from C: %d\n", *ptr); }
should now show
printing pointer dereference from C: 42
.
Note that this PR does not yet implement any logic involved in updating Miri's "analysis" state (byte initialization, provenance) upon such a native call.
r? @RalfJung
Labels
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Relevant to the compiler team, which will review and decide on the PR/issue.