[INFO] cloning repository https://github.com/TOSTcRa/grafted [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TOSTcRa/grafted" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTOSTcRa%2Fgrafted", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTOSTcRa%2Fgrafted'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ae333356e43ca7f97738594d758bf28ca4bf9327 [INFO] testing TOSTcRa/grafted against 1.98.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTOSTcRa%2Fgrafted" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc2/source/.cargo/config.toml [INFO] started tweaking git repo https://github.com/TOSTcRa/grafted [INFO] finished tweaking git repo https://github.com/TOSTcRa/grafted [INFO] tweaked toml for git repo https://github.com/TOSTcRa/grafted written to /workspace/builds/worker-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/TOSTcRa/grafted on toolchain 1.98.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/TOSTcRa/grafted already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de [INFO] running `Command { std: "docker" "start" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", 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" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling plain v0.2.3 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling jiff v0.2.23 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling memmap2 v0.9.10 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling scroll_derive v0.13.1 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling scroll v0.13.0 [INFO] [stderr] Compiling goblin v0.10.5 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling grafted-objc v0.1.0 (/opt/rustwide/workdir/crates/grafted-objc) [INFO] [stderr] Compiling grafted-kernel v0.1.0 (/opt/rustwide/workdir/crates/grafted-kernel) [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling env_filter v1.0.1 [INFO] [stderr] Compiling env_logger v0.11.10 [INFO] [stderr] Compiling grafted-frameworks v0.1.0 (/opt/rustwide/workdir/crates/grafted-frameworks) [INFO] [stderr] Compiling grafted-loader v0.1.0 (/opt/rustwide/workdir/crates/grafted-loader) [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:196:1 [INFO] [stdout] | [INFO] [stdout] 196 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: remove this attribute [INFO] [stdout] | [INFO] [stdout] note: attribute also specified here [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:194:1 [INFO] [stdout] | [INFO] [stdout] 194 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `app_del` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:642:31 [INFO] [stdout] | [INFO] [stdout] 642 | let mut app_del = std::ptr::null_mut(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 646 | app_del = unsafe { grafted_objc::objc_msgSend(cls as *mut _, alloc_sel) as *mut u8 }; [INFO] [stdout] | ------------------------------------------------------------------------------------ `app_del` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:835:5 [INFO] [stdout] | [INFO] [stdout] 835 | unsafe { std::ptr::addr_of!(STUB_METADATA) as *const u8 } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:892:20 [INFO] [stdout] | [INFO] [stdout] 892 | let f: F = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:1 [INFO] [stdout] | [INFO] [stdout] 878 | / unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] 879 | | request: usize, [INFO] [stdout] 880 | | witness_table: *const u8, [INFO] [stdout] 881 | | conforming_type: *const u8, [INFO] [stdout] 882 | | req_base: *const u8, [INFO] [stdout] 883 | | assoc_type: *const u8, [INFO] [stdout] 884 | | ) -> MetadataResponse { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:893:16 [INFO] [stdout] | [INFO] [stdout] 893 | return f(request, witness_table, conforming_type, req_base, assoc_type); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::safe_return_stub_object` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:900:5 [INFO] [stdout] | [INFO] [stdout] 900 | safe_return_stub_object(std::ptr::null_mut(), std::ptr::null_mut()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:899:1 [INFO] [stdout] | [INFO] [stdout] 899 | unsafe extern "C" fn witness_noop(_obj: *mut u8, _wt: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:984:27 [INFO] [stdout] | [INFO] [stdout] 984 | let f: TwoArgFn = std::mem::transmute(fn_ptr as *const ()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:1 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::swift_get_witness_table_stub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1008:5 [INFO] [stdout] | [INFO] [stdout] 1008 | swift_get_witness_table_stub(std::ptr::null_mut(), std::ptr::null_mut(), std::ptr::null_mut()) as *const u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:1 [INFO] [stdout] | [INFO] [stdout] 1001 | / unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] 1002 | | _witness_table: *const u8, [INFO] [stdout] 1003 | | _conforming_type: *const u8, [INFO] [stdout] 1004 | | _assoc_type: *const u8, [INFO] [stdout] 1005 | | _req_base: *const u8, [INFO] [stdout] 1006 | | _assoc_conformance: *const u8, [INFO] [stdout] 1007 | | ) -> *const u8 { [INFO] [stdout] | |______________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1038:20 [INFO] [stdout] | [INFO] [stdout] 1038 | let sym_addr = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:1 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::read_volatile` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1055:26 [INFO] [stdout] | [INFO] [stdout] 1055 | let first_byte = std::ptr::read_volatile(slow_addr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::patch_function_at` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1058:13 [INFO] [stdout] | [INFO] [stdout] 1058 | patch_function_at(slow_addr, replacement); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1068:8 [INFO] [stdout] | [INFO] [stdout] 1068 | if libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1064:1 [INFO] [stdout] | [INFO] [stdout] 1064 | unsafe fn patch_function_at(target: *mut u8, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1073:5 [INFO] [stdout] | [INFO] [stdout] 1073 | *p = 0x48; [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:5 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:6 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:5 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:31 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:5 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:6 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:5 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:6 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1079:5 [INFO] [stdout] | [INFO] [stdout] 1079 | libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1086:18 [INFO] [stdout] | [INFO] [stdout] 1086 | let target = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:1 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1091:8 [INFO] [stdout] | [INFO] [stdout] 1091 | if libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1097:5 [INFO] [stdout] | [INFO] [stdout] 1097 | *p = 0x48; // REX.W [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:5 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:6 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:5 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:31 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:5 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:6 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:5 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:6 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1104:5 [INFO] [stdout] | [INFO] [stdout] 1104 | libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1163:25 [INFO] [stdout] | [INFO] [stdout] 1163 | let f: RealFn = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:1 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1164:20 [INFO] [stdout] | [INFO] [stdout] 1164 | let resp = f(metadata, request); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:23 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:24 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:32 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:33 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:17 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:18 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1223:13 [INFO] [stdout] | [INFO] [stdout] 1223 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1222:9 [INFO] [stdout] | [INFO] [stdout] 1222 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1308:13 [INFO] [stdout] | [INFO] [stdout] 1308 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1307:9 [INFO] [stdout] | [INFO] [stdout] 1307 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1430:13 [INFO] [stdout] | [INFO] [stdout] 1430 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1429:9 [INFO] [stdout] | [INFO] [stdout] 1429 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1574:9 [INFO] [stdout] | [INFO] [stdout] 1556 | unsafe { [INFO] [stdout] | ------ because it's nested under this `unsafe` block [INFO] [stdout] ... [INFO] [stdout] 1574 | unsafe { grafted_reinstall_sigsegv_handler(); } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `title` and `frame` are never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 14 | struct ManagedWindow { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | title: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 18 | frame: CGRect, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `screen` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 23 | struct DisplayState { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 24 | display: *mut x11::Display, [INFO] [stdout] 25 | screen: i32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_view_tree` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:303:4 [INFO] [stdout] | [INFO] [stdout] 303 | fn render_view_tree() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `swift_once_lifecycle` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:22 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_all_instances` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:11 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_function` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:11 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1792:8 [INFO] [stdout] | [INFO] [stdout] 1792 | static REAL_RETAIN: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1793:8 [INFO] [stdout] | [INFO] [stdout] 1793 | static REAL_RETAIN_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1794:8 [INFO] [stdout] | [INFO] [stdout] 1794 | static REAL_RELEASE: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1795:8 [INFO] [stdout] | [INFO] [stdout] 1795 | static REAL_RELEASE_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_real` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1797:4 [INFO] [stdout] | [INFO] [stdout] 1797 | fn resolve_real(name: &str, cache: &std::sync::atomic::AtomicU64) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BlockDescriptor` is never constructed [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1969:8 [INFO] [stdout] | [INFO] [stdout] 1969 | struct BlockDescriptor { reserved: u64, size: u64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BLOCK_DESCRIPTOR` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1970:8 [INFO] [stdout] | [INFO] [stdout] 1970 | static BLOCK_DESCRIPTOR: BlockDescriptor = BlockDescriptor { reserved: 0, size: 32 }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `grafted_try_call` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:981:32 [INFO] [stdout] | [INFO] [stdout] 981 | unsafe extern "C" { fn grafted_try_call(f: unsafe extern "C" fn(*mut u8, *mut u8), a: *mut u8, b: *mut u8) -> bool; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/foundation/register.rs:125:71 [INFO] [stdout] | [INFO] [stdout] 125 | unsafe extern "C" fn os_version(_self: *mut u8, _sel: *mut u8) -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] = note: `#[warn(improper_ctypes_definitions)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedTypeWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:22 [INFO] [stdout] | [INFO] [stdout] 878 | unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_type_witness` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_conformsToProtocol` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:993:22 [INFO] [stdout] | [INFO] [stdout] 993 | unsafe extern "C" fn safe_conformsToProtocol( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_conforms_to_protocol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedConformanceWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:22 [INFO] [stdout] | [INFO] [stdout] 1001 | unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_conformance_witness` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_checkMetadataState` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:22 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_check_metadata_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_getWitnessTable` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1810:22 [INFO] [stdout] | [INFO] [stdout] 1810 | unsafe extern "C" fn smart_getWitnessTable(a: *mut u8, _b: *mut u8, _c: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_get_witness_table` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:2004:44 [INFO] [stdout] | [INFO] [stdout] 2004 | unsafe extern "C" fn swift_os_version() -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling grafted-dyld v0.1.0 (/opt/rustwide/workdir/crates/grafted-dyld) [INFO] [stdout] warning: variable `strtab_off` is assigned to, but never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | let mut strtab_off = 0u32; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_strtab_off` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `strtab_off` is never read [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:239:61 [INFO] [stdout] | [INFO] [stdout] 239 | symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:829:9 [INFO] [stdout] | [INFO] [stdout] 829 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_cache } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:831:9 [INFO] [stdout] | [INFO] [stdout] 831 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_vtable } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1819:5 [INFO] [stdout] | [INFO] [stdout] 1819 | unsafe { &raw mut BOOTSTRAP_PORT_VAL } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `vwt_noop` is never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:16:22 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe extern "C" fn vwt_noop(_: *mut u8, _: *mut u8, _: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_snprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1015:22 [INFO] [stdout] | [INFO] [stdout] 1015 | unsafe extern "C" fn shim_snprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_sprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1033:22 [INFO] [stdout] | [INFO] [stdout] 1033 | unsafe extern "C" fn shim_sprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:38:40 [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(function_casts_as_integer)]` on by default [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as *const () as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:39:39 [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as u64; // destroy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as *const () as u64; // destroy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:40:40 [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as u64; // initializeWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as *const () as u64; // initializeWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:41:40 [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as u64; // assignWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as *const () as u64; // assignWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:42:40 [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as u64; // initializeWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as *const () as u64; // initializeWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:43:40 [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as u64; // assignWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as *const () as u64; // assignWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:44:40 [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as u64; // getEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as *const () as u64; // getEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:45:46 [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as *const () as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] Compiling grafted-cli v0.1.0 (/opt/rustwide/workdir/crates/grafted-cli) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 06s [INFO] running `Command { std: "docker" "inspect" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:196:1 [INFO] [stdout] | [INFO] [stdout] 196 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: remove this attribute [INFO] [stdout] | [INFO] [stdout] note: attribute also specified here [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:194:1 [INFO] [stdout] | [INFO] [stdout] 194 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `app_del` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:642:31 [INFO] [stdout] | [INFO] [stdout] 642 | let mut app_del = std::ptr::null_mut(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 646 | app_del = unsafe { grafted_objc::objc_msgSend(cls as *mut _, alloc_sel) as *mut u8 }; [INFO] [stdout] | ------------------------------------------------------------------------------------ `app_del` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:835:5 [INFO] [stdout] | [INFO] [stdout] 835 | unsafe { std::ptr::addr_of!(STUB_METADATA) as *const u8 } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:892:20 [INFO] [stdout] | [INFO] [stdout] 892 | let f: F = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:1 [INFO] [stdout] | [INFO] [stdout] 878 | / unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] 879 | | request: usize, [INFO] [stdout] 880 | | witness_table: *const u8, [INFO] [stdout] 881 | | conforming_type: *const u8, [INFO] [stdout] 882 | | req_base: *const u8, [INFO] [stdout] 883 | | assoc_type: *const u8, [INFO] [stdout] 884 | | ) -> MetadataResponse { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:893:16 [INFO] [stdout] | [INFO] [stdout] 893 | return f(request, witness_table, conforming_type, req_base, assoc_type); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::safe_return_stub_object` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:900:5 [INFO] [stdout] | [INFO] [stdout] 900 | safe_return_stub_object(std::ptr::null_mut(), std::ptr::null_mut()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:899:1 [INFO] [stdout] | [INFO] [stdout] 899 | unsafe extern "C" fn witness_noop(_obj: *mut u8, _wt: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:984:27 [INFO] [stdout] | [INFO] [stdout] 984 | let f: TwoArgFn = std::mem::transmute(fn_ptr as *const ()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:1 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::swift_get_witness_table_stub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1008:5 [INFO] [stdout] | [INFO] [stdout] 1008 | swift_get_witness_table_stub(std::ptr::null_mut(), std::ptr::null_mut(), std::ptr::null_mut()) as *const u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:1 [INFO] [stdout] | [INFO] [stdout] 1001 | / unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] 1002 | | _witness_table: *const u8, [INFO] [stdout] 1003 | | _conforming_type: *const u8, [INFO] [stdout] 1004 | | _assoc_type: *const u8, [INFO] [stdout] 1005 | | _req_base: *const u8, [INFO] [stdout] 1006 | | _assoc_conformance: *const u8, [INFO] [stdout] 1007 | | ) -> *const u8 { [INFO] [stdout] | |______________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1038:20 [INFO] [stdout] | [INFO] [stdout] 1038 | let sym_addr = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:1 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::read_volatile` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1055:26 [INFO] [stdout] | [INFO] [stdout] 1055 | let first_byte = std::ptr::read_volatile(slow_addr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::patch_function_at` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1058:13 [INFO] [stdout] | [INFO] [stdout] 1058 | patch_function_at(slow_addr, replacement); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1068:8 [INFO] [stdout] | [INFO] [stdout] 1068 | if libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1064:1 [INFO] [stdout] | [INFO] [stdout] 1064 | unsafe fn patch_function_at(target: *mut u8, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1073:5 [INFO] [stdout] | [INFO] [stdout] 1073 | *p = 0x48; [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:5 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:6 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:5 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:31 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:5 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:6 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:5 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:6 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1079:5 [INFO] [stdout] | [INFO] [stdout] 1079 | libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1086:18 [INFO] [stdout] | [INFO] [stdout] 1086 | let target = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:1 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1091:8 [INFO] [stdout] | [INFO] [stdout] 1091 | if libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1097:5 [INFO] [stdout] | [INFO] [stdout] 1097 | *p = 0x48; // REX.W [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:5 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:6 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:5 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:31 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:5 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:6 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:5 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:6 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1104:5 [INFO] [stdout] | [INFO] [stdout] 1104 | libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1163:25 [INFO] [stdout] | [INFO] [stdout] 1163 | let f: RealFn = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:1 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1164:20 [INFO] [stdout] | [INFO] [stdout] 1164 | let resp = f(metadata, request); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:23 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:24 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:32 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:33 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:17 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:18 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1223:13 [INFO] [stdout] | [INFO] [stdout] 1223 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1222:9 [INFO] [stdout] | [INFO] [stdout] 1222 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1308:13 [INFO] [stdout] | [INFO] [stdout] 1308 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1307:9 [INFO] [stdout] | [INFO] [stdout] 1307 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1430:13 [INFO] [stdout] | [INFO] [stdout] 1430 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1429:9 [INFO] [stdout] | [INFO] [stdout] 1429 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1574:9 [INFO] [stdout] | [INFO] [stdout] 1556 | unsafe { [INFO] [stdout] | ------ because it's nested under this `unsafe` block [INFO] [stdout] ... [INFO] [stdout] 1574 | unsafe { grafted_reinstall_sigsegv_handler(); } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `title` and `frame` are never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 14 | struct ManagedWindow { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | title: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 18 | frame: CGRect, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `screen` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 23 | struct DisplayState { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 24 | display: *mut x11::Display, [INFO] [stdout] 25 | screen: i32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_view_tree` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:303:4 [INFO] [stdout] | [INFO] [stdout] 303 | fn render_view_tree() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `swift_once_lifecycle` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:22 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_all_instances` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:11 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_function` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:11 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1792:8 [INFO] [stdout] | [INFO] [stdout] 1792 | static REAL_RETAIN: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1793:8 [INFO] [stdout] | [INFO] [stdout] 1793 | static REAL_RETAIN_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1794:8 [INFO] [stdout] | [INFO] [stdout] 1794 | static REAL_RELEASE: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1795:8 [INFO] [stdout] | [INFO] [stdout] 1795 | static REAL_RELEASE_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_real` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1797:4 [INFO] [stdout] | [INFO] [stdout] 1797 | fn resolve_real(name: &str, cache: &std::sync::atomic::AtomicU64) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BlockDescriptor` is never constructed [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1969:8 [INFO] [stdout] | [INFO] [stdout] 1969 | struct BlockDescriptor { reserved: u64, size: u64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BLOCK_DESCRIPTOR` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1970:8 [INFO] [stdout] | [INFO] [stdout] 1970 | static BLOCK_DESCRIPTOR: BlockDescriptor = BlockDescriptor { reserved: 0, size: 32 }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `grafted_try_call` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:981:32 [INFO] [stdout] | [INFO] [stdout] 981 | unsafe extern "C" { fn grafted_try_call(f: unsafe extern "C" fn(*mut u8, *mut u8), a: *mut u8, b: *mut u8) -> bool; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/foundation/register.rs:125:71 [INFO] [stdout] | [INFO] [stdout] 125 | unsafe extern "C" fn os_version(_self: *mut u8, _sel: *mut u8) -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] = note: `#[warn(improper_ctypes_definitions)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedTypeWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:22 [INFO] [stdout] | [INFO] [stdout] 878 | unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_type_witness` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_conformsToProtocol` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:993:22 [INFO] [stdout] | [INFO] [stdout] 993 | unsafe extern "C" fn safe_conformsToProtocol( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_conforms_to_protocol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedConformanceWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:22 [INFO] [stdout] | [INFO] [stdout] 1001 | unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_conformance_witness` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_checkMetadataState` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:22 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_check_metadata_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_getWitnessTable` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1810:22 [INFO] [stdout] | [INFO] [stdout] 1810 | unsafe extern "C" fn smart_getWitnessTable(a: *mut u8, _b: *mut u8, _c: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_get_witness_table` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:2004:44 [INFO] [stdout] | [INFO] [stdout] 2004 | unsafe extern "C" fn swift_os_version() -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] Compiling grafted-frameworks v0.1.0 (/opt/rustwide/workdir/crates/grafted-frameworks) [INFO] [stderr] Compiling grafted-kernel v0.1.0 (/opt/rustwide/workdir/crates/grafted-kernel) [INFO] [stderr] Compiling grafted-objc v0.1.0 (/opt/rustwide/workdir/crates/grafted-objc) [INFO] [stdout] warning: variable `strtab_off` is assigned to, but never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | let mut strtab_off = 0u32; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_strtab_off` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `strtab_off` is never read [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:239:61 [INFO] [stdout] | [INFO] [stdout] 239 | symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:829:9 [INFO] [stdout] | [INFO] [stdout] 829 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_cache } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:831:9 [INFO] [stdout] | [INFO] [stdout] 831 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_vtable } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1819:5 [INFO] [stdout] | [INFO] [stdout] 1819 | unsafe { &raw mut BOOTSTRAP_PORT_VAL } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `vwt_noop` is never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:16:22 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe extern "C" fn vwt_noop(_: *mut u8, _: *mut u8, _: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_snprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1015:22 [INFO] [stdout] | [INFO] [stdout] 1015 | unsafe extern "C" fn shim_snprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_sprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1033:22 [INFO] [stdout] | [INFO] [stdout] 1033 | unsafe extern "C" fn shim_sprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:38:40 [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(function_casts_as_integer)]` on by default [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as *const () as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling grafted-dyld v0.1.0 (/opt/rustwide/workdir/crates/grafted-dyld) [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:39:39 [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as u64; // destroy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as *const () as u64; // destroy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:40:40 [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as u64; // initializeWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as *const () as u64; // initializeWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:41:40 [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as u64; // assignWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as *const () as u64; // assignWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling grafted-loader v0.1.0 (/opt/rustwide/workdir/crates/grafted-loader) [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:42:40 [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as u64; // initializeWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as *const () as u64; // initializeWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:43:40 [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as u64; // assignWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as *const () as u64; // assignWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:44:40 [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as u64; // getEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as *const () as u64; // getEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:45:46 [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as *const () as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling grafted-cli v0.1.0 (/opt/rustwide/workdir/crates/grafted-cli) [INFO] [stdout] warning: unused attribute [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:196:1 [INFO] [stdout] | [INFO] [stdout] 196 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: remove this attribute [INFO] [stdout] | [INFO] [stdout] note: attribute also specified here [INFO] [stdout] --> crates/grafted-frameworks/src/swift_runtime.rs:194:1 [INFO] [stdout] | [INFO] [stdout] 194 | #[unsafe(no_mangle)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `strtab_off` is assigned to, but never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | let mut strtab_off = 0u32; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_strtab_off` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `strtab_off` is never read [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:239:61 [INFO] [stdout] | [INFO] [stdout] 239 | symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:829:9 [INFO] [stdout] | [INFO] [stdout] 829 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_cache } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:831:9 [INFO] [stdout] | [INFO] [stdout] 831 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_vtable } as u64); [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `app_del` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:642:31 [INFO] [stdout] | [INFO] [stdout] 642 | let mut app_del = std::ptr::null_mut(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 646 | app_del = unsafe { grafted_objc::objc_msgSend(cls as *mut _, alloc_sel) as *mut u8 }; [INFO] [stdout] | ------------------------------------------------------------------------------------ `app_del` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1819:5 [INFO] [stdout] | [INFO] [stdout] 1819 | unsafe { &raw mut BOOTSTRAP_PORT_VAL } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `vwt_noop` is never used [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:16:22 [INFO] [stdout] | [INFO] [stdout] 16 | unsafe extern "C" fn vwt_noop(_: *mut u8, _: *mut u8, _: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_snprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1015:22 [INFO] [stdout] | [INFO] [stdout] 1015 | unsafe extern "C" fn shim_snprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `shim_sprintf_chk` is never used [INFO] [stdout] --> crates/grafted-dyld/src/shims.rs:1033:22 [INFO] [stdout] | [INFO] [stdout] 1033 | unsafe extern "C" fn shim_sprintf_chk( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:38:40 [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(function_casts_as_integer)]` on by default [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 38 | *vwt.add(0) = vwt_initcopy as *const () as u64; // initializeBufferWithCopyOfBuffer [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:39:39 [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as u64; // destroy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 39 | *vwt.add(1) = vwt_destroy as *const () as u64; // destroy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:40:40 [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as u64; // initializeWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 40 | *vwt.add(2) = vwt_initcopy as *const () as u64; // initializeWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:41:40 [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as u64; // assignWithCopy [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 41 | *vwt.add(3) = vwt_initcopy as *const () as u64; // assignWithCopy [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:42:40 [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as u64; // initializeWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 42 | *vwt.add(4) = vwt_initcopy as *const () as u64; // initializeWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:43:40 [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as u64; // assignWithTake [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 43 | *vwt.add(5) = vwt_initcopy as *const () as u64; // assignWithTake [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:44:40 [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as u64; // getEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 44 | *vwt.add(6) = vwt_enum_tag as *const () as u64; // getEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct cast of function item into an integer [INFO] [stdout] --> crates/grafted-dyld/src/linker.rs:45:46 [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: first cast to a pointer `as *const ()` [INFO] [stdout] | [INFO] [stdout] 45 | *vwt.add(7) = vwt_store_enum_tag as *const () as u64; // storeEnumTagSinglePayload [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:835:5 [INFO] [stdout] | [INFO] [stdout] 835 | unsafe { std::ptr::addr_of!(STUB_METADATA) as *const u8 } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:892:20 [INFO] [stdout] | [INFO] [stdout] 892 | let f: F = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:1 [INFO] [stdout] | [INFO] [stdout] 878 | / unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] 879 | | request: usize, [INFO] [stdout] 880 | | witness_table: *const u8, [INFO] [stdout] 881 | | conforming_type: *const u8, [INFO] [stdout] 882 | | req_base: *const u8, [INFO] [stdout] 883 | | assoc_type: *const u8, [INFO] [stdout] 884 | | ) -> MetadataResponse { [INFO] [stdout] | |_____________________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:893:16 [INFO] [stdout] | [INFO] [stdout] 893 | return f(request, witness_table, conforming_type, req_base, assoc_type); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::safe_return_stub_object` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:900:5 [INFO] [stdout] | [INFO] [stdout] 900 | safe_return_stub_object(std::ptr::null_mut(), std::ptr::null_mut()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:899:1 [INFO] [stdout] | [INFO] [stdout] 899 | unsafe extern "C" fn witness_noop(_obj: *mut u8, _wt: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:984:27 [INFO] [stdout] | [INFO] [stdout] 984 | let f: TwoArgFn = std::mem::transmute(fn_ptr as *const ()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:1 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::swift_get_witness_table_stub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1008:5 [INFO] [stdout] | [INFO] [stdout] 1008 | swift_get_witness_table_stub(std::ptr::null_mut(), std::ptr::null_mut(), std::ptr::null_mut()) as *const u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:1 [INFO] [stdout] | [INFO] [stdout] 1001 | / unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] 1002 | | _witness_table: *const u8, [INFO] [stdout] 1003 | | _conforming_type: *const u8, [INFO] [stdout] 1004 | | _assoc_type: *const u8, [INFO] [stdout] 1005 | | _req_base: *const u8, [INFO] [stdout] 1006 | | _assoc_conformance: *const u8, [INFO] [stdout] 1007 | | ) -> *const u8 { [INFO] [stdout] | |______________^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1038:20 [INFO] [stdout] | [INFO] [stdout] 1038 | let sym_addr = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:1 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::read_volatile` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1055:26 [INFO] [stdout] | [INFO] [stdout] 1055 | let first_byte = std::ptr::read_volatile(slow_addr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `registry::patch_function_at` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1058:13 [INFO] [stdout] | [INFO] [stdout] 1058 | patch_function_at(slow_addr, replacement); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1068:8 [INFO] [stdout] | [INFO] [stdout] 1068 | if libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1064:1 [INFO] [stdout] | [INFO] [stdout] 1064 | unsafe fn patch_function_at(target: *mut u8, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1073:5 [INFO] [stdout] | [INFO] [stdout] 1073 | *p = 0x48; [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:5 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1074:6 [INFO] [stdout] | [INFO] [stdout] 1074 | *p.add(1) = 0xB8; [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:5 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1075:31 [INFO] [stdout] | [INFO] [stdout] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:5 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1076:6 [INFO] [stdout] | [INFO] [stdout] 1076 | *p.add(10) = 0xFF; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:5 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1077:6 [INFO] [stdout] | [INFO] [stdout] 1077 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1079:5 [INFO] [stdout] | [INFO] [stdout] 1079 | libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1086:18 [INFO] [stdout] | [INFO] [stdout] 1086 | let target = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:1 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1091:8 [INFO] [stdout] | [INFO] [stdout] 1091 | if libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1097:5 [INFO] [stdout] | [INFO] [stdout] 1097 | *p = 0x48; // REX.W [INFO] [stdout] | ^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:5 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1098:6 [INFO] [stdout] | [INFO] [stdout] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:5 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1099:31 [INFO] [stdout] | [INFO] [stdout] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stdout] | ^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:5 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1100:6 [INFO] [stdout] | [INFO] [stdout] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:5 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1101:6 [INFO] [stdout] | [INFO] [stdout] 1101 | *p.add(11) = 0xE0; [INFO] [stdout] | ^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1104:5 [INFO] [stdout] | [INFO] [stdout] 1104 | libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1163:25 [INFO] [stdout] | [INFO] [stdout] 1163 | let f: RealFn = std::mem::transmute(trampoline); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:1 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1164:20 [INFO] [stdout] | [INFO] [stdout] 1164 | let resp = f(metadata, request); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:23 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1168:24 [INFO] [stdout] | [INFO] [stdout] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:32 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1172:33 [INFO] [stdout] | [INFO] [stdout] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:17 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stdout] | [INFO] [stdout] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1173:18 [INFO] [stdout] | [INFO] [stdout] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1223:13 [INFO] [stdout] | [INFO] [stdout] 1223 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1222:9 [INFO] [stdout] | [INFO] [stdout] 1222 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1308:13 [INFO] [stdout] | [INFO] [stdout] 1308 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1307:9 [INFO] [stdout] | [INFO] [stdout] 1307 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1430:13 [INFO] [stdout] | [INFO] [stdout] 1430 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stdout] | [INFO] [stdout] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1429:9 [INFO] [stdout] | [INFO] [stdout] 1429 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `unsafe` block [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1574:9 [INFO] [stdout] | [INFO] [stdout] 1556 | unsafe { [INFO] [stdout] | ------ because it's nested under this `unsafe` block [INFO] [stdout] ... [INFO] [stdout] 1574 | unsafe { grafted_reinstall_sigsegv_handler(); } [INFO] [stdout] | ^^^^^^ unnecessary `unsafe` block [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `title` and `frame` are never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 14 | struct ManagedWindow { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | title: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 18 | frame: CGRect, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `screen` is never read [INFO] [stdout] --> crates/grafted-frameworks/src/ws/display.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 23 | struct DisplayState { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 24 | display: *mut x11::Display, [INFO] [stdout] 25 | screen: i32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render_view_tree` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/appkit/application.rs:303:4 [INFO] [stdout] | [INFO] [stdout] 303 | fn render_view_tree() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `swift_once_lifecycle` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:977:22 [INFO] [stdout] | [INFO] [stdout] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_all_instances` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1013:11 [INFO] [stdout] | [INFO] [stdout] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `patch_function` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1084:11 [INFO] [stdout] | [INFO] [stdout] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1792:8 [INFO] [stdout] | [INFO] [stdout] 1792 | static REAL_RETAIN: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RETAIN_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1793:8 [INFO] [stdout] | [INFO] [stdout] 1793 | static REAL_RETAIN_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1794:8 [INFO] [stdout] | [INFO] [stdout] 1794 | static REAL_RELEASE: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `REAL_RELEASE_N` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1795:8 [INFO] [stdout] | [INFO] [stdout] 1795 | static REAL_RELEASE_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `resolve_real` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1797:4 [INFO] [stdout] | [INFO] [stdout] 1797 | fn resolve_real(name: &str, cache: &std::sync::atomic::AtomicU64) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BlockDescriptor` is never constructed [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1969:8 [INFO] [stdout] | [INFO] [stdout] 1969 | struct BlockDescriptor { reserved: u64, size: u64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `BLOCK_DESCRIPTOR` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1970:8 [INFO] [stdout] | [INFO] [stdout] 1970 | static BLOCK_DESCRIPTOR: BlockDescriptor = BlockDescriptor { reserved: 0, size: 32 }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `grafted_try_call` is never used [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:981:32 [INFO] [stdout] | [INFO] [stdout] 981 | unsafe extern "C" { fn grafted_try_call(f: unsafe extern "C" fn(*mut u8, *mut u8), a: *mut u8, b: *mut u8) -> bool; } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/foundation/register.rs:125:71 [INFO] [stdout] | [INFO] [stdout] 125 | unsafe extern "C" fn os_version(_self: *mut u8, _sel: *mut u8) -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] = note: `#[warn(improper_ctypes_definitions)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedTypeWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:878:22 [INFO] [stdout] | [INFO] [stdout] 878 | unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_type_witness` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_conformsToProtocol` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:993:22 [INFO] [stdout] | [INFO] [stdout] 993 | unsafe extern "C" fn safe_conformsToProtocol( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_conforms_to_protocol` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `safe_getAssociatedConformanceWitness` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1001:22 [INFO] [stdout] | [INFO] [stdout] 1001 | unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_conformance_witness` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_checkMetadataState` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1143:22 [INFO] [stdout] | [INFO] [stdout] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_check_metadata_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `smart_getWitnessTable` should have a snake case name [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:1810:22 [INFO] [stdout] | [INFO] [stdout] 1810 | unsafe extern "C" fn smart_getWitnessTable(a: *mut u8, _b: *mut u8, _c: *mut u8) -> *mut u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_get_witness_table` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stdout] --> crates/grafted-frameworks/src/registry.rs:2004:44 [INFO] [stdout] | [INFO] [stdout] 2004 | unsafe extern "C" fn swift_os_version() -> [i64; 3] { [INFO] [stdout] | ^^^^^^^^ not FFI-safe [INFO] [stdout] | [INFO] [stdout] = help: consider passing a pointer to the array [INFO] [stdout] = note: passing raw arrays by value is not FFI-safe [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0133`. [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 6.77s [INFO] running `Command { std: "docker" "inspect" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] warning: unused attribute [INFO] [stderr] --> crates/grafted-frameworks/src/swift_runtime.rs:196:1 [INFO] [stderr] | [INFO] [stderr] 196 | #[unsafe(no_mangle)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove this attribute [INFO] [stderr] | [INFO] [stderr] note: attribute also specified here [INFO] [stderr] --> crates/grafted-frameworks/src/swift_runtime.rs:194:1 [INFO] [stderr] | [INFO] [stderr] 194 | #[unsafe(no_mangle)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `app_del` is never read [INFO] [stderr] --> crates/grafted-frameworks/src/appkit/application.rs:642:31 [INFO] [stderr] | [INFO] [stderr] 642 | let mut app_del = std::ptr::null_mut(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stderr] ... [INFO] [stderr] 646 | app_del = unsafe { grafted_objc::objc_msgSend(cls as *mut _, alloc_sel) as *mut u8 }; [INFO] [stderr] | ------------------------------------------------------------------------------------ `app_del` is overwritten here before the previous value is read [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:835:5 [INFO] [stderr] | [INFO] [stderr] 835 | unsafe { std::ptr::addr_of!(STUB_METADATA) as *const u8 } [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:892:20 [INFO] [stderr] | [INFO] [stderr] 892 | let f: F = std::mem::transmute(trampoline); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:878:1 [INFO] [stderr] | [INFO] [stderr] 878 | / unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stderr] 879 | | request: usize, [INFO] [stderr] 880 | | witness_table: *const u8, [INFO] [stderr] 881 | | conforming_type: *const u8, [INFO] [stderr] 882 | | req_base: *const u8, [INFO] [stderr] 883 | | assoc_type: *const u8, [INFO] [stderr] 884 | | ) -> MetadataResponse { [INFO] [stderr] | |_____________________^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:893:16 [INFO] [stderr] | [INFO] [stderr] 893 | return f(request, witness_table, conforming_type, req_base, assoc_type); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `registry::safe_return_stub_object` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:900:5 [INFO] [stderr] | [INFO] [stderr] 900 | safe_return_stub_object(std::ptr::null_mut(), std::ptr::null_mut()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:899:1 [INFO] [stderr] | [INFO] [stderr] 899 | unsafe extern "C" fn witness_noop(_obj: *mut u8, _wt: *mut u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:984:27 [INFO] [stderr] | [INFO] [stderr] 984 | let f: TwoArgFn = std::mem::transmute(fn_ptr as *const ()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:977:1 [INFO] [stderr] | [INFO] [stderr] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `registry::swift_get_witness_table_stub` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1008:5 [INFO] [stderr] | [INFO] [stderr] 1008 | swift_get_witness_table_stub(std::ptr::null_mut(), std::ptr::null_mut(), std::ptr::null_mut()) as *const u8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1001:1 [INFO] [stderr] | [INFO] [stderr] 1001 | / unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stderr] 1002 | | _witness_table: *const u8, [INFO] [stderr] 1003 | | _conforming_type: *const u8, [INFO] [stderr] 1004 | | _assoc_type: *const u8, [INFO] [stderr] 1005 | | _req_base: *const u8, [INFO] [stderr] 1006 | | _assoc_conformance: *const u8, [INFO] [stderr] 1007 | | ) -> *const u8 { [INFO] [stderr] | |______________^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1038:20 [INFO] [stderr] | [INFO] [stderr] 1038 | let sym_addr = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1013:1 [INFO] [stderr] | [INFO] [stderr] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::read_volatile` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1055:26 [INFO] [stderr] | [INFO] [stderr] 1055 | let first_byte = std::ptr::read_volatile(slow_addr); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `registry::patch_function_at` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1058:13 [INFO] [stderr] | [INFO] [stderr] 1058 | patch_function_at(slow_addr, replacement); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1068:8 [INFO] [stderr] | [INFO] [stderr] 1068 | if libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1064:1 [INFO] [stderr] | [INFO] [stderr] 1064 | unsafe fn patch_function_at(target: *mut u8, replacement: *const u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1073:5 [INFO] [stderr] | [INFO] [stderr] 1073 | *p = 0x48; [INFO] [stderr] | ^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1074:5 [INFO] [stderr] | [INFO] [stderr] 1074 | *p.add(1) = 0xB8; [INFO] [stderr] | ^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1074:6 [INFO] [stderr] | [INFO] [stderr] 1074 | *p.add(1) = 0xB8; [INFO] [stderr] | ^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1075:5 [INFO] [stderr] | [INFO] [stderr] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1075:31 [INFO] [stderr] | [INFO] [stderr] 1075 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stderr] | ^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1076:5 [INFO] [stderr] | [INFO] [stderr] 1076 | *p.add(10) = 0xFF; [INFO] [stderr] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1076:6 [INFO] [stderr] | [INFO] [stderr] 1076 | *p.add(10) = 0xFF; [INFO] [stderr] | ^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1077:5 [INFO] [stderr] | [INFO] [stderr] 1077 | *p.add(11) = 0xE0; [INFO] [stderr] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1077:6 [INFO] [stderr] | [INFO] [stderr] 1077 | *p.add(11) = 0xE0; [INFO] [stderr] | ^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1079:5 [INFO] [stderr] | [INFO] [stderr] 1079 | libc::mprotect(page, 8192, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::dlsym` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1086:18 [INFO] [stderr] | [INFO] [stderr] 1086 | let target = libc::dlsym(libc::RTLD_DEFAULT, c_name.as_ptr()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1084:1 [INFO] [stderr] | [INFO] [stderr] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1091:8 [INFO] [stderr] | [INFO] [stderr] 1091 | if libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_WRITE | libc::PROT_EXEC) != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1097:5 [INFO] [stderr] | [INFO] [stderr] 1097 | *p = 0x48; // REX.W [INFO] [stderr] | ^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1098:5 [INFO] [stderr] | [INFO] [stderr] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stderr] | ^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1098:6 [INFO] [stderr] | [INFO] [stderr] 1098 | *p.add(1) = 0xB8; // mov rax, imm64 [INFO] [stderr] | ^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::write_unaligned` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1099:5 [INFO] [stderr] | [INFO] [stderr] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1099:31 [INFO] [stderr] | [INFO] [stderr] 1099 | std::ptr::write_unaligned(p.add(2) as *mut u64, replacement as u64); [INFO] [stderr] | ^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1100:5 [INFO] [stderr] | [INFO] [stderr] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stderr] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1100:6 [INFO] [stderr] | [INFO] [stderr] 1100 | *p.add(10) = 0xFF; // jmp rax [INFO] [stderr] | ^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1101:5 [INFO] [stderr] | [INFO] [stderr] 1101 | *p.add(11) = 0xE0; [INFO] [stderr] | ^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::add` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1101:6 [INFO] [stderr] | [INFO] [stderr] 1101 | *p.add(11) = 0xE0; [INFO] [stderr] | ^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `libc::mprotect` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1104:5 [INFO] [stderr] | [INFO] [stderr] 1104 | libc::mprotect(page, 4096, libc::PROT_READ | libc::PROT_EXEC); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1163:25 [INFO] [stderr] | [INFO] [stderr] 1163 | let f: RealFn = std::mem::transmute(trampoline); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1143:1 [INFO] [stderr] | [INFO] [stderr] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1164:20 [INFO] [stderr] | [INFO] [stderr] 1164 | let resp = f(metadata, request); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1168:23 [INFO] [stderr] | [INFO] [stderr] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1168:24 [INFO] [stderr] | [INFO] [stderr] 1168 | let vwt = *((resp.metadata as *const u64).sub(1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1172:32 [INFO] [stderr] | [INFO] [stderr] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::const_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1172:33 [INFO] [stderr] | [INFO] [stderr] 1172 | let good_vwt = *((stub as *const u64).sub(1)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1173:17 [INFO] [stderr] | [INFO] [stderr] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer [INFO] [stderr] | [INFO] [stderr] = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::::sub` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1173:18 [INFO] [stderr] | [INFO] [stderr] 1173 | *((resp.metadata as *mut u64).sub(1)) = good_vwt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1223:13 [INFO] [stderr] | [INFO] [stderr] 1223 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1222:9 [INFO] [stderr] | [INFO] [stderr] 1222 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1308:13 [INFO] [stderr] | [INFO] [stderr] 1308 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1307:9 [INFO] [stderr] | [INFO] [stderr] 1307 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::copy_nonoverlapping` is unsafe and requires unsafe block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1430:13 [INFO] [stderr] | [INFO] [stderr] 1430 | std::ptr::copy_nonoverlapping(src, dest, 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function [INFO] [stderr] | [INFO] [stderr] = note: consult the function's documentation for information on how to avoid undefined behavior [INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1429:9 [INFO] [stderr] | [INFO] [stderr] 1429 | unsafe extern "C" fn vwt_initcopy(dest: *mut u8, src: *mut u8, _meta: *const u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: for more information, see [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1574:9 [INFO] [stderr] | [INFO] [stderr] 1556 | unsafe { [INFO] [stderr] | ------ because it's nested under this `unsafe` block [INFO] [stderr] ... [INFO] [stderr] 1574 | unsafe { grafted_reinstall_sigsegv_handler(); } [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] [INFO] [stderr] warning: fields `title` and `frame` are never read [INFO] [stderr] --> crates/grafted-frameworks/src/ws/display.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 14 | struct ManagedWindow { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 17 | title: String, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 18 | frame: CGRect, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `screen` is never read [INFO] [stderr] --> crates/grafted-frameworks/src/ws/display.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 23 | struct DisplayState { [INFO] [stderr] | ------------ field in this struct [INFO] [stderr] 24 | display: *mut x11::Display, [INFO] [stderr] 25 | screen: i32, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `render_view_tree` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/appkit/application.rs:303:4 [INFO] [stderr] | [INFO] [stderr] 303 | fn render_view_tree() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `swift_once_lifecycle` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:977:22 [INFO] [stderr] | [INFO] [stderr] 977 | unsafe extern "C" fn swift_once_lifecycle(predicate: *mut isize, fn_ptr: unsafe extern "C" fn(*mut u8), ctx: *mut u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `patch_all_instances` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1013:11 [INFO] [stderr] | [INFO] [stderr] 1013 | unsafe fn patch_all_instances(exported_name: &str, slow_offset: usize, replacement: *const u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `patch_function` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1084:11 [INFO] [stderr] | [INFO] [stderr] 1084 | unsafe fn patch_function(name: &str, replacement: *const u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `REAL_RETAIN` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1792:8 [INFO] [stderr] | [INFO] [stderr] 1792 | static REAL_RETAIN: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `REAL_RETAIN_N` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1793:8 [INFO] [stderr] | [INFO] [stderr] 1793 | static REAL_RETAIN_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `REAL_RELEASE` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1794:8 [INFO] [stderr] | [INFO] [stderr] 1794 | static REAL_RELEASE: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `REAL_RELEASE_N` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1795:8 [INFO] [stderr] | [INFO] [stderr] 1795 | static REAL_RELEASE_N: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `resolve_real` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1797:4 [INFO] [stderr] | [INFO] [stderr] 1797 | fn resolve_real(name: &str, cache: &std::sync::atomic::AtomicU64) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `BlockDescriptor` is never constructed [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1969:8 [INFO] [stderr] | [INFO] [stderr] 1969 | struct BlockDescriptor { reserved: u64, size: u64 } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: static `BLOCK_DESCRIPTOR` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1970:8 [INFO] [stderr] | [INFO] [stderr] 1970 | static BLOCK_DESCRIPTOR: BlockDescriptor = BlockDescriptor { reserved: 0, size: 32 }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `grafted_try_call` is never used [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:981:32 [INFO] [stderr] | [INFO] [stderr] 981 | unsafe extern "C" { fn grafted_try_call(f: unsafe extern "C" fn(*mut u8, *mut u8), a: *mut u8, b: *mut u8) -> bool; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stderr] --> crates/grafted-frameworks/src/foundation/register.rs:125:71 [INFO] [stderr] | [INFO] [stderr] 125 | unsafe extern "C" fn os_version(_self: *mut u8, _sel: *mut u8) -> [i64; 3] { [INFO] [stderr] | ^^^^^^^^ not FFI-safe [INFO] [stderr] | [INFO] [stderr] = help: consider passing a pointer to the array [INFO] [stderr] = note: passing raw arrays by value is not FFI-safe [INFO] [stderr] = note: `#[warn(improper_ctypes_definitions)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `safe_getAssociatedTypeWitness` should have a snake case name [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:878:22 [INFO] [stderr] | [INFO] [stderr] 878 | unsafe extern "C" fn safe_getAssociatedTypeWitness( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_type_witness` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `safe_conformsToProtocol` should have a snake case name [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:993:22 [INFO] [stderr] | [INFO] [stderr] 993 | unsafe extern "C" fn safe_conformsToProtocol( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_conforms_to_protocol` [INFO] [stderr] [INFO] [stderr] warning: function `safe_getAssociatedConformanceWitness` should have a snake case name [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1001:22 [INFO] [stderr] | [INFO] [stderr] 1001 | unsafe extern "C" fn safe_getAssociatedConformanceWitness( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `safe_get_associated_conformance_witness` [INFO] [stderr] [INFO] [stderr] warning: function `smart_checkMetadataState` should have a snake case name [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1143:22 [INFO] [stderr] | [INFO] [stderr] 1143 | unsafe extern "C" fn smart_checkMetadataState(metadata: *mut u8, request: usize) -> MetadataResponse { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_check_metadata_state` [INFO] [stderr] [INFO] [stderr] warning: function `smart_getWitnessTable` should have a snake case name [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:1810:22 [INFO] [stderr] | [INFO] [stderr] 1810 | unsafe extern "C" fn smart_getWitnessTable(a: *mut u8, _b: *mut u8, _c: *mut u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `smart_get_witness_table` [INFO] [stderr] [INFO] [stderr] warning: `extern` fn uses type `[i64; 3]`, which is not FFI-safe [INFO] [stderr] --> crates/grafted-frameworks/src/registry.rs:2004:44 [INFO] [stderr] | [INFO] [stderr] 2004 | unsafe extern "C" fn swift_os_version() -> [i64; 3] { [INFO] [stderr] | ^^^^^^^^ not FFI-safe [INFO] [stderr] | [INFO] [stderr] = help: consider passing a pointer to the array [INFO] [stderr] = note: passing raw arrays by value is not FFI-safe [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0133`. [INFO] [stderr] warning: `grafted-frameworks` (lib) generated 67 warnings (run `cargo fix --lib -p grafted-frameworks` to apply 12 suggestions) [INFO] [stdout] [INFO] [stderr] warning: `grafted-frameworks` (lib test) generated 67 warnings (67 duplicates) [INFO] [stdout] running 0 tests [INFO] [stderr] warning: variable `strtab_off` is assigned to, but never used [INFO] [stdout] [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:233:13 [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] 233 | let mut strtab_off = 0u32; [INFO] [stdout] [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stdout] running 6 tests [INFO] [stderr] | [INFO] [stdout] test linker::tests::test_strong_missing_errors ... ok [INFO] [stderr] = note: consider using `_strtab_off` instead [INFO] [stdout] test resolver::tests::test_override_resolution ... ok [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] test resolver::tests::test_unknown_dylib ... ok [INFO] [stderr] [INFO] [stdout] test linker::tests::test_resolve_libsystem_write ... ok [INFO] [stderr] warning: value assigned to `strtab_off` is never read [INFO] [stdout] test linker::tests::test_weak_missing_returns_zero ... ok [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:239:61 [INFO] [stdout] test linker::tests::test_resolve_short_name ... ok [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] 239 | symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff; [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stdout] running 11 tests [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> crates/grafted-dyld/src/shims.rs:829:9 [INFO] [stderr] | [INFO] [stderr] 829 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_cache } as u64); [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> crates/grafted-dyld/src/shims.rs:831:9 [INFO] [stderr] | [INFO] [stderr] 831 | unsafe { &raw mut grafted_frameworks::registry::__objc_empty_vtable } as u64); [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] [INFO] [stderr] warning: unnecessary `unsafe` block [INFO] [stderr] --> crates/grafted-dyld/src/shims.rs:1819:5 [INFO] [stderr] | [INFO] [stderr] 1819 | unsafe { &raw mut BOOTSTRAP_PORT_VAL } [INFO] [stderr] | ^^^^^^ unnecessary `unsafe` block [INFO] [stderr] [INFO] [stderr] warning: function `vwt_noop` is never used [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:16:22 [INFO] [stderr] | [INFO] [stderr] 16 | unsafe extern "C" fn vwt_noop(_: *mut u8, _: *mut u8, _: *const u8) -> *mut u8 { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `shim_snprintf_chk` is never used [INFO] [stderr] --> crates/grafted-dyld/src/shims.rs:1015:22 [INFO] [stderr] | [INFO] [stderr] 1015 | unsafe extern "C" fn shim_snprintf_chk( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `shim_sprintf_chk` is never used [INFO] [stderr] --> crates/grafted-dyld/src/shims.rs:1033:22 [INFO] [stderr] | [INFO] [stderr] 1033 | unsafe extern "C" fn shim_sprintf_chk( [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:38:40 [INFO] [stderr] | [INFO] [stderr] 38 | *vwt.add(0) = vwt_initcopy as u64; // initializeBufferWithCopyOfBuffer [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(function_casts_as_integer)]` on by default [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 38 | *vwt.add(0) = vwt_initcopy as *const () as u64; // initializeBufferWithCopyOfBuffer [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:39:39 [INFO] [stderr] | [INFO] [stderr] 39 | *vwt.add(1) = vwt_destroy as u64; // destroy [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 39 | *vwt.add(1) = vwt_destroy as *const () as u64; // destroy [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:40:40 [INFO] [stderr] | [INFO] [stderr] 40 | *vwt.add(2) = vwt_initcopy as u64; // initializeWithCopy [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 40 | *vwt.add(2) = vwt_initcopy as *const () as u64; // initializeWithCopy [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | *vwt.add(3) = vwt_initcopy as u64; // assignWithCopy [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 41 | *vwt.add(3) = vwt_initcopy as *const () as u64; // assignWithCopy [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:42:40 [INFO] [stderr] | [INFO] [stderr] 42 | *vwt.add(4) = vwt_initcopy as u64; // initializeWithTake [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 42 | *vwt.add(4) = vwt_initcopy as *const () as u64; // initializeWithTake [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:43:40 [INFO] [stderr] | [INFO] [stderr] 43 | *vwt.add(5) = vwt_initcopy as u64; // assignWithTake [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 43 | *vwt.add(5) = vwt_initcopy as *const () as u64; // assignWithTake [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:44:40 [INFO] [stderr] | [INFO] [stderr] 44 | *vwt.add(6) = vwt_enum_tag as u64; // getEnumTagSinglePayload [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 44 | *vwt.add(6) = vwt_enum_tag as *const () as u64; // getEnumTagSinglePayload [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: direct cast of function item into an integer [INFO] [stderr] --> crates/grafted-dyld/src/linker.rs:45:46 [INFO] [stderr] | [INFO] [stderr] 45 | *vwt.add(7) = vwt_store_enum_tag as u64; // storeEnumTagSinglePayload [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: first cast to a pointer `as *const ()` [INFO] [stderr] | [INFO] [stderr] 45 | *vwt.add(7) = vwt_store_enum_tag as *const () as u64; // storeEnumTagSinglePayload [INFO] [stderr] | ++++++++++++ [INFO] [stderr] [INFO] [stderr] warning: `grafted-dyld` (lib) generated 16 warnings (run `cargo fix --lib -p grafted-dyld` to apply 8 suggestions) [INFO] [stderr] warning: `grafted-dyld` (lib test) generated 16 warnings (16 duplicates) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.10s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/grafted-0f2e7809770b6c56) [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/grafted_dyld-e00591fa05a7a702) [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/grafted_frameworks-3f7c01a2ac4a909e) [INFO] [stdout] test appkit::pasteboard::tests::types_contains_string_type ... ok [INFO] [stdout] test cf::runloop::tests::observers_fire_in_entry_before_waiting_exit_order ... ok [INFO] [stdout] test cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode ... ok [INFO] [stdout] test foundation::notification::tests::observer_does_not_fire_on_different_name ... ok [INFO] [stdout] test cf::runloop::tests::source_in_common_modes_fires_in_tracking_mode ... ok [INFO] [stdout] test cf::runloop::tests::current_mode_reports_entered_mode ... ok [INFO] [stdout] test foundation::notification::tests::nil_name_is_wildcard ... ok [INFO] [stdout] test cf::runloop::tests::source_in_tracking_mode_only_fires_there ... ok [INFO] [stdout] test foundation::notification::tests::observer_fires_on_matching_name ... ok [INFO] [stdout] test foundation::notification::tests::remove_observer_stops_firing ... ok [INFO] [stdout] test appkit::pasteboard::tests::clipboard_roundtrip ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/grafted_kernel-40e473479518ee8b) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test syscall::tests::test_translate_unknown ... ok [INFO] [stdout] test syscall::tests::test_translate_exit ... ok [INFO] [stdout] test syscall::tests::test_translate_write ... ok [INFO] [stdout] test syscall::tests::test_translate_mach_trap ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/ping_device.rs (/opt/rustwide/target/release/deps/ping_device-429f719f29fe3946) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test test_ping_kernel_module ... ok [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/grafted_loader-8c082ed73ac57053) [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test executor::tests::test_process_syscall_unix_getpid ... ok [INFO] [stdout] test macho::tests::test_not_macho ... ok [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/grafted_objc-f8bb923c4adea38d) [INFO] [stdout] test executor::tests::test_process_syscall_mach_reply_port ... ok [INFO] [stdout] test executor::tests::test_process_syscall_mach_trap_unsupported_fd ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test runtime::tests::test_objc_msgsend ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests grafted_dyld [INFO] [stdout] [INFO] [stderr] Doc-tests grafted_frameworks [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests grafted_kernel [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests grafted_loader [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests grafted_objc [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de", kill_on_drop: false }` [INFO] [stdout] f849fd0df5183d984c7a0f7f7227eceb0f1a7079a478d381d10eadfbe7e929de