From 7bf9b8e6e13bdead4217217e8f66cbf0eff414a5 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 4 May 2019 16:20:43 +0200 Subject: [PATCH] Update gimli --- Cargo.lock | 8 ++++---- src/debuginfo.rs | 20 +++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 19ef265e754a..cfa87b421b4e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -299,8 +299,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "gimli" -version = "0.17.0" -source = "git+https://github.com/gimli-rs/gimli.git#70c3730b5e3d8669dd2dbcf829fedd4f679185d9" +version = "0.18.0" +source = "git+https://github.com/gimli-rs/gimli.git#423431f6747167af8e64cc8c8378f9a34a18ff8f" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -591,7 +591,7 @@ dependencies = [ "cranelift-simplejit 0.30.0 (git+https://github.com/CraneStation/cranelift.git)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "faerie 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "gimli 0.17.0 (git+https://github.com/gimli-rs/gimli.git)", + "gimli 0.18.0 (git+https://github.com/gimli-rs/gimli.git)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.53 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -874,7 +874,7 @@ dependencies = [ "checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -"checksum gimli 0.17.0 (git+https://github.com/gimli-rs/gimli.git)" = "" +"checksum gimli 0.18.0 (git+https://github.com/gimli-rs/gimli.git)" = "" "checksum goblin 0.0.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6a4013e9182f2345c6b7829b9ef6e670bce0dfca12c6f974457ed2160c2c7fe9" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" diff --git a/src/debuginfo.rs b/src/debuginfo.rs index 9db431911345..d287e2cfaa30 100644 --- a/src/debuginfo.rs +++ b/src/debuginfo.rs @@ -135,7 +135,7 @@ impl<'a, 'tcx: 'a> DebugContext<'tcx> { root.set(gimli::DW_AT_comp_dir, AttributeValue::StringRef(comp_dir)); root.set( gimli::DW_AT_low_pc, - AttributeValue::Address(Address::Absolute(0)), + AttributeValue::Address(Address::Constant(0)), ); } @@ -251,7 +251,7 @@ impl<'a, 'b, 'tcx: 'b> FunctionDebugContext<'a, 'tcx> { entry.set( gimli::DW_AT_low_pc, - AttributeValue::Address(Address::Relative { symbol, addend: 0 }), + AttributeValue::Address(Address::Symbol { symbol, addend: 0 }), ); debug_context.emit_location(tcx, entry_id, mir.span); @@ -273,7 +273,7 @@ impl<'a, 'b, 'tcx: 'b> FunctionDebugContext<'a, 'tcx> { ) { let line_program = &mut self.debug_context.dwarf.unit.line_program; - line_program.begin_sequence(Some(Address::Relative { + line_program.begin_sequence(Some(Address::Symbol { symbol: self.symbol, addend: 0, })); @@ -326,7 +326,7 @@ impl<'a, 'b, 'tcx: 'b> FunctionDebugContext<'a, 'tcx> { .unit_range_list .0 .push(Range::StartLength { - begin: Address::Relative { + begin: Address::Symbol { symbol: self.symbol, addend: 0, }, @@ -371,8 +371,8 @@ impl Writer for WriterRelocate { fn write_address(&mut self, address: Address, size: u8) -> Result<()> { match address { - Address::Absolute(val) => self.write_word(val, size), - Address::Relative { symbol, addend } => { + Address::Constant(val) => self.write_udata(val, size), + Address::Symbol { symbol, addend } => { let offset = self.len() as u64; self.relocs.push(DebugReloc { offset: offset as u32, @@ -380,11 +380,13 @@ impl Writer for WriterRelocate { name: DebugRelocName::Symbol(symbol), addend: addend as i64, }); - self.write_word(0, size) + self.write_udata(0, size) } } } + // TODO: implement write_eh_pointer + fn write_offset(&mut self, val: usize, section: SectionId, size: u8) -> Result<()> { let offset = self.len() as u32; self.relocs.push(DebugReloc { @@ -393,7 +395,7 @@ impl Writer for WriterRelocate { name: DebugRelocName::Section(section), addend: val as i64, }); - self.write_word(0, size) + self.write_udata(0, size) } fn write_offset_at( @@ -409,6 +411,6 @@ impl Writer for WriterRelocate { name: DebugRelocName::Section(section), addend: val as i64, }); - self.write_word_at(offset, 0, size) + self.write_udata_at(offset, 0, size) } }