From 5a26d1d92ee6397f5167e92be1d5d064be473b82 Mon Sep 17 00:00:00 2001 From: angie Date: Sun, 20 Oct 2024 18:04:26 -0300 Subject: [PATCH 1/5] Reduce dependencies for no features --- objdiff-core/Cargo.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/objdiff-core/Cargo.toml b/objdiff-core/Cargo.toml index 7b4deb97..c9aa1377 100644 --- a/objdiff-core/Cargo.toml +++ b/objdiff-core/Cargo.toml @@ -34,19 +34,19 @@ features = ["all"] anyhow = "1.0" bimap = { version = "0.6", features = ["serde"], optional = true } byteorder = "1.5" -filetime = "0.2" -flagset = "0.4" -log = "0.4" -memmap2 = "0.9" +filetime = { version = "0.2", optional = true } +flagset = { version = "0.4", optional = true } +log = { version = "0.4", optional = true } +memmap2 = { version = "0.9", optional = true } num-traits = "0.2" object = { version = "0.36", features = ["read_core", "std", "elf", "pe"], default-features = false } pbjson = { version = "0.7", optional = true } prost = { version = "0.13", optional = true } -serde = { version = "1.0", features = ["derive"] } -similar = { version = "2.6", default-features = false } -strum = { version = "0.26", features = ["derive"] } -wasm-bindgen = "0.2" -tsify-next = { version = "0.5", default-features = false, features = ["js"] } +serde = { version = "1.0", features = ["derive"], optional = true } +similar = { version = "2.6", default-features = false, optional = true } +strum = { version = "0.26", features = ["derive"], optional = true } +wasm-bindgen = { version = "0.2", optional = true } +tsify-next = { version = "0.5", default-features = false, features = ["js"], optional = true } console_log = { version = "1.0", optional = true } console_error_panic_hook = { version = "0.1", optional = true } From b11bb095b2468246595c80b2a0329058ec196461 Mon Sep 17 00:00:00 2001 From: angie Date: Sun, 20 Oct 2024 18:24:42 -0300 Subject: [PATCH 2/5] Add missing deps to every feature --- objdiff-core/Cargo.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/objdiff-core/Cargo.toml b/objdiff-core/Cargo.toml index c9aa1377..5056a9e9 100644 --- a/objdiff-core/Cargo.toml +++ b/objdiff-core/Cargo.toml @@ -17,15 +17,15 @@ crate-type = ["cdylib", "rlib"] [features] all = ["config", "dwarf", "mips", "ppc", "x86", "arm", "bindings"] -any-arch = ["bimap"] # Implicit, used to check if any arch is enabled -config = ["bimap", "globset", "semver", "serde_json", "serde_yaml"] +any-arch = ["bimap", "config", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:tsify-next", "dep:wasm-bindgen", "memmap2"] # Implicit, used to check if any arch is enabled +config = ["bimap", "globset", "semver", "serde_json", "serde_yaml", "dep:serde", "dep:filetime"] dwarf = ["gimli"] mips = ["any-arch", "rabbitizer"] ppc = ["any-arch", "cwdemangle", "cwextab", "ppc750cl"] x86 = ["any-arch", "cpp_demangle", "iced-x86", "msvc-demangler"] arm = ["any-arch", "cpp_demangle", "unarm", "arm-attr"] -bindings = ["serde_json", "prost", "pbjson"] -wasm = ["bindings", "console_error_panic_hook", "console_log"] +bindings = ["serde_json", "prost", "pbjson", "dep:serde"] +wasm = ["bindings", "console_error_panic_hook", "console_log", "dep:wasm-bindgen"] [package.metadata.docs.rs] features = ["all"] From 4741ee22455e4820c4e88a08eb437e0d5645aeef Mon Sep 17 00:00:00 2001 From: angie Date: Sun, 20 Oct 2024 18:30:00 -0300 Subject: [PATCH 3/5] Add missing `dep:`s --- objdiff-core/Cargo.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/objdiff-core/Cargo.toml b/objdiff-core/Cargo.toml index 5056a9e9..87273578 100644 --- a/objdiff-core/Cargo.toml +++ b/objdiff-core/Cargo.toml @@ -17,15 +17,15 @@ crate-type = ["cdylib", "rlib"] [features] all = ["config", "dwarf", "mips", "ppc", "x86", "arm", "bindings"] -any-arch = ["bimap", "config", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:tsify-next", "dep:wasm-bindgen", "memmap2"] # Implicit, used to check if any arch is enabled -config = ["bimap", "globset", "semver", "serde_json", "serde_yaml", "dep:serde", "dep:filetime"] -dwarf = ["gimli"] -mips = ["any-arch", "rabbitizer"] -ppc = ["any-arch", "cwdemangle", "cwextab", "ppc750cl"] -x86 = ["any-arch", "cpp_demangle", "iced-x86", "msvc-demangler"] -arm = ["any-arch", "cpp_demangle", "unarm", "arm-attr"] -bindings = ["serde_json", "prost", "pbjson", "dep:serde"] -wasm = ["bindings", "console_error_panic_hook", "console_log", "dep:wasm-bindgen"] +any-arch = ["config", "dep:bimap", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:tsify-next", "dep:wasm-bindgen", "dep:memmap2"] # Implicit, used to check if any arch is enabled +config = ["dep:bimap", "dep:globset", "dep:semver", "dep:serde_json", "dep:serde_yaml", "dep:serde", "dep:filetime"] +dwarf = ["dep:gimli"] +mips = ["any-arch", "dep:rabbitizer"] +ppc = ["any-arch", "dep:cwdemangle", "dep:cwextab", "dep:ppc750cl"] +x86 = ["any-arch", "dep:cpp_demangle", "dep:iced-x86", "dep:msvc-demangler"] +arm = ["any-arch", "dep:cpp_demangle", "dep:unarm", "dep:arm-attr"] +bindings = ["dep:serde_json", "dep:prost", "dep:pbjson", "dep:serde"] +wasm = ["bindings", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen"] [package.metadata.docs.rs] features = ["all"] From cd1bb24e22f421a4b804b6afd4ad2deca9640506 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Sun, 20 Oct 2024 16:07:11 -0600 Subject: [PATCH 4/5] Gate even more deps behind features Removes dependency on tsify-next / wasm-bindgen unless compiling with the wasm feature by using `#[cfg_attr]` --- objdiff-core/Cargo.toml | 14 +++++++------- objdiff-core/build.rs | 9 +++++++-- objdiff-core/src/diff/mod.rs | 15 ++++++++------- objdiff-core/src/lib.rs | 1 + objdiff-core/src/obj/read.rs | 1 + 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/objdiff-core/Cargo.toml b/objdiff-core/Cargo.toml index 87273578..2995a026 100644 --- a/objdiff-core/Cargo.toml +++ b/objdiff-core/Cargo.toml @@ -17,15 +17,15 @@ crate-type = ["cdylib", "rlib"] [features] all = ["config", "dwarf", "mips", "ppc", "x86", "arm", "bindings"] -any-arch = ["config", "dep:bimap", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:tsify-next", "dep:wasm-bindgen", "dep:memmap2"] # Implicit, used to check if any arch is enabled +any-arch = ["config", "dep:bimap", "dep:strum", "dep:similar", "dep:flagset", "dep:log", "dep:memmap2", "dep:byteorder", "dep:num-traits"] # Implicit, used to check if any arch is enabled config = ["dep:bimap", "dep:globset", "dep:semver", "dep:serde_json", "dep:serde_yaml", "dep:serde", "dep:filetime"] dwarf = ["dep:gimli"] mips = ["any-arch", "dep:rabbitizer"] ppc = ["any-arch", "dep:cwdemangle", "dep:cwextab", "dep:ppc750cl"] x86 = ["any-arch", "dep:cpp_demangle", "dep:iced-x86", "dep:msvc-demangler"] arm = ["any-arch", "dep:cpp_demangle", "dep:unarm", "dep:arm-attr"] -bindings = ["dep:serde_json", "dep:prost", "dep:pbjson", "dep:serde"] -wasm = ["bindings", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen"] +bindings = ["dep:serde_json", "dep:prost", "dep:pbjson", "dep:serde", "dep:prost-build", "dep:pbjson-build"] +wasm = ["bindings", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen", "dep:tsify-next", "dep:log"] [package.metadata.docs.rs] features = ["all"] @@ -33,12 +33,12 @@ features = ["all"] [dependencies] anyhow = "1.0" bimap = { version = "0.6", features = ["serde"], optional = true } -byteorder = "1.5" +byteorder = { version = "1.5", optional = true } filetime = { version = "0.2", optional = true } flagset = { version = "0.4", optional = true } log = { version = "0.4", optional = true } memmap2 = { version = "0.9", optional = true } -num-traits = "0.2" +num-traits = { version = "0.2", optional = true } object = { version = "0.36", features = ["read_core", "std", "elf", "pe"], default-features = false } pbjson = { version = "0.7", optional = true } prost = { version = "0.13", optional = true } @@ -77,5 +77,5 @@ unarm = { version = "1.6", optional = true } arm-attr = { version = "0.1", optional = true } [build-dependencies] -prost-build = "0.13" -pbjson-build = "0.7" +prost-build = { version = "0.13", optional = true } +pbjson-build = { version = "0.7", optional = true } diff --git a/objdiff-core/build.rs b/objdiff-core/build.rs index 5f0864cf..b5ab6f38 100644 --- a/objdiff-core/build.rs +++ b/objdiff-core/build.rs @@ -1,6 +1,11 @@ -use std::path::{Path, PathBuf}; - fn main() { + #[cfg(feature = "bindings")] + compile_protos(); +} + +#[cfg(feature = "bindings")] +fn compile_protos() { + use std::path::{Path, PathBuf}; let root = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("protos"); let descriptor_path = root.join("proto_descriptor.bin"); println!("cargo:rerun-if-changed={}", descriptor_path.display()); diff --git a/objdiff-core/src/diff/mod.rs b/objdiff-core/src/diff/mod.rs index 95ce055a..b5e2f77e 100644 --- a/objdiff-core/src/diff/mod.rs +++ b/objdiff-core/src/diff/mod.rs @@ -29,8 +29,8 @@ pub mod display; serde::Serialize, strum::VariantArray, strum::EnumMessage, - tsify_next::Tsify, )] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] pub enum X86Formatter { #[default] #[strum(message = "Intel (default)")] @@ -54,8 +54,8 @@ pub enum X86Formatter { serde::Serialize, strum::VariantArray, strum::EnumMessage, - tsify_next::Tsify, )] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] pub enum MipsAbi { #[default] #[strum(message = "Auto (default)")] @@ -79,8 +79,8 @@ pub enum MipsAbi { serde::Serialize, strum::VariantArray, strum::EnumMessage, - tsify_next::Tsify, )] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] pub enum MipsInstrCategory { #[default] #[strum(message = "Auto (default)")] @@ -108,8 +108,8 @@ pub enum MipsInstrCategory { serde::Serialize, strum::VariantArray, strum::EnumMessage, - tsify_next::Tsify, )] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] pub enum ArmArchVersion { #[default] #[strum(message = "Auto (default)")] @@ -133,8 +133,8 @@ pub enum ArmArchVersion { serde::Serialize, strum::VariantArray, strum::EnumMessage, - tsify_next::Tsify, )] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] pub enum ArmR9Usage { #[default] #[strum( @@ -154,8 +154,9 @@ pub enum ArmR9Usage { #[inline] const fn default_true() -> bool { true } -#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize, tsify_next::Tsify)] -#[tsify(from_wasm_abi)] +#[derive(Debug, Clone, Eq, PartialEq, serde::Deserialize, serde::Serialize)] +#[cfg_attr(feature = "wasm", derive(tsify_next::Tsify))] +#[cfg_attr(feature = "wasm", tsify(from_wasm_abi))] #[serde(default)] pub struct DiffObjConfig { pub relax_reloc_diffs: bool, diff --git a/objdiff-core/src/lib.rs b/objdiff-core/src/lib.rs index 02df5a4e..47acbbff 100644 --- a/objdiff-core/src/lib.rs +++ b/objdiff-core/src/lib.rs @@ -8,4 +8,5 @@ pub mod config; pub mod diff; #[cfg(feature = "any-arch")] pub mod obj; +#[cfg(feature = "any-arch")] pub mod util; diff --git a/objdiff-core/src/obj/read.rs b/objdiff-core/src/obj/read.rs index dad64271..34060856 100644 --- a/objdiff-core/src/obj/read.rs +++ b/objdiff-core/src/obj/read.rs @@ -64,6 +64,7 @@ fn to_obj_symbol( if obj_file.format() == BinaryFormat::Elf && symbol.scope() == SymbolScope::Linkage { flags = ObjSymbolFlagSet(flags.0 | ObjSymbolFlags::Hidden); } + #[cfg(feature = "ppc")] if arch .ppc() .and_then(|a| a.extab.as_ref()) From f2795a33d5c5409a2ed76bde1d91a1f69044db63 Mon Sep 17 00:00:00 2001 From: Angie Date: Sun, 20 Oct 2024 19:50:59 -0300 Subject: [PATCH 5/5] Fix wasm --- objdiff-core/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/objdiff-core/Cargo.toml b/objdiff-core/Cargo.toml index 2995a026..1ecb8c9f 100644 --- a/objdiff-core/Cargo.toml +++ b/objdiff-core/Cargo.toml @@ -25,7 +25,7 @@ ppc = ["any-arch", "dep:cwdemangle", "dep:cwextab", "dep:ppc750cl"] x86 = ["any-arch", "dep:cpp_demangle", "dep:iced-x86", "dep:msvc-demangler"] arm = ["any-arch", "dep:cpp_demangle", "dep:unarm", "dep:arm-attr"] bindings = ["dep:serde_json", "dep:prost", "dep:pbjson", "dep:serde", "dep:prost-build", "dep:pbjson-build"] -wasm = ["bindings", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen", "dep:tsify-next", "dep:log"] +wasm = ["bindings", "any-arch", "dep:console_error_panic_hook", "dep:console_log", "dep:wasm-bindgen", "dep:tsify-next", "dep:log"] [package.metadata.docs.rs] features = ["all"]