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)",
|
||||
]
|
||||
|
||||
[[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]]
|
||||
name = "cargo_toml"
|
||||
version = "0.6.4"
|
||||
@ -1579,7 +1563,6 @@ name = "wasmer-llvm-backend"
|
||||
version = "0.8.0"
|
||||
dependencies = [
|
||||
"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)",
|
||||
"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)",
|
||||
@ -1810,8 +1793,6 @@ dependencies = [
|
||||
"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 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 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"
|
||||
|
53
Makefile
53
Makefile
@ -140,20 +140,65 @@ install:
|
||||
|
||||
# Checks
|
||||
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
|
||||
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-middleware-common-tests
|
||||
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
|
||||
|
||||
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
|
||||
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:
|
||||
|
@ -11,7 +11,6 @@ wasmparser = "0.39.1"
|
||||
smallvec = "0.6"
|
||||
goblin = "0.0.24"
|
||||
libc = "0.2.60"
|
||||
capstone = { version = "0.6", optional = true }
|
||||
byteorder = "1"
|
||||
|
||||
[dependencies.inkwell]
|
||||
@ -38,4 +37,3 @@ wabt = "0.9.1"
|
||||
|
||||
[features]
|
||||
debug = ["wasmer-runtime-core/debug"]
|
||||
disasm = ["capstone"]
|
||||
|
@ -477,33 +477,3 @@ impl CacheGen for LLVMCache {
|
||||
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