Remove reloc_constant

It is no longer used by the new backends
This commit is contained in:
bjorn3
2021-10-10 14:43:49 +02:00
parent 855ba39217
commit d78f436daf
10 changed files with 2 additions and 89 deletions

View File

@@ -15,7 +15,7 @@
//! `CodeSink::put*` methods, so the performance impact of the virtual callbacks is less severe. //! `CodeSink::put*` methods, so the performance impact of the virtual callbacks is less severe.
use super::{Addend, CodeInfo, CodeOffset, CodeSink, Reloc}; use super::{Addend, CodeInfo, CodeOffset, CodeSink, Reloc};
use crate::binemit::stack_map::StackMap; use crate::binemit::stack_map::StackMap;
use crate::ir::{ConstantOffset, ExternalName, Opcode, SourceLoc, TrapCode}; use crate::ir::{ExternalName, Opcode, SourceLoc, TrapCode};
use core::ptr::write_unaligned; use core::ptr::write_unaligned;
/// A `CodeSink` that writes binary machine code directly into memory. /// A `CodeSink` that writes binary machine code directly into memory.
@@ -79,9 +79,6 @@ pub trait RelocSink {
_: Addend, _: Addend,
); );
/// Add a relocation referencing a constant.
fn reloc_constant(&mut self, _: CodeOffset, _: Reloc, _: ConstantOffset);
/// Track a call site whose return address is the given CodeOffset, for the given opcode. Does /// Track a call site whose return address is the given CodeOffset, for the given opcode. Does
/// nothing in general, only useful for certain embedders (SpiderMonkey). /// nothing in general, only useful for certain embedders (SpiderMonkey).
fn add_call_site(&mut self, _: Opcode, _: CodeOffset, _: SourceLoc) {} fn add_call_site(&mut self, _: Opcode, _: CodeOffset, _: SourceLoc) {}
@@ -138,11 +135,6 @@ impl<'a> CodeSink for MemoryCodeSink<'a> {
self.relocs.reloc_external(ofs, srcloc, rel, name, addend); self.relocs.reloc_external(ofs, srcloc, rel, name, addend);
} }
fn reloc_constant(&mut self, rel: Reloc, constant_offset: ConstantOffset) {
let ofs = self.offset();
self.relocs.reloc_constant(ofs, rel, constant_offset);
}
fn trap(&mut self, code: TrapCode, srcloc: SourceLoc) { fn trap(&mut self, code: TrapCode, srcloc: SourceLoc) {
let ofs = self.offset(); let ofs = self.offset();
self.traps.trap(ofs, srcloc, code); self.traps.trap(ofs, srcloc, code);
@@ -186,7 +178,6 @@ impl RelocSink for NullRelocSink {
_: Addend, _: Addend,
) { ) {
} }
fn reloc_constant(&mut self, _: CodeOffset, _: Reloc, _: ConstantOffset) {}
} }
/// A `TrapSink` implementation that does nothing, which is convenient when /// A `TrapSink` implementation that does nothing, which is convenient when

View File

