[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 try#33835004928d3bf65db4d4712e1330766263b0bd for pr-155739
[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 33835004928d3bf65db4d4712e1330766263b0bd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "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" "+33835004928d3bf65db4d4712e1330766263b0bd" "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/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6fcf006b8b2e46b85ffd7e217f341f7a5ad92e4d5eb7f2615bb1b8e7726f1350
[INFO] running `Command { std: "docker" "start" "-a" "6fcf006b8b2e46b85ffd7e217f341f7a5ad92e4d5eb7f2615bb1b8e7726f1350", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6fcf006b8b2e46b85ffd7e217f341f7a5ad92e4d5eb7f2615bb1b8e7726f1350", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6fcf006b8b2e46b85ffd7e217f341f7a5ad92e4d5eb7f2615bb1b8e7726f1350", kill_on_drop: false }`
[INFO] [stdout] 6fcf006b8b2e46b85ffd7e217f341f7a5ad92e4d5eb7f2615bb1b8e7726f1350
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2e8ab072729b892234f23315487ad549311ad9567de0fa4ecebde6d97c060ba8
[INFO] running `Command { std: "docker" "start" "-a" "2e8ab072729b892234f23315487ad549311ad9567de0fa4ecebde6d97c060ba8", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[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 memchr v2.8.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling anstyle-parse v1.0.0
[INFO] [stderr]    Compiling colorchoice v1.0.5
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling plain v0.2.3
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling anstream v1.0.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling jiff v0.2.23
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling memmap2 v0.9.10
[INFO] [stderr]    Compiling regex v1.12.3
[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 env_filter v1.0.1
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling goblin v0.10.5
[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] [stderr]    Compiling clap v4.6.0
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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] For more information about this error, try `rustc --explain E0133`.
[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] [stderr]    Compiling grafted-cli v0.1.0 (/opt/rustwide/workdir/crates/grafted-cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.01s
[INFO] running `Command { std: "docker" "inspect" "2e8ab072729b892234f23315487ad549311ad9567de0fa4ecebde6d97c060ba8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e8ab072729b892234f23315487ad549311ad9567de0fa4ecebde6d97c060ba8", kill_on_drop: false }`
[INFO] [stdout] 2e8ab072729b892234f23315487ad549311ad9567de0fa4ecebde6d97c060ba8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 11bc00cb9cbd6302b32b034cb9a88cc110c5c81b9f838f0ea7f55b89abe4ba96
[INFO] running `Command { std: "docker" "start" "-a" "11bc00cb9cbd6302b32b034cb9a88cc110c5c81b9f838f0ea7f55b89abe4ba96", kill_on_drop: false }`
[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: 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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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] [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] [stderr]    Compiling grafted-dyld v0.1.0 (/opt/rustwide/workdir/crates/grafted-dyld)
[INFO] [stderr]    Compiling grafted-loader v0.1.0 (/opt/rustwide/workdir/crates/grafted-loader)
[INFO] [stderr]    Compiling grafted-cli v0.1.0 (/opt/rustwide/workdir/crates/grafted-cli)
[INFO] [stderr]    Compiling grafted-frameworks v0.1.0 (/opt/rustwide/workdir/crates/grafted-frameworks)
[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: 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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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] 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]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.23s
[INFO] running `Command { std: "docker" "inspect" "11bc00cb9cbd6302b32b034cb9a88cc110c5c81b9f838f0ea7f55b89abe4ba96", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "11bc00cb9cbd6302b32b034cb9a88cc110c5c81b9f838f0ea7f55b89abe4ba96", kill_on_drop: false }`
[INFO] [stdout] 11bc00cb9cbd6302b32b034cb9a88cc110c5c81b9f838f0ea7f55b89abe4ba96
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+33835004928d3bf65db4d4712e1330766263b0bd" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 1c0860099b186e4edfca131a1b22c2752825741055f2c43df30dcd22eeee9555
[INFO] running `Command { std: "docker" "start" "-a" "1c0860099b186e4edfca131a1b22c2752825741055f2c43df30dcd22eeee9555", 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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::const_ptr::<impl *const T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: call to unsafe function `std::ptr::mut_ptr::<impl *mut T>::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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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 <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[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] [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 6 tests
[INFO] [stdout] test resolver::tests::test_override_resolution ... ok
[INFO] [stdout] test resolver::tests::test_unknown_dylib ... ok
[INFO] [stderr] warning: `grafted-frameworks` (lib) generated 67 warnings (run `cargo fix --lib -p grafted-frameworks` to apply 12 suggestions)
[INFO] [stderr] warning: `grafted-frameworks` (lib test) generated 67 warnings (67 duplicates)
[INFO] [stderr] warning: variable `strtab_off` is assigned to, but never used
[INFO] [stderr]    --> crates/grafted-dyld/src/linker.rs:233:13
[INFO] [stderr]     |
[INFO] [stderr] 233 |         let mut strtab_off = 0u32;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_strtab_off` instead
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `strtab_off` is never read
[INFO] [stderr]    --> crates/grafted-dyld/src/linker.rs:239:61
[INFO] [stderr]     |
[INFO] [stderr] 239 |                     symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff;
[INFO] [stderr]     |                                                             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[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 `test` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/grafted-ac8f3be7a3aaa8bf)
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_dyld-fb63ca7704fc15da)
[INFO] [stdout] test linker::tests::test_resolve_short_name ... ok
[INFO] [stdout] test linker::tests::test_strong_missing_errors ... ok
[INFO] [stdout] test linker::tests::test_resolve_libsystem_write ... ok
[INFO] [stdout] test linker::tests::test_weak_missing_returns_zero ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_frameworks-2fbed02e66393699)
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stdout] test cf::runloop::tests::current_mode_reports_entered_mode ... ok
[INFO] [stdout] test appkit::pasteboard::tests::types_contains_string_type ... ok
[INFO] [stdout] test cf::runloop::tests::source_in_common_modes_fires_in_tracking_mode ... 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 cf::runloop::tests::source_in_tracking_mode_only_fires_there ... ok
[INFO] [stdout] test foundation::notification::tests::nil_name_is_wildcard ... ok
[INFO] [stdout] test foundation::notification::tests::observer_does_not_fire_on_different_name ... 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] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test syscall::tests::test_translate_mach_trap ... ok
[INFO] [stdout] test syscall::tests::test_translate_unknown ... ok
[INFO] [stdout] test syscall::tests::test_translate_write ... ok
[INFO] [stdout] test syscall::tests::test_translate_exit ... 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 test_ping_kernel_module ... 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] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test executor::tests::test_process_syscall_mach_reply_port ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_kernel-4aaafec262370715)
[INFO] [stderr]      Running tests/ping_device.rs (/opt/rustwide/target/debug/deps/ping_device-138c120cee1afbd7)
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_loader-44c1bc08d20b2727)
[INFO] [stdout] test executor::tests::test_process_syscall_unix_getpid ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_objc-e1426946e70ba7c6)
[INFO] [stdout] test executor::tests::test_process_syscall_mach_trap_unsupported_fd ... ok
[INFO] [stdout] test macho::tests::test_not_macho ... 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] [stderr]    Doc-tests grafted_dyld
[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] [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_frameworks
[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_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] [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" "1c0860099b186e4edfca131a1b22c2752825741055f2c43df30dcd22eeee9555", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c0860099b186e4edfca131a1b22c2752825741055f2c43df30dcd22eeee9555", kill_on_drop: false }`
[INFO] [stdout] 1c0860099b186e4edfca131a1b22c2752825741055f2c43df30dcd22eeee9555
