Skip to content

staticlibs not supported with cargo +nightly build -Zbuild-std --target bpfel-unknown-none --release #149432

@clairechingching

Description

@clairechingching

Code

#![cfg_attr(target_arch = "bpf", no_std)]
#[link(name = "compiler_builtins", kind = "static")]
extern "C" {}

#[cfg(target_arch = "bpf")]
#[panic_handler]
fn panic(_: &core::panic::PanicInfo) -> ! {
    unsafe { core::hint::unreachable_unchecked() }
}

pub fn sol_log_data(data: &[&[u8]]) {
    let sol_log_data: unsafe extern "C" fn(data: *const u8, len: u64) = unsafe { core::mem::transmute(0x7317b434_usize) };
    unsafe { sol_log_data(data.as_ptr() as *const u8, data.len() as u64) }
}

// #[no_mangle]
// fn __multi3(a: u128, b: u128) -> u128 {
//     0
// }

extern "C" {
    fn __multi3(a: u128, b: u128) -> u128;
}


// #[used]
// static _KEEP_MULTI3: unsafe fn(u128, u128) -> u128 = __multi3;

#[unsafe(no_mangle)]
pub fn entrypoint(input: *mut u8) -> u64 {
    let y: u128 = unsafe { __multi3(*(input.add(0x0010) as *const u128), 0x05) };
    let x: u128 = unsafe { (*(input.add(0x0010) as *const u128)) * 0x05 };
    sol_log_data(&[x.to_le_bytes().as_ref()]);
    sol_log_data(&[y.to_le_bytes().as_ref()]);
    0
}

#[cfg(test)]
mod tests {
    use mollusk_svm::{Mollusk, result::Check};
    use solana_instruction::Instruction;

    #[test]
    pub fn hello_world() {
        let mollusk = Mollusk::new(&[2u8;32].into(), "target/bpfel-unknown-none/release/libupstream_u128_test");
        mollusk.process_and_validate_instruction(&Instruction {
            program_id: [2u8;32].into(),
            accounts: vec![],
            data: vec![0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]
        }, &vec![], &[
            Check::success()
        ]);
    }
}

Meta

rustc --version --verbose:

rustc 1.91.1 (ed61e7d7e 2025-11-07)
binary: rustc
commit-hash: ed61e7d7e242494fb7057f2657300d9e77bb4fcb
commit-date: 2025-11-07
host: aarch64-apple-darwin
release: 1.91.1
LLVM version: 21.1.2

Error output

thread 'rustc' panicked at compiler/rustc_codegen_ssa/src/back/linker.rs:2077:9:
staticlibs not supported
stack backtrace:
   0:        0x110a94d08 - std::backtrace::Backtrace::create::h19cedfa09f31f796
   1:        0x10eadc4a0 - std[4f80e808129b856b]::panicking::update_hook::<alloc[9ea57ca06ed6a28a]::boxed::Box<rustc_driver_impl[2dca77a83c5d10c3]::install_ice_hook::{closure#1}>>::{closure#0}
   2:        0x110a95bd0 - std::panicking::panic_with_hook::h4f9c1775cdfebc95
   3:        0x110a95878 - std::panicking::panic_handler::{{closure}}::hff2f3da0c310d131
   4:        0x110a8f2a4 - std::sys::backtrace::__rust_end_short_backtrace::h8ac6d0476adddd3e
   5:        0x110a73e24 - __rustc[5b69f54ba72bd95a]::rust_begin_unwind
   6:        0x1137fa06c - core::panicking::panic_fmt::h4af89295c468f215
   7:        0x113851ba8 - <rustc_codegen_ssa[df4a98393291ceee]::back::linker::BpfLinker as rustc_codegen_ssa[df4a98393291ceee]::back::linker::Linker>::link_staticlib_by_name
   8:        0x10e8e6ef8 - rustc_codegen_ssa[df4a98393291ceee]::back::link::add_native_libs_from_crate
   9:        0x10e8e0bbc - rustc_codegen_ssa[df4a98393291ceee]::back::link::linker_with_args
  10:        0x10e8d0604 - rustc_codegen_ssa[df4a98393291ceee]::back::link::link_natively
  11:        0x10e8cc470 - rustc_codegen_ssa[df4a98393291ceee]::back::link::link_binary
  12:        0x10f3a2750 - <rustc_interface[2f747f6d882c34ea]::queries::Linker>::link
  13:        0x10eada9dc - rustc_interface[2f747f6d882c34ea]::interface::run_compiler::<(), rustc_driver_impl[2dca77a83c5d10c3]::run_compiler::{closure#0}>::{closure#1}
  14:        0x10eace0dc - std[4f80e808129b856b]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[2f747f6d882c34ea]::util::run_in_thread_with_globals<rustc_interface[2f747f6d882c34ea]::util::run_in_thread_pool_with_globals<rustc_interface[2f747f6d882c34ea]::interface::run_compiler<(), rustc_driver_impl[2dca77a83c5d10c3]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  15:        0x10eae0fa0 - <<std[4f80e808129b856b]::thread::Builder>::spawn_unchecked_<rustc_interface[2f747f6d882c34ea]::util::run_in_thread_with_globals<rustc_interface[2f747f6d882c34ea]::util::run_in_thread_pool_with_globals<rustc_interface[2f747f6d882c34ea]::interface::run_compiler<(), rustc_driver_impl[2dca77a83c5d10c3]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[c3559bc9615a0249]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  16:        0x110a8bf38 - std::sys::thread::unix::Thread::new::thread_start::h261e28af5627e4c5
  17:        0x188ae2c0c - __pthread_cond_wait


rustc version: 1.93.0-nightly (b6d7ff3aa 2025-11-14)
platform: aarch64-apple-darwin%
Backtrace

<backtrace>

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linkageArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️O-eBPFTarget: I heard you liked code execution so I put some code execution in your code executionT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions