use crate::abi::Endian; use crate::spec::{LinkerFlavor, MergeFunctions, PanicStrategy, TargetOptions}; pub fn opts(endian: Endian) -> TargetOptions { TargetOptions { allow_asm: true, endian, linker_flavor: LinkerFlavor::BpfLinker, atomic_cas: false, dynamic_linking: true, no_builtins: true, panic_strategy: PanicStrategy::Abort, position_independent_executables: true, // Disable MergeFunctions since: // - older kernels don't support bpf-to-bpf calls // - on newer kernels, userspace still needs to relocate before calling // BPF_PROG_LOAD and not all BPF libraries do that yet merge_functions: MergeFunctions::Disabled, obj_is_bitcode: true, requires_lto: false, singlethread: true, max_atomic_width: Some(64), ..Default::default() } }