diff --git a/Cargo.lock b/Cargo.lock index 4484267fb0b3..b33798e93f8c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ "gimli", ] @@ -167,9 +167,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282" +checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" dependencies = [ "addr2line", "cc", @@ -1340,9 +1340,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -1890,9 +1890,9 @@ checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" [[package]] name = "object" -version = "0.25.3" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7" +checksum = "c55827317fb4c08822499848a14237d2874d6f139828893017237e7ab93eb386" dependencies = [ "crc32fast", "indexmap", diff --git a/Cargo.toml b/Cargo.toml index d7e00d0771e8..4cbf38bd8d2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ wasmtime-wasi = { path = "crates/wasi", version = "0.28.0" } wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "0.28.0", optional = true } wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "0.28.0", optional = true } structopt = { version = "0.3.5", features = ["color", "suggestions"] } -object = { version = "0.25.0", default-features = false, features = ["write"] } +object = { version = "0.26.0", default-features = false, features = ["write"] } anyhow = "1.0.19" target-lexicon = { version = "0.12.0", default-features = false } pretty_env_logger = "0.4.0" diff --git a/cranelift/codegen/Cargo.toml b/cranelift/codegen/Cargo.toml index 943e76e468dd..29ecc2de4b09 100644 --- a/cranelift/codegen/Cargo.toml +++ b/cranelift/codegen/Cargo.toml @@ -21,7 +21,7 @@ target-lexicon = "0.12" log = { version = "0.4.6", default-features = false } serde = { version = "1.0.94", features = ["derive"], optional = true } bincode = { version = "1.2.1", optional = true } -gimli = { version = "0.24.0", default-features = false, features = ["write"], optional = true } +gimli = { version = "0.25.0", default-features = false, features = ["write"], optional = true } smallvec = { version = "1.6.1" } peepmatic = { path = "../peepmatic", optional = true, version = "0.75.0" } peepmatic-traits = { path = "../peepmatic/crates/traits", optional = true, version = "0.75.0" } diff --git a/cranelift/filetests/Cargo.toml b/cranelift/filetests/Cargo.toml index 6fb289d0a12a..48ee89c330c7 100644 --- a/cranelift/filetests/Cargo.toml +++ b/cranelift/filetests/Cargo.toml @@ -18,7 +18,7 @@ cranelift-reader = { path = "../reader", version = "0.75.0" } cranelift-preopt = { path = "../preopt", version = "0.75.0" } file-per-thread-logger = "0.1.2" filecheck = "0.5.0" -gimli = { version = "0.24.0", default-features = false, features = ["read"] } +gimli = { version = "0.25.0", default-features = false, features = ["read"] } log = "0.4.6" memmap2 = "0.2.1" num_cpus = "1.8.0" diff --git a/cranelift/object/Cargo.toml b/cranelift/object/Cargo.toml index 311c4f32a7fe..5af86177aa35 100644 --- a/cranelift/object/Cargo.toml +++ b/cranelift/object/Cargo.toml @@ -12,7 +12,7 @@ edition = "2018" [dependencies] cranelift-module = { path = "../module", version = "0.75.0" } cranelift-codegen = { path = "../codegen", version = "0.75.0", default-features = false, features = ["std"] } -object = { version = "0.25.3", default-features = false, features = ["write"] } +object = { version = "0.26.0", default-features = false, features = ["write"] } target-lexicon = "0.12" anyhow = "1.0" log = { version = "0.4.6", default-features = false } diff --git a/crates/debug/Cargo.toml b/crates/debug/Cargo.toml index e9357cf2049e..82574b8f2faf 100644 --- a/crates/debug/Cargo.toml +++ b/crates/debug/Cargo.toml @@ -11,9 +11,9 @@ keywords = ["webassembly", "wasm", "debuginfo"] edition = "2018" [dependencies] -gimli = "0.24.0" +gimli = "0.25.0" wasmparser = "0.79" -object = { version = "0.25.0", default-features = false, features = ["read_core", "elf", "write"] } +object = { version = "0.26.0", default-features = false, features = ["read_core", "elf", "write"] } wasmtime-environ = { path = "../environ", version = "0.28.0" } target-lexicon = { version = "0.12.0", default-features = false } anyhow = "1.0" diff --git a/crates/debug/src/gc.rs b/crates/debug/src/gc.rs index 491d58579916..0763119aeee7 100644 --- a/crates/debug/src/gc.rs +++ b/crates/debug/src/gc.rs @@ -120,7 +120,9 @@ fn has_valid_code_range>( constants::DW_TAG_subprogram => { if let Some(ranges_attr) = die.attr_value(constants::DW_AT_ranges)? { let offset = match ranges_attr { - read::AttributeValue::RangeListsRef(val) => val, + read::AttributeValue::RangeListsRef(val) => { + dwarf.ranges_offset_from_raw(unit, val) + } read::AttributeValue::DebugRngListsIndex(index) => { dwarf.ranges_offset(unit, index)? } diff --git a/crates/debug/src/transform/attr.rs b/crates/debug/src/transform/attr.rs index cb654fe790fe..b3a018455a59 100644 --- a/crates/debug/src/transform/attr.rs +++ b/crates/debug/src/transform/attr.rs @@ -36,6 +36,7 @@ fn is_exprloc_to_loclist_allowed(attr_name: gimli::constants::DwAt) -> bool { } pub(crate) fn clone_die_attributes<'a, R>( + dwarf: &gimli::Dwarf, unit: &Unit, entry: &DebuggingInformationEntry, context: &DebugInputContext, @@ -63,7 +64,7 @@ where // FIXME for CU: currently address_transform operate on a single // function range, and when CU spans multiple ranges the // transformation may be incomplete. - RangeInfoBuilder::from(unit, entry, context, cu_low_pc)? + RangeInfoBuilder::from(dwarf, unit, entry, context, cu_low_pc)? }; range_info.build(addr_tr, out_unit, current_scope_id); @@ -139,6 +140,7 @@ where write::AttributeValue::StringRef(out_strings.add(s)) } AttributeValue::RangeListsRef(r) => { + let r = dwarf.ranges_offset_from_raw(unit, r); let range_info = RangeInfoBuilder::from_ranges_ref(unit, r, context, cu_low_pc)?; let range_list_id = range_info.build_ranges(addr_tr, &mut out_unit.ranges); write::AttributeValue::RangeListRef(range_list_id) diff --git a/crates/debug/src/transform/mod.rs b/crates/debug/src/transform/mod.rs index 2f759ecc34f3..e6b6bb431ff2 100644 --- a/crates/debug/src/transform/mod.rs +++ b/crates/debug/src/transform/mod.rs @@ -85,6 +85,7 @@ pub fn transform_dwarf( while let Some(header) = iter.next().unwrap_or(None) { let unit = di.dwarf.unit(header)?; if let Some((id, ref_map, pending_refs)) = clone_unit( + &di.dwarf, unit, &context, &addr_tr, diff --git a/crates/debug/src/transform/range_info_builder.rs b/crates/debug/src/transform/range_info_builder.rs index 23c2b33e3d6d..13176b60b4dd 100644 --- a/crates/debug/src/transform/range_info_builder.rs +++ b/crates/debug/src/transform/range_info_builder.rs @@ -15,6 +15,7 @@ pub(crate) enum RangeInfoBuilder { impl RangeInfoBuilder { pub(crate) fn from( + dwarf: &gimli::Dwarf, unit: &Unit, entry: &DebuggingInformationEntry, context: &DebugInputContext, @@ -24,6 +25,7 @@ impl RangeInfoBuilder { R: Reader, { if let Some(AttributeValue::RangeListsRef(r)) = entry.attr_value(gimli::DW_AT_ranges)? { + let r = dwarf.ranges_offset_from_raw(unit, r); return RangeInfoBuilder::from_ranges_ref(unit, r, context, cu_low_pc); }; @@ -80,6 +82,7 @@ impl RangeInfoBuilder { } pub(crate) fn from_subprogram_die( + dwarf: &gimli::Dwarf, unit: &Unit, entry: &DebuggingInformationEntry, context: &DebugInputContext, @@ -100,6 +103,7 @@ impl RangeInfoBuilder { } else if let Some(AttributeValue::RangeListsRef(r)) = entry.attr_value(gimli::DW_AT_ranges)? { + let r = dwarf.ranges_offset_from_raw(unit, r); let mut ranges = context.rnglists.ranges( r, unit_encoding, diff --git a/crates/debug/src/transform/unit.rs b/crates/debug/src/transform/unit.rs index 655d7738ee04..d46e4085fbac 100644 --- a/crates/debug/src/transform/unit.rs +++ b/crates/debug/src/transform/unit.rs @@ -244,6 +244,7 @@ where } pub(crate) fn clone_unit<'a, R>( + dwarf: &gimli::Dwarf, unit: Unit, context: &DebugInputContext, addr_tr: &'a AddressTransform, @@ -302,6 +303,7 @@ where }; clone_die_attributes( + dwarf, &unit, entry, context, @@ -369,8 +371,9 @@ where current_scope_ranges.update(new_stack_len); current_value_range.update(new_stack_len); let range_builder = if entry.tag() == gimli::DW_TAG_subprogram { - let range_builder = - RangeInfoBuilder::from_subprogram_die(&unit, entry, context, addr_tr, cu_low_pc)?; + let range_builder = RangeInfoBuilder::from_subprogram_die( + dwarf, &unit, entry, context, addr_tr, cu_low_pc, + )?; if let RangeInfoBuilder::Function(func_index) = range_builder { if let Some(frame_info) = get_function_frame_info(memory_offset, funcs, func_index) { @@ -387,7 +390,8 @@ where let high_pc = entry.attr_value(gimli::DW_AT_high_pc)?; let ranges = entry.attr_value(gimli::DW_AT_ranges)?; if high_pc.is_some() || ranges.is_some() { - let range_builder = RangeInfoBuilder::from(&unit, entry, context, cu_low_pc)?; + let range_builder = + RangeInfoBuilder::from(dwarf, &unit, entry, context, cu_low_pc)?; current_scope_ranges.push(new_stack_len, range_builder.get_ranges(addr_tr)); Some(range_builder) } else { @@ -443,6 +447,7 @@ where die_ref_map.insert(entry.offset(), die_id); clone_die_attributes( + dwarf, &unit, entry, context, diff --git a/crates/environ/Cargo.toml b/crates/environ/Cargo.toml index 7400e09f2b6c..15f284ac21d1 100644 --- a/crates/environ/Cargo.toml +++ b/crates/environ/Cargo.toml @@ -21,7 +21,7 @@ serde = { version = "1.0.94", features = ["derive"] } log = { version = "0.4.8", default-features = false } more-asserts = "0.2.1" cfg-if = "1.0" -gimli = "0.24" +gimli = "0.25.0" [badges] maintenance = { status = "actively-developed" } diff --git a/crates/environ/src/module_environ.rs b/crates/environ/src/module_environ.rs index 2fc012b675f8..7cffaaf000a8 100644 --- a/crates/environ/src/module_environ.rs +++ b/crates/environ/src/module_environ.rs @@ -204,10 +204,9 @@ impl<'data> ModuleEnvironment<'data> { let slice = gimli::EndianSlice::new(data, endian); match name { - // Dwarf fields. + // `gimli::Dwarf` fields. ".debug_abbrev" => dwarf.debug_abbrev = gimli::DebugAbbrev::new(data, endian), ".debug_addr" => dwarf.debug_addr = gimli::DebugAddr::from(slice), - // TODO aranges? ".debug_info" => dwarf.debug_info = gimli::DebugInfo::new(data, endian), ".debug_line" => dwarf.debug_line = gimli::DebugLine::new(data, endian), ".debug_line_str" => dwarf.debug_line_str = gimli::DebugLineStr::from(slice), @@ -226,6 +225,9 @@ impl<'data> ModuleEnvironment<'data> { ".debug_ranges" => info.debug_ranges = gimli::DebugRanges::new(data, endian), ".debug_rnglists" => info.debug_rnglists = gimli::DebugRngLists::new(data, endian), + // We don't use these at the moment. + ".debug_aranges" | ".debug_pubnames" | ".debug_pubtypes" => return, + other => { log::warn!("unknown debug section `{}`", other); return; diff --git a/crates/fiber/Cargo.toml b/crates/fiber/Cargo.toml index 9ff76716953c..c148c021d83d 100644 --- a/crates/fiber/Cargo.toml +++ b/crates/fiber/Cargo.toml @@ -27,4 +27,4 @@ features = [ cc = "1.0" [dev-dependencies] -backtrace = "0.3" +backtrace = "0.3.61" diff --git a/crates/jit/Cargo.toml b/crates/jit/Cargo.toml index 66562cc99696..5cb318ef2d95 100644 --- a/crates/jit/Cargo.toml +++ b/crates/jit/Cargo.toml @@ -32,10 +32,10 @@ more-asserts = "0.2.1" anyhow = "1.0" cfg-if = "1.0" log = "0.4" -gimli = { version = "0.24.0", default-features = false, features = ["write"] } -object = { version = "0.25.0", default-features = false, features = ["write"] } +gimli = { version = "0.25.0", default-features = false, features = ["write"] } +object = { version = "0.26.0", default-features = false, features = ["write"] } serde = { version = "1.0.94", features = ["derive"] } -addr2line = { version = "0.15", default-features = false } +addr2line = { version = "0.16.0", default-features = false } [target.'cfg(target_os = "windows")'.dependencies] winapi = { version = "0.3.8", features = ["winnt", "impl-default"] } diff --git a/crates/obj/Cargo.toml b/crates/obj/Cargo.toml index 749d404a52d0..fc61516d9c11 100644 --- a/crates/obj/Cargo.toml +++ b/crates/obj/Cargo.toml @@ -12,7 +12,7 @@ edition = "2018" [dependencies] anyhow = "1.0" wasmtime-environ = { path = "../environ", version = "0.28.0" } -object = { version = "0.25.0", default-features = false, features = ["write"] } +object = { version = "0.26.0", default-features = false, features = ["write"] } more-asserts = "0.2.1" target-lexicon = { version = "0.12.0", default-features = false } wasmtime-debug = { path = "../debug", version = "0.28.0" } diff --git a/crates/profiling/Cargo.toml b/crates/profiling/Cargo.toml index 0e9d3be82c54..ba4a1f8ba398 100644 --- a/crates/profiling/Cargo.toml +++ b/crates/profiling/Cargo.toml @@ -12,7 +12,7 @@ edition = "2018" [dependencies] anyhow = "1.0" cfg-if = "1.0" -gimli = { version = "0.24.0", optional = true } +gimli = { version = "0.25.0", optional = true } lazy_static = "1.4" libc = { version = "0.2.60", default-features = false } scroll = { version = "0.10.1", features = ["derive"], optional = true } @@ -23,7 +23,7 @@ wasmtime-runtime = { path = "../runtime", version = "0.28.0" } ittapi-rs = { version = "0.1.5", optional = true } [dependencies.object] -version = "0.25.0" +version = "0.26.0" optional = true default-features = false features = ['read_core', 'elf', 'std'] diff --git a/crates/runtime/Cargo.toml b/crates/runtime/Cargo.toml index 8e36917b47e3..3cc6a646adf0 100644 --- a/crates/runtime/Cargo.toml +++ b/crates/runtime/Cargo.toml @@ -21,7 +21,7 @@ indexmap = "1.0.2" thiserror = "1.0.4" more-asserts = "0.2.1" cfg-if = "1.0" -backtrace = "0.3.55" +backtrace = "0.3.61" lazy_static = "1.3.0" rand = "0.8.3" anyhow = "1.0.38" diff --git a/crates/wasmtime/Cargo.toml b/crates/wasmtime/Cargo.toml index 906b745d2f89..1e1ebe34ca98 100644 --- a/crates/wasmtime/Cargo.toml +++ b/crates/wasmtime/Cargo.toml @@ -25,7 +25,7 @@ anyhow = "1.0.19" region = "2.2.0" libc = "0.2" cfg-if = "1.0" -backtrace = "0.3.42" +backtrace = "0.3.61" rustc-demangle = "0.1.16" cpp_demangle = "0.3.2" log = "0.4.8"