[INFO] cloning repository https://github.com/Rogerskelamen/remuir
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Rogerskelamen/remuir" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRogerskelamen%2Fremuir", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRogerskelamen%2Fremuir'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ea6d70cffdeb5633aa807f3e07b609e58e5b5fb2
[INFO] checking Rogerskelamen/remuir against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRogerskelamen%2Fremuir" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Rogerskelamen/remuir
[INFO] finished tweaking git repo https://github.com/Rogerskelamen/remuir
[INFO] tweaked toml for git repo https://github.com/Rogerskelamen/remuir written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Rogerskelamen/remuir on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Rogerskelamen/remuir 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustyline v5.0.6
[INFO] [stderr]   Downloaded utf8parse v0.1.1
[INFO] [stderr]   Downloaded capstone v0.12.0
[INFO] [stderr]   Downloaded capstone-sys v0.16.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc
[INFO] running `Command { std: "docker" "start" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.0.92
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]    Compiling unicode-segmentation v1.11.0
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking dirs-sys v0.3.7
[INFO] [stderr]     Checking nix v0.14.1
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking dirs v2.0.2
[INFO] [stderr]     Checking utf8parse v0.1.1
[INFO] [stderr]     Checking libloading v0.6.7
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling capstone-sys v0.16.0
[INFO] [stderr]     Checking rustyline v5.0.6
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]     Checking structopt v0.3.26
[INFO] [stderr]     Checking capstone v0.12.0
[INFO] [stderr]     Checking remuir v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/core.rs:47:22
[INFO] [stdout]    |
[INFO] [stdout] 47 |     for (id, reg) in CORE.gpr.iter().enumerate() {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:26:84
[INFO] [stdout]    |
[INFO] [stdout] 26 |   static ref DIFF_REGCPY: Mutex<Option<unsafe extern "C" fn(*mut c_void, c_int) -> c_void>> =
[INFO] [stdout]    |                                                                                ----^^^^^^
[INFO] [stdout]    |                                                                                |
[INFO] [stdout]    |                                                                                help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout]    = note: `#[warn(c_void_returns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:28:67
[INFO] [stdout]    |
[INFO] [stdout] 28 |   static ref DIFF_EXEC: Mutex<Option<unsafe extern "C" fn(u64) -> c_void>> =
[INFO] [stdout]    |                                                               ----^^^^^^
[INFO] [stdout]    |                                                               |
[INFO] [stdout]    |                                                               help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:37:80
[INFO] [stdout]    |
[INFO] [stdout] 37 |       let ref_difftest_init: libloading::Symbol<unsafe extern "C" fn(c_int) -> c_void> =
[INFO] [stdout]    |                                                                            ----^^^^^^
[INFO] [stdout]    |                                                                            |
[INFO] [stdout]    |                                                                            help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:41:65
[INFO] [stdout]    |
[INFO] [stdout] 41 |         unsafe extern "C" fn(u32, *mut c_void, usize, c_int) -> c_void,
[INFO] [stdout]    |                                                             ----^^^^^^
[INFO] [stdout]    |                                                             |
[INFO] [stdout]    |                                                             help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:44:91
[INFO] [stdout]    |
[INFO] [stdout] 44 |       let difftest_regcpy: libloading::Symbol<unsafe extern "C" fn(*mut c_void, c_int) -> c_void> =
[INFO] [stdout]    |                                                                                       ----^^^^^^
[INFO] [stdout]    |                                                                                       |
[INFO] [stdout]    |                                                                                       help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:48:74
[INFO] [stdout]    |
[INFO] [stdout] 48 |       let difftest_exec: libloading::Symbol<unsafe extern "C" fn(u64) -> c_void> =
[INFO] [stdout]    |                                                                      ----^^^^^^
[INFO] [stdout]    |                                                                      |
[INFO] [stdout]    |                                                                      help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `c_void` should not be used as a return type
[INFO] [stdout]    --> src/cpu/difftest/dut.rs:131:63
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn ref_difftest_regcpy(dut: *mut c_void, direction: c_int) -> c_void {
[INFO] [stdout]     |                                                           ----^^^^^^
[INFO] [stdout]     |                                                           |
[INFO] [stdout]     |                                                           help: remove the return type to implicitly return `()`
[INFO] [stdout]     |
[INFO] [stdout]     = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `c_void` should not be used as a return type
[INFO] [stdout]    --> src/cpu/difftest/dut.rs:137:33
[INFO] [stdout]     |
[INFO] [stdout] 137 | fn ref_difftest_exec(n: u64) -> c_void {
[INFO] [stdout]     |                             ----^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove the return type to implicitly return `()`
[INFO] [stdout]     |
[INFO] [stdout]     = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:29:37
[INFO] [stdout]    |
[INFO] [stdout] 29 |     log!("host time spent = {} us", TIMER.as_micros());
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:30:43
[INFO] [stdout]    |
[INFO] [stdout] 30 |     log!("total guest instructions = {}", INST_CNT);
[INFO] [stdout]    |                                           ^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 |     if TIMER.as_micros() > 0 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:32:71
[INFO] [stdout]    |
[INFO] [stdout] 32 |       log!("simulation frequency = {} inst/s", INST_CNT * 1_000_000 / TIMER.as_micros());
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:81:78
[INFO] [stdout]    |
[INFO] [stdout] 81 |           log!("remuir: \u{001b}[32mHIT GOOD TRAP\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:83:77
[INFO] [stdout]    |
[INFO] [stdout] 83 |           log!("remuir: \u{001b}[31mHIT BAD TRAP\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:88:68
[INFO] [stdout]    |
[INFO] [stdout] 88 |         log!("remuir: \u{001b}[31mABORT\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                    ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/engine/init.rs:17:49
[INFO] [stdout]    |
[INFO] [stdout] 17 |       println!("Exit with specified code [{}]", EMUSTATE.halt_ret);
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/core.rs:47:22
[INFO] [stdout]    |
[INFO] [stdout] 47 |     for (id, reg) in CORE.gpr.iter().enumerate() {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:26:84
[INFO] [stdout]    |
[INFO] [stdout] 26 |   static ref DIFF_REGCPY: Mutex<Option<unsafe extern "C" fn(*mut c_void, c_int) -> c_void>> =
[INFO] [stdout]    |                                                                                ----^^^^^^
[INFO] [stdout]    |                                                                                |
[INFO] [stdout]    |                                                                                help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout]    = note: `#[warn(c_void_returns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:28:67
[INFO] [stdout]    |
[INFO] [stdout] 28 |   static ref DIFF_EXEC: Mutex<Option<unsafe extern "C" fn(u64) -> c_void>> =
[INFO] [stdout]    |                                                               ----^^^^^^
[INFO] [stdout]    |                                                               |
[INFO] [stdout]    |                                                               help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:37:80
[INFO] [stdout]    |
[INFO] [stdout] 37 |       let ref_difftest_init: libloading::Symbol<unsafe extern "C" fn(c_int) -> c_void> =
[INFO] [stdout]    |                                                                            ----^^^^^^
[INFO] [stdout]    |                                                                            |
[INFO] [stdout]    |                                                                            help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:41:65
[INFO] [stdout]    |
[INFO] [stdout] 41 |         unsafe extern "C" fn(u32, *mut c_void, usize, c_int) -> c_void,
[INFO] [stdout]    |                                                             ----^^^^^^
[INFO] [stdout]    |                                                             |
[INFO] [stdout]    |                                                             help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:44:91
[INFO] [stdout]    |
[INFO] [stdout] 44 |       let difftest_regcpy: libloading::Symbol<unsafe extern "C" fn(*mut c_void, c_int) -> c_void> =
[INFO] [stdout]    |                                                                                       ----^^^^^^
[INFO] [stdout]    |                                                                                       |
[INFO] [stdout]    |                                                                                       help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: declarations returning `c_void` are not compatible with C functions returning `void`
[INFO] [stdout]   --> src/cpu/difftest/dut.rs:48:74
[INFO] [stdout]    |
[INFO] [stdout] 48 |       let difftest_exec: libloading::Symbol<unsafe extern "C" fn(u64) -> c_void> =
[INFO] [stdout]    |                                                                      ----^^^^^^
[INFO] [stdout]    |                                                                      |
[INFO] [stdout]    |                                                                      help: remove the return type to implicitly return `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout]    = note: `c_void` is only used through raw pointers for compatibility with `void` pointers
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `c_void` should not be used as a return type
[INFO] [stdout]    --> src/cpu/difftest/dut.rs:131:63
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn ref_difftest_regcpy(dut: *mut c_void, direction: c_int) -> c_void {
[INFO] [stdout]     |                                                           ----^^^^^^
[INFO] [stdout]     |                                                           |
[INFO] [stdout]     |                                                           help: remove the return type to implicitly return `()`
[INFO] [stdout]     |
[INFO] [stdout]     = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `c_void` should not be used as a return type
[INFO] [stdout]    --> src/cpu/difftest/dut.rs:137:33
[INFO] [stdout]     |
[INFO] [stdout] 137 | fn ref_difftest_exec(n: u64) -> c_void {
[INFO] [stdout]     |                             ----^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove the return type to implicitly return `()`
[INFO] [stdout]     |
[INFO] [stdout]     = help: returning `()` in Rust is equivalent to returning `void` in C
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:29:37
[INFO] [stdout]    |
[INFO] [stdout] 29 |     log!("host time spent = {} us", TIMER.as_micros());
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:30:43
[INFO] [stdout]    |
[INFO] [stdout] 30 |     log!("total guest instructions = {}", INST_CNT);
[INFO] [stdout]    |                                           ^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 |     if TIMER.as_micros() > 0 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:32:71
[INFO] [stdout]    |
[INFO] [stdout] 32 |       log!("simulation frequency = {} inst/s", INST_CNT * 1_000_000 / TIMER.as_micros());
[INFO] [stdout]    |                                                                       ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:81:78
[INFO] [stdout]    |
[INFO] [stdout] 81 |           log!("remuir: \u{001b}[32mHIT GOOD TRAP\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:83:77
[INFO] [stdout]    |
[INFO] [stdout] 83 |           log!("remuir: \u{001b}[31mHIT BAD TRAP\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                             ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/exec.rs:88:68
[INFO] [stdout]    |
[INFO] [stdout] 88 |         log!("remuir: \u{001b}[31mABORT\u{001b}[0m at pc = {:#x}", EMUSTATE.halt_pc);
[INFO] [stdout]    |                                                                    ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/engine/init.rs:17:49
[INFO] [stdout]    |
[INFO] [stdout] 17 |       println!("Exit with specified code [{}]", EMUSTATE.halt_ret);
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = help: use a type that relies on "interior mutability" instead; to read more on this, visit <https://doc.rust-lang.org/reference/interior-mutability.html>
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.91s
[INFO] running `Command { std: "docker" "inspect" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc", kill_on_drop: false }`
[INFO] [stdout] 82a93bdef0d6cf1f8bcc62b1b74a0b27c50e38eb60eb808a4fb96bf863430ddc
