elf_utilities/dynamic/
elf64.rs1use crate::*;
2use serde::{Deserialize, Serialize};
3
4#[derive(Default, Debug, Clone, Hash, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
5#[repr(C)]
6pub struct Dyn64 {
7 pub d_tag: Elf64Sxword,
9 pub d_un: Elf64Xword,
11}
12
13impl Dyn64 {
14 pub const SIZE: usize = 0x10;
15 pub fn get_type(&self) -> dynamic::EntryType {
16 dynamic::EntryType::from(self.d_tag)
17 }
18
19 pub fn to_le_bytes(&self) -> Vec<u8> {
20 bincode::serialize(self).unwrap()
21 }
22
23 pub fn deserialize(buf: &[u8], start: usize) -> Result<Self, Box<dyn std::error::Error>> {
24 match bincode::deserialize(&buf[start..]) {
26 Ok(header) => Ok(header),
27 Err(e) => Err(e),
28 }
29 }
30}