]> git.proxmox.com Git - rustc.git/blob - vendor/object/src/read/elf/dynamic.rs
New upstream version 1.54.0+dfsg1
[rustc.git] / vendor / object / src / read / elf / dynamic.rs
1 use core::fmt::Debug;
2
3 use crate::elf;
4 use crate::endian;
5 use crate::pod::Pod;
6
7 /// A trait for generic access to `Dyn32` and `Dyn64`.
8 #[allow(missing_docs)]
9 pub trait Dyn: Debug + Pod {
10 type Word: Into<u64>;
11 type Endian: endian::Endian;
12
13 fn d_tag(&self, endian: Self::Endian) -> Self::Word;
14 fn d_val(&self, endian: Self::Endian) -> Self::Word;
15 }
16
17 impl<Endian: endian::Endian> Dyn for elf::Dyn32<Endian> {
18 type Word = u32;
19 type Endian = Endian;
20
21 #[inline]
22 fn d_tag(&self, endian: Self::Endian) -> Self::Word {
23 self.d_tag.get(endian)
24 }
25
26 #[inline]
27 fn d_val(&self, endian: Self::Endian) -> Self::Word {
28 self.d_val.get(endian)
29 }
30 }
31
32 impl<Endian: endian::Endian> Dyn for elf::Dyn64<Endian> {
33 type Word = u64;
34 type Endian = Endian;
35
36 #[inline]
37 fn d_tag(&self, endian: Self::Endian) -> Self::Word {
38 self.d_tag.get(endian)
39 }
40
41 #[inline]
42 fn d_val(&self, endian: Self::Endian) -> Self::Word {
43 self.d_val.get(endian)
44 }
45 }