#[cfg(test)]
mod test;
#[derive(Eq, PartialEq, Debug, Clone, Copy)]
#[allow(non_camel_case_types)]
#[repr(u32)]
pub enum RelocationTypes {
R_AMD64_NONE,
R_AMD64_64,
R_AMD64_PC32,
R_AMD64_GOT32,
R_AMD64_PLT32,
R_AMD64_COPY,
R_AMD64_GLOB_DAT,
R_AMD64_JMP_SLOT,
R_AMD64_RELATIVE,
R_AMD64_GOTPCREL,
R_AMD64_32,
R_AMD64_32S,
R_AMD64_16,
R_AMD64_PC16,
R_AMD64_8,
R_AMD64_PC8,
R_AMD64_DTPMOD64,
R_AMD64_DTPOFF64,
R_AMD64_TPOFF64,
R_AMD64_TLSGD,
R_AMD64_TLSLD,
R_AMD64_DTPOFF32,
R_AMD64_GOTTPOFF,
R_AMD64_TPOFF32,
Unknown(u32),
}
impl RelocationTypes {
pub fn from(typ: u32) -> RelocationTypes {
use RelocationTypes::*;
match typ {
0 => R_AMD64_NONE,
1 => R_AMD64_64,
2 => R_AMD64_PC32,
3 => R_AMD64_GOT32,
4 => R_AMD64_PLT32,
5 => R_AMD64_COPY,
6 => R_AMD64_GLOB_DAT,
7 => R_AMD64_JMP_SLOT,
8 => R_AMD64_RELATIVE,
9 => R_AMD64_GOTPCREL,
10 => R_AMD64_32,
11 => R_AMD64_32S,
12 => R_AMD64_16,
13 => R_AMD64_PC16,
14 => R_AMD64_8,
15 => R_AMD64_PC8,
16 => R_AMD64_DTPMOD64,
17 => R_AMD64_DTPOFF64,
18 => R_AMD64_TPOFF64,
19 => R_AMD64_TLSGD,
20 => R_AMD64_TLSLD,
21 => R_AMD64_DTPOFF32,
22 => R_AMD64_GOTTPOFF,
23 => R_AMD64_TPOFF32,
x => Unknown(x),
}
}
}