From 1717cc42ef6c5ec0e7d652f6b51cd7fc64990a71 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Wed, 14 Nov 2018 15:04:20 +0100 Subject: [PATCH] Fix allocator shim abi --- src/allocator.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/allocator.rs b/src/allocator.rs index d84838634e7..2474e014670 100644 --- a/src/allocator.rs +++ b/src/allocator.rs @@ -39,18 +39,24 @@ pub fn codegen(module: &mut Module, kind: AllocatorKind) } }; - let sig = Signature { + let mut sig = Signature { call_conv: CallConv::Fast, params: arg_tys.iter().cloned().map(AbiParam::new).collect(), returns: output.into_iter().map(AbiParam::new).collect(), }; + let caller_name = format!("__rust_{}", method.name); + let callee_name = kind.fn_name(method.name); + //eprintln!("Codegen allocator shim {} -> {} ({:?} -> {:?})", caller_name, callee_name, sig.params, sig.returns); + + sig.call_conv = CallConv::Fast; // "rust" abi let func_id = module - .declare_function(&format!("__rust_{}", method.name), Linkage::Export, &sig) + .declare_function(&caller_name, Linkage::Export, &sig) .unwrap(); + sig.call_conv = CallConv::SystemV; // "C" abi let callee_func_id = module - .declare_function(&kind.fn_name(method.name), Linkage::Import, &sig) + .declare_function(&callee_name, Linkage::Import, &sig) .unwrap(); let mut ctx = Context::new();