@@ -11,7 +11,7 @@ pub use self::memorysink::{
TrapSink, TrapSink,
}; };
pub use self::stack_map::StackMap; pub use self::stack_map::StackMap;
use crate::ir::{ConstantOffset, ExternalName, Opcode, SourceLoc, TrapCode}; use crate::ir::{ExternalName, Opcode, SourceLoc, TrapCode};
use core::fmt; use core::fmt;
#[cfg(feature = "enable-serde")] #[cfg(feature = "enable-serde")]
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -35,8 +35,6 @@ pub enum Reloc {
Abs8, Abs8,
/// x86 PC-relative 4-byte /// x86 PC-relative 4-byte
X86PCRel4, X86PCRel4,
/// x86 PC-relative 4-byte offset to trailing rodata
X86PCRelRodata4,
/// x86 call to PC-relative 4-byte /// x86 call to PC-relative 4-byte
X86CallPCRel4, X86CallPCRel4,
/// x86 call to PLT-relative 4-byte /// x86 call to PLT-relative 4-byte
@@ -78,7 +76,6 @@ impl fmt::Display for Reloc {
Self::Abs8 => write!(f, "Abs8"), Self::Abs8 => write!(f, "Abs8"),
Self::S390xPCRel32Dbl => write!(f, "PCRel32Dbl"), Self::S390xPCRel32Dbl => write!(f, "PCRel32Dbl"),
Self::X86PCRel4 => write!(f, "PCRel4"), Self::X86PCRel4 => write!(f, "PCRel4"),
Self::X86PCRelRodata4 => write!(f, "PCRelRodata4"),
Self::X86CallPCRel4 => write!(f, "CallPCRel4"), Self::X86CallPCRel4 => write!(f, "CallPCRel4"),
Self::X86CallPLTRel4 => write!(f, "CallPLTRel4"), Self::X86CallPLTRel4 => write!(f, "CallPLTRel4"),
Self::X86GOTPCRel4 => write!(f, "GOTPCRel4"), Self::X86GOTPCRel4 => write!(f, "GOTPCRel4"),
@@ -147,9 +144,6 @@ pub trait CodeSink {
/// Add a relocation referencing an external symbol plus the addend at the current offset. /// Add a relocation referencing an external symbol plus the addend at the current offset.
fn reloc_external(&mut self, _: SourceLoc, _: Reloc, _: &ExternalName, _: Addend); fn reloc_external(&mut self, _: SourceLoc, _: Reloc, _: &ExternalName, _: Addend);
/// Add a relocation referencing a constant.
fn reloc_constant(&mut self, _: Reloc, _: ConstantOffset);
/// Add trap information for the current offset. /// Add trap information for the current offset.
fn trap(&mut self, _: TrapCode, _: SourceLoc); fn trap(&mut self, _: TrapCode, _: SourceLoc);

View File

@@ -66,8 +66,6 @@ impl CodeSink for TestCodeSink {
) { ) {
} }
fn reloc_constant(&mut self, _rel: Reloc, _constant_offset: ConstantOffset) {}
fn trap(&mut self, _code: TrapCode, _srcloc: SourceLoc) {} fn trap(&mut self, _code: TrapCode, _srcloc: SourceLoc) {}
fn begin_jumptables(&mut self) {} fn begin_jumptables(&mut self) {}

View File

@@ -2067,7 +2067,6 @@ mod test {
fn reloc_external(&mut self, _: SourceLoc, r: Reloc, _: &ExternalName, _: Addend) { fn reloc_external(&mut self, _: SourceLoc, r: Reloc, _: &ExternalName, _: Addend) {
self.relocs.push((self.offset, r)); self.relocs.push((self.offset, r));
} }
fn reloc_constant(&mut self, _: Reloc, _: ConstantOffset) {}
fn trap(&mut self, t: TrapCode, _: SourceLoc) { fn trap(&mut self, t: TrapCode, _: SourceLoc) {
self.traps.push((self.offset, t)); self.traps.push((self.offset, t));
} }

View File

@@ -95,7 +95,6 @@ impl binemit::CodeSink for SizeSink {
_addend: binemit::Addend, _addend: binemit::Addend,
) { ) {
} }
fn reloc_constant(&mut self, _: binemit::Reloc, _: ir::ConstantOffset) {}
fn trap(&mut self, _code: ir::TrapCode, _srcloc: ir::SourceLoc) {} fn trap(&mut self, _code: ir::TrapCode, _srcloc: ir::SourceLoc) {}
fn begin_jumptables(&mut self) {} fn begin_jumptables(&mut self) {}
fn begin_rodata(&mut self) {} fn begin_rodata(&mut self) {}

View File

@@ -893,16 +893,4 @@ impl RelocSink for JITRelocSink {
addend, addend,
}); });
} }
fn reloc_constant(&mut self, _offset: CodeOffset, reloc: Reloc, _constant: ir::ConstantOffset) {
match reloc {
Reloc::X86PCRelRodata4 => {
// Not necessary to record this unless we are going to split apart code and its
// jumptbl/rodata.
}
_ => {
panic!("Unhandled reloc");
}
}
}
} }

View File

@@ -734,16 +734,4 @@ impl RelocSink for ObjectRelocSink {
name: name.clone(), name: name.clone(),
}) })
} }
fn reloc_constant(&mut self, _offset: CodeOffset, reloc: Reloc, _jt: ir::ConstantOffset) {
match reloc {
Reloc::X86PCRelRodata4 => {
// Not necessary to record this unless we are going to split apart code and its
// jumptbl/rodata.
}
_ => {
panic!("Unhandled reloc");
}
}
}
} }

View File

@@ -36,22 +36,6 @@ impl binemit::RelocSink for PrintRelocs {
.unwrap(); .unwrap();
} }
} }
fn reloc_constant(
&mut self,
code_offset: binemit::CodeOffset,
reloc: binemit::Reloc,
constant: ir::ConstantOffset,
) {
if self.flag_print {
writeln!(
&mut self.text,
"reloc_constant: {} {} at {}",
reloc, constant, code_offset
)
.unwrap();
}
}
} }
pub struct PrintTraps { pub struct PrintTraps {

View File

@@ -643,16 +643,6 @@ impl binemit::RelocSink for RelocSink {
addend, addend,
}); });
} }
fn reloc_constant(
&mut self,
_code_offset: binemit::CodeOffset,
_reloc: binemit::Reloc,
_constant_offset: ir::ConstantOffset,
) {
// Do nothing for now: cranelift emits constant data after the function code and also emits
// function code with correct relative offsets to the constant data.
}
} }
impl RelocSink { impl RelocSink {
@@ -764,12 +754,4 @@ impl binemit::RelocSink for TrampolineRelocSink {
addend, addend,
}); });
} }
fn reloc_constant(
&mut self,
_code_offset: binemit::CodeOffset,
_reloc: binemit::Reloc,
_constant_offset: ir::ConstantOffset,
) {
panic!("trampoline compilation should not produce constant relocs");
}
} }

View File

@@ -310,16 +310,6 @@ impl<'a> ObjectBuilder<'a> {
Reloc::Abs4 => (RelocationKind::Absolute, RelocationEncoding::Generic, 32), Reloc::Abs4 => (RelocationKind::Absolute, RelocationEncoding::Generic, 32),
Reloc::Abs8 => (RelocationKind::Absolute, RelocationEncoding::Generic, 64), Reloc::Abs8 => (RelocationKind::Absolute, RelocationEncoding::Generic, 64),
// This is emitted by the old x86 backend and is only present
// for when the constant rodata is separated from the code
// itself. We don't do that, though, so we ignore these
// relocations since the offsets already listed here are already
// correct.
//
// FIXME(#3009): when the old backend is removed delete this
// case.
Reloc::X86PCRelRodata4 => continue,
other => unimplemented!("Unimplemented relocation {:?}", other), other => unimplemented!("Unimplemented relocation {:?}", other),
}; };
self.obj self.obj