From cd3247ac9f4406832f385e7021f20c642d06e3b6 Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Thu, 12 Jan 2023 09:02:42 -0800 Subject: [PATCH] It lives! Thanks to the cranelift team. --- .gitignore | 4 +++- .gitmodules | 3 +++ Cargo.toml | 10 +++++----- src/bin.rs | 9 ++++++++- vendor/wasmtime | 1 + 5 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 .gitmodules create mode 160000 vendor/wasmtime diff --git a/.gitignore b/.gitignore index c48cd87..1547085 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /target Cargo.lock -**/*.o \ No newline at end of file +**/*.o +test +*.dSYM diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b56c49e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vendor/wasmtime"] + path = vendor/wasmtime + url = https://github.com/bytecodealliance/wasmtime diff --git a/Cargo.toml b/Cargo.toml index 9592203..308bb19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,11 +16,11 @@ path = "src/bin.rs" clap = { version = "^3.0.14", features = ["derive"] } codespan = "0.11.1" codespan-reporting = "0.11.1" -cranelift-codegen = "^0.89.2" -cranelift-frontend = "^0.89.2" -cranelift-module = "^0.89.2" -cranelift-native = "^0.89.2" -cranelift-object = "^0.89.2" +cranelift-codegen = { path = "vendor/wasmtime/cranelift/codegen" } +cranelift-frontend = { path = "vendor/wasmtime/cranelift/frontend" } +cranelift-module = { path = "vendor/wasmtime/cranelift/module" } +cranelift-native = { path = "vendor/wasmtime/cranelift/native" } +cranelift-object = { path = "vendor/wasmtime/cranelift/object" } internment = { version = "0.7.0", default-features = false, features = ["arc"] } lalrpop-util = "^0.19.7" lazy_static = "^1.4.0" diff --git a/src/bin.rs b/src/bin.rs index c04e036..6717e3a 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -3,6 +3,7 @@ use codespan_reporting::diagnostic::Diagnostic; use codespan_reporting::files::SimpleFiles; use codespan_reporting::term; use codespan_reporting::term::termcolor::{ColorChoice, StandardStream}; +use cranelift_codegen::settings::{Configurable, SetError}; use cranelift_codegen::{isa, settings, CodegenError}; use cranelift_module::{default_libcall_names, ModuleError}; use cranelift_object::{object, ObjectBuilder, ObjectModule}; @@ -44,6 +45,9 @@ enum MainError { #[error(transparent)] Backend(#[from] BackendError), + + #[error(transparent)] + SettingsError(#[from] SetError), } fn main() -> Result<(), MainError> { @@ -92,7 +96,10 @@ fn main() -> Result<(), MainError> { .unwrap(); let platform = Triple::host(); - let isa = isa::lookup(platform.clone())?.finish(settings::Flags::new(settings::builder()))?; + let isa_builder= isa::lookup(platform.clone())?; + let mut settings_builder = settings::builder(); + settings_builder.set("is_pic", "true")?; + let isa = isa_builder.finish(settings::Flags::new(settings_builder))?; let object_builder = ObjectBuilder::new(isa, "example", default_libcall_names())?; let mut object_module = ObjectModule::new(object_builder); let rtfuns = RuntimeFunctions::new(&platform, &mut object_module)?; diff --git a/vendor/wasmtime b/vendor/wasmtime new file mode 160000 index 0000000..b485e86 --- /dev/null +++ b/vendor/wasmtime @@ -0,0 +1 @@ +Subproject commit b485e86f5c865d966dd256b6a7a4b57fc6cda304