[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 master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTOSTcRa%2Fgrafted" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc1/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-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TOSTcRa/grafted on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded scroll_derive v0.13.1
[INFO] [stderr]   Downloaded scroll v0.13.0
[INFO] [stderr]   Downloaded env_logger v0.11.10
[INFO] [stderr]   Downloaded anstyle-query v1.1.5
[INFO] [stderr]   Downloaded clap_lex v1.1.0
[INFO] [stderr]   Downloaded anstyle-wincon v3.0.11
[INFO] [stderr]   Downloaded once_cell_polyfill v1.70.2
[INFO] [stderr]   Downloaded colorchoice v1.0.5
[INFO] [stderr]   Downloaded env_filter v1.0.1
[INFO] [stderr]   Downloaded is_terminal_polyfill v1.70.2
[INFO] [stderr]   Downloaded anstyle v1.0.14
[INFO] [stderr]   Downloaded anstyle-parse v1.0.0
[INFO] [stderr]   Downloaded anstream v1.0.0
[INFO] [stderr]   Downloaded clap_derive v4.6.0
[INFO] [stderr]   Downloaded clap v4.6.0
[INFO] [stderr]   Downloaded portable-atomic-util v0.2.6
[INFO] [stderr]   Downloaded jiff-static v0.2.23
[INFO] [stderr]   Downloaded goblin v0.10.5
[INFO] [stderr]   Downloaded clap_builder v4.6.0
[INFO] [stderr]   Downloaded jiff v0.2.23
[INFO] [stderr]   Downloaded libc v0.2.184
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 41e12203b5b93041bbd3d59a08d5f1984a77b8cdf3ae2477c3115631ebcc7983
[INFO] running `Command { std: "docker" "start" "-a" "41e12203b5b93041bbd3d59a08d5f1984a77b8cdf3ae2477c3115631ebcc7983", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "41e12203b5b93041bbd3d59a08d5f1984a77b8cdf3ae2477c3115631ebcc7983", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "41e12203b5b93041bbd3d59a08d5f1984a77b8cdf3ae2477c3115631ebcc7983", kill_on_drop: false }`
[INFO] [stdout] 41e12203b5b93041bbd3d59a08d5f1984a77b8cdf3ae2477c3115631ebcc7983
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c75c73b8150184e308c52f78788416a4edb87fa03186e745e58d6dc0c009724e
[INFO] running `Command { std: "docker" "start" "-a" "c75c73b8150184e308c52f78788416a4edb87fa03186e745e58d6dc0c009724e", 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 anstyle-query v1.1.5
[INFO] [stderr]    Compiling plain v0.2.3
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling heck v0.5.0
[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 anyhow v1.0.102
[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 env_filter v1.0.1
[INFO] [stderr]    Compiling env_logger v0.11.10
[INFO] [stderr]    Compiling scroll v0.13.0
[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 51.68s
[INFO] running `Command { std: "docker" "inspect" "c75c73b8150184e308c52f78788416a4edb87fa03186e745e58d6dc0c009724e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c75c73b8150184e308c52f78788416a4edb87fa03186e745e58d6dc0c009724e", kill_on_drop: false }`
[INFO] [stdout] c75c73b8150184e308c52f78788416a4edb87fa03186e745e58d6dc0c009724e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2e8f9338748890d9bb7ce37a4b79500ebfa5ff2b95dd62228e164f3cf2715d4c
[INFO] running `Command { std: "docker" "start" "-a" "2e8f9338748890d9bb7ce37a4b79500ebfa5ff2b95dd62228e164f3cf2715d4c", kill_on_drop: false }`
[INFO] [stdout] warning: unused attribute
[INFO] [stdout]    --> crates/grafted-frameworks/src/swift_runtime.rs:196:1
[INFO] [stdout]     |
[INFO] [stdout] 196 | #[unsafe(no_mangle)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
[INFO] [stdout]     |
[INFO] [stdout] note: attribute also specified here
[INFO] [stdout]    --> crates/grafted-frameworks/src/swift_runtime.rs:194:1
[INFO] [stdout]     |
[INFO] [stdout] 194 | #[unsafe(no_mangle)]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `app_del` is never read
[INFO] [stdout]    --> crates/grafted-frameworks/src/appkit/application.rs:642:31
[INFO] [stdout]     |
[INFO] [stdout] 642 |             let mut app_del = std::ptr::null_mut();
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 646 |                 app_del = unsafe { grafted_objc::objc_msgSend(cls as *mut _, alloc_sel) as *mut u8 };
[INFO] [stdout]     |                 ------------------------------------------------------------------------------------ `app_del` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> crates/grafted-frameworks/src/registry.rs:835:5
[INFO] [stdout]     |
[INFO] [stdout] 835 |     unsafe { std::ptr::addr_of!(STUB_METADATA) as *const u8 }
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `std::intrinsics::transmute` is unsafe and requires unsafe block
[INFO] [stdout]    --> crates/grafted-frameworks/src/registry.rs:892:20
[INFO] [stdout]     |
[INFO] [stdout] 892 |         let f: F = std::mem::transmute(trampoline);
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> crates/grafted-frameworks/src/registry.rs:878:1
[INFO] [stdout]     |
[INFO] [stdout] 878 | / unsafe extern "C" fn safe_getAssociatedTypeWitness(
[INFO] [stdout] 879 | |     request: usize,
[INFO] [stdout] 880 | |     witness_table: *const u8,
[INFO] [stdout] 881 | |     conforming_type: *const u8,
[INFO] [stdout] 882 | |     req_base: *const u8,
[INFO] [stdout] 883 | |     assoc_type: *const u8,
[INFO] [stdout] 884 | | ) -> MetadataResponse {
[INFO] [stdout]     | |_____________________^
[INFO] [stdout]     = note: for more information, see <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] [stderr]    Compiling grafted-dyld v0.1.0 (/opt/rustwide/workdir/crates/grafted-dyld)
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs: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] [stderr]    Compiling grafted-frameworks v0.1.0 (/opt/rustwide/workdir/crates/grafted-frameworks)
[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-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 grafted-cli v0.1.0 (/opt/rustwide/workdir/crates/grafted-cli)
[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: variable `strtab_off` is assigned to, but never used
[INFO] [stdout]    --> crates/grafted-dyld/src/linker.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let mut strtab_off = 0u32;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_strtab_off` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `strtab_off` is never read
[INFO] [stdout]    --> crates/grafted-dyld/src/linker.rs:239:61
[INFO] [stdout]     |
[INFO] [stdout] 239 |                     symtab_off = s.symoff; nsyms = s.nsyms; strtab_off = s.stroff;
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> crates/grafted-dyld/src/shims.rs:829:9
[INFO] [stdout]     |
[INFO] [stdout] 829 |         unsafe { &raw mut grafted_frameworks::registry::__objc_empty_cache } as u64);
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> crates/grafted-dyld/src/shims.rs:831:9
[INFO] [stdout]     |
[INFO] [stdout] 831 |         unsafe { &raw mut grafted_frameworks::registry::__objc_empty_vtable } as u64);
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> crates/grafted-dyld/src/shims.rs:1819:5
[INFO] [stdout]      |
[INFO] [stdout] 1819 |     unsafe { &raw mut BOOTSTRAP_PORT_VAL }
[INFO] [stdout]      |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vwt_noop` is never used
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:16:22
[INFO] [stdout]    |
[INFO] [stdout] 16 | unsafe extern "C" fn vwt_noop(_: *mut u8, _: *mut u8, _: *const u8) -> *mut u8 {
[INFO] [stdout]    |                      ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shim_snprintf_chk` is never used
[INFO] [stdout]     --> crates/grafted-dyld/src/shims.rs:1015:22
[INFO] [stdout]      |
[INFO] [stdout] 1015 | unsafe extern "C" fn shim_snprintf_chk(
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shim_sprintf_chk` is never used
[INFO] [stdout]     --> crates/grafted-dyld/src/shims.rs:1033:22
[INFO] [stdout]      |
[INFO] [stdout] 1033 | unsafe extern "C" fn shim_sprintf_chk(
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:38:40
[INFO] [stdout]    |
[INFO] [stdout] 38 |             *vwt.add(0) = vwt_initcopy as u64;  // initializeBufferWithCopyOfBuffer
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 38 |             *vwt.add(0) = vwt_initcopy as *const () as u64;  // initializeBufferWithCopyOfBuffer
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:39:39
[INFO] [stdout]    |
[INFO] [stdout] 39 |             *vwt.add(1) = vwt_destroy as u64;    // destroy
[INFO] [stdout]    |                                       ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 39 |             *vwt.add(1) = vwt_destroy as *const () as u64;    // destroy
[INFO] [stdout]    |                                       ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:40:40
[INFO] [stdout]    |
[INFO] [stdout] 40 |             *vwt.add(2) = vwt_initcopy as u64;   // initializeWithCopy
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 40 |             *vwt.add(2) = vwt_initcopy as *const () as u64;   // initializeWithCopy
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:41:40
[INFO] [stdout]    |
[INFO] [stdout] 41 |             *vwt.add(3) = vwt_initcopy as u64;   // assignWithCopy
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 41 |             *vwt.add(3) = vwt_initcopy as *const () as u64;   // assignWithCopy
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:42:40
[INFO] [stdout]    |
[INFO] [stdout] 42 |             *vwt.add(4) = vwt_initcopy as u64;   // initializeWithTake
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 42 |             *vwt.add(4) = vwt_initcopy as *const () as u64;   // initializeWithTake
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:43:40
[INFO] [stdout]    |
[INFO] [stdout] 43 |             *vwt.add(5) = vwt_initcopy as u64;   // assignWithTake
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 43 |             *vwt.add(5) = vwt_initcopy as *const () as u64;   // assignWithTake
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:44:40
[INFO] [stdout]    |
[INFO] [stdout] 44 |             *vwt.add(6) = vwt_enum_tag as u64;   // getEnumTagSinglePayload
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 44 |             *vwt.add(6) = vwt_enum_tag as *const () as u64;   // getEnumTagSinglePayload
[INFO] [stdout]    |                                        ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]   --> crates/grafted-dyld/src/linker.rs:45:46
[INFO] [stdout]    |
[INFO] [stdout] 45 |             *vwt.add(7) = vwt_store_enum_tag as u64; // storeEnumTagSinglePayload
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]    |
[INFO] [stdout] 45 |             *vwt.add(7) = vwt_store_enum_tag as *const () as u64; // storeEnumTagSinglePayload
[INFO] [stdout]    |                                              ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] 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] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.93s
[INFO] running `Command { std: "docker" "inspect" "2e8f9338748890d9bb7ce37a4b79500ebfa5ff2b95dd62228e164f3cf2715d4c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e8f9338748890d9bb7ce37a4b79500ebfa5ff2b95dd62228e164f3cf2715d4c", kill_on_drop: false }`
[INFO] [stdout] 2e8f9338748890d9bb7ce37a4b79500ebfa5ff2b95dd62228e164f3cf2715d4c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] c611229ce68cee23370c36920cca2d594d8fb50e7a6b5fe606a1947fab08d274
[INFO] running `Command { std: "docker" "start" "-a" "c611229ce68cee23370c36920cca2d594d8fb50e7a6b5fe606a1947fab08d274", 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] [stderr] warning: `grafted-frameworks` (lib) generated 67 warnings (run `cargo fix --lib -p grafted-frameworks` to apply 12 suggestions)
[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] warning: `grafted-frameworks` (lib test) generated 67 warnings (67 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.79s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/grafted-ac8f3be7a3aaa8bf)
[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]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/grafted_dyld-fb63ca7704fc15da)
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test resolver::tests::test_unknown_dylib ... ok
[INFO] [stdout] test resolver::tests::test_override_resolution ... ok
[INFO] [stdout] test linker::tests::test_strong_missing_errors ... ok
[INFO] [stdout] test linker::tests::test_weak_missing_returns_zero ... ok
[INFO] [stdout] test linker::tests::test_resolve_libsystem_write ... ok
[INFO] [stdout] test linker::tests::test_resolve_short_name ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[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::source_in_common_modes_fires_in_tracking_mode ... ok
[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_tracking_mode_only_fires_there ... ok
[INFO] [stdout] test foundation::notification::tests::nil_name_is_wildcard ... 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 cf::runloop::tests::observers_fire_in_entry_before_waiting_exit_order ... ok
[INFO] [stdout] test foundation::notification::tests::observer_does_not_fire_on_different_name ... ok
[INFO] [stdout] test appkit::pasteboard::tests::clipboard_roundtrip ... ok
[INFO] [stdout] test cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode' (32) panicked at crates/grafted-frameworks/src/cf/runloop.rs:660:9:
[INFO] [stdout] assertion `left == right` failed: source registered in default mode should NOT fire when running in tracking mode
[INFO] [stdout]   left: 1
[INFO] [stdout]  right: 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x650aae4ab02a - std[29689e6404d28ef9]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x650aae4ab02a - std[29689e6404d28ef9]::backtrace_rs::backtrace::trace_unsynchronized::<std[29689e6404d28ef9]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x650aae4ab02a - std[29689e6404d28ef9]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x650aae4ab02a - <<std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[e929cb53b82a81ca]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x650aae4bf03a - <core[e929cb53b82a81ca]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x650aae4bf03a - core[e929cb53b82a81ca]::fmt::write
[INFO] [stdout]    6:     0x650aae4af8a2 - std[29689e6404d28ef9]::io::default_write_fmt::<alloc[9d7caffeb3b5d2c6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:621:11
[INFO] [stdout]    7:     0x650aae4af8a2 - <alloc[9d7caffeb3b5d2c6]::vec::Vec<u8> as std[29689e6404d28ef9]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/io/mod.rs:1976:13
[INFO] [stdout]    8:     0x650aae489c7f - <std[29689e6404d28ef9]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x650aae489c7f - std[29689e6404d28ef9]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x650aae4a33c9 - std[29689e6404d28ef9]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x650aae42f8dc - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   12:     0x650aae42f8dc - test[a24b3028667022f7]::test_main_inner::<test[a24b3028667022f7]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x650aae4a3582 - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn for<'a, 'b> core[e929cb53b82a81ca]::ops::function::Fn<(&'a std[29689e6404d28ef9]::panic::PanicHookInfo<'b>,), Output = ()> + core[e929cb53b82a81ca]::marker::Send + core[e929cb53b82a81ca]::marker::Sync> as core[e929cb53b82a81ca]::ops::function::Fn<(&std[29689e6404d28ef9]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2285:9
[INFO] [stdout]   14:     0x650aae4a3582 - std[29689e6404d28ef9]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x650aae489d38 - std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x650aae47ef49 - std[29689e6404d28ef9]::sys::backtrace::__rust_end_short_backtrace::<std[29689e6404d28ef9]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x650aae48aa4d - __rustc[3aed6af316653e63]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x650aae4bf7bc - core[e929cb53b82a81ca]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x650aae4bf6a3 - core[e929cb53b82a81ca]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:434:23
[INFO] [stdout]   20:     0x650aae47eefa - core[e929cb53b82a81ca]::panicking::assert_failed::<u32, u32>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x650aae40e2b2 - grafted_frameworks[426177eb171acf39]::cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/grafted-frameworks/src/cf/runloop.rs:660:9
[INFO] [stdout]   22:     0x650aae40c107 - grafted_frameworks[426177eb171acf39]::cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/crates/grafted-frameworks/src/cf/runloop.rs:647:63
[INFO] [stdout]   23:     0x650aae41b1b6 - <grafted_frameworks[426177eb171acf39]::cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode::{closure#0} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x650aae422bbb - <fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x650aae422bbb - test[a24b3028667022f7]::__rust_begin_short_backtrace::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, fn() -> core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:724:18
[INFO] [stdout]   26:     0x650aae4303ab - test[a24b3028667022f7]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:74
[INFO] [stdout]   27:     0x650aae4303ab - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x650aae4303ab - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x650aae4303ab - std[29689e6404d28ef9]::panicking::catch_unwind::<core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>, core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x650aae4303ab - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<test[a24b3028667022f7]::run_test_in_process::{closure#0}>, core[e929cb53b82a81ca]::result::Result<(), alloc[9d7caffeb3b5d2c6]::string::String>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x650aae4303ab - test[a24b3028667022f7]::run_test_in_process
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:747:27
[INFO] [stdout]   32:     0x650aae4303ab - test[a24b3028667022f7]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:668:43
[INFO] [stdout]   33:     0x650aae429ac4 - test[a24b3028667022f7]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/test/src/lib.rs:698:41
[INFO] [stdout]   34:     0x650aae429ac4 - std[29689e6404d28ef9]::sys::backtrace::__rust_begin_short_backtrace::<test[a24b3028667022f7]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x650aae432fb2 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x650aae432fb2 - <core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x650aae432fb2 - std[29689e6404d28ef9]::panicking::catch_unwind::do_call::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x650aae432fb2 - std[29689e6404d28ef9]::panicking::catch_unwind::<(), core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x650aae432fb2 - std[29689e6404d28ef9]::panic::catch_unwind::<core[e929cb53b82a81ca]::panic::unwind_safe::AssertUnwindSafe<std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x650aae432fb2 - std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked::<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x650aae432fb2 - <std[29689e6404d28ef9]::thread::lifecycle::spawn_unchecked<test[a24b3028667022f7]::run_test::{closure#1}, ()>::{closure#1} as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x650aae4aa93f - <alloc[9d7caffeb3b5d2c6]::boxed::Box<dyn core[e929cb53b82a81ca]::ops::function::FnOnce<(), Output = ()> + core[e929cb53b82a81ca]::marker::Send> as core[e929cb53b82a81ca]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/alloc/src/boxed.rs:2271:9
[INFO] [stdout]   43:     0x650aae4aa93f - <std[29689e6404d28ef9]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ec6f9a5b4413f74386267ef8efc93712c2ce6db6/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x7ed9f482aaa4 - <unknown>
[INFO] [stdout]   45:     0x7ed9f48b7a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     cf::runloop::tests::source_in_default_mode_does_not_fire_in_tracking_mode
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 10 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `-p grafted-frameworks --lib`
[INFO] running `Command { std: "docker" "inspect" "c611229ce68cee23370c36920cca2d594d8fb50e7a6b5fe606a1947fab08d274", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c611229ce68cee23370c36920cca2d594d8fb50e7a6b5fe606a1947fab08d274", kill_on_drop: false }`
[INFO] [stdout] c611229ce68cee23370c36920cca2d594d8fb50e7a6b5fe606a1947fab08d274
