diff --git a/src/ld_so/linker.rs b/src/ld_so/linker.rs index a835a2e9177d0bf57ce352b8963b246fb54574cc..0f42d79eb4561fbbc846489d1d5e9cb45a8470ec 100644 --- a/src/ld_so/linker.rs +++ b/src/ld_so/linker.rs @@ -865,16 +865,6 @@ impl Linker { } unsafe extern "C" fn call_inits_finis(addr: usize) { - #[cfg(target_arch = "x86_64")] - asm!(" - cmp qword ptr [rdi], 0 - je end - call [rdi] -end: nop - " - : - : - : - : "intel", "volatile" - ); + let func = transmute::<usize, *const Option<extern "C" fn()>>(addr); + (*func).map(|x| x()); }