1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
use crate::*; #[repr(C)] pub struct Rela64 { r_offset: Elf64Addr, r_info: Elf64Xword, r_addend: Elf64Sxword, } impl Default for Rela64 { fn default() -> Self { Self { r_offset: 0, r_info: 0, r_addend: 0, } } } #[allow(dead_code)] impl Rela64 { pub fn size() -> Elf64Xword { 24 } pub fn get_offset(&self) -> Elf64Addr { self.r_offset } pub fn set_addend(&mut self, addend: Elf64Sxword) { self.r_addend = addend; } pub fn set_offset(&mut self, offset: Elf64Addr) { self.r_offset = offset; } pub fn set_info(&mut self, info: Elf64Xword) { self.r_info = info; } pub fn to_le_bytes(&self) -> Vec<u8> { let mut bytes: Vec<u8> = Vec::new(); for byte in self.r_offset.to_le_bytes().to_vec() { bytes.push(byte); } for byte in self.r_info.to_le_bytes().to_vec() { bytes.push(byte); } for byte in self.r_addend.to_le_bytes().to_vec() { bytes.push(byte); } bytes } }