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 58 59 60 61
use crate::*; #[derive(Debug, Eq, Ord, PartialEq, PartialOrd)] pub enum SHTYPE { NULL, PROGBITS, SYMTAB, STRTAB, RELA, HASH, DYNAMIC, NOTE, NOBITS, REL, SHLIB, DYNSYM, NUM, ANY(Elf64Word), } impl SHTYPE { pub fn to_bytes(&self) -> Elf64Word { match self { Self::NULL => 0, Self::PROGBITS => 1, Self::SYMTAB => 2, Self::STRTAB => 3, Self::RELA => 4, Self::HASH => 5, Self::DYNAMIC => 6, Self::NOTE => 7, Self::NOBITS => 8, Self::REL => 9, Self::SHLIB => 10, Self::DYNSYM => 11, Self::NUM => 12, Self::ANY(c) => *c, } } } impl From<Elf64Word> for SHTYPE { fn from(bytes: Elf64Word) -> Self { match bytes { 0 => Self::NULL, 1 => Self::PROGBITS, 2 => Self::SYMTAB, 3 => Self::STRTAB, 4 => Self::RELA, 5 => Self::HASH, 6 => Self::DYNAMIC, 7 => Self::NOTE, 8 => Self::NOBITS, 9 => Self::REL, 10 => Self::SHLIB, 11 => Self::DYNSYM, 12 => Self::NUM, _ => Self::ANY(bytes), } } }