[INFO] cloning repository https://github.com/endaytrer/mips-emu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/endaytrer/mips-emu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0487ba42127b50fc32ac313cd9d37ea80ffea7bc [INFO] building endaytrer/mips-emu against master#11663cd3bfefef7d34e8f0892c250bf698049392+rustflags=-Dtail-expr-drop-order for pr-134523 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/endaytrer/mips-emu on toolchain 11663cd3bfefef7d34e8f0892c250bf698049392 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/endaytrer/mips-emu [INFO] finished tweaking git repo https://github.com/endaytrer/mips-emu [INFO] tweaked toml for git repo https://github.com/endaytrer/mips-emu written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/endaytrer/mips-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" "+11663cd3bfefef7d34e8f0892c250bf698049392" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded elf v0.7.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b1b986c29b6687ef87cb4f034cbf958fbb156a0d58630aa7b8cb90fb5e854d80 [INFO] running `Command { std: "docker" "start" "-a" "b1b986c29b6687ef87cb4f034cbf958fbb156a0d58630aa7b8cb90fb5e854d80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b1b986c29b6687ef87cb4f034cbf958fbb156a0d58630aa7b8cb90fb5e854d80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b1b986c29b6687ef87cb4f034cbf958fbb156a0d58630aa7b8cb90fb5e854d80", kill_on_drop: false }` [INFO] [stdout] b1b986c29b6687ef87cb4f034cbf958fbb156a0d58630aa7b8cb90fb5e854d80 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8325eb48d641083f6f078677577477b086bf2f02482fa4ab8b6aef6f9a5c1078 [INFO] running `Command { std: "docker" "start" "-a" "8325eb48d641083f6f078677577477b086bf2f02482fa4ab8b6aef6f9a5c1078", kill_on_drop: false }` [INFO] [stderr] Compiling elf v0.7.2 [INFO] [stderr] Compiling mips-emu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Arc`, `Mutex`, and `thread` [INFO] [stdout] --> src/main.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{thread, sync::{Arc, Mutex}}; [INFO] [stdout] | ^^^^^^ ^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UART_BASE`, `UART_END`, `VIRTIO_BASE`, and `VIRTIO_END` [INFO] [stdout] --> src/main.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::bus::{UART_BASE, UART_END, VIRTIO_BASE, VIRTIO_END}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Instruction` [INFO] [stdout] --> src/main.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::cpu::{Cpu, Instruction}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/cpu.rs:499:13 [INFO] [stdout] | [INFO] [stdout] 499 | for i in 0..cycles { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PGSIZE` is never used [INFO] [stdout] --> src/cpu.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const PGSIZE: u32 = 0x1000; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ZERO` is never used [INFO] [stdout] --> src/cpu.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const ZERO: u8 = 0; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AT` is never used [INFO] [stdout] --> src/cpu.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const AT: u8 = 1; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `V0` is never used [INFO] [stdout] --> src/cpu.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const V0: u8 = 2; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `V1` is never used [INFO] [stdout] --> src/cpu.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const V1: u8 = 3; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A0` is never used [INFO] [stdout] --> src/cpu.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const A0: u8 = 4; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A1` is never used [INFO] [stdout] --> src/cpu.rs:23:11 [INFO] [stdout] | [INFO] [stdout] 23 | pub const A1: u8 = 5; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A2` is never used [INFO] [stdout] --> src/cpu.rs:24:11 [INFO] [stdout] | [INFO] [stdout] 24 | pub const A2: u8 = 6; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A3` is never used [INFO] [stdout] --> src/cpu.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | pub const A3: u8 = 7; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T0` is never used [INFO] [stdout] --> src/cpu.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const T0: u8 = 8; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T1` is never used [INFO] [stdout] --> src/cpu.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | pub const T1: u8 = 9; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T2` is never used [INFO] [stdout] --> src/cpu.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const T2: u8 = 10; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T3` is never used [INFO] [stdout] --> src/cpu.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const T3: u8 = 11; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T4` is never used [INFO] [stdout] --> src/cpu.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const T4: u8 = 12; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T5` is never used [INFO] [stdout] --> src/cpu.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const T5: u8 = 13; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T6` is never used [INFO] [stdout] --> src/cpu.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const T6: u8 = 14; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T7` is never used [INFO] [stdout] --> src/cpu.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 33 | pub const T7: u8 = 15; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S0` is never used [INFO] [stdout] --> src/cpu.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const S0: u8 = 16; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S1` is never used [INFO] [stdout] --> src/cpu.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | pub const S1: u8 = 17; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S2` is never used [INFO] [stdout] --> src/cpu.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub const S2: u8 = 18; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S3` is never used [INFO] [stdout] --> src/cpu.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const S3: u8 = 19; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S4` is never used [INFO] [stdout] --> src/cpu.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const S4: u8 = 20; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S5` is never used [INFO] [stdout] --> src/cpu.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const S5: u8 = 21; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S6` is never used [INFO] [stdout] --> src/cpu.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const S6: u8 = 22; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S7` is never used [INFO] [stdout] --> src/cpu.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const S7: u8 = 23; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T8` is never used [INFO] [stdout] --> src/cpu.rs:42:11 [INFO] [stdout] | [INFO] [stdout] 42 | pub const T8: u8 = 24; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T9` is never used [INFO] [stdout] --> src/cpu.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const T9: u8 = 25; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `K0` is never used [INFO] [stdout] --> src/cpu.rs:44:11 [INFO] [stdout] | [INFO] [stdout] 44 | pub const K0: u8 = 26; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `K1` is never used [INFO] [stdout] --> src/cpu.rs:45:11 [INFO] [stdout] | [INFO] [stdout] 45 | pub const K1: u8 = 27; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GP` is never used [INFO] [stdout] --> src/cpu.rs:46:11 [INFO] [stdout] | [INFO] [stdout] 46 | pub const GP: u8 = 28; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SP` is never used [INFO] [stdout] --> src/cpu.rs:47:11 [INFO] [stdout] | [INFO] [stdout] 47 | pub const SP: u8 = 29; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FP` is never used [INFO] [stdout] --> src/cpu.rs:48:11 [INFO] [stdout] | [INFO] [stdout] 48 | pub const FP: u8 = 30; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RA` is never used [INFO] [stdout] --> src/cpu.rs:49:11 [INFO] [stdout] | [INFO] [stdout] 49 | pub const RA: u8 = 31; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `print_status`, `interrupt`, and `run` are never used [INFO] [stdout] --> src/cpu.rs:476:12 [INFO] [stdout] | [INFO] [stdout] 126 | impl Cpu { [INFO] [stdout] | -------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 476 | pub fn print_status(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | pub fn interrupt(cause: Arc>, level: u8) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn run(&mut self, stop_signal: Arc>) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timer` is never read [INFO] [stdout] --> src/coprocessor.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Coprocessor0 { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 17 | pub timer: thread::JoinHandle<()>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_raw_cause` and `load_rom` are never used [INFO] [stdout] --> src/bus.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl Bus { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn get_raw_cause(&self) -> Arc> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn load_rom(&mut self, file: &str) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_binary` is never used [INFO] [stdout] --> src/rom.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl Rom { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn load_binary(&mut self, filename: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_IRQ` is never used [INFO] [stdout] --> src/devices/uart.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const UART_IRQ: u32 = 10; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `interrupting` is never read [INFO] [stdout] --> src/devices/uart.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct Uart { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 56 | uart: Arc<(Mutex<[u8; UART_SIZE as usize]>, Condvar)>, [INFO] [stdout] 57 | interrupting: Arc, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_interrupting` is never used [INFO] [stdout] --> src/devices/uart.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl Uart { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn is_interrupting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTIO_IRQ` is never used [INFO] [stdout] --> src/devices/virtio.rs:15:11 [INFO] [stdout] | [INFO] [stdout] 15 | pub const VIRTIO_IRQ: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRING_DESC_SIZE` is never used [INFO] [stdout] --> src/devices/virtio.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const VRING_DESC_SIZE: u32 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SECTOR_SIZE` is never used [INFO] [stdout] --> src/devices/virtio.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const SECTOR_SIZE: u32 = 512; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTQ_DESC_F_NEXT` is never used [INFO] [stdout] --> src/devices/virtio.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const VIRTQ_DESC_F_NEXT: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTQ_DESC_F_WRITE` is never used [INFO] [stdout] --> src/devices/virtio.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const VIRTQ_DESC_F_WRITE: u32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `desc_addr`, `avail_addr`, and `used_addr` are never read [INFO] [stdout] --> src/devices/virtio.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 154 | struct VirtqueueAddr { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 155 | /// The address that starts actual descriptors (16 bytes each). [INFO] [stdout] 156 | desc_addr: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 157 | /// The address that starts a ring of available descriptors. [INFO] [stdout] 158 | avail_addr: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 159 | /// The address that starts a ring of used descriptors. [INFO] [stdout] 160 | used_addr: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VirtqueueAddr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VirtqDesc` is never constructed [INFO] [stdout] --> src/devices/virtio.rs:212:8 [INFO] [stdout] | [INFO] [stdout] 212 | struct VirtqDesc { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/devices/virtio.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 223 | impl VirtqDesc { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 226 | fn new(cpu: &mut Cpu, addr: u32) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VirtqAvail` is never constructed [INFO] [stdout] --> src/devices/virtio.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | struct VirtqAvail { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/devices/virtio.rs:258:8 [INFO] [stdout] | [INFO] [stdout] 257 | impl VirtqAvail { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 258 | fn new(cpu: &mut Cpu, addr: u32) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `disk` is never read [INFO] [stdout] --> src/devices/virtio.rs:282:5 [INFO] [stdout] | [INFO] [stdout] 268 | pub struct Virtio { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 282 | disk: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `virtqueue`, `is_interrupting`, and `initialize` are never used [INFO] [stdout] --> src/devices/virtio.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 286 | impl Virtio { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 340 | fn virtqueue(&self) -> VirtqueueAddr { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn is_interrupting(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | pub fn initialize(&mut self, binary: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Interrupt`, `DataBusError`, `Break`, `Reserved`, and `Overflow` are never constructed [INFO] [stdout] --> src/exception.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Exception { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 3 | Interrupt = 0, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 8 | DataBusError = 7, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 9 | Syscall = 8, [INFO] [stdout] 10 | Break = 9, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 11 | Reserved = 10, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 12 | Overflow = 12 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Exception` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_byte_from_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn get_byte_from_halfword_big_endian(src: u16, offset: u8) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_byte_from_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:16:4 [INFO] [stdout] | [INFO] [stdout] 16 | fn get_byte_from_word_big_endian(src: u32, offset: u8) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_halfword_from_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:19:4 [INFO] [stdout] | [INFO] [stdout] 19 | fn get_halfword_from_word_big_endian(src: u32, offset: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_halfword_small_endian` is never used [INFO] [stdout] --> src/utils.rs:24:4 [INFO] [stdout] | [INFO] [stdout] 24 | fn set_byte_of_halfword_small_endian(src: u16, offset: u8, data: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn set_byte_of_halfword_big_endian(src: u16, offset: u8, data: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | fn set_byte_of_word_big_endian(src: u32, offset: u8, data: u8) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_halfword_of_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn set_halfword_of_word_big_endian(src: u32, offset: u8, data: u16) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `concat_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:49:4 [INFO] [stdout] | [INFO] [stdout] 49 | fn concat_halfword_big_endian(src: [u8; 2]) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `concat_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:52:4 [INFO] [stdout] | [INFO] [stdout] 52 | fn concat_word_big_endian(src: [u8; 4]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_halfword` is never used [INFO] [stdout] --> src/utils.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16 = set_byte_of_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl Instruction { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] 66 | // R types [INFO] [stdout] 67 | pub fn sll(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn srl(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn sra(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn jr(rs: u8) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn syscall() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn mfhi(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn mthi(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn mflo(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn mtlo(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn mult(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn multu(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn div(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn divu(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn add(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn addu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn sub(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn subu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn and(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn or(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn xor(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn nor(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn slt(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn sltu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn mfc0(rt: u8, rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn mtc0(rt: u8, rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn eret() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn beq(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn bne(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn addi(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn addiu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn slti(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sltiu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn andi(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn ori(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn xori(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn lui(rt: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn lw(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn lbu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn lhu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub fn sb(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn sh(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn sw(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn ll(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 200 | pub fn sc(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 208 | pub fn jal(imm: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `USER` is never used [INFO] [stdout] --> src/memory.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub const USER: u32 = 0x8; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEAP` is never used [INFO] [stdout] --> src/memory.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const HEAP: u32 = 0x10008000; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `dirty` is never used [INFO] [stdout] --> src/memory.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl PTE { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn dirty(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_byte_from_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8 = get_byte_from_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_BYTE_FROM_HALFWORD` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_byte_from_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8 = get_byte_from_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_BYTE_FROM_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_halfword_from_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16 = get_halfword_from_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_HALFWORD_FROM_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16 = set_byte_of_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_HALFWORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32 = set_byte_of_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_halfword_of_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32 = set_halfword_of_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_HALFWORD_OF_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `concat_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub const concat_halfword: fn(src: [u8; 2]) -> u16 = concat_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CONCAT_HALFWORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `concat_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:63:11 [INFO] [stdout] | [INFO] [stdout] 63 | pub const concat_word: fn(src: [u8; 4]) -> u32 = concat_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper case: `CONCAT_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.52s [INFO] running `Command { std: "docker" "inspect" "8325eb48d641083f6f078677577477b086bf2f02482fa4ab8b6aef6f9a5c1078", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8325eb48d641083f6f078677577477b086bf2f02482fa4ab8b6aef6f9a5c1078", kill_on_drop: false }` [INFO] [stdout] 8325eb48d641083f6f078677577477b086bf2f02482fa4ab8b6aef6f9a5c1078 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 716f6f1e43a32e839a5d55c4385221f7f9361d60104ac0830b1117df1ce5700c [INFO] running `Command { std: "docker" "start" "-a" "716f6f1e43a32e839a5d55c4385221f7f9361d60104ac0830b1117df1ce5700c", kill_on_drop: false }` [INFO] [stderr] Compiling mips-emu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Arc`, `Mutex`, and `thread` [INFO] [stdout] --> src/main.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{thread, sync::{Arc, Mutex}}; [INFO] [stdout] | ^^^^^^ ^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UART_BASE`, `UART_END`, `VIRTIO_BASE`, and `VIRTIO_END` [INFO] [stdout] --> src/main.rs:2:18 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::bus::{UART_BASE, UART_END, VIRTIO_BASE, VIRTIO_END}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Instruction` [INFO] [stdout] --> src/main.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::cpu::{Cpu, Instruction}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Cpu` and `Instruction` [INFO] [stdout] --> src/test/instruction_test.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::cpu::{Cpu, Instruction}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/cpu.rs:499:13 [INFO] [stdout] | [INFO] [stdout] 499 | for i in 0..cycles { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PGSIZE` is never used [INFO] [stdout] --> src/cpu.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const PGSIZE: u32 = 0x1000; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ZERO` is never used [INFO] [stdout] --> src/cpu.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const ZERO: u8 = 0; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AT` is never used [INFO] [stdout] --> src/cpu.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const AT: u8 = 1; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `V0` is never used [INFO] [stdout] --> src/cpu.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const V0: u8 = 2; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `V1` is never used [INFO] [stdout] --> src/cpu.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const V1: u8 = 3; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A0` is never used [INFO] [stdout] --> src/cpu.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const A0: u8 = 4; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A1` is never used [INFO] [stdout] --> src/cpu.rs:23:11 [INFO] [stdout] | [INFO] [stdout] 23 | pub const A1: u8 = 5; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A2` is never used [INFO] [stdout] --> src/cpu.rs:24:11 [INFO] [stdout] | [INFO] [stdout] 24 | pub const A2: u8 = 6; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `A3` is never used [INFO] [stdout] --> src/cpu.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | pub const A3: u8 = 7; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T0` is never used [INFO] [stdout] --> src/cpu.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const T0: u8 = 8; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T1` is never used [INFO] [stdout] --> src/cpu.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | pub const T1: u8 = 9; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T2` is never used [INFO] [stdout] --> src/cpu.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const T2: u8 = 10; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T3` is never used [INFO] [stdout] --> src/cpu.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const T3: u8 = 11; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T4` is never used [INFO] [stdout] --> src/cpu.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const T4: u8 = 12; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T5` is never used [INFO] [stdout] --> src/cpu.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const T5: u8 = 13; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T6` is never used [INFO] [stdout] --> src/cpu.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const T6: u8 = 14; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T7` is never used [INFO] [stdout] --> src/cpu.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 33 | pub const T7: u8 = 15; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S0` is never used [INFO] [stdout] --> src/cpu.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const S0: u8 = 16; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S1` is never used [INFO] [stdout] --> src/cpu.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | pub const S1: u8 = 17; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S2` is never used [INFO] [stdout] --> src/cpu.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub const S2: u8 = 18; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S3` is never used [INFO] [stdout] --> src/cpu.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const S3: u8 = 19; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S4` is never used [INFO] [stdout] --> src/cpu.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const S4: u8 = 20; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S5` is never used [INFO] [stdout] --> src/cpu.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const S5: u8 = 21; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S6` is never used [INFO] [stdout] --> src/cpu.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const S6: u8 = 22; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `S7` is never used [INFO] [stdout] --> src/cpu.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const S7: u8 = 23; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T8` is never used [INFO] [stdout] --> src/cpu.rs:42:11 [INFO] [stdout] | [INFO] [stdout] 42 | pub const T8: u8 = 24; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `T9` is never used [INFO] [stdout] --> src/cpu.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const T9: u8 = 25; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `K0` is never used [INFO] [stdout] --> src/cpu.rs:44:11 [INFO] [stdout] | [INFO] [stdout] 44 | pub const K0: u8 = 26; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `K1` is never used [INFO] [stdout] --> src/cpu.rs:45:11 [INFO] [stdout] | [INFO] [stdout] 45 | pub const K1: u8 = 27; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GP` is never used [INFO] [stdout] --> src/cpu.rs:46:11 [INFO] [stdout] | [INFO] [stdout] 46 | pub const GP: u8 = 28; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SP` is never used [INFO] [stdout] --> src/cpu.rs:47:11 [INFO] [stdout] | [INFO] [stdout] 47 | pub const SP: u8 = 29; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FP` is never used [INFO] [stdout] --> src/cpu.rs:48:11 [INFO] [stdout] | [INFO] [stdout] 48 | pub const FP: u8 = 30; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RA` is never used [INFO] [stdout] --> src/cpu.rs:49:11 [INFO] [stdout] | [INFO] [stdout] 49 | pub const RA: u8 = 31; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `print_status`, `interrupt`, and `run` are never used [INFO] [stdout] --> src/cpu.rs:476:12 [INFO] [stdout] | [INFO] [stdout] 126 | impl Cpu { [INFO] [stdout] | -------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 476 | pub fn print_status(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | pub fn interrupt(cause: Arc>, level: u8) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 493 | pub fn run(&mut self, stop_signal: Arc>) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `timer` is never read [INFO] [stdout] --> src/coprocessor.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Coprocessor0 { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 17 | pub timer: thread::JoinHandle<()>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_raw_cause` and `load_rom` are never used [INFO] [stdout] --> src/bus.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl Bus { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn get_raw_cause(&self) -> Arc> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn load_rom(&mut self, file: &str) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_binary` is never used [INFO] [stdout] --> src/rom.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl Rom { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn load_binary(&mut self, filename: &str) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_IRQ` is never used [INFO] [stdout] --> src/devices/uart.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const UART_IRQ: u32 = 10; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `interrupting` is never read [INFO] [stdout] --> src/devices/uart.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct Uart { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 56 | uart: Arc<(Mutex<[u8; UART_SIZE as usize]>, Condvar)>, [INFO] [stdout] 57 | interrupting: Arc, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_interrupting` is never used [INFO] [stdout] --> src/devices/uart.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 60 | impl Uart { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn is_interrupting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTIO_IRQ` is never used [INFO] [stdout] --> src/devices/virtio.rs:15:11 [INFO] [stdout] | [INFO] [stdout] 15 | pub const VIRTIO_IRQ: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRING_DESC_SIZE` is never used [INFO] [stdout] --> src/devices/virtio.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const VRING_DESC_SIZE: u32 = 16; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SECTOR_SIZE` is never used [INFO] [stdout] --> src/devices/virtio.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const SECTOR_SIZE: u32 = 512; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTQ_DESC_F_NEXT` is never used [INFO] [stdout] --> src/devices/virtio.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const VIRTQ_DESC_F_NEXT: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIRTQ_DESC_F_WRITE` is never used [INFO] [stdout] --> src/devices/virtio.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const VIRTQ_DESC_F_WRITE: u32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `desc_addr`, `avail_addr`, and `used_addr` are never read [INFO] [stdout] --> src/devices/virtio.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 154 | struct VirtqueueAddr { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 155 | /// The address that starts actual descriptors (16 bytes each). [INFO] [stdout] 156 | desc_addr: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 157 | /// The address that starts a ring of available descriptors. [INFO] [stdout] 158 | avail_addr: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 159 | /// The address that starts a ring of used descriptors. [INFO] [stdout] 160 | used_addr: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VirtqueueAddr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VirtqDesc` is never constructed [INFO] [stdout] --> src/devices/virtio.rs:212:8 [INFO] [stdout] | [INFO] [stdout] 212 | struct VirtqDesc { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/devices/virtio.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 223 | impl VirtqDesc { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 226 | fn new(cpu: &mut Cpu, addr: u32) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VirtqAvail` is never constructed [INFO] [stdout] --> src/devices/virtio.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | struct VirtqAvail { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/devices/virtio.rs:258:8 [INFO] [stdout] | [INFO] [stdout] 257 | impl VirtqAvail { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 258 | fn new(cpu: &mut Cpu, addr: u32) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `disk` is never read [INFO] [stdout] --> src/devices/virtio.rs:282:5 [INFO] [stdout] | [INFO] [stdout] 268 | pub struct Virtio { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 282 | disk: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `virtqueue`, `is_interrupting`, and `initialize` are never used [INFO] [stdout] --> src/devices/virtio.rs:340:8 [INFO] [stdout] | [INFO] [stdout] 286 | impl Virtio { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 340 | fn virtqueue(&self) -> VirtqueueAddr { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn is_interrupting(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 366 | pub fn initialize(&mut self, binary: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Interrupt`, `DataBusError`, `Break`, `Reserved`, and `Overflow` are never constructed [INFO] [stdout] --> src/exception.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum Exception { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] 3 | Interrupt = 0, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 8 | DataBusError = 7, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 9 | Syscall = 8, [INFO] [stdout] 10 | Break = 9, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 11 | Reserved = 10, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 12 | Overflow = 12 [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Exception` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_byte_from_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:13:4 [INFO] [stdout] | [INFO] [stdout] 13 | fn get_byte_from_halfword_big_endian(src: u16, offset: u8) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_byte_from_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:16:4 [INFO] [stdout] | [INFO] [stdout] 16 | fn get_byte_from_word_big_endian(src: u32, offset: u8) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_halfword_from_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:19:4 [INFO] [stdout] | [INFO] [stdout] 19 | fn get_halfword_from_word_big_endian(src: u32, offset: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_halfword_small_endian` is never used [INFO] [stdout] --> src/utils.rs:24:4 [INFO] [stdout] | [INFO] [stdout] 24 | fn set_byte_of_halfword_small_endian(src: u16, offset: u8, data: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn set_byte_of_halfword_big_endian(src: u16, offset: u8, data: u8) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_byte_of_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:37:4 [INFO] [stdout] | [INFO] [stdout] 37 | fn set_byte_of_word_big_endian(src: u32, offset: u8, data: u8) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_halfword_of_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn set_halfword_of_word_big_endian(src: u32, offset: u8, data: u16) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `concat_halfword_big_endian` is never used [INFO] [stdout] --> src/utils.rs:49:4 [INFO] [stdout] | [INFO] [stdout] 49 | fn concat_halfword_big_endian(src: [u8; 2]) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `concat_word_big_endian` is never used [INFO] [stdout] --> src/utils.rs:52:4 [INFO] [stdout] | [INFO] [stdout] 52 | fn concat_word_big_endian(src: [u8; 4]) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_halfword` is never used [INFO] [stdout] --> src/utils.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16 = set_byte_of_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl Instruction { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] 66 | // R types [INFO] [stdout] 67 | pub fn sll(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn srl(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn sra(rd: u8, rt: u8, shamt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn jr(rs: u8) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn syscall() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn mfhi(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn mthi(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn mflo(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn mtlo(rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn mult(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn multu(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn div(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn divu(rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn add(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn addu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn sub(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn subu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn and(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn or(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn xor(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn nor(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn slt(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn sltu(rd: u8, rs: u8, rt: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn mfc0(rt: u8, rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn mtc0(rt: u8, rd: u8) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn eret() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn beq(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub fn bne(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn addi(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn addiu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn slti(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sltiu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn andi(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 170 | pub fn ori(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn xori(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn lui(rt: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn lw(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn lbu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn lhu(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 188 | pub fn sb(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn sh(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn sw(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn ll(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 200 | pub fn sc(rt: u8, rs: u8, imm: u16) -> Self { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 208 | pub fn jal(imm: u32) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `USER` is never used [INFO] [stdout] --> src/memory.rs:11:11 [INFO] [stdout] | [INFO] [stdout] 11 | pub const USER: u32 = 0x8; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEAP` is never used [INFO] [stdout] --> src/memory.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const HEAP: u32 = 0x10008000; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `dirty` is never used [INFO] [stdout] --> src/memory.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl PTE { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn dirty(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_byte_from_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8 = get_byte_from_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_BYTE_FROM_HALFWORD` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_byte_from_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8 = get_byte_from_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_BYTE_FROM_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `get_halfword_from_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16 = get_halfword_from_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `GET_HALFWORD_FROM_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16 = set_byte_of_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_HALFWORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_byte_of_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32 = set_byte_of_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `set_halfword_of_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32 = set_halfword_of_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_HALFWORD_OF_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `concat_halfword` should have an upper case name [INFO] [stdout] --> src/utils.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub const concat_halfword: fn(src: [u8; 2]) -> u16 = concat_halfword_small_endian; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `CONCAT_HALFWORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `concat_word` should have an upper case name [INFO] [stdout] --> src/utils.rs:63:11 [INFO] [stdout] | [INFO] [stdout] 63 | pub const concat_word: fn(src: [u8; 4]) -> u32 = concat_word_small_endian; [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper case: `CONCAT_WORD` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.28s [INFO] running `Command { std: "docker" "inspect" "716f6f1e43a32e839a5d55c4385221f7f9361d60104ac0830b1117df1ce5700c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "716f6f1e43a32e839a5d55c4385221f7f9361d60104ac0830b1117df1ce5700c", kill_on_drop: false }` [INFO] [stdout] 716f6f1e43a32e839a5d55c4385221f7f9361d60104ac0830b1117df1ce5700c