diff --git a/cranelift/simplejit/src/backend.rs b/cranelift/simplejit/src/backend.rs index 71dd5c07de..eb6610907c 100644 --- a/cranelift/simplejit/src/backend.rs +++ b/cranelift/simplejit/src/backend.rs @@ -595,7 +595,18 @@ impl<'simple_jit_backend> Module for SimpleJITModule { .as_ref() .unwrap() .perform_relocations( - |name| unreachable!("non GOT or PLT relocation in function {} to {}", id, name), + |name| match *name { + ir::ExternalName::User { .. } => { + unreachable!("non GOT or PLT relocation in function {} to {}", id, name) + } + ir::ExternalName::LibCall(ref libcall) => self + .libcall_plt_entries + .get(libcall) + .unwrap_or_else(|| panic!("can't resolve libcall {}", libcall)) + .as_ptr() + .cast::(), + _ => panic!("invalid ExternalName {}", name), + }, |name| self.get_got_address(name), |name| self.get_plt_address(name), );