[INFO] cloning repository https://github.com/Istar-Eldritch/riscv-emu
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Istar-Eldritch/riscv-emu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIstar-Eldritch%2Friscv-emu", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIstar-Eldritch%2Friscv-emu'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8a8d2ba3c9ff670f8470bd0b7ab119047e0a1aa5
[INFO] checking Istar-Eldritch/riscv-emu against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIstar-Eldritch%2Friscv-emu" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Istar-Eldritch/riscv-emu
[INFO] finished tweaking git repo https://github.com/Istar-Eldritch/riscv-emu
[INFO] tweaked toml for git repo https://github.com/Istar-Eldritch/riscv-emu written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Istar-Eldritch/riscv-emu on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Istar-Eldritch/riscv-emu already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded register-interface v0.1.0
[INFO] [stderr]   Downloaded clap v4.0.26
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 62cb0126b5ab155e83a01b71a5571a9872c7c5d63bc508978689bd56700627e5
[INFO] running `Command { std: "docker" "start" "-a" "62cb0126b5ab155e83a01b71a5571a9872c7c5d63bc508978689bd56700627e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "62cb0126b5ab155e83a01b71a5571a9872c7c5d63bc508978689bd56700627e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "62cb0126b5ab155e83a01b71a5571a9872c7c5d63bc508978689bd56700627e5", kill_on_drop: false }`
[INFO] [stdout] 62cb0126b5ab155e83a01b71a5571a9872c7c5d63bc508978689bd56700627e5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 121b31779b43ba134ab4ffc4a96b9ce44e4e5821d63a7c211ca3af4071572732
[INFO] running `Command { std: "docker" "start" "-a" "121b31779b43ba134ab4ffc4a96b9ce44e4e5821d63a7c211ca3af4071572732", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.103
[INFO] [stderr]    Compiling serde v1.0.147
[INFO] [stderr]     Checking regex-syntax v0.6.28
[INFO] [stderr]     Checking unicode-ident v1.0.5
[INFO] [stderr]     Checking io-lifetimes v1.0.3
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking proc-macro2 v1.0.47
[INFO] [stderr]     Checking rustix v0.36.4
[INFO] [stderr]     Checking quote v1.0.21
[INFO] [stderr]     Checking regex v1.7.0
[INFO] [stderr]     Checking is-terminal v0.4.1
[INFO] [stderr]     Checking env_logger v0.10.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking macros v0.1.0 (/opt/rustwide/workdir/macros)
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]    Compiling clap_derive v4.0.21
[INFO] [stderr]    Compiling register-interface v0.1.0
[INFO] [stderr]     Checking riscv_isa_types v0.1.0 (/opt/rustwide/workdir/riscv_isa_types)
[INFO] [stderr]     Checking clap v4.0.26
[INFO] [stderr]     Checking riscv-emu v0.1.0 (/opt/rustwide/workdir/emu)
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |             let to_read: *const u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]    = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 23 -             let to_read: *const u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 23 +             let to_read: *const u8 = std::ptr::with_exposed_provenance::<u8>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:32:36
[INFO] [stdout]    |
[INFO] [stdout] 32 |             let to_read: *mut u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 32 -             let to_read: *mut u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 32 +             let to_read: *mut u8 = std::ptr::with_exposed_provenance_mut::<u8>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:41:39
[INFO] [stdout]    |
[INFO] [stdout] 41 |             let to_read: *const u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 41 -             let to_read: *const u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 41 +             let to_read: *const u16 = std::ptr::with_exposed_provenance::<u16>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:50:37
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let to_read: *mut u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 50 -             let to_read: *mut u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 50 +             let to_read: *mut u16 = std::ptr::with_exposed_provenance_mut::<u16>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:59:39
[INFO] [stdout]    |
[INFO] [stdout] 59 |             let to_read: *const u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 59 -             let to_read: *const u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 59 +             let to_read: *const u32 = std::ptr::with_exposed_provenance::<u32>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:68:37
[INFO] [stdout]    |
[INFO] [stdout] 68 |             let to_read: *mut u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 68 -             let to_read: *mut u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 68 +             let to_read: *mut u32 = std::ptr::with_exposed_provenance_mut::<u32>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> emu/src/utils.rs:45:27
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let n: i32 = unsafe { transmute(n) };
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 45 -     let n: i32 = unsafe { transmute(n) };
[INFO] [stdout] 45 +     let n: i32 = unsafe { u32::cast_signed(n) };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> emu/src/utils.rs:47:14
[INFO] [stdout]    |
[INFO] [stdout] 47 |     unsafe { transmute(n) }
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 47 -     unsafe { transmute(n) }
[INFO] [stdout] 47 +     unsafe { i32::cast_unsigned(n) }
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:23:38
[INFO] [stdout]    |
[INFO] [stdout] 23 |             let to_read: *const u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout]    = note: `#[warn(integer_to_ptr_transmutes)]` on by default
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 23 -             let to_read: *const u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 23 +             let to_read: *const u8 = std::ptr::with_exposed_provenance::<u8>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:32:36
[INFO] [stdout]    |
[INFO] [stdout] 32 |             let to_read: *mut u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 32 -             let to_read: *mut u8 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 32 +             let to_read: *mut u8 = std::ptr::with_exposed_provenance_mut::<u8>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:41:39
[INFO] [stdout]    |
[INFO] [stdout] 41 |             let to_read: *const u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 41 -             let to_read: *const u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 41 +             let to_read: *const u16 = std::ptr::with_exposed_provenance::<u16>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:50:37
[INFO] [stdout]    |
[INFO] [stdout] 50 |             let to_read: *mut u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 50 -             let to_read: *mut u16 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 50 +             let to_read: *mut u16 = std::ptr::with_exposed_provenance_mut::<u16>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:59:39
[INFO] [stdout]    |
[INFO] [stdout] 59 |             let to_read: *const u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 59 -             let to_read: *const u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 59 +             let to_read: *const u32 = std::ptr::with_exposed_provenance::<u32>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: transmuting an integer to a pointer creates a pointer without provenance
[INFO] [stdout]   --> emu/src/memory/mapped_memory.rs:68:37
[INFO] [stdout]    |
[INFO] [stdout] 68 |             let to_read: *mut u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this is dangerous because dereferencing the resulting pointer is undefined behavior
[INFO] [stdout]    = note: exposed provenance semantics can be used to create a pointer based on some previously exposed provenance
[INFO] [stdout]    = help: if you truly mean to create a pointer without provenance, use `std::ptr::without_provenance_mut`
[INFO] [stdout]    = help: for more information about transmute, see <https://doc.rust-lang.org/std/mem/fn.transmute.html#transmutation-between-pointers-and-integers>
[INFO] [stdout]    = help: for more information about exposed provenance, see <https://doc.rust-lang.org/std/ptr/index.html#exposed-provenance>
[INFO] [stdout] help: use `std::ptr::with_exposed_provenance_mut` instead to use a previously exposed provenance
[INFO] [stdout]    |
[INFO] [stdout] 68 -             let to_read: *mut u32 = std::mem::transmute((ptr as usize) + shift);
[INFO] [stdout] 68 +             let to_read: *mut u32 = std::ptr::with_exposed_provenance_mut::<u32>((ptr as usize) + shift);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> emu/src/utils.rs:45:27
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let n: i32 = unsafe { transmute(n) };
[INFO] [stdout]    |                           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 45 -     let n: i32 = unsafe { transmute(n) };
[INFO] [stdout] 45 +     let n: i32 = unsafe { u32::cast_signed(n) };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> emu/src/utils.rs:47:14
[INFO] [stdout]    |
[INFO] [stdout] 47 |     unsafe { transmute(n) }
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 47 -     unsafe { transmute(n) }
[INFO] [stdout] 47 +     unsafe { i32::cast_unsigned(n) }
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command`
[INFO] [stdout]  --> emu/src/bin/riscv-emu.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use clap::{command, Parser};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command`
[INFO] [stdout]  --> emu/src/bin/riscv-emu.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use clap::{command, Parser};
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.04s
[INFO] running `Command { std: "docker" "inspect" "121b31779b43ba134ab4ffc4a96b9ce44e4e5821d63a7c211ca3af4071572732", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "121b31779b43ba134ab4ffc4a96b9ce44e4e5821d63a7c211ca3af4071572732", kill_on_drop: false }`
[INFO] [stdout] 121b31779b43ba134ab4ffc4a96b9ce44e4e5821d63a7c211ca3af4071572732
