mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-30 00:51:34 +00:00
Merge #887
887: Get aggressive about running cargo check over all packages with all features. r=nlewycky a=nlewycky Fixes the one issue uncovered. The capstone disassembling support in the LLVM backend was broken. Fixed by removing it. Instead, use the `--llvm-object-file` flag to get a finished object file to disassemble with any disassembler. Co-authored-by: Nick Lewycky <nick@wasmer.io> Co-authored-by: Mark McCaskey <mark@wasmer.io>
This commit is contained in:
19
Cargo.lock
generated
19
Cargo.lock
generated
@ -115,22 +115,6 @@ dependencies = [
|
|||||||
"ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "capstone"
|
|
||||||
version = "0.6.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
dependencies = [
|
|
||||||
"capstone-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "capstone-sys"
|
|
||||||
version = "0.10.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
dependencies = [
|
|
||||||
"cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cargo_toml"
|
name = "cargo_toml"
|
||||||
version = "0.6.4"
|
version = "0.6.4"
|
||||||
@ -1579,7 +1563,6 @@ name = "wasmer-llvm-backend"
|
|||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"capstone 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"inkwell 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm8-0)",
|
"inkwell 0.1.0 (git+https://github.com/wasmerio/inkwell?branch=llvm8-0)",
|
||||||
@ -1810,8 +1793,6 @@ dependencies = [
|
|||||||
"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
|
"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
|
||||||
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
||||||
"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
|
"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
|
||||||
"checksum capstone 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "031ba51c39151a1d6336ec859646153187204b0147c7b3f6fe2de636f1b8dbb3"
|
|
||||||
"checksum capstone-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fae25eddcb80e24f98c35952c37a91ff7f8d0f60dbbdafb9763e8d5cc566b8d7"
|
|
||||||
"checksum cargo_toml 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "097f5ce64ba566a83d9d914fd005de1e5937fdd57d8c5d99a7593040955d75a9"
|
"checksum cargo_toml 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "097f5ce64ba566a83d9d914fd005de1e5937fdd57d8c5d99a7593040955d75a9"
|
||||||
"checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
|
"checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427"
|
||||||
"checksum cbindgen 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9daec6140ab4dcd38c3dd57e580b59a621172a526ac79f1527af760a55afeafd"
|
"checksum cbindgen 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9daec6140ab4dcd38c3dd57e580b59a621172a526ac79f1527af760a55afeafd"
|
||||||
|
53
Makefile
53
Makefile
@ -140,20 +140,65 @@ install:
|
|||||||
|
|
||||||
# Checks
|
# Checks
|
||||||
check-bench-singlepass:
|
check-bench-singlepass:
|
||||||
cargo bench --all --no-run --no-default-features --features "backend-singlepass" \
|
cargo check --benches --all --no-default-features --features "backend-singlepass" \
|
||||||
--exclude wasmer-clif-backend --exclude wasmer-llvm-backend --exclude wasmer-kernel-loader
|
--exclude wasmer-clif-backend --exclude wasmer-llvm-backend --exclude wasmer-kernel-loader
|
||||||
check-bench-clif:
|
check-bench-clif:
|
||||||
cargo bench --all --no-run --no-default-features --features "backend-cranelift" \
|
cargo check --benches --all --no-default-features --features "backend-cranelift" \
|
||||||
--exclude wasmer-singlepass-backend --exclude wasmer-llvm-backend --exclude wasmer-kernel-loader \
|
--exclude wasmer-singlepass-backend --exclude wasmer-llvm-backend --exclude wasmer-kernel-loader \
|
||||||
--exclude wasmer-middleware-common-tests
|
--exclude wasmer-middleware-common-tests
|
||||||
check-bench-llvm:
|
check-bench-llvm:
|
||||||
cargo bench --all --no-run --no-default-features --features "backend-llvm" \
|
cargo check --benches --all --no-default-features --features "backend-llvm" \
|
||||||
--exclude wasmer-singlepass-backend --exclude wasmer-clif-backend --exclude wasmer-kernel-loader
|
--exclude wasmer-singlepass-backend --exclude wasmer-clif-backend --exclude wasmer-kernel-loader
|
||||||
|
|
||||||
check-bench: check-bench-singlepass check-bench-llvm
|
check-bench: check-bench-singlepass check-bench-llvm
|
||||||
|
|
||||||
|
# TODO: We wanted `--workspace --exclude wasmer-runtime`, but can't due
|
||||||
|
# to https://github.com/rust-lang/cargo/issues/6745 .
|
||||||
|
NOT_RUNTIME_CRATES = -p wasmer-clif-backend -p wasmer-singlepass-backend -p wasmer-middleware-common -p wasmer-runtime-core -p wasmer-emscripten -p wasmer-llvm-backend -p wasmer-wasi -p wasmer-kernel-loader -p wasmer-dev-utils -p wasmer-wasi-tests -p wasmer-middleware-common-tests -p wasmer-emscripten-tests
|
||||||
|
RUNTIME_CHECK = cargo check --manifest-path lib/runtime/Cargo.toml --no-default-features
|
||||||
check: check-bench
|
check: check-bench
|
||||||
cargo check --release --features backend-singlepass,backend-llvm,loader-kernel,debug
|
cargo check $(NOT_RUNTIME_CRATES)
|
||||||
|
cargo check --release $(NOT_RUNTIME_CRATES)
|
||||||
|
cargo check --all-features $(NOT_RUNTIME_CRATES)
|
||||||
|
cargo check --release --all-features $(NOT_RUNTIME_CRATES)
|
||||||
|
# wasmer-runtime doesn't work with all backends enabled at once.
|
||||||
|
#
|
||||||
|
# We test using manifest-path directly so as to disable the default.
|
||||||
|
# `--no-default-features` only disables the default features in the
|
||||||
|
# current package, not the package specified by `-p`. This is
|
||||||
|
# intentional.
|
||||||
|
#
|
||||||
|
# Test default features, test 'debug' feature only in non-release
|
||||||
|
# builds, test as many combined features as possible with each backend
|
||||||
|
# as default, and test a minimal set of features with only one backend
|
||||||
|
# at a time.
|
||||||
|
cargo check --manifest-path lib/runtime/Cargo.toml
|
||||||
|
cargo check --release --manifest-path lib/runtime/Cargo.toml
|
||||||
|
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=cranelift,cache,debug,llvm,singlepass,default-backend-singlepass
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=cranelift,cache,llvm,singlepass,default-backend-singlepass
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=cranelift,cache,debug,llvm,singlepass,default-backend-cranelift
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=cranelift,cache,llvm,singlepass,default-backend-cranelift
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=cranelift,cache,debug,llvm,singlepass,default-backend-llvm
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=cranelift,cache,llvm,singlepass,default-backend-llvm
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=singlepass,default-backend-singlepass,debug
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=singlepass,default-backend-singlepass
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=cranelift,default-backend-cranelift,debug
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=cranelift,default-backend-cranelift
|
||||||
|
$(RUNTIME_CHECK) \
|
||||||
|
--features=llvm,default-backend-llvm,debug
|
||||||
|
$(RUNTIME_CHECK) --release \
|
||||||
|
--features=llvm,default-backend-llvm
|
||||||
|
|
||||||
# Release
|
# Release
|
||||||
release:
|
release:
|
||||||
|
@ -11,7 +11,6 @@ wasmparser = "0.39.1"
|
|||||||
smallvec = "0.6"
|
smallvec = "0.6"
|
||||||
goblin = "0.0.24"
|
goblin = "0.0.24"
|
||||||
libc = "0.2.60"
|
libc = "0.2.60"
|
||||||
capstone = { version = "0.6", optional = true }
|
|
||||||
byteorder = "1"
|
byteorder = "1"
|
||||||
|
|
||||||
[dependencies.inkwell]
|
[dependencies.inkwell]
|
||||||
@ -38,4 +37,3 @@ wabt = "0.9.1"
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
debug = ["wasmer-runtime-core/debug"]
|
debug = ["wasmer-runtime-core/debug"]
|
||||||
disasm = ["capstone"]
|
|
||||||
|
@ -477,33 +477,3 @@ impl CacheGen for LLVMCache {
|
|||||||
Ok(([].as_ref().into(), memory))
|
Ok(([].as_ref().into(), memory))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "disasm")]
|
|
||||||
unsafe fn disass_ptr(ptr: *const u8, size: usize, inst_count: usize) {
|
|
||||||
use capstone::arch::BuildsCapstone;
|
|
||||||
let mut cs = capstone::Capstone::new() // Call builder-pattern
|
|
||||||
.x86() // X86 architecture
|
|
||||||
.mode(capstone::arch::x86::ArchMode::Mode64) // 64-bit mode
|
|
||||||
.detail(true) // Generate extra instruction details
|
|
||||||
.build()
|
|
||||||
.expect("Failed to create Capstone object");
|
|
||||||
|
|
||||||
// Get disassembled instructions
|
|
||||||
let insns = cs
|
|
||||||
.disasm_count(
|
|
||||||
std::slice::from_raw_parts(ptr, size),
|
|
||||||
ptr as u64,
|
|
||||||
inst_count,
|
|
||||||
)
|
|
||||||
.expect("Failed to disassemble");
|
|
||||||
|
|
||||||
println!("count = {}", insns.len());
|
|
||||||
for insn in insns.iter() {
|
|
||||||
println!(
|
|
||||||
"0x{:x}: {:6} {}",
|
|
||||||
insn.address(),
|
|
||||||
insn.mnemonic().unwrap_or(""),
|
|
||||||
insn.op_str().unwrap_or("")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user