mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-13 07:24:00 +00:00
Update Cranelift for SimpleJIT changes
This commit is contained in:
parent
96c4542dc3
commit
6eaa502049
20
Cargo.lock
generated
20
Cargo.lock
generated
@ -50,7 +50,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-bforest"
|
name = "cranelift-bforest"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-entity",
|
"cranelift-entity",
|
||||||
]
|
]
|
||||||
@ -58,7 +58,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen"
|
name = "cranelift-codegen"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"cranelift-bforest",
|
"cranelift-bforest",
|
||||||
@ -76,7 +76,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-meta"
|
name = "cranelift-codegen-meta"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen-shared",
|
"cranelift-codegen-shared",
|
||||||
"cranelift-entity",
|
"cranelift-entity",
|
||||||
@ -85,17 +85,17 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-codegen-shared"
|
name = "cranelift-codegen-shared"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-entity"
|
name = "cranelift-entity"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-frontend"
|
name = "cranelift-frontend"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"log",
|
"log",
|
||||||
@ -106,7 +106,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-module"
|
name = "cranelift-module"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@ -118,7 +118,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-native"
|
name = "cranelift-native"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"raw-cpuid",
|
"raw-cpuid",
|
||||||
@ -128,7 +128,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-object"
|
name = "cranelift-object"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
@ -141,7 +141,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "cranelift-simplejit"
|
name = "cranelift-simplejit"
|
||||||
version = "0.68.0"
|
version = "0.68.0"
|
||||||
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#b326f29885ec0f530230bf550164f805ffb04e41"
|
source = "git+https://github.com/bytecodealliance/wasmtime/?branch=main#19640367dbf0da7093e61add3306c8d092644fb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cranelift-codegen",
|
"cranelift-codegen",
|
||||||
"cranelift-entity",
|
"cranelift-entity",
|
||||||
|
@ -76,7 +76,7 @@ impl WriterRelocate {
|
|||||||
#[cfg(feature = "jit")]
|
#[cfg(feature = "jit")]
|
||||||
pub(super) fn relocate_for_jit(
|
pub(super) fn relocate_for_jit(
|
||||||
mut self,
|
mut self,
|
||||||
jit_product: &cranelift_simplejit::SimpleJITProduct,
|
jit_module: &cranelift_simplejit::SimpleJITModule,
|
||||||
) -> Vec<u8> {
|
) -> Vec<u8> {
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
@ -84,8 +84,9 @@ impl WriterRelocate {
|
|||||||
match reloc.name {
|
match reloc.name {
|
||||||
super::DebugRelocName::Section(_) => unreachable!(),
|
super::DebugRelocName::Section(_) => unreachable!(),
|
||||||
super::DebugRelocName::Symbol(sym) => {
|
super::DebugRelocName::Symbol(sym) => {
|
||||||
let addr = jit_product
|
let addr = jit_module.get_finalized_function(
|
||||||
.lookup_func(cranelift_module::FuncId::from_u32(sym.try_into().unwrap()));
|
cranelift_module::FuncId::from_u32(sym.try_into().unwrap()),
|
||||||
|
);
|
||||||
let val = (addr as u64 as i64 + reloc.addend) as u64;
|
let val = (addr as u64 as i64 + reloc.addend) as u64;
|
||||||
self.writer
|
self.writer
|
||||||
.write_udata_at(reloc.offset as usize, val, reloc.size)
|
.write_udata_at(reloc.offset as usize, val, reloc.size)
|
||||||
|
@ -80,7 +80,7 @@ impl<'tcx> UnwindContext<'tcx> {
|
|||||||
#[cfg(feature = "jit")]
|
#[cfg(feature = "jit")]
|
||||||
pub(crate) unsafe fn register_jit(
|
pub(crate) unsafe fn register_jit(
|
||||||
self,
|
self,
|
||||||
jit_product: &cranelift_simplejit::SimpleJITProduct,
|
jit_module: &cranelift_simplejit::SimpleJITModule,
|
||||||
) -> Option<UnwindRegistry> {
|
) -> Option<UnwindRegistry> {
|
||||||
let mut eh_frame = EhFrame::from(super::emit::WriterRelocate::new(super::target_endian(
|
let mut eh_frame = EhFrame::from(super::emit::WriterRelocate::new(super::target_endian(
|
||||||
self.tcx,
|
self.tcx,
|
||||||
@ -91,7 +91,7 @@ impl<'tcx> UnwindContext<'tcx> {
|
|||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut eh_frame = eh_frame.0.relocate_for_jit(jit_product);
|
let mut eh_frame = eh_frame.0.relocate_for_jit(jit_module);
|
||||||
|
|
||||||
// GCC expects a terminating "empty" length, so write a 0 length at the end of the table.
|
// GCC expects a terminating "empty" length, so write a 0 length at the end of the table.
|
||||||
eh_frame.extend(&[0, 0, 0, 0]);
|
eh_frame.extend(&[0, 0, 0, 0]);
|
||||||
|
@ -81,11 +81,11 @@ pub(super) fn run_jit(tcx: TyCtxt<'_>) -> ! {
|
|||||||
|
|
||||||
tcx.sess.abort_if_errors();
|
tcx.sess.abort_if_errors();
|
||||||
|
|
||||||
let jit_product = jit_module.finish();
|
jit_module.finalize_definitions();
|
||||||
|
|
||||||
let _unwind_register_guard = unsafe { unwind_context.register_jit(&jit_product) };
|
let _unwind_register_guard = unsafe { unwind_context.register_jit(&jit_module) };
|
||||||
|
|
||||||
let finalized_main: *const u8 = jit_product.lookup_func(main_func_id);
|
let finalized_main: *const u8 = jit_module.get_finalized_function(main_func_id);
|
||||||
|
|
||||||
println!("Rustc codegen cranelift will JIT run the executable, because --jit was passed");
|
println!("Rustc codegen cranelift will JIT run the executable, because --jit was passed");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user